App frame shell
State: open/verified · Kind: module · Audience: system
Summary
Section titled “Summary”- 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.
Statement
Section titled “Statement”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.
What it provides
Section titled “What it provides”- 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:captureextension contract (documented in docs/shell-capture.md) for a module’s ⌘K provider
Underlying implementation
Section titled “Underlying implementation”- 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])
Locations
Section titled “Locations”packages/ts/app-frame/packages/ts/app-frame/app/components/packages/ts/app-frame/app/composables/useContributions.ts#registerModulepackages/ts/app-frame/app/composables/useKeybindings.tspackages/ts/app-frame/app/plugins/packages/ts/app-frame/docs/shell-capture.md