GlassChat Changelog

2026-07-27

  • Switch camera filters to MediaPipe
  • Fix camera lens shutter carousel
  • Restore compact billboard lyrics
  • Auto-fit billboard lyric lines
  • Prevent billboard lyrics clipping
  • Fix story billboard lyric rendering
  • Wire camera sound picker
  • Refine story music sticker rendering
  • Refine story music overlays and camera chrome
  • Refine camera and story music overlays
  • Fix story editor media transforms
  • Restyle camera capture interface

2026-07-26

  • Fix story music overlay styles
  • Add Snap Camera Kit lenses

2026-07-25

  • fix: correctly remove user IPs and Device IDs from global blocklists when unbanned

2026-07-24

  • feat: inject global admin custom music into community music players
  • feat: retroactively track device IDs for existing sessions on authenticated requests
  • feat: add persistent device ID ban to prevent dynamic IP ban evasion; fix: active chat highlight visibility
  • fix: make IP ban matching robust against IPv6 mapping and race conditions
  • fix: resolve JSX syntax error in ChatRow component caused by duplicate code block
  • feat: highlight active chat in the chat list
  • feat: add direct IP ban capability to user ban dropdown in Admin Dashboard
  • fix: resolve JSX syntax error in AdminDashboard by moving IP Bans tab block to correct location
  • feat: add global IP banning feature to Admin Dashboard
  • feat: add IP rate limiting to email verification endpoints to prevent resend abuse
  • style: fix excess blank space in profile music note pills with short titles
  • fix: relax strict archive.org URL validation for custom music clips
  • fix: Resolve React Minified Error #300 in AdminDashboard by moving useEffect before early returns
  • feat: Add iTunes metadata search in Admin Dashboard for custom music
  • feat: Auto-detect audio duration for custom music tracks
  • feat: Deduplicate music tracks and allow importing existing archive tracks in Admin Dashboard
  • fix: Add missing admin music API endpoints
  • feat: Add custom music management to Admin Dashboard and backend APIs
  • feat: Add story views and reactions modal
  • Fix canvas clipping by removing max-width restriction in story viewer
  • Remove conflicting CSS transition on story progress bar to fix stalling when there is no user input
  • Fix canvas aspect-ratio clipping, paused story sound message, mobile progress bar, and video background blur
  • Fix transform coordinate mismatch by unifying Composer and Viewer at 9:16 aspect ratio, and revert to object-fit: cover
  • Make Story Viewer shell transparent to show blurred backdrop
  • Add Instagram-style blurred background to Story Viewer and use object-fit: contain to prevent cropping on PC
  • Revert Story Viewer aspect ratio to 9/16 for wider PC viewing
  • Increase default width of Story Composer side panel to 420px
  • Fix Story Composer panel width expanding infinitely by applying panelWidth state and drag handle
  • Fix flex truncation in story viewer
  • Fix story viewer bug where long song title caused width expansion and update aspect ratio to match phones
  • UI Polish: Make story composer side panel horizontally resizable on desktop
  • UI Polish: Fix Story Composer editing options white background bug and make side panel auto-expanding
  • UI Polish: Match story editor panel CSS to Note Composer styling
  • UI Polish: Move Share button to side panel and enforce strict phone aspect ratio for story composer desktop preview
  • UI Polish: Story Composer desktop layout improvements
  • Fix video editor duration bug showing 00 seconds for recorded webm blobs
  • Fix story composer mobile preview: remove aspect ratio constraint for true full screen
  • Fix story composer mobile preview: remove default avatar and make full screen
  • Mobile UI/UX overhaul: Story Composer and Video Trimmer
  • Vertically center story strip arrows to align with avatars
  • Fix admin panel auto unban display bug
  • Fix desktop story viewer CSS grid collapse bug

