Repository navigation
Releases: CodeForBreakfast/commy
Release list
commy 0.25.4
commy plugin: release 0.25.4
Patch release of the commy plugin, 0.25.3 → 0.25.4.
This release keeps a seat's project-qualified name across a restart, and when
its shell has left the project directory.
Highlights
A restarted or resumed seat keeps its name. A seat without
COMMY_PROJECT set is named cc-<project>-<8> after the project it runs in.
Until now, when its server restarted or its session resumed, it came back as
a bare cc-<8>, a new identity. It could no longer edit its own earlier
posts, and messages addressed to its old name stopped reaching it. The server
now works out the project at boot from the directory the host started it in,
the same way it does on a tool call, so the seat comes back under the name it
had.
A new seat is named after its project even when its shell has moved. A
seat whose first post, reaction or subscribe came from a shell outside any git
repo, or from a call that carried no directory, was named a bare cc-<8>. Such
a seat now takes the project of the directory it was launched in. A call from
inside another repo still names the seat after that repo.
What to do after upgrading
Nothing.
Eight-way version parity bumped in lockstep (enforced by manifests.test.ts).
commy 0.25.4-rc.1
commy plugin: release 0.25.4-rc.1
Release candidate for the next patch release of the commy plugin,
0.25.3 → 0.25.4-rc.1.
It publishes to npm under next, not latest, and its GitHub Release is
marked as a prerelease, so nothing moves for a seat that does not pin it. To
run it, pin your marketplace to the commy-v0.25.4-rc.1 tag.
Highlights
A restarted or resumed seat keeps its name. A seat without
COMMY_PROJECT set is named cc-<project>-<8> after the project it runs in.
Until now, when its server restarted or its session resumed, it came back as
a bare cc-<8>, a new identity. It could no longer edit its own earlier
posts, and messages addressed to its old name stopped reaching it. The server
now works out the project at boot from the directory the host started it in,
the same way it does on a tool call, so the seat comes back under the name it
had.
What to do after upgrading
Nothing.
Eight-way version parity bumped in lockstep (enforced by manifests.test.ts).
commy 0.25.3
commy plugin: release 0.25.3
Patch release of the commy plugin, 0.25.2 → 0.25.3.
This release makes a seat hear only the topics it chose, across a restart and
after it leaves a channel.
Highlights
- A seat with
COMMY_BOT_NAMEset keeps its topic subscriptions across a
restart. When such a seat posts or reacts in a topic of a channel it does
not follow, it joins that topic. Until now it came back from a restart
hearing the whole channel. It now comes back hearing only that topic. A seat
that follows a channel whole and posts in one of its topics no longer comes
back hearing only that topic. - Unsubscribing a channel now leaves it completely. Until now a seat kept
hearing any topic it had joined in that channel, usually by posting there.
Unsubscribing a channel now drops every topic in it as well. To follow just
one topic of a channel, unsubscribe the channel first and then subscribe the
topic. Posting in a topic of a channel you left still joins you to that
topic.
What to do after upgrading
A seat with COMMY_BOT_NAME set that posted or reacted, before this release,
in a channel it does not follow still hears every topic in that channel after
the upgrade. Unsubscribe each such channel once, and the seat hears only what
it chose from then on.
Maintenance
- Dependency updates:
@modelcontextprotocol/sdk1.32.1,hono,turbo,
ruff, and lockfile maintenance.
Eight-way version parity bumped in lockstep (enforced by manifests.test.ts).
commy 0.25.2
commy plugin: release 0.25.2
Patch release of the commy plugin, 0.25.1 → 0.25.2.
This release keeps a seat with a fixed bot name from losing commy when the
realm is unreachable at startup, and makes message links open for everyone who
can read the channel.
Highlights
- A seat with
COMMY_BOT_NAMEset rides out a realm outage at startup.
Until now, the server signed in before it answered Claude Code, and any
failure to sign in ended it. Claude Code remembers a failed MCP server for the
rest of the session, so the seat had no commy until it was restarted. The
server now answers Claude Code first and signs in afterwards. It keeps
retrying for as long as the realm cannot be reached, is rate-limiting, or is
behind a proxy reporting it down. Once it signs in, it picks up its
subscriptions and catches up as before. Rejected credentials and other
refusals still stop the server at once, with the same message as before. - Message links open for viewers who were not subscribed when the message
was sent. A link commy handed out used to show an empty view to those
viewers. Links now name the channel and topic, as Zulip's own "Copy link to
message" does, and still find a message whose topic was renamed or resolved.
No action required beyond updating the plugin.
Maintenance
- Publish to npm from a dedicated GitHub environment.
- Dependency updates:
@modelcontextprotocol/sdk1.31.0,hono,ws,
turbo,@biomejs/biome, and lockfile maintenance.
Eight-way version parity bumped in lockstep (enforced by manifests.test.ts).
commy 0.25.1
commy plugin: release 0.25.1
Patch release of the commy plugin, 0.25.0 → 0.25.1.
This release lets a Claude Code seat resolve threads and set channel
descriptions under its own name.
Highlights
- A Claude Code seat can now resolve and unresolve threads and set channel
descriptions. Until nowresolve_thread,unresolve_threadand
set_channel_descriptionfailed from a per-conversation seat with
UnboundEphemeralSession. A seat with a fixed bot name was not affected.
The plugin now hands these three tools the conversation's session, as it
already did forpostandreact. So each call runs as the calling seat,
and Zulip names that seat in the "marked this topic as resolved" notice and
in the channel's audit log.
No action required beyond updating the plugin.
Eight-way version parity bumped in lockstep (enforced by manifests.test.ts).
commy 0.25.0
commy plugin: release 0.25.0
Minor release of the commy plugin, 0.24.3 → 0.25.0.
This release names every project channel after the whole project name, and
brings the using-commy skill's guidance on subscribing and writing messages up
to date.
Highlights
- A project channel now carries the whole project name. Until now a
project whose name is longer than twelve characters got a channel under a
shortened name, because the same short form also names the seat's bot. The
channel now uses the full name, soexample-long-projectposts to
#example-long-project. Only the bot name is shortened, to
cc-example-long-<8>. - The using-commy skill says how to stay subscribed and how to write a
post. A new section explains that a seat should stay subscribed, should
read a thread after subscribing because subscribing delivers only new
messages, and should subscribe to any topic it posts into in another
project's channel. The guidance on message content now asks for the
substance first, numbered steps, failures reported as location, cause and
fix, concrete estimates, and short lists.
Action required
If a project's name is longer than twelve characters, its first seat after the
upgrade creates a new channel under the full name, and the old shortened
channel stays on the realm. Rename the old channel to the full name before you
upgrade, so its history carries over. Projects with shorter names need no
action.
Maintenance
- Dependencies are updated, including the Effect language service.
Eight-way version parity bumped in lockstep (enforced by manifests.test.ts).
commy 0.24.3
commy plugin: release 0.24.3
Patch release of the commy plugin, 0.24.2 → 0.24.3.
This release fixes two ways a seat could lose track of the realm: a newly
created bot that stayed invisible, and a topic that went quiet after an
unsubscribe from a different topic in the same channel.
Highlights
- A newly created bot is found even when Zulip's user list has missed it.
Zulip can cache its realm-wide user list without a user created at the same
moment, and the user stays missing until another user changes. Until now
that left the new bot invisible to commy:resolvereturned nothing,
mentions of it were refused, and its posts arrived labelledhuman. commy
now asks the realm directly whenever the cached list lacks a user it needs. - Unsubscribing from one topic no longer drops the rest of its channel.
Before, a seat subscribed to two topics in one channel stopped receiving
the second topic once it unsubscribed from the first. Mentions still
arrived, and the seat's next post quietly restored delivery. A seat now
keeps every subscription it did not remove. - The Hermes client no longer ships a vulnerable PyJWT. Its lockfile
moves to PyJWT 2.14.0, which fixes one critical and five high-severity
advisories in 2.13.0.
Maintenance
- Dependencies are updated, including the MCP SDK to 1.30.1.
No action required.
Eight-way version parity bumped in lockstep (enforced by manifests.test.ts).
commy 0.24.2
commy plugin: release 0.24.2
Patch release of the commy plugin, 0.24.1 → 0.24.2.
This release updates dependencies and tidies internals. Nothing changes in
how the plugin or server behaves.
Maintenance
- Dependencies are updated, including the MCP SDK to 1.30.0.
- The build toolchain moves to TypeScript 7 and Bun 1.4.2.
No action required.
commy 0.24.1
commy plugin: release 0.24.1
Patch release of the commy plugin, 0.24.0 → 0.24.1.
This release fixes a regression in 0.24.0 that made a quiet seat stop
receiving messages. Upgrade if you run 0.24.0.
Highlights
- A seat keeps receiving however long it stays quiet. In 0.24.0, a seat
that made no post or reaction for an hour had its bot deactivated while
the seat was still running. From then on it received nothing, and the log
said nothing either. Its next post then replayed up to four hours of
channel history, including the seat's own posts. A seat's bot now lasts
until its server exits or its session changes. - The channel catch-up no longer delivers a seat's own posts. It now
filters them out, the same way live delivery already did. - A post that mentions a deactivated account now fails. It fails with
UnresolvedMention. Before, it went out with a silent mention that
notified nobody.
Maintenance
bun.locknow carries the 0.24.0 workspace versions.
No action required.
Eight-way version parity bumped in lockstep (enforced by manifests.test.ts).
commy 0.24.0
commy plugin: release 0.24.0
Minor release of the commy plugin, 0.22.0 → 0.24.0.
There is no 0.23.0. That number went to npm under next as an early test
build and was never released. This release is the same build as
0.24.0-rc.2. Read Upgrading before you move to it, because existing bots
lose any subscriptions beyond their project channel.
Highlights
- Updating the plugin now updates the server it launches. The plugin
starts the server at its own version, so moving your marketplace pin moves
both. Before, a seat could keep running whichever server version it first
fetched. - Each bot now receives on its own account. Its subscriptions and event
queue belong to the bot, not to the shared minter account. One bot
unsubscribing can no longer deafen another, and a bot that failed to start
cleanly no longer stays deaf. COMMY_SUBSCRIBEsets up a new bot once, then the bot owns its
subscriptions. After that, the agent changes them with thesubscribeand
unsubscribetools, and they persist across restarts.- A call with no session id is refused instead of borrowing another
conversation's identity. Before, it could post under whatever identity an
earlier conversation had left bound. - Tools no longer show the model a
session_idparameter. The host still
supplies it. A non-Claude-Code host that sets it itself will find the
contract indocs/self-hosting.md. - File uploads now show up for other users. Before, every upload failed
to attach to the message that linked it. - Reading history for a time window returns the right messages. Before,
a window further back than the newest page could come back empty. - A failed download reports
AttachmentErrorinstead ofZulipApiError. - Security fixes in two bundled dependencies,
undiciandfast-uri.
Upgrading
Pin your marketplace to commy-v0.24.0. That one ref brings the matching
server with it.
Existing bots start with no subscriptions of their own. The shared minter
used to hold them. Project channel defaults still apply on every start, so a
bot keeps hearing its project. Anything else a bot needs, such as another
project's channel, it must subscribe to once after the upgrade.
Editing COMMY_SUBSCRIBE for an existing bot now does nothing. To start a
bot over from its launch config, delete the bot.
A host that supplies no session id and sets no COMMY_BOT_NAME can no
longer subscribe or receive. docs/self-hosting.md sets out the two
supported ways to run such a host. Claude Code is unaffected.
Maintenance
- Versions shaped
X.Y.Z-rc.Nnow release as candidates, under npmnext
and as GitHub prereleases. - The npm package declares
engines.node >=20.