Skip to content

feat: align the default chat view's work log with Narrative - #2102

Merged
Douglasymlai merged 1 commit into
mainfrom
fix/reland-legacy-work-log
Oct 25, 2026
Merged

Douglasymlai merged 1 commit into
mainfrom
fix/reland-legacy-work-log

Conversation

@Douglasymlai

Copy link
Copy Markdown
Contributor

Relands #2101 on main. #2101 was merged into its stacked base branch after #2100 had already been merged, so its change never reached main. This PR carries the identical change on top of current main (split out of #1958).

Problem

In the default chat view, the work log under each task described tool calls differently from the Narrative view. Rows read like Browser Toolkit · Browser visit page · 2 events or showed the raw argument text, they had no icon, and the agent and work-log chevrons were always visible. The final answer's text also sat flush against the edge while the rest of the conversation was inset.

Cause

The Narrative view's row titles, subjects and icons were only used by the event-based timeline. The default chat view still built its own Toolkit · Method titles.

Fix

  • Work-log rows in the default chat view now use the same titles as Narrative, written in the tense of the outcome: "Ran npm test", "Running npm run build", "Searched for OpenAI updates", "Browsed https://example.com/two", "Updated the plan". Rows that already have their own words (for example asking you a question) keep them.
  • Each row shows the same toolkit or action icon as Narrative.
  • Consecutive calls of the same tool still merge into one row with "· N events". The latest call names the group, as in Narrative.
  • The outer "Working on tasks for / Worked for" header opens while a task runs and folds when it finishes. If you open or close it yourself, it stays that way.
  • Row, agent and header chevrons appear on hover or keyboard focus, and always on touch screens.
  • The final answer's text uses the same inset as the rest of the conversation. Its Copy and feedback buttons, the file attachments, the "Show more files" toggle and the Session side panel icons now use the shared icon sizes.
  • The design guide gains a short "Chat composition" section describing these insets.

Known limit: the default chat view only knows whether a call is running or done. A call that failed, or was cut short when a task was stopped, still reads as done here. Narrative shows those states.

Testing

In the app (macOS, default chat view), with Tasks that used the terminal, web search, a web fetch, file writes and Stop:

  • Rows: running and finished rows read like Narrative ("Running …", "Ran …", "Searched for …", "Wrote …") with icons. Three searches in a row merge into "Searched for cuttlefish · 3 events".
  • Header: the "Working on tasks for / Worked for" header is open while running and folds when the Task ends. A header or agent group opened by hand stays open after later Tasks finish.
  • Chevrons: hidden at rest, shown on hover and keyboard focus, with a visible focus ring.
  • Answer and files: the final answer uses the same inset as the rest of the chat. With eight written files, "Show more files" expands the list and the files open in preview. Icons in the answer, attachments and Activity panel use the shared sizes.
  • Theme and language: light and dark themes. German and Japanese, including switching language while the Session is open: existing rows update.
  • Fixed in this PR after testing:
    • tool formatter text splitting repeated-call groups;
    • two German duration headers with the wrong wording;
    • row titles not updating on a live language change.
  • Known limit, as described above: a stopped call still reads as done in this view.
  • Not checked in the app: touch screens without hover.

Automated:

  • Vitest on ChatBox, Session, TaskWorkLogAccordion and the new live-language test: all pass. New tests cover:
    • outcome-tense titles for single and grouped calls;
    • row icons;
    • hover-only chevrons;
    • header folding without overriding a manual choice;
    • German headers;
    • titles updating on a language change.
  • npm run type-check, npm run check:i18n, npm run check:design-tokens, ESLint and Prettier: pass.
  • Re-run on current main for this PR: Vitest on ChatBox, Session, TaskWorkLogAccordion and the live-language test (1001 passed), plus type-check, check:i18n, check:design-tokens, ESLint and Prettier.

Testing Evidence

  • I have included human-verified testing evidence in this PR.
  • This PR includes frontend/UI changes, and I attached screenshot(s) or screen recording(s). (screenshots to be attached)
  • No frontend/UI changes in this PR.

@Douglasymlai Douglasymlai self-assigned this Oct 25, 2026
@Douglasymlai
Douglasymlai marked this pull request as ready for review October 25, 2026 12:29
@Douglasymlai
Douglasymlai merged commit 4d659f4 into main Oct 25, 2026
12 checks passed
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