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)