2026-07-22

  • Fix story viewer desktop frame and overlays
  • Fix desktop story frame height
  • Fix note pill clipping and story media fit
  • Fix desktop story viewer and mobile close
  • Fix profile notes and mobile screen share
  • Fix desktop stories and audio gating
  • Fix mobile call and note gestures
  • Fix story viewer viewport fallback
  • Polish story viewer navigation chrome
  • Fix social moment privacy and story tray UI
  • Fix story stacks and community music room
  • Fix story tray grouping and avatar rings
  • Fix story replies and viewer advance
  • Smooth story music overlay editing
  • Fix story music overlays
  • Stabilize story viewer transitions
  • Fix story routing and interactions
  • Improve story composer editing controls
  • Fix story viewer route and desktop chrome
  • Add routed story viewer and preserve note avatars
  • Polish story viewer layout
  • Fix call popout and story UI

2026-07-21

  • Adapt group call tiles to avatar colors
  • Use Meet-style group call tile colors
  • Fix call popout avatar fallback
  • Fix group call popout avatars and tile colors
  • Fix note privacy and music note overflow
  • Improve adaptive group call layout
  • Show note context on note replies
  • Keep text notes compact
  • Expand note sheet for lyrics
  • Open tray notes in compact sheet
  • Render note tray items with avatars

2026-07-20

  • Show notes in chat tray and fill liked hearts
  • Show synced lyrics in music notes
  • Remove native note reply focus box
  • Fix profile note layout and playback loop
  • Refine profile note viewer UI
  • Fix profile note viewer interactions
  • Unify profile music notes
  • Build Instagram-style stories
  • Make music notes profile-only bubbles
  • Move music notes to profile headers
  • Add markdown download for docs
  • Add music notes and stories
  • Avoid stale archive item artists
  • Stabilize call music compact controls
  • Keep call music playing when drawer closes
  • Improve call music playback mixing
  • Speed up archive music loading
  • Refine call music layout and synced lyrics
  • Improve call music panel interactions
  • Fix call music song playback click
  • Add archive-backed call music library

2026-07-19

  • Communities: fold discover + create (and community switcher) into the nav pill below the pencil; drop the separate community strip so the channel list card is full-width
  • In-call music: proper glass player (search, loop, autoplay, seek, prev/play/next, centered cover) + dock it like chat in the right column; when both open they split vertically with a draggable divider (expand/collapse)
  • Communities: render inside the real desktop workspace shell - shared DesktopNavRail (same nav pill), resizable channel column with the drag handle, and glass cards; no more bespoke rail. Mobile/tablet layout unchanged
  • Communities UI: match the app's curved glass-card shell (gc-desktop-shell + gc-desktop-shell-card) on desktop instead of flat full-bleed panes with hard divider lines; mobile stays full-bleed
  • Music M4: import uploaded tracks into community library - musicService.importTracks (bulk, sanitized, member-gated) + POST /:id/music/import, client musicApi.importTracks + MusicChannel 'Import from archive.org item' (fetches item metadata, maps mp3s+covers), tests
  • Music M3: gitignore the music-uploader control-plane (built on disk at ./music-uploader, deployed separately to upload.glasschat.app like streamvault)
  • Music M2 (part 2): in-call synchronized listening - generalized music rooms to call-scoped rooms (callChatId, access via chat membership/community perms) with ad-hoc URL queue (callMusicTracks + addUrl + music:tracks), CallMusicPanel embedded in GroupCallRoom (music toggle button), useMusicRoom supports both room kinds, tests
  • Music M2 (part 1): synchronized community music channel - useMusicRoom hook (subscribe/reconcile audio to shared clock, drift-correct, control emit), custom MusicPlayer (cover/title/artist/seek/lyrics), MusicChannel (player + library add/play/queue), Communities renders music channel + type, tests
  • Music M1: backend foundation - music_tracks table + 0005 migration, musicTracksRepo (JSON+PG), in-memory synchronized-playback registry (musicRooms.js), 'music' channel type, musicService (library CRUD + access), library routes, socket music:subscribe/music:control sync handlers, tests
  • Communities: move entry point from ChatList header to the navigation bar (BottomNav mobile pill + desktop vertical rail)
  • Communities C8 (polish): community settings (edit/delete cascade), public discovery + direct join, unread channel notifications (rail + channel dots), spec delivery-status + deploy-prep; tests
  • Communities C7 (flagship): Checklist channel - boards/lists/cards repos (JSON+PG), checklistService (CRUD + move + permission-gated + realtime broadcast), checklist channel type, routes; client ChecklistBoard (columns, checkable cards, add/toggle/delete, drag-drop between lists, realtime sync), tests
  • Communities C6: moderation (kick/ban/unban with hierarchy guards, ban blocks join), bans repo (JSON+PG), audit log view, light rate limits on invites/joins; client kick/ban actions + Bans/Audit tabs + community:removed handling, tests
  • Communities C5: members (list+profiles, role assignment, leave), roles CRUD+permission editing, invites (create/resolve/join/revoke), join-by-invite page, invites repo (JSON+PG); client members/roles/invite modals + GroupChat extraProfiles name resolution, tests
  • Communities C4: channel/category CRUD + reorder + permission-override editing (API+service+routes, MANAGE_CHANNELS gated, audited, realtime broadcast), capabilities in tree, client management UI (add/rename/delete/make-private/drag-reorder), tests
  • Communities C3: client shell (rail + channel sidebar), create-community wizard, text channel via GroupChat (chatOverride), voice channel -> group-call join, routes + provider + entry point, tests
  • Call presence sounds: distinct Discord-style join/leave/stream-start/stream-stop cues wired to GroupCallRoom LiveKit events, In-Call Sounds setting, tests
  • Communities C2: channel=chat message-access authorization (view/send perms), community socket rooms + subscribe, community:created event, tests
  • Communities C1: schema+migration, permission engine, repos (JSON+PG), community service (channel=chat), routes (create/list/tree), tests

