Changelog
What's shipped
Built in public. No marketing speak.
March 2026
Infrastructure
Middleware refactor + privacy page
Centralized route policy config — all CSP/auth rules in one file
Split session vs org context — API routes now get ctx.user correctly
Added Privacy Policy page
Room URLs now preserve correct origin context
March 2026
Product
Hosted rooms + landing redesign
Hosted rooms at /s/:code — share a link, no embed needed
Landing page reframed around the hosted room use case
Josefin Sans font — wider tracking, tribal warmth to match the mark
About, Terms, and Privacy pages added
February 2026
Core
WebRTC signaling aligned end-to-end
Fixed message type mismatch between QlaveSessionDO and SessionClient
ice-candidate, peer-joined, peer-left all aligned
Room code vs session UUID separation — codes are KV keys, UUIDs name DOs
SessionPage expired state UI — rooms show as expired, not broken
February 2026
Dashboard
Room creation UX
ensureRoom pattern — room created once, reused for copy and open
New room button to explicitly rotate the code
Room URL generated server-side, no window.location.origin issues
Subdomain stripping — shared links always resolve on main domain
January 2026
Core
Usage tracking
Live session state in KV — updated on joins, leaves, every 50th message
Historical session logs in D1 — flushed when last peer leaves via DO alarm
Dashboard stats: peak peers, session count, total duration
Site key rotation with KV cache busting
January 2026
Widget
Widget + bookmarklet
Widget deployed to cdn.qlave.dev — single script tag embed
Draggable pill UI, auth flow, session panel
Bookmarklet for injecting qlave onto sites you don't control
Lucide Drum icon throughout — no more emojis in UI
December 2025
Launch
Initial release
QlaveSessionDO — WebSocket hibernation, peer registry, signal relay
Site key validation against D1 with KV cache
BetterAuth + subdomain org scoping via qstart-rwsdk base
Dashboard with embed code and session history