> ## Documentation Index
> Fetch the complete documentation index at: https://docs.volvox.bot/llms.txt
> Use this file to discover all available pages before exploring further.

# Volvox.Bot Changelog and Release Notes

> Release notes for Volvox.Bot covering new features, dashboard improvements, AI moderation updates, and bug fixes for the Discord bot platform.

<Update label="2026-06-13" description="June 2026" tags={["Features"]}>
  ## New features

  **Web search now available for supported AI providers** — The AI responder can now search the web for current or external information when a question needs up-to-date data. Supported providers in the catalog are **Z.AI** and **OpenRouter**; MiniMax, Moonshot, and Fireworks remain disabled until their endpoints have a verified compatible tool path. Z.AI uses its Coding Plan MCP web-search server, while OpenRouter uses its documented provider-exported server tool. Search is triggered automatically when the classification pass detects a question that needs fresh information, gated per-guild by the configured responder model. See [Search guardrails](/features/ai-conversations#search-guardrails).
</Update>

<Update label="2026-06-09" description="June 2026" tags={["Features"]}>
  ## New features

  **Reputation dashboard for the Members page** — Tracking your server's XP economy used to mean clicking into one member profile at a time and squinting at the numbers. The new **Reputation** sub-tab on **Members** lives at `/dashboard/members?tab=reputation` and answers the operational questions in one view: total XP awarded, how members are distributed across levels, the current leaderboard, and who most recently earned XP. The **Directory** sub-tab still owns searchable member lookups with XP, levels, activity, warnings, and links into each member profile. See [Reputation dashboard](/features/community#reputation-dashboard).

  **AI Usage ops dashboard for deployment operators** — Global admins get a new operator-only **AI Usage** page at `/dashboard/ai-usage` that rolls up AI activity across every server the deployment runs. It surfaces input, output, and total tokens; cache read and cache-creation tokens with read/write rates; estimated cost in USD; average and p95 latency plus generated tokens per second; provider, model, and request-type comparisons; the top servers by AI usage (with server names when the bot can resolve them); and recent expensive or slow requests. Filter by `24h`, `7d`, `30d`, or `90d` ranges and narrow by provider, model, or request type. Visibility is scoped to `BOT_OWNER_IDS`; server admins still see their own server's spend under **Analytics -> Messages**. See [AI usage ops dashboard](/features/analytics#ai-usage-ops-dashboard).

  **Deployment-wide AI usage dashboard for operators** — A new operator-only **AI Usage** page lands at **Dashboard -> AI Usage** for global admins. It rolls up input, output, cache read, and cache creation tokens across every server, plus estimated cost in USD, average and p95 latency, and tokens-per-second throughput. Provider, model, and request-type filters let you slice the data; the top-servers list and recent expensive/slow requests surface the outliers worth investigating. Range picker covers `24h`, `7d`, `30d`, and `90d`. Per-server admins still see their own usage under **Dashboard -> Analytics -> Messages** — this page is for deployment operators with `BOT_OWNER_IDS` access. See [AI usage ops dashboard](/features/analytics#ai-usage-ops-dashboard).

  ## Improvements

  **Audit Log gets a refresh button and a proper header** — The **Audit Log** page now leads with a consistent **System Ops** header and a one-click **Refresh** button so you can re-pull the table without reloading the page or changing a filter to nudge it. Same filters, same data — just less futzing. See [Audit log](/features/audit-log).

  **Bot health moved next to Performance** — The bot health panel (heap, RSS, CPU, uptime) now lives on the operator-only **Performance** page alongside the rest of the runtime metrics, instead of sharing the **Logs** page. The Logs view stays focused on the live log stream and its filters. The standalone restart history log has been retired — restart events still surface in [Audit log](/features/audit-log) where the rest of operational history already lives.
</Update>

<Update label="2026-06-08" description="June 2026" tags={["Features", "Fixes"]}>
  ## New features

  **Voice activity tracking, plus voice XP that lives with the rest of reputation** — Voice has always been the half of your server that didn't show up on the leaderboard. That changes now. **Voice Session Tracking** is on by default under **Settings -> Onboarding & Growth -> Engagement**, feeding voice joins and session duration into Live Insight so the **Voice Tracking** analytics tab finally has data behind it — it only collects while the top-level **Engagement** toggle is on, so opting out is one switch. Separately, **Voice XP** has moved into the reputation system under **Settings -> Onboarding & Growth -> Reputation**, where it belongs with the rest of your XP settings. Flip it on and members earn whole XP per completed voice minute — defaults to **2 XP/min** — running through the same cooldowns, level curve, and level-up actions as message XP. Existing servers are migrated in place; nothing about message XP changes. See [Voice tracking](/features/analytics) and [Community settings](/features/community#settings).

  **Reputation dashboard on the Members page** — Answering "how healthy is the XP economy right now?" used to mean clicking through individual member profiles and reading tea leaves. The new **Reputation** sub-tab on the Members page — at `/dashboard/members?tab=reputation` — puts the operational view in one place. You get total XP awarded across the server, level distribution, top members by XP, and the most recent XP earners. The existing **Directory** sub-tab still handles searchable per-member lookups with XP, levels, activity, warnings, and links into member detail. Nothing to enable — the sub-tab shows up automatically alongside Directory. See [Reputation dashboard](/features/community#reputation-dashboard).

  ## Bug fixes

  **Per-channel AI mode stops showing empty categories** — The **Per-Channel AI Mode** picker under **Settings -> AI & Automation -> AI Chat** used to list every category in the server, even ones with nothing for the bot to talk in. Lots of headers, lots of scrolling, zero payoff. Empty categories are now hidden, so you only see the ones you can actually configure. See [Channel modes](/features/ai-conversations#channel-modes).
</Update>

<Update label="2026-06-05" description="June 2026" tags={["Features", "Improvements"]}>
  ## New features

  **Contextual docs button in the dashboard** — Hunting through the documentation to figure out what a setting actually does was always one tab too many. Every dashboard page now ships a **question-mark button** in the header that opens the matching documentation right where you are — Analytics deep-links into the sub-tab you're on, Settings deep-links into the feature you're configuring, and the rest of the dashboard hands you the page you'd otherwise have to guess at. Same docs, zero search. Read the full mapping under [Settings tabs](/configuration/bot-settings#settings-tabs).

  ## Improvements

  **Redesigned settings, with breathing room** — The settings dashboard got a serious haircut. Every category page now opens with a bigger, calmer page title and a single column of consistent **label / description / control** rows, so the eye doesn't have to renegotiate the layout every time you switch tabs. Section enable/disable toggles are now full-width cards with a tactile pill switch — the kind that makes it obvious what's actually on. The step rail on the left reacts to your cursor, the **Weekly Activity Heatmap** plays a tasteful entrance animation on first render, and the **Logs** panel now wraps long audit-log lines instead of trailing them off the page. Behavior is unchanged — same settings, same routes, just a layout that earns its rent.

  **Embed builder polish** — The visual embed editor across welcome, ticket panels, and level-up actions got tightened up. Description fields now show real placeholder text instead of empty boxes, the accent color picker labels each swatch for screen readers, and the timestamp toggle is finally labeled correctly. Saved embeds render the same; the editing surface is just less fiddly to use. See [Welcome message embed format](/features/welcome) and [Tickets](/features/tickets#configuration).

  **Analytics sub-tab switcher returns to the header** — The **Messages**, **Voice Tracking**, and **Community Engagement** switcher is back at the top of the Overview, where it's easier to flip between views without scrolling the sidebar. The sidebar entries still work and the `?tab=` URL parameter still drives both, so bookmarks and deep links from earlier this month don't lose their place. See [Analytics](/features/analytics#share-or-bookmark-a-sub-tab).

  **Tidier dashboard chrome** — A handful of small cuts across the dashboard: the always-on "Live" pill next to the page title is gone (the data is live; you knew), the server selector in the sidebar now matches the surrounding column width instead of nudging out a few pixels too far, and the audit-log table stops escaping its container on long entries. No setting to change — log back in and the surface area just feels less twitchy.
</Update>

<Update label="2026-06-02" description="June 2026" tags={["Features"]}>
  ## New features

  **Curve Builder for reputation progression** — Hand-typing twenty XP thresholds to find the one shape that doesn't feel like a part-time job is officially over. The new **Curve Builder** on **Settings -> Onboarding & Growth -> Reputation** generates the whole progression from three inputs — total **Levels**, **Level 1 XP**, and **Final XP** — plus a shape. **Balanced** spaces levels evenly, **Early wins** front-loads progress so newcomers feel traction, and **Slow burn** stiffens the early climb for servers that want long-haul regulars. Select **Apply curve** and every row in the **Progression Steps** editor below updates in place; nudge individual levels by hand afterward if you want to break the pattern. Up to 100 levels, thresholds still have to strictly increase, and existing curves are left alone until you apply a new one. See [Level progression](/features/community#level-progression).
</Update>

<Update label="2026-06-01" description="June 2026" tags={["Features"]}>
  ## New features

  **Reputation Curve Builder reshapes level progression in one click** — Tuning a 20-level XP curve by editing every threshold by hand was busywork that nobody enjoyed, especially when all you really wanted was "make the early levels faster" or "stretch the grind to Level 20." The Reputation editor now ships a **Curve Builder** that regenerates the whole progression from three inputs — total **Levels**, **Level 1 XP**, and **Final XP** — plus a curve shape. Pick **Balanced** for even spacing, **Early wins** to front-load faster early levels and push XP into the tail, or **Slow burn** for heavier early requirements that soften near the end. Select **Apply curve** to regenerate, then fine-tune any individual level inline. Thresholds must strictly increase, at least one level is required, and the editor supports up to 100 progression steps. Configure it under **Settings -> Onboarding & Growth -> Reputation**. See [Level progression](/features/community#level-progression).

  **Incident ping roles for Content Safety** — Posting an AI auto-moderation incident report into a busy staff channel only helps if the right humans actually see it, and "@everyone in #mod-reports" was never going to be the answer. Content Safety now ships an **Incident Ping Roles** setting that mentions the staff roles you pick whenever the bot posts a flagged incident to your **Incident Report Channel**. That covers Flag & Log reports plus the combined reports that also queue Hard Delete, Issue Warning, Temporary Timeout, Server Kick, or Permanent Ban. Mentions are scoped to the report channel post only — no extra pings in member DMs, moderation case embeds, audit logs, or operator logs. The bot also builds an explicit role allowlist, so a stray `@everyone` in the report body can't escape. Configure it under **Settings -> Moderation & Safety -> Content Safety**, or set numeric Discord role IDs directly on `aiAutoMod.incidentMentionRoleIds`. See [Incident ping roles](/features/moderation#incident-ping-roles).
</Update>

<Update label="2026-05-31" description="May 2026" tags={["Features", "Improvements"]}>
  ## New features

  **GLM 5.1 is the new default AI model — and the bouncer finally checks IDs at the door** — Every AI surface that used to default to MiniMax M2.7 — Content Safety, triage classify and respond, and TL;DR — now defaults to Z.AI's **GLM 5.1**. New servers pick it up automatically. Existing servers still parked on `minimax:MiniMax-M2.7` are migrated to `z-ai:glm-5.1` on upgrade, and TL;DR routing is force-migrated to GLM 5.1 across the board to fix a stale-config edge case that was leaving summary jobs pointed at the old default. Custom model picks you actually chose are left alone. At the same time, the **premium tier stopped being theoretical** — MiniMax, Moonshot (Kimi), Fireworks, OpenRouter, and GLM 5 Turbo are now premium-only and the dashboard dropdowns hide them on free-tier servers instead of letting you save a model and fail at runtime. GLM 5.1 stays free for everyone. Self-hosters opt specific servers into the premium catalog by listing their guild IDs in the new `PREMIUM_GUILD_IDS` env var. Pick your model under **Settings -> AI**, **Settings -> Moderation & Safety -> Content Safety**, **Settings -> AI & Automation -> Triage**, or **Settings -> Community Tools -> TL;DR**. See [Available models](/features/ai-conversations#available-models).

  ## Improvements

  **Per-action thresholds show up in the operator log stream** — The classification log line was still quoting old single-threshold percentages even after action ladders shipped, which made tuning the new per-action confidence settings a guessing game. Every Content Safety scoring pass now writes per-action threshold percentages — one per **Flag & Log**, **Hard Delete**, **Issue Warning**, **Temporary Timeout**, **Server Kick**, and **Permanent Ban** rung — alongside the legacy category numbers, plus each score as a percentage of the action threshold it would trip. Tune the ladder under **Settings -> Moderation & Safety -> Content Safety** with actual numbers instead of vibes. See [AI auto-moderation configuration](/features/moderation#configuration).

  **Compact AI log lines that don't punish your scrollback** — Operator log entries for AI auto-moderation and AI triage have been put on a diet. Classification now writes a single `AI automod classified: ...` line with the clean/flagged verdict, the selected action, and the top category scores as `score%/threshold%`; triage writes matching `AI triage classified: ...` and `AI triage skipped: ...` lines with confidence and relevance side by side. Expanded metadata still carries the full per-action ladder for the strongest categories, so you keep the depth without drowning the **Logs** view. No configuration changes — applies to every server the next time the bot processes a message. See [AI auto-moderation configuration](/features/moderation#configuration).
</Update>

<Update label="2026-05-30" description="May 2026" tags={["Features", "Fixes"]}>
  ## New features

  **GLM 5.1 is the new default AI model** — New servers now ship with `z-ai:glm-5.1` selected across [AI conversations](/features/ai-conversations), AI triage, [Content Safety](/features/moderation), and [TL;DR](/features/tldr) instead of the previous MiniMax default. Existing servers using the old default are migrated automatically the next time the bot starts, and the prior value is backed up so support can restore it if you ask. Custom picks on AI, triage, and Content Safety are left alone — only saved values that matched the previous default are swapped. **TL;DR is the one exception**: the summary model is force-migrated to GLM 5.1 for every server so `/tldr` routing stays consistent with the rest of the bot. Open **Settings -> Community Tools -> TL;DR** and pick a different model if you want to override it. Self-hosters need `ZHIPU_API_KEY` set in `.env` to keep GLM 5.1 working; the bot otherwise falls back through your configured models. See [Available models](/features/ai-conversations#available-models).

  **Per-action thresholds for Content Safety** — One threshold per category was always a blunt instrument: pick 75% and you either flag, delete, warn, *and* timeout at the same line in the sand, or you tuned the knob down and watched the bot get trigger-happy on borderline messages. Each Content Safety category now carries its own action ladder with independent confidence percentages for **Flag & Log**, **Hard Delete**, **Issue Warning**, **Temporary Timeout**, **Server Kick**, and **Permanent Ban**. Flag at 55%, delete at 70%, warn at 75%, timeout at 88%, leave kick and ban off entirely — or wire any other shape that matches your server's tolerance. Smarter defaults ship with every category: standard categories follow the 55/70/75/88 ladder, self-harm only flags for review, and doxxing plus child endangerment start stricter and can escalate to a ban at high confidence. Existing configs are migrated automatically — your old single-threshold tuning keeps working until you open the redesigned ladder under **Settings -> Moderation & Safety -> Content Safety** and dial each action in on its own. See [AI auto-moderation configuration](/features/moderation#configuration).

  ## Fixes

  **Dashboard server list no longer lies during bot startup** — If you opened the dashboard while the bot was still finishing its Discord handshake, the `/api/guilds` endpoint would happily hand back an empty cache, which the picker dutifully rendered as "you have no servers." The server list now returns `503 Discord client is not ready` until the gateway connection is actually live, so the dashboard can show a real loading state instead of gaslighting you into thinking your invites evaporated. No action needed; the fix kicks in for everyone the next time the bot restarts.
</Update>

<Update label="2026-05-29" description="May 2026" tags={["Features", "Fixes"]}>
  ## New features

  **Z.AI joins the provider roster** — Z.AI is now a first-class provider for [AI conversations](/features/ai-conversations), AI triage, [AI auto-moderation](/features/moderation), and [TL;DR](/features/tldr). Two GLM models ship visible by default on the free tier: **GLM 5.1** (`z-ai:glm-5.1`) and **GLM 5 Turbo** (`z-ai:glm-5-turbo`). Both speak thinking mode and carry their own per-token pricing for input, output, and cache reads. Self-hosters flip on Z.AI by dropping `ZHIPU_API_KEY` into `.env`; the bot routes requests through the Z.AI Coding Plan endpoint at `https://api.z.ai/api/coding/paas/v4`. Managed users on volvox.bot get the new models in the dashboard pickers automatically — no restart, no fiddling. Select a Z.AI model under **Settings -> AI**, **Settings -> Moderation & Safety -> Content Safety**, **Settings -> AI & Automation -> Triage**, or **Settings -> Community Tools -> TL;DR**.

  ## Fixes

  **Safety guardrail spend stops sneaking past the budget** — Output Safety Guardrail calls were happily classifying away without their cost showing up anywhere it counted. Safety classifier calls — including the recheck after a constrained retry — now post to AI usage, the per-model cost rollup, *and* the daily budget limit alongside the classifier and response models. Translation: if you're running the guardrail at a hot threshold, it can now actually trip the budget cap it was already drafting against. The default for budget tracking flips to include safety spend; nothing to configure. See [Analytics](/features/analytics) and [Output Safety Guardrail](/features/ai-conversations#output-safety-guardrail).

  **One flaky provider no longer takes everyone down with it** — The AI circuit breaker kept a single, shared failure tally across every provider, so one provider's bad afternoon could trip the breaker for *all* of them and quietly defeat the gateway fallback you set up for exactly this scenario. Failure state is now keyed per provider, so OpenAI hiccuping doesn't drag Anthropic, Fireworks, or anyone else into the penalty box with it. Mid-stream errors also count properly instead of being recorded as a success at the moment the stream opened. See [AI conversations](/features/ai-conversations).

  **SSRF protection learns that IPv6 also exists** — The dashboard's SSRF guard only checked IPv4 dotted-quad hostnames, which meant `http://[::1]` and the IPv4-mapped IPv6 form `http://[::ffff:127.0.0.1]` could stroll past it and hit loopback or internal services. The validator now strips the brackets the URL parser leaves on IPv6 hosts, routes any IP literal — v4 or v6 — to the block check, decodes compressed IPv4-mapped addresses back to dotted-quad, and explicitly blocks the IPv6 unspecified address (`::`) and the unique-local range (`fc00::/7`). No configuration changes; the patch applies to every outbound URL the dashboard validates.

  **Live log filtering and stream layout settle down** — The operator-only **Logs** tab had two rough edges. The in-page text filter quietly dropped messages whose casing or whitespace didn't match exactly, and self-hosted browsers could fail to upgrade the log WebSocket when the dashboard couldn't guess the bot's public origin. Filter matching now normalizes case and whitespace so partial matches behave the way the input box suggests, and unmatched WebSocket upgrade requests close cleanly instead of hanging. The Logs viewer also streams across all servers in one feed for operators. Self-hosters set the new `BOT_PUBLIC_URL` env var to the public bot origin (for example, your Railway bot service URL) so the browser can reach `/ws/logs`; managed users on volvox.bot need no changes. See [Logs](/dashboard#operator-only-sections).
</Update>

<Update label="2026-05-28" description="May 2026" tags={["Fixes"]}>
  ## Fixes

  **Analytics sub-tabs stop showing up twice** — The Overview dashboard was rendering its **Messages**, **Voice Tracking**, and **Community Engagement** switcher in both the header *and* the sidebar — same buttons, two homes, zero added value. The header pills are gone, and the sub-tabs now live only in the sidebar where the rest of the navigation already lives. Bookmarks, deep links, and the `?tab=` URL parameter all keep working exactly as before. See [Analytics](/features/analytics#share-or-bookmark-a-sub-tab).
</Update>

<Update label="2026-05-27" description="May 2026" tags={["Features"]}>
  ## New features

  **Setup wizard for new servers** — Inviting Volvox.Bot now drops you into a guided, page-based setup wizard instead of a blank dashboard. Pick a server, then step through focused pages for welcome messages, content safety, protected roles, warning rules, tickets, reputation, starboard, command prefix, TL;DR summaries, and dashboard roles. A single AI provider/model pick drives chat, triage, content safety, and TL;DR routing together — no need to wire each one up separately. Toggle any section off, jump between steps, save when you're done. The bot picks up the new config without a restart. Skipping the wizard is fine; reopen it any time from **Settings -> Setup wizard** in the dashboard sidebar. No AI credentials yet? The wizard still saves the non-AI defaults, and you can wire AI up later from the dashboard. See [Run the setup wizard](/getting-started#run-the-setup-wizard).
</Update>

<Update label="2026-05-26" description="May 2026" tags={["Features", "Removed", "Fixes"]}>
  ## New features

  **Output Safety Guardrail for AI triage** — Neural Chat can now run a lightweight AI classifier on every bot-generated triage response before it posts to Discord. Responses flagged as unsafe are silently dropped and logged to Sentry, giving you a second pass on edge cases your system prompt didn't catch. Toggle it on under **Settings -> AI & Automation -> Triage -> Behavior -> Output Safety Guardrail**. Off by default. Self-hosters tune the classifier model, timeout, and fail-closed behavior through `SAFETY_GUARDRAIL_*` environment variables; managed users on volvox.bot get safe defaults. The AI usage ledger logs safety check cost under the `safety` type so you can keep an eye on the bill. See [Output Safety Guardrail](/features/ai-conversations#output-safety-guardrail).

  **Excluded channels for AI auto-moderation** — Content Safety now takes a per-channel ignore list. Pick channels under **Settings -> Moderation & Safety -> Content Safety -> Excluded Channels** and the bot skips scoring, thresholds, and every response action for messages posted there. Threads inherit their parent's setting, so excluding `#vent` covers every thread under it without extra clicks. Useful for venting channels, staff rooms quoting flagged content, or gradual Content Safety rollouts. Manual moderation, the Link filter, and classic auto-mod rules are unaffected. See [Excluded channels](/features/moderation#excluded-channels).

  ## Removed

  **Standalone auto-delete toggles retired** — Two global delete switches are gone: **Instant Enforcement** under **Settings -> Moderation & Safety -> Content Safety**, and the separate **Auto-Delete** toggle under **Settings -> Moderation & Safety -> Moderation**. Deletion is now driven entirely by the per-category **Hard Delete** response action and the **Spam Response** picker under **Spam Detection**. Pick `delete` on the categories that should actually remove messages, and leave it off everywhere you only want to flag, warn, or log — no more master switch quietly overruling your per-category choices. Existing configs are migrated automatically: the old toggles are dropped and every response action you already tuned keeps working. See [AI auto-moderation configuration](/features/moderation#configuration).

  ## Fixes

  **API keys and base URLs hidden from `/config`** — `/config view` used to happily dump the raw guild config into Discord, provider API keys and base URLs included — the same secrets the dashboard and API are careful to mask. Four fields — `triage.classifyApiKey`, `triage.respondApiKey`, `triage.classifyBaseUrl`, and `triage.respondBaseUrl` — are now stripped from `/config view`, rejected by `/config set` with a clear error, and hidden from path autocomplete. Descendant paths like `triage.classifyApiKey.foo` are blocked too, so nothing sneaks through a nested write. Manage these from **Settings -> AI** in the dashboard. Every other field behaves exactly as before.

  **Protected roles also skip the in-channel triage nudge** — Protected-role members were already exempt from formal moderation logs, but the lighter in-channel "hey, knock it off" nudge from AI triage was still sliding through. That nudge now respects the same protected-role list, so admins and trusted roles stop getting publicly side-eyed by their own bot. If the role check can't resolve cleanly, the nudge is skipped instead of sent. No configuration change needed — your existing Protect Roles selection takes effect immediately. See [Protected roles](/features/moderation#protected-roles).

  **Mass pings no longer hijack the AI** — Neural Chat used to treat `@everyone`, `@here`, and role pings as direct mentions, so a server-wide announcement could yank the bot into a reply it was never asked for. Mention detection now ignores mass pings by default — only an explicit `@Bot` mention (or a reply to the bot) triggers a response. A new **Ignore mass pings** toggle lives under **Settings -> AI -> Chat**; turn it off if you want the bot to chime in on mass pings again. See [AI conversations](/features/ai-conversations#configuration).

  **TL;DR dashboard toggle reflects the on-by-default behavior** — TL;DR has shipped enabled out of the box for a while now. But the **Settings -> Community Tools -> TL;DR** toggle and the **Community Features** summary switch could still display as off when a guild's saved config didn't include an explicit `enabled` flag. The dashboard now treats a missing flag as enabled — matching what the bot already does at runtime — so the UI and `/tldr` finally stop contradicting each other. Flip the toggle off if you want to disable summaries; everything else is unchanged. See [TL;DR](/features/tldr).

  **`/tldr` cooldown is now per user, per server** — The `/tldr` rate limit used to apply per channel, so one person's summary blocked everyone else in the same channel for the full cooldown window. The cooldown is now keyed by `(server, user)` instead — each member gets their own timer, and it spans the whole server rather than a single channel. The default is still 300 seconds, and you can tune it under **Settings -> Community Tools -> TL;DR**. The rate-limit message now reads "before using /tldr again on this server." See [TL;DR](/features/tldr).

  **Threads hidden from dashboard channel pickers** — Channel selectors across the dashboard no longer list threads as pickable options. Threads were never a useful target anyway — Content Safety excluded channels, AI chat allowlists, and the rest all inherit from the parent channel. Pickers now show only text, voice, announcement, forum, media, and category channels. Any thread IDs already saved in your configuration stick around quietly, with a one-click control to clear them if you want a clean slate. No action needed for existing setups.

  **Server-side telemetry stays grouped by Discord server** — Operational Amplitude events for bot installs, slash command usage, and AI usage are now keyed by Discord server ID instead of a shared anonymous device. Usage stays grouped by server rather than blending across guilds, and events without a resolvable server ID are dropped instead of falling back to an anonymous identifier. The properties sent are unchanged — command name, AI token and cost totals, member-count bucket, and the large-server flag. Discord user IDs, message content, raw channel IDs, channel names, and server names are still never sent. See [What analytics covers](/security#what-analytics-covers).
</Update>

<Update label="2026-05-25" description="May 2026" tags={["Improvements"]}>
  ## Improvements

  **Shareable analytics sub-tabs** — The Overview dashboard's **Messages**, **Voice Tracking**, and **Community Engagement** views now live behind a `?tab=` URL parameter. Bookmark a view, send a teammate a direct link to **Voice Tracking**, or refresh the page without bouncing back to **Messages**. Selecting a sub-tab from the dashboard sidebar updates the URL in place — no full reload. See [Analytics](/features/analytics#share-or-bookmark-a-sub-tab).

  **Refreshed dashboard, settings, and layout polish** — A broad UI refresh lands across the dashboard. The page header picks up subtle motion, and animated pill switchers replace the old tab bars in the header, sidebar, and ticket panel format selector. **AI Triage** now pairs Engine & Routing with Role Filtering, and Limits & Tuning with Behavior, in side-by-side rows. **Support & Integrations** does the same for Ticket Routing and Operational Limits. Inputs share one consistent style with the number-spinner arrows hidden, and the Discord Markdown editor gets a thinner scrollbar. **Content Safety -> Spam Response** also moves to a searchable multi-select popover with checkmarks and removable action badges, so picking several response actions feels less fiddly. No behavior changes — same fields, cleaner edges.
</Update>

<Update label="2026-05-24" description="May 2026" tags={["Improvements", "Fixes"]}>
  ## Improvements

  **Triage now scores certainty and usefulness separately** — The AI triage classifier used to roll "am I sure what this message is?" and "should I actually say something?" into a single confidence number, which led to the bot either over-talking or sitting on its hands. Triage now produces two scores — **confidence** (label certainty) and **relevance** (response value) — with independent thresholds. The result: fewer drive-by chime-ins on messages the model only half-understands, and more thoughtful replies when something genuinely warrants one. Classification logs surface both numbers so you can tune each on its own. Technical frustration is also now a valid chime-in trigger, so a member rage-typing about a broken build no longer gets ignored for being off-topic. See [AI conversations](/features/ai-conversations#configuration).

  **Web search gated on provider capability** — Providers that can't actually browse the web no longer get asked to. When the selected model lacks search, the bot injects a `SEARCH_UNAVAILABLE` directive and hedges on time-sensitive claims instead of making things up. System prompt facts — who built the bot, where to find the invite, your house rules — stay authoritative either way, so "who made you?" no longer triggers an existential crisis. See [AI conversations](/features/ai-conversations).

  **MiniMax thinking mode enabled** — MiniMax models now use their thinking capability for triage and responses, trading a few extra tokens for noticeably steadier answers on multi-step questions. No configuration needed — pick a `minimax:*` model and you get the upgrade automatically. See [Available models](/features/ai-conversations#available-models).

  **Softer classifier prompts** — Hard "never" and "always" rules in the classifier have been rewritten as "favor" guidance. The model now treats edge cases as judgment calls instead of bouncing off rigid rails, which translates to fewer obviously-wrong skips and fewer over-eager replies. Existing thresholds carry over; only the prompt tone changed.

  **Smarter memory extraction** — The memory pipeline got a thorough scrub. Discord markup (mentions, roles, channels, custom emoji) is now stripped before anything reaches mem0, so memories read like sentences instead of raw markup soup. Mentions resolve to `displayName [userId: id]` so the model can tell two `@Alex`es apart. Assistant replies are excluded from extraction to stop the bot from remembering its own echoes as facts. Multiple facts per message get captured together instead of only the first one. Updates to existing memories replace stale info instead of stacking duplicates. See [AI conversations](/features/ai-conversations).

  **Optional solo-user confidence boost** — When only one human is actively chatting, the bot can now lower its confidence and relevance thresholds slightly so a 1:1 conversation doesn't feel like pulling teeth. Enabled by default; flip it off in AI Automation config if you'd rather keep the bot at arm's length in quiet channels.

  ## Fixes

  **Debug footer shows human-readable model names** — Discord embeds from AI features were quietly leaking raw model paths like `accounts/fireworks/models/deepseek-v4-pro` into debug footers, which is exactly as readable as it looks. Footers now render as `Fireworks / DeepSeek V4 Pro` by resolving the friendly name from the provider registry. Unknown models fall back to a clean strip-prefix instead of dumping the full path. See [AI conversations](/features/ai-conversations#available-models).

  **Memory extraction dedup bug squashed** — When multiple messages from the same user landed in the same extraction batch, only the first one was being sent to mem0 and the rest got dropped on the floor. All target messages per user are now joined and extracted together, so the bot stops forgetting half of what you just told it.
</Update>

<Update label="2026-05-22" description="May 2026" tags={["Fixes"]}>
  ## Fixes

  **Buffered messages stop falling into the void** — Under sustained chatter, the AI triage buffer could quietly drop messages, direct @mentions included, once its internal re-evaluation hit a recursion cap. No follow-up timer meant the work never resumed. Re-evaluation now hands off to a short timer instead of stacking calls on itself. Rapid-fire messages coalesce into a single pass, and nothing gets orphaned when a busy channel hits the limit. Direct @mentions arriving during the delay still cancel the timer and evaluate immediately on the fast path. See [AI conversations](/features/ai-conversations).
</Update>

<Update label="2026-05-21" description="May 2026" tags={["Features", "Improvements", "Removed", "Fixes"]}>
  ## New features

  **Custom command prefixes** — Admins can now set a text command prefix like `.`, `!`, or `?` under **Settings -> Community Tools -> Commands**. Every slash command is mirrored as a prefix command using the same name, options, and permission gates — `/ban @user spam` and `!ban @user spam` route to the same handler, so a member who can't use `/ban` still can't use `!ban`. Prefixes accept one to five non-space characters and skip `/`, `@`, `#`, `<`, `>`, and backticks to avoid colliding with mentions or Markdown. Leave the field blank to keep slash-only behavior. See [Command prefix](/configuration/bot-settings#command-prefix).

  **Ticket panels publish themselves** — Configuring a ticket panel no longer means copying a message into a channel and praying. Save a **Panel Destination** and **Panel Message** under **Settings -> Tickets** and the dashboard posts the panel for you the moment the save succeeds. Switch destinations and the old panel cleans itself up before the new one drops in — no orphaned buttons lurking in last week's announcements channel. The embed editor also got a tidy: template variables (`{{username}}`, `{{mention}}`, `{{serverName}}`) are now limited to the description, where they actually belong. See [Tickets](/features/tickets#configuration).

  **Saved ticket panel publishing** — Ticket panels are finally part of your dashboard save, no more copy-paste rituals. Select a **Panel Destination** under **Settings -> Tickets**, edit the **Panel Message** as **Text**, **Embed**, or **Both**, then select **Save**. The bot quietly cleans up the previously tracked panel message, posts a fresh one in the saved channel, and remembers the new message ID so the next edit replaces the right post. If the publish trips on missing channel access, **Send Messages**, or **Embed Links**, the failure is recorded so you can fix permissions and retry without losing your config. See [Ticket panel publishing](/features/tickets#ticket-panel-publishing).

  **Welcome message embed format** — Welcome messages now ship in **Text**, **Embed**, or **Both** flavors, matching the ticket panel and level-up message editors. Configure title, description, color, thumbnail (none, server icon, custom, or user avatar), fields, footer, image, and timestamp under **Settings -> Onboarding & Growth -> Welcome**. The plain-text `message` field still works, so servers that never switch to embed mode keep their current copy untouched.

  ## Improvements

  **Welcome publish accepts a target channel override** — The welcome publish endpoint (`POST /guilds/:id/welcome/publish/:panelType`) now accepts an optional `channelId` in the request body. Dashboards and integrations can publish the rules panel to a specific channel without first updating the saved config. Requests without `channelId` continue to publish to the configured channel, and invalid IDs are rejected with a 400 response.

  ## Removed

  **Temp roles retired** — The temp roles feature leaves the bot end to end. The `/temprole` command, the **Temp Roles** dashboard page, and the **Settings -> Temp Roles** settings panel are gone. The **Temp roles** category also drops out of [audit log](/features/audit-log) filters. The upgrade clears any existing temp role assignments along with it. If you leaned on time-limited roles, pair Volvox.Bot with a dedicated role-scheduling bot or lean on Discord's native role management. Permanent role assignments through Discord stay untouched.

  **Directed onboarding DM sequence retired** — The multi-step welcome DM sequence under **Settings -> Onboarding & Growth -> Welcome** is gone. Volvox.Bot no longer pings new members with scripted follow-up DMs after they join. The welcome flow now sticks to context-aware welcome messages in your configured channel plus optional rules verification. The upgrade drops any existing `dmSequence` config automatically, and the **Welcome DM Sequence** advanced panel and its search entry leave the dashboard with it. The `welcome_onboarding` source also stops appearing on `notifications.dm_failed` audit entries. If you leaned on staged onboarding DMs, hand the job to Discord's native **Onboarding** flow — it walks new members through rules and role choices without the bot in the loop.

  ## Fixes

  **AI auto-mod reasons no longer end mid-thought** — Mod log embeds, DM notifications, and case records were quietly chopping AI auto-mod reasons off at 512 characters, which is roughly the length it takes the model to clear its throat. Reasons now use the full 1024-character embed field limit, and the model has more tokens to actually explain itself. Case reasons sent to Discord's audit log get capped cleanly at 512 instead of bouncing off the API. Long reasons in the dashboard also wrap properly instead of trailing off the page. See [AI auto-moderation](/features/moderation).

  **Ticket support role picker remembers Discord exists** — When the bot's role cache was cold, the **Support Staff Roles** dropdown on **Settings -> Tickets** would shrug and show nothing. It now fetches roles directly from Discord on demand, caches the result, and stops hammering the API with repeat empty lookups. New servers and freshly restarted bots can configure tickets without waiting for the cache to warm up.

  **Dashboard access stays in sync with Discord** — Promoting or demoting a moderator in Discord now reflects in the dashboard on the next page load instead of clinging to a stale snapshot. Server membership and role lookups refresh before access is granted, so newly promoted admins can manage and ex-moderators can't.

  **Community Activity Over Time graph stops gaslighting you** — The new [Activity Over Time](/features/analytics#activity-over-time) chart on the Community Engagement tab had mislabeled series and axis ticks that didn't quite line up with the data. Labels and series now match what you're actually looking at.

  **Quieter DM failure logs** — When a DM bounced — common when a user has DMs disabled — multiple subsystems would each file their own audit entry for the same event. DM delivery failures now flow through a single helper, so the [audit log](/features/audit-log) records the event once instead of three times.

  **Configured providers API is scoped to your server** — The `GET /api/v1/providers/configured` endpoint now requires a `guildId` query parameter and only returns data to admins of that server. Requests without `guildId`, with a malformed Discord snowflake, or from a non-admin caller are rejected with a 400 or 403 response. Dashboards already pass the current server's ID; integrations that call the endpoint directly need to add `?guildId=<server id>` and authenticate as a server admin. The dashboard hook also caches results per server for 30 seconds and keeps the previous data on screen during revalidation, so switching pages no longer blanks the model picker. See [Providers API](/features/ai-conversations#providers-api).
</Update>

<Update label="2026-05-20" description="May 2026" tags={["Features", "Improvements"]}>
  ## New features

  **Fireworks AI provider** — Fireworks just joined the roster as a first-class provider for [AI conversations](/features/ai-conversations), [AI auto-moderation](/features/moderation), AI triage, and [TL;DR](/features/tldr). Nine serverless models ship visible by default: **DeepSeek V4 Flash**, **Kimi K2.6**, **Kimi K2.5**, **Qwen 3.6 Plus**, **Qwen3 VL 30B A3B Instruct**, **MiniMax M2.7**, **MiniMax M2.5**, **GPT-OSS 120B**, and **GPT-OSS 20B** — each with its own per-token pricing for input, output, and cache reads. Self-hosters enable Fireworks by setting `FIREWORKS_API_KEY` in `.env` and selecting a `fireworks:*` model in any AI dropdown. Managed users see the new models in the dashboard pickers automatically. Under the hood, Volvox.Bot now dispatches to the matching Vercel AI SDK factory per provider based on each provider's declared `apiShape`. Future providers no longer have to speak the Anthropic Messages wire protocol to play nice. Select a Fireworks model under **Settings -> AI**, **Settings -> Moderation & Safety -> Content Safety**, **Settings -> AI & Automation -> Triage**, or **Settings -> Community Tools -> TL;DR**.

  **Doxxing and child endangerment safety categories** — Content Safety just got two new line items it should have had all along. **Doxxing** flags personal contact info, addresses, and identity details shared without consent, and **Child endangerment** targets content that sexualizes or grooms minors. Both ship with the same defaults as every other Content Safety category: a 75% sensitivity threshold plus **Flag & Log**, **Hard Delete**, and **Issue Warning**. They start working the moment the migration runs. Any category you've already hand-tuned keeps your settings; only categories left at the old defaults get bumped to the new ones. Adjust thresholds and response actions under **Settings -> Moderation & Safety -> Content Safety**. See [Content Safety](/features/moderation#configuration).

  **Activity Graph with rolling and custom ranges** — The Messages sub-tab on the Overview dashboard now leads with an **Activity Graph** that plots community message volume over time. One-click buttons cover `1d`, `7d`, `14d`, `30d`, `60d`, `90d`, `6 month`, and `1 year` rolling windows. **Custom** opens **Start** and **End** date pickers, and **Apply** stays disabled until both dates are valid and in order. Custom ranges can now span up to **366 days** — the legacy 90-day cap is gone — so year-over-year comparisons stop requiring duct tape and multiple queries. The selected range stays highlighted and feeds the surrounding KPIs and breakdowns, so you can pivot between Messages, Voice Tracking, and Community Engagement without losing context. See [Activity Graph](/features/analytics#activity-graph).

  **Send channel message level-up action** — Level-up actions now include a **Send Channel Message** type that posts publicly into a server channel when a member reaches a level. Pick **Current Channel** to celebrate in the channel that triggered the level-up, or **Specific Channel** to route every announcement to a fixed milestones channel. Pick text, embed, or both formats, and drop in the usual template variables (`{{username}}`, `{{mention}}`, `{{level}}`, `{{serverName}}`) anywhere in the message body. Configure it under **Settings -> Community -> XP -> Level-up actions**. See [Level-up actions](/features/community#level-up-actions).

  **Activity Over Time graph** — The **Community Engagement** tab now opens with a combined **Activity Over Time** graph that plots messages and voice minutes on the same chart so you can see when chat and voice rise together. The graph has its own range picker — `1d`, `7d`, `14d`, `30d`, `60d`, `90d`, `6 month`, `1 year`, or `Custom` — independent from the dashboard-wide range. `1d` buckets are hourly; everything else is daily. Custom ranges are capped at 366 days. Dashboard analytics queries now also stretch from 90 days up to **1 year**. See [Activity Over Time](/features/analytics#activity-over-time).

  ## Changed

  **Settings dashboard restricted to owners and admins** — The keys to the settings dashboard now belong strictly to owners and admins. Moderators keep every in-Discord superpower they had — moderation, tickets, audit log — but the **Manage** button no longer winks at them. The server picker quietly files moderator-only servers under viewer-only. Need a moderator to tweak config? Promote them to admin. See [Permissions](/configuration/permissions#dashboard-access).

  ## Improvements

  **20-level XP progression with a per-level editor** — New servers now ship with a smoother **20-level** reputation curve, climbing from 100 XP at Level 1 to 12,000 XP at Level 20. That gives long-term regulars somewhere to keep climbing without making the early levels feel like a second job. The **Progression Steps** editor at **Settings -> Onboarding & Growth -> Reputation (XP)** is rebuilt around one row per level. Edit any threshold inline, select **Add Step** to append a level, or select the **✕** to drop one. Thresholds must strictly increase, and at least one level is required. Existing servers keep their current thresholds — only the out-of-the-box default changed. See [Level progression](/features/community#level-progression).

  **Dedicated Spam Detection tab** — Spam controls finally have their own room at **Settings -> Moderation & Safety -> Spam Detection**, instead of squatting in the Moderation and Content Safety tabs. **Enable Spam Detection** flips both phrase-pattern checks and the AI spam category with a single switch. **Spam threshold** tunes the AI spam category, and **Spam response** picks any combination of flag, delete, warn, timeout, kick, or ban. The standalone spam confidence input is retired — the threshold slider on this tab is the only source of truth now. Turn the master toggle off and Volvox.Bot skips both classic and AI spam checks while the other Content Safety categories keep running. Existing configurations carry over automatically. See [Configuration](/features/moderation#configuration).

  **AI model dropdowns now hide what you can't use** — Every AI model picker in the dashboard — **Settings -> AI**, **Settings -> Moderation & Safety -> Content Safety**, **Settings -> AI & Automation -> Triage**, and **Settings -> Community Tools -> TL;DR** — only lists models whose provider has a configured API key and whose tier matches your server's entitlement. No more selecting a provider you don't have credentials for and discovering the failure at runtime. Saved models that fall out of availability still surface as **Current saved model: `provider:model`**; if the provider has no key, the entry is flagged with **⚠ provider not configured** so you know to pick a replacement. When no provider has credentials, the dropdown shows **No configured models available** and goes read-only. A new `GET /api/v1/providers/configured` endpoint returns the same data — `configuredProviders` and `guildTier` — for integrations that render their own model pickers. See [Available models](/features/ai-conversations#available-models).

  **Server-agnostic default AI system prompt** — New installs now ship with a generic Neural Chat system prompt that adapts to any Discord server instead of cosplaying as a developer-community mascot. The default voice stays friendly, concise, and respectful. The `@everyone` and `@here` ping bans are still in force, and the bot is told to ask for context when an answer depends on server-specific policy. If you've already customized the system prompt under **Settings -> AI**, your value is preserved — only the out-of-the-box default changed. Edit the prompt anytime to dial in tone, topics, or house rules. See [AI Conversations](/features/ai-conversations#configuration).

  **Simpler Weekly Activity Heatmap** — The Community Engagement heatmap is now labeled **Weekly Activity Heatmap** and renders weekday names in your browser locale. When the selected range is a week or shorter, each row also shows the matching calendar date so you can tell repeated weekdays apart. See [Weekly Activity Heatmap](/features/analytics#weekly-activity-heatmap).

  **Session replay on the dashboard, opt-in only** — Dashboard analytics can now record sampled session replays so the team can spot UX rough edges. Recording only runs when you've accepted **Analytics** cookies, sample rates and masking are managed remotely in Amplitude, and turning **Analytics** off in **Cookie Preferences** stops recording immediately. Essential cookies are unaffected. See [What analytics covers](/security#what-analytics-covers).

  ## Fixes

  **Tighter spam presets and a calmer custom editor** — All three message spam presets now share the same 10 messages / 10 seconds rate limit. They differ only in how quickly repeated hits escalate to a timeout. **Standard** (the new default) times out after 2 hits in 3 minutes, **Strict** times out on the first hit for 10 minutes, and **Relaxed** keeps the previous 3-hits-in-5-minutes behavior. The **Custom** option hides its advanced controls until you select it. The custom editor also resets when you switch servers, reload the page, or toggle spam protection off and on, so stale values from one server never carry over to another. Enabling defaults seeds the Standard preset, and partial custom configs keep their existing fields instead of silently dropping back to defaults. See [Configuration](/features/moderation#configuration).

  **Manual XP adjustments now trigger level-up actions** — Push a member over a level threshold from the dashboard or API and Volvox.Bot now runs the same level-up actions it would for organic XP gains. Role grants, DMs, channel messages, XP bonuses, reactions, and nickname updates all fire as expected. Rewards already granted at lower levels are not replayed, so re-adjusting a member's XP won't double up on role grants or DMs. See [Level-up actions](/features/community#level-up-actions).

  **DM delivery failures now show up in the audit log** — When Discord refuses a member DM — moderation notice, level-up action, or welcome onboarding step — Volvox.Bot writes a `notifications.dm_failed` audit entry instead of failing quietly. Each entry records the target member, the source feature, the Discord error, and source-specific details like the moderation action or onboarding step. Filter by **Category -> Notifications** and **Action -> Notifications: DM failed** to find members whose DMs aren't landing. The original moderation, level-up, or onboarding action still runs. See [DM delivery failures](/features/audit-log#dm-delivery-failures).
</Update>

<Update label="2026-05-19" description="May 2026" tags={["Features", "Improvements", "Removed", "Fixes"]}>
  ## New features

  **Dedicated Warnings dashboard page** — Warning records now have their own home at **Dashboard -> Warnings**, so you can review and triage warnings without paging through every other case type. The page leads with totals for warnings, active warnings, high-severity active warnings, and the current top user by active warning points. Inventory filters narrow records by severity, active state, or Discord user ID, and every row keeps a deep link into the broader moderation case for that warning. The old **User history** lookup on the Moderation page is gone. Start from **Dashboard -> Members -> \[member]** when you're investigating one person, or **Dashboard -> Moderation** when you want the broader case table and filters. See [Manage warning records](/features/moderation#manage-warning-records).

  **Warning Rules tab with expiry and point escalation** — Warning tuning moved out of the general Moderation tab into its own home at **Settings -> Moderation & Safety -> Warning Rules**. Set **Warning expiry days** to control how long warnings stay active (`30` is the new default, down from `90`; `0` disables expiry), assign **Severity points** so low, medium, and high warnings carry different weight (defaults: `1`, `2`, `3`), and define **Warning thresholds** that fire when a member's active points cross a line. Each threshold takes a point total, a lookback window in days, and an action (`timeout` requires a duration like `1h` or `7d`; `ban` does not). When multiple thresholds match, Volvox.Bot applies the highest point threshold first, so a 5-point ban isn't masked by a 3-point timeout. Existing configs that used the old `warns` field on escalation thresholds are automatically read as `points`. The `/warn` slash command now replies with a rich embed showing case number, severity, the point progression (for example, `2 points -> 3 points`), and direct links to the case and member profile in the dashboard. See [Warning expiry and escalation](/features/moderation#warning-expiry-and-escalation).

  **Classic spam detection controls in the dashboard** — Phrase-pattern spam detection is now a first-class toggle under **Settings -> Moderation & Safety -> Moderation -> Classic spam detection**. It defaults to on, runs before AI scoring, and honors the Content Safety spam **Hard Delete** and **Instant Enforcement** settings when AI auto-moderation is enabled. Spam alerts and spam actions are decoupled — if you leave the log channel unset, Volvox.Bot still applies the configured spam action and just skips the Discord alert post. Every detection writes a `spam.detect` audit-log entry with the alert/delete outcome, message link, channel ID, and a redacted content preview. Filter on it under **Dashboard -> Audit Log**. See [Classic spam detection](/features/moderation#configuration) and [Audit log](/features/audit-log#what-it-logs).

  **Link filter UI in the dashboard** — You can now manage blocked link domains directly from **Settings -> Moderation & Safety -> Moderation -> Link filter**. Paste hostnames, full URLs, or even Markdown links and the dashboard normalizes them to a clean hostname (so `https://www.example.com/path` becomes `example.com`) before saving. Bulk-add by separating entries with spaces, commas, semicolons, or new lines. Invalid entries are rejected inline so your blocklist stays clean. The Link filter has its own toggle that runs independently from the parent auto-mod switch, so you can enforce domain blocks without turning on every other classic rule. See [Link filter](/features/moderation#link-filter).

  **Quiet mode for Neural Chat** — A new `/quiet` slash command temporarily silences AI replies in a single channel without disabling Neural Chat server-wide. `/quiet on` mutes the current channel for the default duration (30 minutes), and `duration:1h` or `duration:30m` sets a custom window that's clamped between 1 minute and the configured maximum. Pass `channel:#support` to target another channel, `/quiet off` to resume early, or `/quiet status` to check what's active. Quiet mode also pauses vibe-mode triage accumulation for the muted channel so the bot fully steps out of the conversation. Permissions default to moderators and can be widened to `any`, narrowed to `admin`, or pinned to specific role IDs via `quietMode.allowedRoles`. Members can also mention the bot — for example, `@Volvox quiet for 30 minutes` or `@Volvox unquiet`. See [Quiet mode](/features/ai-conversations#quiet-mode).

  **Voice session tracking lands in the Overview** — Analytics on the Overview page now splits cleanly into **Messages**, **Voice Tracking**, and **Community Engagement** sub-tabs, so voice chatter stops getting buried under message charts. Voice Tracking covers joins, active sessions, unique participants, total and average voice time, and top channels ranked by session count and duration. A recent sessions feed flags rooms still live when analytics last refreshed. Overlapping sessions in the same channel are counted instead of quietly discarded, so simultaneous calls finally show up in the totals. The date range picker and 90-day window apply as usual. See [Analytics](/features/analytics).

  ## Improvements

  **Settings tabs finally have addresses** — The dashboard's **Config** screens now keep the URL in sync with the active tab. Switching tabs appends a `?tab=` query parameter, so you can bookmark **Moderation & Safety -> Link filter** or paste a link to a teammate and land on the exact tab you opened. Browser back and forward walk through your tab history. Existing settings links still work — they redirect to each category's first tab.

  **Calmer status rotation** — Volvox.Bot's presence used to swap status messages every five minutes, which turned the member list into a low-key strobe light. The default rotation interval is now **30 minutes**, so **Watching**, **Listening**, **Playing**, and **Competing** each get room to land before the next one swaps in. Servers that customized the interval keep their setting; everyone else picks up the new default automatically.

  ## Removed

  **Command aliases have left the chat** — The `/alias` command and the entire custom-alias system are retired. Aliases that remapped one slash command to another stop resolving on the next bot restart, so reach for Discord's built-in slash commands instead. Nothing to clean up on your end — the underlying table is dropped automatically when migrations run.

  **Snippets, polls, code reviews, and announcements are gone** — The `/snippet`, `/poll`, `/review`, and `/announce` commands and their dashboard toggles are retired. The **Post Announcement** action in the level-up action builder is gone too. Discord's native polls cover voting, threads and code blocks cover review and snippet sharing, and plain channel messages cover announcements. Saved configuration for these features is dropped automatically when migrations run, and existing level-up actions of type **Post Announcement** stop firing.

  **TL;DR moved to Community Tools** — The TL;DR settings tab now lives under **Settings -> Community Tools** alongside **Starboard**, instead of under **Onboarding & Growth**. The `/tldr` command and every setting (model, message limits, cooldown, system prompt) work exactly the same — only the dashboard location changed. See [TL;DR](/features/tldr).

  **Reaction roles retired** — The `/reactionrole` command and its `create`, `add`, `remove`, `delete`, and `list` subcommands have been removed, along with the underlying reaction-role menu storage. Volvox.Bot no longer assigns or revokes roles when members react to menu messages. Existing menu messages stay in your channels as ordinary posts until you delete them — they just won't hand out roles anymore. Stored reaction-role menus and their emoji-to-role mappings were dropped as part of the upgrade. For self-assigned roles, use Discord's native **Onboarding** flow or a button-based role picker from another bot. The rest of your configuration is untouched.

  ## Fixes

  **Bot presence is always online** — Volvox.Bot now stays **online** at all times. Any **idle**, **do not disturb**, or **invisible** value left over from older configs is ignored. The availability dot no longer drifts out of sync with whether the bot is actually running. Custom status text and rotation messages still work exactly as before; only the availability dot is locked.

  **`discord.gg` invites are blockable again** — Adding `discord.gg` (or any other Discord invite host) to the Link filter blocklist now reliably deletes matching messages, including ones posted by members with the Discord **Administrator** permission. The raw Administrator permission no longer auto-exempts users from the Link filter — your configured admin, moderator, and protected roles still bypass it as expected. Other moderation paths continue to treat the Administrator permission as an exemption.
</Update>

<Update label="2026-05-18" description="May 2026" tags={["Improvements"]}>
  ## Improvements

  **Status messages that actually flex** — Volvox.Bot's Discord presence rotation got a glow-up. The old lineup — "Watching {guildCount} servers", "Listening to {memberCount} members", "Playing with /help" — read like placeholder copy from a 2017 starter template. The new rotation cycles through **Watching**, **Listening**, **Playing**, and a fresh **Competing** status. Each one pairs member counts with server counts, so the numbers do the bragging. Nothing to configure; your bot will start showing off the next time it reconnects.
</Update>

<Update label="2026-05-17" description="May 2026" tags={["Features", "Improvements", "Removed", "Fixes"]}>
  ## New features

  **Full moderation history on member profiles** — The member profile in the dashboard now shows the complete case history for that member instead of just recent warnings. Cases are paginated 10 per page, and a quick breakdown at the top tallies warnings, timeouts, kicks, and bans so you can size up a member at a glance. Select **View full history** to jump to the Moderation page with that member's user ID preloaded — handy when you need filters, search, or the wider tools on that page. You can also share the preloaded view directly: `https://volvox.bot/dashboard/moderation?userId=<discord-user-id>`. See [Moderation](/features/moderation#review-a-members-moderation-history).

  ## Improvements

  **Case log messages link straight to Discord** — Open any case in the dashboard and the **Log Message** field is now a clickable link. It opens the original log post in Discord in a new tab, as long as the bot has the channel and message ID for that case. Older cases without a stored channel ID still display the message ID as plain text. Nothing to configure — new cases pick this up automatically. See [Moderation](/features/moderation#jump-to-the-discord-log-message).

  **Cookie preferences are now yours to decide** — First-time visitors to the website and dashboard get a consent banner that sorts cookies into two honest buckets. **Essential** stays on so sign-in and saved state actually work. **Analytics** (Amplitude) stays off until you opt in. Pick **Accept all**, **Reject non-essential**, or **Customize** to flip analytics on its own. Changed your mind? The **Cookie Preferences** link in the footer is there for exactly that, and switching analytics off clears the Amplitude identifiers and cookies stored while you were opted in. Your choice sticks for 365 days per browser. See [Cookie preferences](/security#cookie-preferences).

  **Add to Server lands you on the dashboard** — Selecting **Add to Server** on the landing page used to pop Discord open in a new tab and leave you to find your own way back. The flow now starts the invite in the same window and returns you straight to the dashboard after you approve, so onboarding is one continuous trip instead of a tab-juggling exercise. The dashboard's **Add Bot** button already worked this way; the landing page now matches it. See [Getting started](/getting-started#add-volvox-bot-to-your-server).

  **Tidier AI auto-mod case reasons** — Case reasons from [AI auto-moderation](/features/moderation) used to read like a model's stream-of-consciousness, occasionally truncating into the void. They now follow a compact format: `AI Auto Mod: Toxicity 82%, Harassment 64% / delete and warn`. Categories appear with their confidence scores, the actions taken are listed plainly, and case tables stop wrapping into wall-of-text territory. Existing cases keep their original reasons; new cases adopt the new format automatically.

  **Less noisy AI model picker** — Models offered through OpenRouter no longer carry a redundant **(via OpenRouter)** suffix in dashboard model pickers. The provider is already obvious from the section it lives in, and the cleaner labels make scanning the list a lot faster. See [AI automation](/features/ai-conversations).

  **Audit log filters and details, expanded** — The **Audit Log** page now groups actions by category (Moderation, AI and triage, Config, Members, Tickets, Temp roles) and adds **Target ID** and **Channel ID** filters alongside the existing user and date filters. Each row leads with a plain-language summary — for example, "Mod#0001 banned BadUser#1234" or "AI auto-mod timed out SpamBot#0001" — so you can scan the table without decoding action codes. Expand any entry to see structured panels for moderation cases (case number, action, reason) and AI auto-mod decisions (model, category scores, thresholds, skipped actions, message link), with the raw JSON still available underneath. See [Audit log](/features/audit-log).

  ## Removed

  **GitHub feed feature retired** — The `/github` command, the GitHub feed module, and its **Settings -> Support & Integrations** panel have been removed. It saw vanishingly little use and the maintenance tax wasn't worth it. If you relied on GitHub-to-Discord notifications, Discord's built-in webhook integration covers the same ground in about thirty seconds of setup. Stored GitHub feed configuration has been dropped as part of the upgrade; nothing else in your config was touched.

  **Reminders retired** — The `/remind` command, its scheduler, and the **Reminders** section in **Config** have all been removed. The bot no longer delivers personal or channel reminders, and any pending reminders have been cleared. If you leaned on this for routine pings, Discord's scheduled events or a lightweight webhook-driven cron are the closest replacements. The rest of your configuration is untouched.

  **Backup and restore retired** — Config backup and restore — including the export and import endpoints and any scheduled automatic backups — have been removed. Usage was minimal and the surface area carried real risk: an accidental restore could clobber a live config in a single click. Your live configuration is unaffected and stays editable from the dashboard or the `/config` command. If you want a snapshot before a big change, copy the relevant settings out of the dashboard manually before editing.

  **Memory opt-out subcommand removed** — The `/memory optout` subcommand has been retired. To clear what the bot remembers about you, use `/memory forget`. To turn memory off for everyone, a server admin can disable it under **Settings -> AI & Automation**. Existing memories stay put and keep following the server's memory settings.

  **Outbound webhook notifications retired** — The **Notifications** panel for managing outbound webhook endpoints, the **Webhook** action under **XP Level-Up Actions** and **Default Moderation Actions**, and the webhook delivery log have all been removed. Volvox.Bot no longer fans events out to third-party URLs, and any stored webhook endpoints, secrets, and delivery history were dropped during the upgrade. If you forwarded events to another service, switch to Discord's native channel webhooks or your own listener built against the dashboard. The **Notifications** category and `notifications.*` action types no longer appear in [Audit log](/features/audit-log) filters.

  **`/help` knowledge base retired** — The `/help` slash command and its per-server FAQ are gone, along with the `view`, `add`, `edit`, `remove`, and `list` subcommands moderators used to curate topics. Usage was minimal and the format never quite kept pace with Discord's own forum and pinned-message tooling. Stored help topics have been dropped as part of the upgrade; nothing else in your config was touched. For server documentation, a pinned message, a forum channel, or a ticket category covers the same ground without a custom command surface. Looking for product support instead? The [Help](/help) page still lists every way to reach us.

  ## Fixes

  **Direct @mentions no longer trip over themselves** — The lower-latency mention path shipped on 2026-05-11 occasionally raced against the standard triage flow and aborted the very response it was trying to speed up. Direct mentions and replies to the bot now complete reliably instead of silently bailing mid-evaluation. See [Moderation](/features/moderation).
</Update>

<Update label="2026-05-16" description="May 2026" tags={["Fixes", "Removed"]}>
  ## Removed

  **Showcase, Challenges, and Role Menus have left the building** — Three features that weren't pulling their weight have been retired so the dashboard and bot can focus on what people actually use:

  * **Showcase** — the `/showcase` command and its community gallery pages are gone. Submissions and votes have been cleared from storage.
  * **Challenges** — the legacy `/challenge` command, scheduler, and prompt library have been removed. No more weekly prompts firing into channels nobody opted into.
  * **Role menus** — the role menu builder under **Settings -> Onboarding & Growth** and the `/rolemenu` command have been removed. If you handed out roles this way, swap to Discord's native onboarding before your next member wave.

  Existing data for these features has been dropped as part of the upgrade. Nothing else in your configuration was touched.

  ## Fixes

  **Starboard config now refuses nonsense values** — The Starboard section was the lone holdout without a validation schema. The API would cheerfully accept a string where a threshold should be, or persist an emoji field long enough to qualify as a novella. All six Starboard fields are now type- and range-checked, and the emoji field is capped at a sane length. See [Starboard](/features/community#starboard).

  **Starboard emoji wildcard saves correctly on autosave** — Picking **Any** as your reaction emoji could previously persist the Unicode heavy asterisk (✱) instead of the intended wildcard (`*`) if autosave fired before the field lost focus. The normalization now runs on every change, so **Any** means **any** the moment you select it.
</Update>

<Update label="2026-05-15" description="May 2026" tags={["Improvements"]}>
  ## Improvements

  **Protected roles now skip automated moderation, too** — Roles you select under **Settings -> Moderation & Safety -> Moderation -> Protect Roles** used to only shield members from manual mod actions, leaving them awkwardly exposed to Active Sentry's automated side. They now also exempt members from AI auto-moderation, spam rate limiting, and link filters. Your existing selections take effect immediately — no migration, no resaving, no fuss. See [Moderation](/features/moderation#protected-roles).

  **Cleaner Starboard embeds** — Starboard posts now lead with a clickable title — for example, **⭐ 7 stars in #general** — that jumps straight to the original message. The old **Source**, **Stars**, and **Jump** fields have been retired, leaving more room for the message content and any attached image. Star counts still update in place as members react. Nothing to configure; existing posts pick up the new layout the next time their star count changes. See [Community](/features/community#starboard).
</Update>

<Update label="2026-05-14" description="May 2026" tags={["Features", "Fixes"]}>
  ## New features

  **Dashboard server picker for first-time setup** — Logging in without the bot installed used to dump you into a hauntingly empty dashboard. Now the [dashboard](/dashboard) opens a proper server picker that lists every Discord server you can manage. Each card shows whether Volvox.Bot is already present (**Manage**) or still needs an invite (**Add Bot**), with member counts so you pick the right one. Select **Refresh server list** when Discord takes its sweet time catching up after an invite. See [Getting started](/getting-started) for the full walkthrough.

  **Inline "Add Bot" flow** — Inviting Volvox.Bot from the dashboard now returns you to the server picker after Discord's OAuth handshake, instead of stranding you on a permissions screen. Fewer tabs, fewer "wait, where did it go?" moments.

  ## Fixes

  **Dashboard no longer greets new users with a void** — Accounts whose servers don't yet have Volvox.Bot installed previously landed on a blank dashboard with nothing to click. The new welcome flow routes those users straight to the server picker so onboarding actually has a starting point.
</Update>

<Update label="2026-05-13" description="May 2026" tags={["Improvements"]}>
  ## Improvements

  **Multiple support staff roles for tickets** — The **Support role** picker on **Settings -> Tickets** is now **Support Staff Roles** and accepts as many roles as you need. The bot grants ticket access to every selected role. It dedupes members across roles when adding them to thread tickets, and skips roles that no longer exist. Existing single-role setups continue to work unchanged. See [Tickets](/features/tickets).
</Update>

<Update label="2026-05-12" description="May 2026" tags={["Improvements"]}>
  ## Improvements

  **Step-by-step AI auto-mod DMs** — Active Sentry now sends a separate pre-action DM for each destructive step in a sequence (for example, warn -> kick -> ban). Each DM lists **Actions taken** so far and the single **Actions planned** step coming next. Members see exactly where they are in the sequence instead of getting one combined list. Follow-up DMs use a new title like **Moderation action update in `<server name>`**. The new title makes it clear that this is the same ongoing incident. DM toggles in **Settings -> Moderation & Safety -> Content Safety -> User DM Notifications** still control which actions notify members. Members never receive duplicate DMs for the same action. See [Moderation](/features/moderation).
</Update>

<Update label="2026-05-11" description="May 2026" tags={["Features", "Improvements"]}>
  ## New features

  **Triage performance controls** — AI Automation now exposes triage latency controls in the dashboard. `responseCooldownMs` defaults to `0` ms and remains clamped with `triageDebounceMs` and `memoryTimeoutMs`; fast direct replies are enabled by default and you can toggle them from Operational Modes. See [Moderation](/features/moderation).

  ## Improvements

  **Lower-latency mentions** — Direct @mentions and replies to the bot now trigger immediate triage evaluation and bypass the response cooldown for mentioned messages. They still run through the classifier and responder flow. Safety and relevance checks remain in place. See [Moderation](/features/moderation).

  **Documented triage defaults** — The default response cooldown is `0` ms. New server config uses 5 recent context messages by default; runtime triage only falls back to 10 when that value is unset.

  **Stricter triage model validation** — The dashboard now rejects unsupported or malformed `provider:model` strings when you save a triage config, so misconfigurations surface up front instead of failing at runtime. The bot still falls back gracefully if a legacy stored value drifts out of the supported list.
</Update>

<Update label="2026-05-10" description="May 2026" tags={["Improvements"]}>
  ## Improvements

  **Community features on by default** — TL;DR summaries, engagement tracking, and the reputation XP system now ship enabled out of the box. New servers see leaderboards, badges, and `/tldr` working immediately. You can still toggle each feature off from the dashboard. See [Community](/features/community) and [TL;DR](/features/tldr).

  **No more pre-seeded channel IDs** — Welcome, moderation alert, and triage moderation log channels start empty until you select a channel for your server. Earlier defaults referenced channels from a single test server, which could surface confusing errors on first install. Configure each channel from **Settings -> Onboarding & Growth** and **Settings -> Moderation & Safety**.
</Update>

<Update label="2026-05-09" description="May 2026" tags={["Features", "Improvements"]}>
  ## New features

  **Community Hubs surface in the server selector** — The dashboard server selector now lists every server with Community Hubs enabled under a dedicated **Community Hubs** section. Members see those entries even without admin or moderator roles. Selecting a hub opens the read-only public view. Servers without hubs enabled stay hidden from members who lack management permissions. See [Community](/features/community) for details.

  **Owner access level** — Server owners now consistently get full admin access on the dashboard, regardless of role permissions. The dashboard and API access enum is now `[owner, admin, moderator, viewer]`. See [Permissions](/configuration/permissions) for the role breakdown.

  **Engagement metrics on Analytics** — The Analytics overview shows **Active users**, **Avg messages per user**, **Lifetime reactions given**, and **Lifetime reactions received**. The page also adds a **Recent events** feed (last 10 messages and slash command uses) and a per-model **AI usage** breakdown. The breakdown shows requests, prompt and completion tokens, and cost in USD when usage data is available. See [Analytics](/features/analytics).

  ## Improvements

  **Clearer welcome personalization toggle** — The "Engine Intelligence" toggle on **Settings -> Onboarding & Growth** is now labeled **AI-Powered Personalization**. The new label explains that the bot uses server context — active channels, member milestones — to personalize welcome messages. Highlight and Exclude channel pickers also stop showing the same channel in both lists, so the two settings can't conflict.

  **Tidier dashboard chrome** — The configuration search now closes automatically when you select a result or interact elsewhere on the page. The **Variables** lists in welcome and XP-level editors collapse to save vertical space. The **AI Chat** entry has moved out of the sidebar — use **Conversations** for AI history instead.
</Update>

<Update label="2026-05-08" description="May 2026" tags={["Features", "Improvements", "Fixes"]}>
  ## New features

  **Customizable onboarding panel messages** — Tailor the copy on your rules, role menu, and introduction panels directly from the [dashboard](/dashboard) under Onboarding & Growth. Each panel has its own Discord markdown editor (up to 2000 characters), so you can match your server's tone instead of relying on the defaults.

  **Introduction prompt variables** — The new introduction prompt supports template variables: `{{user}}` mentions the new member, `{{username}}` prints their plain name without a ping, and `{{server}}` inserts your server's name. Combine them to write a warm, personal welcome — for example, `Welcome {{user}}! Tell {{server}} a bit about yourself.`

  **Dedicated role menu publishing** — `/welcome setup` and the dashboard now publish the rules and role menu panels independently, with per-panel status feedback. Publish a single panel without touching the other, and see clear success, warning, or failure messages for each.

  ## Improvements

  **More reliable welcome publishing** — Welcome publish routes now rate-limit requests and validate channels per server, so misconfigured publishes fail fast with a useful error. The dashboard also surfaces persistence warnings when Discord delivery succeeds but the bot can't save state, so you know to retry.

  **Friendlier timezone inputs** — Challenge schedule timezones now accept UTC/GMT offsets like `GMT+3` or `UTC-05`, in addition to IANA names like `America/New_York`. Offsets normalize to their canonical IANA equivalent (for example, `GMT+3` -> `Etc/GMT-3`) when you save.

  ## Fixes

  **Stricter timezone validation** — The dashboard now rejects unsupported timezone strings up front with a clear error (`expected a valid IANA timezone or UTC/GMT offset`). This stops bad values from reaching the scheduler. Existing servers fall back to a supported timezone automatically, so daily challenges keep posting on time.

  **Steadier server list** — The dashboard server selector no longer drops servers when a single server lookup fails. Loading falls back to bot-side data so admins still see and manage every server they have access to.
</Update>

<Update label="2026-05-07" description="May 2026" tags={["Improvements", "Fixes"]}>
  ## Improvements

  **Dark mode by default** — The [dashboard](/dashboard) and the documentation site now load in dark mode on first visit, matching the rest of the Volvox.Bot brand. You can still switch to light mode or follow your system preference from the theme toggle. Your choice persists across sessions. Charts, toasts, and other themed surfaces pick up the new default automatically.

  ## Fixes

  **New member counts that actually update** — Analytics on the [dashboard](/dashboard) now refresh new-member counts on every load, instead of holding onto stale numbers from a cached payload. Welcome the newcomers, count them properly, and stop wondering why your "new this week" tile looked suspiciously frozen.
</Update>

<Update label="2026-05-04" description="May 2026" tags={["Improvements"]}>
  ## Improvements

  **Global admin access for ops pages** — Only global admins (configured via `BOT_OWNER_IDS`) can now access the dashboard's **Logs** and **Performance** pages. Server admins and moderators continue to manage their servers as usual, while operators keep infrastructure-level views to themselves. See [Permissions](/configuration/permissions) for the full role breakdown.

  **Cleaner access levels** — Server access roles are now consistently `admin`, `moderator`, or `viewer` across the dashboard and API. The dashboard surfaces global admin status separately, so sidebar navigation and protected pages reflect the correct permissions for every user.
</Update>

<Update label="2026-05-03" description="May 2026" tags={["Fixes"]}>
  ## Fixes

  **More reliable AI auto-moderation** — [AI auto-moderation](/features/moderation) now parses model responses more robustly. The bot scores and acts on messages correctly, even when the model buries its verdict in extra text or nested formatting. Fewer skipped messages, fewer "no decision" outcomes.

  **Stronger link filter and phishing detection** — The link filter now extracts URLs more accurately from messages, catching more obfuscated and disguised links. Phishing detection resists common evasion tricks (extra punctuation, mixed casing, embedded characters), so the filter flags suspicious links even when posters try to sneak them past.
</Update>

<Update label="2026-05-02" description="May 2026" tags={["Improvements", "Fixes"]}>
  ## Improvements

  **Stronger phishing and link filtering** — The link filter now catches malicious URLs hidden inside markdown links (`[click here](https://...)`), angle-bracket links (`<https://...>`), and links wedged against punctuation. It also detects phishing keywords in URL query strings (for example, `?gift=nitro` on a `.xyz` domain). See [moderation](/features/moderation) for the full set of safeguards.

  **Better reliability monitoring** — Volvox.Bot now tracks dashboard errors and performance issues in the background, so the team finds and fixes problems faster. It scrubs sensitive data — Discord IDs, message content, tokens, query params, headers, and request bodies — before anything leaves your browser. Your server's data stays private by default.

  ## Fixes

  **More reliable AI auto-moderation** — [AI auto-moderation](/features/moderation) now parses provider responses correctly, even when they arrive wrapped in extra text or nested braces. Unparseable responses route to "needs review" instead of slipping through. Fewer missed flags, fewer surprises.
</Update>

<Update label="2026-05-01" description="May 2026" tags={["Features", "Improvements", "Fixes"]}>
  ## New features

  **Branded 404 page** — Missing pages on [volvox.bot](https://volvox.bot) now serve a polished, on-brand 404 with quick links back into the [dashboard](/dashboard) and docs, instead of the generic browser error.

  ## Improvements

  **Audit trail for AI triage moderation** — [AI automation](/features/ai-conversations) now writes its moderation actions to the audit log. Moderators can trace exactly which AI decisions led to deletes, warnings, timeouts, kicks, or bans. The bot also throttles triage budget alerts, so usage-limit notifications stop duplicating noisily.

  ## Fixes

  **Dashboard activity chart dates** — The activity chart on the [dashboard](/dashboard) overview now plots dates correctly. Daily message and command counts line up with the right day in your server's timezone.

  **Documentation link in profile dropdown** — The "Documentation" link in the profile dropdown menu works again across the [dashboard](/dashboard), opening the docs in a new tab as expected.
</Update>

<Update label="2026-04-29" description="April 2026" tags={["Features", "Improvements", "Fixes"]}>
  ## New features

  **AI auto-moderation** — Active Sentry now scores incoming messages with AI across toxicity, spam, harassment, hate speech, sexual content, violence, and self-harm. Select a detection model and set per-category sensitivity thresholds. Configure response actions — ignore, delete, flag, warn, timeout, kick, or ban — including multiple actions per violation. Volvox.Bot logs AI auto-moderation actions alongside classic moderation cases. Configure it under **Settings -> Moderation & Safety -> Content Safety** in the [dashboard](/dashboard). See the [moderation docs](/features/moderation) for details.

  **Configurable model for `/tldr`** — You can now select which provider/model the [TL;DR command](/features/tldr) uses to generate summaries, right from the dashboard. MiniMax M2.7 is the new default.

  **MiniMax provider** — MiniMax is now a first-class AI provider, with models like **MiniMax M2.7** and **MiniMax M2.7 Highspeed** available across [AI automation](/features/ai-conversations) and [TL;DR](/features/tldr).

  **Welcome panel publishing from the dashboard** — Publish, update, and remove your welcome and rules panels directly from the [dashboard](/dashboard) under Onboarding & Growth. Channel changes automatically clean up stale panel messages, and publish actions show clear success/failure feedback.

  **Dedicated role menu channel** — Onboarding & Growth now exposes a separate **Role Menu Channel** picker. Your self-serve role menu can live in its own channel, apart from rules and welcome.

  ## Improvements

  **Cleaner model selectors** — Dashboard provider/model pickers now hide models that aren't available to your server, so you only see options you can actually use. The dashboard preserves saved selections with `provider:model` IDs, including ones containing colons.

  **Streamlined dashboard overview** — The AI cost tile is gone from the dashboard overview, keeping the page focused on activity and health metrics.

  ## Fixes

  **Auto-mod flag embeds** — Flag embeds now show the global actions that ran for an auto-mod violation, so moderators can see which actions ran at a glance.

  **Welcome publish reliability** — Welcome-panel publishing now handles several edge cases gracefully: split payloads, status mismatches, persistence gaps, channel-change cleanup, and rate-limited publish routes.

  **AI auto-moderation stability** — Prompt handling, action reporting, and case/flag log writes are now more resilient, so AI auto-moderation behaves predictably under unusual server conditions.
</Update>

<Update label="2026-04-26" description="April 2026" tags={["Features", "Improvements"]}>
  ## New features

  **Custom returning member welcome message** — When someone rejoins your server, you can now send them a tailored greeting instead of the default copy. Toggle the **Returning member message** option in the [dashboard](/dashboard) under Onboarding & Growth. Then write your own message with full Discord markdown support and welcome variables like `{{user}}`.

  ## Improvements

  **Landing page navigation and feedback polish** — In-page navigation on [the landing page](https://volvox.bot) now scrolls smoothly to each section. It also respects reduced-motion preferences and lines up correctly under the sticky navbar. The footer, feature grid, pricing table, and stats sections also got visual refinements. The result is cleaner spacing, contrast, and interactive states.
</Update>

<Update label="2026-04-25" description="April 2026" tags={["Fixes"]}>
  ## Fixes

  **Disable milestone interval messages** — Setting the welcome milestone interval to `0` in the [dashboard](/dashboard) now correctly disables interval-based milestone callouts in welcome messages. Notable milestones (like 100, 500, 1000 members) still appear, so you can opt out of the regular cadence without losing the big moments.
</Update>

<Update label="2026-04-24" description="April 2026" tags={["Features", "Improvements"]}>
  ## New features

  **More AI providers** — Moonshot and OpenRouter are now first-class providers for [AI automation](/features/ai-conversations) and [TL;DR](/features/tldr). Select models from these providers in your AI settings using the `provider:model` format (for example, `moonshot:kimi-k2.6`).

  **TL;DR is now front and center** — `/tldr` now gets top billing on the landing page, with a [dedicated docs page](/features/tldr) covering setup, configuration, and examples.

  ## Improvements

  **Faster dashboard selectors** — Role and channel pickers across the dashboard load faster and refresh without a full page reload when Discord updates. New roles and channels appear sooner, and switching between pages reuses cached data.

  **Starboard moved to Community Tools** — Starboard settings now live under **Community Tools** in the [dashboard](/dashboard) instead of **Moderation & Safety**, grouping them with other member-facing utilities.

  **Version label in the dashboard** — The dashboard sidebar and landing footer now display the current Volvox.Bot version, making it easier to confirm which build you're on.
</Update>

<Update label="2026-04-23" description="April 2026" tags={["Fixes"]}>
  ## Fixes

  **Welcome message channel selector** — You can now select, directly from the [dashboard](/dashboard), the channel where the bot posts welcome messages. The Onboarding & Growth settings page exposes a dedicated **Message Channel** picker alongside the Rules, Roles, and Support channel selectors.
</Update>

<Update label="2026-04-22" description="April 2026" tags={["Features"]}>
  ## New features

  **Level-up action builder** — Configure automated actions that trigger when members reach specific XP levels. From the dashboard, set up actions like granting or removing roles, sending DMs, or posting announcements in a channel. You can also award bonus XP, add reactions, set nickname prefixes or suffixes, and fire webhooks. Each action supports Discord markdown messages, rich embeds, and template variables like `{{username}}` and `{{level}}`. Assign multiple actions per level to build customized level-up experiences for your server.
</Update>

<Update label="2026-04-21" description="April 2026" tags={["Features", "Improvements", "Fixes"]}>
  ## New features

  **Role-based triage filtering** — You can now control which members the AI responds to by role. Set allowed roles (allowlist) or excluded roles (denylist) in your AI Automation settings. The triage filter automatically ignores bot, webhook, and system messages.

  **Configurable level-up DMs** — You can now set custom DM messages sent to members when they level up. Supports per-level message overrides, a live Discord-style preview, and built-in rate limiting to prevent spam.

  **Discord markdown editor** — The dashboard now includes a new rich-text editor for Discord-formatted messages. It ships with a formatting toolbar, variable inserter, split raw/preview mode, character counter, and keyboard shortcuts.

  **Visual embed builder** — Create Discord embeds visually in the dashboard with a color picker, field management, thumbnail selector, and a live embed preview.

  **Dashboard permission controls** — The dashboard now enforces role-based access. Viewers get read-only access, moderators can manage moderation features, and admins have full control.

  **Server-scoped log viewer** — The log viewer now shows logs scoped to your current server. A new channel filter lets you narrow the live log stream to specific Discord channels.

  ## Improvements

  **Landing page redesign** — The landing page now sports a new visual style, with interactive feature previews in a bento-box grid, animated stats, and a redesigned pricing section.

  **Dashboard polish** — Tables now have row hover highlighting, KPI counters animate, and heatmap tooltips are visible. Member rows are clickable, XP progress bars now display correctly, and the dashboard shows a live commands-served counter. Inputs and dropdowns now use thin scrollbars for a cleaner look.

  **Identity resolution** — Conversation replays now show real Discord profile icons. Volvox.Bot resolves mentions to actual usernames, and audit logs display rich user identity (display name + username).

  **Improved AI reliability** — The AI triage system now includes retry logic, timeout handling, and per-role budget support. You can configure separate models for classification vs. responding to optimize costs.

  **Mobile experience** — The settings save toolbar, header, and sidebar are now fully responsive on smaller screens. Every animated component now supports reduced-motion preferences.

  **OpenGraph previews** — Sharing Volvox.Bot links now shows rich previews on social media, Discord, and Slack. A sitemap and robots.txt are now in place for better search engine discoverability.

  **Branding update** — Visible branding now uses "Volvox.Bot" consistently across the product.

  ## Fixes

  **More reliable bot responses** — Reminders, moderation, reaction roles, and other features now handle command-response failures gracefully (for example, blocked DMs or deleted channels) instead of failing silently.

  **Removed the Bot Owners setting** — The "Bot Owners" editor is gone from dashboard Permissions settings. You now manage bot ownership via environment configuration only.
</Update>
