๐ Update Log
This page tracks major updates across Rabetbase CLI, Lovrabet Runtime CLI, and the TypeScript SDK.
2026-07-17โ
Rabetbase CLIโ
-
โจ New
rolecommand group for roles and user groups โ v2.3.4Added
rabetbase role list/detail/create/update/delete/user-add/user-remove/user-resolve, covering the full lifecycle and membership management of CUSTOM roles. Built-in roles DEV/ADMIN/USER cannot be modified; member changes read the full member list, merge-write, and output before/after for verification.rabetbase role create --name Sales --remark "East China sales" --dry-run
rabetbase role user-add --role 12 --user alice --dry-run
rabetbase role user-remove --role Sales --user 1001 --yes -
๐ New
permitcommand group for permission management โ v2.3.4Added
rabetbase permit page-get/page-set/role-menus/role-menus-set/role-apis-set, supporting menu-page permissions (menu, create, update, delete, detail, export, row roles), granting/revoking role menu access, and revoking role API permissions by datasetCode. All write operations arehigh-risk-write: preview with--dry-run, then confirm with--yes.rabetbase permit page-set --menu-id 55 --row-roles SELF --dry-run
rabetbase permit role-menus-set --role Sales --grant --menus orders,products --yes
rabetbase permit role-apis-set --role Sales --revoke --datasets ds-001,ds-002 --yes -
โจ New
app-configruntime app configuration management โ v2.3.4Added
rabetbase app-config list/get/set/deletefor managing runtime app-config keys.getis redacted by default;--revealshows the plaintext value.setaccepts values from command arguments, files,--stdin, or--from-env, and automatically decides create vs update. All writes support--dry-run.rabetbase app-config list --tags webhook
printf '%s' "$API_KEY" | rabetbase app-config set vectorengine.apiKey --stdin
rabetbase app-config delete webhook.secret --dry-run -
โจ New
cli-skill installbuilt-in skill installer โ v2.3.4Installs or refreshes the CLI Built-in Skill required by Rabetbase CLI, wrapping
npx skills add ... -g -yso Agents get the matching skill guidance when using the CLI.rabetbase cli-skill install -
๐งญ App registration moves from
app add/removetoworkspace add/removeโ v2.3.4rabetbase app add/app removeare now hidden deprecated aliases. The recommended entries arerabetbase workspace add <name>andrabetbase workspace remove <name>, with the same behavior but clearer semantics. Old commands still work and print a migration hint.rabetbase workspace add order --appcode app-order-xxx
rabetbase workspace remove product -
๐งญ
project initmigrates toworkspace initโ v2.3.4The preferred command to bind an app in the current directory is now
rabetbase workspace init --appcode <appcode>.rabetbase project initremains as a compatibility alias with a migration hint. -
โจ More dataset maintenance commands โ v2.3.1 โ v2.3.4
dataset restore: recover deleted dataset metadata and related pages/menus by--id/--code/--dbid. This ishigh-risk-write; real execution requires--confirm, and bulk restore supports--expected-countto guard against target drift.dataset business-group-update: update a dataset's business model group by dataset code, with--expect-business-groupcurrent-value guard.dataset relation-create/relation-update/relation-delete: manage relations by dataset code + relationId, with delete using a CLI-specific by-ID endpoint and post-write readback via dataset detail.dataset generate-start: async DO V2 dataset generation from natural language or structured text. Defaults to a dry-run design snapshot; pass--applyand--design-fileto submit the real creation task, then poll withdataset generate-status.
-
๐ฉบ Database analysis and BFF route stabilization โ v2.3.4 / v2.3.5
db analyze-startworkflow parameters and pagination semantics are stable, diff flag behavior is locked, and the BFF ENDPOINT route contract is unified to avoid call failures caused by inconsistent routes across entry points.
Lovrabet Runtime CLIโ
-
โจ New
fileupload andocrrecognition commands โ v2.1.7Added
lovrabet file upload,lovrabet file query-url, andlovrabet ocr recognize. Upload local files to the runtime and get a persistentfilePath, or recognize text in images/PDFs by scene (invoice/general/form/idCard). Local files are uploaded, a temporary URL is fetched, and then OCR is called.lovrabet file upload --file ./contract.pdf
lovrabet file query-url --filepath <filePath> --long-term
lovrabet ocr recognize --scene invoice --image-file ./invoice.jpg
lovrabet ocr recognize --scene form --image-url https://example.com/table.png -
โจ Long-term file URLs and lossless ID parsing โ v2.1.11
file query-urladds--long-termfor long-lived URLs, useful for rich text, Markdown, or HTML that needs persistent links. Core JSON parsing now preserves large integer IDs without precision loss. -
โจ New
bff detailand BFF function name standardization โ v2.1.13lovrabet bff detail --name <functionName>queries a BFF endpoint contract byappCode + functionName, returning description, version, and modified time. Service Tree and API-doc discovery now align with a new function-name adapter, reducing name ambiguity when Agents call BFFs. GET/client/bff/endpoint/{appCode}/{functionName}now supports AK auth.lovrabet bff detail --name calculatePrice -
โจ
app-config getreturns the value directly โ v2.1.14lovrabet app-config get <key>now returns the configured value directly instead of just checking whether the key exists, simplifying Agent/script reads of runtime config.--revealis no longer supported because the output is the value itself. For sensitive keys, read in-place in BFF viacontext.appConfig.get(...).lovrabet app-config get vectorengine.apiKey -
๐ง Skill install and push improvements โ v2.1.7 / v2.1.9 / v2.1.11
lovrabet skill installinstalls personal/company runtime Skills of the current app into the user-level Agent skill directory, with--codefiltering,--scope personal|company, and--forcerefresh, and cleans up stale caches and links.lovrabet skill push --scope companysubmits a local Skill to the company scope and enters the review flow; remote metadata is refreshed and rabetbase CLI references are validated before push.- Skill manifest round-trips recommended trigger examples, preserved and validated during push/sync.
- The former
lovrabet skill pullhas migrated tolovrabet skill install, unifying the install entry point.
-
๐ Batch
data updatesupports array IDs โ v2.1.8lovrabet data updatenow supports bulk updates with an array of IDs, with serialization aligned to the runtime server to reduce array-ID merge risk. -
๐ Rate-limit errors normalized โ v2.1.11
Retry timing parsing, rate-limit error code aliases, and error normalization are unified, making exit codes more consistent when the CLI hits rate limits.
2026-06-30โ
Rabetbase CLIโ
-
๐งญ App command surface tightened
The development CLI no longer keeps the compatibility entries
rabetbase app remoteandrabetbase app use. Platform app discovery now uses:rabetbase app list --remoteCurrent-workspace default app binding now uses:
rabetbase workspace use --app <name>Existing scripts should replace
rabetbase app remotewithrabetbase app list --remote, and replacerabetbase app use <name>withrabetbase workspace use --app <name>. For one-off command targeting, continue using global--app <name>or--appcode <code>.
2026-06-13โ
Rabetbase CLIโ
-
๐งญ
dataset listnow shows DO V2 datasets directlyrabetbase dataset listnow returns DO V2 datasets in the current app, including bothDB_TABLEandMETADATAsources. Use--source DB_TABLEwhen you only need database-backed datasets, or--source METADATAwhen you are working with text-generated page datasets.rabetbase dataset list --source DB_TABLE
rabetbase dataset list --source METADATAThe old
--include-metadataflow is no longer the recommended form. Existing scripts that assumedataset listonly returns DB-table datasets should add--source DB_TABLE. -
๐ AppCode is no longer silently taken over by implicit context
The CLI will not automatically override project config from external context. In scripts, specify the app explicitly:
rabetbase dataset list --appcode <appcode>If the command resolves to a different app than expected, it stops instead of sending the operation to the wrong app.
-
๐ก Upgrade notices are quieter
Version notices now avoid repeated output. Manual upgrades still use
rabetbase update; beta upgrades userabetbase update --beta.
2026-06-03โ
Rabetbase CLIโ
-
๐ Dataset write commands now require explicit selectors
Dataset write commands such as
dataset delete,dataset field-update,dataset rename, anddataset extend-updatenow require an explicit target, usually--code <datasetCode>. Delete also supports--idor--dbid, but only one selector can be used at a time. Field, name, andextendchanges support--dry-runpreviews and--expect-*guards to reduce accidental metadata changes by Agents or scripts. -
โจ Safe dataset maintenance commands are now documented
Rabetbase CLI now includes
dataset rename,dataset field-update,dataset extend-update, anddataset delete.deleteishigh-risk-write: preview the target scope first, pass--confirmfor real deletion, and use--expected-countfor bulk--dbiddeletion to protect against target drift. -
๐งญ Dataset source filtering is explicit
rabetbase dataset listsupports source filtering. Use--source DB_TABLEfor database-backed datasets and--source METADATAfor metadata datasets. SQL schema validation and custom SQL still require aDB_TABLEdataset with physical table context. -
๐งฉ Menu resource update modes are explicit
rabetbase menu updatesupports--mode replace|patch.replacerewrites the supplied resource set, whilepatchonly replaces resource types you pass in this run. Replace mode will not remove existing JS resources unless--forceis explicitly provided.
Lovrabet Runtime CLIโ
-
๐ Personal knowledge-base commands
lovrabet kb list/detail/create/update/searchcan now manage personal knowledge-base entries and search visible company plus personal knowledge for the current app. Create and update read UTF-8 text or Markdown files and support--dry-run. -
๐ง Runtime Skill platform sync
lovrabet skill pullmaterializes personal and company runtime Skills into local Agent skill directories.lovrabet skill push --dir <skillDir>pushes a local Skill directory into the personal runtime Skill scope. Public installation remainslovrabet skill installornpx skills add lovrabet/lovrabet-cli -g -y. -
๐งญ More stable dataset detail output
lovrabet dataset detailnow normalizes v1 / v2 dataset field shapes, parses operationrequestBody/responseBody, and includesdbtable,relatedPages,formatRules,validateRules,extend, and stats.
TypeScript SDKโ
-
๐งฉ Docs aligned with v1.4.1
SDK docs now cover
runtimeDomain,authMode: "client-ak",X-User-AK,batchCreate(), and$notNull.serverUrlremains compatible but deprecated; new projects should useruntimeDomain.
2026-05-19โ
Rabetbase CLIโ
-
๐ Smart List Page generation now previews by default
rabetbase page generate-startnow returns a dry-run preview by default instead of submitting a real generation job. To actually start Smart List Page generation, pass--applyexplicitly:# Preview only; does not submit a generation job
rabetbase page generate-start --datasetcode <datasetCode>
# Actually submit the generation job
rabetbase page generate-start --datasetcode <datasetCode> --applyThis reduces the risk of Agents, scripts, or batch jobs accidentally triggering real writes. Existing automation that depends on real submission must add
--apply. -
๐ฉบ Issue reporting is safer
rabetbase issue reportnow sanitizes descriptions before upload: oversized descriptions are truncated at 256KB, and sensitive fragments such as Cookie, Authorization, AccessKey, passwords, private keys, and JWTs are replaced with redaction markers. Truncation and redaction statistics are reported as attributes for troubleshooting. -
๐ก Unexpected failures now suggest an issue report command
When a command hits a platform API error or unexpected exception, the CLI prints a ready-to-copy
rabetbase issue reportcommand to stderr. Automation can disable this hint withRABETBASE_DISABLE_ISSUE_NUDGE=1. -
๐งญ Platform requests identify their invoke source
Development-side platform requests now include
X-Invoke-Source: cli:rabetbase, helping backend services distinguish CLI calls from page or other entry points.
Lovrabet Runtime CLIโ
-
๐ App list now exposes real i18n configuration
lovrabet app listitems now include platform i18n data:enableI18n,languages, andi18nInfo. Uselanguagesori18nInfo.langsto determine supported app languages;localeis only a local compatibility field and does not represent actual app language support. -
๐งญ Runtime SDK calls identify their invoke source
Runtime calls issued through the SDK, such as
lovrabet data,sql, andbff, now includeX-Invoke-Sourcefor backend observability and troubleshooting.
2026-04-28โ
Lovrabet Runtime CLIโ
-
๐ Added the launch note for Lovrabet CLI as an AI operation suite for business scenarios
On April 21, 2026, Lovrabet CLI officially launched as the runtime operation entry that brings Lovrabet capabilities into the AI ecosystem. It turns app directories, datasets, data operations, SQL, BFF, and diagnostics into stable commands for Agents, delivery teams, business operations teams, and enterprise IT.
- Product page: Lovrabet CLI
- Documentation: Lovrabet CLI 2.0 for business systems
Its value is not to replace admin pages, but to turn enterprise data, rules, interfaces, and accumulated operating experience into business capabilities that AI can understand, call, audit, and reuse. A business request can then become a repeatable, controlled, and collaborative Agent workflow.
-
โจ Added
lovrabet updateand restoredlovrabet skill installas the primary Skill install pathlovrabet updateupdates the CLI from npm, supports--latest,--beta, and--version, and refreshes the official Skill by default.lovrabet skill installis now the recommended CLI entry for installing the published Lovrabet Skill through the officialskillstool. -
๐งญ App resolution semantics now treat
defaultAppas a candidate, not strong contextIn Agent workflows, explicit
--app/--appcodewins. When no app is specified,defaultAppis only the first candidate to validate. If a request clearly points to a business domain such as orders, products, inventory, CRM, or tickets, the Agent should validate the default candidate with dataset search first, then expand to the app list when it does not match. -
๐ Docs now separate the business path from advanced technical material
Lovrabet CLI 2.0 docs now include โAdvanced usage: config, cache, and integration troubleshooting.โ Details about
.lovrabet.json, app cache, AccessKey scope, extension constants, and integration troubleshooting have been moved out of the business-user path and into a page for enterprise IT, delivery teams, extension developers, and Skill maintainers.
2026-04-20โ
Lovrabet Runtime CLIโ
-
โจ Added
skill installandauth infoโ v2.0.3lovrabet skill installcan now install the published Lovrabet Skill directly through the officialskillsCLI. This release also addslovrabet auth info, making it easier to verify which user the current access key actually belongs to.
2026-04-18โ
Rabetbase CLIโ
-
โจ Introduced a read-only
datacommand group โ v2.1.2-beta.1rabetbase data filterandrabetbase data getOnebring SDK-style record querying directly into the CLI. They are especially useful for inspecting live data, validating field values, and troubleshooting front-end or BFF behavior without leaving the terminal.
2026-04-15โ
Rabetbase CLIโ
-
๐ Version policy now supports both warnings and hard stops โ v2.1.2-beta.1
The CLI now reads both the recommended stable version and the minimum supported version from the CDN:
- If your CLI is behind
stableVersion, it shows an upgrade warning - If it falls below
minimumVersion, it blocks critical commands from running
That gives project creation, run flows, and similar entry points a consistent version floor, reducing failures caused by old CLIs talking to newer templates or protocols.
- If your CLI is behind
2026-04-13โ
Lovrabet Runtime CLIโ
-
๐ Auth re-initialization is now centered on
auth initโ v2.0.2The "wipe and rebuild auth config" flow has been consolidated into
lovrabet auth init. It clears the current scope and writes back fresh auth config, making it the right recovery path when auth config becomes messy or inconsistent.
2026-04-12โ
TypeScript SDKโ
-
โจ v1.4.1 rounds out Client AK,
batchCreate(), and$notNullsupportThis release completes three of the most practical runtime capabilities in one pass:
- Client AK authentication: SDK clients can now run in
client-akmode with only anaccessKey, calling/client/endpoints and automatically sendingX-User-AK - Batch creation:
batchCreate()is now available, usingparamListin OpenAPI mode and a raw array body in WebAPI / Client AK mode, with a limit of 1000 records per request - Non-null filtering:
filter()now supports the$notNulloperator for concise "field must not be empty" queries
- Client AK authentication: SDK clients can now run in
Lovrabet Runtime CLIโ
-
โจ Authentication and app-directory behavior were redesigned โ v2.0.1 / v2.0.2
Across these releases, the runtime CLI converged on a cleaner AccessKey + remote app directory model:
accessKeyis now the primary authentication path, anddoctorexplicitly tells users that session-cookie auth has been removedapp listandapp pullnow consistently revolve around the remote app directory plus local cacheapp usestores user intent such asdefaultApp, whileapp importcan migrate default-app selection from.rabetbase.json
-
๐ฉบ Added
doctordiagnostics anddata batchCreateโ v2.0.1lovrabet doctornow helps verify global and project config, JSON validity, the active default app, and AccessKey state. At the same time,lovrabet data batchCreateadds batch writes using either a JSON array or{ items: [...] }, aligning the CLI more closely with SDK behavior.
Rabetbase CLIโ
-
๐งญ App views are now named more clearly:
app discoverโapp remoteโ v2.1.2-beta.1Platform-directory views and local-config views are now more clearly separated:
rabetbase app listfocuses on local or merged config, whilerabetbase app remoteshows which apps the current login can access on the platform.
2026-04-09โ
Rabetbase CLIโ
-
โจ Database connection (
dblink) commands are now first-class โ v2.1.0 / v2.1.1The CLI now covers the full database-connection workflow with commands such as
db list,db detail,db create,db update,db delete,db test,db analyze-start,db analyze-cancel,db analyze-status,db tables, anddb diff. In practice, that brings connection setup, validation, schema analysis, and diff inspection out of the web console and into the terminal. -
๐ฉบ Multi-app diagnostics were tightened up further โ v2.1.1
rabetbase doctornow shows the final effective configuration together with its source, andapp listdoes a better job of marking the current app, the default app, and where each value came from.
2026-04-06โ
Rabetbase CLIโ
-
โจ SQL pull, config isolation, and API scoping all became more usable โ v2.0.10 โ v2.0.13
This batch of releases closes several high-frequency gaps that surfaced right after CLI 2.0 launched:
sql pullcan now batch-pull custom SQL from the platform into local.rabetbase/sql/inherit: falseallows a project to opt out of global config merging entirelyapi list/api pull --globalmake the boundary between "project apps only" and "merged global + project apps" explicitupgrade --yesenables fully non-interactive upgrade flows for scripts and CI
2026-04-04โ
Rabetbase CLI 2.0โ
-
โจ Rabetbase CLI 2.0 Documentation Launch โ A complete documentation overhaul for the 2.0 release
The CLI 2.0 docs have been rebuilt from scratch on a new architecture, covering every core module:
- Fresh Install and Upgrade from CLI 1.x as two standalone guides, cross-referencing each other
- Command Reference: 13 global flags explained (
--jq,--dry-run,--yes, etc.) along with configuration fields - Typical Use Cases rewritten around five real workflows: front-end data onboarding, SQL development, BFF scripting, AI-assisted development, and automation scripts
- API & Datasets, BFF Scripts, Code Generation & Menus, Custom SQL, Schema and other core command docs
- Configuration: Apps and Multi-App plus Config Reference, Risk Level Control, Maintenance & Diagnostics
- CLI 1.x Command Migration guide for existing users
-
๐ Documentation Structure Refinements
- Navbar: Lovrabet CLI replaced by Rabetbase CLI 2.0; MCP & Skills moved to archived docs
- Sidebar labels made more direct: "Fresh Install", "Upgrade from CLI 1.x", "Configuration: Apps and Multi-App"
- Stray
---horizontal rules removed throughout to prevent Docusaurus rendering artifacts - Fixed
intro.md โ index.mdroute conflict so/docs/rabetbase-cli/resolves correctly
-
๐ Full English Translation โ All Rabetbase CLI 2.0 docs now available in English
TypeScript SDKโ
-
โจ Streamlined update / delete API โ v1.3.7 unifies the calling convention between front-end SDK and BFF contexts
Both
update()anddelete()now accept an object-style parameter, matching thecontext.clientcalling pattern inside BFF scripts:// โ Recommended (object merge โ consistent across front-end and BFF)
await client.models.users.update({ id: 1001, name: 'Zhang San' });
await client.models.users.update({ id: [1001, 1002], status: 'active' });
await client.models.users.delete({ id: 1001 });
await client.models.users.delete({ id: [1001, 1002, 1003] });
// โ Legacy style (still works)
await client.models.users.update(1001, { name: 'Zhang San' });
await client.models.users.delete(1001);Why the change?
- Front-end SDK and BFF
context.clientnow share the same calling convention, reducing cognitive overhead - The object-merge style maps more naturally onto RESTful semantics โ and AI-generated code reads better too
- The legacy positional style remains fully compatible; no existing code needs to change
- Front-end SDK and BFF
-
๐ง runtimeDomain replaces serverUrl โ v1.3.7
A new
runtimeDomainconfiguration field aligns with the.rabetbase.jsonnaming used by the CLI. The previousserverUrlis marked@deprecatedbut continues to work.const client = createClient({
appCode: 'your-app',
runtimeDomain: 'https://runtime.my-company.com', // New field
// serverUrl: '...', // Legacy field โ still functional
});
2026-03-26โ
Note: The entries below belong to the CLI 1.x era. Rabetbase CLI 2.0 launched on 2026-04-04 โ we recommend heading straight to the CLI 2.0 docs.
Lovrabet CLIโ
-
๐ Skills Installation Method Changed - Recommend using
npx skillsfor installationSkills installation has migrated to the
npx skillstool, the oldlovrabet skill installcommand is deprecated:# โ New method (Recommended)
npx skills add lovrabet/lovrabet-skill
# โ Old method (Deprecated)
# lovrabet skill install --cursorWhy the change?
- โ No CLI installation required, use npx directly
- โ Always use the latest version of Skills
- โ Better ecosystem alignment
Lovrabet SDKโ
-
โจ Batch Operations Support - v1.3.7 adds batch update and batch delete capabilities
SDK now supports batch operations, greatly improving data processing efficiency:
// Batch update - max 1000 records
await client.models.users.update(
[1001, 1002, 1003, 1004, 1005],
{ status: "inactive", updateTime: new Date().toISOString() }
);
// Batch delete - max 1000 records
await client.models.orders.delete([1001, 1002, 1003]);Core Features:
- Process up to 1000 records at once
- Supports both single ID and ID array formats
- Operations are atomic - all succeed or all fail
- Works in both OpenAPI and WebAPI modes
- Clear error messages when limits are exceeded
Use Cases:
- Batch status updates (e.g., activate/deactivate users)
- Batch field updates (e.g., set tags in bulk)
- Batch cleanup of test data
- Batch deletion of expired records
๐ API Usage Guide
-
๐ Documentation Enhancement - Added comprehensive usage guide
New
help/lovrabet-sdk-guide.md(16KB) includes:- Batch operations detailed explanations and best practices
- Advanced queries (filter method) complete guide
- Data export (Excel), SQL API, dropdown options, and all features
- Aggregation statistics (aggregate) usage guide
- Common questions and best practices
Lovrabet CLIโ
-
โจ Windows 10 Compatibility Optimization - v1.3.4 comprehensively improves Windows 10 support
CLI is now fully compatible with Windows 10, working properly in all mainstream terminals:
Core Improvements:
- ๐ง Path Handling Optimization - Uses
path.join()instead of hardcoded separators, automatically adapts to Windows path format - ๐ Process Execution Optimization - Adopts
execainstead ofspawn, providing better cross-platform process management - ๐จ Emoji Display Fix - Removes incompatible emojis, uses ASCII characters instead, ensuring proper display in CMD/PowerShell
Fix Examples:
# Before (displayed as boxes)
๐ Generating documentation...
โ Generation failed
# After (normal display)
* Generating documentation...
[ERROR] Generation failedTest Coverage:
- โ Windows CMD - All features work normally
- โ PowerShell - All features work normally
- โ Git Bash - All features work normally (Recommended)
- โ WSL - All features work normally (Recommended)
- โ Cmder - All features work normally
๐ Windows Usage Guide
- ๐ง Path Handling Optimization - Uses
-
๐๏ธ Remove
add pageCommand - v1.3.4 simplifies command setRemoved
lovrabet add pagecommand, recommend using more flexible approaches:Alternative Solutions:
# Use API generation + manual page creation
lovrabet api pull # Generate API configuration
# Then manually create page components, more flexible and controllableWhy Removed:
- Page template too simple, not suitable for real business scenarios
- Manual page creation more flexible, allows custom component structure
- Using SDK + API configuration is a better development pattern
๐ Command Reference
2026-02-12โ
Documentation Restructureโ
- ๐ Enhanced menu update command documentation - Added iterative update workflow instructions
Lovrabet CLIโ
-
โจ i18n Internationalization Support - v1.3.3 adds internationalization capabilities
CLI now supports multi-language switching, enhancing global user experience:
# Switch display language
lovrabet config set locale en # English
lovrabet config set locale zh # Chinese (default)Core Features:
- Built-in Chinese and English support
- All prompt messages and documentation support multiple languages
- Easy to extend with new languages
Lovrabet SDKโ
-
โจ Filter Multi-table Query Support - Filter API now supports cross-table relational queries
Implement table joins without writing SQL, using dot notation for automatic association:
const result = await client.models.orders.filter({
// Use dot notation in select to get related table fields
select: [
"id",
"order_date",
"total_amount",
"customer.name", // Related customer name
"customer.phone", // Related customer phone
"customer.company", // Related customer company
],
// Dot notation also works in where
where: {
status: { $eq: "completed" },
"customer.is_signed": { $eq: true }, // Only signed customers
},
// orderBy also supports dot notation
orderBy: [{ order_date: "desc" }, { "customer.name": "asc" }],
currentPage: 1,
pageSize: 20,
});
// Results automatically include related data
result.tableData.forEach((order) => {
console.log(order.customer?.name); // Direct access to related fields
});Core Features:
- Use
table_name.field_namesyntax, no additional configuration needed - Automatic LEFT JOIN, ensuring main table data is preserved
- Works in
select,where, andorderBy - Supports up to 5 levels of nested associations
- Field selection reduces data transfer
- Fully compatible with filter conditions and sorting
- Use
2026-01-26โ
Lovrabet SDKโ
-
โจ New Model Alias Configuration Documentation - Detailed guide on human-friendly model access
Core Features:
- Use aliases instead of complex datasetCode to access datasets
- CLI auto-generates configuration, no manual writing needed
- Complete TypeScript type support
Access Method Comparison:
// Using alias (Recommended) - Clear and readable
const orders = await client.models.orders.filter();
const customers = await client.models.customers.filter();
// Using datasetCode - Less readable
const orders = await client.models.dataset_8d2dcbae08b54bdd84c00be558ed48df.filter();CLI Auto-generation:
lovrabet api pullGenerated configuration includes:
datasetCode- Dataset unique identifiertableName- Database table namealias- Human-friendly alias (camelCase format)
-
๐ BFF API Documentation Release - Complete BFF API usage guide
BFF (Backend For Frontend) API is supported from v1.3.0:
// Call backend function
const result = await client.bff.execute({
scriptName: 'calculatePrice',
params: { productId: '123', quantity: 10 }
});๐ BFF API Reference
-
๐ Syntax Sugar Documentation Release - Complete guide for safe and sqlSafe
Version Requirements:
safefunction: v1.3.0+sqlSafefunction: v1.3.0+
Simplified error handling:
import { safe, sqlSafe } from "@lovrabet/sdk";
// safe - Regular API
const { data, error } = await safe(() => client.models.users.filter());
if (!error) {
console.log(data);
}
// sqlSafe - SQL queries
const { data, error } = await sqlSafe(() =>
client.sql.execute({ sqlCode: "xxx" })
);
if (!error) {
console.log(`Found ${data.length} records`);
data.forEach(row => console.log(row));
} -
๐ SQL API Change Note - Recommend using new namespace approach
From v1.1.19, it's recommended to use
client.sql.execute()instead of the oldclient.api.executeSql():// โ Recommended: Use client.sql namespace
const data = await client.sql.execute({
sqlCode: "fc8e7777-06e3847d",
params: { userId: "123" }
});
// โ ๏ธ Compatible: Old method still works
const data = await client.api.executeSql("fc8e7777-06e3847d", {
userId: "123"
});๐ SQL API Usage Guide
Lovrabet Toolchainโ
-
๐ค AI Vibe Coding System - CLI, SDK, MCP trinity, fully empowering AI-assisted development
Three Core Tools:
Tool Core Features User Value Lovrabet CLI Project initialization, code generation, menu sync, AI integration One-click completion of tedious configuration, saving 80% initialization time Lovrabet SDK TypeScript SDK with CRUD, Filter, SQL, BFF four major APIs Type-safe data access, reducing 60% interface debugging time Lovrabet MCP AI IDE dataset access capability, automatic code generation AI directly understands business models, code generation accuracy 90%+ ๐ง Lovrabet CLI (v1.2.5+) - Development Efficiency Multiplier
# Project initialization
lovrabet init # Quick appCode configuration
lovrabet api pull # Auto-generate SDK config (api.ts)
# AI integration (New)
lovrabet mcp install --cursor # Configure Cursor MCP
lovrabet skill install --cursor # Install development standards Skill
# Menu management
lovrabet menu sync # Sync local pages to platform menuUser Value:
- โก Quick Start: New project configured in 5 minutes, not 1 hour of manual setup
- ๐ฏ Zero Configuration Errors: Auto-generated config files, avoiding appCode, datasetCode typos
- ๐ Auto Sync: One-click menu sync, no need to manually create on platform
- ๐ค AI Ready: One-click install MCP and Skill, AI immediately understands project structure
๐ฆ Lovrabet SDK (v1.3.0+) - Type-Safe Data Access Layer
// CRUD operations
const users = await client.models.users.filter({ status: 'active' });
const user = await client.models.users.create({ name: 'Alice' });
// Advanced queries (Filter API)
const result = await client.models.orders.filter({
where: { amount: { $gte: 100, $lte: 500 } },
select: ['id', 'amount', 'status'],
orderBy: [{ createTime: 'desc' }]
});
// Custom SQL (SQL API)
const stats = await client.sql.execute({
sqlCode: 'user-stats',
params: { startDate: '2025-01-01' }
});
// Backend functions (BFF API)
const price = await client.bff.execute({
scriptName: 'calculatePrice',
params: { productId: '123', quantity: 10 }
});User Value:
- ๐ก๏ธ Type Safety: TypeScript hints throughout, catching 90% of errors at compile time
- ๐ Development Speed: Unified API style, no need to memorize multiple interface specifications
- ๐จ Flexible Queries: Filter API supports complex conditions, no need to write SQL
- ๐ Business Decoupling: BFF API encapsulates complex logic, frontend focuses on UI
๐ง Lovrabet MCP - AI's Dataset Knowledge Base
Enables AI IDEs (Cursor, Claude Code, Windsurf) to:
- ๐ Understand Data Models: Direct access to dataset fields, types, enum values, relationships
- ๐ค Generate Accurate Code: Generate SDK call code based on real metadata, 100% correct field names
- ๐ Smart SQL Creation: 5-step workflow (validateโconfirmโsaveโtestโgenerate), preventing SQL errors
- ๐ Follow Standards: Skill guides AI to follow project development standards (API usage, UI standards, error handling)
Lovrabet Skill Six Modules:
Module Features Technical Value Business Value TypeScript SDK Usage Complete Filter, SQL, BFF usage Reduce API misuse Lower 30% debugging time MCP SQL Workflow Mandatory validation process Prevent SQL errors Avoid data issues AntD UI Standards Avoid "AI-flavored" code Unified UI style Reduce UI rework API Integration Guide Standardized call patterns Improve stability Shorten 50% integration time Menu Management Automated sync Avoid configuration errors Improve ops efficiency BFF Script Standards Best practices Improve maintainability Reduce technical debt Supported AI IDEs:
- Cursor (
.cursorrules+.cursor/skills/) - Windsurf (
.windsurf/workflows/) - Claude Code (
.claude/skills/) - Codex, OpenCode, Qoder, CodeBuddy, Trae
Overall Business Value:
- ๐ Development Efficiency Increased 3-5x: AI auto-generates code, reducing 60-80% repetitive work
- ๐ฏ Learning Cost Reduced 70%: New developers onboard in 1 day, no need to deeply learn all APIs
- ๐ก๏ธ Error Rate Decreased 80%: AI follows standards, avoiding common errors (SQL injection, field typos, etc.)
- โก Delivery Cycle Shortened 40%: From requirements to launch, development time significantly compressed
- ๐ Code Quality Improved: Unified style, smoother team collaboration, more efficient code reviews
๐ CLI Command Reference | SDK Quick Start | MCP Configuration Guide
-
๐ Skill Installation Directory Correction - Cursor skills install to
.cursor/skills/not.cursor/commands/Correct File Structure:
your-project/
โโโ .cursorrules # Cursor general rules
โโโ .cursor/
โ โโโ skills/ # Cursor skills โ
โโโ .windsurf/
โ โโโ workflows/ # Windsurf workflows
โโโ .claude/
โ โโโ skills/ # Claude Code skills
โโโ .lovrabet/
โโโ skill/ # Shared guidesInstallation Command:
lovrabet skill install --cursor
Documentation Internationalizationโ
-
๐ Completed English Translation - All new and updated documentation synchronized to English version
New English Documentation:
- Model Alias Configuration
- BFF API Reference
- Syntax Sugar
- Skill Installation
Updated English Documentation:
- API Usage Guide - Added BFF API and SQL API change notes
- All version numbers corrected to v1.3.0
Access English Version:
- Visit
/en/path in browser - Or use language switcher in top right corner
2026-01-02โ
Lovrabet SDKโ
-
๐ค AI-Friendly Error Handling - v1.2.5 enhanced
LovrabetError, addeddescriptionfieldOptimized error messages for AI Coding scenarios, helping LLMs understand error causes and provide fix suggestions:
try {
await client.models.users.create({ invalid_field: 'value' });
} catch (error) {
if (error instanceof LovrabetError) {
console.log(error.message); // "Column invalid_field does not exist"
console.log(error.code); // "SERVER_ERROR"
console.log(error.description);
// "Server returned error: Column invalid_field does not exist. Error type: Parameter error. Status code: 400.
// Suggestion: Field "invalid_field" does not exist, please check if the field name is spelled correctly;
// Use MCP tool to get the correct field list for the dataset"
}
}Covered Error Types:
MODEL_NOT_FOUND- Model does not exist, provides available model listCONFIG_NOT_FOUND- Configuration does not exist, provides registered configuration listSERVER_ERROR- Server parameter error, provides field fix suggestions401 Insufficient permissions- Login expired/appCode unauthorized/HTTPS/CORS and other suggestionsTIMEOUT- Request timeout, provides timeout configuration suggestions
2025-12-29 ๐ v1.2.0 Major Releaseโ
Lovrabet SDK v1.2.0โ
-
โจ Model Access Method Upgrade - Supports standard and alias methods
// Standard method (Recommended) - Uses dataset_ prefix + datasetCode
// Globally unique, convenient for AI tool code generation
const users = await client.models.dataset_8d2dcbae08b54bdd84c00be558ed48df.filter();
// Alias method (Syntactic sugar) - Uses configured alias
// Convenient for human reading, functionally identical to standard method
const users = await client.models.users.filter();Alias is just a pointer, internally still uses datasetCode for access, all features are the same as standard method.
-
โจ Configuration Structure Redesign - Optimized for AI invocation, redesigned
registerModelsfunction parameter structureregisterModels({
appCode: "your-app-code",
models: [
{
datasetCode: "8d2dcbae08b54bdd84c00be558ed48df",
tableName: "users",
alias: "users", // Optional: Model alias, syntactic sugar
name: "User Table", // Optional: UI display name
},
],
});New structure is centered on datasetCode as the core identifier, more AI-friendly, generated code is more standardized.
-
โจ Model Manager Enhancement - Added multiple management methods
// Get all model details
const details = client.getModelListDetails();
// Returns: [{ datasetCode: '8d2dcbae08b54bdd84c00be558ed48df', alias: 'users', name: 'User Table' }, ...]
// Dynamically add model
client.addModel({
datasetCode: 'f7e6d5c4b3a2901234567890fedcba98',
tableName: 'products',
alias: 'products'
}); -
โ Fully Backward Compatible - All existing code runs without modification
Lovrabet CLI v1.2.0โ
-
โจ SDK Version Compatibility Check - Automatically detects
@lovrabet/sdkversion in the project at startup- Displays yellow warning to upgrade if version below 1.2.0 is detected
- Ensures access to latest features like model aliases
-
โจ API Configuration Structure Optimization - Generated configuration is more AI-friendly, supports model aliases
// api.ts generated by v1.2.0+
export const LOVRABET_MODELS_CONFIG = {
appCode: 'my-app',
models: [
{
datasetCode: '8d2dcbae08b54bdd84c00be558ed48df',
tableName: 'users',
alias: 'users', // Model alias, convenient for code reading
name: 'User Management', // UI display name
},
],
} as const;
Lovrabet MCP v1.2.0โ
-
โก Significant Performance and Stability Improvements - Full upgrade of underlying architecture, faster response, more stable operation
-
โจ Further Reduction of AI Hallucinations - Provides more precise field metadata (database type, length, auto-increment, etc.), helping AI generate more accurate code
-
โจ SDK/CLI Version Compatibility Guidance - Generated code automatically prompts SDK version requirements, guiding users to upgrade to 1.2.0+ to use new features like alias access
2025-12-03โ
Lovrabet SDKโ
-
โจ New Excel Export Feature - v1.1.24 supports exporting datasets to Excel files
Export data quickly with
excelExport()method:// Export all data
const fileUrl = await client.models.users.excelExport();
window.open(fileUrl, '_blank');
// Export with filter conditions
const fileUrl = await client.models.users.excelExport({
status: 'active',
createTime: '2025-01-01'
});Core Features:
- Returns downloadable file URL (OSS address)
- Supports passing filter conditions (
ListParams) - Direct use of
window.open()to open download - Only WebAPI mode (Cookie authentication) supported
2025-11-21โ
Lovrabet SDKโ
-
โจ Filter API Supports OpenAPI Mode - v1.1.22 extends filter() to full mode support
Starting from v1.1.22,
filter()method supports both OpenAPI mode and WebAPI mode:// Using filter in OpenAPI mode
const client = createClient({
appCode: "your-app-code",
accessKey: "your-access-key",
models: { users: { tableName: "users", datasetCode: "ds-001" } },
});
const result = await client.models.users.filter({
where: {
$and: [
{ age: { $gte: 18, $lte: 45 } },
{ country: { $in: ["China", "United States"] } },
],
},
select: ["id", "name", "age"],
orderBy: [{ createTime: "desc" }],
currentPage: 1,
pageSize: 20,
});Updates:
- OpenAPI mode now supports
filter()advanced filtering queries - Maintains consistent API interface with WebAPI mode
- Supports all conditional operators and logical combinations
- OpenAPI mode now supports
2025-11-15โ
Lovrabet SDKโ
-
โจ New Filter API Advanced Filtering Query - v1.1.21 supports more powerful data filtering capabilities
Perform complex conditional queries via
client.models.xxx.filter()method:// Range query + fuzzy search + field filtering
const users = await client.models.users.filter({
where: {
age: { $gte: 18, $lte: 35 }, // Age 18-35
username: { $contain: 'john' }, // Username contains john
status: { $in: ['active', 'pending'] } // Status is active or pending
},
fields: ['id', 'username', 'age'], // Only return these fields
sortList: [{ createTime: 'desc' }],
pageSize: 20
});Core Advantages:
- Supports range queries (
$gte,$lte) - Supports fuzzy matching (
$contain,$startWith,$endWith) - Supports set operations (
$in,$ne) - Supports complex logic (
$and,$or) - Supports field filtering, reducing data transfer
Use Cases:
- Complex data filtering and search features
- Multi-condition combined queries
- Advanced data analysis and reporting
- Supports range queries (
2025-11-11โ
Lovrabet SDKโ
-
โจ New SQL API Support - v1.1.19 supports executing custom SQL queries
Execute custom SQL configured on the platform via
client.api.executeSql()method:// Execute SQL query
const data = await client.api.executeSql("fc8e7777-06e3847d");
// Application layer checks execution results
if (data.execSuccess && data.execResult) {
data.execResult.forEach((row) => {
console.log(row);
});
}Core Features:
- Supports parameterized queries, preventing SQL injection
- Complete TypeScript type support
Use Cases:
- Complex data statistics and aggregation queries
- Cross-table relational queries
- Custom report data retrieval
- Flexible data analysis needs
๐ Detailed Usage Guide
2025-11-04โ
Lovrabet CLIโ
-
โจ New Menu Sync Command - v1.1.15 added
lovrabet menu syncAfter completing new page development, sync to Lovrabet platform with one command, automatically create menus:
lovrabet menu syncCore Features:
- Automatically scan local
src/pagesdirectory, compare with platform menus - Visualize differences (green โ exists, red โ not created)
- Batch create missing menus
- Support configuring JS/CSS CDN links
- Real-time URL format and reachability validation
Use Cases:
- Sync to platform after developing new pages
- Batch manage multiple page menus
- Ensure local and platform consistency
๐ Detailed Usage Guide
- Automatically scan local
2025-10-25โ
OpenAPI Documentationโ
- ๐ Fix terminology and example inconsistencies
- Unified
datasetIdโdatasetCodeacross the board - Unified datasetCode example naming
- Unified
- ๐จ Optimize list return structure description
- Clarified
filterreturns includepaging/tableData/tableColumns - Aligned examples with descriptions, ready for direct copy and run
- Clarified
Lovrabet CLIโ
- ๐ Proofread command documentation
- Confirmed and supplemented
lovrabet api docand--datasetcode,--paramsoption descriptions (aligned with implementation)
- Confirmed and supplemented
Lovrabet SDKโ
- ๐ README example alignment
- Unified examples to use
datasetCode - Supplemented
filterreturn structure reading examples (readingpagingandtableColumns)
- Unified examples to use
2025-10-18โ
Lovrabet SDKโ
-
โจ New Select Options Interface - v1.1.18 supports quick retrieval of form option data
-
Added
getSelectOptions()method for getting dropdown options from data tables -
Returns standardized
{ label, value }format, directly applicable to frontend components -
Automatically maps data table fields to option data
-
Suitable for Select, Radio, Checkbox, and other form components
-
Only WebAPI mode (Cookie authentication) supported
-
Example:
// Get select options
const options = await client.models.users.getSelectOptions({
code: "user_id", // Field name used for option value
label: "user_name", // Field name used for display text
});
// Return format:
// [
// { label: 'Zhang San', value: 'user001' },
// { label: 'Li Si', value: 'user002' }
// ]
// Use in React
<Select>
{options.map((option) => (
<Option key={option.value} value={option.value}>
{option.label}
</Option>
))}
</Select>;
-
-
๐ New Type Definitions - v1.1.17
SelectOptioninterface:{ label: string, value: string }SelectOptionsParamsinterface:{ code: string, label: string }
-
โ ๏ธ Clarified OpenAPI Mode Limitations - v1.1.18
- OpenAPI mode does not currently support
delete()operation - OpenAPI mode does not currently support
getSelectOptions()operation - If you need these features, please use WebAPI mode (Cookie authentication) or develop custom API interfaces
- OpenAPI mode does not currently support
Lovrabet CLIโ
-
๐จ Optimized Naming Convention - v1.1.13 improved code generation standards
- Dataset name generation uses camelCase naming (lowercase first letter)
- Conforms to JavaScript/TypeScript variable naming conventions
- Examples:
order_itemstable โ generatesorderItemsmodel (notOrderItems)user_profiletable โ generatesuserProfilemodel (notUserProfile)
- Ensures consistent style of generated code, improves code readability
-
๐ง Code Generation Optimization - v1.1.13
- Simplified model configuration generation logic
- Improved code generation performance and maintainability
2025-10-17โ
Lovrabet CLIโ
-
โจ New
lovrabet initCommand - v1.1.12 supports quick initialization configuration for existing projects-
Add Lovrabet configuration support to existing projects
-
Interactive appcode input with real-time format validation
-
Automatically detect and prevent overwriting existing configuration files
-
Inherit global configuration, no need to repeat settings
-
Configuration file includes creation time and CLI version information
-
Usage example:
# Interactive initialization
lovrabet init
# Directly specify appcode
lovrabet init --appcode my-app-code
-
-
โจ Enhanced
lovrabet api doc- v1.1.12 supports on-demand generation and custom parameters-
Added
--datasetcodeparameter: specify dataset to generate documentation -
Supports multiple datasets (comma-separated)
-
Intelligent validation: automatically checks if specified dataset codes exist
-
Statistical feedback: shows number of matched datasets and invalid codes
-
Supports passing JSON format additional parameters via
--paramsparameter -
Usage example:
# Generate documentation for all datasets
lovrabet api doc
# Generate documentation only for specified dataset
lovrabet api doc --datasetcode ds_001
# Generate documentation for multiple specified datasets
lovrabet api doc --datasetcode ds_001,ds_002,ds_003
# Pass additional parameters
lovrabet api doc --params '{"customField": "value"}'
-
-
๐ Optimized File Naming Strategy - v1.1.12 improved filename uniqueness
- Extended short code from 4 to 6 digits
- Reduced possibility of filename conflicts
2025-10-16โ
Lovrabet SDKโ
-
โจ New List Sorting Feature - v1.1.16 supports multi-field combined sorting
-
Use
SortOrderenum to control ascending/descending order -
Supports multi-field priority sorting
-
Compatible with both OpenAPI and WebAPI modes
-
Example:
import { SortOrder } from "@lovrabet/sdk";
const users = await client.models.users.filter(
{ currentPage: 1, pageSize: 20 },
[
{ priority: SortOrder.DESC }, // Priority descending
{ createTime: SortOrder.DESC }, // Create time descending
{ name: SortOrder.ASC }, // Name ascending
]
);
-
-
๐ง ModelConfig Interface Enhancement - Added optional
namefield, improved configuration flexibility -
๐ Debug Feature Optimization - v1.1.14 added debug logging feature
- Supports outputting complete HTTP request details (URL, Headers, Body)
- Enable via
options.debug: true - Convenient for troubleshooting API call issues
Lovrabet CLIโ
-
โจ Dataset Management Optimization - v1.1.10 comprehensively improved data management capabilities
- Intelligent deduplication mechanism: automatically identify and remove duplicate datasets
- Optimized SDK data retrieval page templates, streamlined UI components
- Enhanced table data processing capabilities, improved performance
-
๐ API Documentation Generation - Added automatic API documentation generation feature
- Automatically generate API usage documentation from datasets
- Provide complete interface descriptions and example code
- Support custom documentation templates
-
๐ Log System Enhancement - CLI log tracking capabilities fully upgraded
- Full process tracking of command execution
- Enhanced error localization capabilities
- Support log level filtering
-
๐ฏ User Experience Optimization
- Improved API configuration management workflow
- Optimized interactive prompts
- Improved command response speed
2025-10-12โ
Java OpenSDKโ
-
โจ New Complete Java OpenSDK documentation system
- ๐ Quick Start - Complete your first CRUD program in 5 minutes
- ๐ Core Concepts - SDK working principles and authentication mechanism explained in detail
- ๐ API Reference - Complete interface documentation and parameter descriptions
- ๐ก Business Examples - 5 complete implementations of real scenarios (customer management, order sync, data dashboard, data middle platform, scheduled tasks)
- ๐ Best Practices - Release and performance optimization guide
- โ FAQ - Covers troubleshooting for installation, configuration, and full development workflow
-
๐จ Optimized Documentation structure
- Adjusted menu order, arranged by learning path (Quick Start โ Core Concepts โ Examples โ Best Practices โ API Reference โ FAQ)
- API Reference moved to end of menu, convenient for quick reference after getting started
Documentation Experience Optimizationโ
-
๐ Fixed Code block syntax highlighting issues
- Support for Java, Gradle, YAML, Bash, and other languages
- Added correct language identifiers for all code examples
-
๐จ Optimized Single document mode display
- Fixed page width limitation issue in single document mode
- Implemented responsive design, adaptive margins for different screen sizes (compressed margins on small screens, comfortable reading width on large screens)
Content Completionโ
- ๐ Updated Rabetbase introduction
- Supplemented OpenAPI current status description (beta phase, data query function only)
- Supplemented Java OpenSDK complete feature description (supports complete CRUD operations)
- Added quick start guide, categorized by tech stack (frontend developers, backend developers)
- Added technology selection comparison table to help developers choose appropriate solutions
Usage Instructionsโ
This update log follows the following format:
- โจ New - Brand new feature or documentation section
- ๐จ Optimized - Improved expression or structure of existing content
- ๐ Fixed - Corrected errors or issues in documentation
- ๐ Completed / Updated - Supplemented or enriched existing content
- ๐ Security - Security-related updates
- โก Performance - Performance optimization-related updates
- ๐ Example - Added or updated code examples
- ๐ ๏ธ Tools - Development tools or auxiliary function-related
- ๐ Documentation - Documentation-related improvements