Skip to content

Releases: RyderAsKing/PiChamber

PiChamber v0.8.2

Choose a tag to compare

@github-actions github-actions released this 04 Sep 22:08

[0.8.2] - 2026-09-04

Prompt-template safety, shortcuts, background worktree tasks, and reliability fixes.

  • Prompt template edits no longer kill sessions. Creating, updating, or deleting a prompt template no longer calls runtimeRegistry.disposeAll() and no longer fails with SESSION_BUSY while a runtime is streaming. Idle runtimes pick up the change through Pi session.reload() in place (session file, ID, and transcript untouched); busy runtimes defer until agent_settled/compaction completion. Global changes fan out to all runtimes, project changes stay scoped to that directory, and committed files return immediately while activation is deferred (session-daemon, extension-bridge, prompt-operations, docs/research/prompt-template-runtime-reload.md).
  • Terminal and dictation WebSockets survive restarts (#92). oc_url_token minted at /auth/url-token is now an EncryptJWT (dir/A256GCM) sealed with a key derived from the persisted JWT secret instead of an in-memory map, so a server restart no longer invalidates a token the browser may still use for /api/terminal/ws or /api/stt/ws. Global sign-out still rotates the secret and invalidates outstanding tokens (ui-auth).
  • Shortcuts pruned, folder cycling added. Removes dead bindings (go-to-line, terminal-expanded, toggle-files, prompt-navigator toggle, right-sidebar git/files tabs, services-tab cycle) and their Header/FilesView/keyboard/Electron-menu handlers, renames toggle_right_sidebar to open_right_sidebar, and adds cycle_session_folder / cycle_draft_folder backed by a new folderCycle module with unit tests. HelpDialog widens to Settings-window size with a two-column grid (shortcuts, folderCycle, useKeyboardShortcuts, HelpDialog, KeyboardShortcutsSettings, main.mjs).
  • Model picker ignores key repeat (#82). Holding mod+shift+m no longer re-triggers the model selector on auto-repeat keydowns (shouldHandleModelSelectorShortcut).
  • Worktree creation moves to background tasks (#85). New-session worktree sends are non-blocking: a Worktree queued toast fires and a fresh draft opens while the captured prompt materializes on setup-ready. Replaces the global banner with BackgroundTasksMenu (hidden when empty, no count badge, leftmost of the header right-side buttons) plus WorktreeCreationToasts; draft helpers and useWorktreeCreationStore/session-ui-store updated with regression tests.
  • Retention cleanup threads the owning directory (#84). PiSessionStore.archive/remove accept an optional directory and resolve explicit arg → catalog.byId → focused sessions, PiService.deleteSession forwards scope.directory as ?directory=, and useSessionAutoCleanup passes the resolved directory through. Fixes foreign-session INVALID_SESSION rejections when cleanup candidates live outside the focused folder, with client/store/candidate plus server owning/wrong-directory regression tests.
  • Activity and response reveal gates separated (#90). TurnAssistantBlock now gates only final-response messages (filtering activity-rail activityPartIds, tool-only records, and progress text projected to the rail) instead of raw message count, and TurnActivityRail hides the Load earlier activity control while collapsed. Large settled turns still defer behind Load earlier response / Load full response at the 32-message boundary (TurnAssistantBlock, TurnItem, TurnActivityRail).
  • Tool and thinking presentation polish (#86). Expandable tool rows hug context text instead of stretching surface-subtle across the row with duration pinned far-right like static read rows, static skill/read rows normalize to items-center rhythm, and thinking headers share a 20px line box (items-center, h-5, leading-none, preview at markdown size) so mono glyphs no longer drop (ToolPart, StaticToolRow, ReasoningPart).
  • Copy working directory in the header session menu (#87). Adds a copy-CWD action to the header session menu (Header).
  • Dialog copy fixes (#88, #89). Drops stray literal backslashes from quoted names in the Archive session, folder delete, desktop host-switcher toast, git-identity delete, and dev-server error copy (plain quotes matching HeaderRetentionDialog), and makes close-worktree warnings legible in dark and light themes (ConfirmDialogs, SidebarSpacesBar).
  • Relay test reliability (#83). Scripted relay client test finishes async setup before dialing so the loopback socket cannot emit its one-shot open before the listener attaches (host-client.test.js).

PiChamber v0.8.1

Choose a tag to compare

@github-actions github-actions released this 04 Sep 13:30

[0.8.1] - 2026-09-04

Turn activity timeline, authoritative live status, and attachment upload fix release.

  • Unified turn activity timeline. Assistant turns now project reasoning, progress text, and tools through one chronological disclosure rail (TurnActivityRail, TurnWorkingHeader, turnActivityModel, turnActivityDisclosure, useTurnToolsState) with a one-line working header (live status while running, Worked for <duration> when settled) and batched tool reveal that preserves per-message expansion caches. Assistant message body, reasoning, and text parts align with the rail without rebuilding settled siblings during streams.
  • Live activity status is authoritative. useAssistantStatus derives working/thinking/tool phrases from live channels (streaming assistant message, Pi snapshot, session activity timing) instead of persisted history, with normalized tool-name mapping (dotted/suffixed names plus expanded edit/search/fetch/task phrases) and authoritative start time. Temporary fallbacks clear when live state arrives; fetch failure never masquerades as idle.
  • Running-tool shimmer scoped to live verbs (#81). Reintroduces oc-shimmer-verb with CSS-owned transparent fill reusing AgentThinkingLoader gradient stops/keyframes, a reduced-motion static dim fallback, and settled rows on static dim — without restarting sweeps on streaming remounts or touching footer gating (MinDurationShineText, index.css).
  • Refined tool presentation. Compact static rows (StaticToolRow) for navigation tools plus refined expandable ToolPart headers, task summaries, and shared row typography; docs updated (parts/DOCUMENTATION.md).
  • macOS/Windows build fix. Renames case-colliding ChatSurfaceContext.tsx to chatSurfaceProvider.tsx and updates imports so case-insensitive checkouts build.
  • Attachment uploads unblocked on desktop/mobile. CORS preflight now allows x-pichamber-mime for POST /api/pi/attachments, fixing image uploads from pichamber-ui://app, capacitor://localhost, and loopback HMR (cors.js).

PiChamber v0.8.0

Choose a tag to compare

@github-actions github-actions released this 03 Sep 23:39

[0.8.0] - 2026-09-03

Snippets, prompt templates, command catalog, streaming polish, and architecture consolidation release.

  • Snippets and prompt templates are now first-class. Server adds a PiChamber snippets store backend with CRUD plus native commands catalog routes; Pi client and protocol are directory-scoped with snippets and commands. UI adds an ID-based snippets store with directory-scoped UI, a prompt-templates store/page with variable helpers, insert-only draft starters pinned to prompt templates (including one-time built-in text starters on the new-session welcome screen), and separate Snippets vs Prompt-templates settings surfaces with search. Skill mentions render as /skill:name links.
  • Composer slash and skills align with Pi resolution. Adds a shared command catalog with executable invocation identity, clears runtime-scoped catalogs on endpoint reset, and integrates the catalog into the composer. Removes PiChamber-owned slash commands, refines command source filters, and keeps extension-command sessions on the composer-first empty surface. Session titles gain a shared helper with awaiting-first-prompt titles, and awaiting-first-prompt label plus extension toast delivery are fixed.
  • Chat streaming polish (#79, #80). Fluid streaming arrivals with live tool/thinking shimmer and stable footers, stabilized streaming footers and tool states, pixel-grid Dots loader with shimmer status and footer arrival fade, and a copy button next to the composer branch name. Also removes the composer drag ring while keeping drop overlay edges distinct and widens chat columns (60rem base, 76rem wide).
  • Faster, more reliable new-session sends. New-session sends show instant pending feedback, preserve feedback through dispatch, hide empty assistant echo until first renderable content, and speed up dispatch. Attachment drafts survive session switches with files kept consistent through send and render; relay connects fail fast with diagnostics instead of hanging on stall and handle already-connected host state.
  • Mobile and desktop UI polish. Mobile new-session action moves to a floating button at the sidebar bottom, stale mobile header on session switch is fixed, composer changes trigger and header alignment are corrected, working loader type matches the stream with tool-sized timer, desktop header title/metadata collapse to a single line, performance overlay is draggable, model picker drops sorting/footer, and worktree close gains a safe confirmation flow.
  • Reduced surface. Removes legacy desktop SSH instance manager, AI commit generation, deprecated context workflows, obsolete project notes surface, and dead presentation wrappers; docs align with the reduced feature surface. Attachment filename CORS header is allowed for browser uploads.
  • Architecture consolidation preserving behavior. Stacked on pichamber/reduce-size-p1, this is a behavior-preserving consolidation that merges duplicated mobile/desktop Files and Git implementations, decomposes large config, UI, Git, session, persistence, chat, message, tool, and composer modules into focused owners (including shared Files/Git mobile chrome), cleans up the runtime Git contract, and removes shallow/dead wrappers; review fixes restore private relay client URL parameters (v, role, serverId, optional grant) and retryable handshake timeouts with regression tests.

PiChamber v0.7.2

Choose a tag to compare

@github-actions github-actions released this 01 Sep 12:57

[0.7.2] - 2026-09-01

Attachments, worktree, extension, and startup reliability release.

  • Attachments upload before the prompt leaves. Composer picker, drop, and paste now create card previews immediately and stream each file to POST /api/pi/attachments as application/octet-stream with x-pichamber-filename/x-pichamber-mime before prompt dispatch. The composer shows one strip inside the card that wraps on wide layouts and scrolls on narrow layouts; each card reads its own preparing / uploading (determinate progress when the runtime reports bytes) / ready / failed / expired state from input-store.ts with Retry and Remove actions. Send and Queue are gated until every draft attachment is ready (Uploading attachments… / Retry or remove failed attachments on the send/queue buttons and as toasts), keyboard submission repeats the gate, and queueing detaches cards without deleting server uploads. Prompt dispatch keeps cards visible until Pi accepts the prompt; payload-too-large, network, and runtime-changed failures leave attachments available for another attempt instead of clearing them. Server validates filenames, enforces expiry/TTL and per-file limits in attachment-store.js, supports DELETE /api/pi/attachments/:id, and the web client exposes uploadAttachment/deleteAttachment plus runtime-upload.ts progress reporting. Queued messages serialize ready attachments for persistence and restore (#70, runtime-upload, attachment-store, ChatInput, FileAttachment, input-store, session-ui-store).
  • Background worktree creation no longer steals focus. The submit that starts a draft worktree captures its draft snapshot, prompt, and model config and keeps the returned receipt through completion. Selecting another session while the worktree builds no longer redirects the prompt or steals session focus; materialization creates the worktree session with select: false and prompts its new directory in the background, leaving the current session and active directory untouched. Failure preserves the draft and never falls back to the source checkout (#71, useDraftWorktreeCreation, pi-session-store, session-ui-store, session-actions).
  • Extension state hydrates on open and reconnect. sessions.open and session.snapshot now include live extension state (extensionStatuses, extensionWidgets, extensionDialogs, extensionPanels, extensionApps, extensionTitle) built by projectExtensionSnapshotState and seeded from the daemon's per-session maps. First attach after a cold start no longer misses one-time startup statuses before the browser stream connects, and a second tab reopens with the same live panels (#75, session-daemon, routes, event-reducer, bootstrap, reconnect).
  • Large settled history no longer rebuilds on every token. Settled assistant turns with long histories defer older blocks behind Load older history / Load all history (deterministic TurnAssistantBlock + turnAssistantReveal), so live replies avoid rebuilding the whole transcript and MessageList virtualization stays cheap (#73, MessageList, TurnItem, TurnAssistantBlock).
  • Interactive startup enable and pichamber version. In an interactive terminal with no setup flags, pichamber startup enable now walks through access (This machine only / Local network / Custom bind address), port (1–65535 validated), authentication (Use configured password / Enter a password with confirmation / Generate a secure password / No password when local), and a final confirmation before installing the native service. Flag-driven, non-TTY, --quiet, and --json runs stay non-interactive. Re-running enable rewrites and restarts the systemd unit (daemon-reload + enable + restart) so new settings take effect instead of requiring a manual restart. Adds pichamber version (and --version) that prints the installed package version and supports --json (bin/cli, cli-args, commands-startup, cli-startup, DOCUMENTATION.md).
  • Web updates use the correct Pi endpoint and a detached launcher. The client now posts to POST /api/pi/update-install (was /api/pichamber/update-install) and the server validates the install is a trusted global package-manager copy before spawning a detached updater (pichamber update --quiet, detached + stdio: ignore). Container and systemd-hosted servers are refused with an actionable message instead of attempting an in-place replace (#74, UpdateDialog, routes, package-manager, launchUpdateCommand).
  • Directory focus no longer loops on Windows spellings. The chrome bridge compares normalized path identities (slash style, drive-letter case, trailing separator) before writing the daemon focus back into useDirectoryStore, preventing an update loop between C:\\repo and C:/repo/ (AppEffects, normalizePath).

PiChamber v0.7.1

Choose a tag to compare

@github-actions github-actions released this 31 Aug 23:01

[0.7.1] - 2026-09-01

Composer, project, and desktop-auth polish after 0.7.0.

  • Thinking changes wait until send. Composer thinking-level picks stay local until the next send, so mid-turn or idle picker changes no longer rewrite the active session (apply-composer-thinking).
  • Skills trust without a popup. Opening a project no longer shows a trust dialog for skills; PiChamber projects are trusted automatically.
  • Worktree create stays in the background. Creating a worktree shows global progress instead of blocking the composer, so you can keep chatting while checkout finishes (#66).
  • Desktop reload keeps the last host unlocked. Reloading an Electron window reapplies the stored client token for the hydrated last runtime before the password gate runs (restoreDesktopRelayRuntime, #65).
  • Projects settings match other pages. The Projects settings page follows the Providers/Skills layout, and the Settings nav no longer repeats the PiChamber heading (#63, #69).
  • UI polish. Left sidebar border removed, tablet composer padding and header burger aligned with desktop, and the OpenAI logo shows for the openai-codex provider (#64).

PiChamber v0.7.0

Choose a tag to compare

@github-actions github-actions released this 31 Aug 19:58
7cde870

[0.7.0] - 2026-09-01

Streaming reliability and faster session startup.

  • Live turns survive reload. Reopening a chat that is still running restores the working/tooling state from getSession (isStreaming / lifecycle: 'busy' plus in-flight tools) instead of showing a settled transcript until the next token.
  • Event stream stays attached. Transport switches reconnect from the last accepted sequence without treating a disconnect as an empty session. Missed replay windows force-hydrate from an authoritative snapshot.
  • Remembered desktop host auth. Reloading an existing Electron window reapplies the selected remote host URL and stored client token so a remembered password is not prompted again (startup-url-selection, main.mjs).
  • Warm sidebar catalog. Stable session-list metadata is cached per runtime and restored as idle rows before directory lists return. Failed folder refreshes keep cached rows; authoritative empty lists persist an empty tombstone. Busy/retry and hydrated transcripts are never restored from cache (pi-session-catalog-cache).
  • Faster crowded folder lists. sessions.list reads up to eight JSONL session files at a time in a directory. One unreadable or header-malformed file still fails that folder only.

PiChamber v0.6.0

Choose a tag to compare

@github-actions github-actions released this 25 Aug 14:18

[0.6.0] - 2026-08-25

Worktree-aware sidebar and no-folder session fixes.

  • Worktree-specific busy indicator. When a project has linked worktrees, the sidebar now shows the busy spinner on the exact worktree that is running. Collapsed projects aggregate activity on the project row; expanded projects show the spinner only on the primary checkout or the linked worktree that is actually busy. Single-project and no-worktree behavior is unchanged (SessionSidebaractiveDirectoriesByProject, SidebarSpacesBar per-worktree AgentThinkingLoader).
  • Sessions without a folder stay global. Sessions created with “Don’t work in a folder” at literal ~ no longer leak into every registered project’s ownership bucket or focused catalog slice, so switching folders cannot retain or select an unrelated home session. isKnownActiveSessionDirectory and directory-ownership logic now scope correctly to authoritative known directories and global session home, with header location hiding the stale active project for home sessions (#59).
  • Electron update manifest verification handles multiple artifacts. verify-update-manifest.mjs now finds the expected artifact by matching its URL among multiple files entries instead of requiring exactly one, fixing checksum validation for macOS latest-mac.yml which lists both DMG and ZIP.
  • Sidebar labeling. “All sessions” is now labeled “All Folders” across the sidebar and docs; global/home sessions carry the neutral “No folder” shade and correct empty states when no folder is selected.

PiChamber v0.5.2

Choose a tag to compare

@github-actions github-actions released this 25 Aug 09:44

[0.5.2] - 2026-08-25

Folder-scoped session reliability release.

  • Folder switching shows the correct sessions. Home sessions no longer enter every registered project's ownership bucket or focused catalog slice, so changing folders cannot retain or select an unrelated home session.
  • Explicit no-folder sessions. The new-session picker always offers "Don't work in a folder" at literal ~, whether the runtime home is registered as a folder or not. The selection remains stable instead of snapping back to the active project.
  • All folders keeps global sessions accessible. Sessions created at ~ appear only in All folders, carry a "No folder" secondary label, and use a neutral theme-aware background. Project views remain strictly folder-owned.
  • Release integrity. Desktop release jobs independently verify macOS, Windows, and Linux updater-manifest checksums against their generated artifacts. The npm job publishes the exact attached tarball and verifies its SHA-512 integrity, SHA-1 shasum, and downloaded registry bytes.

PiChamber v0.5.1

Choose a tag to compare

@github-actions github-actions released this 25 Aug 00:20
f274412

[0.5.1] - 2026-08-25

Focused composer and reload reliability release.

  • Repository-free sessions. The new-session folder picker now offers "Don't work in a repository", creates the session in the connected runtime's home directory, and shows those home sessions in every project folder. Literal ~ and expanded-home catalog entries merge without duplicate rows.
  • Reload restores context. Reloading the web or desktop renderer preserves the selected runtime and its last active session instead of reverting to Local server. Runtime endpoint persistence remains credential-free, and Capacitor mobile keeps its existing validated restore flow.
  • Safe worktree names. Small-model utility inference now runs in an isolated Pi text-transformation session without coding-agent instructions, repository context, skills, extensions, templates, or tools. Worktree naming accepts only a complete lowercase ASCII hyphenated slug within 48 characters; conversational or malformed replies fall back to the deterministic task-derived name.

PiChamber v0.5.0

Choose a tag to compare

@github-actions github-actions released this 24 Aug 22:08

[0.5.0] - 2026-08-24

Pi extension release: existing extensions now run inside PiChamber's session daemon, their commands and standard UI prompts work across clients, and extensions can add native cards, panels, forms, and sandboxed app views to the workspace.

  • Pi extensions run in PiChamber. The session daemon loads global and trusted project extensions through Pi's standard discovery flow. Registered tools, commands, lifecycle hooks, prompt modifications, and session state work without a PiChamber-specific dependency; child-process extensions resolve the real pi-coding-agent binary inside the detached daemon (session-daemon, extension-bridge).
  • Extension dialogs and live UI. Standard ctx.ui select, confirm, input, editor, notification, status, and widget calls render in web, desktop, hosted mobile, and Capacitor clients. PiChamber's versioned extension protocol adds validated markdown, key-value, list, table, progress, badge, and code cards; reconnect-safe live panels; structured forms; command actions; and script-only sandboxed app views (extension-protocol, extension-ui, ExtensionDialogOverlay, ExtensionStatusWidgets, ExtensionMessageCard, ExtensionPanelDock, ExtensionAppSurfaces).
  • Extension commands in the composer. Registered slash commands appear in autocomplete and dispatch to their extension with arguments. Settings can pin commands as composer buttons and bind global shortcuts without shadowing built-in shortcuts (CommandAutocomplete, ComposerCommandTriggers, CommandTriggersSettings).
  • Extension state stays in sync. Model and thinking-level changes made by commands such as /balance or /juicer now update the composer instead of being overwritten by stale local selection. Dialog responses are validated, ANSI and truecolor dialog content is normalized on mobile, notifications appear as toasts and transcript cards, and extension listings expose opaque IDs rather than host paths (model-selection-sync, ansi, extension-bridge).
  • Faster worktree switching. Changing sessions or worktrees no longer recreates the project list. Filtered worktree views remove redundant group headers and indentation, while draft target controls and pending-change details are more compact (useProjectsStore, SidebarProjectsList, SidebarSpacesBar, DraftTargetSelectors, PendingChangesBar).
  • Mobile composer polish. Speech recording no longer shows a timer that crowds the mobile composer, and long model and thinking-level labels use tighter limits (ComposerVoiceInput, ModelControls, ThinkingLevelControl).
  • Pi-native cleanup. The remaining internal OpenCode compatibility clients, status/config helpers, route aliases, and fallback contracts have been removed. PiChamber now uses the Pi-native session, settings, Git, and runtime paths directly.
  • Release integrity. npm publishing now publishes the exact tarball attached to the GitHub Release, then verifies its SHA-512 integrity and SHA-1 shasum against npm metadata and the registry download before attaching it (release.yml).