Skip to content

v1.5.4

Choose a tag to compare

@github-actions github-actions released this 14 May 15:46
· 38 commits to main since this release

PrimeCode v1.5.4

Highlights

  • Server reconnection: Implemented automatic server reconnection logic in OpenCodeExecutor with health monitoring escalation in ChatProvider — if the server drops, PrimeCode now detects the failure and re-establishes the connection without user intervention.
  • Canonical SSE event pipeline: Removed the backendRuntimeStatus side-channel entirely. Session status now flows through a single canonical path: SSE events → opencodeEvent → eventReducer → sessionStatus. Eliminates race conditions and stuck-state bugs.
  • Session subtree processing: Processing state is now derived across the full parent/child session tree (via collectSessionSubtreeIds), not a single session flag. Queued follow-ups flush through the full session lineage when child work completes.
  • File ownership tracking: Extraction of owned file paths from mutating tool parts, filtering out files owned by sibling sessions from diffs — only relevant changes are displayed per session.

Stability & Fixes

  • Fixed infinite re-render loop (React error #185) caused by getSessionRuntimeStatus() returning a new object reference on every selector call — now uses stable constant references.
  • Startup no longer calls instance.dispose() on the OpenCode server, which was destroying all active sessions (including children) on every extension reload.
  • Removed destructive killZombieOpenCodeProcesses — it could kill servers used by other VS Code windows.
  • Fixed abort propagation: stop button now always aborts the requested session and any known processing children, regardless of child status reflection in the store.
  • Fixed session stability after reconnect by bringing up the backend status bridge before webview hydration, with defensive status re-sync after hydrate/abort.
  • Handle early session.idle while awaitingBackendBusy to prevent stuck processing state.
  • Fixed agent ordering — preserve runtime agent order from OpenCode API instead of sorting alphabetically.
  • Auto-scroll no longer triggers user-detach on programmatic scrolls.

Architecture & Refactoring

  • Migrated permission API from deprecated respond() to reply() with explicit sessionId passing instead of activeSessionId fallback.
  • MCP management reworked: fetches tools/resources via experimental API, adds hot-add and targeted connect/disconnect to avoid full instance dispose on server changes.
  • Config file changes use soft reload (cache clear + resync) instead of instance dispose. Only explicit user actions trigger dispose.
  • Simplified OutboundBridge by removing unused queueUpdate method.
  • Removed pendingPartDeltas from session store — event reducer no longer manages unnecessary pending delta state.
  • Enhanced chatStore with queued message management: enqueue, dequeue, cancel, and flush through eventRuntime.
  • Improved tool grouping logic to prevent absorption of messages containing system reminders or multiline summaries.

UX & UI

  • GenerationStatus crossfade transitions: Smooth crossfade animations between generation states with stable tool activity handling during processing.
  • ErrorBoundary redesign: Centered notification layout with copy-to-clipboard functionality for error details.
  • Live tool output streaming: Bash/MCP output streams during execution via state.metadata.output with auto-expanding tool card body while running.
  • Elapsed timer restore: Added fallbackMs to useElapsedTimer for restored completed tools showing correct elapsed time.
  • CopyButton extraction: Reusable CopyButton component with copy support added to task results.
  • Agent toolbar: Shows effective agent (configured/primary) in toolbar; handles agent names with spaces; syncs sessionAgent from first assistant message.
  • SimpleTool animations: Smoother transitions and animations for tool status changes.
  • Edit message now validates agent against current resources before dispatch, falling back to default instead of sending invalid runtime identities.

Tests

  • Added tests for collectSessionSubtreeIds, queued message flush, file ownership extraction, tool grouping edge cases, and reconnect orchestration.
  • Extended BackendStatusBridge, eventRuntime, opencodeRuntime, and chatStore test suites with reconnect and subtree scenarios.
  • Added projector.test.ts for derived state calculations and fileOwnership.test.ts for ownership logic.
  • Added ToolHandler permission policy tests with project config hydration.