v1.6.6 Mar 12, 2026
Voice Messages
  • Added custom AudioPlayer with waveform visualiser, seek bar, and volume slider — replacing the default browser audio element
  • Added voice message recording directly in the DM composer with a hold-to-record interface
  • Voice messages support an optional auto-delete timer (30 min · 3 days · 7 days · 14 days · 30 days) shown as an expiry clock badge on the player
  • Fixed AudioPlayer showing Infinity:NaN for webm duration on load
  • Fixed waveform disappearing and seek/waveform misalignment
  • Fixed AudioContext double-close errors in both the player and recorder
  • Fixed voice_expires_at always arriving as null for file-attachment DMs and not reaching clients
  • Waveform progress is now smoothed with requestAnimationFrame
Server List — Sorting & Folders
  • Servers in the sidebar can now be drag-and-drop reordered
  • Servers can be grouped into folders — click a folder to expand/collapse its servers
  • Sort order and folder layout persist across sessions
DM Retention
  • Fixed retention changes not being applied to existing messages — messages older than the new retention window are now deleted immediately when both users accept a change
  • Remaining messages have their expiry recalculated as created_at + new_retention, anchored to send time rather than acceptance time
  • Fixed messages deleted by retention briefly flashing before disappearing — stale IndexedDB entries are now evicted after the server response
  • Fixed DM messages loading out of chronological order for ~1 second on open — IndexedDB results are now sorted by createdAt before display
DM — Other Fixes
  • Fixed message duplication when the sender has multiple clients open simultaneously
  • Replaced browser confirm() with a styled ConfirmDialog for DM message deletion
  • Fixed 429 rate-limit storm on socket reconnect — loadMessages is now deduplicated per conversation; DM rate limit raised to 300 req/min
Personal Roles
  • Added Personal Roles Manager accessible from the Friends List header — create and manage cosmetic roles visible across all servers
Performance & Caching
  • Server icons, banners, and profile pictures are now cached by the browser for 7 days — eliminates redundant re-downloads on every page load
  • Hashed JS/CSS assets (/app/assets/) now served with immutable, max-age=1y
  • Fixed index.html being cached by browsers/CDN — it is now served with no-store, preventing stale chunk-hash references after a deploy that caused module load failures
Settings — Cat Cache
  • Added Cat Cache section under Content & Social settings — shows all browser-cached images grouped by Avatars, Banners, User Generated Content, and System Images
  • Click any thumbnail to view it full-size
  • Purge All button force-refetches every cached image and updates the display immediately
Landing Page & Invite
  • Added a public invite landing page at the server root — shows server name, member count, banner, and a Join button
  • Landing page now uses a full-page blurred banner background matching the in-app invite style
  • Added CatRealm favicon and matched background gradient to the client invite page
Pterodactyl Egg
  • Switched startup to a Node bootstrap script — resolves native module (better-sqlite3) compatibility in musl containers
  • Fixed flat .env generation and SERVER_URL auto-update on SSL toggle
  • Fixed AUTO_UPDATE_RESTART_ON_START defaulting to false
  • Env file is now backed up before egg reinstall; duplicate startup logs and premature exits resolved