Skip to content

Releases: DilanDoshi/wake

v0.1.5

Choose a tag to compare

@DilanDoshi DilanDoshi released this 23 Sep 03:28
06446b5

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 @mentions no longer spill into blank rows (#104). A broadcast typed with ⌥↵ and starting with @name rendered 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.
  • /resume and wake attach notices 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 /resume wake reads "@name has been resumed," and a live reattach reads "@name — reattached."

Install

go install github.com/DilanDoshi/wake/cmd/wake@v0.1.5

Or download the prebuilt binary for your platform below; verify it against checksums.txt.

Full changelog: v0.1.4...v0.1.5

v0.1.4

Choose a tag to compare

@DilanDoshi DilanDoshi released this 19 Sep 06:14
138a3f8

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 @name back 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 @all marker, 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 model field that no real result frame ever carries, so it fell back to 0 on any turn that had used more than one model in its epoch (a --fallback-model failover, 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 the ctx segment 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 /compact was 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.4

See checksums.txt below to verify a downloaded binary.

Full changelog: v0.1.3...v0.1.4

v0.1.3

Choose a tag to compare

@DilanDoshi DilanDoshi released this 15 Sep 05:40
d71c5e6

Changelog

v0.1.2

Choose a tag to compare

@DilanDoshi DilanDoshi released this 13 Sep 03:41
ed6b022

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-terminal now binds Cmd+Left/Right so they move the composer cursor to line start and end.

Fixes

  • go install works without a fork (#71) — prose is re-wrapped wake-side, so there is no replace in go.mod and go install github.com/DilanDoshi/wake/cmd/wake@v0.1.2 works. 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.
  • /color hue 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.2

Full changelog: v0.1.1...v0.1.2

v0.1.1

Choose a tag to compare

@DilanDoshi DilanDoshi released this 11 Sep 01:58
96e0220

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_retry 401 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@latest

Or 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

Choose a tag to compare

@DilanDoshi DilanDoshi released this 10 Sep 06:19

Changelog

Read more