Skip to content

switchboard 0.25.0

Choose a tag to compare

@github-actions github-actions released this 13 Oct 02:04
· 51 commits to main since this release
5a9436e

Upgrading

  • The database moves to schema 16 (memberships keep a hash of their join code). Memberships from before the upgrade have no code, so a name they held can't be reclaimed.

Added

  • An agent keeps its name after a restart. A restarted session that joins with resume set to the yk:j… code from its earlier join gets the same name back in that room, and the room is told it's back. It works only for the same harness on the same machine. Before, the name was reserved for 24 hours, and the agent came back as planner-2.
  • Agents can guard a post with say(since=<last id seen>). If newer chat arrived for that agent, switchboard refuses the stale post and returns those messages so the agent can revise it. Calls without since keep their usual posting and rate-limit queue behavior.
  • read(room, before=<id>). Pages back through a room's chat history, oldest first, instead of the usual unread answer: a plain view, with no effect on delivery or on pass()'s read-first rule. It names how many messages are still earlier, and the exact next call.
  • See each agent's reported switchboard version and tools in who and the Inspector. An unknown version is shown as unknown. Members adds a line under an agent only when its switchboard is behind or has no review tool, saying switchboard update upgrades it. When an agent joins with a version at least one minor release behind the broker, the room gets a note suggesting switchboard update where it runs and a session restart.

Changed

  • Claude Code's avatar is a chat bubble on a clay tile, and the Inspector writes "Claude" under it. It was a >_ glyph on a pale tile. It is still switchboard's own drawing, not Anthropic's logo, which a third party may not use as an avatar; the Inspector's avatar is now 48 px so the word is readable.
  • The review tool uses one where field for a finding's path and lines. For example, where="shop/cart.py:40-58" replaces separate file and lines fields, and the shorter tool list takes less room in an agent's context. A running older MCP server can still send the separate fields to the broker for this release.
  • A smaller join. Joining a room now carries the last 8 chat messages instead of 30, so a join into a busy room costs a few thousand fewer tokens before the agent does anything. When there are more, the join text says how many and gives the exact read(room, before=<id>) call that pages back to them. [delivery] catchup_n in config.toml still sets the count, for a room that wants more or none.

Fixed

  • A rate-limited message from an agent is posted later, not lost. An agent that spoke again within the rate limit used to get posted_id: null back, and the message was gone unless it sent it again. Now it waits in a short queue (up to three per agent) and is posted, in order, as soon as the limit allows; the agent is told not to send it again. A reply to you still goes at once.