Repository navigation
Description
Parent
#39 — Usage read model / Typert remote / Profile contract; part of #34.
What to improve
Human QA approved #499 / PR #588. Its single-day actual-model detail is a working first slice, but Profile should let a Human understand usage across a selected period with coordinated TanStack Charts rather than a chart plus a separate single-day breakdown.
Provide one shared, bounded time-range selector and coordinated charts in the Token usage section:
-
Daily overall usage — total actual tokens per Host-local day within the selected range.
-
Actual model usage composition — usage over that same range grouped by actual model ID by default or actual provider ID after switching; default model rows expose total input (uncached input + cache reads + cache writes), cache reads, output and exact totals, with cache/input and output/total percentages.
-
Per-model cache ratio — a common 0–100% comparison track for cache reads / total input, with counts and ratios also exposed in text and tooltip; use summed counts, not averaged percentages. Missing or zero denominators stay Unknown.
Human reprioritized this UI after approving #503 / PR #598: deliver it now using the existing bounded 26-week public Profile usage read model. One shared range control offers recent ranges and valid custom dates within that window; switching it updates every chart together. Allowed Model Plans remain separate from observed usage.
Default presentation groups all execution roles by actual model ID, combining providers for that model; a Model / Provider switch selects provider-only grouping instead, without nesting the unselected dimension. The underlying public query and collapsed execution detail retain both identities. The default rows show names and exact totals in a compact single line; chart hover tooltips expose token buckets and weighted percentages, per Human QA and the OpenCode Data reference. Orchestrator, Assignment and DSH Subagent breakdown belongs in a default-collapsed Details section, preserving full input/output/cache buckets and unknown values for inspection.
Acceptance criteria
-
Profile has a single time-range control driving the daily, model-composition and cache-ratio TanStack Charts; it supports bounded recent ranges and custom dates within the existing 26-week Host query window and defaults to the most recent 7 calendar days including today (Human QA refinement).
-
The daily chart shows overall usage for each day in the selected scope; the model chart aggregates that exact period by the selected actual model ID or provider ID. The alternate dimension never appears as nested subrows; the raw Host rows retain provider/model identity for the collapsed audit detail.
-
Default model/provider rows show the selected name and exact total in one compact line; chart hover tooltips show inclusive input, cache reads and output, with cache/input and output/total percentages; a separate cache-ratio chart compares models on 0–100%.
-
With complete reports, summed daily totals equal the model breakdown total for the same scope. Exact reported totals remain usable when individual buckets are absent; missing totals or buckets are explicit Unknown, never fabricated zero.
-
Empty, partial and unavailable states are clear and accessible. Chart details are also readable with keyboard interaction and accessible text; long model labels and narrow layouts remain usable in light and dark themes.
-
Default model totals merge execution roles; a default-collapsed Details section exposes Orchestrator, Assignment and DSH Subagent breakdown. Queries use the existing bounded Host read model through the API Gateway; Browser code does not read Session logs or create a second statistics store.
-
Focused query/interaction coverage verifies synchronized ranges and totals. An isolated real DSH Profile with multiple used routes provides actionable Human QA; the PR includes actual screenshots or video with working permanent links.
Delivery order
Human explicitly prioritized this chart presentation before #507. Use the existing 26-week query contract; #507 later supplies broader query filters, freshness states and retained all-time totals. This issue does not claim retention after deleted history (#502).
Scope boundary
This issue owns the coordinated chart presentation and progressively disclosed execution details. #507 continues to own its expanded query/filter contract, freshness states and retained all-time totals; #502 and #503 own retention and execution attribution. Do not pull ordinary Session deletion or a new statistics store into this UI slice.
Metadata
Metadata
Assignees
Labels
Type
Projects
- StatusShow more project fieldsDone
Activity
DoodleBears commentedon Sep 30, 2026
Agent work claim
codex/local/01a0e445-0c0f-70e1-bad4-fd99c8cfaa21(not a DSH Session)codex/592-coordinated-model-usageDoodleBears commentedon Sep 30, 2026
Agent work outcome
codex/local/01a0e445-0c0f-70e1-bad4-fd99c8cfaa2113 remaining items
DoodleBears commentedon Sep 30, 2026
Agent work claim — Compact usage refinement
codex/local/01a0e445-0c0f-70e1-bad4-fd99c8cfaa21codex/592-coordinated-model-usagefeat(profile): compact usage rows and disclose token details on hover
Merge main into coordinated model usage branch
docs(profile): align usage range defaults with Human QA
DoodleBears commentedon Sep 30, 2026
Agent work outcome — Compact usage rows
codex/local/01a0e445-0c0f-70e1-bad4-fd99c8cfaa21d310faa07a5cb7b2a4598bf964b6466e131f9e13; merged main headacea1beff5a122579212127293c4ff522b486b0e.d786ddbd6f177b88d3fca18a5035e1b58ef36041also passes complete CI: https://github.com/BotHarness/BotHarness/actions/runs/36782757601acea1beand raised one valid outdated Chinese default-range sentence.d786ddbfixes both language versions; CodeRabbit explicitly confirmed the fix and the review thread is resolved. Final incremental review throughd786ddbpassed with no actionable comments (run34e4988d-a170-4288-abc9-e496d37bd368).feat(profile): coordinate compact model and provider usage charts (#606)
DoodleBears commentedon Oct 1, 2026
Agent work completed: codex/local/01a0e445-0c0f-70e1-bad4-fd99c8cfaa21. Human accepted the compact model/provider rows and hover details and authorized merge. PR #606 merged as f70f544; issue closed. Eight real DSH screenshots, 41 focused tests, complete CI and final CodeRabbit review passed; the stale documentation default was fixed and confirmed.