ratchet² · the main line, cut open

the gut of ratchet²

Every commit that ever landed on main, from 2026-10-18 to 2026-10-21 — the trunk's whole digestive system in one scroll. Node size is churn; color is the hands that shipped it.
311
commits
4 days
alive
561.3k lines
churned
32
merges
3.5k files
touched
csquared
most prolific · 235
Chris Continanza 14
MacBookPro 3
csquared 235
home2 15
hq 17
laptop 3
macbookpro 2
ratchet 22
2026-10-18 · 55 commits
2026-10-19 · 112 commits
2026-10-20 · 100 commits
2026-10-21 · 44 commits
2026-10-2144 commits
CHANNELS is the grid; idle rooms auto-close after 24h
hq a29fea76b0 +460 −334 16 files 23:35
lobby grid rebuilt: channels left, pulsing agent dots across the top; ctrl+y opens chat from the lobby
hq 34534d6a75 +250 −135 2 files 23:06
client: reap ssh from the reader only, fixing a Close/Wait deadlock
csquared bf4f051ca1 +11 −7 1 files 17:05
ingest: drop HQ's own replies (reply-loop guard)
hq f7751f8c8c 21:51
Merge remote-tracking branch 'origin/pr/iphone-plan-go-interrupt'
csquared 3fcb3aa625 merge 21:51
mobile: plan view + go, and interrupt/stop in the session screen
hq f880559f7e +317 −6 11 files 21:50
gkb: project-docs area — one wiki home page per repo, from its README or docs/wiki-home.md
hq 5185bddd17 +472 −6 5 files 21:45
status: cells pulse instead of count; sparkline bars get real heights
hq 1c377c65f3 +21 −18 1 files 20:35
tui: redraw the chat pane when switching rooms
hq a080dd5302 +70 −34 2 files 20:32
status: a colored dot instead of the name, no names on the page
hq 2b98efd9b0 +38 −17 2 files 20:08
status: color-dot names, drop the lede and footer text
hq 03b5142089 +9 −12 1 files 20:00
caddy: status site rewrites to the mobile API's mounted path /ratchet/status
csquared c1241d604d +1 −1 1 files 14:54
ratchet/build-ingest-box: Build the gmail->ratchet ingest box in ratchet2 (repo at /home/ratchet/p…
ratchet 1f6b9b556f +343 −13 8 files 19:45
gkb: keep claude-history as corpus reference, not wiki articles
hq 0fbfbd608a 19:27
model self-handoff: handoff tool, provision guide, audit cron
csquared 8a4eea5e90 +855 −2 18 files 14:21
status: one-way public activity grid at status.hq.justsayless.xyz
csquared c55b56cedd +256 −1 4 files 14:19
lobby: raise the per-host session-list budget and bound the ssh connect
csquared 47ea93ac20 +60 −7 3 files 14:18
gkb: reflow caption transcripts into readable wiki paragraphs
hq cb43095a6f +191 −1 4 files 19:14
plan: scratch
hq 6ebf54af17 18:57
clear: the status bar starts over — totals, calls and spend reset with the conversation
hq 50223e31e0 +201 −17 8 files 18:57
client: carry ssh's stderr into the error; README: never gate 443 by port
hq 371cfb2d2c 18:29
scripts: retire vpn-lock-caddy.sh — the blanket 443 lock broke the public mail webhook
hq fb32220a2c 18:22
sshmux: one master candidate (Hold); everything else ControlMaster=no, and ssh's stderr stays out of the TUI
laptop d1ad8fef7e +118 −23 4 files 12:35
Merge remote-tracking branch 'origin/pr/mux-stale-socket-clean-2'
csquared 9d7275983c merge 12:23
sshmux: sweep stale control sockets before reusing them
laptop 101bcebeec 12:20
sync: pull home's coordinated hosts.json down to clients
hq cff9882e16 +103 −1 4 files 17:18
Merge remote-tracking branch 'origin/pr/secret-sync-reconcile'
csquared 2334377b62 merge 12:15
secrets: make 'secret add' reconcile to home too, not overwrite it
csquared 665dccd185 +91 −31 3 files 12:15
secrets: reconcile sync against home so a stale client can't delete a secret
csquared 84e158a13a +205 −4 2 files 12:11
lobby: new-session model choice comes from the selected host
hq fc43a40c36 +192 −11 6 files 15:54
mail: HTML is the way — render markdown to styled HTML with text fallback, and email anyone behind an approval card
laptop 43b3b38532 +175 −34 4 files 10:15
mail: send html alongside text, agents go out as RATCHET
csquared 6f94362bd1 +86 −6 4 files 10:06
briefing: email the morning brief to the user's inbox
ratchet f7a824349f +94 −2 6 files 09:42
scripts: provision-host.sh checklist for a new ratchet client host
csquared cf2d4da494 04:38
lobby: the activity grid — who posted where, on the TUI and both phones
csquared ee87164074 +701 −6 10 files 03:53
android: run the keyboard light controller as a foreground service
csquared fadc5a2fe1 +111 −2 5 files 03:40
click: garbage enqueues are not work
csquared 5403a9bb44 01:24
briefing: list the backlog items waiting on csquared
csquared e810259638 01:08
pr_push: auto-suffix a rejected name instead of round-tripping
csquared 30aabdec72 +87 −2 2 files 01:08
build: retry the pull over the mesh, and quiet repeating failures
csquared f8133f344d +166 −2 2 files 01:04
click: the pawl — propose rung 2 from merge evidence, surface merge failures
csquared e09a1ea687 +409 −1 5 files 01:02
Merge remote-tracking branch 'origin/pr/budget-bump-kick'
csquared 3a042700d4 merge 01:31
Merge remote-tracking branch 'origin/pr/event-driven-wake-2'
csquared 04627fdbc8 merge 01:31
budget: kick the agent when the cap is bumped
home2 ff688d7920 +61 −4 3 files 01:18
2026-10-20100 commits
lobby: sessions on unreachable hosts come from the snapshots they push to home's run/status/
ratchet 2211e5c81d +169 −3 7 files 02:57
tui: /approvals [N] lists the last N auto-approver verdicts
csquared 9879fafe42 +386 −4 13 files 23:39
Merge remote-tracking branch 'origin/pr/sshmux-persist-no'
csquared d83009988b merge 23:28
sshmux: ControlPersist=no, not 0 — 0 still enables it
csquared 61da0dd789 +10 −9 1 files 23:28
model: route image prompts to a vision-capable model
csquared e0b349ac06 23:13
sshmux: don't let a ControlPersist master outlive its Hold
csquared 5d4adfcddb +9 −3 1 files 23:13
Merge remote-tracking branch 'origin/pr/openai-reasoning-effort'
csquared 0ecc2dd885 merge 22:45
tui: reattach replays the full last turn, no welcome banner
csquared 8d6a1a3064 +20 −15 3 files 22:29
model: thread reasoning_effort through openai-compat (lockfile -> request)
csquared 33e0c6f894 +57 −6 4 files 22:41
rename home2 → hq: serve the phone API and mail on hq.justsayless.xyz, fix pairing hint and unit comments
csquared 3c35fceb23 +9 −8 4 files 22:25
Merge remote-tracking branch 'origin/pr/auto-plan-mode-threading'
csquared 4638a65dee merge 22:35
daemon: keep the opening plan in auto mode; thread a real mode through
csquared 88a5cd7384 +141 −58 11 files 22:35
vpn: make vpn-lock-caddy idempotent (delete table before add, no rule stacking)
csquared bc51838e14 +15 −7 1 files 22:29
vpn: lock hq port 443 to the WireGuard mesh (nftables, persistent)
csquared c1a170f627 22:28
Merge remote-tracking branch 'origin/pr/auto-plan-and-draft-on-plan-switch'
csquared 2f27e31f8b merge 22:18
tui: auto mode writes a plan; switching to plan mid-turn stops and drafts
csquared f5c4787fef +258 −26 12 files 22:17
rename home2 → hq in code: the home daemon's friendly name
csquared eba78e2e75 +12 −12 7 files 22:13
color: pick agent/session colors at random, not in wheel order
csquared 18372e51ba +49 −60 6 files 21:46
vpn: droid AVF VM peer setup (wg-quick) + key-emission helper
csquared c9ce89be52 20:51
tui: chat leaves the session scroll; the open chat window follows the latest room
csquared 2cf7c8e874 +142 −28 4 files 21:11
session: carry recent commits in the repositories prompt index
csquared 599e846f36 +43 −10 2 files 21:05
session: window awareness and self-clear/end tools
csquared a4b48b3627 +429 −6 9 files 20:07
daemon: card scans only surface fresh, still-open cards
csquared bacf166020 +79 −11 2 files 20:42
models: drop the committed pycache bytecode and ignore it
csquared dc5b962d3e 20:43
model: provision models on another machine via a host field
csquared 08d04ac871 +257 −6 6 files 20:41
daemon: wake on journal changes instead of fixed tickers
home2 1c5818e6c0 21:05
daemon: default schedule now has seven rows (briefing added)
home2 d8581df1b8 +1 −1 1 files 21:07
cron: morning briefing at 8am in a named timezone
home2 aa2bd93675 +354 −8 7 files 20:30
vpn: studio Remote Login helper (systemsetup + launchctl fallback)
csquared 056f57b01a 19:53
vpn: configure macOS utun with wg set, not setconf (Address= is not a protocol key)
csquared 938e870b2d +6 −2 1 files 19:20
vpn: mark the mesh scripts executable
csquared 061223fb17 18:49
vpn: document the phone hairpin IPv4/IPv6 nuance and fallback
csquared 45103e5d53 16:54
vpn: three distinct Hetzner peers, phone IPs, mesh SSH aliases
csquared 94c2541bca +13 −7 1 files 16:53
vpn: self-hosted WireGuard mesh scripts and phone attach gate
csquared 1f0352a363 +543 −6 7 files 16:10
airllm: fix the Apple-silicon smoke, and default to a model the mlx path runs
csquared 6f59125e18 +68 −14 2 files 19:32
ios: the auto-install survives reloads and a locked phone
csquared 2a51621ead +21 −4 2 files 19:26
tui: /gkb browses the general knowledge base
csquared 06124770af +149 −3 7 files 19:25
qr: a tool and a card that put a scannable QR in front of the user
csquared dcb9ae7803 +378 −36 8 files 19:20
ios: the auto-install builds the committed project, not a regenerated one
csquared fa654824e3 +7 −1 1 files 19:19
daemon: light terminal holds whole lines, not streamed words
csquared f6209b4284 +112 −9 2 files 19:16
ios: treat a paired iPhone as installable, not just a live tunnel
csquared 220acec6a9 +15 −9 2 files 19:04
airllm: keep weights, HF cache and shards on the model drive
csquared 11ea7fc2d5 +9 −1 1 files 18:58
airllm: keep weights, HF cache and shards on the model drive
csquared c21bba1501 +14 −2 1 files 18:58
gkb: stop repeating tags and merge duplicate terms
csquared 1613000cb3 +76 −21 3 files 18:57
daemon: announce a reload before it hands over
csquared e1be03e6b4 18:54
secret: read one line from stdin, so add no longer hangs in a terminal
csquared 33fd70b009 +41 −5 2 files 18:53
cards: an input card collects a typed value; secret request writes it kernel-side
csquared 67bd6eed51 +375 −52 11 files 18:50
gkb: a browsable wiki (ratchet gkb serve) and full source text in articles
csquared 6f03b72b73 +17.3k −1.9k 115 files 18:48
tui: show full hostnames in the chat pane; add ratchet UI terminology
csquared a7ea719256 +159 −15 5 files 18:45
models: parse Ollama Cloud's real /api/balance shape in usage
csquared f312e59db0 +79 −8 2 files 17:44
daemon: read a session's started time under its lock in info()
csquared cf3360aae1 +2 −1 1 files 17:34
gkb: write the article body, not a placeholder
csquared d2ada9848a +8 −1 2 files 16:45
daemon: a reload must not SIGKILL an in-flight merge check
csquared 84df839741 +88 −14 5 files 17:39
daemon: stop the kicker test racing the shared client script pool
csquared 9cd1896333 +12 −4 2 files 17:30
loop: place dangling tool_use answers adjacent to the assistant
csquared 0cd6a36fb0 +100 −9 2 files 17:22
airllm: pick a python with torch wheels, not the newest homebrew one
csquared 54f3edbd3a +16 −3 1 files 17:28
queue: re-enqueueing a failed pr/<name> reopens it
csquared 1278160fe7 +85 −17 2 files 17:22
daemon: kick an interrupted turn on resume, not on reconnect
csquared 6be37389fd +20 −50 4 files 16:59
daemon: kick an interrupted turn when its client reconnects after reload
csquared 95d6d268d8 +224 −15 6 files 16:45
ios: commit the project.pbxproj xcodegen regenerates
csquared b51d846703 +8 −8 1 files 16:31
gkb: cap article slugs so a long journal first line can't exceed the file name limit
csquared 2aaabb8b93 +47 −1 2 files 16:11
ios: auto-install the app when a new build is in reach
csquared 181129450f +468 −11 13 files 15:57
session: sync the sandbox runner's policy on mode switch
csquared 759ca92bd5 +52 −2 2 files 15:48
models: ollama, AirLLM and Ollama Cloud sidecar tool
csquared f9e63f4b30 15:48
hackernews: a daily list of the front-page top 200 in the corpus
macbookpro 03b02c9f42 +523 −3 8 files 15:26
rebuild: follow symlinks when checking the running binary's path
macbookpro 620ae1cd08 +49 −1 2 files 15:17
gkb: the general knowledge base, distilled from corpus and journal
home2 f70aaf6dcf +597 −9 13 files 19:56
notify: add Twilio SMS as a second sink
home2 58ac2cd6bb +236 −11 4 files 19:32
mail: agent-address replies go out without an approval card
home2 9835af8fb2 +56 −74 4 files 16:19
overview: drop the pomodoro section, show the merge queue full-width (last 7)
csquared 5a1c507e8d +42 −41 3 files 11:13
mobile: the change feed follows status snapshots, not just the journal
home2 4570e2291d +146 −9 5 files 15:24
cli: ratchet help [CMD], and CMD help|-h|--help|? for every command
csquared e2b8fdc1fc +194 −1 3 files 04:18
tui: show each session's model in the lobby session list
csquared 6360827487 +30 −1 2 files 04:18
channels: a message synced in late is still delivered
csquared 4d8a826166 +118 −15 4 files 04:16
tui: /wake is gone, drop it from needsSession
csquared 23d0e96856 +1 −1 1 files 04:14
tests: never see (or use) home2's backup keys
csquared 99d3ab1706 +14 −2 2 files 04:10
board and kanban out of the phone apps, docs and diagrams
csquared 23e52da702 +212 −216 27 files 03:58
android lobby: one row per key, so a duplicate session can't crash it
csquared fea3b39925 +18 −2 3 files 03:58
lobby: no @help — ratchet machine help prints usage; a renamed host's stale snapshot no longer doubles sessions; iOS row drops the name echo
csquared fefb9840d2 +67 −9 6 files 03:56
prose: no 'board' left in the Go code; kanban only where it names legacy events
csquared e078593fcb +261 −262 64 files 03:54
lobby: h picks the host a new session opens on
csquared 976a2fd53c +214 −15 7 files 03:54
rename: board → chat/inbox, kanban → decision; drop the dead TODO card
csquared d68cd45587 +420 −477 43 files 03:50
/cron: administer home's cron table (list, add, run, schedule, rm) from the TUI and ratchet cron
csquared 2823f2aecd +1.1k −32 16 files 03:45
/color and /c rename the agent, not just tint the prompt
csquared 76addf3d8f +168 −17 13 files 03:44
prompts: channels, not the board; no kanban or work list
csquared 21fc568370 +49 −42 11 files 03:43
channel membership comes from the journal, not run-time Room.Join
csquared bdbbb17531 +145 −99 4 files 03:32
channels are the one list; the lobby drops BOARD for channel rows with context
csquared 274d8eb0b4 +251 −124 15 files 03:29
remove the wake mechanism: every message delivered to a participant starts a turn
csquared 2ea510b3c7 +311 −954 52 files 03:09
LightsServer: ratchet itself posts the color (lights.go), no hook script
csquared 13c69799bf +4 −3 1 files 02:54
ratchet/android-lights-server: Repository: ratchet2, work only in mobile/android (Jetpack Compose app, …
ratchet 98ed9b6755 02:53
light host: the prompt color goes to the ratchet app on the gateway, which owns the keyboard (the droid's VM has no USB)
csquared 39c2e30ce9 +96 −3 3 files 02:50
ratchet/android-lights: Repository: ratchet2. Work only in mobile/android (Jetpack Compose app, …
ratchet 86195c08fc +252 −6 6 files 02:39
lobby: host on every session row, no id, arrows all move, model pick survives redraws
csquared 642a31fcac +55 −32 3 files 02:20
lobby: p shows a session's plan under its row
home2 92333eb0cc +134 −5 7 files 07:38
board: posts wake the room, and idle sessions report to their channel
home2 995f44b756 +133 −39 9 files 07:27
deploy: drop NoNewPrivileges from ratchet-serve so it can self-rebuild
home2 1e778e2691 +5 −3 1 files 05:43
daemon: record why a self-rebuild failed in the build journal
home2 a8371359a1 +6 −1 1 files 05:37
mobile: the light terminal shows ~500 lines and pages back through older ones
home2 c16cf134b4 +341 −37 15 files 03:58
tests: make the full suite green on home2, and flush ended on shutdown
home2 5c239dc87e +86 −25 10 files 03:56
daemon: give hot reload a grace period before interrupting busy turns
home2 290ade5b0c +186 −37 3 files 03:35
2026-10-19112 commits
anthropic-subscription: read cc_version off the Claude client
csquared 03e6285d56 +114 −9 5 files 22:18
build_app: ratchet apps in the catalog, and crashlogs pulls the iPhone's reports
csquared b43dd44aaa +591 −28 6 files 22:18
readme: document light hosts and ratchet machine --light/--heavy
csquared 4b9d53ac25 +8 −1 1 files 21:56
mobile: a session's light terminal — GET /api/sessions/{id}/scroll
csquared 546013bc38 +488 −28 14 files 21:54
light host: lobby + terminal on a phone, sessions on home
csquared da4bac45fd +532 −26 13 files 21:52
ios: no NavigationStack inside the app's stack, and no path writes mid-update — opening Cards crashed on both
csquared 483476790f +330 −110 10 files 21:33
mobile: every list reply marshals as [], so an answered card clears and the phone stays paired
csquared ace47b102d +191 −66 8 files 21:11
build: a request is closed per machine, and old ones are ignored
csquared e1fdabe1b0 +72 −11 2 files 21:11
mobile: empty lists go out as [], and Android treats null as the default
csquared 69c66b0447 21:05
rebuild: compare the running binary's version, not the pull
csquared 23281fca59 +32 −5 2 files 20:59
tui: Ctrl+Y shows/hides the chat pane
csquared 8119f94a47 +70 −4 3 files 20:51
mobile: POST /api/sessions (new) and /api/sessions/{id}/stop for the lobby's canned actions
csquared e673feef3e 20:38
ratchet/android-lobby: Repository: ratchet2. You work only in mobile/android (Jetpack Compose, …
ratchet d21b03bfb8 +1.7k −932 17 files 20:35
ratchet/ios-lobby: Repository: ratchet2. You work in mobile/ios (the SwiftUI app 'Ratchet';…
ratchet 39dbbca57b +2.0k −1.4k 20 files 20:35
ratchet/overview-server: Repository: ratchet2 (Go, module `ratchet`). You have up to 200 model ca…
ratchet 8013c30dd7 +1.1k −6 19 files 20:32
ratchet/presence-android: Repository: ratchet2. You work only in mobile/android (the Jetpack Compo…
ratchet 5f11a159f7 20:17
ratchet/presence-ios: Repository: ratchet2. You work only in mobile/ios (the SwiftUI app 'Ratc…
ratchet f85cb45047 +609 −14 10 files 20:17
ratchet/presence-server: Repository: ratchet2 (Go, module `ratchet`). You have up to 200 model ca…
ratchet 68c9d8035e +1.1k −3 21 files 20:11
lobby: only the focused section draws the cursor; mail wakes home again
csquared 35f277173c +66 −7 4 files 20:01
ratchet/android-cards-channels: Repository: ratchet2. You work only in mobile/android, the Jetpack Compo…
ratchet b848d2ab99 +416 −420 10 files 19:48
ratchet/ios-cards-channels: Repository: ratchet2. You work only in mobile/ios, the SwiftUI app 'Ratc…
ratchet 4c04fd6d27 +494 −488 12 files 19:46
tui: ColorHook — run ~/.ratchet/hooks/color WORD when the prompt color changes
csquared d812e41994 +247 −2 4 files 19:34
Merge lobby-detach: lobby (sessions, channels, hosts), room view, Ctrl+C detaches, tail replay, title steps
csquared c0d9750cf5 merge 19:14
pause: hold back a daemon's automatic workers from the shell or the phone
csquared c23509b939 +221 −5 15 files 19:02
gofmt
csquared a796c9faca +2 −2 1 files 18:59
ratchet/secrets-tools: Repository: ratchet2 (Go, module `ratchet`). Your worktree is forked fro…
ratchet dcc4b5b95e +1.1k −13 17 files 18:57
ratchet/cards-phone: Repository: ratchet2 (Go, module `ratchet`). Your worktree is forked fro…
ratchet f3d82d938e +580 −16 16 files 18:57
ratchet/phase3-cards: Repository: ratchet2 (Go, module `ratchet`). Work on your branch; run `g…
ratchet d00b8df8f9 +68 −12 6 files 18:08
cards: a restarted daemon no longer replays the journal's card history
csquared dda19a8392 18:44
ratchet/lobby-detach: Repository: ratchet2 (Go, module `ratchet`). Your worktree is forked fro…
ratchet c0680a2c7b +875 −122 18 files 19:03
attach: wait out a daemon reload instead of losing the window
MacBookPro c87ecec436 +151 −8 3 files 18:50
sessions: always show the full display name mr<color><n>@<host>
MacBookPro c57b4c3da5 +73 −27 6 files 18:42
agents: workers write only their own worktree, get 200 calls, and say when they run out
csquared df0c2519d7 +249 −17 9 files 18:39
overview: expanded sessions show a recent-activity scroll
MacBookPro e6ab12efb4 +104 −4 4 files 18:33
overview: render the merge queue as a tinted table
Chris Continanza 2ed6141ec6 +184 −39 8 files 18:20
channels replace workstreams; board and work lists are out
csquared d7271b1d36 +1.7k −2.3k 60 files 17:38
ratch up initial
csquared 5f6d78034c 17:02
workflow: require a branch name for push
Chris Continanza 9037afc4b3 15:33
workflow tool, merge queue, per-host rebuild, msg autocomplete
Chris Continanza c5648ca394 +2.0k −67 30 files 15:30
bash: give git a fallback author identity named after the machine and session
csquared 8ceda80fda +178 −5 6 files 18:25
overview: attach to sessions on every machine, not just this box
csquared 2c76e9de76 merge 20:25
overview: attach to sessions on every machine, not just this box
csquared 857096731e +348 −68 6 files 18:26
mail: HQ's inbox over Resend, and send_email behind an approval card
Chris Continanza 695b7e520b +1.8k −3 12 files 14:44
Merge pr/wake-lobby-pane-2: wake flag, lobby, chat pane
Chris Continanza 8f2b3afc3e merge 14:58
tui: chat pane; room traffic leaves the transcript
Chris Continanza 6728c85ce1 +675 −69 16 files 14:44
tui: a bare ratchet opens the lobby, not a session
Chris Continanza fc62244915 +185 −17 7 files 14:37
board: wake flag; agent broadcasts no longer wake every session
Chris Continanza d7a8f4eb14 +748 −96 28 files 14:30
Merge remote-tracking branch 'origin/pr/session-worktrees'
csquared 113e8d6c46 merge 13:03
Merge remote-tracking branch 'origin/pr/board-identity-2'
csquared 0ae222cf64 merge 13:01
Merge remote-tracking branch 'origin/pr/attach-handle'
csquared ba4ed6f36e merge 13:01
Merge remote-tracking branch 'origin/pr/approve-why-first'
csquared 06487a17ba merge 12:21
mobile: the Chat tab opens on rooms — #all, a card per host, a card per open stream
csquared ee47d2cd60 +556 −66 7 files 11:32
board: messages carry who and where; host rooms are views; the phone speaks as its owner
csquared 33b4a5d9b2 +411 −91 20 files 11:27
serve: add 'ratchet serve restart' to kill clients and restart
Chris Continanza 5a255eab64 +318 −2 11 files 10:57
mobile/android: stop tracking the Kotlin compiler's .kotlin/ session files
csquared 476e4c29ba 11:26
attach: document the handle form and test handle resolution
csquared 1f77d56649 +24 −2 2 files 11:26
cards reach the user on any machine: route request_run cards through the journal
csquared 65b67d957b +548 −33 12 files 11:22
approval card: show the agent's reason before the command, italic, on TUI + both apps
csquared d7838f0051 +29 −13 5 files 11:10
mobile: don't read the board aloud on launch or room switch
csquared 6d2e2cb706 +11 −16 2 files 10:58
session worktrees: every session edits in its own git worktree; land rebases and fast-forwards, serialized per repo
csquared e5055f5a60 +769 −20 15 files 10:56
Merge remote-tracking branch 'origin/pr/session-colors'
Chris Continanza fd11aa7883 merge 10:44
overview: a final "new session" option in the sessions pane
Chris Continanza b6aa70233e +31 −11 2 files 10:34
Merge remote-tracking branch 'origin/pr/mobile-chat'
csquared 7fb02b23a3 merge 10:09
mobile/android: the jump pill scrolls from a coroutine scope
csquared 4ad32459c0 +12 −1 2 files 09:27
Merge remote-tracking branch 'origin/pr/task-tools'
csquared 8e32b80129 merge 09:26
Merge branch 'chat-android' into pr/mobile-chat
csquared f9a3d0f18a merge 03:51
ratchet/chat-android-2: Implement the Chat tab for the Android app in ratchet2 per docs/design/m…
ratchet 6708c333b3 +468 −122 8 files 03:48
Merge branch 'session-android' into pr/mobile-chat
csquared bfb804bbb4 merge 03:42
ratchet/session-android: Implement the HQ drop-in session screen for the Android app in ratchet2 …
ratchet 3fa2d0c306 +619 −1 5 files 03:35
mobile/ios: a session event may carry no seq (a card replayed at attach); keep it
csquared dd2ffcd680 +3 −2 2 files 03:33
Merge branch 'session-ios' into pr/mobile-chat
csquared 746541947f merge 03:33
ratchet/session-ios: Implement the HQ drop-in session screen for the iOS app in ratchet2 per …
ratchet 93e41e6fff +708 −1 5 files 03:33
mobile/ios: Settings is a tab; drop its Done button
csquared d5547ada93 +1 −5 1 files 03:24
Merge branch 'chat-ios' into pr/mobile-chat
csquared 634acadc12 merge 03:23
ratchet/chat-ios: Implement the Chat tab for the iOS app in ratchet2 per docs/design/mobil…
ratchet 23b19d4aef +338 −52 6 files 03:23
docs: mobile design matches the server as built (position paging, job command, no sandbox change)
csquared d259d70e4c +12 −10 1 files 03:13
news from the phone: POST /api/news/refresh runs the news job (new daemon command job); #research answers arxiv ids with reviewer.Summarize and posts them as news
csquared d0b16765ba +312 −2 12 files 03:12
auto-approver: default on, and judge with session context
csquared 8491bdcfa0 +195 −5 8 files 03:11
build_app: compile iOS/Android apps in-sandbox; document the no-approval tools
csquared 852378c749 03:10
mobile api: POST /api/files stores an upload under ~/.ratchet/files/<yyyymm>/<id>-<name> (25 MB cap); GET /api/files/… serves it back
csquared 7ae83a446c 03:08
mobile api: drop into a session from the phone: GET /api/sessions/{id}/events (SSE over attach), POST …/prompt, POST …/approve
csquared 4a81f68d12 03:06
mobile api: GET /api/msg?before=<id> pages a room backwards; reply gains more
csquared 587018865d +83 −3 2 files 03:03
docs: mobile plan findings for steps 1, 6, 7 (home2 schedule.json lacked the news row)
csquared efba291d8d +19 −1 1 files 03:02
mobile/ios: regenerate the Xcode project for HQView.swift
csquared f200dc394c +4 −4 1 files 03:00
mobile: Office → HQ in both apps (tab, title, view/screen files, model; wire key stays "office")
csquared babc863cd2 +40 −37 9 files 02:58
docs: mobile design (tabs, mockups, endpoint/Swift/Kotlin tables per screen)
csquared 7454598c25 02:55
docs: mobile redesign plan (handoff for a cleared session)
csquared 2fae2d7ac4 02:49
README: ratchet 1 is retired; the home is ~/.ratchet, RATCHET_HOME is never set
csquared 88740d184a +7 −7 1 files 02:31
sessions: auto-assign a color name, tint the prompt and overview
Chris Continanza 5ea87a2692 +186 −36 13 files 02:30
room: any room is readable by name; stream enter/leave joins its chat
csquared 1b7b28ebf5 +136 −18 5 files 02:29
deploy: clone code repos from home2 (git@home2.justsayless.xyz)
csquared 1d50a19be8 +8 −8 1 files 02:04
cards: a window only drops its own session's card; answers clear the card in every window
csquared c2a6694b5d +157 −17 6 files 02:01
ls and overview show which session has a card waiting
csquared 303b59e0d8 +14 −2 4 files 01:59
session: carry the model downgrade path through /model switches and child agents
csquared 04114b44d8 +70 −14 2 files 01:45
tui: tighter status bar and a title tool for sessions
csquared b2462c540a +171 −29 18 files 01:50
cron: drop the stale triage row from DefaultSchedule; skip rows for unregistered jobs once at startup
csquared 2227d47779 +26 −8 3 files 01:53
Merge branch 'pr/serve-stop'
Chris Continanza 6eb1479370 merge 01:36
model: native Claude Max subscription provider (no CLI, no API key)
csquared 12de1a1d6c +164 −2 6 files 01:32
add ratchet serve stop: shut down the daemon and all clients
Chris Continanza 9d139e1d36 +185 −14 8 files 01:32
speech: vendored Kokoro TTS behind a resident kokopop server
csquared 0121db0224 +560 −8 6 files 01:16
tui: leave the overview when an approval card arrives
csquared f21585bf85 00:58
Merge branch 'pr/home2-one-server'
csquared 9b2b1d22c1 merge 00:48
daemon: home2 is the one server; laptop daemons are clients
csquared 78af5efa36 +272 −17 9 files 00:25
build: stop auto-reloading on make build; make reload is explicit
csquared 00a9ff4a2f +16 −11 4 files 00:45
Merge branch 'pr/home2-one-server'
csquared 4451ea371f merge 00:43
Merge branch 'pr/cards-one-chat'
csquared 4ffd093428 merge 00:43
Merge branch 'pr/diagrams'
csquared 826c395bc0 merge 00:43
overview: attach to another session even while this one's turn runs
csquared 32d04f50b1 +67 −5 2 files 00:27
cards: every session's request_run appears in the chat the user is in; answering routes back
csquared 744f86b310 +198 −17 7 files 00:26
daemon: home2 is the one server; laptop daemons are clients
csquared 7c16dfc304 +272 −17 9 files 00:25
diagrams: workstream model, hq/laptop/studio names, deploy_preview rung, justsayless remote
csquared f48ee4c9db +128 −128 5 files 00:11
diagrams: fix all.d2 so d2 0.9 renders the full set
csquared f2896ebe26 +139 −44 3 files 00:07
2026-10-1855 commits
workstreams: /msg autocompletes this machine's friendly name too
csquared e96c6ee11f +12 −6 1 files 23:56
workstreams: build the phone apps green (iOS sim-build, Android build+unit)
csquared 3b54e0b08c +10 −24 4 files 23:53
workstreams: phones on the new API (iOS + Android), mobile API.md
csquared a905ae4cb6 +518 −1.1k 25 files 23:38
workstreams: machine name, stream migrate, docs and daemon diagram
csquared 778fcff219 +136 −90 10 files 23:33
gofmt
csquared bdf67ee3af +6 −1 1 files 23:30
workstreams: captain, work, color agents, /msg routing, cross-host boot
csquared b7426a0474 +1.6k −3.4k 51 files 23:30
workstreams: journal events, workstream/color/msg packages
csquared 2f642d3075 +1.0k −9 12 files 23:03
bill: cached tokens are billed once, off-peak hours at their discount, and a /model switch bills under the new entry
csquared 85b577dcf9 +435 −27 14 files 22:31
Merge branch 'pr/hot-reload' into pr/deepseek-billing
csquared 8ba1cc42fa merge 22:27
docs: hot reload in sessions.md and the README
csquared b9e6fa956d +74 −6 5 files 22:22
daemon hot reload: ratchet reload hands every session to the new binary without ending it
csquared 27cb9f59ac +1.8k −54 21 files 22:20
Merge branch 'pr/vote-out-backlog' into land/2220
csquared 5189f8157c merge 22:20
kanban: a no vote removes a BACKLOG item (dropped, not deleted)
csquared d00af2a053 +146 −16 9 files 22:14
Merge branch 'pr/person-todo'
csquared 04631920da merge 22:13
Merge branch 'pr/dismiss-ended'
csquared b755baecbf merge 22:13
overview: x dismisses an ended session, X clears every ended one
csquared 44307ff9e6 +146 −4 2 files 22:11
overview: switching sessions takes effect when the daemon confirms the attach
csquared a957b4f85f +49 −24 7 files 21:59
model: a lockfile edit applies to the next session without restarting the daemon; /model mid-turn lands when the turn ends and the prompt rule shows it
csquared 8e78f413e2 +248 −18 8 files 21:11
kanban: your own items go straight to TODO; an agent asks with a card
csquared 4675583751 +460 −105 27 files 21:09
overview: the kanban as compact cards with the backlog under them; o/g/d/t vote on the lit card without leaving
csquared 3110046958 +526 −92 5 files 20:43
/kanban: the backlog is its own view
csquared 4c0dd234a5 +123 −37 5 files 20:33
/kanban: Trello-style cards for TODO, DOING and DONE, the backlog listed below
csquared 6a40df2a45 +286 −7 5 files 20:26
backup tests: firstLine folds whitespace and keeps 300 bytes; the unconfigured error names B2_*
csquared 16591c2a5d +2 −2 2 files 20:26
phones: drop the ratchet 1 Backlog tab, version codes above ratchet 1's; Android pairs from a link again
csquared fd45feda33 +8 −10 3 files 16:55
backup: B2_* names, region from the endpoint, readable S3 errors
csquared a7097e9848 +39 −11 2 files 16:50
backup: R2_REGION for Backblaze B2 and other S3 hosts
csquared 1a93b96c5e +12 −3 2 files 16:42
README: the phone apps and the board wake
csquared f49bb21efc 16:39
Android: kanban, office, feed screens with nudge, add-to-TODO (dictation, greenlight) and start; messages marked speak are read aloud
csquared 35fed549e9 +813 −340 13 files 16:38
daemon diagram: the phone app (admin screens) reaches the daemon over https via Caddy (mobile API)
ratchet ecc6a13534 +44 −44 2 files 21:35
a board message to the agent opens a session when none is up
csquared 8029516f00 16:34
an idle session wakes when the board brings its agent a message
csquared ee16cbeb7a +63 −2 3 files 16:33
test: an I1 deploy through host_run carries its effects in the tool output and the trace
csquared 99b268ee9b 16:30
iOS: kanban, office, feed screens with nudge, add-to-TODO (dictation, greenlight) and start; messages marked speak are read aloud
csquared 47de2d758b +941 −256 14 files 16:29
README for the office, voice, rungs and home2; notifier keeps the last failure; command tests
csquared f8bfb59bfa +105 −2 3 files 16:23
ratchet kanban: the board from the shell
csquared e32567dcd0 +204 −1 3 files 16:22
diagrams in the TUI and CLI (d2 to ASCII under 20 boxes); rung 3 deploy_preview with on-demand TLS on home2
csquared e1a1e70d50 +789 −17 19 files 16:21
voice: Ctrl+Space push-to-talk through whisper.cpp pinned by hash, /talk speaks replies and messages for you, the phone API marks messages to speak
csquared 2f8c4601b3 +628 −7 11 files 16:17
ratchet rung: grants and drops as decision.record; ls asks only daemon hosts
csquared 7d972a9d6b +117 −2 4 files 16:11
infra rungs: hosts.json allowlists per host, host_run over the kernel's keys, host-rungs.sh for ratchet-ro and ratchet-deploy
csquared 207c497a8f +567 −1 8 files 16:10
phone admin API: kanban, vote, start, done, drop, decisions, news, daemon view, nudge, pom, huddle
csquared 9f01fa074c +668 −2 9 files 16:08
office: one pomodoro clock in the daemon, /huddle pauses sessions at a tool boundary, ntfy notifications, nightly news from the corpus
csquared 3a8a2db3e9 +1.1k −13 22 files 16:03
journal backup to R2: SigV4 client, ratchet journal backup|restore, nightly job and every 100 events
csquared 5b98c05347 +702 −2 9 files 15:47
ls asks every host in hosts.json even without a local daemon
csquared 49c6b18f95 +4 −2 1 files 15:44
home2 ops: setup-home2.sh, ratchet-serve and ratchet-mobile units, Caddyfile, repo list and clone script; RATCHET_HOME
csquared 45522b14b8 +306 −1 7 files 15:41
five seam tests: Remote against a live daemon, proto state goldens, cron firing, pickup nudge and resume, one card one answer
csquared b44f7feebc +569 −18 7 files 15:30
coverage for the new packages, a totals lock in the loop, Serve waits for cron
csquared b7b43e0f21 +1.0k −30 14 files 15:18
phase B loopback test, command tests, README for ratchet 2
csquared 936ec96092 +214 −110 5 files 15:09
kanban, triage, reviewer, pickup, and the TUI overview
csquared 5bf6fe6314 +3.2k −32 20 files 15:07
daemon phase A: ratchet serve owns sessions, the TUI attaches over a socket
csquared 9731d7e33d +4.2k −207 28 files 14:52
port ratchet 1: drop eval, gate, evolve and the phone terminal; state becomes prompts on disk
csquared 91f0e84eb2 +452.6k −2 1484 files 14:32
designs
csquared 7640f253b4 14:18
rename groomer to triage
csquared 8be84ba1ac +43 −43 3 files 14:13
design: first three D2 diagrams, stores, daemon, ladder, with a make target
csquared 27fb11e62f 14:11
brief: D2 diagrams as workstream 9
csquared ec96c4f207 +11 −1 1 files 14:10
brief: ratchet 2 as a daemon over all of ~/projects, groomed kanban, phone admin, voice, infra rungs
csquared fb1c9cecce 14:09
The trunk of ratchet² as of 2026-10-21T23:35:24 — generated from git log main on the drop machine. Merges are the diamond joins; every straight dot is a fast-forward step. Nothing here is rewritten: this is the gut, not a highlight reel.