Add a stream error event type to the shared schema and wire runtime handling to
convert provider payloads into a concise string format. When a stream error is
seen, emit a Run error event, preserve partial output, and stop the turn to
avoid additional tool execution.
In the renderer, display errors inline as assistant messages with destructive
styling and trigger a toast for immediate visibility. Include error events when
loading run history so prior failures are visible.
- improve how chat history is shown on UI
- add time stamp to past chats
- imrove icon look and placement in title bar
feat:
- add new chat icon to title bar
The renderer previously filtered run events by the active runId, which meant
run-processing-start for a newly created or non-active run could be dropped.
That caused the thinking indicator to miss on subsequent chats and lost live
streaming context when switching between runs.
This change keeps only minimal background state:
- a Set of runIds currently processing (driven by run-processing-start/end)
- a per-run streaming buffer for assistant/reasoning deltas
All run events are now observed; non-active runs only update the minimal
structures. When a run is selected, its conversation is loaded as before and
any in-progress buffer is used to seed the streaming UI. Buffers are cleared
on final assistant message, run end, stop, or error.
The chat history list now shows a processing indicator per run.
Tests:
- cd apps/x && npm run deps
- cd apps/x/apps/renderer && npm run build
- Resolve workspace-relative and /tmp paths in shell:openPath and shell:readFileBase64 IPC handlers
- Update assistant instructions to only use filepath blocks for files that already exist
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Introduced a Popover component to display sync activity and logs.
- Increased the maximum sync events from 30 to 1000.
- Added a mapping for service labels to improve user feedback on active services.
- Refactored state management to track active services and log events more effectively.
Render filepath code blocks as rich, clickable cards with three variants:
knowledge files (navigate to editor), audio files (inline play/pause),
and system files (open externally). Adds shell:openPath and
shell:readFileBase64 IPC channels, FileCardProvider context, and
Streamdown pre override.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>