Skip to content

App frame shell

State: open/verified · Kind: module · Audience: system

  • A Nuxt layer providing the neutral application chrome — sidebar, topbar, command palette, panes — plus the contribution/command/settings/context-menu/deep-link registries, keybindings, and boot plugins that host apps extend rather than build themselves.
  • Hosts (e.g. the determined shell) extend this layer, which itself extends a host-supplied design-system layer; a host module registers into the frame’s registries via a manifest, and the frame renders it without importing anything from the module.

The app frame is the standing UI shell an end user directly interacts with — sidebar navigation, titlebar, command palette / capture bar (⌘K), context menus, settings surface, and pane layout — decoupled from any one product’s domain code. It exposes typed extension points (contributes.extensions, nav/command/settings contributions, shell:capture providers) that a host module plugs into at boot, so the chrome is shared across products while each module owns its own screens and commands.

  • Generic chrome components: sidebar/topbar/titlebar, command palette, ⌘K capture surface, pane layout and pane sections
  • Contribution/command/settings/context-menu/deep-link registries a host module registers into (registerModule)
  • Keybinding dispatch and boot plugins (deep-link, command-palette, appearance, shell-channel)
  • The shell:capture extension contract (documented in docs/shell-capture.md) for a module’s ⌘K provider
  • packages/ts/app-frame (Nuxt layer, no design-system layer named — host composes one in per nuxt.config.ts)
  • Consumed today by solutions/determined/packages/shell (extends [app-frame, ui])
  • packages/ts/app-frame/
  • packages/ts/app-frame/app/components/
  • packages/ts/app-frame/app/composables/useContributions.ts#registerModule
  • packages/ts/app-frame/app/composables/useKeybindings.ts
  • packages/ts/app-frame/app/plugins/
  • packages/ts/app-frame/docs/shell-capture.md

← Back to Capabilities