Usernames
Users can now set a unique @username (enforced at the DB level). The profile panel gained an inline username editor with real-time conflict detection — if the chosen name is taken, an error is shown inline without leaving the panel. Chat messages display the username rather than the full name from Google.
Room Slugs + Shareable Links
Room owners can set a short slug on their room. Combined with their username, this generates a permanent URL: /r/:ownerUsername/:slug. AppRoutes was extended with a resolver that looks up the owner and slug, then redirects into the room — so links work even if someone isn't logged in yet (post-login redirect is preserved). A copy button in the sidebar puts the canonical URL on the clipboard.
Email Whitelist
Room owners can restrict who can be invited to their room by maintaining an access list of email addresses. Invites to non-whitelisted emails are rejected server-side.
Multilingual Cortez
The AI assistant's system prompt was updated to detect and respond in the language of the room's active users, not just English.
Translation Rendering Fix
ChatMessage was updated to render translatedContent (the per-user translation) instead of the raw content field when one is present.
Infrastructure
Prisma migrations now run automatically on server startup (prisma migrate deploy) via the Procfile / nixpacks start command, so Railway deploys apply pending schema changes without manual intervention.
Why it matters
Usernames and slugs turned GroupGPT rooms into addressable places on the internet — shareable, bookmarkable, and linkable in a way that raw room IDs never were.