Repository navigation
v0.8.9
v0.8.9
The room bridge moves to massrelay v0.3.1, whose wire format changed, and Bridge.Notify now sends
one message per room instead of one per tab. Two 2026-07-28 wire fixes come along with it. This is
also the first release where @panyam/mcpkit-rooms reaches npm since 0.8.7, because v0.8.8's
publish failed (below).
Changed (room bridge)
- massrelay v0.3.1 and servicekit v0.1.12. massrelay v0.3.0 renamed
AppMessage.to_client_id
to a repeatedto_client_ids. It kept the field number, so binary protobuf still matches, but
the page'sCollabClientspeaks protojson, where the name changes fromtoClientIdto
toClientIds. A page on@panyam/mcpkit-rooms0.8.7 or earlier, talking to a relay on massrelay
v0.3, sends replies the relay can't address, and the agent's call times out with no error saying
why. The page client now depends on@panyam/massrelay ^0.3.1and
@panyam/servicekit-client ^0.1.12. (PR 1629) Room.SendEach(ctx, to, kind, payload)delivers one message to several peers. A partial
delivery returns*rooms.NotMembersErrornaming the peers that weren't in the room, and the rest
still get the message. memroom and both massrelay transports implement it. Anything else that
implementsRoomhas to add the method. (PR 1629)Bridge.Notifysends one message per room. A big notify used to queue one message per tab
behind the dialled transport's 25-a-second pacer. A tab the relay reports gone lands in
rep.Failedon its own. Fan-out tool calls still go one per tab, since each tab answers its own
call. (PR 1629)
Fixed
@panyam/mcpkit-roomspublishes from a release tag again. v0.8.8'spublish-npm-roomsrun
failed with a missinggo.sumentry, because the tagged tree has no in-reporeplacelines and
the workflow never put them back. It restores them first now, and
check-release-workflows-selftestfails any tag workflow that sets up Go without doing that.
0.8.8 was never published to npm, so go from 0.8.7 straight to 0.8.9. (PR 1626)- 2026-07-28 always gets
ttlMsandcacheScope. That schema makes both required on every
cacheable result.WithoutListCacheControl,WithoutReadResourceCacheControland a negative TTL
dropped them, and so didagents/listandagents/getwithoutConfig.TTLMs. On 2026-07-28 an
opted-out hint now goes out asttlMs: 0withcacheScopepublicfor lists andprivatefor
reads. 2025-11-25 and earlier still omit them. (issue 1546) - The stateless
tools/liststripsx-mcp-filefor clients withoutfileInputs.
core.HasFileInputsread session capabilities only, so it answered false for every stateless
client, and the stateless list didn't strip anyway. It reads the request's_metatoo now, and
both wires buildtools/listthrough one helper, which also gives the stateless list the session
wire's pagination. (issue 1515)
Upgrading downstream
- agni:
- Go:
experimental/ext/rooms,…/rooms/massrelayand…/integrations/roomseventsat
v0.8.9, plusgithub.com/panyam/massrelay v0.3.1if you require it directly. - Browser:
@panyam/mcpkit-rooms@0.8.9, in the same change as the Go side. npm users get the
matching massrelay through^0.3.1, but an embedder that bumps only the Go module, or keeps
serving a page bundle built before the bump, gets the silent timeout above. - Your own
Roomimplementations, if any, needSendEach.
- Go:
- Anyone relying on
WithoutListCacheControlto keepttlMsoff the wire: on 2026-07-28 it
now sendsttlMs: 0, which a client reads the same as an absent field.