🐸 Version 3.12.1
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 -
GuildCategorychannels 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
botApiClientthrottled queue instead of rawfetch(), 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
ForumChannelwas missing from theManageableWebhookChanneltype in bothwebhookHelper.tsandmessageCreate.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