GlassChat Changelog

2026-09-27

  • feat(ai): "Post now" in Admin, and one post at a time — a note or a story, its choice

2026-09-26

  • feat(ai): GlassChat AI reacts to messages, and posts its own notes and stories
  • feat(chat): GlassChat AI answers in separate bubbles, like someone texting
  • fix(search): current news, dated and newest first, instead of 2024 pages
  • fix(ai-calls): fall back to GlassChat's own web search when Google Search is refused
  • fix(ai-calls): give Gemini Live Google Search, and tell it to use it
  • feat(chat): a 1:1 call leaves a card in the chat
  • feat(calls): 1:1 and AI calls on LiveKit, Gemini Live on the official API

2026-09-21

  • feat(notes): music notes can run a full minute, not a fixed 30s

2026-09-20

  • perf(camera): stop blurring the live viewfinder twelve times a frame

2026-09-19

  • perf(camera): record the camera track itself instead of a canvas

2026-09-18

  • perf(camera): recordings that actually hold 60fps, and an editor that fits

2026-09-13

  • Add Gemini Live as a voice-call provider alongside Vapi

2026-09-06

  • feat(stories): more faces, any colour, and arrangements that mix them
  • fix(stories): the text tool now says where the words go
  • feat(stories): a text layer now has a typeface of its own

2026-09-05

  • fix(ai): a gated freegen says so, and still returns an image
  • feat(voice): the mic switches are where you'd look, and work mid-call
  • feat(voice): a noise reducer that measurably runs in all three places
  • feat(calls): a relay can now be offered over TLS as well as plain UDP
  • fix(calls): a 1:1 call now carries audio, and says so only when it does

2026-09-04

  • fix(ai): the id came from a list this time, and a 404 is recoverable
  • fix(ai): one card per request, and a card that can actually succeed
  • fix(ai): the confirmed action's result now reaches the model that asked for it
  • fix(stories): a story with a song waits for the song, and the logo mark is that wait

2026-09-03

  • fix(ai): a long page gets read for the part that was asked for, and a confirmed mail actually goes out
  • fix(ai): the token Gmail minted was for the wrong door, and every screen lied about it
  • fix(stories): the song's wait has a mark again, the last tap ends the story, and a seen stack starts over
  • fix(ai): the Gmail sign-in came back to a door that asked for a key it never had
  • feat(ai): local time, no permission wall in groups, and web tools that work with no key
  • perf(stories): a story opens on what the device already has

2026-09-02

  • feat(ai): connected tools can actually connect, and a scheduled automation actually fires
  • fix(stories): the bold lyric overlay is a poster now, measured off the real thing

2026-09-01

  • fix(stories): size each billboard line to the card, and let a video keep its sound
  • fix(stories): the editor opened underneath the story, and the billboard shrank itself
  • feat(stories): tag people, reshare, edit in place, and let a video be a video

2026-08-24

  • fix(stickers): the studio was drawing over its own instructions
  • fix(stickers, composer): cutouts belong to the account, and the keyboard gets somewhere to paste
  • feat(ui): one timeline for every trim in the app
  • fix(music): the lyrics reached the file and stopped there

2026-08-23

  • feat(music): the shared song loses its bubble, and clipping becomes a timeline
  • fix(music): the queue advances but does not play
  • refactor(music): actually make identityKey one function
  • fix(music): adding a song that is already there is refused, not silently swallowed
  • feat(music): a shared song is a square card, and you can send a part of one
  • feat(music): share a song in a chat
  • fix(music): playing a song from "Songs you added" drops its lyrics
  • feat(admin): the song adder guesses from the URL, like the contribute form does
  • fix(music): lyrics somebody typed in are the lyrics that play
  • fix(music): the library is what was put in it
  • feat(music): genres, tagged where somebody will actually tag them
  • feat(music): M7 — radio, and a queue that says where it came from
  • feat(music): M6 — the home page starts making claims instead of listing things
  • feat(music): M5 — the app can answer "what else would I like?"
  • feat(music): M4 — a playlist becomes something somebody made
  • feat(music): M3 — an album stops being a fallback and becomes a release
  • fix(music): only the music app reads archive.org
  • feat(music): M2 — artists become people instead of strings

2026-08-22

  • feat(music): M1 — the player starts writing down what was skipped
  • fix: the player stops widening, and the phone composer gets its screenshot back
  • fix(communities): a community DM opens in the community app, and Friends has one door
  • feat(communities): the community app stops borrowing the messenger's DMs
  • docs: what GlassChat Music needs before it can look like Spotify
  • fix(music): the page cannot be pushed sideways, and lyric lines are clickable
  • fix(music): read the durations nobody could measure, and stop paying for the same redirect twice
  • docs: write down what is built and what is not, before switching tasks
  • feat(automations): the research, and the rules engine underneath it
  • feat(friends): the home's DMs are conversations with friends, not every chat
  • feat(friends): a rail that shows where you are, an activity column, and no more browsing contacts

