feat(desktop): context page deepening — window bar + compact Config + intervention marker + subagent drilldown

Four Context-page enhancements (lane-ctx-deep, F1-F4):

- F1 context window breakdown: replace percentage-only card header with
  a stacked-bar breakdown of input / cached / output token buckets,
  plus a right-side gauge showing the live window occupancy ratio.
- F2 compact Config tab: fold the sprawling profile Config editor into
  a Config tab on the Context page card, with the same yml-leaf
  ordering as the top-of-window profile picker.
- F3 intervention marker: on the intervention timeline, emit a marker
  glyph at each user-intervention row (turn-flow-glyph-style) so the
  card scans as a single stream instead of a header + separate list.
- F4 subagent drilldown: when a turn's tool trace hits a subagent, the
  Trace panel's Config + Output tabs get a second row of Subagent
  Config / Subagent Output tabs immediately below, driven by the same
  fold-in-place shape the parent panel already uses.

4 new renderer modules (compact-config-model / context-window-breakdown /
intervention-timeline / subagent-drilldown), 6 new test files (41 tests,
all node --test style), 4 QA shoot scripts for CDP-driven regression
screenshots.
This commit is contained in:
ZiyaZhang
2026-07-19 01:22:28 -07:00
parent c8f5ca3d5b
commit fc558c2db8
18 changed files with 2705 additions and 4 deletions

View File

@@ -1184,6 +1184,26 @@
top when it shows. The duplicate "No context activity …" head
was removed — the header subtitle already carries that line
(see context-page.js renderEmpty()). -->
<!-- lane-ctx-deep (task #51 F1): window occupancy stacked bar
+ F3: intervention marker strip. Both sit above the two-column
body so the "at a glance" chrome reads top-down. -->
<section class="context-page-topstrip" data-context-topstrip hidden>
<div class="context-window-bar" data-context-window-bar aria-label="Context window occupancy by family">
<div class="context-window-bar-head">
<span class="context-window-bar-title">Window occupancy</span>
<span id="context-window-bar-summary" class="context-window-bar-summary muted small"></span>
</div>
<div id="context-window-bar-track" class="context-window-bar-track" role="img" aria-label="Stacked family proportions"></div>
<div id="context-window-bar-legend" class="context-window-bar-legend"></div>
</div>
<div class="context-intervention-strip" data-context-intervention-strip aria-label="Human intervention markers">
<div class="context-intervention-head">
<span class="context-intervention-title">Interventions</span>
<span id="context-intervention-summary" class="context-intervention-summary muted small">no interventions</span>
</div>
<div id="context-intervention-track" class="context-intervention-track" role="list"></div>
</div>
</section>
<section class="context-page-body" data-context-body>
<div id="context-page-empty" class="context-page-empty" hidden>
<div class="context-page-empty-note muted small">Load a sample session to see the page shape, or start a chat from the Chat tab and come back.</div>
@@ -1360,6 +1380,11 @@
<script src="./context-meter.js"></script>
<script src="./compact-badge.js"></script>
<script src="./compact-card.js"></script>
<!-- lane-ctx-deep (task #51 F2/F4): compact Config tab + subagent
drill-down view models. Loaded before subagent-view.js so
buildInlineSubagentTrace can pick up the drill-down helpers. -->
<script src="./compact-config-model.js"></script>
<script src="./subagent-drilldown.js"></script>
<script src="./context-rail.js"></script>
<script src="./workflow-view.js"></script>
<script src="./subagent-view.js"></script>
@@ -1427,6 +1452,10 @@
window.__dshInjectFamily; the switchTo('context') hook in
renderer.js drives its refresh on tab entry. -->
<script src="./context-page-model.js"></script>
<!-- lane-ctx-deep (task #51 F1/F3): window family breakdown +
intervention marker projections consumed by context-page.js. -->
<script src="./context-window-breakdown.js"></script>
<script src="./intervention-timeline.js"></script>
<script src="./context-page.js"></script>
<!-- Tracing page (#225). Loads after context-page so it can share the
__dshChat + __dshTraceAgg + __dshTraceTriView surfaces; the