Skip to content

global_nav action location renders nowhere in the running app — the ⌘K palette never reads action metadata, but Studio previews a command-palette frame for it #6888

Description

@os-project-manager

Found while working #6739. Filed separately: #6739 is about one showcase action's target; this is about the locations value that action declares.

What

global_nav is a canonical ACTION_LOCATIONS member (packages/spec/src/ui/action.zod.ts:454,463), documented as:

  • packages/spec/src/ui/action.zod.ts:454 — "global_nav — global navigation/command-palette level actions."
  • content/docs/protocol/objectui/actions.mdx:224 — "Global navigation / command-palette actions"
  • content/docs/ui/actions.mdx:192 — "App-level navigation"

No running-app surface renders it. Measured against the exact objectui commit this repo vendors — .objectui-sha = b1204af0a1f7256514bab4479f5e9c915fb91449:

$ git grep -n "global_nav" b1204af0a1f7256514bab4479f5e9c915fb91449 -- packages apps | grep -v "\.test\."
…/metadata-admin/inspectors/ActionDefaultInspector.tsx:132:  global_nav: 'Global nav / command palette',
…/metadata-admin/previews/ActionPreview.tsx:581:      {locations.includes('global_nav') && (
…/metadata-admin/previews/ActionPreview.tsx:582:        Frame label="global_nav"
…/metadata-admin/previews/block-config.ts:366:        { value: 'global_nav', label: 'Global nav' },
…/components/src/renderers/action/action-bar.tsx:19: * list_item, record_more, record_related, and global_nav locations.

Four of those five are the Studio designer; the fifth is a doc comment. The console's ⌘K palette — packages/app-shell/src/chrome/CommandPalette.tsx — builds its groups from nav items, objects, dashboards, pages, reports, recent items, record search and theme. Its seven CommandGroup headings at that SHA:

objects · dashboards · pages · reports · switchApp · preferences · actions

…and the actions group is hard-coded chrome (one "open full search" item). The file has no reference to global_nav, actionRendersAt, or any action-metadata source. So a locations: ['global_nav'] action never reaches a user.

The sharp edge

metadata-admin/previews/ActionPreview.tsx:581 draws the author a mock frame:

⌘K · Command palette
   [ New Task ]

The designer promises a surface the product does not have. An author declares global_nav, sees it previewed, ships it, and it renders nowhere — the ADR-0078 "declares, 'renders', reports success, and does nothing" shape, arriving through the location vocabulary rather than through a missing locations key.

Who is hit today

  • examples/app-showcase/src/ui/actions/index.ts — two actions declare it: showcase_new_task and showcase_portfolio_snapshot. (The latter is still reachable over REST/MCP as an object-less action, so only its UI surface is dead.)
  • docs/qa/platform-checklist/areas/records-forms.json — item records-forms.action-location-matrix has a global_nav variant ("showcase_new_task in the command palette / global nav") and a step "new_task from the palette". That step cannot pass; the checklist item is unrunnable as written.

Why no existing rule catches it

packages/lint/src/validate-action-locations.ts:44-46 names this class and explicitly declines it:

Scope note: this rule asks only "did anyone place this action?". It deliberately does NOT check that a declared location is one a renderer actually serves […] distinct classes with their own rules.

The distinct rule does not exist. So this is a known-and-deferred gap, not a blind rule — the existing rule is correct about its own scope.

Directions (not a recommendation — needs triage)

  1. Serve it — teach CommandPalette.tsx to read global_nav actions and dispatch them through the normal action runtime. Makes the docs, the designer preview and the checklist item all true. (objectui-side.)
  2. Retire it — drop global_nav from ACTION_LOCATIONS under ADR-0087, and the designer frame with it. Cheapest, and consistent with "a declared surface with no pull is handled implementation-first". Costs the object-less-action story its only UI home.

Either way docs/qa/platform-checklist/areas/records-forms.json's global_nav variant needs updating, and the designer preview frame must stop drawing a surface that does not exist.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions