[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 withSESSION_BUSYwhile a runtime is streaming. Idle runtimes pick up the change through Pisession.reload()in place (session file, ID, and transcript untouched); busy runtimes defer untilagent_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_tokenminted at/auth/url-tokenis now anEncryptJWT(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/wsor/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, renamestoggle_right_sidebartoopen_right_sidebar, and addscycle_session_folder/cycle_draft_folderbacked by a newfolderCyclemodule with unit tests.HelpDialogwidens 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+mno 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 queuedtoast fires and a fresh draft opens while the captured prompt materializes onsetup-ready. Replaces the global banner withBackgroundTasksMenu(hidden when empty, no count badge, leftmost of the header right-side buttons) plusWorktreeCreationToasts; draft helpers anduseWorktreeCreationStore/session-ui-storeupdated with regression tests. - Retention cleanup threads the owning directory (#84).
PiSessionStore.archive/removeaccept an optional directory and resolve explicit arg →catalog.byId→ focused sessions,PiService.deleteSessionforwardsscope.directoryas?directory=, anduseSessionAutoCleanuppasses the resolved directory through. Fixes foreign-sessionINVALID_SESSIONrejections 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).
TurnAssistantBlocknow gates only final-response messages (filtering activity-railactivityPartIds, tool-only records, and progress text projected to the rail) instead of raw message count, andTurnActivityRailhides theLoad earlier activitycontrol while collapsed. Large settled turns still defer behindLoad earlier response/Load full responseat the 32-message boundary (TurnAssistantBlock,TurnItem,TurnActivityRail). - Tool and thinking presentation polish (#86). Expandable tool rows hug context text instead of stretching
surface-subtleacross the row with duration pinned far-right like static read rows, static skill/read rows normalize toitems-centerrhythm, 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
openbefore the listener attaches (host-client.test.js).