Skip to content

v1.2.0

@kshvab kshvab tagged this 30 May 17:31
The two unbounded-growth paths the review flagged as v1 trade-offs, closed with
the same bounded-collection hygiene used elsewhere (inbox/ping-log):
- InMemoryEventStore keeps only the most recent ~256 events per session (was
  append-forever) — stops the slow memory leak on long-lived sessions.
- concurrent MCP sessions capped (MAX_SESSIONS=2000) — a key-holder can't open
  streams without limit; over the cap, initialize gets a 503.
- PingLog documented as the reserved audit substrate (read path is a future
  admin tool), so it doesn't read as an oversight.

Not done (deliberately): refuse-takeover-while-live would break the wake
mechanism — Claude Code re-initializes a session on stream cycling and the new
session must take over its name to keep presence on the live session. The real
fix for name impersonation is v2 identity-bound keys (roadmapped).

typecheck + test + lint + build green.
Assets 2
Loading