Changed
- The phone section reads at a glance. Three large steps — same Wi-Fi, scan the code, let it work — and one large Show a code button whose text is readable in the dark theme; the rest is folded under Then: …. After a restart, with phones paired, the section leads with Phone access is off and a large Turn on.
- Keys on buttons you can read. Start ⌘↩ and Cancel Esc (and the same pair on Add project, Quick chat and Send feedback) carry the key as a bordered chip at full contrast, on taller buttons. The feedback dialog is wider, with larger text throughout.
Added
- Take Caprock with you. A slim strip above the status bar offers Open on your phone and Connect Telegram, each opening its Settings section. It ticks an item off by itself once a phone is paired or the bot has a chat, Not needed drops an item for good, × hides it for a week, and once both are done or skipped it never comes back.
- Interface size in the app. Settings → Appearance sets 100, 110, 125 or 140%, and ⌘+ / ⌘− / ⌘0 (Ctrl+Shift off macOS) step it. The window zooms natively, terminal included. The app now opens at 110%.
- Talk to your agents from Telegram (Premium). Reply to a session's
message in Telegram and Caprock types it into that session and presses
Enter; the answer comes back in the chat as soon as the turn ends, with
code blocks left out unless you switch them on. Approve and Deny answer
a question the way the app's card does.
/sessionslists what is running,/new <project> <message>starts Claude Code in a project (Bypass asks first),/stop <n>stops one. Only sessions Caprock started are typed into. Off until switched on in Settings → Talk to your agents from Telegram. It runs through your own bot: no server of ours, nothing listening on your computer, and it works on mobile data. See docs/telegram.md. - Telegram set up in two steps. Settings → Telegram: paste the token
from
@BotFather(Caprock checks it with Telegram before keeping it), then send your bot the six-digit code shown — one tap from the button. No more copying a chat id out ofgetUpdates; a chat id typed in before keeps working. - Every Telegram message says whose it is. The first line is now the
agent, project and session — 🟠 Claude Code · caprock · Fix the cache
test — and what happened moves to the second. Alerts carry Mute this
session and, with phone access on, Open on phone;
/mute alland/unmutework from the chat. Free, like the alerts. - More than one sign-in. Settings → Subscriptions keeps several Claude Code or Codex accounts side by side, each in a folder of its own. Add subscription types the agent's own sign-in into a shell tab for you to run; Caprock never sees a password or token. Each one shows the account it is signed in to, its 5-hour and weekly windows and its last seven days. New agent and Quick chat get a Subscription picker, remembered per project; the session runs on it and its card says which. Near 90% of a window, the picker says so and offers one with room for the next session — running sessions never move and Caprock never switches on its own. Three per agent are free, your own sign-in included; more are Premium.
- See what your sessions cost the machine. While Caprock is open it
samples every live session's processes every 5 seconds: the status bar
shows the session's CPU and memory, the inspector lists its three busiest
processes, and a quiet flame marks the sidebar row and the tab of a session
that has used a full core or 2 GB for over a minute (
GET /v1/resources, aresourcesframe on/v1/live). Nothing is sampled while no window is open. - Settings → About shows Caprock itself: the daemon, the app and the
terminal holders, with their memory and CPU, and how many holders are
orphans, with a button that stops them (
POST /v1/resources/reap). CAPROCK_PPROF=127.0.0.1:<port>serves Go's profiler on a separate loopback listener, off unless set. See.ai/10-infrastructure.md.
Fixed
- Orphaned terminal holders are stopped. A
caprock pty-hostof this Caprock whose program has exited, or that nothing can reach any more and holds only an idle shell, is stopped five minutes after Caprock starts and hourly after that. Holders left by another data folder (a deleted demo or test install) are stopped from Settings. One that runs an agent or a command is never stopped. On the machine this was measured on, 15 holders left by a deleted demo data folder held about 13 MB each. - The daemon uses less CPU and memory. A file write no longer re-checks every transcript (only the written one; a 2-second sweep covers files written in the last 10 minutes), the storage breakdown reads the events table once instead of sorting it through temporary files, and SQLite's page cache is 16 MiB per connection instead of 64. Measured on a copy of a 1.8 GB database with 1,264 transcripts, two terminals and a steady stream of activity: CPU 3.8% → 3.1%, memory footprint 263 MB → 122 MB, the storage measurement over 40 s → 6.7 s.