Tavrn Logo Blog
🧾 Tavrn Version 2

🧾 Tavrn Version 2

8 min read
changelog
On this page 16 sections
The biggest update Tavrn's ever shipped. A brand new theme system with 16 themes across 7 collections, a completely rebuilt voice engine, Room Events, and TavKit bots and automations finally going live with a full developer API. Alongside that: a redesigned global search, a reworked settings panel, a rebuilt message list, and a long list of fixes and polish underneath it all. Months of Canary work, all landing here at once.

This is the big one. Everything that’s been cooking in Canary since v1.35.2 is now rolling into stable, all at once. New theme system, rebuilt voice, Room Events, TavKit bots going live, a redesigned search, settings, and sidebar, and a long list of fixes underneath it all. Grab a drink, this is a long one. 🧡


🎨 A Whole New Theme System

We tore out the old hardcoded theme system and rebuilt it from scratch, fully data-driven this time.

  • 16 themes across 7 collections: Classic, Midnight, Ember, Verdant, Aether, Velvet, and Arcane, each with a matched dark and light variant
  • 4 new Cocoa-exclusive themes: Noir, Crème, Neon, and Bloom
  • Collection auto mode: set a collection to follow your system’s light/dark preference throughout the day
  • Redesigned Appearance tab with animated collection cards and stacked theme previews
  • Live preview bottom sheet shows a realistic chat mockup for every theme before you commit
  • Cocoa subscribers can build custom themes with a full visual color editor
  • If you’re coming from an older theme, it migrates automatically to its closest new equivalent, nothing to set up on your end

🎙️ Voice, Rebuilt From the Ground Up

The entire voice engine was rebuilt on RealtimeKit’s direct Core SDK, ditching the old React wrapper that was causing crashes.

  • Custom voice UI: avatar tiles with speaking rings, a sidebar participant list, an incoming call toast, and a floating call bar
  • Cleaner join/leave/mute/deafen/video controls under the hood, rebuilt to match how you’d expect a modern voice client to behave
  • A lot of dead code from the old calling system got removed entirely, this wasn’t a patch, it was a real rebuild

📅 Room Events

Rooms can now schedule real events, not just pin a message and hope people see it.

  • Owners and admins can create events with banners, all-day toggles, channel/voice/IRL locations, accent colors, and attendee limits
  • Upcoming events show on the room’s home page and in the unified sidebar, with a full detail view on click
  • A dedicated Events tab in room settings to view, edit, cancel, or delete events in one place

🤖 TavKit Grows Up

TavKit, Tavrn’s developer platform, went from “exists” to “actually usable.”

  • Bots and automations are live: message, member, and reaction events now dispatch to bots in real time
  • A real REST API: bots can read servers and channels, send messages and DMs, and manage their own config
  • Keys & Credentials panel to manage API access, review bot tokens, and set webhook signing secrets
  • Run Logs: see the last 50 automation runs with per-action results, errors, and timing
  • Built-in documentation: quickstart, event payloads, API reference, and webhook verification guides, all in the portal
  • Slash commands typed in chat now reach the bots that registered them
  • Webhooks are signed with HMAC-SHA256 so developers can verify payloads actually came from Tavrn
  • Sign In with Tavrn is open for developers: register OAuth apps with a name, logo, redirect URIs, and scopes right from the TavKit portal, plus a standard /.well-known/openid-configuration discovery document so any standard OAuth/OIDC library can plug in

Search now works like a proper command palette instead of a basic search box.

  • Searches messages, media, links, and people all at once, with All, DMs, and Rooms filters
  • Matching profiles show up directly in results
  • Full keyboard navigation: arrow keys, Enter, Escape
  • Faster repeat searches, better loading and empty states, and a much better experience on mobile

⚙️ Settings, Reimagined

Settings moved from a full separate page to a popover panel that opens right over whatever you’re doing, anchored to the bottom of the screen on desktop and full-screen on mobile, with support for jumping straight to a specific section.

🪟 Compact Sidebar

A new compact layout for the Unified Sidebar is available under Settings → Accessibility → Compact sidebar, tighter spacing, smaller avatars, less width, same functionality.

