Skip to main content

🐸 Version 3.12.1

← Back to the Main Changelog

February 22, 2026


Summary

Major dashboard UX overhaul for channel mirroring (conversations). Added a configuration health scanner that detects stale, duplicate, and missing channels with one-click fix options. Full forum channel and thread support for webhooks. All dashboard API calls now go through a throttled queue to prevent Discord API bans. Health check UI fully supports multi-language translations.


New Features

Configuration Health Scanner

  • Auto-Scan on Load - The conversation settings page now automatically scans all mirror groups on load, detecting stale channels (deleted/archived), duplicates, and empty groups
  • Issue Banner - A summary banner shows detected issues with counts for stale, duplicate, and empty group problems
  • One-Click Fix - Each stale channel can be individually removed or replaced with any active channel from the server
  • Replace Picker - A searchable dropdown lets you pick any live server channel as a replacement for a stale entry
  • Fix All Stale - A single button removes all stale channel entries across all groups at once
  • Re-Scan - Manually re-run the health check at any time after making changes

Stale Channel Warnings

  • Inline Warning Icons - Channels not found in Discord show a yellow warning triangle with the raw channel ID grayed out
  • Hover Tooltip - Hovering over a stale channel explains that it may have been deleted, archived, or is an inactive thread

Forum Channel Support

  • Webhook Management - Forum channels (GuildForum) are now fully supported for webhook creation and management, fixing issues where translations failed for forum thread parents
  • Thread Parent Detection - When a message arrives in a thread inside a forum, the bot now correctly identifies the forum as the webhook-manageable parent

Improvements

Dashboard Channel Dropdowns

  • Category Filtering - GuildCategory channels are now filtered out of all user-side dropdowns (conversations, auto-translate, ignored channels) since they cannot be translated
  • Human-Readable Types - Channel type labels now show friendly names like "Text Channel", "Thread", "Forum", "Announcement" instead of raw Discord API values
  • Admin List Channels - The admin Omni page now displays colored type badges and parent category IDs for easier support investigations

API Rate Limit Safety

  • Throttled API Calls - All dashboard API routes that fetch Discord channel data now go through the botApiClient throttled queue instead of raw fetch(), preventing Discord API rate limit bans
  • Affected Routes - Settings data, mirror channel management, mirror scan, and mirror repair endpoints are all now properly throttled

Multi-Language Support

  • Health Check i18n - All health scanner strings (issue banners, stale/duplicate/empty labels, fix buttons, tooltips, issue descriptions) use the translation system and display in the user's preferred language
  • 12 New Translation Keys - Added keys for issue descriptions, action buttons, status labels, and tooltips

Translation Resilience

  • Per-Channel Error Handling - The conversation bridge loop now wraps each target channel in a try/catch block. If one channel fails (e.g., archived thread, translation API error), the bot logs the error and continues delivering to the remaining channels instead of aborting the entire group

Bug Fixes

  • Fixed forum channel threads failing to create webhooks because ForumChannel was missing from the ManageableWebhookChannel type in both webhookHelper.ts and messageCreate.ts
  • Fixed conversation bridge aborting all remaining channel deliveries when a single channel's translation or send operation threw an unhandled error
  • Fixed all dashboard API routes bypassing the throttled bot API client, which could trigger Discord rate limit bans under heavy dashboard usage
  • Fixed health check UI showing English-only strings regardless of the user's language preference

← Back to the Main Changelog