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:
@@ -49,6 +49,18 @@ async function main() {
|
||||
await applySchema(sql);
|
||||
app.log.info('database schema applied');
|
||||
|
||||
const swept = await sql<{ count: string }[]>`
|
||||
WITH swept AS (
|
||||
UPDATE messages SET status = 'failed'
|
||||
WHERE status = 'streaming' AND created_at < NOW() - INTERVAL '5 minutes'
|
||||
RETURNING id
|
||||
) SELECT count(*)::text AS count FROM swept
|
||||
`;
|
||||
const sweptCount = Number(swept[0]?.count ?? 0);
|
||||
if (sweptCount > 0) {
|
||||
app.log.info({ sweptCount }, 'swept stale streaming messages to failed');
|
||||
}
|
||||
|
||||
// v1.11.3: tell the model-context cache where llama-swap lives. Cache
|
||||
// lookups go to ${LLAMA_SWAP_URL}/upstream/<model>/props to read
|
||||
// default_generation_settings.n_ctx — the value persisted as messages.ctx_max.
|
||||
|
||||
Reference in New Issue
Block a user