Skip to content

feat(workspace): show completed turn runtime icons - #613

Merged
ewen-poch merged 5 commits into
mainfrom
feat/completed-agent-model-icons
Aug 2, 2026
Merged

feat(workspace): show completed turn runtime icons#613
ewen-poch merged 5 commits into
mainfrom
feat/completed-agent-model-icons

Conversation

@ewen-poch

@ewen-poch ewen-poch commented Aug 2, 2026

Copy link
Copy Markdown
Member

Problem

Completed-message footers do not identify the ACP framework or model that produced a turn, and icons alone are not explicit enough when reviewing historical messages.

Proposed change

  • Resolve each completed message through its existing Conversation Graph runtime segment.
  • Reuse the Settings framework and provider icons beside Usage in the token popover.
  • Add muted Agent and Model lines at the bottom of the popover, following the Context window diagnostics style.
  • Render each label or icon only when its current display value can be resolved; incomplete or deleted historical metadata stays hidden.
  • Keep persisted data unchanged: sessions continue to store only framework/backend/model identifiers.

Scope and non-goals

  • No persistence schema, IPC, ACP runtime, dependency, or settings data-model changes.
  • No Unknown placeholder or raw internal identifier is exposed for incomplete historical records.

Acceptance criteria and validation

All checks ran after the final material edit.

  • Runtime labels and missing historical values -> npm test -- src/renderer/src/pages/workspace/WorkspaceMessageItem.mentions.test.tsx -> 20 tests passed.
  • Renderer and shared type contracts -> npm run typecheck -> passed.
  • Repository lint -> npm run lint -> passed with 19 pre-existing warnings and 0 errors; changed files report no warnings.
  • Regression suite -> npm test -> passed.

Uncovered risk: no new pixel-level visual-regression snapshot was added; the interaction tests verify the popover content, icon source, accessible hover labels, and omission behavior.

Review focus

Please confirm that resolving runtime identity from message.runtimeSegmentId preserves historical attribution when Settings change, and that the muted Agent and Model lines provide enough clarity without making the completed-message footer noisier.

Resolve each message's framework, provider, and model from its existing runtime segment so historical footer metadata stays tied to the turn that produced it.
@github-actions github-actions Bot added the enhancement New feature or request label Aug 2, 2026
@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown

Codex Review

Verdict: mergeable

No actionable findings.

Summary: No concrete merge-blocking defects found. Static inspection only; branch and pull request title prechecks are valid.

@github-actions github-actions Bot added the ready-to-merge All completed AI reviewers found this pull request mergeable. label Aug 2, 2026
@github-actions github-actions Bot removed the ready-to-merge All completed AI reviewers found this pull request mergeable. label Aug 2, 2026
@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown

Codex Review

Verdict: needs changes

[P2] Do not treat synthesized legacy segments as authoritative runtime identity

src/renderer/src/pages/workspace/WorkspaceMessageScroller.tsx:564

Impact: Legacy sessions without a conversation graph are synthesized with a default claude-code runtime segment. This code now passes that placeholder to completed messages, causing old responses with no stored framework identity to be labeled as Claude Code.

Recommendation: Mark compatibility-generated segments as metadata-unavailable, or gate runtimeIdentity on explicit persisted per-turn runtime metadata before rendering framework/provider details.

[P2] Subscribe to settings while the usage popover is open

src/renderer/src/pages/workspace/WorkspaceMessageItem.tsx:147

Impact: The popover reads settings with getState() but does not subscribe. If providers/frameworks load, refresh, are renamed, or are deleted while the popover remains open, its runtime labels and icons stay stale until it is reopened.

Recommendation: Resolve metadata in a child mounted with the popover and subscribe to the relevant settings selectors, preserving the current performance isolation from the full transcript.

Summary: The PR mislabels legacy messages and can display stale runtime metadata after settings updates.

@ewen-poch

Copy link
Copy Markdown
Member Author

Addressed both findings in 98141ff:

  • Synthesized legacy runtime segments no longer expose the fallback Claude Code identity. Explicitly persisted backend/model values are still retained independently.
  • Framework/provider lookup now uses dormant selectors that subscribe while the popover is open, so Settings changes refresh immediately without causing transcript updates while it is closed.

Validation: the focused Workspace tests pass (54/54), lint and typecheck pass. The full suite passed 9,756 tests with one unrelated timeout; its isolated retry passed 22/22.

@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown

Codex Review

Verdict: mergeable

No actionable findings.

Summary: Static inspection found no concrete merge-blocking defects in the pull request changes.

@github-actions github-actions Bot added the ready-to-merge All completed AI reviewers found this pull request mergeable. label Aug 2, 2026
@ewen-poch

Copy link
Copy Markdown
Member Author

Added compact Settings-reused icons before the Agent and Model detail labels in 4389280. Both marks render at approximately 10px inside a 12px row slot; existing omission behavior remains unchanged when metadata or its configured icon cannot be resolved.

Validation: focused test 20/20, full suite 9,757/9,757, typecheck passed, and lint completed with the same 19 pre-existing warnings and no errors.

@github-actions github-actions Bot removed the ready-to-merge All completed AI reviewers found this pull request mergeable. label Aug 2, 2026
@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown

Codex Review

Verdict: mergeable

No actionable findings.

Summary: Static inspection found no concrete merge-blocking defects introduced by this pull request.

@github-actions github-actions Bot added the ready-to-merge All completed AI reviewers found this pull request mergeable. label Aug 2, 2026
@ewen-poch

Copy link
Copy Markdown
Member Author

Added the selected Lucide CircleGauge SVG before the message-footer Usage label in 480e300. It renders at 12px, inherits the footer text color, remains decorative for accessibility, and keeps the existing trigger interaction unchanged.

Validation: focused test 20/20, full suite 9,757/9,757, typecheck passed, and lint completed with the same 19 pre-existing warnings and no errors.

@github-actions github-actions Bot removed the ready-to-merge All completed AI reviewers found this pull request mergeable. label Aug 2, 2026
@github-actions

github-actions Bot commented Aug 2, 2026

Copy link
Copy Markdown

Codex Review

Verdict: mergeable

No actionable findings.

Summary: No concrete merge-blocking defects found in the reviewed changes.

@github-actions github-actions Bot added the ready-to-merge All completed AI reviewers found this pull request mergeable. label Aug 2, 2026
@ewen-poch
ewen-poch merged commit f8d0ace into main Aug 2, 2026
23 checks passed
@ewen-poch
ewen-poch deleted the feat/completed-agent-model-icons branch August 2, 2026 09:19
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request ready-to-merge All completed AI reviewers found this pull request mergeable.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant