Repository navigation
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 @alexeyzimarev in #1777
- Put kcap on the terminal PATH during the desktop local install by @alexeyzimarev in #1780
- Follow up script-install updates with pruning and a Windows daemon restart by @Lougarou in #1496
- Ask a hosted Grok agent's questions as question cards by @realtonyyoung in #1755
- Show the session switch cover unmagnified on a 2x display by @alexeyzimarev in #1790
- app: Scope session rail selection by origin (#1768) by @nortonandreev in #1771
- [AI-3822] app: Name Claude.ai MCP tools by the product by @nortonandreev in #1638
- [AI-3582] Apply the approval policy and judge at the Codex seams by @realtonyyoung in #1758
- Keep a hosted Grok's kcap MCP tools working whatever its imported configs hold by @realtonyyoung in #1756
- [AI-3823] app: Make emphasized chat links clickable while working by @nortonandreev in #1639
- Keep transcript replay from stalling the session switch cover by @nortonandreev in #1770
- [AI-3829] app: Start a text selection from message padding by @nortonandreev in #1645
- [AI-3508] Show subagent rows for every harness by @realtonyyoung in #1796
- [AI-3825] app: Keep chat selection put while the agent works by @nortonandreev in #1641
- Keep collapsed tool summaries focused on actions by @nortonandreev in #1802
- Answer hosted Pi dialogs through the elicitation route by @realtonyyoung in #1798
- Disable the launcher when the daemon hosts no harness by @alexeyzimarev in #1781
- Ask about usage data on its own setup step by @alexeyzimarev in #1775
- Point an empty chat at the agent's terminal by @timothycoleman in #1773
- Uninstall kcap from the macOS app menu by @alexeyzimarev in #1805
- Paste the launch prompt into the hosted agent's PTY after spawn by @alexeyzimarev in #1795
- Make kcap set-title rename the session by @alexeyzimarev in #1797
- Fix remote terminal scrolling and resize handling by @nortonandreev in #1804
- [AI-3826] app: Preview images the agent reads by @nortonandreev in #1642
- Put the machine chip before the repo chip in the launcher by @timothycoleman in #1808
- Fix the stale privacy note and Mac-only wording in onboarding by @Lougarou in #1811
- [AI-4174] app: Confirm Claude local slash commands by @nortonandreev in #1800
- Offer only skip and import on the local edition's history step by @alexeyzimarev in #1821
- Restore bottom-aligned session chat scrolling by @nortonandreev in #1820
- Let ACP-hosted agents' kcap MCP tools find their session by @realtonyyoung in #1819
- Fix shutdown test socket readiness race by @nortonandreev in #1841
- Keep a stuck volume detach from failing the case-sensitive root test by @realtonyyoung in #1826
- Run the switch cover's hold limit on the view model's clock by @realtonyyoung in #1840
- Keep terminal replays off the large-object heap by @alexeyzimarev in #1835
- Use daemon ownership for remote chat user labels by @nortonandreev in #1828
- Show an empty state for work item pull requests by @nortonandreev in #1839
- app: Add Open dashboard and a launch approvals window (#1816) by @nortonandreev in #1827
- Explain local search choices and gate meaning on a running Ollama by @nortonandreev in #1838
- cli, app: Complete uninstall cleanup (#1843) by @nortonandreev in #1845
- Offer per-user macOS install when Applications is not writable by @nortonandreev in #1842
- Keep idle chats from reporting work by @nortonandreev in #1825
- Number agent count changes so the server can order them by @w1am in #1807
- Confirm a loose-end claim held under an encoded ACP session id by @realtonyyoung in #1859
- Bound the daemon's evidence prepare inside the server's prepare timeout by @realtonyyoung in #1862
- Keep a nested agent's hooks from linking its session to the hosted agent by @realtonyyoung in #1864
- Let any harness pull a session's eval report through kcap-sessions by @realtonyyoung in #1863
- Give Cursor's sessionStart enough budget to deliver the guidelines by @realtonyyoung in #1865
- Keep pull-request CI off GitHub's macOS runners by @alexeyzimarev in #1846
- Count desktop history import progress per session by @alexeyzimarev in #1832
- Hide Finish later on the setup Done page by @alexeyzimarev in #1833
- Give merge conflicts a status row and reader tab by @alexeyzimarev in #1869
- Seed the case-sensitive test image so nothing holds its volume busy by @alexeyzimarev in #1837
- Describe the turn-boundary restart and resume in the update message by @alexeyzimarev in #1823
- app: Give the onboarding window a title bar so its buttons clear the content by @nortonandreev in #1878
- app: Remove the connections note from first-run setup by @nortonandreev in #1880
- app: Remove the harness step's Current setting line by @nortonandreev in #1879
- End a subagent row on a stopped task notification by @alexeyzimarev in #1876
- app: Name what already-open agents pick up on the done step by @nortonandreev in #1881
- app: Show why the local edition is unavailable inside its card by @nortonandreev in #1883
- Say sessions processed, not uploaded, in the import status by @realtonyyoung in #1886
- Render the user's chat turns as typed, with only Slack-style formatting by @timothycoleman in #1818
- Let the daemon pick up a coding agent installed after it started by @alexeyzimarev in #1873
- Keep a PTY write that loses the race to dispose quiet by @alexeyzimarev in #1890
- Seed the Cursor refresh test's stale kcap under its temp home by @alexeyzimarev in #1889
- app: Rework the setup Ready step and sign-in from the website by @realtonyyoung in #1884
- Add log-memory tools to kcap mcp memory by @realtonyyoung in #1892
- Open a remote launch's session when its row arrives by @timothycoleman in #1867
- Add wake-up tools and announce the continued agent by @realtonyyoung in #1893
- [AI-4367] Promise remote agent starts only on a cloud install by @realtonyyoung in #1902
- [AI-4369] Drop the settings-folder line from setup's first step by @realtonyyoung in #1903
- [AI-4371] Title the install step as a question while it still asks by @realtonyyoung in #1904
- [AI-4366] Ask only for the edition on setup's first step by @realtonyyoung in #1901
- [AI-4368] Keep the import's total and progress bar after setup closes by @realtonyyoung in #1905
- [AI-4370] Summarise the history step and put its details behind Customize by @realtonyyoung in #1906
- Picture the viewer on the work-context requester row by @alexeyzimarev in #1900
- Show prompt attachments as previews in the desktop chat by @alexeyzimarev in #1909
- Give kcap uninstall its console streams instead of the global Console by @realtonyyoung in #1907
- Give the Codex hook its streams and markers instead of the process's by @realtonyyoung in #1916
- Carry Claude usage extras verbatim in canonical additional_counts by @realtonyyoung in #1911
- Refuse an MCP tool argument its schema does not declare by @realtonyyoung in #1923
- Serve OpenCode's memory index on every session start by @realtonyyoung in #1930
- Take the wall clock out of two flaky CLI unit tests by @realtonyyoung in #1927
- Move local search configuration into a Settings tab by @realtonyyoung in #1933
- Fall back to legacy registration on the real missing-method answer by @realtonyyoung in #1935
- Resume an agent that was waiting without the restart nudge by @realtonyyoung in #1937
- Ask a wrapping-up agent to close the loose ends it finished by @realtonyyoung in #1932
- Merge the lane flags of a widened session search by @realtonyyoung in #1929
- Save an Allow always rule through Claude's updatedPermissions by @realtonyyoung in #1931
- [AI-4359] Let only the latest failure's recovery mark the sink test ready by @realtonyyoung in #1925
- [AI-4384] Choose history repositories with checkboxes, not a slider by @realtonyyoung in #1926
- Spawn PTY test children that uutils coreutils lets run by @alexeyzimarev in #1943
- Keep a resumed agent's prompt-cut title a placeholder by @alexeyzimarev in #1913
- Let a hosted launch name a Claude or Codex account by @alexeyzimarev in #1870
- Show past and terminal-started sessions in the desktop rail by @alexeyzimarev in #1922
- Name the sender of each message in desktop chat by @alexeyzimarev in #1917
- Offer built-in embeddings in local setup by @alexeyzimarev in #1938
- Uninstall the desktop app from its in-window menu on Linux by @realtonyyoung in #1936
- Install the .NET SDK the release metadata names in CI by @alexeyzimarev in #1951
- Name message senders for journal-sourced harnesses by @alexeyzimarev in #1918
- Link the PRs a Claude session creates from any checkout by @alexeyzimarev in #1946
- Choose a Claude or Codex account in the desktop launcher by @alexeyzimarev in #1924
- [AI-4390] Keep accepting bridge requests until the listener closes by @realtonyyoung in #1952
- [AI-4414] List a remote machine's repositories by name in the desktop picker by @realtonyyoung in #1953
- Publish test containers on host ports below the ephemeral range by @realtonyyoung in #1920
- Add declare_work_incomplete to the work-items MCP server by @realtonyyoung in #1934
- Keep a user's submodule and signing config out of worktree prep by @realtonyyoung in #1921
- Run the start_agent test's server outside the suite's process tree by @realtonyyoung in #1928
- Offer only the visibility stops the tenant can honour at setup by @realtonyyoung in #1940
- Name the spawning call on a Codex subagent's start by @realtonyyoung in #1939
- Quit when setup closes before a server is connected by @nortonandreev in #1959
- Restrict desktop Escape interruption to confirmed foreground work by @nortonandreev in #1852
- Fix macOS CLI PATH setup for users without admin rights by @nortonandreev in #1960
- Fix rail sort button clipping and move New session above filters by @nortonandreev in #1965
- Stamp a filed commit with when the hook ran by @rsergeenko in #1958
- Remove the composer shell from read-only sessions by @nortonandreev in #1966
- Clarify ended session pagination in the rail by @nortonandreev in #1968
- Fix remote terminal button clipping and apply app button themes by @nortonandreev in #1969
- Keep in-place Claude agents linked to their own transcripts by @nortonandreev in #1964
- Acknowledge idle slash commands when their terminal panel opens by @nortonandreev in #1961
- Show owner avatars on team sessions in the desktop rail by @alexeyzimarev in #1974
- Open the guided tour with the web tour's welcome card by @realtonyyoung in #1977
- Recover and discard unresolved chat attempts by @nortonandreev in #1799
- Claim Claude sessions before global orphan reaping by @nortonandreev in #1978
- Toggle experimental features live, starting with Codex app-server by @realtonyyoung in #1963
- [AI-4447] Offer a hosted agent for next work when the server can start one by @realtonyyoung in #1979
- app: Show uninstall progress immediately after confirmation (#1981) by @nortonandreev in #1982
- app: Clarify onboarding workspace choices (#1983) by @nortonandreev in #1984
- Ignore rail selection changes once the rail is disposed by @nortonandreev in #1987
- Link the started-agent card to the agent's page by @alexeyzimarev in #1976
- Lock the rail scope filter to Mine in the local edition by @alexeyzimarev in #1991
- app: Keep uninstall in one window through completion (#1985) by @nortonandreev in #1988
- [AI-3993]: Added Systemd and snap support by @sakno in #1723
- Stop the Team rail scope from polling every tenant session by @alexeyzimarev in #1999
- Polish onboarding success rows, PATH note and compact buttons by @nortonandreev in #1995
- Show what was removed after app uninstall by @nortonandreev in #2001
- Fork a hosted ACP agent's turn from the commit it made by @rsergeenko in #2003
- Fix contributor identity and keep work-context avatars stable by @nortonandreev in #2005
- app: Polish onboarding alignment and add scroll title (#2004) by @nortonandreev in #2008
- Record and publish per-account usage readings by @alexeyzimarev in #1980
- Record imported sessions' repositories for the launcher by @alexeyzimarev in #1993
- Redesign Settings with profile-scoped pages, Capture and Harnesses by @nortonandreev in #1481
- Move app-state file I/O off the caller's thread by @alexeyzimarev in #1997
- Embed profile management in the settings profile card by @nortonandreev in #2013
- chore: Bump the tunit group with 2 updates by @dependabot[bot] in #1954
Full Changelog: v1.3.1...v1.4.0