Skip to content

showcase's registered showcase_new_task action targets a PAGE, so the global_nav "New Task" command opens the home page in a dialog instead of creating a task #6739

Description

@os-project-manager

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.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions