Skip to content

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

Merged
Douglasymlai merged 4 commits into
feat/narrative-task-logfrom
feat/legacy-work-log
Oct 25, 2026
Merged

Douglasymlai merged 4 commits into
feat/narrative-task-logfrom
feat/legacy-work-log

Conversation

@Douglasymlai

@Douglasymlai Douglasymlai commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Split out of #1958. Stacked on #2100: please merge after #2100, then retarget this PR to main.

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.
  • CI starts once this PR's base is main (after feat: add the Narrative task log and Information density / Dev mode controls #2100 merges).

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 24, 2026
@Douglasymlai
Douglasymlai force-pushed the feat/legacy-work-log branch 4 times, most recently from 3b5a46e to 11fd6c7 Compare October 24, 2026 15:23
@Douglasymlai
Douglasymlai marked this pull request as ready for review October 24, 2026 16:44
@Douglasymlai
Douglasymlai force-pushed the feat/narrative-task-log branch from c5adc16 to 9bf901a Compare October 25, 2026 11:57
@Douglasymlai
Douglasymlai merged commit 00d3903 into feat/narrative-task-log Oct 25, 2026
1 check 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