Skip to content

T-ZOQT-tree-and-tabs-show-git-state

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

Once the platform can report a vault’s git state, the tree and the open-document tabs should show it: a row with uncommitted changes and a tab holding one should look different from a clean one. This is the read-only, low-risk half of git awareness — no action, just a badge and a dot color.

LocationRole today
solutions/determined/experiences/agent-pants/app/components/ApComponentTree.vue#badgesForBuilds each component row’s badge list (target count, folder/kind disagreements); no git badge
packages/ts/app-frame/app/components/ShellDocumentTabs.vue#hueStyleColors each tab’s dot from the active scope item’s hue via scopeItemHueStyle; nothing reads per-path git state
solutions/determined/packages/shell/app/composables/useVaultRegistry.tsVault registry composable; no per-path git status yet (added by T-NS6Z-vault-git-status-service)

badgesFor gains a git badge (e.g. M/U/a conflict marker) for a component whose backing path is modified/untracked/staged/conflicted per useVaultGit(), styled the way the existing folder/kind-disagreement badges already use warning. ShellDocumentTabs.vue’s tab dot mixes in the git-state color alongside the existing scope hue. On a vault without VaultAspect::Git, both surfaces render exactly as they do today — no badge, no dot change — since useVaultGit() has nothing to report.

  1. Read useVaultGit() (from T-NS6Z-vault-git-status-service) in ApComponentTree.vue, keyed by each row’s backing file path.
  2. Add a git-state badge to badgesFor, following the existing Badge shape (text, status, hint); decide the glyph/label set (M, U, a conflict marker) alongside a hover hint naming the state.
  3. Read useVaultGit() in ShellDocumentTabs.vue and extend hueStyle (or add a sibling function) to layer the git-state color onto the tab dot; keep the scope-hue behavior for a vault carrying no Git aspect.
  4. Confirm both surfaces are unchanged (no badge, unchanged dot) for a non-git vault, and update on a live status change without a manual refresh, per whatever invalidation T-NS6Z-vault-git-status-service settled on.
AreaNote
solutions/determined/experiences/agent-pants/app/components/ApComponentTree.vueGit badge in badgesFor
packages/ts/app-frame/app/components/ShellDocumentTabs.vueGit-state color on the tab dot
  • AC-1: A component row backed by a modified file shows a git badge with a hover hint naming the state, in a git-aspected vault.
  • AC-2: A tab open on an untracked or modified file shows the git-state color on its dot.
  • AC-3: Neither surface shows any git indicator when the active vault lacks VaultAspect::Git.
  • AC-4: A Playwright or component test covers at least one changed-state badge and its absence on a clean vault.

From the user’s Agent Manager planning request of 2026-09-07: git awareness as a vault facility, expanded in solutions/agent-pants/docs/vault/design/workflow-and-ux-assessment.md. This task is the read-only surfacing half; the write half is T-L7YP-git-panel-commit-with-validation.

T-NS6Z-vault-git-status-service


← Back to Tasks