Found while implementing #6597 (PR #6737). Same action name, different surface — filed separately rather than fixed there, because #6597's scope is the one corpus line on the button.
What
examples/app-showcase/src/ui/actions/index.ts:177:
/** global nav command-palette action. */
export const NewTaskAction = defineAction({
name: 'showcase_new_task',
label: 'New Task',
icon: 'plus',
objectName: task,
type: 'modal',
target: 'showcase_component_gallery', // ← a PAGE, not the task object
locations: ['global_nav'],
refreshAfter: true,
});
target names the showcase home page, not the showcase_task object. objectui's useActionModal.resolveModalTarget resolves a type: 'modal' string target page first, then object (deliberately — framework#3530), and showcase_component_gallery is a page, so it wins.
Measured
I ran exactly this dispatch in a real browser while deciding #6597's fix — the button under test carried type: 'modal' + target: 'showcase_component_gallery', i.e. this action's own shape:
after click — dialogs: 1
dialog title: "Component Gallery"
dialog text: "Component Gallery ObjectStack Showcase Every metadata type, every view, every chart — in one workspace. Explore … Create Task Close"
dialog form controls: 0
The dialog renders the home page inside itself. Zero form controls — nothing to create a task with. Swapping the target to showcase_task opened the real Task create form (7 controls) and actually created a record, which is what PR #6737 ships for the button.
So a command-palette entry labelled "New Task" with a plus icon opens the welcome page in a dialog. Not an error, not a crash — just a label that does not describe what happens.
⚠️ Scope note on the evidence: I measured the dispatch (this type+target pair through the same resolveModalTarget path), not the global_nav command-palette entry point itself. Whoever picks this up should confirm the palette invocation before/after, the way #6597 asked for a real click-through.
Why it is worth fixing
The showcase is the reference corpus — it gets read and copied, by humans and by AI authoring metadata apps. Right now showcase_new_task means two things in one corpus after #6737 lands: the button dispatches to the task object, this registry entry dispatches to a page.
Suggested fix is one key: target: 'showcase_component_gallery' → target: 'showcase_task'.
Coverage is not lost by that change — showcase_quick_view (line 98) is a second type: 'modal' action carrying the same page target at list_item, and there the "open a dialog/page" semantics match its "Quick View" label. So the modal-targeting-a-page specimen the coverage matrix wants stays exercised.
Found while implementing #6597 (PR #6737). Same action name, different surface — filed separately rather than fixed there, because #6597's scope is the one corpus line on the button.
What
examples/app-showcase/src/ui/actions/index.ts:177:targetnames the showcase home page, not theshowcase_taskobject. objectui'suseActionModal.resolveModalTargetresolves atype: 'modal'string target page first, then object (deliberately — framework#3530), andshowcase_component_galleryis a page, so it wins.Measured
I ran exactly this dispatch in a real browser while deciding #6597's fix — the button under test carried
type: 'modal'+target: 'showcase_component_gallery', i.e. this action's own shape:The dialog renders the home page inside itself. Zero form controls — nothing to create a task with. Swapping the target to
showcase_taskopened the real Task create form (7 controls) and actually created a record, which is what PR #6737 ships for the button.So a command-palette entry labelled "New Task" with a
plusicon opens the welcome page in a dialog. Not an error, not a crash — just a label that does not describe what happens.type+targetpair through the sameresolveModalTargetpath), not the global_nav command-palette entry point itself. Whoever picks this up should confirm the palette invocation before/after, the way #6597 asked for a real click-through.Why it is worth fixing
The showcase is the reference corpus — it gets read and copied, by humans and by AI authoring metadata apps. Right now
showcase_new_taskmeans two things in one corpus after #6737 lands: the button dispatches to the task object, this registry entry dispatches to a page.Suggested fix is one key:
target: 'showcase_component_gallery'→target: 'showcase_task'.Coverage is not lost by that change —
showcase_quick_view(line 98) is a secondtype: 'modal'action carrying the same page target atlist_item, and there the "open a dialog/page" semantics match its "Quick View" label. So the modal-targeting-a-page specimen the coverage matrix wants stays exercised.