← Rooms

Changelog

Everything that’s been built so far, most recent first.

Live hardening pass

Navigation, sign-out, neon theme, custom backgrounds

  • Added a persistent nav bar (Rooms / Settings / Sign out) to every page — there was previously no way back to the rooms list from Settings, and no way to sign out at all (the sign-out action existed in the code since Phase 2 but was never wired to a button).
  • Reworked the whole visual theme: neon magenta/cyan glow palette, a real background image (a hand-authored SVG nebula, since no image-generation tool is available here), animated shooting stars.
  • Settings → Appearance: upload your own background image, applied everywhere for you specifically.
  • This page.

Post-launch

Found and fixed while testing the live app for real

  • Guests could never actually join a room via an invite link — the very first join always failed because nothing created their profile record first. Fixed and verified end-to-end with a brand-new test account.
  • Room creation failed for everyone due to a subtle Postgres RLS interaction with Supabase's "return the row I just created" behavior. Fixed by letting a room's owner always read their own room.
  • The very first account action (creating a profile) was blocked — the database had rules for reading and updating a profile, but none for creating one.
  • Verified live: mute, kick, and ban all work correctly, including that a banned person is actually blocked from rejoining.
  • Verified live: voice/video token issuing works.
  • Applied the Phase 4 decoration templates and asset library to the live database — they existed in the code but had never actually been loaded in.
  • Fixed a bug where apps/web's own .env.example had been silently excluded from the repository since Phase 2.

Build

Phase 7 — Safety, sharing, App Store prep

  • Kick / ban / mute / report / block / room lock, all enforced by the database, not just the UI.
  • Room snapshot capture and sharing (web + mobile).
  • Rate limiting on joins, invites, reports, and guest messages.
  • Privacy policy and terms pages; mobile got its first Settings screen (needed for App Store review — account deletion has to be reachable from inside the app).
  • Accessibility pass: labeled icon-only buttons, fixed color-only status indicators.

Build

Phase 6 — Camera effects & games

  • On-device camera filters, backgrounds, and face-tracked accessories (web) — nothing ever leaves your browser.
  • Tic-Tac-Toe, Trivia, and Draw & Guess, all with server-validated moves.
  • Mobile got a real Tic-Tac-Toe (the other two need work mobile doesn't have yet).

Build

Phase 5 — Chat, YouTube, Spotify, study mode

  • Room chat with replies, reactions, @mentions, and image uploads.
  • Synced YouTube and Spotify playback.
  • Study mode: synced Pomodoro timers, focus status, streak tracking.

Build

Phase 4 — Decoration & collaboration

  • Multi-select, resize/rotate, layering, undo/redo on the room canvas.
  • A shared drawing layer and sticky notes.
  • Room history with restore, and starter decoration templates.

Build

Phase 3 — Voice & video

  • Real-time voice and video via LiveKit, with draggable camera bubbles.
  • Distance-based spatial audio — quieter the further apart your bubbles are.

Build

Phase 2 — Accounts, rooms, invites

  • Email/password and guest accounts, room creation, and invite links (password, expiry, capacity).
  • The first version of the room canvas.

Build

Phase 1 — Planning

  • Product, architecture, data model, and security design — before any code was written.