Rabetbase CLI Changelog
This page documents user-facing version updates for Rabetbase CLI. The focus is on what you can do now, what improved, and what bugs were fixed.
v2.2.2 (2026-06-13)
Highlights
- Dataset lists now match the platform model more closely:
rabetbase dataset listreturns DO V2 datasets by default, including bothDB_TABLEandMETADATA. Use--source DB_TABLEfor database-backed datasets, or--source METADATAfor metadata datasets. - AppCode environment variables no longer take over silently:
RABETBASE_APPCODE/LOVRABET_APPCODEdo not override project config automatically. In scripts, pass them explicitly with--appcode "$RABETBASE_APPCODE". - Project config wins more predictably: When a project already has a default app and environment, the CLI uses that project context instead of being redirected by leftover shell variables.
- Upgrade notices are less noisy: Version reminders avoid repeated output. Use
rabetbase updatefor the latest stable version, orrabetbase update --betafor the beta channel.
Compatibility notes
- Breaking: Replace
rabetbase dataset list --include-metadatawithrabetbase dataset list --source METADATA. - Breaking: Scripts that relied on
RABETBASE_APPCODE/LOVRABET_APPCODEas implicit AppCode input must now pass--appcode "$RABETBASE_APPCODE"or configure the app in.rabetbase.json. - Script note: If a script assumes
dataset listonly returnsDB_TABLE, add--source DB_TABLEbefore feeding the result into SQL or schema tooling.
v2.1.14-beta.1 (2026-06-02)
Highlights
- Dataset write commands require explicit selectors:
dataset delete,dataset field-update,dataset rename, anddataset extend-updatemust target a specific dataset. Most commands use--code <datasetCode>; delete also supports--idor--dbid, but only one selector can be used at a time. - Safe dataset rename: Added
rabetbase dataset rename --code <code> --name <newName> --expect-name <currentName>. It checks the current name before submitting the update and supports--dry-run. - Field and extend patches are constrained:
dataset field-updateonly allows whitelisted display, description, option, required, date-format, aggregation, and chart-role fields.dataset extend-updatecurrently only allowsbusinessGroup. Both support--expect-json. - Dataset deletion has high-risk protection:
dataset deleteishigh-risk-write. Real deletion requires--confirm; bulk deletion by--dbidshould also use--expected-count.
Compatibility notes
- Breaking: Scripts that relied on dataset write commands inferring targets from context or aliases must now pass
--code,--id, or--dbidexplicitly. Fuzzy write targets are no longer accepted.
v2.1.14-beta.0 (2026-05-22)
Highlights
- Dataset maintenance commands entered beta: Added
dataset rename,dataset field-update,dataset extend-update, anddataset deletefor controlled dataset metadata maintenance. - METADATA dataset constraints are clearer: Earlier builds used an extra flag for platform metadata. Since v2.2.2, use
--source DB_TABLEor--source METADATAto choose the dataset source explicitly. - Menu resource updates are more explicit:
menu updatenow distinguishes--mode replacefrom--mode patchand preserves existing pageextendconfiguration while updating CDN resources.
Fixes & Improvements
- Field patches are validated earlier: Unsupported or forbidden field keys fail before submission.
- Link dry-run output is more complete: Dataset link dry-run output includes resolved app and database details for safer review.
v2.1.13 (2026-05-21)
Highlights
- Config write boundaries are clearer: When writing project config, the CLI avoids carrying merged global
apps/defaultAppstate into project config files, reducing cross-project config bleed. - Menu resource updates are safer:
rabetbase menu updatepreserves existing pageextendconfig while updating CDN resource URLs, avoiding accidental overwrites of business settings. - CLI and Skill versions stay aligned: The release flow now checks the CLI package version together with
skills/rabetbase/SKILL.md, reducing cases where the CLI is upgraded but the Agent Skill remains stale.
Compatibility notes
- Breaking: If your scripts depended on project-scope config writes inheriting the global app directory, switch to explicit
--globalusage or reinitialize the project config. - Breaking: If you are upgrading from
v2.1.11or earlier, scripts that relied onrabetbase page generate-start --datasetcode <code>to submit a real generation job must now userabetbase page generate-start --datasetcode <code> --apply.
v2.1.12 (2026-05-21)
Highlights
- Smart List Page generation is safer by default:
rabetbase page generate-startnow returns a dry-run preview by default instead of submitting a generation job. To actually start generation, pass--applyexplicitly. This is safer for Agents and automation scripts that should review before writing. - Issue reports are sanitized before upload:
rabetbase issue reportnow truncates oversized descriptions and redacts sensitive fragments such as Cookie, Authorization, AccessKey, passwords, private keys, and JWTs. - Unexpected errors are easier to report: Platform API errors and unexpected CLI exceptions now print a ready-to-copy
rabetbase issue reportcommand. Automation can disable this hint withRABETBASE_DISABLE_ISSUE_NUDGE=1. - Platform requests are easier to trace: CLI platform requests now include
X-Invoke-Source: cli:rabetbaseso backend services can identify the caller.
Compatibility note
- Breaking: Scripts that relied on
rabetbase page generate-start --datasetcode <code>to submit a real generation job must now userabetbase page generate-start --datasetcode <code> --apply.
v2.1.12-beta.2 (2026-05-19)
Highlights
- Smart List Page generation is safer by default:
rabetbase page generate-startnow returns a dry-run preview by default instead of submitting a generation job. To actually start generation, pass--applyexplicitly. This is safer for Agents and automation scripts that should review before writing. - Issue reports are sanitized before upload:
rabetbase issue reportnow truncates oversized descriptions and redacts sensitive fragments such as Cookie, Authorization, AccessKey, passwords, private keys, and JWTs. - Unexpected errors are easier to report: Platform API errors and unexpected CLI exceptions now print a ready-to-copy
rabetbase issue reportcommand. Automation can disable this hint withRABETBASE_DISABLE_ISSUE_NUDGE=1. - Platform requests are easier to trace: CLI platform requests now include
X-Invoke-Source: cli:rabetbaseso backend services can identify the caller.
Compatibility note
- Breaking: Scripts that relied on
rabetbase page generate-start --datasetcode <code>to submit a real generation job must now userabetbase page generate-start --datasetcode <code> --apply.
v2.1.6 (2026-04-21)
Highlights
--jqinstallation is now much more reliable: The CLI now bundles jq as a sidecar, so installation no longer depends onnode-jqdownloading binaries from GitHub. The resolution order isJQ_PATH-> bundled jq -> jq onPATH, which is much more stable for China-based networks, offline mirrors, and CI environments.- The development CLI can now inspect live data directly: Added
rabetbase data filterandrabetbase data getOne, so developers can verify real dataset records and response shapes without switching to the runtime CLI. - Machine-readable contracts were updated together:
rabetbase schemaand--helpnow expose the newdataservice and the current jq behavior, making AI agents, automation scripts, and documentation easier to keep aligned.
Fixes & Improvements
- JQ override behavior is more predictable: If
JQ_PATHis explicitly set but invalid, the CLI now fails fast instead of silently falling back to another jq binary. - Fewer installation failures overall: Installation is no longer blocked by external binary downloads being filtered or unavailable.
v2.1.5 (2026-04-17)
Highlights
- More consistent installation experience: Documentation, scaffolding, upgrade flows, and the Skill installation commands in CLI output now stay consistent -- no more "one way here, another way there."
- Fewer surprises when following documentation: If you are setting up for the first time or writing onboarding instructions for teammates, this version reduces confusion caused by inconsistent command examples.
v2.1.4 (2026-04-17)
Highlights
- Quieter SQL pulls: Running
sql pullno longer generates a bunch of irrelevant file changes due to "sync timestamp changed." - Prompts only when something actually changed: Behavior is now closer to what users expect -- only changes to the SQL content itself trigger downstream processing.
v2.1.3 (2026-04-17)
Highlights
- Capabilities from
v2.1.3-beta.0are now stable: If you were already trying page generation, SQL lifecycle management, menu sync, and version strategies, this release means those features are ready for production use.
v2.1.3-beta.0 (2026-04-16)
Highlights
- Standard page generation scales to larger tasks: Page generation now runs asynchronously, so long-running jobs no longer block the terminal -- better suited for AI agents, automation pipelines, and multi-user collaboration.
- More complete local SQL management: You can manage SQL creation, sync, and state locally in a more natural way instead of treating it as a one-off script.
- Unified BFF / SQL commands: Creation commands now use the
createsemantic consistently, lowering the learning curve and matching user intuition. - Menu sync results are easier to automate: The returned result after synchronization is better structured for downstream automation.
- Clearer upgrade strategy: The CLI now supports more explicit version hints and upgrade strategies, reducing "I upgraded but got the wrong version" situations.
Fixes & Improvements
- Fewer failures from inconsistent API responses: The CLI handles backend response formats more robustly in BFF, menu, SQL, and database connection features.
- More predictable upgrade results:
cli updateis less likely to install a version you did not intend.
v2.1.2 (2026-04-14)
Highlights
- Capabilities from
v2.1.2-betaare now stable: If you were already trying the new configuration system, multi-app rules, and database connection compatibility fixes, this version is a more reliable baseline.
v2.1.2-beta.3 (2026-04-14)
Highlights
- A pre-release housekeeping version: Minimal user-visible changes; primarily aimed at making the upcoming stable release cleaner and more reliable.
v2.1.2-beta.2 (2026-04-14)
Highlights
- More reliable database connection creation: If you encountered "created successfully but CLI couldn't retrieve the result," this version fixes those compatibility issues.
- Fewer broken follow-up actions: Post-creation steps such as automatic analysis connect more smoothly.
v2.1.2-beta.1 (2026-04-12)
Highlights
- Beta validation release: Primarily for wrapping up and validating the
v2.1.2-beta.0batch of changes. No new user-facing features.
v2.1.2-beta.0 (2026-04-12)
Highlights
- Clearer multi-app experience: The relationship between default app, project config, and global config is easier to understand, and it is harder to "connect to the wrong app."
- Smoother legacy project migration: Many legacy configurations are automatically normalized to the new structure during reads, so users do not need to clean up manually before continuing.
- More useful doctor output: You now see "the final effective configuration," making it more intuitive to troubleshoot config issues.
- More consistent command naming: Names like
app remoteandapi generatebetter match user expectations, reducing "I can't tell what this command does."
Fixes & Improvements
- Fixed default app selection errors: Especially when a project already has a config, it no longer gets silently overridden by the global default app.
- Fixed ambiguity when switching apps in multi-app setups:
app useresults now match user expectations.
v2.1.1 (2026-04-09)
Highlights
- More accurate BFF template examples: The ENDPOINT type API path examples now align with the current platform conventions, making it easier to get started after creating a new script.
v2.1.1-beta.0 (2026-04-09)
v2.1.1-beta.0is an important starting point for the2.1.xcycle: database connection capabilities took shape, and the configuration and multi-app experience began converging.
Highlights
- Database connections are truly usable now: You can more completely manage database connections, test them, initiate schema analysis, and view tables and diffs -- all from the CLI.
- Friendlier default output: Commands like
api listnow display in a more human-readable format when no explicit format is specified. - Clearer multi-app and config boundaries: The relationship between project config, global config, and default apps is starting to converge, reducing misconfigurations.
- More complete Skill integration: If you integrate the CLI with AI assistants or agents, this version is noticeably smoother.
Fixes & Improvements
- Reduced risk of accidentally writing config: In inappropriate directories, the CLI no longer silently writes a config file you did not want.
- Fixed default app resolution anomalies: In single-app legacy config scenarios, the global default app is no longer incorrectly applied.
v2.0.13 (2026-04-06)
New Features
- sql pull command: Added
rabetbase sql pullto batch-pull custom SQL from the remote to the.rabetbase/sql/directory. Supports--sqlcode/--namefiltering,--forceoverwrite, and--dry-runpreview; interactive mode confirms before overwriting; files include@lovrabetheader comments; duplicate names auto-append thesqlCodesuffix. - sql/shared.ts shared module: Extracted
resolveSqlLocalDir,safeSqlFileBaseName,assignSqlFileNames, andbuildPulledSqlFileContentfor reuse bypulland subsequent commands.
Bug Fixes
- Path anchoring failure in subdirectories: Running commands in a project subdirectory caused the CLI to fail to find
.rabetbase.json, leading to config read failures. AddedfindProjectRootDirectory(), which walks upward fromcwdto locate the directory containing the config file. - sql list blocked by insufficient permissions: When users lacked the
listDatasetsAPI permission,rabetbase sql listwould error and exit. Fixed to silently fall back to displaying the rawdbIdon failure.
v2.0.12 (2026-04-05)
New Features
- Project-level
inherit: falseconfig isolation: Added a top-levelinheritfield (defaulttrue) to project.rabetbase.json. When set tofalse, the CLI stops reading~/.rabetbase.jsonfor merging, ensuring complete project config isolation.
v2.0.11 (2026-04-05)
New Features
- upgrade --yes fully non-interactive upgrade: Passes the
--yesflag through toskills remove/skills addsubcommands, supporting an automated upgrade flow without human confirmation.
v2.0.10 (2026-04-05)
New Features
- api --global switch:
rabetbase api list/rabetbase api pullnow support a--globalflag. By default, only project-level.rabetbase.jsonapps are resolved; passing--globaluses the global + project merged config. - DEFAULT_API_DIR constant: Extracted
DEFAULT_API_DIR = "./src/api"toconstant/paths.ts, eliminating multiple hardcoded magic strings. - getMultiAppConfigs scope parameter: Added a
scopeparameter (project | merged) to read apps by config level.
Bug Fixes
- Cross-project global apps leaking through: Running
rabetbase api listin project A's directory would incorrectly display apps from the global config belonging to project B. Fixed to read only project-level apps by default;--globalexplicitly opts into the merged view. - api pull multi-app branch missing apiDir fallback: Multi-app mode output directories used hardcoded values instead of profile or context
apiDir. Added the full fallback chain.
v2.0.9 (2026-04-05)
New Features
@/path alias: AddedbaseUrl+pathsconfiguration totsconfig, replacing relative path imports with@/*aliases across many files.- Simplified output formats: Removed the
tableoutput format;OutputFormatnarrowed tojson | pretty | compress; addednormalizeLegacyOutputFormat()for backward compatibility.
Bug Fixes
- Duplicate jq error message prefix: Fixed the
jq: jq: error: ...duplicate prefix display. --jqwithprettyformat causing spurious errors: Automatically switches tojsonformat when--jqis detected.- Incomplete
execFileSyncstderr capture: Explicitly specifiedstdioto ensure complete failure output capture.
v2.0.8 (2026-04-04)
New Features
- schema command: Added
rabetbase schema, exporting machine-readable command metadata JSON sourced from--help, for LLM agents, IDE plugins, and CI toolchains to automatically discover all commands, flags, and risk levels. --jqglobal flag: Added global--jq <expr>, which applies jq filtering to output when combined with--format json/compress.--format compress: Added thecompressoutput format -- single-line compact JSON envelope without whitespace indentation to minimize token overhead.- app list structure upgrade: Return structure upgraded to
{ items, meta }, each app annotated withdefinedIn(global/project/both), andmetaincludes config file paths and default source info. - app positional arguments:
app add <name>/use <name>/remove <name>now use positional arguments instead of the--nameflag;app removerisk level raised tohigh-risk-write. - dataset detail expansion: Now parses
requestBody/responseBodyJSON,dbtablesummary,relatedPages,formatRules,validateRules,extend,doVersion, andcolumnCodeListWithDeleted. - Layered config architecture: Context config loading refactored to
loadRawConfigLayers()/readRawConfigWithLayers()/inspectCliConfigJsonFile(), distinguishingmissing/empty/erroron JSON parse failure and printingstderrwarnings. - doctor Config JSON diagnostics: Added a config file JSON syntax check section, diagnosing global/project config file validity.
Bug Fixes
- Config file JSON parse errors silently swallowed: When
.rabetbase.jsonhad syntax errors, the CLI silently ignored the file. After refactoring, parse failures now output astderrwarning. - app use unable to find globally configured apps in project directory: Fixed name validation logic to use the global + project merged view.
- app add --format flag conflicting with pipeline-level --format: Renamed the app default format flag to
--defaultFormat.
Document updated: 2026-06-13 Covered versions:
v2.2.2,v2.2.1,v2.2.0,v2.1.14-beta.1,v2.1.14-beta.0,v2.1.13,v2.1.12,v2.1.12-beta.2,v2.1.6,v2.1.5,v2.1.4,v2.1.3,v2.1.3-beta.0,v2.1.2,v2.1.2-beta.0throughv2.1.2-beta.3,v2.1.1,v2.1.1-beta.0,v2.1.0,v2.0.8throughv2.0.13Repository:rabetbase-cli