<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
    xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
    xmlns:atom="http://www.w3.org/2005/Atom"
    xmlns:cb="https://cleanerbot.eu/rss">

<channel>
    <title>CleanerBot Changelog</title>
    <atom:link href="https://cleanerbot.eu/rss.xml" rel="self" type="application/rss+xml" />
    <link>https://cleanerbot.eu/changelog/</link>
    <description>Release notes and admin-facing updates for CleanerBot.</description>
    <lastBuildDate>Fri, 15 May 2026 15:00:00 +0000</lastBuildDate>
    <language>en</language>
    <generator>CleanerBot Static RSS</generator>

    <item>
        <title>📦 Release Notes - v3.1.0 - 15.05.2026</title>
        <link>https://cleanerbot.eu/changelog/v3-1-0/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Fri, 15 May 2026 15:00:00 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v3.1.0</guid>
        <description><![CDATA[CleanerBot v3.1.0 adds Premium Staff Reviews with `/review`, moves existing report commands into the new Staff Review flow, improves Premium guidance, and fixes bot scoring and whitelisted category handling.]]></description>
        <cb:headline><![CDATA[Premium Staff Reviews]]></cb:headline>
        <cb:labels><![CDATA[New|Improvements|Fixes]]></cb:labels>
        <cb:indexSummary><![CDATA[
<ul class="wp-block-list">
<li><code>/review</code> is the new Premium Staff Reviews home for cleanup, coverage, channel, retention, and engagement reports.</li>
<li>Existing <code>/summary</code>, <code>/cohorts</code>, and <code>/analytics cohort_report</code> report paths now point staff to the matching <code>/review</code> report.</li>
<li>Whitelisted categories now correctly exclude their channels from setup readiness checks, permission warnings, activity scans, and report paths.</li>
</ul>
]]></cb:indexSummary>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New</span></strong></p>
<p><strong>Premium Staff Reviews</strong></p>
<ul class="wp-block-list">
<li><code>/review</code> is the new Premium Staff Reviews home for turning CleanerBot's activity, cleanup, coverage, and channel-health signals into staff-ready review cards.</li>
<li><code>/review impact</code> gives admins a monthly or custom-period overview of warnings, recoveries, removals, engagement signals, coverage context, and one recommended next action.</li>
<li><code>/review cleanup</code> focuses on the cleanup funnel: warnings, inactive roles, recoveries, manual review workload, removals, current policy context, and fairness notes.</li>
<li><code>/review channels</code> reviews quiet channels with confidence notes, helping staff decide whether to archive, merge, promote, or intentionally keep them.</li>
<li><code>/review coverage</code> explains whether CleanerBot has enough tracked-member and channel-visibility coverage to support reliable staff decisions.</li>
<li><code>/review retention</code> summarizes recent retention among members known to CleanerBot, without requiring privileged member-list access.</li>
<li><code>/review engagement</code> summarizes short-window engagement reach, activity mix, week-over-week changes, confidence caveats, and a suggested staff action.</li>
<li>Existing report commands are moving into the new Staff Review flow. <code>/summary cleanup</code>, <code>/summary impact</code>, <code>/cohorts summary</code>, <code>/cohorts compare</code>, <code>/cohorts channels</code>, <code>/cohorts dead-channels</code>, and <code>/analytics cohort_report</code> now show migration cards that point staff to the matching <code>/review</code> report instead of showing the old report layout.</li>
<li>Monthly reporting now uses the same Staff Review layer. Free servers receive useful preview cards, while Premium servers receive full Staff Reviews when the existing monthly report toggles are enabled.</li>
<li>Coming later: saved review history, cleaner month-to-month comparisons, monthly channel rollups, engagement rollups, coverage snapshots, and a corresponding cleanup policy.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li><code>/premium</code> now explains the main Premium benefits more clearly: Premium Staff Reviews with <code>/review</code>, full monthly review cards, higher tracked-member limits, and CSV exports.</li>
<li><code>/premium</code> now also clarifies that Bulk Upload is available outside Premium, so admins do not mistake it for a paid-only feature.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li><code>/set_decay_score</code> now rejects bot accounts, preventing admins from accidentally seeding, scoring, or warning another bot.</li>
<li>Whitelisted categories now correctly exclude their channels from setup readiness checks, permission warnings, activity scans, and report paths.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes - v3.0.1 - 13.05.2026</title>
        <link>https://cleanerbot.eu/changelog/v3-0-1/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Wed, 13 May 2026 16:00:00 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v3.0.1</guid>
        <description><![CDATA[CleanerBot v3.0.1 improves status visibility, score and summary guidance, optional support links, and purge safety while fixing direct-message buttons, impact summaries, Auto-Kick labels, streak posts, and dead-channel reports.]]></description>
        <cb:headline><![CDATA[Clearer Status and Safer Admin Flows]]></cb:headline>
        <cb:labels><![CDATA[Improvements|Fixes]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li><code>/ping</code>, the website status page, and the support community status panel now show Discord API issues separately from CleanerBot issues. This makes it easier to tell when slow or failed responses are caused by Discord itself rather than your server setup or CleanerBot.</li>
<li>Free servers that are still within the Free tracked-member limit may now see an optional <strong>Buy Me a Coffee</strong> button in <code>/summary</code> results and monthly staff summaries. This is only a voluntary support option and does not change how CleanerBot works. Pro, Scale, and over-limit Free servers keep their existing action-focused controls without this extra button.</li>
<li><code>/summary impact</code> and monthly staff summaries now give staff clearer next steps by pointing to <code>/score</code> and cohort reports. When enough activity data is available, they also highlight the most active channels so admins can quickly see where the community is still alive.</li>
<li>Exempt members now get clearer streak context in <code>/my_score</code> and <code>/user_score</code>. Instead of showing inactive calendar dots that could look like a problem, CleanerBot now explains their exempt status more accurately. Member score diagnostics also use localized full timestamps for easier review.</li>
<li><code>/help</code> now lists <code>/cohorts dead-channels</code> under the Activity Health Score report section, making the dead-channel report easier to find.</li>
<li><code>/help</code> now uses the same optional support-button style as <code>/premium</code>, <code>/donate</code>, and <code>/summary</code>, so support links feel consistent across CleanerBot.</li>
<li><code>/purge_channel</code> now prevents two purge jobs from running on the same channel at the same time. Deletes are also spaced out more safely, which helps reduce Discord delete-rate-limit spikes without slowing down unrelated CleanerBot features.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Fixed buttons in direct messages, including <strong>Why?</strong> and <strong>Mute this server</strong>, so members can use them from inactivity and reward grace reminders without interaction errors.</li>
<li>Fixed impact summaries so they show that the Activity Health Score needs more data instead of showing a misleading score of zero.</li>
<li>Fixed <code>/config show</code> so Auto-Kick mode is labeled correctly when automatic removals are active.</li>
<li>Fixed personal-best streak posts so the same member no longer receives the same best-streak celebration twice from adjacent decay runs.</li>
<li>Fixed dead-channel cohort reports so they continue to exclude both whitelisted channels and channels inside whitelisted categories.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes – v3.0.0 – 07.05.2026</title>
        <link>https://cleanerbot.eu/changelog/v3-0-0/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Thu, 07 May 2026 19:33:06 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v3.0.0</guid>
        <description><![CDATA[CleanerBot 3.0 focuses on safer starts, clearer coverage, and better long-term community insight with Summary Reporting, Bulk Upload coverage bootstrapping, stronger safety guidance, and more transparent member score context without exposing message content.]]></description>
        <cb:headline><![CDATA[Safer Starts and Clearer Community Insight]]></cb:headline>
        <cb:labels><![CDATA[New|Improvements|Fixes]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New</span></strong></p>
<p><strong>Summary Reporting</strong></p>
<ul class="wp-block-list">
<li>Admins can now use <code>/summary cleanup</code> and <code>/summary impact</code> to review cleanup outcomes, engagement signals, and Activity Health Score trends by month, year to date, or since CleanerBot started collecting summary data.</li>
<li>CleanerBot can now post automatic monthly summaries to the staff channel when setup is complete and a staff channel is configured. Admins can turn this off with <code>/config toggle monthly_summary</code>.</li>
<li>CleanerBot now creates yearly server anniversary summaries, giving staff a concise long-term view of cleanup activity, engagement trends, and Activity Health Score changes since setup.</li>
<li>Staff Advisories now include a Summary Reporting track, helping admins turn <code>/summary cleanup</code> and <code>/summary impact</code> into a simple monthly review routine.</li>
</ul>
<p><strong>Coverage Bootstrap</strong></p>
<ul class="wp-block-list">
<li><code>/bulk_user_upload</code> is now available on Free, Pro, and Scale so admins can seed known members by Discord user IDs or CSV and make coverage reports useful sooner.</li>
<li>Bulk Upload now shows a localized preflight confirmation before imports start, including tracked-member counts, valid IDs found, tier context, and expected automation status.</li>
<li>Free servers now receive a clear warning before an upload may push them above the 200 tracked-member limit. If that happens, CleanerBot pauses server automations until Pro or Scale is active, while reports and manual review may still be available.</li>
<li>Bulk Upload final summaries now include an over-limit note when a Free server finishes above the tracked-member limit.</li>
<li>The Bulk Upload staff advisory now explains tier availability, CSV coverage seeding, preflight limits, summary counts, and privacy handling more clearly.</li>
</ul>
<ul class="wp-block-list">
<li><code>/my_score</code> now includes a 14-day active/quiet calendar so members can understand their recent activity pattern without exposing message content.</li>
<li>Activity Health Score cards now explain the current Excellent, Good, Fair, or Poor category in plain language.</li>
<li><code>/config show</code> now starts with a compact Safety Summary and Tracking Coverage guide covering auto-kick state, inactive role mode, key guardrails, a labeled website link, and next steps for <code>/coverage</code>, <code>/user_score</code>, and bulk seeding.</li>
<li>The setup-complete DM now explains CleanerBot's careful start state: tracking begins from now, old join dates are not treated as guessed inactivity, coverage grows over time or through seeding, and Auto Kick state is shown plainly.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li><code>/start</code> now uses <code>Inactive Role Overlay</code> as the safer default role mode. CleanerBot marks inactive members by adding the inactive role without changing their other roles, unless admins choose a swap mode.</li>
<li>Ghost Mode is now clearer as the safest quick-start option: staff-only tracking, no public warnings, no member CTAs, and auto-kick disabled by default.</li>
<li><code>/user_score</code> and <code>/my_score</code> now explain why a member can still have Score 0, including decay timing, recent tracking refreshes, exemptions, and decay boost roles.</li>
<li>Role-mode wording is clearer across setup and config screens, especially around which roles are added, removed, swapped, or restored. The existing <code>/config add default_role</code> command is still available.</li>
<li>When a server is over its plan limit, premium notices now show exactly which automations and premium tools are paused, with clearer upgrade guidance and roster coverage context when available.</li>
<li>Announcement cards are shorter and easier to scan. Ethics details now appear in the ephemeral <code>Why?</code> explanation, and staff-only Ghost Mode routing is shown with compact badges.</li>
<li>During large member checks, CleanerBot now follows Discord retry timing more carefully, reducing rate-limit pressure during busy scans.</li>
<li>Privacy-first ethics notes now appear more often, especially the promises that CleanerBot does not read message content, does not use ads or trackers, and does not build cross-server member reputations.</li>
<li>Warning reminders now include a direct "how it works" walkthrough link for members who want more context before reacting to an inactivity warning.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Fixed <code>/bulk_user_upload</code> CSV imports so wide role-matrix exports with many role columns are accepted when a valid Discord user ID column is present.</li>
<li>Fixed manual kick review confirmations so the "Apply to all" prompt closes after staff confirm or cancel, preventing accidental repeat clicks.</li>
<li>Fixed personal streak celebrations so members are not celebrated twice for the same achieved streak.</li>
<li>Fixed the final <code>/start</code> setup summary so follow-up actions use clickable commands instead of short-lived command buttons.</li>
<li>Fixed Answer Hint button responses so expired Discord interactions no longer show an unnecessary failure after the action was already handled.</li>
<li>Fixed Activity Health Score guardrail wording so admins can clearly see that both minimum active-member coverage and minimum activity-event volume must be met.</li>
<li>Fixed <code>/config validate</code> output so informational permission notes use the correct localized heading.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes – v2.20.0 – 30.04.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-20-0/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Thu, 30 Apr 2026 16:00:00 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.20.0</guid>
        <description><![CDATA[CleanerBot v2.20.0 adds kick exemptions, comeback and personal streak milestone celebrations, clearer admin and member copy, lighter large-server processing, and fixes setup, poll, score, and cleanup edge cases.]]></description>
        <cb:headline><![CDATA[Recovery Milestones and Cleaner Admin Reviews]]></cb:headline>
        <cb:labels><![CDATA[New|Improvements|Fixes]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New</span></strong></p>
<ul class="wp-block-list">
<li>Admins can now use <code>/config add kick_exemption</code> to protect one member from inactivity kicks before a manual review decision is needed.</li>
<li>CleanerBot now recognizes members who recover after an inactivity warning. They receive a short welcome-back DM, and the server gets a positive announcement in the same channel and visibility as their original warning, so no new noise is created.</li>
<li>Members can now be celebrated when they set a new personal activity streak best, including after a quiet period. Personal milestone announcements follow the same visibility settings as other streak updates.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Copy across setup, decay score summaries, reminders, and Silent Kudos responses has been revised to be less technical and more welcoming, reducing confusion for first-time admins and members unfamiliar with decay scoring.</li>
<li>Score, changelog, feedback, and inactive-role notifications now include clearer next steps without making buttons or reminders feel crowded.</li>
<li>Monthly champion announcements now distinguish between first-time and returning champions with adapted copy, making the recognition feel less repetitive for active servers.</li>
<li>Manual kick review lists now show clickable member profiles without pinging those members, making staff review faster and quieter.</li>
<li>Free servers that exceed their tracked-member limit now run lighter daily decay checks. Full tracking continues, while processing load is reduced to keep the bot responsive for in-limit servers.</li>
<li>CleanerBot now detects servers that have been unreachable on Discord for more than 24 hours and may leave them as part of its normal stale-server cleanup process. Healthy servers are not affected.</li>
<li>Vote prompts now use clearer support cards with short buttons, so admins see why a vote helps without crowded button text.</li>
<li>Large inactivity scans now pace live member lookups more consistently, reducing Discord rate-limit bursts during busy checks.</li>
<li>Notification thread cleanup now scans archived threads more gently, helping scheduled cleanup stay reliable without pressuring Discord limits.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Fixed a Setup Wizard issue where long translated modal texts could fail to open on Discord. Inputs are now safely bounded so the wizard continues reliably.</li>
<li>Fixed Poll activation feedback in Ghost Mode: CleanerBot no longer confirms polls as enabled when Ghost Mode keeps them off, and the Poll Wizard now shows a clear mode hint.</li>
<li>Fixed an issue where one of a fun poll's emoji options could not be selected reliably due to an incorrect icon reference.</li>
<li>Fixed <code>/set_decay_score</code> so a stale Discord interaction token no longer turns a completed score update into an error.</li>
<li>Fixed notification comment cleanup so expired comment buttons on newer Discord message layouts can be disabled correctly.</li>
<li>Fixed a rare inactivity score conflict where newer member activity could be shown while an older score snapshot stayed in place, ensuring decay scores always reflect the most recent state.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes – v2.19.2 – 22.04.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-19-2/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Wed, 22 Apr 2026 20:27:00 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.19.2</guid>
        <description><![CDATA[CleanerBot v2.19.2 adds a new /feedback command with setup DM shortcuts, broadens /scan_history access to all admins, strengthens safety checks, and fixes premium entitlement and manual review reliability issues.]]></description>
        <cb:headline><![CDATA[Feedback Collection and Reliability Hardening]]></cb:headline>
        <cb:labels><![CDATA[New|Improvements|Fixes]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New</span></strong></p>
<ul class="wp-block-list">
<li>Added <code>/feedback</code> for all server members, with category selection and an optional comment so teams can share structured feedback quickly.</li>
<li>Setup and completion DMs now include a "Give Feedback" button, making it easier for admins to send feedback during onboarding.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li><code>/scan_history</code> is now available to all admins on all plans.</li>
<li>Configuration changes now always enforce valid warning, inactive, and kick threshold ordering, helping prevent invalid setups.</li>
<li>Cleaner <code>inactive_only</code> guidance in <code>/config</code> and setup now clarifies that non-default roles are removed and not auto-restored in this mode.</li>
<li>Member lookup handling is now more reliable during high activity and Discord API rate limits, reducing missed updates in large servers.</li>
<li>Activity Health Score publishing now handles load pressure more reliably, reducing stalled or incomplete publish runs.</li>
<li>Startup and reconnect handling is now more stable, reducing sporadic command errors and duplicate cleanup side effects.</li>
<li>Webhook validation is now stricter, so misconfigured webhook integrations are safely rejected.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Fixed an issue that could incorrectly clear Pro and Scale entitlement records during cache maintenance and temporarily disable premium features.</li>
<li>Fixed an edge case where <code>Apply to all</code> in manual kick review could fail to open the snooze modal.</li>
<li>Fixed manual kick review handling for members who already left the server, so they are cleaned up instead of remaining stuck in review state.</li>
<li>Fixed intermittent message update failures in wizard, admin progress, polls, <code>/report_inactivity</code>, and AHS status flows.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes – v2.19.1 – 17.04.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-19-1/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Fri, 17 Apr 2026 20:25:50 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.19.1</guid>
        <description><![CDATA[CleanerBot v2.19.1 improves Ghost mode role cleanup and setup validation, stabilizes DM reminder delivery, and keeps setup health reminders in staff-only channels.]]></description>
        <cb:headline><![CDATA[Ghost Mode Setup Recovery and Reminder Reliability]]></cb:headline>
        <cb:labels><![CDATA[Improvements|Fixes]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Admins can now run <code>/config remove inactive_role</code> in Ghost mode to remove a stale inactive role from the config. CleanerBot then resets to the default behavior (no inactive role assigned).</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Ghost mode setup validation no longer prevents your setup from being considered complete when the configured inactive role no longer exists. The setup status stays consistent, and a clear <code>/config validate</code> message guides you through cleanup or reconfiguration.</li>
<li>DM inactivity reminders are now delivered reliably regardless of server size or infrastructure setup.</li>
<li>Setup health reminders (staff-only notifications about gaps in member coverage) now always stay in staff-only delivery paths and no longer fall back to public warning channels.</li>
<li>Fixed an issue that could make setup information appear incomplete for a server after scaling changes. We contacted the affected server directly and restored everything there. At this time, no other servers are affected.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes – v2.19.0 – 16.04.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-19-0/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Thu, 16 Apr 2026 12:00:00 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.19.0</guid>
        <description><![CDATA[CleanerBot v2.19.0 adds three new utility commands, introduces redundant server connections and isolated data storage for improved resilience, and resolves several stability issues.]]></description>
        <cb:headline><![CDATA[New Commands, Resilient Infrastructure & Stability Fixes]]></cb:headline>
        <cb:labels><![CDATA[New|Improvements|Fixes]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New</span></strong></p>
<ul class="wp-block-list">
<li>New <code>/invite</code> command lets anyone add CleanerBot to another server (opens Discord's native add dialog directly), join the support community, or visit the website - all from one convenient card.</li>
<li>New <code>/ping</code> command shows a live status panel with aggregate status, component health, uptime, latency, guild count, and user count - the same view as the CleanerBot status channel.</li>
<li>New <code>/config share</code> command lets admins generate a share-safe CleanerBot setup summary with AHS settings and public link, preview it privately, post it in-channel, and copy it via attached Markdown export.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Bulk upload guidance now reflects current behavior: CSV is the recommended path for large imports, strict single-input mode is enforced (<code>ids</code> or <code>file</code>, not both), manual <code>ids</code> input is capped at 250 unique IDs, and Stop Upload handling is clearly documented.</li>
<li>Risk-review notices after threshold and decay-related config changes now explain impact more clearly, including that the change is saved and should be reviewed before high-impact automation is enabled or confirmed.</li>
<li>Member-targeted announcement cards now include a plain-text affected-member list in code formatting, so members can still identify users when Discord mentions render inconsistently.</li>
<li>Manual kick review confirmations now use clearer action wording and disable action buttons immediately after click, so admins get instant feedback while larger kick batches are processing.</li>
<li>When CleanerBot leaves a server due to incomplete setup, the goodbye notice is now sent directly to the configured admin as a DM and includes a one-click re-invite button to easily bring the bot back.</li>
<li>Server connections to Discord are now redundant. If one connection drops, only a small fraction of servers is temporarily affected instead of all at once.</li>
<li>Internal maintenance tasks now run separately from command handling, so the bot stays fully responsive even during background operations.</li>
<li>Server data is now stored across independent, isolated infrastructure segments. An issue or maintenance window in one segment no longer affects other servers, and new servers are assigned automatically.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Fixed a crash in <code>/score_settings</code> that prevented the channel selection picker from loading correctly.</li>
<li>Voting on any connected botlist now correctly grants the supporter role and records the vote credit; previously only top.gg votes triggered the supporter flow.</li>
<li><code>/set_decay_score</code> now accepts the full <code>0-180</code> range, so manual corrections can match the same inactivity threshold ceiling used across setup and config.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes – v2.18.0 – 09.04.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-18-0/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Thu, 09 Apr 2026 12:00:00 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.18.0</guid>
        <description><![CDATA[This release adds safer stale-member cleanup and new post-score warning actions, while improving setup defaults, threshold consistency, cleanup resilience, and delivery reliability.]]></description>
        <cb:headline><![CDATA[Smarter Cleanup, Better Admin Follow-Ups]]></cb:headline>
        <cb:labels><![CDATA[New|Improvements]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New</span></strong></p>
<ul class="wp-block-list">
<li>CleanerBot now runs a daily low-priority member-data cleanup that removes stale member-scoped records only after Discord confirms the user has left the server.</li>
<li><code>/set_decay_score</code> now offers two optional follow-up actions after a score update: send a public inactivity warning in the configured warning channel and send a personal inactivity warning DM to the member. Admins can confirm or skip each action independently, the DM step is skipped automatically when inactivity DMs are disabled, and all actions are logged in <code>/config history</code> with the acting admin.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Added additional internal security hardening to improve protection against abuse and unauthorized access.</li>
<li>New server setups now track member joins by default, improving inactivity coverage from day one.</li>
<li>Threshold setup is now fully consistent between <code>/start</code> and <code>/config</code>: warning and inactive ranges are <code>1-180</code>, kick range is <code>21-180</code>, and validation enforces <code>warning &lt; inactive &lt; kick</code>.</li>
<li>Grace periods now end cleanly without hidden catch-up score jumps; decay resumes from the grace boundary on the next regular interval.</li>
<li>Leave cleanup is now centralized across inactivity data, vote intents, DM queue, DM mutes, advisory DM opt-ins, tip ledgers, silent kudos rows, and member-scoped AHS history.</li>
<li>Member leave handling now keeps cleanup running even if one cleanup path fails, reducing stale inactivity data.</li>
<li>Missing warning-channel permission alerts are now grouped and rate-limited per server, reducing repeated staff alert spam.</li>
<li>Decay member fetches now retry transient API and network failures with backoff and include compact per-server health summaries.</li>
<li>Bot-list stats updates now respect provider update windows and use safer retry and fallback behavior during API limits or temporary endpoint issues.</li>
<li>Welcome DMs now retry transient Discord API failures (including 429 and 5xx responses such as 503), reducing missed welcomes during short outages.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes – v2.17.5 – 06.04.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-17-5/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Mon, 06 Apr 2026 12:00:00 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.17.5</guid>
        <description><![CDATA[This release makes large /bulk_user_upload imports faster and safer, improves admin review handling and diagnostics, and fixes reliability issues in score settings, bot-list stats sync, and quiz poll results.]]></description>
        <cb:headline><![CDATA[Faster Bulk Uploads, Cleaner Admin Controls]]></cb:headline>
        <cb:labels><![CDATA[Improvements|Fixes]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li><code>/bulk_user_upload</code> is now faster and safer for large imports, with better abuse protection, smoother rate-limit handling, live channel progress updates, and a one-click "Stop Upload" option for admins.</li>
<li>Background checks now stay more reliable during busy periods with high Discord API traffic.</li>
<li>Permission diagnostics are now cleaner, so admins can spot and fix setup issues faster.</li>
<li>In manual kick review, if no members are selected, admins now get a direct "Apply to All" confirmation for Kick, Exempt, and Snooze actions.</li>
<li>Manual kick review now accepts multiple recent review messages at once (up to 14 days old by default), not just the newest one.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>In <code>/score_settings</code>, the publish-channel picker now appears reliably again, so admins can choose the AHS publish channel directly in settings.</li>
<li>Stats syncing to <code>discordservices.net</code> now retries more reliably after Cloudflare checks, reducing missed bot-list updates.</li>
<li>Closed quiz polls now keep the original question visible and show the question plus the correct answer in one clear result block.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes – v2.17.4 – 03.04.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-17-4/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Fri, 03 Apr 2026 12:00:00 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.17.4</guid>
        <description><![CDATA[This release adds CSV attachment support to /bulk_user_upload, introduces optional pre-kick DM and reinvite controls, expands advisories and safety guardrails, and improves reliability and coverage guidance across reminders and admin workflows.]]></description>
        <cb:headline><![CDATA[CSV Bulk Upload, Safer Kick Flow, Reliability Upgrades]]></cb:headline>
        <cb:labels><![CDATA[New|Improvements]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New</span></strong></p>
<ul class="wp-block-list">
<li><code>/bulk_user_upload</code> now accepts CSV attachments via <code>file</code> as a preferred import path for large member exports, while keeping manual <code>ids</code> input unchanged.</li>
<li>CSV uploads automatically extract Discord user IDs, deduplicate entries, and process full files in internal batches without the 250-IDs-per-command cap used by manual input.</li>
<li>Admins can now enable a pre-kick DM (<code>/config toggle dm_kick</code>) that sends members a short, friendly notice before they are removed for inactivity, explaining it is not a ban and they are welcome to rejoin.</li>
<li>Add a reinvite link to pre-kick DMs with <code>/config set reinvite_url</code> (valid Discord invite URL required). During manual kick review, admins choose per action whether to include or skip the link. In auto-kick mode, the link is always included when configured.</li>
<li>New advisory in <code>/advises</code> covering all optional kick settings: auto-kick, manual kick review, pre-kick DMs, and reinvite URL configuration.</li>
<li>CleanerBot now maintains a bot-operator-managed blocklist: servers on it are left silently at startup and on any future join attempt, with no message to the server. This protects existing communities from sharing the bot with harmful servers.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Result reporting for CSV mode now adds import-specific visibility (<code>total IDs found</code>, <code>duplicates skipped</code>, <code>processed</code>) alongside existing <code>added/known/not found/invalid/error</code> outcomes.</li>
<li><code>/coverage</code> now includes a direct CTA button to the bulk upload guide whenever coverage is low or no estimate is available, so admins can act immediately.</li>
<li>Monthly staff coverage reminders now include a direct guide button and updated copy for plan-specific next steps around CSV-assisted seeding.</li>
<li>Coverage and setup guidance now consistently point admins to the bulk upload walkthrough: <a href="https://cleanerbot.eu/features/bulk-upload/">https://cleanerbot.eu/features/bulk-upload/</a>.</li>
<li>Internal reliability improvement: CleanerBot now offloads global maintenance jobs (decay history pruning, Vote Joker cleanup) to a dedicated worker process, reducing load on the bot and ensuring each job runs exactly once even if multiple instances are active.</li>
<li>Monthly champion winner pings now follow the same format as other activity announcements: mentions are sent separately so the announcement card stays clean even for long tie lists.</li>
<li>The daily channel permission check now runs across servers concurrently instead of one by one, cutting total run time significantly. Auto-fix attempts per server are capped to keep the check window predictable, with any remaining channels picked up on the next daily run.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes – v2.17.3 – 02.04.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-17-3/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.17.3</guid>
        <description><![CDATA[This release adds a paginated kick exemption manager with direct removal support, lets admins permanently mute coverage reminders, upgrades CleanerBot to AutoShardedBot for improved gateway resilience, improves localization across six languages, and fixes champion pings, kick review accuracy, a leaderboard crash, and a false shard alert.]]></description>
        <cb:headline><![CDATA[Kick Exemption Management, Mutable Coverage Reminders, Reliability Fixes]]></cb:headline>
        <cb:labels><![CDATA[New|Improvements|Fixes]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New</span></strong></p>
<ul class="wp-block-list">
<li><code>/config list kick_exemptions</code> opens a paginated list of all kick-exempt members, with a built-in removal menu for quick management.</li>
<li><code>/config remove kick_exemption &lt;user&gt;</code> removes a member's exemption and resets their decay score and activity streak to zero, returning them cleanly to the normal activity cycle.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Staff coverage notices now have a "Mute this notice" button. Clicking it stops the monthly reminder permanently for your server - the mute status is visible in <code>/config show</code> under General Settings, and admins can lift it anytime with <code>/tips_reset coverage_bulk_upload_staff_notice</code>.</li>
<li>CleanerBot now runs on Discord's AutoShardedBot foundation, improving resilience to gateway interruptions and preparing for horizontal scaling as your community grows.</li>
<li>Localization quality significantly improved across EN, DE, ES, FR, PT, and IT.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Monthly streak champion announcements now correctly ping the winners.</li>
<li>The manual kick review now always shows the member selection dropdown, and the "last active" date is now accurate - showing the join date as a fallback for members with no recorded activity.</li>
<li><code>/leaderboard</code> no longer crashes when results are too long to fit in a message; the file attachment fallback now displays correctly.</li>
<li>A false infrastructure alert that could fire when a server removed the bot mid-setup has been resolved.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes – v2.17.2 – 30.03.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-17-2/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Mon, 30 Mar 2026 21:19:23 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.17.2</guid>
        <description><![CDATA[This release adds /coverage for instant member management visibility, expands /config show with an analytics page and /help with a jump-to-section dropdown, improves coverage reminder accuracy, and fixes multiple reliability issues across kick workflows, exports, announcements, and startup.]]></description>
        <cb:headline><![CDATA[Coverage Command, Smarter Config, Reliability Fixes]]></cb:headline>
        <cb:labels><![CDATA[New|Improvements|Fixes]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New</span></strong></p>
<ul class="wp-block-list">
<li><code>/coverage</code> lets admins instantly check how many members CleanerBot is actively managing compared to the server's estimated total, with a clear indicator when coverage is below 85% and a hint to run <code>/bulk_user_upload</code> if needed.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li><code>/config show</code> now includes an "Analytics &amp; Reporting" page showing your AHS tracking status, public share setting, publish channel, and event auto-post toggle - all in one place.</li>
<li><code>/help</code> now has a "Jump to section" dropdown, matching the navigation already available in <code>/config show</code>, so you can jump directly to any help page without stepping through them one by one.</li>
<li>Staff coverage reminders now use a monthly cap, wait for an initial 7-day grace period, and for non-tiny servers only nudge when the missing-member gap is above 20, reducing false positives.</li>
<li><code>/report_inactivity</code> now renders the ethics statement in its own separate card, so report content and policy guidance stay clearly separated.</li>
<li><code>/export_decay_data</code> now handles member lookup rate limits with capped retries and backoff, so exports recover faster instead of stalling on repeated rate limit responses.</li>
<li>Refined ethics statements for accuracy and clarity, better reflecting CleanerBot's current features, data handling, and fairness principles.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Manual kick review cards now always include the member selection dropdown, so staff can select members before using kick, snooze, or exempt actions.</li>
<li><code>/purge_channel</code> now shows self-check and missing-permission errors in valid interaction cards again, preventing Discord payload errors during command use.</li>
<li><code>/leaderboard</code> and <code>/report_inactivity</code> resend flows now close old ephemeral cards safely, return proper in-app error cards, and avoid internal "check logs" wording in user-facing errors.</li>
<li>Decay summary and reward-role announcements now post reliably again by avoiding a message payload combination that Discord rejects.</li>
<li>"Why?" explainer cards now open reliably without Discord component payload errors.</li>
<li>Startup now finishes cleanup and warmup housekeeping before queued inactivity DM work begins, preventing premature setup checks right after reboot.</li>
<li>Startup now opens the housekeeping gate before leaderboard cache preloading completes, so delayed care loops can begin on time while leaderboard warmup continues in the background.</li>
<li>Rapid leave/rejoin cycles now keep shard mappings stable and treat temporary missing-map states as soft skips in startup and license warmups, reducing noisy startup errors.</li>
<li>Setup validation now names missing <code>Manage Roles</code> as the explicit blocker for role-based automation instead of saving an unclear unknown reason.</li>
<li><code>/export_decay_data</code> no longer crashes with a Discord payload error when a CTA card is shown alongside the export file.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes – v2.17.1 – 28.03.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-17-1/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Sat, 28 Mar 2026 07:33:58 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.17.1</guid>
        <description><![CDATA[This release completes a full Components v2 rework across all user-facing bot messages, improves new-server shard placement stability, and restores advisory hero images when permissions allow.]]></description>
        <cb:headline><![CDATA[Full Components v2 Rework, Clearer Messaging]]></cb:headline>
        <cb:labels><![CDATA[New|Improvements|Fixes]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New</span></strong></p>
<ul class="wp-block-list">
<li>Completed a full Discord Components v2 rework across all user-facing messages so commands, DMs, setup flows, announcements, polls, and admin responses now share one consistent card-style layout with clearer guidance and actions.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Improved new-server shard assignment so CleanerBot now prefers stable, lower-load database shards using both guild volume and data-volume signals, with hard caps that prevent overloaded placement.</li>
<li>Reward grace reminder DMs now include the same <code>Mute this server</code> and <code>Why?</code> controls as warning and inactive reminder DMs.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Restored advisory hero images in staff advisory cards and DM copies when attachment permissions are available.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes – v2.17.0 – 26.03.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-17-0/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Thu, 26 Mar 2026 14:38:42 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.17.0</guid>
        <description><![CDATA[This release adds new donation and notification controls, improves mute and command fallback behavior, and fixes setup, routing, kick dedupe, and reward-sync reliability.]]></description>
        <cb:headline><![CDATA[More Admin Controls, More Reliable Routing]]></cb:headline>
        <cb:labels><![CDATA[New|Improvements|Fixes]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New</span></strong></p>
<ul class="wp-block-list">
<li>Added <code>/donate</code> so members can open an optional <code>Buy Me a Coffee</code> link directly in Discord to support the project.</li>
<li>Added <code>/config toggle kick_announcements</code> so admins can silence kicked-member summary announcements without muting other alerts.</li>
<li>Added <code>/reward reward_grace_dm</code>, a dedicated reward setting for pre-removal reward-role DMs, so admins can pause those reminders without disabling reward roles.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Members who use <code>/mute</code> now also mute reward grace-ending DMs in that server, and <code>/unmute</code> restores them.</li>
<li><code>/config show</code> now falls back to a clickable root command mention when Discord has not yet cached a newer subcommand path.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Highscore announcements now honor <code>min_streak_notification</code> inclusively, so a value like <code>14</code> triggers at streak 14.</li>
<li>Setup wizard <code>Set</code> buttons now open their input dialogs reliably instead of occasionally timing out.</li>
<li>Automatic inactivity kicks now ignore duplicate retries in the same run window, preventing duplicate removals and duplicate notifications.</li>
<li>Shard routing now blocks silent cross-shard fallbacks and auto-repairs missing guild-shard mappings, reducing guild-count drift in status views.</li>
<li>New guild joins now seed shard mappings before premium checks, preventing join-time routing errors.</li>
<li>Members who rejoin after kick or leave now start with a clean activity baseline, preventing stale counters from blocking reward-role sync.</li>
<li>Expired Supporter roles are now removed before stale vote-state cleanup, keeping role expiry reliable while old cache rows are pruned.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes – v2.16.1 – 15.03.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-16-1/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Sun, 15 Mar 2026 11:21:23 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.16.1</guid>
        <description><![CDATA[This release improves inactivity tracking consistency and manual kick review safety, and fixes report and decay-history reliability issues.]]></description>
        <cb:headline><![CDATA[Safer Kick Reviews, More Reliable Reports]]></cb:headline>
        <cb:labels><![CDATA[Improvements|Fixes]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Improved inactivity tracking consistency so score and grace-state updates stay aligned and false mismatch noise is reduced.</li>
<li>Improved manual kick review safety by blocking stale review actions, which prevents duplicate kicks from older review messages.</li>
<li>Bot list statistics now include estimated user totals on providers that support user-count fields.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Fixed a <code>/report_inactivity</code> issue where some report views failed to open when tip buttons were shown.</li>
<li>Fixed decay history retrieval so score history stays reliable without database fallback errors.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes – v2.16.0 – 14.03.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-16-0/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Sat, 14 Mar 2026 20:04:48 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.16.0</guid>
        <description><![CDATA[This release adds clearer paginated inactivity reports, improves alert and DM delivery resilience during Discord outages, and expands vote-webhook support with DiscordForge.]]></description>
        <cb:headline><![CDATA[Paginated Reports, Stronger Delivery Resilience]]></cb:headline>
        <cb:labels><![CDATA[Improvements]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li><code>/leaderboard</code> now uses paginated pages (default 25 entries, optional <code>page_size</code>) and automatically falls back to a TXT export when very large results would exceed Discord embed limits.</li>
<li><code>/report_inactivity</code> now also accepts an optional <code>page_size</code> (default 25), and both <code>/report_inactivity</code> and <code>/leaderboard</code> resend only the currently viewed page to channels.</li>
<li>CleanerBot now retries warning summaries and DM deliveries during temporary Discord API outages, reducing missed inactivity alerts.</li>
<li>Activity-decay data handling is now leaner and more stable over time, with no intended change to decay score outcomes.</li>
<li>CleanerBot now syncs stats and slash commands to DiscordForge, and can process DiscordForge vote webhooks for vote-linked features.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes – v2.15.6 – 11.03.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-15-6/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Wed, 11 Mar 2026 22:23:09 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.15.6</guid>
        <description><![CDATA[This release improves decay-run reliability under API pressure, expands botlist vote support, and keeps inactivity reports cleaner and more accurate.]]></description>
        <cb:headline><![CDATA[More Reliable Decay Runs, Cleaner Inactivity Reporting]]></cb:headline>
        <cb:labels><![CDATA[Improvements|Fixes]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Added <code>/config set inactivity_role_mode</code> with <code>inactive_overlay</code>, so you can add and later remove only the inactivity role without changing members' other roles.</li>
<li>Decay scans now run with steadier sequential member checks, reducing long stalls during heavy Discord API rate-limit periods.</li>
<li>Vote and Vote Joker now support all configured botlists, and Answer Hint prompts include a direct Top.gg vote button for faster access.</li>
<li>Inactivity reminder DMs now auto-mute members per server after delivery failures (for example blocked bot or closed DMs), preventing repeated failed attempts.</li>
<li>Added DiscordThings as a new supported botlist.</li>
<li>Notification comment buttons now recover more reliably from thread-creation API errors by reusing an existing thread when one already exists.</li>
<li>Reaction-based activity handling now stays stable during temporary Discord DNS/network outages instead of crashing reaction-remove processing.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Reboot and shutdown now handle in-flight decay database work more gracefully, reducing noisy transient error logs while services are stopping.</li>
<li>Members who were auto-kicked are now removed from inactivity reports immediately, so <code>/report_inactivity</code> no longer shows stale kick candidates.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes – v2.15.5 – 07.03.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-15-5/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Sat, 07 Mar 2026 18:08:12 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.15.5</guid>
        <description><![CDATA[This release makes guided onboarding significantly shorter and clearer, with optional role-heavy setup paths and stronger resilience under transient Discord API pressure.]]></description>
        <cb:headline><![CDATA[Faster Guided Setup, Safer Defaults]]></cb:headline>
        <cb:labels><![CDATA[Improvements|Fixes]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Guided <code>/start</code> is now much shorter and lower-friction, focusing on essential choices first and moving advanced options to <code>/config</code>.</li>
<li>Setup order is clearer: staff channel first, then thresholds, then optional role/channel choices based on mode.</li>
<li>The admin role and selected role-heavy steps are now optional-by-design, so teams can finish onboarding faster.</li>
<li>Auto-kick selection was removed from guided setup; CleanerBot now starts with manual review flow and staff-channel fallback where appropriate.</li>
<li>First-run onboarding is cleaner: soft blockers are hidden at initial entry and shown once a guild is active.</li>
<li>Poll and reward-role pro tips are delayed for the first week after onboarding to reduce early setup noise.</li>
<li>Permission guidance is clearer: <code>Manage Roles</code> is only required when role-based automation is actually configured.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Decay runs now handle transient Discord API response issues more safely, skipping affected cases instead of failing whole runs.</li>
<li>Phase-2 member-fetch behavior is steadier under pressure, reducing error spikes during large scans.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes – v2.15.4 – 07.03.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-15-4/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Sat, 07 Mar 2026 01:00:00 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.15.4</guid>
        <description><![CDATA[This release streamlines onboarding with clearer preflight guidance, safer setup transitions, stronger click and permission guardrails, and fixes for setup delivery edge cases.]]></description>
        <cb:headline><![CDATA[Smoother Setup Flow, Safer Guardrails]]></cb:headline>
        <cb:labels><![CDATA[Improvements|Fixes]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Infinity Bots vote/list links now point to <code>omniplex.gg</code>, while the existing <code>infinitybots</code> webhook provider name stays unchanged for continuity.</li>
<li>CleanerBot now starts with a slimmer invite permission set, and <code>/start</code> preflight clearly separates required permissions from feature-specific optional permissions.</li>
<li>Admin and member DMs now include consistent quick links to the Support Community and <code>cleanerbot.eu</code>, so follow-up actions are one click away.</li>
<li>Final setup success screens now include a one-click <code>Check permissions</code> action for immediate bot-channel permission validation.</li>
<li>If a quick preset cannot be applied, CleanerBot now clears partial preset state before switching to guided setup, preventing stale blocker popups.</li>
<li><code>/start</code> now runs entry preflight immediately and shows a compact blocker summary with a <code>Re-check preflight</code> button on the welcome step.</li>
<li>Pro-tip recommendation embeds are now gated behind completed setup, so unfinished onboarding no longer gets premature nudges.</li>
<li>Guided <code>/start</code> steps now provide clearer explainer copy with automatic fallback to legacy text when translation keys are missing.</li>
<li><code>/start</code> language switching from step 0 now stays fully in-wizard and returns directly to the localized setup start.</li>
<li>Wizard button clicks now switch to an explicit <code>In progress</code> state and lock other controls on that step to prevent duplicate actions.</li>
<li>Periodic automations now surface missing permission blockers to staff earlier (poll posting, monthly champion posts, notification-thread cleanup, reward-role updates, and AHS compute failures) instead of failing silently.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Setup wizard delivery now handles Discord temporary send-disable windows more gracefully, so setup steps avoid hard failures.</li>
<li>Setup wizard auto-create now clearly warns when a server hits Discord’s 250-role cap and tells admins to remove roles before retrying.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes – v2.15.3 – 01.03.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-15-3/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Sun, 01 Mar 2026 22:00:00 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.15.3</guid>
        <description><![CDATA[This release improves large-server stability and reporting accuracy with stricter dead-channel logic, adaptive API-pressure handling, and fixes across setup, config, decay, and AHS workflows.]]></description>
        <cb:headline><![CDATA[Stronger Stability for Large Servers]]></cb:headline>
        <cb:labels><![CDATA[Improvements|Fixes]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Dead-channel reports now keep <code>last_full_month</code> strict, so channels reactivated in the current month are excluded, while <code>/cohorts dead-channels</code> can still switch to <code>this_month_so_far</code> when needed.</li>
<li>Removed legacy owner-only maintenance and test slash commands to keep the command surface cleaner.</li>
<li>Added webhook intake for discordservices.net, discollab, and vcodes.xyz.</li>
<li>Poll Vote Joker now accepts verified votes from any configured webhook-enabled bot list instead of being tied to one provider.</li>
<li>Unconfigured-server reminders now include an exact scheduled leave timestamp and a clearer <code>/start</code> call to action.</li>
<li>Large-server decay scans now back off earlier under API pressure with adaptive member-fetch throttling.</li>
<li><code>/purge_channel</code> now uses adaptive pacing and retries under Discord API pressure, reducing failed heavy cleanup runs.</li>
<li>Webhook rate-limit tracking now uses TTL cleanup and entry caps to prevent memory growth during sustained traffic.</li>
<li>Activity Health Score recomputes now use leaner channel aggregation and realistic pressure thresholds, reducing unnecessary Lite Mode fallbacks.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Fixed dead-channel reports so whitelisted channels and channels inside whitelisted categories are no longer listed.</li>
<li>Fixed <code>/config show</code> pagination so the Auto-Kick status and its toggle command stay together reliably across languages.</li>
<li>Fixed periodic permission checks to respect <code>/config toggle auto_provision_assets</code>, so disabled auto-provision no longer recreates preset channels or roles.</li>
<li>Fixed decay summary notifications so very large member lists are split across multiple messages instead of failing to send.</li>
<li>Fixed overlapping full decay runs at startup, so large servers avoid duplicate scan pressure and get more predictable inactivity processing.</li>
<li>Fixed rare setup-check and staff-reminder errors when a guild leaves or has partial config data, so decay runs continue without interruption.</li>
<li>Fixed preset setup handling when a server removes CleanerBot mid-setup, so the wizard exits cleanly instead of surfacing noisy failure states.</li>
<li>Fixed preset auto-provision races when the bot leaves a server mid-setup, preventing stale follow-up config writes after cleanup.</li>
<li>Fixed AHS scoring so voice activity in whitelisted channels and whitelisted categories is no longer counted.</li>
<li>Added missing labels for newly supported bot-list buttons so <code>/help</code> can show all configured links cleanly.</li>
<li>Fixed a guild-config load edge case that could trigger extra setup checks, improving run stability and reducing unnecessary load on large servers.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes – v2.15.2 – 22.02.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-15-2/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Sun, 22 Feb 2026 10:03:29 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.15.2</guid>
        <description><![CDATA[This release improves operational reliability with stronger memory guardrails, steadier catch-up handling, clearer staff advisories, and safer bulk upload and decay score behavior.]]></description>
        <cb:headline><![CDATA[Stronger Guardrails, Faster Recovery]]></cb:headline>
        <cb:labels><![CDATA[Improvements|Fixes]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Added stronger RAM guardrails for bot and database containers plus proactive memory alerts, reducing outage risk during host memory pressure.</li>
<li>Improved post-downtime catch-up for large servers with chunked scans and checkpoint progress, so long recoveries do not fail as one hard stop.</li>
<li>Tier-limit alerts now DM admins once per month from the first over-limit reminder in that month, surfacing paused automations sooner.</li>
<li>Unconfigured auto-leave now removes one oldest never-configured server per week and always excludes support, test, and premium servers.</li>
<li>Added a Staff Advisories track for permission hygiene, giving admins explicit required, recommended, and optional permission guidance before automations degrade.</li>
<li><code>/bulk_user_upload</code> now shows a live ephemeral progress bar with seeded and failed deltas while each batch is processed.</li>
<li>Added a Staff Advisories track for Premium bulk user upload, helping freemium servers decide when to upgrade and helping premium servers seed full rosters faster.</li>
<li><code>/reset_all_decay_scores</code> is now available to server admins on all tiers, so emergency decay resets are no longer premium-gated.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li><code>/bulk_user_upload</code> now seeds first-time valid member IDs correctly, so bulk roster imports no longer fail mid-run.</li>
<li>Auto-provision self-heal now keeps existing valid preset roles and channels instead of replacing already working assignments.</li>
<li>Admin DM fallback contacts now refresh when the stored contact leaves the server or loses admin-level access.</li>
<li><code>/reset_all_decay_scores</code> now resets scores to zero without removing member join history, streak counters, or auto-kick dedupe records.</li>
<li><code>/set_decay_score</code> now updates only the member's decay score for existing records and no longer overwrites streak or join metadata.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes – v2.15.1 – 17.02.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-15-1/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Tue, 17 Feb 2026 11:15:21 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.15.1</guid>
        <description><![CDATA[This release improves admin clarity and reliability with a new Trust and Status hub, cleaner setup/config flows, stronger retention handling, and safer localized fallback behavior.]]></description>
        <cb:headline><![CDATA[Clearer Admin Workflows, Safer Defaults]]></cb:headline>
        <cb:labels><![CDATA[New|Improvements|Fixes]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New</span></strong></p>
<ul class="wp-block-list">
<li>New <code>/trust/</code> page gives admins one place to verify CleanerBot details faster (legal, security, and identity): https://cleanerbot.eu/trust/</li>
<li>New <code>/status/</code> page gives admins a live overview of bot, database, and webhook availability: https://cleanerbot.eu/status/</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li><code>/config show</code> is now easier to scan with pagination, a section jump dropdown, inline page numbers, and quick Website/Community links.</li>
<li>Channel preset setup now collapses repeated non-blocking permission warnings, so admins can spot real setup blockers faster.</li>
<li>Warning-notification comment threads now include a clear retention notice, auto-clean after the configured window (default 30 days), and run a legacy sweep for older leftovers (default 60 days).</li>
<li>Botlist stat posting now retries once during temporary provider outages and logs shorter error snippets to reduce noise.</li>
<li>Migration and event analytics defaults were hardened to make day-to-day operations more predictable across deployments.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Inactivity kick summaries now use localized score labels and no longer expose member IDs in member lists.</li>
<li>More guardrail and fallback command/button messages now follow each server's configured bot language.</li>
<li>Auto-kick risk warnings now show a clear count of kick-eligible members instead of percentages.</li>
<li>Catch-up scans now treat temporary Discord API outages as transient and retry, so one unstable channel does not flood logs.</li>
<li>Legacy warning-thread cleanup now skips missing archived-thread access as a non-blocking case, reducing startup warning noise.</li>
<li>Decay default-role settings now auto-remove deleted role IDs, preventing recurring stale-role warnings.</li>
<li>Setup Wizard Step 1 (Role Position) now has a reliable Back button in both preset and manual/explanatory flows.</li>
<li>Startup delay fallbacks now match documented defaults, preventing early task starts when settings are missing.</li>
<li><code>/my_score</code> and <code>/user_score</code> now show "Unknown so far - tracking starts now." when no tracked activity is known yet.</li>
<li><code>/user_score</code> now returns a clear localized hint when the member argument cannot be resolved.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes – v2.15.0 – 13.02.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-15-0/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Fri, 13 Feb 2026 22:00:00 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.15.0</guid>
        <description><![CDATA[This release focuses on reliability and admin clarity: setup and daily repair flows are more robust, activity and reward-role handling is more consistent, and multiple config/startup edge cases now produce cleaner behavior with less log noise.]]></description>
        <cb:headline><![CDATA[Stronger Stability, Cleaner Operations]]></cb:headline>
        <cb:labels><![CDATA[Improvements|Fixes]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Daily auto-repair now prioritizes servers with known setup blockers, so impacted communities are fixed sooner.</li>
<li>Setup completion now detects large pending role-sync backlogs and stages role updates after enablement to avoid one large catch-up wave.</li>
<li>Inactivity tracking now better reflects truly recent activity instead of delayed older events.</li>
<li>Daily Activity Health Score processing is now more reliable during routine background runs.</li>
<li>Reward-role streak handling is now more stable during high-concurrency periods.</li>
<li>CleanerBot now recovers better from short background save hiccups to keep moderation flows uninterrupted.</li>
<li>Healthy servers are now skipped during auto-provision sweeps to reduce unnecessary background load.</li>
<li><code>/help</code> quick links now show only currently active destinations (official website and community invite).</li>
<li>Staff advisories now include a dedicated Monthly Dead Channels Report tip with a matching hero image for faster team alignment.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Fixed <code>/set_decay_score</code> being incorrectly premium-gated; manual decay corrections are now available on all tiers.</li>
<li>Fixed poll-choice rendering where multi-digit break-length emojis could collapse into one clickable option; break-length polls now use clean <code>1/2/3/?</code> choices.</li>
<li>Added <code>/config remove manual_kick_review_channel</code> and matching <code>/config show</code> reset guidance to close a configuration gap.</li>
<li>Fixed Auto-Kick display formatting in <code>/config show</code> so <code>/config toggle auto_kick</code> renders clearly.</li>
<li>Fixed a timing edge case where older activity events could overwrite newer ones.</li>
<li>Fixed a persistence edge case where last activity could move backward.</li>
<li>Fixed a race condition that could occasionally create unfair reward-role grace reminders.</li>
<li>Fixed a premium-alert issue that could block near-limit and limit-exceeded staff notifications.</li>
<li>Fixed a daily score-update edge case that could occasionally interrupt Activity Health Score persistence.</li>
<li>Fixed a startup edge case where newly detected servers could briefly miss background checks during database reconnection.</li>
<li>Fixed a setup-save edge case that could add unnecessary warning noise during onboarding and rejoin flows.</li>
<li>Fixed rare background save interruptions during temporary connection issues.</li>
<li>Fixed duplicate fallback handling that increased edge-case error risk.</li>
<li>Fixed the daily-check path so auto-provision remains off when auto-provision assets are disabled.</li>
<li>Fixed a cleanup warning edge case so provider-wide vote-dedupe entries no longer trigger false invalid-guild alerts.</li>
<li>Fixed a rare advisory-history save conflict so advisory delivery logs stay consistent.</li>
<li>Fixed tip reset consistency so admin tip-cap resets stay in sync during database migration checks.</li>
<li>Fixed premium entitlement cache persistence paths so migration-era background checks stay consistent.</li>
<li>Fixed a server-leave cleanup edge case so departed-server data is removed more reliably without unnecessary fallback runs.</li>
<li>Fixed a startup config-read edge case so temporary database reconnects no longer trigger noisy false error logs.</li>
<li>Fixed startup cleanup noise by ignoring temporary unavailable-guild remove events, so only real guild leaves trigger purge logs.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes – v2.14.4 – 31.01.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-14-4/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Sat, 31 Jan 2026 22:00:00 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.14.4</guid>
        <description><![CDATA[Supporter Program and clearer /vote status, plus smarter Top.gg reminders for admins.]]></description>
        <cb:headline><![CDATA[Supporter Program launches]]></cb:headline>
        <cb:labels><![CDATA[New|Improvements]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New</span></strong></p>
<ul class="wp-block-list">
<li>New Supporter Program: vote on Top.gg to unlock a 72h Supporter Role and help your server earn a next‑month tracking buffer.</li>
<li>New /vote command with clear personal + server progress details, plus quick links.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Admin and staff views now surface Supporter Program status and reminders at the right moments.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>None.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes – v2.14.3 – 27.01.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-14-3/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Tue, 27 Jan 2026 22:00:00 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.14.3</guid>
        <description><![CDATA[Auto-provisioning now only adds missing permissions, welcome DMs no longer duplicate, and staff channel visibility stays stable without extra permission churn.]]></description>
        <cb:headline><![CDATA[Permission provisioning stability pass]]></cb:headline>
        <cb:labels><![CDATA[Improvements|Fixes]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Auto-provisioning now only adds missing permissions instead of removing existing access.</li>
<li>Prevented duplicate welcome DMs from being sent to the same user.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Fixed cases where permission provisioning could remove permissions and flip between permission sets.</li>
<li>Staff-only channels now keep @everyone hidden without unnecessary extra permission changes.</li>
</ul>
]]></content:encoded>
    </item>
    <item>
        <title>📦 Release Notes – v2.14.2 – 24.01.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-14-2/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Sat, 24 Jan 2026 22:00:00 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.14.2</guid>
        <description><![CDATA[Command listings sync improvements, clearer tier/setup messaging, steadier activity tracking, and polling reliability fixes.]]></description>
        <cb:headline><![CDATA[Command syncs and stability polish]]></cb:headline>
        <cb:labels><![CDATA[New|Improvements|Fixes]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New</span></strong></p>
<ul class="wp-block-list">
<li>Command lists now sync to bot listings with a simpler update flow.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Less disruption when settings are changed rapidly.</li>
<li>Command imports now work better with third‑party bot lists.</li>
<li>Tier limit alerts now add quick actions to upgrade or compare plans, explain paused automations, and confirm that tracking continues.</li>
<li>Activity Health Score stays in full scoring mode unless resource guardrails trigger.</li>
<li>Setup reminder messages now include Support and Setup Guide buttons and are clearer, faster to act on, and more helpful.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Activity tracking is more resilient during busy periods, with fewer missed updates.</li>
<li>Staff advisory responses and buttons are more stable.</li>
<li>Polling now causes fewer rate limit spikes.</li>
<li>Command list formatting issues that could block bot list imports are fixed.</li>
<li>Webhook handling for disq.ink events is more robust.</li>
</ul>
]]></content:encoded>
    </item>
    <item>
        <title>📦 Release Notes – v2.14.1 – 19.01.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-14-1/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Mon, 19 Jan 2026 12:00:00 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.14.1</guid>
        <description><![CDATA[Cooldowns and guardrails now show exact end times, and internal error messages point to the support community.]]></description>
        <cb:headline><![CDATA[Clearer cooldown timestamps + support guidance]]></cb:headline>
        <cb:labels><![CDATA[Improvements]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Reduced ambiguity in rate‑limit notices by showing precise end times:
    <ul class="wp-block-list">
        <li>Cooldown messages now show exact end times for clearer transparency.</li>
        <li>Auto‑Kick confirmations and guardrail notices include localized timestamps.</li>
        <li>Vote Joker wait hints and Silent Kudos limits now show when you can try again.</li>
    </ul>
</li>
<li>"Internal error" message now points you to the support community for faster help.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Fixed an issue in RSS feed parsing in <code>/changelog</code>.</li>
</ul>
]]></content:encoded>
    </item>
    <item>
        <title>📦 Release Notes – v2.14.0 – 18.01.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-14-0/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Sun, 18 Jan 2026 13:51:39 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.14.0</guid>
        <description><![CDATA[Auto-Kick guardrails and config audit history.]]></description>
        <cb:headline><![CDATA[Auto-Kick guardrails + /config history]]></cb:headline>
        <cb:labels><![CDATA[Improvements|New]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">Improvements: Auto-Kick Guardrails</span></strong></p>
<ul class="wp-block-list">
<li>Preventive hardening to protect guilds from misuse, compromised admins, and accidental misconfiguration while keeping Auto-Kick transparent and predictable.</li>
<li>Most guardrails trigger when Auto-Kick is enabled or when inactivity/decay settings change while Auto-Kick is on.</li>
<li>Auto-Kick now enters a pending state on enable: a 24h cooldown, then a manual confirm. If nobody confirms, it expires after 7 days and stays off.</li>
<li>If impact can't be estimated (for example during cache rebuilding), Auto-Kick runs only in Safe Mode with tiny caps until impact is known.</li>
<li>Hard throughput caps (per run/hour/day) scale by server size. Hitting a cap pauses Auto-Kick and routes remaining cases to manual review.</li>
<li>Servers with 100+ managed members require two eligible admins for high-risk confirmations; single-admin fallback requires a delayed re-confirm.</li>
<li>Permissions are checked at action time (Owner/Admin/CleanerBot admin role). If someone loses eligibility mid-flow, another eligible admin must finish it.</li>
<li>Critical toggle spam is rate-limited, but staff still see blocked attempts with who/what/why and the remaining cooldown.</li>
</ul>

<p><strong><span style="text-decoration: underline;">New: Config History</span></strong></p>
<ul class="wp-block-list">
<li>New command: <code>/config history</code> shows recent config and Auto-Kick audit entries for quick review.</li>
</ul>
]]></content:encoded>
    </item>
    <item>
        <title>📦 Release Notes – v2.13.0 – 13.01.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-13-0/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Tue, 13 Jan 2026 12:00:00 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.13.0</guid>
        <description><![CDATA[Monthly Dead Channels Report & Category Whitelisting]]></description>
        <cb:headline><![CDATA[Monthly Dead Channels Report & Category Whitelisting]]></cb:headline>
        <cb:labels><![CDATA[New|Improvements]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New: Monthly Dead Channels Report</span></strong></p>
<ul class="wp-block-list">
<li>Monthly Dead Channels Report with a manual <code>/cohorts dead-channels</code> view for admins.</li>
<li>The monthly report is toggled ON by default, which can be toggled via <code>/config toggle dead_channels_report</code>.</li>
</ul>

<p><strong><span style="text-decoration: underline;">New: Category Whitelisting</span></strong></p>
<ul class="wp-block-list">
<li>Category whitelisting is now available, so you can exclude entire channel groups from activity checks.</li>
<li>New commands:</li>
<li><code>/config add whitelisted_category</code></li>
<li><code>/config remove whitelisted_category</code></li>
<li><code>/config clear whitelisted_categories</code></li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Help pages were reorganized for clearer command grouping and easier navigation (<code>/help</code>).</li>
</ul>
]]></content:encoded>
    </item>
    <item>
        <title>📦 Release Notes – v2.12.0 – 11.01.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-12-0/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Sun, 11 Jan 2026 12:00:00 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.12.0</guid>
        <description><![CDATA[Scheduled Event Reporting]]></description>
        <cb:headline><![CDATA[Scheduled Event Reporting]]></cb:headline>
        <cb:labels><![CDATA[New|Fixes]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New: Scheduled Event Reporting</span></strong></p>
<ul class="wp-block-list">
<li>Scheduled event reporting is now available, including list (<code>/event list</code>), report (<code>/event report</code>), and CSV export (<code>/event export</code>).</li>
<li>Event summaries can auto-post to staff channels when enabled.</li>
<li>New staff advisory that highlights the /event attendance insights and how to use them.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<p><strong>Inactivity DMs:</strong></p>
<ul class="wp-block-list">
<li>Inactivity DMs are clearer and more neutral, and every message names the server that triggered it.</li>
<li>A “Why?” button explains why you received the reminder and how to check your status.</li>
<li>You can now mute inactivity reminders for a specific server, either from the DM button or by using <code>/mute</code> in that server. You can unmute anytime with <code>/unmute</code>.</li>
<li>CleanerBot now recognizes server owners as trusted admins for protected commands. Access to configuration and setup tools now follows your configured CleanerBot admin role and server admin status, rather than Manage Server. Updated permission messages to reflect the new admin access rules.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Fixed a rare issue when sending a “quick poll”.</li>
</ul>
]]></content:encoded>
    </item>
    <item>
        <title>📦 Release Notes – v2.11.3 – 01.01.2026</title>
        <link>https://cleanerbot.eu/changelog/v2-11-3/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Thu, 01 Jan 2026 12:00:00 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.11.3</guid>
        <description><![CDATA[Quality improvements and resilience updates.]]></description>
        <cb:headline><![CDATA[]]></cb:headline>
        <cb:labels><![CDATA[]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Extended the managed member export <code>/export_decay_data</code> by user's system name (Pro/Scale only). Added a UX flow for large servers.</li>
<li>Optimized localizations for English, German, French, Portuguese, and Spanish.</li>
<li>Improved resilience when Discord has temporary API issues.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Made CTA buttons survive bot reboots where necessary; especially comments, advises, manual kick reviews, and Why? views.</li>
</ul>
]]></content:encoded>
    </item>
    <item>
        <title>📦 Release Notes – v2.11.2 – 19.12.2025</title>
        <link>https://cleanerbot.eu/changelog/v2-11-2/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Fri, 19 Dec 2025 12:00:00 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.11.2</guid>
        <description><![CDATA[Security and provisioning improvements.]]></description>
        <cb:headline><![CDATA[]]></cb:headline>
        <cb:labels><![CDATA[]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Permission provisioning now respects an extra per-channel buffer so the auto-provision flow avoids hammering the same channel in quick succession.</li>
<li>Security hardening update: protections against replayed webhook events, burst limits for external services, and stricter public sharing link generation with dedicated secrets.</li>
</ul>
]]></content:encoded>
    </item>
    <item>
        <title>📦 Release Notes – v2.11.1 – 18.12.2025</title>
        <link>https://cleanerbot.eu/changelog/v2-11-1/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Thu, 18 Dec 2025 12:00:00 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.11.1</guid>
        <description><![CDATA[Decay scan fixes and config display hardening.]]></description>
        <cb:headline><![CDATA[]]></cb:headline>
        <cb:labels><![CDATA[Fixes]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Decay scans now honor a 90% interval threshold so near-due periods are processed promptly without drifting past midnight, keeping scores from staying stale even when the previous write happened late.</li>
<li>Config display embeds again respect Discord’s length limits before sending, keeping the output reliable even when large sections of text are present.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Hardened the decay scoring loop so it never writes more than one interval’s worth of points at a time, preventing unexpected double-increments on the same day even if multiple scans fire close together.</li>
<li>Some minor fixes under the hood, not visible to end users.</li>
</ul>
]]></content:encoded>
    </item>
    <item>
        <title>📦 Release Notes – v2.11.0 – 15.12.2025</title>
        <link>https://cleanerbot.eu/changelog/v2-11-0/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Mon, 15 Dec 2025 20:48:58 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.11.0</guid>
        <description><![CDATA[Threshold DMs (Warning + Inactive)]]></description>
        <cb:headline><![CDATA[Threshold DMs (Warning + Inactive)]]></cb:headline>
        <cb:labels><![CDATA[New]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New Features</span></strong></p>

<p><strong><strong>Threshold DMs (Warning + Inactive)</strong></strong></p>

<ul class="wp-block-list">
<li>Members can get <strong>localized DMs</strong> when they cross your warning active threshold.</li>

<li>Sent <strong>once per threshold crossing</strong> (no repeats while they stay above).</li>

<li>Respects <strong>setup completion</strong>, <strong>“automations on hold”</strong>, and your <strong>DM toggles</strong>.</li>
</ul>

<ul class="wp-block-list">
<li><strong>Defaults</strong>
<ul class="wp-block-list">
<li><strong>Standard mode:</strong> ON</li>

<li><strong>Ghost mode:</strong> OFF (opt-in anytime)</li>
</ul>
</li>
</ul>

<ul class="wp-block-list">
<li><strong>Configure</strong>
<ul class="wp-block-list">
<li><code>/config toggle dm_warning</code></li>

<li><code>/config toggle dm_inactive</code></li>

<li><code>/config show</code></li>
</ul>
</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>

<ul class="wp-block-list">
<li>Poll command feedback is clearer (mode/disabled/perms/setup/content).</li>

<li>Announcement comments/threads now attach reliably before sending.</li>

<li>Fun polls: distinct emojis + fairer shuffle.</li>

<li>Advises rewritten; added Threshold DMs advise.</li>

<li>Performance: score calculation ~<strong>1h20 → 8m</strong>, reduction in log routine noise by <strong>-97 %</strong>, plus other optimizations.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Bugfixes</span></strong></p>

<ul class="wp-block-list">
<li>Manual kick snooze modal now replies once (no duplicate-response errors).</li>

<li>Fixed locale edge-case that broke onboarding/welcome DM localization.</li>

<li>“Why?” explainer now matches your decay interval + increment.</li>

<li>Onboarding wizard: expired interaction warning no longer throws an internal error.</li>

<li>Fixed an issue with manual kick-reviews re-appear each decay run when snoozed.</li>
</ul>
]]></content:encoded>
    </item>
    <item>
        <title>📦 Release Notes – v2.10.0 – 11.12.2025</title>
        <link>https://cleanerbot.eu/changelog/v2-10-0/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Thu, 11 Dec 2025 08:51:36 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.10.0</guid>
        <description><![CDATA[Manual Kick Review & Bulk User Prefetch]]></description>
        <cb:headline><![CDATA[Manual Kick Review & Bulk User Prefetch]]></cb:headline>
        <cb:labels><![CDATA[New|Improvements]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New Features</span></strong></p>

<p><strong>Manual Kick Review</strong></p>

<ul class="wp-block-list">
<li>Manual kick decisions now use clear states per member (<code>Pending</code>, <code>Snoozed</code>, <code>Exempt</code>) instead of hidden Decay Score resets, so you always see why someone is (not) being kicked.</li>

<li>When a member hits the kick threshold in manual mode, mods can choose <strong>Kick</strong>, <strong>Snooze for a while</strong>, or <strong>Exempt from future manual kicks</strong>, and CleanerBot updates the review message in-place with a short summary.</li>

<li>If a member becomes active again, their kick state is automatically cleared and they are treated like any other active member.</li>
</ul>

<p><strong>CleanerBot-Notification Comments</strong></p>

<ul class="wp-block-list">
<li>For public CleanerBot notifications (e.g. inactivity role assigned, highscore celebrations, members kicked, etc.) in the configured <code>warning_channel</code>, CleanerBot now offers a <strong>“ Comment”</strong> CTA button. Clicking this button opens or reuses a public thread attached to that notification message, so members can comment without cluttering the main channel.</li>
</ul>

<p><strong>New Bulk User Prefetch Command (Pro &amp; Scale Premium Tier)</strong></p>

<ul class="wp-block-list">
<li>Added a new premium slash command <code>/bulk_user_upload</code> that lets admins paste a comma-separated list of up to 250 user IDs to pre-register known members.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>

<ul class="wp-block-list">
<li>Inactive/default roles created by the wizard now get distinctive colors (light red for inactive, light green for default) for clarity.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Bugfixes</span></strong></p>

<ul class="wp-block-list">
<li>Auto-create admin role flow now advances properly after creation and assignment, preventing setup freezes.</li>

<li>Preset apply flow no longer stalls on permission warnings and continues smoothly to completion.</li>

<li>You can run /report_inactivity before onboarding finishes without the bot showing a spurious “role not found” error.</li>

<li>Advisory messages include the vote CTA text and button again, while leaderboard replies keep the CTA out of the embed body.</li>
</ul>
]]></content:encoded>
    </item>
    <item>
        <title>📦 Release Notes – v2.9.2 – 08.12.2025</title>
        <link>https://cleanerbot.eu/changelog/v2-9-2/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Thu, 11 Dec 2025 08:49:20 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.9.2</guid>
        <description><![CDATA[Notification and response stability fixes.]]></description>
        <cb:headline><![CDATA[]]></cb:headline>
        <cb:labels><![CDATA[]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>

<ul class="wp-block-list">
<li>Discord notifications sometimes show user IDs instead of names due to caching issues on user side, especially for users not frequently seen. That&#8217;s why we do not link the user&#8217;s profile anymore, but display user names as text.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Bugfixes</span></strong></p>

<ul class="wp-block-list">
<li>Prevented “thinking…” hangs by always replying after preset/config actions, even if server permissions are limited.</li>
</ul>

<p></p>
]]></content:encoded>
    </item>
    <item>
        <title>📦 Release Notes – v2.9.1 – 06.12.2025</title>
        <link>https://cleanerbot.eu/changelog/v2-9-1/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Sat, 06 Dec 2025 11:12:16 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.9.1</guid>
        <description><![CDATA[Setup wizard refinements and database optimizations.]]></description>
        <cb:headline><![CDATA[]]></cb:headline>
        <cb:labels><![CDATA[]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>

<ul class="wp-block-list">
<li>Setup Wizard: Improved Onboarding texts for better guidance.</li>

<li>Setup Wizard: Added a confirmation dialog, so the user is aware of auto-creation of roles and channels, if a preset has been chosen.</li>

<li>Overall database connection performance improvements, reducing load and hardware resource usage.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Bugfixes</span></strong></p>

<ul class="wp-block-list">
<li>Fixed &#8222;hang up&#8220; command execution.</li>
</ul>

<p></p>
]]></content:encoded>
    </item>
    <item>
        <title>📦 Release Notes – v2.9.0 – 03.12.2025</title>
        <link>https://cleanerbot.eu/changelog/v2-9-0/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Wed, 03 Dec 2025 21:03:57 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.9.0</guid>
        <description><![CDATA[Decay Seriousness & Lite-mode Tracking]]></description>
        <cb:headline><![CDATA[Decay Seriousness & Lite-mode Tracking]]></cb:headline>
        <cb:labels><![CDATA[New]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New Features</span></strong></p>

<p><strong>NEW : Decay Seriousness (tenure-based ramping)</strong></p>

<ul class="wp-block-list">
<li>You can now make decay ramp differently for <strong>new vs. loyal members</strong>, on top of existing boost roles:</li>

<li>This lets you protect long-term members a bit more, or treat very new joins more strictly, while still stacking with your existing boost roles.</li>
</ul>

<ul class="wp-block-list">
<li>Configure under <strong>/config → Decay settings</strong> using:
<ul class="wp-block-list">
<li><code>/config set seriousness_percent 0|10|20|30|40|50</code></li>

<li><code>/config set seriousness_newbies days:&lt;Y></code></li>

<li><code>/config set seriousness_loyals days:&lt;Z≥Y></code></li>
</ul>
</li>

<li>Members who joined:
<ul class="wp-block-list">
<li><strong>less than Y days ago</strong> decay slightly faster,</li>

<li><strong>between Y and Z days</strong> decay normally,</li>

<li><strong>more than Z days ago</strong> decay slightly slower (loyalty bonus).</li>
</ul>
</li>

<li>Defaults are <code>0/0/0</code>, so nothing changes until you explicitly turn it on.</li>
</ul>

<p><strong>NEW : lite-mode tracking &amp; admin failure notification</strong></p>

<ul class="wp-block-list">
<li><strong>Lite onboarding mode:</strong> Immediately after installation, CleanerBot starts ingesting activity, calculating decay scores, and serving read-only views (<code>/my_score</code>, <code>/user_score</code>, <code>/leaderboard</code>, <code>/decay_top10</code>, <code>/report_inactivity</code>, AHS), while warnings, inactive roles, removals, and public reposts remain disabled until setup is completed.</li>

<li><strong>Safer setup completion:</strong> When setup is completed, CleanerBot runs a dry-run against your warning/role/removal thresholds. If any members are already above a threshold, it opens a private <em>“pending automations”</em> grace window (confirm button or automatic activation after 3 decay intervals) instead of firing actions immediately.</li>

<li><strong>Admin contact &amp; alerts:</strong> A primary admin contact is stored and kept up to date and used as fallback target for private alerts when the staff channel is missing or forbidden; notifications never fall back to public channels.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Bugfixes</span></strong></p>

<ul class="wp-block-list">
<li>Fixed a TypeError in <code>/purge_channel</code> command.</li>
</ul>

<p></p>
]]></content:encoded>
    </item>
    <item>
        <title>📦 Release Notes – v2.8.2 – 28.11.2025</title>
        <link>https://cleanerbot.eu/changelog/v2-8-2/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Fri, 28 Nov 2025 11:18:50 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.8.2</guid>
        <description><![CDATA[Staff advisories and self-heal resilience updates.]]></description>
        <cb:headline><![CDATA[]]></cb:headline>
        <cb:labels><![CDATA[]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>

<ul class="wp-block-list">
<li>Added two new staff advisories: training mode tips and language/tone alignment guidance. Enhanced description and content of the existing ones for a better understanding.</li>

<li>Extended and rephrased CleanerBot&#8217;s Ethics Statements for a better understanding and to underline our commitment.</li>

<li>Self-heal skips entirely if CleanerBot lacks Manage Channels/Roles, avoiding unnecessary retries.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Bugfixes</span></strong></p>

<ul class="wp-block-list">
<li>Eliminated cases where preset-created staff channels could block CleanerBot from posting after setup: Preset setup now prioritizes granting bot and admin access before tightening channel visibility, preventing lockouts during auto-provision.</li>

<li>Prevented daily auto-provision (self-healing) from touching healthy servers without cause.</li>
</ul>
]]></content:encoded>
    </item>
    <item>
        <title>📦 Release Notes – v2.8.1 – 27.11.2025</title>
        <link>https://cleanerbot.eu/changelog/v2-8-1/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Fri, 28 Nov 2025 11:17:32 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.8.1</guid>
        <description><![CDATA[Welcome DM and quiz cleanup.]]></description>
        <cb:headline><![CDATA[]]></cb:headline>
        <cb:labels><![CDATA[]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New Features</span></strong></p>

<ul class="wp-block-list">
<li>CleanerBot now sends a welcome DM to the user who invited it to a server, including a short step-by-step guide to complete setup and make the bot fully functional.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>

<ul class="wp-block-list">
<li>Removing discordbotlist.com and discords.com from the quiz “joker” list due to their highly unstable webhook handling. They’re not reliable enough to support this feature.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Bugfixes</span></strong></p>

<ul class="wp-block-list">
<li>Stopped “Configuration Issues Automatically Repaired” messages from reappearing when permissions were already resolved.</li>

<li>Fixed polls/quizzes not working for Chinese language.</li>
</ul>

<p></p>
]]></content:encoded>
    </item>
    <item>
        <title>📦 Release Notes – v2.8.0 – 26.11.2025</title>
        <link>https://cleanerbot.eu/changelog/v2-8-0/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Wed, 26 Nov 2025 08:20:11 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.8.0</guid>
        <description><![CDATA[Self-healing & New Presets]]></description>
        <cb:headline><![CDATA[Self-healing & New Presets]]></cb:headline>
        <cb:labels><![CDATA[New]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New Features</span></strong></p>

<p><strong>New self-healing mechanism</strong> </p>

<ul class="wp-block-list">
<li>CleanerBot now includes self-heal: it re-applies preset channel/role overwrites, recreates missing preset assets, and restores the bot’s view/read access on channels where permissions were removed. Any repairs are posted in the staff channel to be fully transparent, and you’ll only get a warning if a fix isn’t possible or other permissions are still missing. </li>
</ul>

<p><strong>New configuration presets: Gaming / MMO / RP, Creator / Sub, Education / Bootcamp, SaaS, NGO / Volunteer</strong></p>

<ul class="wp-block-list">
<li>Added new segment-based setup presets in the <code>/start</code> wizard (Gaming / MMO / RP, Creator / Sub, Education / Bootcamp, SaaS, NGO / Volunteer), each with its own emoji label and tuned inactivity behaviour.</li>

<li>Introduced a preset preview step: after choosing a preset, admins see a detailed summary of decay, activity sources, polls, CTAs, streaks and reward roles, with clear Back/Continue options.</li>

<li>Added dedicated ghost-mode presets for SaaS and NGO servers that run fully in the background: no member-facing messages, while staff still get clean activity insights in staff-only channels.</li>

<li>Roles and channels for inactivity management (e.g. inactive role, activity hub, review channels) are automatically created or re-used with sensible defaults, so most servers can start with one click.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>

<ul class="wp-block-list">
<li>Onboarding: Smarter automation defaults: each preset now comes with pre-configured activity sources, thresholds, polls and streak logic tailored to the server type, reducing setup time and misconfigurations.</li>

<li>Reward roles are safer and clearer: roles can be assigned without always triggering public announcements, and ghost-style setups keep streak information confined to staff-only channels.</li>

<li>Tuned French translation here and there.</li>
</ul>

<p></p>
]]></content:encoded>
    </item>
    <item>
        <title>📦 Combined Release Notes – v2.7.2 + v2.7.3 – 26.11.2025</title>
        <link>https://cleanerbot.eu/changelog/v2-7-3/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Wed, 26 Nov 2025 08:17:17 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.7.3</guid>
        <description><![CDATA[Combined release notes for v2.7.2 + v2.7.3: Configurable inactivity role handling.]]></description>
        <cb:headline><![CDATA[Combined release notes for v2.7.2 + v2.7.3]]></cb:headline>
        <cb:labels><![CDATA[New|Fixes]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New</span></strong></p>

<ul class="wp-block-list">
<li><strong>Configurable inactivity role handling:</strong> We added a new Inactivity Role Handling setting that lets you choose how CleanerBot manages roles when members become inactive.</li>

<li><strong>Inactive/Default Swap (default):</strong> Keep all special roles and only swap between your Default Member Role(s) and the Inactive Member Role.</li>

<li><strong>Reset to Inactive Only:</strong> When members become inactive, remove all roles except @ everyone and the Inactive Member Role. When they become active again, only Default Member Role(s) are restored.</li>

<li>Exempt members are never modified by the inactivity engine in either mode. You can view and change this setting via <code>/config set inactivity_role_mode</code>.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>

<ul class="wp-block-list">
<li>Inactivity handling now respects exempt roles everywhere, including manual and automated removals.</li>

<li>Prevented confusing “inactive/default role missing” alerts for Ghost-mode guilds so staff no longer get warned about intentionally skipped roles.</li>
</ul>
]]></content:encoded>
    </item>
    <item>
        <title>📦 Release Notes – v2.7.1 – 19.11.2025</title>
        <link>https://cleanerbot.eu/changelog/v2-7-1/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Wed, 19 Nov 2025 12:00:42 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v2.7.1</guid>
        <description><![CDATA[Setup hardening and automation polish.]]></description>
        <cb:headline><![CDATA[Setup hardening and automation polish.]]></cb:headline>
        <cb:labels><![CDATA[Improvements|Fixes]]></cb:labels>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>

<ul class="wp-block-list">
<li>Setup wizard now locks down newly auto-created staff channels so only admins and CleanerBot see them, keeping sensitive automation steps private out of the box.</li>

<li>Ghost-mode onboarding now auto-cleans missing roles/channels so re-running <code>/start</code> feels smoother for returning guilds.</li>

<li>Wizard summaries keep the full completion text while still showing Ghost-mode “skipped by design” notes in a dedicated section.</li>

<li>Setup reminders now respect a 72-hour onboarding grace period so brand-new servers can finish configuring without nagging.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>

<ul class="wp-block-list">
<li>Fixed an issue where manual kick denial failed to close the confirmation view, causing it to reappear indefinitely.</li>

<li><code>/report_inactivity</code> embeds no longer retain the previous page’s height, keeping each page readable regardless of content length.</li>
</ul>
]]></content:encoded>
    </item>
</channel>
</rss>
