Skip to content

feat: unify dashboard observability and provider UX - #106

Merged
pacphi merged 2 commits into
mainfrom
feat/observability-dashboard-ux
Aug 4, 2026
Merged

feat: unify dashboard observability and provider UX#106
pacphi merged 2 commits into
mainfrom
feat/observability-dashboard-ux

Conversation

@pacphi

@pacphi pacphi commented Aug 4, 2026

Copy link
Copy Markdown
Owner

Summary

This PR turns the former Live surface into a provider-consistent Observability experience, reorganizes the dashboard into three stable product areas, fixes session identity/provenance reporting, and brings the architecture and user documentation in line with the implementation.

Dashboard information architecture

  • Reduce the primary navigation to three durable areas:
    • Overview
    • Usage
    • Observability
  • Move Summary, Hosts & Routing, Providers, Runtime, and Intelligence into a fixed, left-aligned Overview secondary rail.
  • Keep Usage secondary tabs—Scorecard, Limits, Findings, Sessions, and Transcript—in the same stable rail position.
  • Present Observability Live and History as the same secondary-tab pattern used elsewhere.
  • Add a heading and concise explanation to every dashboard view.
  • Introduce canonical hierarchical routes:
    • #overview/summary
    • #overview/hosts
    • #overview/providers
    • #overview/runtime
    • #overview/intelligence
    • #usage/score
    • #usage/limits
    • #usage/findings
    • #usage/sessions
    • #usage/transcript
    • #observability/live
    • #observability/history
  • Preserve arrow-key navigation and stable tab placement across viewport sizes.

Observability navigation and modes

  • Rename the Live product area to Observability throughout UI, routes, docs, ADRs, and DDD references.
  • Separate current evidence from retained evidence:
    • Live lists only projects and root sessions that are currently present.
    • History lists retained projects and sessions without borrowing current-state semantics.
  • Make historical maps inert:
    • no green current-work dots
    • no active pulsation
    • no moving flow dashes
    • no follow affordance
  • Reserve playback controls for History/review and dock them beneath the map so they cannot obscure graph content.
  • Add 5x and 10x playback speeds alongside the existing review speeds.
  • Preserve deterministic seek, play, pause, review-current-session, and Resume live behavior.

Agent Activity map and interaction design

  • Standardize Claude Code, Codex, and OpenCode presentation around one visual grammar where the available evidence supports it.
  • Distinguish process presence, meaningful current work, in-flight operations, and static historical relationships.
  • Add long-running presence breathing and current-work animation without implying activity in History.
  • Keep active flow dashes tied to a specific observed operation.
  • Improve automatic layout to reduce overlap among actors, operations, labels, and callouts.
  • Keep Fit, Focus, Reset, zoom, and Help controls in compact segmented groups.
  • Support dragging and pinning individual actors and operation cards.
  • Preserve pins and the user camera across live deltas.
  • Reset either an individual placement or the full automatic layout.
  • Add evidence-aware rollover descriptions and persistent selection details.
  • Add a consultable Help/Legend covering actors, workers, operations, motion, Git counts, Live, and History semantics.
  • Fix the Legend Close action and return keyboard focus to the Help trigger.
  • Replace internal or synthetic labels such as <synthetic> with user-facing activity language.

Session Stream expansion behavior

  • Add an upper-right chevron to collapse and restore Session Stream.
  • Collapse to a narrow, persistent restore rail rather than removing the panel entirely.
  • Let Agent Activity reclaim the released width on desktop.
  • Use a compact collapsed row in stacked/tablet layouts.
  • Preserve transcript and graph EventSource connections while collapsed.
  • Preserve transcript selection, unread state, graph camera, and pinned positions.
  • Persist the user preference locally.
  • Add accessible labels, aria-expanded, live-region feedback, focus treatment, and reduced-motion behavior.

Session hierarchy and provider consistency

  • Preserve native Codex worker-thread hierarchy from authoritative thread and spawn-edge evidence.
  • Represent Claude sidechains as nested worker views without fabricating separate native sessions.
  • Keep OpenCode within the common session shell while remaining honest about capabilities its source does not expose.
  • Keep host, inference provider, and model as independent axes throughout projection and presentation.
  • Use official OpenAI/Codex and OpenCode O marks, with authoritative adjacent text for accessibility and disambiguation.
  • Remove the incorrect generic Codex target icon.

Live evidence, workspace context, and history

  • Add native transcript discovery for supported live hosts.
  • Capture safe workspace facts:
    • repository/workspace
    • working directory when meaningful
    • branch
    • tracked added/deleted line counts
    • changed file count
    • capture time and confidence
  • Persist workspace captures for retained History inspection.
  • Add workspace facts to selected-session details and transcript context.
  • Remove redundant project names and unhelpful Directory: repo root text.
  • Render branches with a branch SVG and concise branch name.
  • Clarify that working-tree line counts describe the captured tree and are not automatically attributable to one session.
  • Improve process/session correlation so stale or unrelated Codex sessions are not presented as recent activity for a Claude-only project.

Usage session identity and provenance

  • Fix the malformed claudeunknown / codexunknown pills.
  • Render the execution host as a clean, independent badge.
  • Expand session details to show:
    • execution host
    • inference provider
    • model(s)
    • classification basis and confidence
    • token split
    • tools
    • flags/worktree
  • Treat empty and literal unknown values as missing evidence rather than user-facing identity.
  • Show Not recorded (not established by source) when a historical source did not establish the inference provider.
  • Do not infer an inference provider from host or model names.
  • Ingest Codex session_meta.model_provider as observed provider evidence.
  • Bump the Usage index schema to v8 so cached Codex rows are safely re-derived.
  • Retain OpenCode provider identity only when its native data supplies it.
  • Keep Claude historical provider unknown when the transcript does not establish whether inference came from Anthropic, Bedrock, Vertex, Foundry, a gateway, or another endpoint.

Documentation and architecture

  • Add a user-oriented dashboard interaction guide in docs/DASHBOARD.md.
  • Replace docs/LIVE-SESSIONS.md with docs/OBSERVABILITY.md.
  • Rename and update the Observability DDD document and context map.
  • Rename and update ADR-0012 for Observability.
  • Update ADR-0005, ADR-0009, ADR-0016, ADR-0021, and ADR indexes as living plans with current status/date notes.
  • Document:
    • the three-area information architecture
    • canonical routes
    • Live versus History semantics
    • Session Stream collapse behavior
    • host/provider/model provenance rules
    • Claude/Codex/OpenCode capability differences
    • animation and historical-inertness rules
    • workspace capture and Git-count limitations
  • Refresh transcript and scorecard source citations after the Usage schema change.

Quality and regression coverage

  • Extend unit and integration coverage for:
    • provider provenance and Codex model_provider
    • thread-ledger and worker relationships
    • live adapters and projection behavior
    • workspace/Git capture persistence
    • Live/History separation
    • historical inertness
    • Help/Legend behavior
    • official provider marks
    • drag, pin, reset, fit, pan, zoom, and camera persistence
    • Session Stream collapse/restore and connection preservation
    • responsive layouts
    • 5x/10x playback
    • stable primary/secondary navigation
    • Usage identity expansion and missing-evidence language
  • Validation completed locally:
    • pnpm run check
    • pnpm run test:ui
    • 193 browser/UI checks passed
    • no console errors
    • no failed browser requests
    • git diff --check

@pacphi
pacphi merged commit 32aa611 into main Aug 4, 2026
11 checks passed
@pacphi
pacphi deleted the feat/observability-dashboard-ux branch August 4, 2026 15:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant