Context
objectstack-ai/objectui#2254 claimed to resolve the objectui-side follow-ups tracked in objectstack-ai/framework#2620 (from the framework#2616 Showcase UX pass). I bumped framework's .objectui-sha to the merged commit (6c1ad9e206249735e8ebf7b77fca75313da28070), rebuilt @object-ui/console from it, and browser-verified all 8 items live against a fresh seeded backend (examples/app-showcase). 5 of 7 testable items are genuinely fixed (A1, A3, B2, C2, E). Two are not — filing this so they don't get silently marked done.
B1 — Wizard submitBehavior still allows duplicate creation
Repro: page/showcase_new_project_wizard, fill all 3 steps, click Create.
- The
submitBehavior: {kind:'thank-you', title, message} text does now surface correctly in a toast ("Your new project is ready — find it in Projects, or reopen this wizard to start another.") — confirms the spec-bridge fix (dropping submitBehavior before it reached the renderer) landed.
- But the step-3 form stays fully filled and the "Create" button stays enabled/clickable. No confirmation panel replaces the form; no reset; no redirect.
- Clicking Create a second time immediately after actually creates a second duplicate record. Verified via API:
GET /api/v1/data/showcase_project?fields=id,name&filters=[["name","=","Verification Project 2620-dup-test"]]
→ {"records":[
{"id":"6QhngFqWIp4UN544","name":"Verification Project 2620-dup-test"},
{"id":"BVBRBgZbFDwK182e","name":"Verification Project 2620-dup-test"}
],"total":2}
- So whatever
WizardForm/ObjectForm change implemented submitBehavior for simple/non-wizard forms doesn't carry through for formType:'wizard' specifically — the last step doesn't unmount/replace itself the way a plain form's thank-you panel presumably does.
D — Command Center: chart width still collapsed + raw field name still leaks
Page: page/showcase_command_center, 1440×900 viewport, row A (3 side-by-side chart panels: 任务状态分布 / 项目健康度 / 优先级分布).
Width — measured the actual <svg> bounding boxes via page.locator('.recharts-wrapper svg, .recharts-surface').boundingBox(), not eyeballed from a screenshot:
[
{ "x": 324, "y": 393.27, "width": 100, "height": 350 },
{ "x": 475.53, "y": 393.27, "width": 100, "height": 350 },
{ "x": 627.06, "y": 393.27, "width": 100, "height": 350 }
]
All three row-A charts render at exactly 100px wide — same collapse class as the original #2616 report (~130px), not better. (Row B's charts, which get more per-panel space, measured 376px/162px — so the collapse is specific to the 3-up equal-width band, consistent with the original hypothesis that the SDUI type:'flex' + responsiveStyles:{display:'grid'} override isn't reliably beating the component's own layout, or that ResponsiveContainer isn't getting a measurable parent width in that specific band.)
Labels — x-axis category ticks are now correctly humanized ("To Do", "Urgent" instead of raw todo/urgent) — that part of the #2254 fix works. But the measure/series name is still leaking as a raw field name in two places:
- A literal
task_count caption directly under each single-series chart (not a CSS variable — confirmed via a TreeWalker text-node scan, distinct from the expected --color-task_count CSS custom property).
- The hover tooltip shows
task_count as the row label instead of the dataset's configured label: 'Tasks' (chart-gallery.dataset.ts: { name:'task_count', label:'Tasks', aggregate:'count' }).
So #2254's claim ("Chart axis ticks now honor a resolved config[value].label") fixed the axis-tick lookup specifically, but a separate legend/caption/tooltip code path still reads the raw measure field name.
Repro app
examples/app-showcase in objectstack-ai/framework (main), console built via pnpm objectui:refresh against this repo's current main (6c1ad9e2). Happy to share screenshots/HAR if useful — this issue captures the authoritative DOM measurements and API before/after diffs instead since those are more actionable than pixels.
Ref: framework#2620, framework#2616, objectui#2254.
Context
objectstack-ai/objectui#2254claimed to resolve the objectui-side follow-ups tracked inobjectstack-ai/framework#2620(from the framework#2616 Showcase UX pass). I bumped framework's.objectui-shato the merged commit (6c1ad9e206249735e8ebf7b77fca75313da28070), rebuilt@object-ui/consolefrom it, and browser-verified all 8 items live against a fresh seeded backend (examples/app-showcase). 5 of 7 testable items are genuinely fixed (A1, A3, B2, C2, E). Two are not — filing this so they don't get silently marked done.B1 — Wizard
submitBehaviorstill allows duplicate creationRepro:
page/showcase_new_project_wizard, fill all 3 steps, click Create.submitBehavior: {kind:'thank-you', title, message}text does now surface correctly in a toast ("Your new project is ready — find it in Projects, or reopen this wizard to start another.") — confirms the spec-bridge fix (droppingsubmitBehaviorbefore it reached the renderer) landed.WizardForm/ObjectFormchange implementedsubmitBehaviorfor simple/non-wizard forms doesn't carry through forformType:'wizard'specifically — the last step doesn't unmount/replace itself the way a plain form'sthank-youpanel presumably does.D — Command Center: chart width still collapsed + raw field name still leaks
Page:
page/showcase_command_center, 1440×900 viewport, row A (3 side-by-side chart panels: 任务状态分布 / 项目健康度 / 优先级分布).Width — measured the actual
<svg>bounding boxes viapage.locator('.recharts-wrapper svg, .recharts-surface').boundingBox(), not eyeballed from a screenshot:[ { "x": 324, "y": 393.27, "width": 100, "height": 350 }, { "x": 475.53, "y": 393.27, "width": 100, "height": 350 }, { "x": 627.06, "y": 393.27, "width": 100, "height": 350 } ]All three row-A charts render at exactly 100px wide — same collapse class as the original #2616 report (~130px), not better. (Row B's charts, which get more per-panel space, measured 376px/162px — so the collapse is specific to the 3-up equal-width band, consistent with the original hypothesis that the SDUI
type:'flex'+responsiveStyles:{display:'grid'}override isn't reliably beating the component's own layout, or thatResponsiveContainerisn't getting a measurable parent width in that specific band.)Labels — x-axis category ticks are now correctly humanized ("To Do", "Urgent" instead of raw
todo/urgent) — that part of the #2254 fix works. But the measure/series name is still leaking as a raw field name in two places:task_countcaption directly under each single-series chart (not a CSS variable — confirmed via aTreeWalkertext-node scan, distinct from the expected--color-task_countCSS custom property).task_countas the row label instead of the dataset's configuredlabel: 'Tasks'(chart-gallery.dataset.ts:{ name:'task_count', label:'Tasks', aggregate:'count' }).So
#2254's claim ("Chart axis ticks now honor a resolvedconfig[value].label") fixed the axis-tick lookup specifically, but a separate legend/caption/tooltip code path still reads the raw measure field name.Repro app
examples/app-showcaseinobjectstack-ai/framework(main), console built viapnpm objectui:refreshagainst this repo's current main (6c1ad9e2). Happy to share screenshots/HAR if useful — this issue captures the authoritative DOM measurements and API before/after diffs instead since those are more actionable than pixels.Ref: framework#2620, framework#2616, objectui#2254.