✍️ Reading & Writing

Markdown got a real visual identity Branded headings and links, better blockquotes, improved code blocks, proper table styling with horizontal scrolling, styled task lists, gradient dividers, and spacing that actually adjusts based on what’s around it instead of one-size-fits-all.

Font size and density controls A message font size slider (85% to 150%) and a display density setting (Compact, Comfortable, or Spacious) are both in Accessibility settings now, with a live preview so you see exactly what you’re choosing before committing. Both work alongside Large Text mode and every theme.

System message editor got a real upgrade A full Markdown toolbar, selection-aware formatting, Write/Split/Preview modes, live preview, character counter, and a send shortcut (Ctrl/Cmd + Enter).


🎬 Media

  • Video uploads work everywhere now, file picker, media gallery, all of it, with full MIME validation
  • Media channels redesigned with a masonry grid, hover play overlays, GIF/video badges, and proper inline video playback
  • All uploads now go exclusively through our R2 pipeline, the old Supabase storage fallback is gone for good

💬 Messaging Polish

  • Brand new message list, rebuilt from the ground up
  • Quoted messages got a cleaner card look with clearer author/preview hierarchy
  • Forwarded messages now show as a subtle branded chip instead of loud all-caps text
  • Message composer rebuilt again, cleaner surface, stronger focus state, tighter toolbar, more confident send button
  • Pinning is back where it should be: a visible pin button right in the message hover toolbar, not buried in a right-click menu, and mod roles are now correctly recognized for pin permissions
  • Unread indicators actually work now: unread channels get a dot and bold name, mentions get a badge, and muted channels stay quiet without showing false unreads
  • Chat scrolling stopped fighting you: opens at the bottom, only follows new messages if you’re already there, and auto-loads older messages as you scroll up
  • Pinned messages panel redesigned with proper link formatting and click-to-jump with a highlight animation

🎨 More Design Polish

  • Profile cards lost the glassy overlays in favor of flatter, more intentional surfaces
  • Member sidebar in rooms is denser and cleaner, with softer role headers and a subtle glow on online status
  • Room home pages now scale edge-to-edge, and long names/messages/links properly truncate instead of breaking the layout
  • Create Poll modal has real structure now instead of a flat form
  • TavKit’s developer portal matches the rest of the app visually, brand-tinted, wider layout, modern nav, and works correctly in every theme including light ones

🔔 Notifications

  • Replies now notify people: when you reply to someone, they get a notification, with a Notify/Quiet toggle right in the reply bar if you want to opt out per-reply
  • Notifications and mentions run through the same unified system introduced back in v1.35.2, refined further here

💎 Cocoa

Downgrades are now instant. The moment a subscription is canceled or expires, Cocoa perks (character limits, upload size, themes, avatar frames) disappear immediately instead of lingering until a background job caught up.


🐛 Fixed

  • Fixed a crash where the sidebar could throw a settings-provider error during navigation
  • Fixed invalid DOM nesting warnings on code blocks in chat
  • Fixed uploads being incorrectly blocked on rooms with the content filter enabled
  • Fixed R2 presigned URL signatures failing due to missing URL encoding on canonical query strings
  • Fixed 400 errors on room home pages caused by invalid cross-table filters
  • Fixed missing icon exports that were crashing the pinned messages panel and voice overlay
  • Fixed reference errors that were crashing chat and the sidebar under certain voice/call conditions
  • Fixed jump-to-message highlight animations not working
  • Fixed TavBot going unresponsive due to a message queue permissions issue, plus a deeper fix so duplicate webhook deliveries can no longer cause TavBot to respond more than once to the same message
  • Improved TavBot’s command parsing to handle extra whitespace more reliably

⚠️ Known Issues

Nothing major at this time.

🧭 What’s Next

With the theme system, voice engine, and TavKit all rebuilt on solid foundations, the next stretch is about building on top of them rather than tearing more things out. Thank you for sticking with Tavrn through a very long stretch of Canary updates to get here. 🧡

~ Team Tavrn

Share:

Was this post helpful?