Two follow-ups deferred from the showcase-QA sweep (the substantive fixes + the live smoke + successMessage already landed: #1829, #1843, #1844, #1847, #1848).
1. Wire the showcase smoke into a CI gate
e2e/live/showcase-smoke.spec.ts (#1847) sweeps every showcase nav surface and asserts health (no render crash, no leaked no actions configured placeholder, charts draw non-zero-size SVGs). It currently runs only in the live suite (playwright.live.config.ts) against a manually-started stack — it is not in the blocking Build & E2E gate (which serves a backend-free production bundle for blank-page smoke).
To gate on it, CI needs a two-server + browser harness:
- boot the ObjectStack backend serving
examples/app-showcase (in-memory SQLite) — cross-repo: the showcase lives in objectstack-ai/framework;
- build + serve the console frontend;
- run the live config (its
global-setup already signs in).
Design question: does this live in framework CI (which already boots example apps in the Dogfood gate, and depends on the console package) or objectui CI (which owns the spec but not the framework showcase)? Likely framework, invoking the published console + a copy/import of the smoke.
2. Declarative form success: navigate + reset
successMessage (declarative success toast) landed in #1848. The other two behaviors from the original ask still need plumbing:
- navigate-after-create (e.g. go to the new record): the form layer has no router hook — only
window.location (a full reload that drops the toast). Needs a proper SPA-navigate primitive injected into ObjectForm/WizardForm.
- reset-for-another-entry: ObjectForm has a
resetOnSubmit path; WizardForm would need to return to step 1 cleared.
Proposed shape: onSuccess?: { toast?: string; navigate?: string; reset?: boolean } (or extend the existing field), with {id}/{recordId} interpolation for navigate.
🤖 Generated with Claude Code
Two follow-ups deferred from the showcase-QA sweep (the substantive fixes + the live smoke +
successMessagealready landed: #1829, #1843, #1844, #1847, #1848).1. Wire the showcase smoke into a CI gate
e2e/live/showcase-smoke.spec.ts(#1847) sweeps every showcase nav surface and asserts health (no render crash, no leakedno actions configuredplaceholder, charts draw non-zero-size SVGs). It currently runs only in the live suite (playwright.live.config.ts) against a manually-started stack — it is not in the blockingBuild & E2Egate (which serves a backend-free production bundle for blank-page smoke).To gate on it, CI needs a two-server + browser harness:
examples/app-showcase(in-memory SQLite) — cross-repo: the showcase lives inobjectstack-ai/framework;global-setupalready signs in).Design question: does this live in framework CI (which already boots example apps in the Dogfood gate, and depends on the console package) or objectui CI (which owns the spec but not the framework showcase)? Likely framework, invoking the published console + a copy/import of the smoke.
2. Declarative form success: navigate + reset
successMessage(declarative success toast) landed in #1848. The other two behaviors from the original ask still need plumbing:window.location(a full reload that drops the toast). Needs a proper SPA-navigate primitive injected into ObjectForm/WizardForm.resetOnSubmitpath; WizardForm would need to return to step 1 cleared.Proposed shape:
onSuccess?: { toast?: string; navigate?: string; reset?: boolean }(or extend the existing field), with{id}/{recordId}interpolation fornavigate.🤖 Generated with Claude Code