0.5.0-beta.12 (2026-10-08)
⚠ BREAKING CHANGES
- messages: separate posting from read state (#2868)
- events: collapse ProjectorStatus failure fields and renew leases through jetstreamutil (#2839)
- events: move JetStream client helpers into pkg/jetstreamutil (#2832)
- events: stop guarding writes that do not depend on state (#2826)
- events: one OCC guard type for every write (#2825)
- events: slog logging, projector options at construction, one constructor rule (#2824)
- events: unify projection snapshots and simplify the projector (#2823)
Features
- events: extract typed ID interning for projections (#2864) (8bd9dbf)
- extract chatto-client-placement agentic skill (#2808) (cbe9353)
- frontend: add a health summary to the admin System page (#2858) (da5dd60)
- frontend: feature the active speaker on the call stage (#2877) (8b8a472)
- frontend: improve wide and fullscreen call stage layouts (#2874) (921e091)
- frontend: open user context menu from system event names and avatars (#2827) (c1577c2)
- frontend: preview PDF attachments with the native viewer (#2862) (d101189)
- mcp: return structured tool failures (#2869) (b5a4b4e)
- mcp: support least-privilege OAuth grants (#2865) (e9be1f2)
- rbac: keep 0.4 access on upgrade and limit bot creation to admins (#2747) (2d80c46)
Bug Fixes
- attachments: sandbox all original attachments except passive types (#2848) (9c4fdf2)
- authling: read key-value state through the stream leader (#2836) (4840de3)
- calls: decide LiveKit reconciliation before core boot (#2829) (9052c49)
- classify JetStream conflicts consistently and drop Authling's raw KV writes (#2837) (df07391)
- frontend: compact attachment actions into horizontal rows (#2859) (3fb2ff7)
- frontend: explain unavailable server push notifications (#2846) (de0bd6d)
- frontend: remove push notification activation prompt (#2847) (3f76c8f)
- frontend: use a transparent Android notification badge (#2876) (587c41f)
- link-previews: show video thumbnails in social-post cards (#2811) (410c078)
- mcp: align capabilities and verify interoperability (#2850) (9e5d121)
- mcp: bound HTTP I/O by the request deadline (#2873) (0966f3d)
- messages: separate posting from read state (#2868) (3531551)
- notifications: scope read cleanup to the current timeline (#2866) (9f0881c)
- privileged-mode: limit permission refresh on resumed reconnects (#2849) (de0efa2)
- test: remove leftover stream directories in the shared NATS reset (#2863) (09d01aa)
Performance Improvements
Code Refactoring
- events: collapse ProjectorStatus failure fields and renew leases through jetstreamutil (#2839) (6b48808)
- events: move JetStream client helpers into pkg/jetstreamutil (#2832) (8bed0d5)
- events: one OCC guard type for every write (#2825) (6a64332)
- events: slog logging, projector options at construction, one constructor rule (#2824) (bf065a9)
- events: unify projection snapshots and simplify the projector (#2823) (93ef94c)