Releases: DilanDoshi/wake
Release list
v0.1.5
This release adds teams — an operator-chosen tag that groups and routes the fleet by hand, sections the roster and the board, and lets the manager coordinate by team — rebuilds /resume as a fast, Claude-style searchable picker over every parked and on-disk session, and lets the manager choose the name of the agents it spawns. It also fixes a multi-line room @mention that spilled into blank rows and a composer that lost the cursor through a draft's blank lines.
New features
Teams — group and route the fleet by hand (#106, #107, #109, #110, #111)
/team <name> tags a session with an operator-chosen team (/team none clears it), heading its own section of the roster and the board — the manager and any un-tagged agents stay in a header-less block above the sections, in the order teams were created. @team fans a message out to everyone in it, the same way @name and @all already route. The tiled board (/board then ⇥) sections into per-team shelves rather than one flat grid, and the row view's header gained a blank line above the divider so adjacent teams read as separate chunks. The manager can now do the same grouping itself — set_team and set_color MCP tools, so "put test-x and test-y in a testing team" no longer needs the operator to run /team by hand — and a team completes in the composer's @ mention menu (drawn @backend (team)) and as a /team argument, so joining one is a completion instead of a retype.
/resume is now a fast, searchable picker (#102, #112)
A bare /resume opens an interactive picker over both parked sessions and on-disk conversations Wake has never seen live — the room offers multi-select (␣ toggles, ↵ resumes every checked row), a DM offers single-select — instead of only accepting /resume <name> for an already-parked session. Resuming is in place: the same session id, its transcript continuing, whether the row came from the park book or from disk. The picker was then rebuilt toward Claude Code's own: type-to-search filters the whole recency-sorted list live, and the discovery scan behind it — reading every transcript under ~/.claude/projects to prove which directory each one ran in — is now parallelised, cutting a ~360-session fleet's open time from 3.58s to 0.85s so the picker no longer appears to "show nothing" while it works.
The manager can name the agents it spawns (#103)
spawn_agent takes an optional name, so an instruction like "spawn agents called x, y and z and give each a task" produces exactly those names instead of ones from the daemon's pool. The daemon stays the sole naming authority — the name rides the same field wake new <name> already uses and is validated exactly as it is there — and an operator-impersonating name (operator, admin, system, and the like) is refused, since a model authoring that chrome is the same hazard Wake already refuses for a session's label.
Improvements
- Dim received cross-session message bodies (#100) — a peer's cross-session message (Claude Code's native session-to-session channel) rendered its body in the same white as the agent's own replies, so in a DM the incoming message and the agent's response to it were hard to tell apart at a glance. The body now dims to a subtle grey on both the DM and the room, in both directions the feature already supported.
Fixes
- Multi-line room
@mentionsno longer spill into blank rows (#104). A broadcast typed with⌥↵and starting with@namerendered with large vertical gaps between its lines in the group chat, while the same text rendered correctly in the composer. The mention's re-coloring was re-grounding the entire remainder of the message rather than just its first line, which defeated the room's trailing-space trimming on every line after the first. - The composer no longer loses the cursor through a draft's blank lines (#105). A long message with blank rows between its sections — a group-chat draft split into paragraphs — could scroll the line you were actively typing off the bottom of the box. The composer's row count treated a typed blank line the same as the padding below the draft, undercounting the draft's true height; each blank line now gets a one-cell marker so it is counted like any other row.
/resumeandwake attachnotices no longer share a stale caveat (#101). Both said "what it said before now is not here — claude keeps the transcript, Wake does not," which stopped being true once a resumed or reattached conversation started re-reading its own history. They now say two things that are each true: a/resumewake reads "@namehas been resumed," and a live reattach reads "@name— reattached."
Install
go install github.com/DilanDoshi/wake/cmd/wake@v0.1.5Or download the prebuilt binary for your platform below; verify it against checksums.txt.
Full changelog: v0.1.4...v0.1.5
v0.1.4
This is mostly a fix release: a room-promotion feature for DM replies, plus fixes for a mouse drag-select mis-anchor, fast-scroll corrupting the composer, a false 0%/blank context reading, and a queued-message pin echoing a redundant @name.
New features
A left DM's reply now promotes into the room (#92)
A reply to a DM you've walked away from used to stay DM-only for the whole turn — you had to reopen the DM, or notice the roster's unread badge, to see it. Now a turn is held out of the room only while its DM is actually on screen and being read; once you leave that pane, the rest of the reply's prose promotes into the room, attributed to its agent like any broadcast. The DM stays the full record either way — this just makes the room the one place you can watch a busy fleet without missing anything.
Fixes
- Queued-message pin no longer echoes your own
@nameback at you (#93). A message broadcast from the room to a busy agent is held in that agent's type-ahead queue and shown in a pin above its composer. For a room broadcast the pin was drawing the raw echo, which keeps its addressing@name— so an agent's own pin read⧗ @scroll-bug here is an example, a redundant self-mention. The pin now strips exactly the recipient's own leading@name, while leaving a bystander's mention, an@allmarker, and a longer@name-prefixed path untouched. - Status bar no longer shows a false 0%/blank context reading (#95). The context window was looked up by a top-level
modelfield that no realresultframe ever carries, so it fell back to 0 on any turn that had used more than one model in its epoch (a--fallback-modelfailover, or any session past its first/clear). The window is now resolved directly from the usage entries — the named model when present, else the largest window among them — so thectxsegment shows a real number instead of blanking. - Drag-select in the room/DM now anchors to the row under the pointer (#96). Dragging to highlight a message you sent in the room — while an agent was working, or in a DM while
/compactwas running — could put the highlight bar (and the copied text) a couple of rows above where you actually dragged. Both surfaces now measure the selection against the same geometry they draw with. - Fast scrolling no longer leaks stray characters into the composer (#97). A hard mouse-wheel flick could flood the terminal with SGR mouse reports fast enough that Wake's kill-switch queue dropped a chunk mid-sequence, and the orphaned fragment (things like
[<64;48;56M) landed in the draft as typed text. The kill switch now only forwards escape-sequence-aligned chunks, so a drop can lose a wheel notch but can never split a report into stray runes.
Install
Download the binary for your platform below, or:
go install github.com/DilanDoshi/wake/cmd/wake@v0.1.4See checksums.txt below to verify a downloaded binary.
Full changelog: v0.1.3...v0.1.4
v0.1.3
Changelog
- 583cd03: Merge PR #83: fix: walk the completion menu with ↑↓ (@DilanDoshi)
- 9ebf01a: Merge PR #84: fix: don't light the /loop icon off an errored ScheduleWakeup (@DilanDoshi)
- 9a6c0ea: Merge PR #85: feat: type-ahead message queue (hold a message typed while an agent is busy, deliver when free) (@DilanDoshi)
- 3e14f0d: Merge PR #86: fix: head the room's cross-session line sender → recipient (@DilanDoshi)
- 7399e59: Merge PR #87: fix: carry the context figure on the fleet report (@DilanDoshi)
- a6bbfb1: Merge PR #88: fix: stop the working line while only a subagent runs (and guard fork of it) (@DilanDoshi)
- 8bc692e: Merge PR #89: fix: replay running dispatches to a late-attached client (@DilanDoshi)
- d71c5e6: Merge PR #90: chore: bump banner version default to 0.1.3 (@DilanDoshi)
- ef671c4: Merge remote-tracking branch 'origin/main' into feat/message-queue (@DilanDoshi)
- 1b7bc11: Merge remote-tracking branch 'origin/main' into fix/subagent-sidebar-late-attach (@DilanDoshi)
- 2343add: chore: bump banner version default to 0.1.3 (@DilanDoshi)
- dec6a87: feat: make the queue lifecycle-driven, and fix pane overflow + fast follow-up (@DilanDoshi)
- 7fe42d7: feat: queue messages typed while an agent is working, flush on its idle edge (@DilanDoshi)
- bff69c8: fix: carry the context figure on the fleet report (@DilanDoshi)
- 0abb151: fix: don't light the /loop icon off an errored ScheduleWakeup (@DilanDoshi)
- 7937828: fix: flush the queue on the batched stream path, and bound the pin (@DilanDoshi)
- 5c29247: fix: head the room's cross-session line sender → recipient (@DilanDoshi)
- 3caff19: fix: reconcile inflight per report, fix preview budget + reattach strand (@DilanDoshi)
- 44f8af0: fix: refuse a fork while a background subagent still runs (@DilanDoshi)
- a05ec1d: fix: replay running dispatches to a late-attached client (@DilanDoshi)
- c7f0eec: fix: stop the working line while only a subagent runs (@DilanDoshi)
- 2772158: fix: walk the completion menu with ↑↓ (@DilanDoshi)
- 48231e0: refactor: extract subagent tracking; cover parallel dispatch; fix BUG-37 caveats (@DilanDoshi)
v0.1.2
This release brings Claude Code's native /goal and /loop lifecycles into Wake, animates /compact, and lands a set of board, composer, and terminal-setup improvements — plus a fix that makes go install work without a fork.
New features
Native /goal support (#74)
Wake now surfaces a session's active goal end to end — decoded in the airlock, tracked in the daemon, carried on the fleet report, and folded onto the UI. An active goal is marked in the roster, named in the conversation status bar, shown in the room bar for the addressed agent, and listed on the board. (Achieving a goal is silent on the wire, so a goal reads active until it is explicitly cleared.)
Native /loop support (#77)
Wake surfaces Claude Code's headless /loop — both fixed-interval loops and self-paced ones. A loop is rendered across the roster, status bar, room bar, and board, and counted in the awareness strip's "N looping". A DM draws a loop-waiting line between self-paced iterations, accumulating the iteration count, quiet streak, and next-fire time. A subagent's own scheduler call is correctly excluded from its parent's loop.
Animated /compact (#82)
While a compaction runs, the DM shows an animated progress indicator; on completion it shows the boundary's real figures — tokens before → after, tokens freed, and duration.
Improvements
- Running subagents on the board (#80) — the board's rows view lists running subagents, indented under the agent that dispatched them.
- Expand a clipped option with ⌃E (#76) — a question card's clipped option description expands with ⌃E.
- Click to move the query-box caret (#78) — click a typed character in the composer to place the caret there; a drag still selects.
- Cmd+Left / Cmd+Right → line start / end (#72) —
wake setup-terminalnow binds Cmd+Left/Right so they move the composer cursor to line start and end.
Fixes
go installworks without a fork (#71) — prose is re-wrapped wake-side, so there is noreplaceingo.modandgo install github.com/DilanDoshi/wake/cmd/wake@v0.1.2works. Long unbreakable tokens (e.g.--resume, dates, ticket ids) no longer strand a word onto its own line.- Agents stay "working" during a tool run (#79) — an agent executing a tool now reads as working rather than briefly flipping to idle.
/colorhue on the board (#75) — an agent's identity hue is reflected in the board list rows.
Install
Download the binary for your platform below, or:
go install github.com/DilanDoshi/wake/cmd/wake@v0.1.2Full changelog: v0.1.1...v0.1.2
v0.1.1
Wake v0.1.1 — a patch release. Three fixes on top of v0.1.0 in the fleet / room / DM surfaces. No new flags and nothing to opt into: it installs and runs exactly like v0.1.0.
Fixes
-
A fleet-wide auth 401 surfaces in ~1s instead of hanging ~5 min, and a dead login auto-parks (#68). When the upstream Claude Code OAuth-refresh race (anthropics/claude-code#48786) leaves a session retrying a dead token, Wake now decodes the
api_retry401 from the first attempt — routing it to the same auth-failure notice the give-up frame takes — and auto-parks a session after three 401s so it stops retrying blind. A single 401, or a non-401 overload, still just surfaces, since those often recover. This ends the hang; the token is still dead, so recover with a fresh login and/reauth. -
An agent's room turns now appear in a DM opened after they happened (#69). A DM that was never opened didn't live-append the agent's group-chat turns, and the on-disk backfill is deliberately dropped whenever an event races the read (the common case for an active agent) — so those turns were lost until a clean reopen. A freshly-opened DM now seeds itself from the room's own in-memory turns for that agent; the authoritative disk read still supersedes and clears the seed on a clean fold, so nothing draws twice.
-
The streaming preview grows to fill an empty pane (#70). The plain-text tail shown while an agent writes was hard-capped at 3 rows, so a long single-block answer scrolled inside a 3-row window while the rest of the pane sat blank. That cap is now a floor: over a full transcript it stays at 3 (nothing you've read is pushed off screen), and over an empty or short one it grows into the unused rows. The flat per-token cost and the pane-height (alt-screen) invariant are preserved — the preview yields to 0 rows in a pane too tight to hold both it and the transcript floor.
Install
go install github.com/DilanDoshi/wake/cmd/wake@latestOr download a prebuilt binary below (macOS and Linux, amd64 and arm64), verify it against checksums.txt, and put wake on your PATH.
Full changelog: v0.1.0...v0.1.1
v0.1.0
Changelog
- 9021652: Merge PR #10: fix: /new joins multi-word names with a hyphen (DilanDoshi ddoshi2105@gmail.com)
- 5cd8a23: Merge PR #11: feat: select and copy text in the query box (DilanDoshi ddoshi2105@gmail.com)
- ca7138d: Merge PR #12: fix: surface Claude Code skills in the completion menu — session's commands first (DilanDoshi ddoshi2105@gmail.com)
- 0cb30a6: Merge PR #13: fix: render a typed slash command as a called command, not chat prose (DilanDoshi ddoshi2105@gmail.com)
- e9d53b3: Merge PR #14: fix: /color paints the composer and roster, not the status bar;
@who/color routes (DilanDoshi ddoshi2105@gmail.com) - d88b1a7: Merge PR #15: feat: plain ↑↓ move the query cursor in a multi-line draft (DilanDoshi ddoshi2105@gmail.com)
- e1d2634: Merge PR #16: fix: keep the composer's first line visible when a soft-wrap lands on a row edge (DilanDoshi ddoshi2105@gmail.com)
- 8481f55: Merge PR #17: feat: tiled board fills the window and auto-resizes (DilanDoshi ddoshi2105@gmail.com)
- 8c715db: Merge PR #18: feat: a DM's working line becomes a done line when a turn finishes (DilanDoshi ddoshi2105@gmail.com)
- 349305c: Merge PR #19: feat: show edit diffs by default in the DM pane (DilanDoshi ddoshi2105@gmail.com)
- f90d843: Merge PR #1: fix: /rename mirrors onto Wake's own handle, in step with claude (DilanDoshi ddoshi2105@gmail.com)
- d2ef2af: Merge PR #20: fix: /clear blanks the DM pane instead of marking a session reset (DilanDoshi ddoshi2105@gmail.com)
- 2481a60: Merge PR #21: feat: manager tag defaults to yellow; folded room reply shows real tokens (DilanDoshi ddoshi2105@gmail.com)
- 3345c96: Merge PR #22: feat: show model, context, and effort in the status bar, confirmed by a /model probe (DilanDoshi ddoshi2105@gmail.com)
- b05ee91: Merge PR #23: fix: render headings without literal ## hashes, matching Claude Code (DilanDoshi ddoshi2105@gmail.com)
- 414b5d6: Merge PR #24: fix: hang-indent wrapped list-item continuations, matching Claude Code (DilanDoshi ddoshi2105@gmail.com)
- 87ed04f: Merge PR #2: fix: esc on a question denies it instead of a no-op interrupt (DilanDoshi ddoshi2105@gmail.com)
- 39adcf1: Merge PR #3: feat: pin the agent's task checklist above the composer, drop the dispatch list (DilanDoshi ddoshi2105@gmail.com)
- 0f5006b: Merge PR #45: fix: keep a focused room thread showing its own agent after /clear (DilanDoshi ddoshi2105@gmail.com)
- 1ea514e: Merge PR #46: fix: mirror
@who/rename from the room onto Wake's own handle (DilanDoshi ddoshi2105@gmail.com) - c3aa577: Merge PR #47: feat: render cross-session (peer) messages in the room (DilanDoshi ddoshi2105@gmail.com)
- dc81abd: Merge PR #48: fix: read context level from the final round-trip, not the turn's summed usage (DilanDoshi ddoshi2105@gmail.com)
- ba6b4f7: Merge PR #49: fix: signal when a DM reader has drifted off the newest message (DilanDoshi ddoshi2105@gmail.com)
- d48d0f4: Merge PR #4: feat: conversation rewind (esc esc) (DilanDoshi ddoshi2105@gmail.com)
- 75e396d: Merge PR #50: fix: make every rendered surface selectable and copy-on-drag (DilanDoshi ddoshi2105@gmail.com)
- d7b0f91: Merge PR #51: fix: reconcile inDM at the report's turn-end so a frame gap can't hold an agent out of the room (BUG-30) (DilanDoshi ddoshi2105@gmail.com)
- d3c9bf2: Merge PR #52: feat: draw a "Compacting conversation…" line while /compact runs (DilanDoshi ddoshi2105@gmail.com)
- 880f84f: Merge PR #53: fix: teach setup-terminal about cmux, whose Ghostty needs
cmux reload-config(DilanDoshi ddoshi2105@gmail.com) - 273d6d5: Merge PR #54: fix: wrap the status bar's overflow, and name the current value in the /effort and /model menus (DilanDoshi ddoshi2105@gmail.com)
- 82aaad2: Merge PR #55: feat: draw each tiled-board tile as its agent's live transcript, and carry the model on the report (DilanDoshi ddoshi2105@gmail.com)
- 734961e: Merge PR #56: fix: record "question cancelled" in the room when esc dismisses a question (DilanDoshi ddoshi2105@gmail.com)
- c8c5b72: Merge PR #57: fix: route
@agent/command in the room to that one agent in either mention mode (DilanDoshi ddoshi2105@gmail.com) - 74a8573: Merge PR #58: fix: don't strand a DM done line over a turn Wake didn't initiate (DilanDoshi ddoshi2105@gmail.com)
- e9f15b2: Merge PR #59: fix: arm ⌃Q and drop it from the emergency kill-switch so a park cannot be pre-empted (DilanDoshi ddoshi2105@gmail.com)
- 69dedfe: Merge PR #5: fix: carry advertised slash-commands on the report, not the init event alone (DilanDoshi ddoshi2105@gmail.com)
- 978e116: Merge PR #60: fix: drop Claude's slash-command invocation and caveat envelopes on transcript read (DilanDoshi ddoshi2105@gmail.com)
- e82303c: Merge PR #61: fix: hyphenate a rename with spaces instead of refusing it (DilanDoshi ddoshi2105@gmail.com)
- 3b5fd54: Merge PR #62: docs: regenerate the landing page for the current build (DilanDoshi ddoshi2105@gmail.com)
- f7589f4: Merge PR #63: fix: idle-gate the effort/model probe so it never lands mid-turn, eats a real turn's end, or drops a re-probe (DilanDoshi ddoshi2105@gmail.com)
- 609e0e3: Merge PR #64: feat: ⌃A toggles the room
@nameview filter, and /groupchat-filter sets its default (DilanDoshi ddoshi2105@gmail.com) - c37382e: Merge PR #65: fix: suppress a DM's done line while the agent has a running subagent (DilanDoshi ddoshi2105@gmail.com)
- fe27097: Merge PR #66: fix: surface a fleet-wide auth 401 as infra, and add /reauth to recover in place (DilanDoshi ddoshi2105@gmail.com)
- 09f7427: Merge PR #67: fix: replay a fleet's outstanding asks to a newly attached client (DilanDoshi ddoshi2105@gmail.com)
- c2ceb5a: Merge PR #6: feat: /color — a per-agent status-bar, name-tag and roster colour (DilanDoshi ddoshi2105@gmail.com)
- 91bf9c6: Merge PR #7: feat:
@nameas a room view filter (DilanDoshi ddoshi2105@gmail.com) - cddc492: Merge PR #8: feat: expand a room response in place (⌃E all, click one) (DilanDoshi ddoshi2105@gmail.com)
- 1e32c77: Merge PR #9: feat: tiled board view — a view-only live wall (DilanDoshi ddoshi2105@gmail.com)
- 9b43050: Merge pull request #14 from DilanDoshi/fix/color-surfaces (Dilan Doshi ddoshi2105@gmail.com)
- 5cf959b: Merge pull request #25 from DilanDoshi/feat/terminal-setup-helper (Dilan Doshi ddoshi2105@gmail.com)
- c3da7d5: Merge pull request #26 from DilanDoshi/feat/quit-agent (Dilan Doshi ddoshi2105@gmail.com)
- 6a5638d: Merge pull request #27 from DilanDoshi/fix/query-box-selection (Dilan Doshi ddoshi2105@gmail.com)
- 0988e55: Merge pull request #28 from DilanDoshi/feat/login-panel (Dilan Doshi ddoshi2105@gmail.com)
- 4e60f13: Merge pull request #29 from DilanDoshi/fix/diff-colors (Dilan Doshi ddoshi2105@gmail.com)
- 5d63eda: Merge pull request #30 from DilanDoshi/feat/status-bar-prs (Dilan Doshi ddoshi2105@gmail.com)
- 9822689: Merge pull request #31 from DilanDoshi/feat/status-bar-legend (Dilan Doshi ddoshi2105@gmail.com)
- 2885202: Merge pull request #32 from DilanDoshi/feat/rate-limit-popup (Dilan Doshi ddoshi2105@gmail.com)
- fefcf53: Merge pull request #33 from DilanDoshi/fix/working-line-spacing (Dilan Doshi ddoshi2105@gmail.com)
- 06487f2: Merge pull request #34 from DilanDoshi/feat/board-tile-full-box (Dilan Doshi ddoshi2105@gmail.com)
- 8e0a10f: Merge pull request #35 from DilanDoshi/fix/tool-result-image-placeholder (Dilan Doshi ddoshi2105@gmail.com)
- 997ba1b: Merge pull request #36 from DilanDoshi/fix/user-turn-indent (Dilan Doshi ddoshi2105@gmail.com)
- db6ddf3: Merge pull request #37 from DilanDoshi/fix/new-agent-no-pane (Dilan Doshi ddoshi2105@gmail.com)
- c68e782: Merge pull request #38 from DilanDoshi/fix/arrow-key-remap (Dilan Doshi ddoshi2105@gmail.com)
- 70bf8a8: Merge pull request #39 from DilanDoshi/fix/hide-workspaces-sidebar (Dilan Doshi ddoshi2105@gmail.com)
- 98540a9...