Skip to content

T-4JGE-appframe-scaffold-move

Status: closed/done · Impact: high · Complexity: large

Extract the (roughly 90%-generic) app-frame out of @determined/shell into a new neutral Nuxt-layer package, so a second host (the SDLC dashboard) can consume it. The seam analysis found the determined coupling is only five narrow points; this task moves everything generic out unchanged and keeps determined green, setting up the contract work.

LocationRole today
packages/ts/shell/app/@determined/shell — a Nuxt layer bundling the generic frame (palette, keybindings, context-menu, deep-links, notifications, settings, chords, Shell* components, layout, boot plugins) together with the five determined-specific seams.
packages/ts/shell/nuxt.config.tsextends ['../ui'], @nuxt/ui, ssr:false, /api devProxy.

A new neutral package (@sksizer/shell; @sksizer/app-frame avoids two “shells”) holds the generic pieces moved verbatim: the registry composables (usePlatformuseContributions, useNav, useContextMenu, useSettings, useDeepLinks, useNotifications, useKeybindings), utils/chords, utils/deepLinks, utils/zodFields, the Shell* components, layouts/default.vue, and the boot plugins. @determined/shell extends the new frame; the five determined seams stay in place for now (addressed in T-D2SL-appframe-contracts and T-7BIN-appframe-determined-adapter). No behavior change.

  1. Decide the package name and scaffold it as a Nuxt layer (main: ./nuxt.config.ts, extends a design-system layer, @nuxt/ui).
  2. Move the generic composables/utils/components/plugins/layout from packages/ts/shell/app/ into the new package unchanged.
  3. Make @determined/shell extend the new frame; leave the five seams in place (transport import, platform types, /apps/<id> regex, determined://, token dependency).
  4. Verify a determined product (e.g. blank) builds and runs with no behavior change.
LocationKindChange
packages/ts/app-frame/newnew neutral Nuxt-layer package holding the generic frame
packages/ts/shell/modifymove generic pieces out; extend the frame
  • AC-1: The generic composables/utils/components/plugins/layout live in the new frame package, and @determined/shell extends it.
  • AC-2: A determined product builds and runs with no visible or behavioral change.
  • AC-3: The moved generic code carries no @determined/* dependency except the five known seams, which are handled downstream.

T-ARPY-persist-pane-state


← Back to Tasks