fix(apply): express static-site build settings so a monorepo app is served, not run (#63) #64
No reviewers
Labels
No labels
blocked
blocker:ci-red
blocker:conflict
blocker:drill-pending
blocker:unrequested
bug
claimed
documentation
enhancement
epic
merge-next
needs-triage
ready
release
scope:apply
scope:capture
scope:coolify-api
scope:fleet
scope:manifest
scope:secrets
stale
state:addressing
state:bots-reviewing
state:building
state:needs-human
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: heavy-duty/cast#64
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/static-build-fields"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Closes #63.
The bug
applycreated applications but droppedinstall_command,build_command, andis_static— settings the manifest had no field for — solanding(a static Astro site in an npm-workspace monorepo) was built and run from the repo-rootpackage.json, which bootsnpm run start -w apps/core(the API server), crash-looping on a missingDATABASE_URL.The change
The
buildblock gains four optional fields Coolify accepts on both the create (POST /applications/private-github-app) and update (PATCH /applications/{uuid}) routes:applywrites and diffsinstall_command/build_command/start_command/is_static.draftemits them (they left itsNO_HOMElist;is_staticwas never in it — the exact silent loss that caused the crash), and only emitsstaticalongside apublish_directoryso a draft always loads.is_staticis opt-in. cast emits it only when the manifest declaresstatic:— emittingis_static: falseby default would make the first apply PATCH static serving off any un-migrated static/SPA app configured in the UI (and fight a possiblepack: staticserver-side coupling forever). Declarestatic: trueto serve,static: falseto guard against a UI flip, or omit it to leave the field alone.static: truewith nopublish_directory(nothing to serve), and any of the four on adockercomposeapp.Notes
reference/coolify-openapi-4.1.2.jsonon both routes.is_staticis absent from the vendored OpenAPI response schema, so the read-side boolean coercion (raw.is_static === true || raw.is_static === 1) rests on the Coolify source's boolean cast, not on the vendored file. Flagged for a live confirmation.docs/semantics.mdgains a Build settings section.npm run build/npm test(471 passing) /npm run checkall green.🤖 Generated with Claude Code