Skip to content

T-XFZC-dashboard-spa-leases-view

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

Phase 12 (M-VBZB) retired the dashboard server’s hand-rolled INDEX_HTML view in favor of the new static SPA (packages/ts/dashboard-spa), but the SPA never grew a replacement for INDEX_HTML’s active/archived lease detail tables — only a lease-count pill survives (ActiveWorkView). This task closes that gap so the SPA reaches INDEX_HTML’s lease-detail parity.

  • INDEX_HTML (removed from server.ts by this phase) rendered an active leases table and an archived leases table, each with per-lease detail rows, sourced from /api/state’s active_leases/archived_leases arrays.
  • Those two arrays are still present on /api/state and @sdlc/dashboard-client’s DashboardState type — nothing was removed server-side.
  • ActiveWorkView.vue (the SPA’s /work view) shows only an active_leases count pill; no SPA route renders the lease arrays themselves. The desktop app’s ControlPlaneView renders a lease table too, but it reads a different, SDF-Rust-backed lease source (useTransport().controlPlaneGetLeases), not /api/state, so it is not reusable here (native-only, out of scope for a standalone sdlc dashboard).

A new SPA view (or a section of an existing one) renders /api/state.active_leases and archived_leases as tables, matching INDEX_HTML’s per-lease columns closely enough that nothing INDEX_HTML showed is now unreachable from the SPA.

  1. Confirm the exact columns INDEX_HTML rendered for each lease table (task/lease holder, acquired/expiry time, state) from its removed template or PR history.
  2. Add a LeasesView.vue (or extend ActiveWorkView.vue) that renders both tables from the existing active_leases/archived_leases fields already on DashboardState — no new API surface needed.
  3. Link it from wherever the lease-count pill currently lives.
  4. Cover it with the same table-rendering test pattern the other new T-DJJ2 views use (RoadmapProgressView.test.ts, PrBoardView.test.ts, etc.).
AreaNote
packages/ts/dashboard-spa/src/views/New or extended view rendering the lease tables
packages/ts/dashboard-spa/src/views/ActiveWorkView.vueCurrent home of the lease-count pill; likely link/entry point
  • AC-1: A dashboard SPA view renders active_leases as a table (one row per lease, matching INDEX_HTML’s columns).
  • AC-2: The same view (or a sibling) renders archived_leases as a table.
  • AC-3: The view is reachable from the SPA’s navigation, not just a raw URL.
  • none
  • none
  • PR #2415 review (P12 static SPA dashboard), thread on solutions/ontological/desktop/docs/sdlc-json-api-ui-inventory.md: the hard cutover from INDEX_HTML to the SPA dropped the lease-detail tables without a filed follow-up or a completion-note mention. This task and the M-VBZB completion-note update are the fix.

← Back to Tasks