v1.12.1: rich status indicator + server-side workspace pane sync
Status indicator (StatusDot): drops the flat amber pulse for a richer set of states — orbiting amber for streaming, spinning sky ring for tool_running, static violet for waiting_for_input, plus the existing idle/error. Backend chat_status frame widens from 'working|idle|error' to discriminate streaming vs tool execution vs paused for user input. Workspace pane sync: pane layout moves from per-device localStorage to server-side sessions.workspace_panes jsonb. PATCH /api/sessions/:id/workspace broadcasts session_workspace_updated on the user channel for cross-device live sync. Echo dedup via JSON comparison so the round-trip frame doesn't loop. Legacy localStorage seeds the server on first hydrate, then is deleted. Deprecated session_panes table dropped. Resilience: startup sweep marks any stale 'streaming' message older than 5 minutes as 'failed' so v1.12.0-style hung rows clear on container restart. useWorkspacePanes gains validatePanes() to prune dead chatId references from saved pane state when the chat list lands. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -41,6 +41,12 @@ export interface SessionUpdatedEvent {
|
||||
updated_at: string;
|
||||
}
|
||||
|
||||
export interface SessionWorkspaceUpdatedEvent {
|
||||
type: 'session_workspace_updated';
|
||||
session_id: string;
|
||||
workspace_panes: import('@/api/types').WorkspacePane[];
|
||||
}
|
||||
|
||||
export interface SessionLoadedEvent {
|
||||
type: 'session_loaded';
|
||||
session_id: string;
|
||||
@@ -131,7 +137,7 @@ export interface ProjectUpdatedEvent {
|
||||
export interface ChatStatusEvent {
|
||||
type: 'chat_status';
|
||||
chat_id: string;
|
||||
status: 'working' | 'idle' | 'error';
|
||||
status: 'streaming' | 'tool_running' | 'waiting_for_input' | 'idle' | 'error';
|
||||
at: string;
|
||||
reason?: ErrorReason;
|
||||
}
|
||||
@@ -143,6 +149,7 @@ export type SessionEvent =
|
||||
| SessionCreatedEvent
|
||||
| SessionDeletedEvent
|
||||
| SessionUpdatedEvent
|
||||
| SessionWorkspaceUpdatedEvent
|
||||
| SessionLoadedEvent
|
||||
| OpenFileInBrowserEvent
|
||||
| AttachChatFileEvent
|
||||
|
||||
Reference in New Issue
Block a user