2026-08-21

  • feat(friends): make it home, not a page in the chat list
  • fix(friends): put the way in where people look for it
  • feat(friends): a page for the graph, voice that stays in the channel

2026-08-20

  • feat(profiles): friends, mutuals, badges, and links that can carry a label
  • fix(communities): the dialogs looked like prototypes
  • feat(communities): welcome screens, community search, and banners
  • feat(communities): your own profile in each community
  • feat(communities): custom emoji and a soundboard
  • feat(communities): stage channels
  • feat(communities): forum channels
  • refactor(navigation): pages arrive instantly
  • feat(communities): threads
  • feat(communities): scheduled events
  • feat(communities): folders in the rail
  • feat(communities): notification levels, and mentions that actually reach people
  • feat(communities): a real permissions editor, and roles you can actually see
  • feat(communities): a user panel that tells the truth, with a mic and headphones
  • refactor(communities): open instantly — no framer-motion anywhere in the surface
  • feat(communities): announcement channels, and a way to find a channel at all
  • feat(communities): logos you can actually set, a discovery page, and a visible selection bar
  • fix(calls): stop popping the call out over the screen the user is sharing
  • fix(communities,calls): unsqueeze channels, and make streaming behave like Discord

2026-08-19

  • feat(communities): rebuild the community surface on Discord's layout, and make voice channels work
  • feat(audio): stream audio instead of downloading every file whole
  • fix(audio): stop a shared audio file wedging the chat while it draws its waveform

2026-08-17

  • feat(ai): make thinking effort a continuous dial priced in tenths of a credit
  • feat(admin): check the music library's links in the background
  • feat(ai): set thinking effort with /think and a slider instead of three pills
  • fix(ai): stop tool transcripts rendering as a grey code block in the bubble
  • fix(groups): show the description after an edit, and let admins appoint admins

2026-08-15

  • feat(ai): add thinking mode with effort levels, priced in daily credits
  • feat(landing): keep the landing page open to signed-in users
  • feat(ai): add web_fetch through the OmniRoute gateway

2026-08-14

  • fix(ai): stop hidden markers leaking; add freegen images and web search
  • fix(preview): restore link previews on sites that refuse unknown bots

2026-08-12

  • fix(ai): scope memory to its audience, gate runaway AI triggers
  • fix(ui): flatten markdown in chat-list previews, unify reaction emoji set
  • fix(e2ee,attachments,preview): dead prekeys, file-type filter, sandboxed previews
  • fix(ai): decrypt uploads for vision and bound group context size
  • revert(ai-gateway): move the OmniRoute gateway to glasschat-pixelmind
  • feat(ai-gateway): branded auth in front of OmniRoute at ai.glasschat.app

2026-08-11

  • feat(broadcasts): send updates to selected people
  • feat(broadcasts): rebrand to GlassChat, blue tick, full-chat preview
  • feat(broadcasts): official GlassChat Updates channel + admin composer
  • fix(desktop): scale chat pane content with wide screens

2026-08-10

  • feat(music): public Music API v1 at /api/v1/music

2026-08-09

  • Fix useCallback import in GroupChat
  • Add AI features to GroupChat
  • feat: support coverUrl extraction from 5th field in bulk importer

2026-08-08

  • feat: add 'Setting up your account' loading screen to SignUp flow

2026-08-07

  • feat(admin): add omniroute support to ai providers
  • fix(communities): remove bright white borders between nav and sidebar to achieve seamless glass UI
  • feat(communities): improve mobile UI to match glassmorphism design and fix overflow
  • feat(music): lock main music app access if feature is locked
  • fix(auth): persist lockedFeatures in /users/me and login responses
  • chore: remove unused landing page files
  • chore: restore accidentally deleted landing page files
  • fix(ui): unhide stories tray and notes bubbles, show lock on compose instead
  • fix(ui): show feature lock overlay inside NoteComposer and StoryComposer
  • fix: resolve build errors by increasing PWA cache limit and removing invalid import
  • feat(admin): forcefully delete active stories and notes when locking features
  • feat: Implement comprehensive client-side feature gating system

2026-08-06

  • Make the seeder backfill, and fix three logo URLs that 404
  • Give MCP store entries their real logos
  • Populate the MCP store at boot instead of behind two admin steps
  • Seed the MCP store and give admins a screen for it
  • Stop the AI sending an action twice and apologising for it

2026-08-05

  • Add an MCP store alongside the paste-a-URL path
  • Document the Google Drive backup env vars
  • Merge the two chat backup screens into one
  • Back chats up to your own Drive, encrypted by default (B)
  • Close the link-preview SSRF hole and give providers somewhere to fall back to
  • Make the tool boundary hold under attack, and prove it (A5)
  • Collapse seven AI settings rows into one hub
  • Give A4 screens, not just endpoints
  • Let people bring their own model, personas, rules and tools (A4)
  • Make the AI a teammate, not just an assistant (A3)
  • Make deleteUser.js run, and say what it actually does
  • @ Give the coworker hands, a memory, and a way to take it back (A2)
  • @ Put the AI where the work already is (A1)