2026-07-18

  • SEO: server-prerender docs/blog/changelog/releases (fix Googlebot soft-404), dynamic sitemap.xml with all public pages + slugs, robots.txt allows public content
  • Embed: image editing in group composer, theme switching works in embed, desktop-shell layout option; docs
  • Fix embed-session team/member resolution (accept externalTeamId + id alias); group-call stream switch focuses in-layout instead of fullscreen; hide passkey UI in cross-origin embed (RP ID mismatch)
  • Embed: add self-service authMode:user (own login/signup, no auto-provision); SignIn: checking-auth screen after OAuth redirect
  • Group call: clamp chat width to 1/4-1/2 viewport (call stays >= half); fix unread pill wrapping
  • Chat perf: rAF-throttle scroll date-label update + bottom-up early-break scan (fixes lag with many messages)
  • Code fullscreen: curved container for Code tab; group call: slide-in/out chat panel with animation
  • Code fullscreen download button; group call: fill fullscreen share, main-view stream switcher, no PiP for own screen
  • Code detection: classify HTML documents as html, not jsx (CSS braces no longer trip JSX)
  • Chat: disable large-text->file limiter; render .md attachments collapsed with download button
  • Revert "Chat: revert floating date pill to overlap inline separator (fix duplicate pill)"
  • Chat: revert floating date pill to overlap inline separator (fix duplicate pill)
  • Chat: 3px more gap between header and floating date pill
  • Chat: add ~2.5px more gap between header and floating date pill
  • Header: apply visual-viewport keyboard anchoring on mobile only; bump date pill gap to ~4px
  • Chat: nudge floating date pill 1.5px further from the header
  • Docs + blog: render code blocks with the in-app CodeBlock (copy/collapse/fullscreen)
  • Notification tones: offer Crystal + Aurora consistently in Settings and per-chat/group pickers
  • Notification tones: drop phantom Crystal/Aurora options, keep curated set
  • Fix call backdrop bleed in browser dark theme; match group notification sound to DMs