Skip to content

T-LR5B-focused-vault-view-without-rail

State: planning/proposed · Impact: medium · Complexity: small

Entering in-window vault focus today only tints the chrome and highlights one card in an otherwise fully visible vault rail — every other vault’s picker stays on screen while the point of focusing is to narrow attention to one. This task hides the rail entirely while focused, stops Escape from exiting focus so the key is free for other uses, and gives the vault switcher an explicit way back.

LocationRole today
packages/ts/app-frame/app/components/ScopeFocusBand.vueOwns an exitOnEscape prop (default true) and a window keydown listener that emits exit on Escape
solutions/determined/packages/shell/app/components/ShellVaultFocusBand.vueMounts ScopeFocusBand with no exitOnEscape override, so it defaults on; calls setFocused(null) on exit
solutions/determined/packages/shell/app/components/ShellVaultScopePane.vueRenders the frame’s ScopeItemPane with :focused="focused"; a focused item only gets a CSS highlight, the pane and every other card stay fully rendered
solutions/determined/packages/shell/app/composables/useVaultWorkspace.tsfocus(vaultId)/unfocus() stash and restore the scope; focused has no rail-visibility consequence today
solutions/determined/packages/shell/app/app.vue#scope/#scope-collapsed mount the scope pane and rail only when NOT a separate isFocusedWindow; in-window focused has no effect on this mount
packages/ts/panes/src/usePaneGroup.tscollapse/expand/isCollapsed toggle a pane to its collapsedWidth rail; no state removes a pane’s DOM and width claim entirely
solutions/determined/packages/shell/app/components/ShellVaultSwitcher.vueOpens ShellVaultsModal to add, rename, or remove vaults; no item to leave focus

ShellVaultFocusBand.vue passes exit-on-escape="false" to ScopeFocusBand, so Escape while focused falls through to whatever else wants it. The scope pane’s controller gains a genuine hidden state — distinct from collapsed, claiming no width and rendering no DOM — and the shell puts the scope pane into it while in-window focused is set, restoring it on unfocus(). ShellVaultSwitcher.vue gains an “All vaults” item that calls useVaultWorkspace().unfocus().

  1. usePaneGroup.ts: add a hidden state alongside collapsed, settable and clearable by a controller, with no rendered rail and no width claim — distinct from the existing collapsedWidthOf path.
  2. app.vue (or layouts/default.vue): watch in-window focused from useVaultWorkspace() and call the controller’s new hide/show for the scope pane’s id; leave the separate isFocusedWindow case, already un-mounted at setup, untouched.
  3. ShellVaultFocusBand.vue: pass exit-on-escape="false" to ScopeFocusBand.
  4. ShellVaultSwitcher.vue: add an “All vaults” row, visible only while focused is set, that calls unfocus().
  5. Verify the collapsed-rail slot does not render while hidden — it disappears, it does not fold to its collapsed width.
  6. Capture light and dark screenshots of the focused state with the rail gone and the switcher’s new item.
AreaNote
packages/ts/panes/src/usePaneGroup.tsAdd a hidden pane state, distinct from collapsed
solutions/determined/packages/shell/app/app.vueHide and show the scope pane on in-window focus and unfocus
solutions/determined/packages/shell/app/components/ShellVaultFocusBand.vueexit-on-escape="false"
solutions/determined/packages/shell/app/components/ShellVaultSwitcher.vue”All vaults” item calling unfocus()
  • AC-1: Entering in-window vault focus removes the scope rail from the DOM rather than collapsing it, and unfocus() restores it exactly as it was.
  • AC-2: Pressing Escape while focused does not exit focus.
  • AC-3: ShellVaultSwitcher.vue shows an “All vaults” item only while focused; clicking it calls unfocus() and restores the rail.
  • AC-4: usePaneGroup.ts gains a test asserting the hidden state claims zero width and renders neither the pane nor its collapsed slot.
  • AC-5: Light and dark screenshots of the focused state are added to the S-0012 contact sheet.
  • The separate isFocusedWindow case (a dedicated OS window scoped to one vault), already un-mounting the scope pane at setup time.
  • Any other pane adopting the new hidden state; only the vault scope pane is wired to it here.

From the user’s planning request of 2026-09-07.


← Back to Tasks