Repository navigation
Releases
Releases · kurrent-io/kcap
v1.4.1
What's Changed
- [AI-4520] Bring the Codex headless runner up to the local-agent contract by @alexeyzimarev in #2014
- Send local-install feedback as a prefilled email by @realtonyyoung in #2010
- Show account usage bars in the launcher, Settings and the composer strip by @alexeyzimarev in #2023
- Carry PR state from the listing row and honour 429 Retry-After in the app by @alexeyzimarev in #2022
- Ignore rail control changes once the rail is disposed by @alexeyzimarev in #2025
- Merge user MCP servers into a committed .mcp.json by @alexeyzimarev in #2027
- Hold the launch prompt while a Claude dialog is on screen by @alexeyzimarev in #2020
- Re-probe a Codex account at once when its hook files change by @alexeyzimarev in #2029
- Relay a hosted agent's terminal dialog to remote chats by @alexeyzimarev in #2021
- Offer a repair for an unfinished daemon service transaction by @realtonyyoung in #2016
- [AI-4523] Nudge agents to declare an unfixed flaky test as a loose end by @realtonyyoung in #2018
- Add qodana CI checks by @qodana-cloud[bot] in #2034
- Show usage and sharing in the sidebar's Session section by @alexeyzimarev in #2032
- Remove Qodana CI for now by @alexeyzimarev in #2041
- Take a typed repository path for a remote machine in the launcher by @timothycoleman in #1895
- Serve an open session's PR links from its listing row by @alexeyzimarev in #2033
- Resume a Claude agent by its dashed session id by @alexeyzimarev in #2046
- Add kcap-pages to the Muse Assistant connector by @realtonyyoung in #2045
- Resume a Codex agent by its dashed session id by @alexeyzimarev in #2049
- Nudge sandboxed sessions towards relative worktree links by @timothycoleman in #2038
- Show Claude's compaction summary as a note, not a user message by @timothycoleman in #2043
- Let an agent read a page shared with it by @realtonyyoung in #2047
- Fix desktop updates that strand or duplicate the app across the rebrand by @nortonandreev in #2050
- Keep a resized Metal window from drawing at its old size by @nortonandreev in #2055
- Supervise the Windows daemon with a Windows service by @Lougarou in #1861
- Add a headless harness that renders the docs' desktop figures by @realtonyyoung in #1989
- Point setup's reopen hints at the application menu by @realtonyyoung in #2061
- Update an older kcap before a local install instead of refusing it by @realtonyyoung in #2059
- Detect coding agents installed through their desktop apps by @realtonyyoung in #2062
- Resume review-flow reviewers across a daemon restart by @alexeyzimarev in #2048
- Keep a committed .mcp.json's other keys when merging servers by @alexeyzimarev in #2064
- Treat Linux without systemd as having no service manager by @timothycoleman in #1898
- Paste the launch prompt once the agent enables bracketed paste by @Lougarou in #2006
- Retry the local server upgrade until its version is published by @nortonandreev in #2056
- Collapse the conversation-compacted note in chat by default by @timothycoleman in #2067
- Ask which copy to keep when kcap is in both Applications folders by @nortonandreev in #2058
- Read rail PRs only for shown sessions, without access renewals by @alexeyzimarev in #2072
- Say which window the usage strip's reset belongs to by @alexeyzimarev in #2074
- Show one launcher notice card at a time by @nortonandreev in #1763
- Open chat links on left-click only and offer Copy link by @realtonyyoung in #2081
- Launch Claude and Codex from their macOS desktop apps when off PATH by @realtonyyoung in #2076
- Give the agent detection feed the registry it searches by @alexeyzimarev in #2084
- Keep a remote pick's vendor when the default-repo load lands late by @alexeyzimarev in #2087
- Never attribute token usage to an empty model id by @realtonyyoung in #2093
- Record token usage from ACP prompt responses by @realtonyyoung in #2092
- Hold the main window until older-version updates finish by @nortonandreev in #2079
- Keep the launcher quiet while an update finishes by @nortonandreev in #2088
- Show launcher failures in the danger colour by @nortonandreev in #2089
- Add Check for Updates to the app menu and a beta updates opt-in by @alexeyzimarev in #2071
- Run Qodana on demand with the CI SDK and a trimmed profile by @alexeyzimarev in #2077
- Make the desktop app's side panes resizable and collapsible by @timothycoleman in #2096
- Rename a session from the desktop header by @realtonyyoung in #2100
- Review documents from a caller with no repository by @realtonyyoung in #2094
- Fix update completion and progress feedback by @nortonandreev in #2103
- Give kcap import its terminal instead of the global console by @realtonyyoung in #1919
- Install the command-line tool without an admin password prompt by @alexeyzimarev in #2098
- Add hand-off worktrees that never delete a user's branch by @alexeyzimarev in #2133
- Match the name-in-use sentinel inside SignalR's wrapped error message by @alexeyzimarev in #2135
- Leave cache tokens out of the sidebar's token count by @alexeyzimarev in #2138
- Search sessions from the desktop app with ⌘K by @alexeyzimarev in #2134
- Answer the MCP handshake before asking the daemon for the session by @alexeyzimarev in #2165
- Fold work item parts in the desktop sidebar like plans by @alexeyzimarev in #2167
- Hold the launch prompt until the agent's terminal leaves canonical mode by @timothycoleman in #2162
- Send Manual to Claude explicitly instead of inheriting its default by @alexeyzimarev in #2163
- Bridge every kcap MCP server into Pi, handoff included by @alexeyzimarev in #2173
- Open a remote launch on a placeholder row while it starts by @timothycoleman in #2159
- Group a Working rail session under Running, not Waiting on you by @realtonyyoung in #2193
- Skip re-importing transcript tails the server ignored by @nortonandreev in #2192
- Check for a harness before setup and revise the wizard copy by @realtonyyoung in #2185
- Fail an unreachable-server import without bypassing exclusions by @nortonandreev in #2190
- Refuse an unconfirmable memories import instead of hanging by @nortonandreev in #2189
- Show completed/total checks on the pending checks status by @realtonyyoung in #2196
- Ring the launcher goal card when New session is pressed over it by @timothycoleman in #2187
- Point hosted agents at schedule_wakeup for waits by @timothycoleman in #2191
- Deliver non-Claude session-start guidelines through the audience-filtered endpoint by @realtonyyoung in #2202
- Remove only what kcap installed and keep what uninstall cannot manage by @Lougarou in #2210
- Make imports and setup history report and respect what they did by @Lougarou in #2211
- Tell an offline server from a rejected sign-in and tidy CLI output by @Lougarou in #2212
- Check the local server socket and ask before sending usage data by @Lougarou in #2213
- Fix desktop history, windows, accessibility and local-server recovery by @Lougarou in...
v1.4.1-beta.8
What's Changed
- Keep a Cursor batch's commits pending until every chunk is fully acked by @realtonyyoung in #2390
- Search the sidebar's sessions by title from Ctrl+K by @timothycoleman in #2470
- Show a full daemon as a calm launcher notice by @timothycoleman in #2474
- Render cross-session messages as notes from their sender by @alexeyzimarev in #2465
- Stop the blocked observer test deadlocking on its own thread by @alexeyzimarev in #2467
- Resubmit a chat message the agent never picked up by @timothycoleman in #2472
- Move launchd services and Claude plugin records off another kcap install by @alexeyzimarev in #2445
- Report a plain-text Claude sign-in failure as not signed in by @realtonyyoung in #2478
- Hold a resumed agent's first message until its terminal is ready by @timothycoleman in #2480
- [AI-5190] Store a repository with no remote under a local identity by @realtonyyoung in #2468
- Redact database URL passwords and all-caps *KEY / *PASS names by @realtonyyoung in #2477
- Acknowledge each dispatched input and type a resend only once by @realtonyyoung in #2391
- [AI-5244] End background rows at a resume that writes no hook record by @realtonyyoung in #2438
- Flag a tail Cursor's session-end drain leaves unsent by @realtonyyoung in #2484
- Collapse the empty documents column beside the page viewer by @realtonyyoung in #2485
- Show a local server missing its files in red, as a launch error by @realtonyyoung in #2486
- [AI-5190] Match an ownerless origin by every key and refuse a malformed hash by @realtonyyoung in #2487
- Pass items to colleagues from agents and the terminal by @realtonyyoung in #2488
- Remind the sender to follow up a pass from their agent's session by @realtonyyoung in #2490
- Paste Claude's launch prompt once its composer turns bracketed paste on by @timothycoleman in #2483
- Hand a running Claude session its pass notices at each prompt by @realtonyyoung in #2489
- Label the desktop app's context figure as the session peak by @alexeyzimarev in #2493
- Keep an answered card's terminal dialog hidden by @alexeyzimarev in #2495
- Let a recipient's agent catch up on passes shared with it by @realtonyyoung in #2496
- Report detached starts and first-run machine ids on signals, not waits by @timothycoleman in #2492
- Step through rail sessions and page the transcript from the keyboard by @timothycoleman in #2501
- Check out agent worktrees in parallel on every platform by @timothycoleman in #2504
- [AI-1236] Pin the concurrent_update send retry and the thrown-ack retry by @realtonyyoung in #2507
- Post the files a turn changed in the working tree by @realtonyyoung in #2508
- Leave a chat message waiting once a turn ran after it by @timothycoleman in #2506
- Show the current context and a compact button in the session pane by @alexeyzimarev in #2510
- Read Claude's AskUserQuestion dialog off a hosted agent's screen by @alexeyzimarev in #2512
- Let a hand-off of an ended session choose the account by @alexeyzimarev in #2499
- Let the macOS app take over a user-owned npm or script kcap install by @alexeyzimarev in #2446
- Show a manual /compact once in the desktop chat by @alexeyzimarev in #2515
- Take over root-owned kcap installs behind one admin prompt by @alexeyzimarev in #2447
Full Changelog: v1.4.1-beta.6...v1.4.1-beta.8
v1.4.1-beta.7
What's Changed
- Keep a Cursor batch's commits pending until every chunk is fully acked by @realtonyyoung in #2390
- Search the sidebar's sessions by title from Ctrl+K by @timothycoleman in #2470
- Show a full daemon as a calm launcher notice by @timothycoleman in #2474
- Render cross-session messages as notes from their sender by @alexeyzimarev in #2465
- Stop the blocked observer test deadlocking on its own thread by @alexeyzimarev in #2467
- Resubmit a chat message the agent never picked up by @timothycoleman in #2472
- Move launchd services and Claude plugin records off another kcap install by @alexeyzimarev in #2445
- Report a plain-text Claude sign-in failure as not signed in by @realtonyyoung in #2478
- Hold a resumed agent's first message until its terminal is ready by @timothycoleman in #2480
- [AI-5190] Store a repository with no remote under a local identity by @realtonyyoung in #2468
- Redact database URL passwords and all-caps *KEY / *PASS names by @realtonyyoung in #2477
- Acknowledge each dispatched input and type a resend only once by @realtonyyoung in #2391
- [AI-5244] End background rows at a resume that writes no hook record by @realtonyyoung in #2438
- Flag a tail Cursor's session-end drain leaves unsent by @realtonyyoung in #2484
- Collapse the empty documents column beside the page viewer by @realtonyyoung in #2485
- Show a local server missing its files in red, as a launch error by @realtonyyoung in #2486
- [AI-5190] Match an ownerless origin by every key and refuse a malformed hash by @realtonyyoung in #2487
- Pass items to colleagues from agents and the terminal by @realtonyyoung in #2488
- Remind the sender to follow up a pass from their agent's session by @realtonyyoung in #2490
- Paste Claude's launch prompt once its composer turns bracketed paste on by @timothycoleman in #2483
- Hand a running Claude session its pass notices at each prompt by @realtonyyoung in #2489
- Label the desktop app's context figure as the session peak by @alexeyzimarev in #2493
- Keep an answered card's terminal dialog hidden by @alexeyzimarev in #2495
- Let a recipient's agent catch up on passes shared with it by @realtonyyoung in #2496
- Report detached starts and first-run machine ids on signals, not waits by @timothycoleman in #2492
- Step through rail sessions and page the transcript from the keyboard by @timothycoleman in #2501
- Check out agent worktrees in parallel on every platform by @timothycoleman in #2504
- [AI-1236] Pin the concurrent_update send retry and the thrown-ack retry by @realtonyyoung in #2507
- Post the files a turn changed in the working tree by @realtonyyoung in #2508
- Leave a chat message waiting once a turn ran after it by @timothycoleman in #2506
- Show the current context and a compact button in the session pane by @alexeyzimarev in #2510
- Read Claude's AskUserQuestion dialog off a hosted agent's screen by @alexeyzimarev in #2512
- Let a hand-off of an ended session choose the account by @alexeyzimarev in #2499
- Let the macOS app take over a user-owned npm or script kcap install by @alexeyzimarev in #2446
- Show a manual /compact once in the desktop chat by @alexeyzimarev in #2515
- Take over root-owned kcap installs behind one admin prompt by @alexeyzimarev in #2447
Full Changelog: v1.4.1-beta.6...v1.4.1-beta.7
v1.4.1-beta.6
What's Changed
- Classify user messages with one shared classifier by @alexeyzimarev in #2370
- Re-probe a vendor only when its catalog content changes by @realtonyyoung in #2386
- Show the time the side rail sorts by on each session row by @nortonandreev in #2376
- Give a collapsed session rail's width back to the workspace by @nortonandreev in #2330
- Post next-work presentations and memory uses by @realtonyyoung in #2372
- [AI-5142] Run the local agent on Pi and OpenCode by @realtonyyoung in #2392
- [AI-5160] Keep the user's global config out of OpenCode reviewers by @realtonyyoung in #2393
- [AI-5159] Drop Copilot subagent hook firings that carry a UUID agent id by @realtonyyoung in #2395
- [AI-5153] Treat Copilot usage records as import-relevant lines by @realtonyyoung in #2397
- [AI-5154] Deliver Copilot's session end from the detached finalizer by @realtonyyoung in #2396
- Host Mistral Vibe agents through the daemon over ACP by @Lougarou in #2388
- [AI-5163] Send OpenCode's prompt on stdin and keep its default model by @realtonyyoung in #2394
- [AI-5152] Store VS Code Copilot sessions from the Local harness by @realtonyyoung in #2398
- Flag merged session PRs on a plan that still has open tasks by @nortonandreev in #1472
- List background subagents and commands above the chat input by @nortonandreev in #2403
- Say Connected in the rail footer while the stack is healthy by @nortonandreev in #2384
- Fix update completion wording by @nortonandreev in #2404
- Cap the hub WebSocket connect at 30s by @w1am in #2415
- End background rows at a Claude resume by @alexeyzimarev in #2414
- Follow a Claude transcript that EnterWorktree moves by @timothycoleman in #2411
- Show no title on the main window by @timothycoleman in #2419
- [AI-5184] Keep home-file cloud sign-ins usable from OpenCode's private home by @realtonyyoung in #2406
- [AI-5189] Run Copilot hooks by kcap's full path by @realtonyyoung in #2426
- [AI-5188] End Copilot sessions on their runtime, never on a hook process by @realtonyyoung in #2425
- Nudge a resumed agent whose background subagent died in the restart by @alexeyzimarev in #2413
- [AI-5190] Send the repository and branch with imported Copilot sessions by @realtonyyoung in #2429
- Show paused subagents on the desktop rail entry by @alexeyzimarev in #2424
- [AI-5155] Replace the no-harness dead end and name VS Code in setup by @realtonyyoung in #2430
- Stop recalled pastes gaining blank lines on every resend by @timothycoleman in #2422
- Select a remote agent worktree's owning repository in the launcher by @timothycoleman in #2439
- Fix the Copilot drain and AccountRefresher test flakes by @alexeyzimarev in #2437
- Give a line a stall held a second try in a hook's inline drain by @alexeyzimarev in #2432
- Show KCAP_APP_TITLE centered in the main window's title bar by @timothycoleman in #2442
- Hold Claude's launch prompt for SessionStart by @alexeyzimarev in #2417
- [AI-4948] Relay a deny's reason to Claude and Codex by @rsergeenko in #2443
- Keep an untitled issue readable in the desktop work context pane by @alexeyzimarev in #2434
- Allow chat text selection from message and row left margins by @nortonandreev in #2450
- Indicate custom session list settings with a blue icon by @nortonandreev in #2452
- Add folder access recovery to New session by @nortonandreev in #2454
- [AI-5064] Show terminal wait state for Claude Bash approvals by @nortonandreev in #2451
- Clarify the hand-off starting point and move its work warning by @nortonandreev in #2456
- Remember the launcher's harness and permission mode on remote machines by @timothycoleman in #2449
- Show a stale session as Stale in the rail, not Running by @realtonyyoung in #2428
- Trust kcap's own tools in Claude's auto mode by @alexeyzimarev in #2458
- Reveal newly loaded sessions in collapsed rail groups by @nortonandreev in #2463
- Show unknown outcomes for unresolved tools in ended sessions by @nortonandreev in #2462
Full Changelog: v1.4.1-beta.5...v1.4.1-beta.6
v1.4.1-beta.5
What's Changed
- Record an opencode run prompt without the quotes OpenCode adds by @Lougarou in #2321
- Show a restarting daemon as starting and its resuming agent once by @Lougarou in #2323
- Keep a resumed agent's session title across a daemon restart by @Lougarou in #2324
- Wait for a winding-down task before starting the daemon on Windows by @Lougarou in #2337
- Announce the session a native resume reopened on registration by @realtonyyoung in #2314
- Read only local refs when the hand-off composer opens by @Lougarou in #2325
- Report untrusted Codex hooks instead of showing Codex as wired by @Lougarou in #2326
- Generate a one-shot session's title before its watcher disconnects by @Lougarou in #2322
- Run the SessionEnd hook async and spool a timed-out watcher end by @realtonyyoung in #2312
- Drop the desktop app's false team-claim alert by @realtonyyoung in #2344
- Delete the built-in model when setup leaves it unused by @realtonyyoung in #2342
- Make each rail session row wait the full delay before its tooltip by @realtonyyoung in #2347
- List a session's pages in the work context pane, citing any it misses by @realtonyyoung in #2345
- Prune no versions through a linked versions directory by @realtonyyoung in #2350
- Fold subagent reports in the desktop chat under their summary by @realtonyyoung in #2348
- Uninstall kcap from inside the Windows desktop app by @Lougarou in #2357
- Let a Windows app update wait for running agents' turns by @Lougarou in #2358
- Detect and repair an older kcap on PATH before a Windows local install by @Lougarou in #2359
- Make the local edition's root private to the user on Windows by @Lougarou in #2356
- Say plainly when no Windows local bundle is published by @Lougarou in #2355
- Fold the worktree section into Session's copyable facts by @alexeyzimarev in #2363
- Stop an app update leaving its daemon pending a restart forever by @alexeyzimarev in #2361
- Split the work-context session facts into folding sections by @timothycoleman in #2365
- Show numbered lines in user messages as typed by @timothycoleman in #2369
- Fix macOS daemon agent discovery after PATH changes by @nortonandreev in #2331
- Say why the daemon stays behind when the AppImage cannot copy its CLI by @alexeyzimarev in #2367
- Label ls as a command in desktop tool rows, not a search by @nortonandreev in #1637
- Check repository paths where they resolve, under the host's rules by @realtonyyoung in #2349
- Shorten a long tool-row path by whole folders by @nortonandreev in #2374
- Probe the checkouts a session's subagents changed for a PR by @realtonyyoung in #2377
- Keep paused and resumed Claude subagents running in Agents & Commands by @alexeyzimarev in #2375
Full Changelog: v1.4.1-beta.4...v1.4.1-beta.5
v1.4.1-beta.4
What's Changed
- Name the agent and daemon epoch on every hosted session end by @realtonyyoung in #2311
- Report local server states truthfully and give one way out of each by @realtonyyoung in #2317
- Create daemon worktrees detached under memorable names by @timothycoleman in #2333
- Add back and forward navigation to the desktop app by @timothycoleman in #2335
- Point the npm packages at the renamed kurrent-io/kcap repository by @alexeyzimarev in #2341
Full Changelog: v1.4.1-beta.3...v1.4.1-beta.4
v1.4.1-beta.3
What's Changed
- Deliver non-Claude session-start guidelines through the audience-filtered endpoint by @realtonyyoung in #2202
- Remove only what kcap installed and keep what uninstall cannot manage by @Lougarou in #2210
- Make imports and setup history report and respect what they did by @Lougarou in #2211
- Tell an offline server from a rejected sign-in and tidy CLI output by @Lougarou in #2212
- Check the local server socket and ask before sending usage data by @Lougarou in #2213
- Fix desktop history, windows, accessibility and local-server recovery by @Lougarou in #2214
- Wait for the re-asked refusal in the background feed test by @Lougarou in #2215
- Keep a session's account label aligned with its home's current login by @alexeyzimarev in #2203
- Refuse daemon and service operations that would end their own caller by @Lougarou in #2209
- Remember permission mode per repo and follow the selected session by @alexeyzimarev in #2217
- Carry a hand-off of an ended session in the daemon by @alexeyzimarev in #2204
- Run the local edition on Windows by @Lougarou in #2012
- [AI-4515] Run a local-edition server's model calls on the daemon by @alexeyzimarev in #2220
- Hand off an ended session from the desktop app by @alexeyzimarev in #2205
- Search pages from the CLI and MCP by @alexeyzimarev in #2221
- chore: bump dotnet-sdk from 10.0.100 to 10.0.403 by @dependabot[bot] in #2222
- Offer Auto approvals for Codex in the app launcher by @alexeyzimarev in #2224
- AI-4893: Skip the default-visibility question for a local server by @alexeyzimarev in #2238
- Let a daemon update take over a pending when-idle restart by @alexeyzimarev in #2236
- Open PR links under a renamed repository's new name by @alexeyzimarev in #2247
- Accept renamed-repo PR links in the listed PR subject by @alexeyzimarev in #2255
- Record where each session was recorded on SessionStart by @alexeyzimarev in #2252
- [AI-4835] Let the knowledge tools confirm releasing private-source text by @realtonyyoung in #2259
- Fix the Windows-only bugs the local edition's sandbox run found by @Lougarou in #2262
- Add MCP tools for cross-category fact merges by @realtonyyoung in #2263
- Say category filters also match a lesson through its filed wordings by @realtonyyoung in #2266
- Fix the Windows bugs from the local edition's second sandbox round by @Lougarou in #2267
- Keep spooled hook messages for the server they were meant for by @w1am in #2175
- Build the spool-drain tests against the partitioned spool constructors by @Lougarou in #2281
- Fix the remaining Windows-only issues of the local edition by @Lougarou in #2280
- [AI-4515] Ask who runs background intelligence in local setup by @alexeyzimarev in #2260
- Show a user message the server flushed as undelivered as not delivered by @timothycoleman in #2286
- Show hosted agent links in desktop chat as the session title by @alexeyzimarev in #2258
- chore: Bump the tunit group with 2 updates by @dependabot[bot] in #2278
- Reap app children wedged between fork and exec by @realtonyyoung in #2288
- Hold a session access refusal and close the gaps left in the Stop hand-over by @nortonandreev in #2194
- Read a recorded session's checkout from the listing's cwd after a restart by @nortonandreev in #2199
- Fix two flaky desktop app tests by @realtonyyoung in #2291
- Hold a viewer's message until an open terminal dialog closes by @realtonyyoung in #2290
- Let a stopped session's finished mark lapse once the listing catches up by @nortonandreev in #2293
- Say when local search falls back because session vectors are not stored by @Lougarou in #2292
- Keep a hosted session's checkout from before its first listing by @nortonandreev in #2294
- Render and answer pages inside the desktop app by @realtonyyoung in #2207
- Leave an open session's attention marks to the cards its chat shows by @realtonyyoung in #2298
- Report a pinned ended session's end as its last activity by @nortonandreev in #2305
- Show shared-agent privileges and held messages in the desktop app by @realtonyyoung in #2297
- Apply ConPTY's erase and scroll sequences to the terminal screen copy by @Lougarou in #2310
- Skip unchanged ignored transcript tails during imports by @nortonandreev in #2308
- Render in-app pages on Windows by @Lougarou in #2313
- Await async Avalonia test bodies and correct exposed test failures by @nortonandreev in #2315
- Resume an ended session in place from the desktop app by @alexeyzimarev in #2261
- Fix stale and contradictory state on Settings' Search and Privacy pages by @realtonyyoung in #2316
- Show timestamps on chat messages by @timothycoleman in #2304
Full Changelog: v1.4.1-beta.2...v1.4.1-beta.3
v1.4.1-beta.2
What's Changed
- Treat Linux without systemd as having no service manager by @timothycoleman in #1898
- Paste the launch prompt once the agent enables bracketed paste by @Lougarou in #2006
- Retry the local server upgrade until its version is published by @nortonandreev in #2056
- Collapse the conversation-compacted note in chat by default by @timothycoleman in #2067
- Ask which copy to keep when kcap is in both Applications folders by @nortonandreev in #2058
- Read rail PRs only for shown sessions, without access renewals by @alexeyzimarev in #2072
- Say which window the usage strip's reset belongs to by @alexeyzimarev in #2074
- Show one launcher notice card at a time by @nortonandreev in #1763
- Open chat links on left-click only and offer Copy link by @realtonyyoung in #2081
- Launch Claude and Codex from their macOS desktop apps when off PATH by @realtonyyoung in #2076
- Give the agent detection feed the registry it searches by @alexeyzimarev in #2084
- Keep a remote pick's vendor when the default-repo load lands late by @alexeyzimarev in #2087
- Never attribute token usage to an empty model id by @realtonyyoung in #2093
- Record token usage from ACP prompt responses by @realtonyyoung in #2092
- Hold the main window until older-version updates finish by @nortonandreev in #2079
- Keep the launcher quiet while an update finishes by @nortonandreev in #2088
- Show launcher failures in the danger colour by @nortonandreev in #2089
- Add Check for Updates to the app menu and a beta updates opt-in by @alexeyzimarev in #2071
- Run Qodana on demand with the CI SDK and a trimmed profile by @alexeyzimarev in #2077
- Make the desktop app's side panes resizable and collapsible by @timothycoleman in #2096
- Rename a session from the desktop header by @realtonyyoung in #2100
- Review documents from a caller with no repository by @realtonyyoung in #2094
- Fix update completion and progress feedback by @nortonandreev in #2103
- Give kcap import its terminal instead of the global console by @realtonyyoung in #1919
- Install the command-line tool without an admin password prompt by @alexeyzimarev in #2098
- Add hand-off worktrees that never delete a user's branch by @alexeyzimarev in #2133
- Match the name-in-use sentinel inside SignalR's wrapped error message by @alexeyzimarev in #2135
- Leave cache tokens out of the sidebar's token count by @alexeyzimarev in #2138
- Search sessions from the desktop app with ⌘K by @alexeyzimarev in #2134
- Answer the MCP handshake before asking the daemon for the session by @alexeyzimarev in #2165
- Fold work item parts in the desktop sidebar like plans by @alexeyzimarev in #2167
- Hold the launch prompt until the agent's terminal leaves canonical mode by @timothycoleman in #2162
- Send Manual to Claude explicitly instead of inheriting its default by @alexeyzimarev in #2163
- Bridge every kcap MCP server into Pi, handoff included by @alexeyzimarev in #2173
- Open a remote launch on a placeholder row while it starts by @timothycoleman in #2159
- Group a Working rail session under Running, not Waiting on you by @realtonyyoung in #2193
- Skip re-importing transcript tails the server ignored by @nortonandreev in #2192
- Check for a harness before setup and revise the wizard copy by @realtonyyoung in #2185
- Fail an unreachable-server import without bypassing exclusions by @nortonandreev in #2190
- Refuse an unconfirmable memories import instead of hanging by @nortonandreev in #2189
- Show completed/total checks on the pending checks status by @realtonyyoung in #2196
- Ring the launcher goal card when New session is pressed over it by @timothycoleman in #2187
- Point hosted agents at schedule_wakeup for waits by @timothycoleman in #2191
Full Changelog: v1.4.1-beta.1...v1.4.1-beta.2
v1.4.1-beta.1
What's Changed
- [AI-4520] Bring the Codex headless runner up to the local-agent contract by @alexeyzimarev in #2014
- Send local-install feedback as a prefilled email by @realtonyyoung in #2010
- Show account usage bars in the launcher, Settings and the composer strip by @alexeyzimarev in #2023
- Carry PR state from the listing row and honour 429 Retry-After in the app by @alexeyzimarev in #2022
- Ignore rail control changes once the rail is disposed by @alexeyzimarev in #2025
- Merge user MCP servers into a committed .mcp.json by @alexeyzimarev in #2027
- Hold the launch prompt while a Claude dialog is on screen by @alexeyzimarev in #2020
- Re-probe a Codex account at once when its hook files change by @alexeyzimarev in #2029
- Relay a hosted agent's terminal dialog to remote chats by @alexeyzimarev in #2021
- Offer a repair for an unfinished daemon service transaction by @realtonyyoung in #2016
- [AI-4523] Nudge agents to declare an unfixed flaky test as a loose end by @realtonyyoung in #2018
- Add qodana CI checks by @qodana-cloud[bot] in #2034
- Show usage and sharing in the sidebar's Session section by @alexeyzimarev in #2032
- Remove Qodana CI for now by @alexeyzimarev in #2041
- Take a typed repository path for a remote machine in the launcher by @timothycoleman in #1895
- Serve an open session's PR links from its listing row by @alexeyzimarev in #2033
- Resume a Claude agent by its dashed session id by @alexeyzimarev in #2046
- Add kcap-pages to the Muse Assistant connector by @realtonyyoung in #2045
- Resume a Codex agent by its dashed session id by @alexeyzimarev in #2049
- Nudge sandboxed sessions towards relative worktree links by @timothycoleman in #2038
- Show Claude's compaction summary as a note, not a user message by @timothycoleman in #2043
- Let an agent read a page shared with it by @realtonyyoung in #2047
- Fix desktop updates that strand or duplicate the app across the rebrand by @nortonandreev in #2050
- Keep a resized Metal window from drawing at its old size by @nortonandreev in #2055
- Supervise the Windows daemon with a Windows service by @Lougarou in #1861
- Add a headless harness that renders the docs' desktop figures by @realtonyyoung in #1989
- Point setup's reopen hints at the application menu by @realtonyyoung in #2061
- Update an older kcap before a local install instead of refusing it by @realtonyyoung in #2059
- Detect coding agents installed through their desktop apps by @realtonyyoung in #2062
- Resume review-flow reviewers across a daemon restart by @alexeyzimarev in #2048
- Keep a committed .mcp.json's other keys when merging servers by @alexeyzimarev in #2064
New Contributors
- @qodana-cloud[bot] made their first contribution in #2034
Full Changelog: v1.4.0...v1.4.1-beta.1
v1.4.0
What's Changed
- Hold a remote pane's Send until its transcript is seeded by @realtonyyoung in #1658
- Tidy the remote workspace's feed, queue strip and session stream by @realtonyyoung in #1657
- Keep the PR tone cache's bookkeeping in one entry per session by @realtonyyoung in #1662
- Subscribe a remote terminal on its first showing by @realtonyyoung in #1659
- Keep an agent's worktree when it holds work that exists nowhere else by @realtonyyoung in #1651
- Let a local stop cancel a launch before its agent registers by @realtonyyoung in #1655
- Let a review flow name the checkout it reviews by @realtonyyoung in #1661
- Link mentions, issue references and commit SHAs in the PR reader by @realtonyyoung in #1664
- Show a review suggestion as a diff of the lines it replaces by @realtonyyoung in #1665
- Fix local install progress rows and daemon CLI lookup by @alexeyzimarev in #1670
- Stop local setup when another kcap is at or below 1.3.0 by @alexeyzimarev in #1666
- Freeze the clock in the snapshot delivery-marking test by @alexeyzimarev in #1675
- Review a PR in another repository on a daemon that hosts it by @realtonyyoung in #1672
- Run each MCP tool call as its own task so a long poll blocks nothing by @realtonyyoung in #1673
- Let a review flow start review a patch file at a base commit by @realtonyyoung in #1676
- Hold the subscriber until the begin-fault leg has finished by @realtonyyoung in #1678
- Test how kcap agent stop reads its ack and the agent table by @realtonyyoung in #1679
- Let the desktop app scale its text up and down by @realtonyyoung in #1677
- Let the keyboard reach and open links in rendered markdown by @realtonyyoung in #1681
- Refuse a unit path through a directory another account owns by @realtonyyoung in #1680
- End a session on its own server once its agent process is gone by @realtonyyoung in #1684
- Advertise the repositories a wildcard allowlist entry covers by @realtonyyoung in #1683
- Say signed out, not reconnecting, when the daemon's sign-in is the problem by @realtonyyoung in #1682
- Make kcap setup the unattended path and the no-app path by @alexeyzimarev in #1667
- Send cloud sign-up to the browser and retire the app's workspace form by @alexeyzimarev in #1668
- Upgrade the local stack after the desktop app updates itself by @alexeyzimarev in #1663
- Parse PR responses from the stream instead of a 4 MB buffer by @alexeyzimarev in #1690
- Ship a patched Avalonia.Native that frees accessibility peers on macOS by @alexeyzimarev in #1691
- [AI-3999] app: Reset UI scale to 100% on Command+0 by @nortonandreev in #1700
- Keep literal prompt receipts visible in chat by @nortonandreev in #1660
- [AI-3824] app: Scroll the chat while a text selection is dragged by @nortonandreev in #1640
- [AI-4054] app: Wrap long lines in chat code blocks by @nortonandreev in #1705
- Update desktop app and tray icons to the new kcap mark by @alexeyzimarev in #1703
- Compare launch env vars against the inherited value by @alexeyzimarev in #1686
- Wait for finish later to settle before reading it by @nortonandreev in #1706
- Make four more CI-flaky tests deterministic by @realtonyyoung in #1708
- Take the new-id branch when the server refuses a resumed registration by @alexeyzimarev in #1699
- [AI-3832] app: Show where a chat link goes, including mailto by @nortonandreev in #1646
- Wait for the re-armed Resuming before asserting it by @alexeyzimarev in #1725
- Rebrand the CLI and desktop app to kcap by @nortonandreev in #1632
- Remove the unused judge-fact snapshot code by @Inok in #1722
- Bring the Claude transcript projection to server parity by @realtonyyoung in #1712
- Reconnect the daemon hub when its sign-in changes account by @realtonyyoung in #1709
- Bring the Codex rollout projection to server parity by @realtonyyoung in #1714
- Show the embeddings step of local setup in the desktop app by @alexeyzimarev in #1711
- Bind terminal restart recovery to the runtime the daemon attached by @alexeyzimarev in #1715
- Run the macOS app bundle job on pushes only by @alexeyzimarev in #1740
- Keep the Avalonia.Native version stamp out of the published app by @alexeyzimarev in #1730
- desktop: Align installer and onboarding with kcap branding by @nortonandreev in #1735
- [AI-3200] Replay a resumed transcript once for every consumer by @realtonyyoung in #1734
- [AI-3834] Start setup on its first choice and count only shown pages by @realtonyyoung in #1741
- Say when the server refuses a remote terminal by @realtonyyoung in #1713
- [AI-2937] Count unresolved PR threads and offer Fix it for a blocked merge by @realtonyyoung in #1729
- Report a hosted agent's vendor when it registers by @timothycoleman in #1732
- [AI-3228] Claim Gemini sessions by the script node runs by @realtonyyoung in #1738
- [AI-4024] Say Free is closed instead of the slug taken, and try Team by @realtonyyoung in #1744
- [AI-4028] Report a hand-stopped flow participant as stopped, not died by @realtonyyoung in #1745
- [AI-4033] Hand a closing tab's feed to its monitor and cut ring copies by @realtonyyoung in #1746
- Use the WorkOS API base a loopback server advertises by @Inok in #1749
- Send the desktop app's usage data under its own source, with a visible notice by @realtonyyoung in #1710
- [AI-4103] Make the artifact the user asks for as a kcap page by @realtonyyoung in #1750
- [AI-3159] Report and offer to replace a daemon serving another identity by @realtonyyoung in #1727
- [AI-2912] Open a subagent's own transcript from its row in place of the chat by @realtonyyoung in #1726
- Release the desktop app for Linux as an AppImage and a .deb by @w1am in #1541
- Read the abandoned inner's cancellation at return, not from the pool by @alexeyzimarev in #1760
- Keep primary button labels readable on hover by @nortonandreev in #1742
- app: Put the agent count ahead of the daemon version by @nortonandreev in #1739
- Give the desktop app the kcap identity before its launch by @alexeyzimarev in #1762
- Offer a remote agent's terminal before its session starts by @timothycoleman in #1748
- Set the lock check's receive timeout before connecting by @alexeyzimarev in #1765
- [AI-3828] app: Show the text cursor over chat prose by @nortonandreev in #1644
- Show the working timer in the chat pane with the ouro mascot by @w1am in #1766
- [AI-4113] Advertise the models Muse's cached catalog lists by @realtonyyoung in #1751
- Fix desktop app defects from a Windows test run by @Lougarou in #1707
- Read the visible row nearest the middle in the chat scroll test by @realtonyyoung in #1784
- Offer an Auto permission preset for hosted ACP agents by @realtonyyoung in #1757
- Report a finished local install so the dashboard stops asking by @Alexeyzim...