Add a ChatGPT-style conversation workspace with steps, artifacts, and tool calls #53

Open
opened 2026-08-24 09:55:15 +00:00 by kayg · 0 comments
Owner

Problem

The current transcript renders user text, assistant Markdown with fenced code blocks, and system notes.
It has no conversation-step rail, artifacts panel, or structured tool-call presentation.
Users cannot scan work steps, inspect produced artifacts, or understand tool activity at a glance.

Reference

Use this reference for the interaction model:
https://img.kayg.org/u/mgxC7I.png

Scope

Left conversation-step rail

  • Show an ordered rail of conversation steps on the left side of the transcript.
  • Slide the rail into view and retract it without losing the current conversation or transcript position.
  • Highlight the step that contains the current transcript position.
  • Let the user select a step and move the transcript to that step.
  • Keep the rail understandable with keyboard navigation and VoiceOver.

Right artifacts panel

  • Show an artifacts panel on the right side of the transcript when the conversation has artifacts.
  • List each artifact with a clear name, type, and relationship to its conversation content.
  • Let the user select an artifact and inspect its content without leaving the conversation.
  • Let the user open and close the panel without losing transcript position or step selection.
  • Keep the transcript readable when no artifacts exist.

Structured tool-call rendering

  • Render each tool call as a distinct structured item, not as ordinary assistant Markdown.
  • Show the tool name, request details, running state, result, and failure state in a clear order.
  • Make long request and result details expandable and collapsible.
  • Distinguish an active call, a completed call, and a failed call without relying on color alone.
  • Keep tool-call content associated with the assistant step that produced it.

Native-first constraints

  • Use standard SwiftUI and AppKit components for the rail, panel, and tool-call items.
  • Use system materials and system controls for surfaces, selection, disclosure, and transitions.
  • Do not add a hand-rolled surface without explicit approval and measured need.
  • Match existing native surfaces instead of introducing custom geometry or duplicate system controls.

Performance constraints

  • Keep transcript rendering within the existing bounded render window.
  • Keep chat activation cache-first and perform no network request during activation.
  • Let background sync update stored data without mutating the visible transcript.
  • Do not rebuild the full transcript when the rail, artifacts panel, or tool-call state changes.
  • Keep panel updates scoped to the affected step, artifact, or tool call.

Open questions

  • How should steps map to existing message identities?
  • Do artifacts need persistence across activation, restart, and synchronization?
  • How do tool calls stream while a response is in progress?
  • How should the rail and artifacts panel behave at narrow window widths?
  • Which artifact types require native preview support at launch?
  • What is the default panel visibility for a conversation with steps or artifacts?

Acceptance criteria

  • A conversation with multiple steps shows an ordered left rail, and the active step is visible.
  • Selecting a rail step moves the transcript to the related content and preserves the conversation selection.
  • The rail slides into view and retracts through native motion without rebuilding the full transcript.
  • A conversation with artifacts shows a right panel with each artifact name and type.
  • Selecting an artifact displays its content while the transcript remains available.
  • Opening or closing the artifacts panel preserves transcript position and step selection.
  • A tool call shows its name, request, status, result, or failure as structured content.
  • A user can expand and collapse long tool-call details.
  • Active, completed, and failed tool calls remain distinguishable without color alone.
  • Activation reads the cached conversation without a network request.
  • Background synchronization does not change the visible transcript while the user reads it.
  • Step, artifact, and tool-call updates do not trigger a full-transcript rebuild.
  • VoiceOver and keyboard users can identify and operate the rail, artifacts panel, and tool-call disclosure controls.
## Problem The current transcript renders user text, assistant Markdown with fenced code blocks, and system notes. It has no conversation-step rail, artifacts panel, or structured tool-call presentation. Users cannot scan work steps, inspect produced artifacts, or understand tool activity at a glance. ## Reference Use this reference for the interaction model: https://img.kayg.org/u/mgxC7I.png ## Scope ### Left conversation-step rail - Show an ordered rail of conversation steps on the left side of the transcript. - Slide the rail into view and retract it without losing the current conversation or transcript position. - Highlight the step that contains the current transcript position. - Let the user select a step and move the transcript to that step. - Keep the rail understandable with keyboard navigation and VoiceOver. ### Right artifacts panel - Show an artifacts panel on the right side of the transcript when the conversation has artifacts. - List each artifact with a clear name, type, and relationship to its conversation content. - Let the user select an artifact and inspect its content without leaving the conversation. - Let the user open and close the panel without losing transcript position or step selection. - Keep the transcript readable when no artifacts exist. ### Structured tool-call rendering - Render each tool call as a distinct structured item, not as ordinary assistant Markdown. - Show the tool name, request details, running state, result, and failure state in a clear order. - Make long request and result details expandable and collapsible. - Distinguish an active call, a completed call, and a failed call without relying on color alone. - Keep tool-call content associated with the assistant step that produced it. ## Native-first constraints - Use standard SwiftUI and AppKit components for the rail, panel, and tool-call items. - Use system materials and system controls for surfaces, selection, disclosure, and transitions. - Do not add a hand-rolled surface without explicit approval and measured need. - Match existing native surfaces instead of introducing custom geometry or duplicate system controls. ## Performance constraints - Keep transcript rendering within the existing bounded render window. - Keep chat activation cache-first and perform no network request during activation. - Let background sync update stored data without mutating the visible transcript. - Do not rebuild the full transcript when the rail, artifacts panel, or tool-call state changes. - Keep panel updates scoped to the affected step, artifact, or tool call. ## Open questions - How should steps map to existing message identities? - Do artifacts need persistence across activation, restart, and synchronization? - How do tool calls stream while a response is in progress? - How should the rail and artifacts panel behave at narrow window widths? - Which artifact types require native preview support at launch? - What is the default panel visibility for a conversation with steps or artifacts? ## Acceptance criteria - A conversation with multiple steps shows an ordered left rail, and the active step is visible. - Selecting a rail step moves the transcript to the related content and preserves the conversation selection. - The rail slides into view and retracts through native motion without rebuilding the full transcript. - A conversation with artifacts shows a right panel with each artifact name and type. - Selecting an artifact displays its content while the transcript remains available. - Opening or closing the artifacts panel preserves transcript position and step selection. - A tool call shows its name, request, status, result, or failure as structured content. - A user can expand and collapse long tool-call details. - Active, completed, and failed tool calls remain distinguishable without color alone. - Activation reads the cached conversation without a network request. - Background synchronization does not change the visible transcript while the user reads it. - Step, artifact, and tool-call updates do not trigger a full-transcript rebuild. - VoiceOver and keyboard users can identify and operate the rail, artifacts panel, and tool-call disclosure controls.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
kayg/hermternal-apple#53
No description provided.