Summary
On CLI 0.0.55, every deploy command — base44 site deploy, base44 functions deploy, base44 deploy, and base44 functions pull — fails during project load if any entity's name contains an underscore (e.g. line_items). The check rejects names the Base44 platform itself already accepts and serves in production, so an existing app whose entities use snake_case names cannot deploy anything through the CLI.
Environment
- base44 CLI: 0.0.55
- Node: 22.16.0
Steps to reproduce
- A project with an entity whose
name is snake_case, e.g. base44/entities/line-items.jsonc containing "name": "line_items" (such entities already exist and are served live).
- Run
npx base44 site deploy.
- Fails before any upload with:
Invalid entity file / Entity name must be alphanumeric only.
Root cause (from the bundled CLI)
readProjectConfig() → readAllEntities() → readEntityFile() runs EntitySchema.safeParse(), where EntitySchema.name is string().regex(/^[a-zA-Z0-9]+$/, "Entity name must be alphanumeric only"). All entities are validated eagerly on load, so one snake_case name aborts the whole command. Notably, site deploy calls readProjectConfig() before deploySite() even though it only archives/uploads the build output and never pushes entities — so it's blocked too. (exec, functions list, whoami don't call readProjectConfig, which is why they still work.)
Impact
Apps whose entities use snake_case names — which the platform accepts and serves — cannot deploy via the CLI at all. Renaming isn't a safe fix: name is the entity's identity (sync key, SDK accessor base44.entities.line_items, and frontend references) bound to live production data.
Regression
The validation appears to have been introduced around 0.0.30; 0.0.20 does not reject underscores.
Requested fix (any one)
- Accept entity names the platform accepts (allow underscores), or
- Skip entity-name validation for
site deploy (it doesn't push entities), or
- Add an opt-out flag (e.g.
--skip-entity-validation) for deploy commands.
Summary
On CLI
0.0.55, every deploy command —base44 site deploy,base44 functions deploy,base44 deploy, andbase44 functions pull— fails during project load if any entity'snamecontains an underscore (e.g.line_items). The check rejects names the Base44 platform itself already accepts and serves in production, so an existing app whose entities use snake_case names cannot deploy anything through the CLI.Environment
Steps to reproduce
nameis snake_case, e.g.base44/entities/line-items.jsonccontaining"name": "line_items"(such entities already exist and are served live).npx base44 site deploy.Invalid entity file/Entity name must be alphanumeric only.Root cause (from the bundled CLI)
readProjectConfig()→readAllEntities()→readEntityFile()runsEntitySchema.safeParse(), whereEntitySchema.nameisstring().regex(/^[a-zA-Z0-9]+$/, "Entity name must be alphanumeric only"). All entities are validated eagerly on load, so one snake_case name aborts the whole command. Notably,site deploycallsreadProjectConfig()beforedeploySite()even though it only archives/uploads the build output and never pushes entities — so it's blocked too. (exec,functions list,whoamidon't callreadProjectConfig, which is why they still work.)Impact
Apps whose entities use snake_case names — which the platform accepts and serves — cannot deploy via the CLI at all. Renaming isn't a safe fix:
nameis the entity's identity (sync key, SDK accessorbase44.entities.line_items, and frontend references) bound to live production data.Regression
The validation appears to have been introduced around
0.0.30;0.0.20does not reject underscores.Requested fix (any one)
site deploy(it doesn't push entities), or--skip-entity-validation) for deploy commands.