<?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://clnr.works/rss">

<channel>
    <title>CLNR Changelog</title>
    <atom:link href="https://clnr.works/rss.xml" rel="self" type="application/rss+xml" />
    <link>https://clnr.works/changelog/</link>
    <description>Release notes and admin-facing updates for CLNR.</description>
    <lastBuildDate>Fri, 24 Jul 2026 20:45:24 +0000</lastBuildDate>
    <language>en</language>
    <generator>CLNR Static RSS</generator>

    <item>
        <title>📦 Release Notes - v4.0.1 - 24.07.2026</title>
        <link>https://clnr.works/changelog/v4-0-1/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Fri, 24 Jul 2026 20:45:24 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v4.0.1</guid>
        <description><![CDATA[CLNR v4.0.1 adds scheduled policy check-ins, faster inactive-role recovery, clearer check-in setup, and smoother Border Challenge commands, travel, and country cards.]]></description>
        <cb:headline><![CDATA[Scheduled check-ins and smoother Border Challenge]]></cb:headline>
        <cb:labels><![CDATA[New|Improvements]]></cb:labels>
        <cb:indexSummary><![CDATA[
<ul class="wp-block-list">
<li><code>/checkin wizard</code> can now save recurring policy reminder check-ins every 30, 45, or 90 days.</li>
<li>Members who become active again can now lose the inactive role much sooner after their activity update succeeds.</li>
<li>Border Challenge commands, invalid-move feedback, sea routes, Country Info facts, and Challenge message cleanup are smoother.</li>
</ul>
]]></cb:indexSummary>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New</span></strong></p>
<ul class="wp-block-list">
<li><strong>Scheduled policy check-ins</strong>
<ul>
<li><code>/checkin wizard</code> can now save recurring policy reminder check-ins every 30, 45, or 90 days, making it easier to remind members about your community rules without reposting them manually.</li>
</ul>
</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Members who become active again can now lose the inactive role much sooner after their activity update succeeds.</li>
<li>"Staff action suggestion" buttons now acknowledge clicks faster and remain reliable after bot restarts.</li>
<li><strong>Community Check-Ins</strong>
<ul>
<li><code>/config show</code> and <code>/config status polls-checkins</code> now group Polls, Quizzes, scheduled Community Check-Ins, and scheduled policy check-ins into one admin status view.</li>
<li><code>/checkin wizard</code> is now easier to follow: manual check-ins focus on policy reminders and one-time Community Restart prompts, while recurring Community Check-Ins remain under <code>/polls</code>.</li>
<li>Scheduled Community Check-Ins now include an ephemeral preview during setup, with a simpler topic picker when multiple rotating topics are selected.</li>
</ul>
</li>
<li><strong>Border Challenge</strong>
<ul>
<li>Commands now live under <code>/border-challenge</code>, making the Challenge easier for members to discover.</li>
<li>Invalid moves now give lightweight <code>❌</code> feedback directly on the active country message instead of sending DMs.</li>
<li>Sea routes now prefer nearby coastal countries and gradually unlock longer journeys as members expand their collections.</li>
<li>Country cards can now display optional Country Info facts.</li>
<li>Retiring, restarting, stopping, or timing out a Challenge now preserves non-gameplay reactions on the message.</li>
</ul>
</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes - v4.0.0 - 20.07.2026</title>
        <link>https://clnr.works/changelog/v4-0-0/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Mon, 20 Jul 2026 18:42:36 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v4.0.0</guid>
        <description><![CDATA[CLNR v4.0.0 adds anonymous community check-ins, Border Challenge, dedicated kick summaries, member-friendly /about, and safer setup, permissions, reports, and shard-aware background work.]]></description>
        <cb:headline><![CDATA[Check-ins, Border Challenge, and safer admin workflows]]></cb:headline>
        <cb:labels><![CDATA[New|Improvements|Fixes]]></cb:labels>
        <cb:indexSummary><![CDATA[
<ul class="wp-block-list">
<li>Anonymous Community Participation and Community Restart check-ins give admins low-pressure aggregate feedback without member-level response data.</li>
<li>Border Challenge adds a cooperative country-border activity with hidden valid answers, private search help, collections, and clean round endings.</li>
<li>Dedicated kick-summary routing, member-friendly <code>/about</code>, safer setup checks, clearer permission alerts, and shard-aware background work make admin workflows more reliable.</li>
</ul>
]]></cb:indexSummary>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New</span></strong></p>
<ul class="wp-block-list">
<li><strong>Manual &amp; scheduled community check-ins</strong>
<ul>
<li><code>/checkin wizard</code> now starts with a clear purpose choice, so admins can keep the existing policy reminder flow or post lightweight Community Participation and Community Restart check-ins without mixing all templates into one long list.</li>
<li>The seven existing policy reminder templates keep their reaction-based acknowledgement flow, rules reference support, optional role mentions, optional deadline text, and current member-facing copy.</li>
<li>Community Participation and Community Restart check-ins use anonymous one-tap buttons, allow members to change their current choice, close after 24 hours, and show aggregate-only results after individual response rows are deleted.</li>
<li>Anonymous check-in answers are never shown as member-level data and never change Decay, AHS, review, cleanup, or moderation decisions, giving admins a low-pressure way to hear from quieter members.</li>
<li>Scheduled Community Check-Ins now live under <code>/polls_wizard</code> and <code>/polls</code>, with their own Check-Ins channel, Mood-first topic default, 3/5/7/14/30-day wizard cadence choices, and a clear rhythm summary that explains CLNR posts one rotating topic per cadence.</li>
<li>Scheduled check-ins rotate only the selected Participation, Mood, Energy, and Looking Ahead topics, use the same 24-hour anonymous lifecycle, skip Ghost Mode, and never fall back to the warning channel or another destination.</li>
<li>When a scheduled poll or quiz and a scheduled check-in are due on the same UTC day, CLNR posts only one community-content item and gives the check-in priority, so admins can run regular prompts without overposting.</li>
<li>Premium staff action suggestions turn aggregate signals into practical next steps in the Staff Notification Channel: CLNR can privately point teams toward a one-time Community Participation check-in, recurring Community Check-Ins, Check-In settings review, <code>/review coverage</code>, or <code>/review channels</code> when those workflows would help staff verify context before acting.</li>
<li>Staff action suggestion cards include the reason, suggested action, privacy note, 14-day pacing, <code>Not now</code>, and <code>Mute suggestions</code>, so Premium admins get timely guidance without member pressure, public noise, or fallback posting to the wrong channel.</li>
</ul>
</li>
<li><strong>Border Challenge community activity</strong>
<ul>
<li>Any member can now start a cooperative country-border challenge with <code>/border-challenge start</code>, while admins retain control over stopping or restarting it.</li>
<li>Members continue the journey by reacting with the flag of a country that shares a land border with the current country. CLNR keeps valid answers hidden, validates moves quietly, removes invalid country reactions, and gives rate-limited private tips for unavailable travel reactions without interrupting the Challenge.</li>
<li>A <code>🔎</code> country-search button lets members submit a country name, ISO code, flag, alias, or close typo through a modal; one clear match advances the Challenge, while ambiguous matches open a private country picker before CLNR validates the selected move.</li>
<li>A <code>Help</code> button privately repeats the Challenge rules, so members who join later can catch up without scrolling back to the first message.</li>
<li>Each successful move posts a clear current-country card, then retires the old active message into a compact Previous country card so the journey stays easy to follow without pinging members.</li>
<li>When no valid neighboring country remains, CLNR unlocks the ✈️ Travel Joker and starts a new Round from another playable country; hidden ✈️ and sea-only 🚢 reactions also help members pursue full collection coverage without revealing valid answers.</li>
<li>Members can use <code>/border-challenge search</code> to find a country flag, Discord flag search code, and ISO code without revealing valid neighboring answers.</li>
<li>Members can use <code>/border-challenge collection</code> and <code>/border-challenge missing</code> to post collection progress for themselves or another member with a member mention.</li>
<li>After 24 hours without a valid move, or when staff stop the Challenge, CLNR ends it with a clear closing message and a start-again command link when Discord supports it.</li>
<li>The Challenge includes localized instructions and does not use player scores, leaderboards, or stored move history.</li>
</ul>
</li>
<li><strong>Dedicated kick-summary channel</strong>
<ul>
<li>Admins can now send kick summaries to a dedicated private channel with <code>/config set kick_announcement_channel</code>.</li>
<li>CLNR safely falls back to the staff or warning channel when the dedicated channel is missing or unavailable.</li>
</ul>
</li>
<li><strong>Member-friendly <code>/about</code> command</strong>
<ul>
<li>Members can now use <code>/about</code> to learn what CLNR does, how its privacy-first activity tracking works, and which community features they may encounter.</li>
<li>It highlights fair inactivity management, explains that CLNR does not read message content, and brings together useful commands and official links in one compact view.</li>
<li>Commands and links are clickable, making <code>/about</code> a clear starting point for members who are new to CLNR.</li>
</ul>
</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li><strong>Safer poll setup</strong>
<ul>
<li><code>/polls toggle true</code> now checks whether the poll channel can use reactions before activation.</li>
<li>When admins enable polls, CLNR now ensures the required reaction activity setting is enabled so poll votes can count correctly.</li>
<li>Polls now check required permissions when admins enable them.</li>
<li>Closed regular poll messages now show the question before the final result, making non-quiz results easier to read.</li>
</ul>
</li>
<li><strong>Easier reward setup</strong>
<ul>
<li><code>/reward activity_rewards true</code> now enables the required streak tracking automatically.</li>
<li>CLNR now points admins to missing reward roles or disabled reaction activity when reward automation cannot work yet.</li>
<li>Reward-role wizards now reject roles CLNR cannot assign before the configuration is saved.</li>
</ul>
</li>
<li><strong>Stronger setup and permission guidance</strong>
<ul>
<li>Setup and configuration screens now block unusable role or channel choices before saving.</li>
<li>Permission guidance is clearer when a selected channel, role, or feature setup would fail later.</li>
<li>Setup preflight now checks configured default and reward roles only when those features actually use them, while treating decay boost roles as references.</li>
<li>Event auto-posts and auto-provisioning now check their required permissions when admins enable them.</li>
<li>Whitelist changes now warn admins when they hide CLNR delivery channels or all visible activity channels.</li>
</ul>
</li>
<li><strong>Clearer permission alerts</strong>
<ul>
<li>Manual review and Auto-Kick alerts now explain whether admins should check <code>Kick Members</code>, role hierarchy, server-owner targets, or a Discord-side refusal.</li>
<li>Inactive, default, and reward-role alerts now explain whether admins should check <code>Manage Roles</code>, managed roles, role hierarchy, or a Discord-side refusal.</li>
<li><code>/config validate</code> and <code>/config check_permissions</code> now surface configured role hierarchy and managed-role blockers before role automation fails at runtime.</li>
<li>Monthly review send failures caused by missing Discord access now record channel-permission guidance instead of leaving admins without a config warning.</li>
<li>Notification-thread permission alerts now point admins to thread permissions when auto-archive or expiry cleanup cannot modify comment threads.</li>
</ul>
</li>
<li><strong>Auto-Kick testing is less disruptive</strong>
<ul>
<li>Threshold and decay-rate tuning while Auto-Kick is off no longer triggers the critical-change cooldown.</li>
<li>Auto-Kick protections remain in place when Auto-Kick is enabled.</li>
</ul>
</li>
<li><strong>Reports and scheduled jobs now respect current settings more reliably</strong>
<ul>
<li><code>/report_inactivity clean=true</code> now excludes exempt-member context, keeping the clean view focused on actionable cleanup entries.</li>
<li>The full inactivity report still shows exemptions for audit context.</li>
<li>Scheduled monthly reviews and monthly champion jobs now refresh configuration before posting, so disabled or changed settings are respected at execution time.</li>
<li>Reward-role automation now refreshes reward settings before changing member roles, so mid-run config changes wait for the next evaluated pass.</li>
<li>Large manual-kick batches now split kicked-member summaries into multiple messages so Discord no longer rejects long cleanup summaries.</li>
</ul>
</li>
<li><strong>Clearer Free over-limit behavior</strong>
<ul>
<li><code>/checkpremium</code> can now show when CLNR is reducing background work for a Free server above the tracked-member limit.</li>
<li>Over-limit copy no longer promises indefinite background processing on Free.</li>
<li>Stored settings and supported admin checks remain available, while long-dormant over-limit Free servers may have nonessential cached activity data pruned.</li>
<li>CLNR no longer auto-leaves long-unconfigured or dormant over-limit Free servers. It keeps the server connection, prunes nonessential stored data on a limited rolling budget, and waits for admins to reactivate setup or upgrade.</li>
<li>Free servers above the Pro member limit now see Scale as the recommended upgrade tier in over-limit notices.</li>
</ul>
</li>
<li><strong>Safer background work across shard changes</strong>
<ul>
<li>Server name and member-count updates now stay on the owning shard, preventing duplicate or skipped metadata writes during multi-shard restarts.</li>
<li>Notification-thread maintenance now re-checks bot shard ownership before archiving, deleting, or sweeping legacy comment threads.</li>
<li>DM reminder delivery now re-checks shard ownership before sending.</li>
<li>Weekly leaderboard and inactivity report helpers now refuse to post from non-owning shard workers.</li>
<li>Cross-shard dormant cleanup now prunes routed data without requiring the bot to leave the server.</li>
<li>Improved backend startup stability and reduced noisy recovery logs during multi-shard restarts.</li>
</ul>
</li>
<li><strong>Smaller clarity and localization updates</strong>
<ul>
<li>Community Pulse public cards now keep the privacy note below the scene image for easier scanning.</li>
<li>Several admin and config messages now resolve through localization instead of showing raw key names, including the <code>/reset_all_decay_scores</code> progress state.</li>
<li>Czech inactivity warning text now reads more naturally.</li>
</ul>
</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Community Pulse setup now acknowledges Discord immediately before reposting the public scene, preventing false "application did not respond" notices during channel changes.</li>
<li><code>/config validate</code> no longer blocks setup completion when the optional CLNR admin role is not set.</li>
<li>Kick summaries now fall back to the effective warning channel before the staff channel when no dedicated kick-summary channel is set.</li>
<li>Ghost Mode staff-channel activity announcements now keep member mentions visible without pinging those members.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes - v3.9.0 - 06.07.2026</title>
        <link>https://clnr.works/changelog/v3-9-0/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Mon, 06 Jul 2026 16:22:13 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v3.9.0</guid>
        <description><![CDATA[CLNR v3.9.0 adds Community Pulse, weekly staff inactivity reports, easier check-in setup, more reliable large reports and exports, and calmer admin workflows.]]></description>
        <cb:headline><![CDATA[Community Pulse and calmer staff workflows]]></cb:headline>
        <cb:labels><![CDATA[New|Improvements|Fixes]]></cb:labels>
        <cb:indexSummary><![CDATA[
<ul class="wp-block-list">
<li>Community Pulse introduces <code>/pulse</code>, a privacy-safe Server Campfire or Revival Tree scene based on aggregate activity signals, with private previews for Free servers and public Premium updates.</li>
<li>Admins can enable a clean weekly staff inactivity report with <code>/config reports weekly_inactivity</code>, focused on members near or over action thresholds.</li>
<li><code>/checkin</code> is easier to set up with support for either a specific rules message link or a rules channel.</li>
<li>Large reports and exports are more reliable: <code>/leaderboard</code>, <code>/report_inactivity</code>, and <code>/export_decay_data</code> now handle bigger servers more gracefully.</li>
<li>Admin workflows are calmer and clearer, with improved localization, warmer <code>/notifications</code> wording, more consistent UI cues, and reduced Discord rate-limit pressure.</li>
</ul>
]]></cb:indexSummary>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New</span></strong></p>
<ul class="wp-block-list">
<li><strong>Community Pulse: Server Campfire and Revival Tree</strong>
<ul>
<li>Community Pulse adds <code>/pulse</code>, a privacy-safe visual activity scene that turns aggregate server signals into a <strong>Server Campfire</strong> or <strong>Revival Tree</strong> staff can understand at a glance.</li>
<li>Free servers can open a private preview based on the server’s current activity state.</li>
<li>Premium servers unlock staff details, theme controls, recurring public scene updates, and rare milestone moments.</li>
<li>Pulse uses aggregate AHS-backed activity signals only, never message content. Scene changes are smoothed so the visual state feels steady rather than jumpy.</li>
<li>Public Pulse cards explain the scene, suggested next step, and aggregate-only privacy promise clearly for first-time viewers.</li>
<li>Premium public Pulse updates post as fresh messages, helping members notice weekly Campfire or Revival Tree changes in the server timeline.</li>
<li>Use <code>/pulse setup</code> to configure Pulse and <code>/pulse view</code> to view it once enabled.</li>
</ul>
</li>
<li><strong>Weekly staff inactivity report</strong>
<ul>
<li>Admins can now enable <code>/config reports weekly_inactivity</code> to post a clean Monday inactivity report to the staff channel.</li>
<li>The report focuses on members near or over action thresholds, keeping the weekly staff view useful without becoming noisy.</li>
</ul>
</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li><code>/checkin</code> can now point members to either a specific rules message link or a rules channel, making reaction check-ins easier to set up when rules live in a dedicated channel.</li>
<li><code>/export_decay_data</code> now uses stored CLNR member metadata first, reducing Discord member lookups and making large exports faster and gentler on rate limits.</li>
<li>CLNR now spreads large free-server inactivity scans across the day, reducing once-daily load spikes while keeping those servers checked on the same cadence.</li>
<li>Toggle settings moved to <code>/toggle ...</code>, reducing <code>/config</code> command size so new config subcommands resolve more reliably.</li>
<li>Member-data cleanup now skips servers CLNR has already left, avoiding noisy follow-up errors after normal server removal cleanup.</li>
<li>Several admin and config messages now resolve through localization instead of showing raw key names, including the <code>/reset_all_decay_scores</code> progress state.</li>
<li>Personal <code>/notifications</code> DMs now use warmer, clearer wording for quiet activity nudges and monthly recaps, including privacy notes and lower-is-better decay score explanations.</li>
<li>Several admin UI flows now have clearer layouts and more consistent button cues:
<ul>
<li>Sensitive setup and confirmation flows are easier to scan.</li>
<li>Member reset confirmations, purge and bulk-upload cancellation, kick-exemption removal, manual kick pre-DM choices, reward-member pagination, and poll/reward setup screens now use clearer interaction states.</li>
<li>Primary actions, back/next navigation, skip actions, close actions, and destructive choices now have more consistent visual cues.</li>
<li>Newly added admin-facing button labels and select placeholders are localized through CLNR’s normal language system.</li>
<li>These UI updates keep the existing command behavior, permission checks, owner-only guards, and safety confirmations unchanged.</li>
</ul>
</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Manual kick review recovery after restarts now avoids bulk member lookups, reducing Discord rate-limit pressure so review buttons come back more reliably.</li>
<li><code>/leaderboard</code> now keeps large activity streak rankings interactive with pagination instead of switching to a text-file attachment just because the ranking has many pages.</li>
<li><code>/report_inactivity</code> now paginates full large sections instead of cropping the first page with an omitted-member count.</li>
<li><code>/export_decay_data</code> now explains that the CSV contains the member activity data stored by CLNR, avoiding misleading “0 members” wording.</li>
<li><code>/export_decay_data</code> now keeps cached decay rows in the CSV when Discord member lookups are unavailable, so large exports do not collapse to an empty member list.</li>
<li><code>/export_decay_data</code> now includes every eligible member row in each export batch instead of only writing the last eligible row from a batch.</li>
<li>Manual kick review snooze prompts now recover after invalid durations and close cleanly after a successful snooze.</li>
<li>Kick-exemption and help paginator buttons now stay clickable when Discord validates Components V2 layouts.</li>
<li>Manual kick review <strong>Apply to all</strong> prompts now work reliably on Discord interaction objects that reject temporary runtime attributes.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes - v3.8.0 - 23.06.2026</title>
        <link>https://clnr.works/changelog/v3-8-0/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Tue, 23 Jun 2026 20:27:46 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v3.8.0</guid>
        <description><![CDATA[CLNR v3.8.0 adds safer one-member activity resets, lightweight reaction check-ins, and more consistent whitelisted-category handling across tracking and reviews.]]></description>
        <cb:headline><![CDATA[Member resets, check-ins, and cleaner whitelists]]></cb:headline>
        <cb:labels><![CDATA[New|Improvements|Fixes]]></cb:labels>
        <cb:indexSummary><![CDATA[
<ul class="wp-block-list">
<li><code>/reset_member_activity</code> lets admins reset one human member’s CLNR activity state without kicking them or changing their Discord roles.</li>
<li><code>/checkin</code> lets admins post a lightweight activity or policy reminder that members can acknowledge with reactions.</li>
<li>Whitelisted categories now apply more consistently across activity tracking, channel reviews, and quiet-channel reporting.</li>
</ul>
]]></cb:indexSummary>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New</span></strong></p>
<ul class="wp-block-list">
<li><code>/reset_member_activity</code>: Give one member a confirmed CLNR activity fresh start.
<ul>
<li>Admins can now reset a single human member’s CLNR activity and decay state when old streak or inactivity data no longer reflects the current situation.</li>
<li>The reset clears that member’s decay score, current streak, best streak, streak grace state, decay history, and monthly streak counters.</li>
<li>The member stays in the server. CLNR keeps their Discord roles, kick exemptions, notification preferences, tips, kudos, and AHS history.</li>
<li>After the reset, CLNR refreshes activity reward-role eligibility, so managed reward roles may be removed if the member no longer qualifies.</li>
</ul>
</li>
<li><code>/checkin</code>: Post lightweight server check-ins with reaction responses.
<ul>
<li>Admins can now use an ephemeral wizard to post a structured, member-safe activity or policy reminder.</li>
<li>Members can respond by clicking one of the 1–3 reactions CLNR adds to the post.</li>
<li>Admins can choose a template, target channel, optional role mentions, check-in emojis, optional deadline text, and an optional Discord rules or policy message link.</li>
<li>The published message includes clear review instructions and an admin-on-behalf-of-staff footer.</li>
<li>The member-facing message and admin preview use a structured card layout, with role mentions kept outside the card and the staff attribution shown clearly at the bottom.</li>
<li>Check-ins use CLNR’s normal reaction activity flow instead of creating a separate attendance or check-in tracking system.</li>
<li>Publishing is blocked unless reactions count as activity, CLNR has the needed channel permissions, the target channel is included in activity tracking, and any linked policy message resolves inside the same server.</li>
<li>Deadline text is informational only. It does not trigger reminders, closing, reports, penalties, or scoring changes by itself.</li>
<li>Staff advisories may recommend <code>/checkin</code> when tracked-member coverage is low and reactions are available as an activity source.</li>
</ul>
</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li><code>/reset_all_decay_scores</code> now has a clearer confirmation card explaining that it only resets current decay scores while keeping member records, streaks, exemptions, and activity history.</li>
<li><code>/config show</code> now explains staff-only warning routing more clearly, including how warning-channel announcements, DMs, reports, and individual announcement settings interact. It also avoids listing channels separately when they are already covered by a whitelisted category.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Whitelisted categories now apply consistently to <code>/review channels</code>, monthly quiet-channel reports, active-channel context, and saved channel rollups.</li>
<li>New activity signals now respect whitelisted categories across messages, interactions, typing, reactions, threads, and voice activity.</li>
<li>Thread activity now respects the category of its parent channel, so threads under whitelisted categories stay out of tracking.</li>
<li>Whitelisted channel and category handling now uses Discord category IDs consistently, preventing channels under whitelisted categories from appearing as quiet-channel candidates.</li>
<li>App-command cache refresh now backs off during temporary Discord DNS or connection failures, reducing noisy error logs while keeping the previous command snapshot available.</li>
<li><code>/reset_all_decay_scores</code> now uses localized button labels.</li>
<li><code>/reset_member_activity</code> now refreshes the activity streak leaderboard immediately, so reset members no longer remain visible there with stale streak data.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes - v3.7.0 - 19.06.2026</title>
        <link>https://clnr.works/changelog/v3-7-0/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Fri, 19 Jun 2026 16:00:00 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v3.7.0</guid>
        <description><![CDATA[CLNR v3.7.0 adds personal `/notifications`, keeps inactive-role and reward-role announcements quieter, and gives yearly anniversary summaries clearer community impact wording.]]></description>
        <cb:headline><![CDATA[Personal notifications and quieter announcements]]></cb:headline>
        <cb:labels><![CDATA[New|Improvements]]></cb:labels>
        <cb:indexSummary><![CDATA[
<ul class="wp-block-list">
<li>Members can now use <code>/notifications</code> to manage personal CLNR DM reminders for each server.</li>
<li>Inactive-role and reward-role announcements now show plain role names instead of Discord role mentions, so role references stay quiet.</li>
<li>Yearly anniversary summaries now use clearer community impact wording around fair cleanup, engagement wins, privacy, and Activity Health Score readiness.</li>
</ul>
]]></cb:indexSummary>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New</span></strong></p>
<ul class="wp-block-list">
<li>Members can now use <code>/notifications</code> to manage personal CLNR DM reminders for each server.
<ul>
<li><strong>Activity Check-in</strong> can send an earlier private heads-up before a member reaches the warning threshold.</li>
<li><strong>Monthly Personal Summary</strong> can send a private monthly snapshot with active days, best streak, current decay score, and status.</li>
<li>Members stay in control of their own personal reminders per server.</li>
<li>Server admins can enable or disable whether members may use these personal reminders from <code>/notifications</code>.</li>
<li>Standard mode allows personal reminders by default, while Ghost mode starts with them disabled for a quieter staff-only setup.</li>
<li>If Discord blocks a personal DM, CLNR shows that state in <code>/notifications</code> and pauses future personal reminder DMs until the member enables them again.</li>
</ul>
</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Inactive-role and reward-role announcements now show plain role names instead of Discord role mentions, so role references stay quiet and do not accidentally ping role holders.</li>
<li>Yearly anniversary summaries now read more like a concise community impact moment, with clearer wording around fair cleanup, engagement wins, privacy, and Activity Health Score readiness.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes - v3.6.0 - 14.06.2026</title>
        <link>https://clnr.works/changelog/v3-6-0/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Sun, 14 Jun 2026 07:20:01 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v3.6.0</guid>
        <description><![CDATA[CLNR v3.6.0 adds guild-level Auto-Kick compatibility limits and weekly activity leaderboard posts, with clearer bulk uploads, manual kick reviews, kick summaries, purge controls, and announcement diagnostics.]]></description>
        <cb:headline><![CDATA[Auto-Kick compatibility limits and weekly leaderboards]]></cb:headline>
        <cb:labels><![CDATA[New|Improvements|Fixes]]></cb:labels>
        <cb:indexSummary><![CDATA[
<ul class="wp-block-list">
<li>Admins can now lower Auto-Kick throughput per run, UTC hour, and UTC day with <code>/config set auto_kick_daily_limit</code>.</li>
<li>CLNR can now post the current activity streak leaderboard to the warning channel every Monday.</li>
<li>Bulk uploads, manual kick reviews, kick summaries, purge controls, and announcement diagnostics are clearer and more resilient.</li>
</ul>
]]></cb:indexSummary>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New</span></strong></p>
<ul class="wp-block-list">
<li>CLNR can now post the current activity streak leaderboard to the warning channel every Monday.
<ul>
<li>The weekly leaderboard is enabled by default per server and can be turned off or back on with <code>/toggle weekly_leaderboard</code>.</li>
<li>It is meant as a lightweight recognition post, adds cheering reactions, and does not trigger cleanup actions.</li>
</ul>
</li>
<li>Admins can now lower Auto-Kick throughput for compatibility with security or anti-raid bots using <code>/config set auto_kick_daily_limit</code>.
<ul>
<li>Despite the command name, the configured value applies to each Auto-Kick run, each UTC hour, and each UTC day.</li>
<li>CLNR always uses the lower value between the configured limit and the built-in safety guardrails, so this setting can slow Auto-Kick down but never raise CLNR’s safety caps.</li>
<li><code>/config show</code> now displays both the configured compatibility limit and the effective per-run, hourly, and daily limits.</li>
</ul>
</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Kick summaries now show each removed member’s inactivity duration in days instead of only showing the raw Decay Score, making cleanup summaries easier to understand.</li>
<li>Manual kick reviews now notify staff when CLNR cannot send a refreshed review message because it no longer has access to the review channel.</li>
<li>Announcement reactions are now more resilient, with clearer diagnostics when Discord rejects a reaction so admins can identify missing or unavailable emojis faster.</li>
<li>Active channel purges now keep a channel-visible cancel button available and report progress after 25, 50, and every additional 50 deleted messages.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Fixed Auto-Kick cap overflow handling so members who cannot be removed within the current automatic capacity stay pending for manual review.</li>
<li>Fixed bulk CSV uploads from member export tools when long role-name or role-ID metadata is included alongside a valid user ID column.</li>
<li>Fixed bulk upload safety notices so they show the exact CSV validation limit that was hit.</li>
<li>Fixed bulk upload safety wording so a rejected file is not treated as evidence of an attack by itself.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes - v3.5.0 - 07.06.2026</title>
        <link>https://clnr.works/changelog/v3-5-0/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Sun, 07 Jun 2026 19:43:19 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v3.5.0</guid>
        <description><![CDATA[CLNR v3.5.0 adds admin control over `Why?` explainer buttons, improves Staff Reviews and DiscordThings vote support, and fixes exemption, score, and warning-channel edge cases.]]></description>
        <cb:headline><![CDATA[Why button control and cleaner reviews]]></cb:headline>
        <cb:labels><![CDATA[New|Improvements|Fixes]]></cb:labels>
        <cb:indexSummary><![CDATA[
<ul class="wp-block-list">
<li>Admins can now choose whether new announcement posts include <code>Why?</code> explainer buttons with <code>/toggle why_buttons</code>.</li>
<li><code>/review impact</code>, monthly Staff Reviews, and DiscordThings vote handling now give admins clearer follow-up paths and broader vote support.</li>
<li>Fixes improve exempt-role reporting, <code>/score</code> threshold checks, manual kick confirmations, and reliability during temporary Discord or database interruptions.</li>
</ul>
]]></cb:indexSummary>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New</span></strong></p>
<ul class="wp-block-list">
<li>Admins can now choose whether new announcement posts include <code>Why?</code> explainer buttons with <code>/toggle why_buttons</code>.
<ul>
<li>This gives staff more control over how much context appears on member-facing announcements.</li>
<li>Score explanations and admin review details remain available through the relevant commands.</li>
</ul>
</li>
<li>DiscordThings votes can now count toward Vote Joker flows, giving communities another supported voting path.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li><code>/config show</code> now lists the <code>Why?</code> explainer button setting alongside other announcement controls, so admins can review their visibility setup in one place.</li>
<li><code>/review impact</code> now includes an Invite CLNR link for admins who manage another server.</li>
<li>The decay scanner now persists refreshed role snapshots when a live member lookup confirms an exempt member, keeping inactivity reports aligned with current role exemptions.</li>
<li>Full monthly Staff Reviews now include a follow-up action card with command mentions for <code>/review impact</code>, <code>/review cleanup</code>, and <code>/review channels</code>.</li>
<li>One-time Full Review reports are now saved to review history after successful scheduled delivery when history storage is available.</li>
<li><code>/user_score</code> now uses admin-specific score wording and correctly references the viewed member, so admin views no longer reuse the personal "Your current score" copy from <code>/my_score</code>.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Fixed manual kick review confirmations so the ethics statement no longer appears in the warning channel.</li>
<li>Fixed seeded role-exempt members with missing cached display names so they now appear in <code>/report_inactivity</code> using their user ID instead of being skipped.</li>
<li>Fixed stale exempt-role cache handling so newly exempt members and no-longer-exempt members are reclassified during periodic scanner refreshes instead of remaining stuck on an old role snapshot.</li>
<li>Fixed <code>/score</code> so it no longer shows "not enough activity" when the live activity counts already meet the minimum requirements.</li>
<li>Improved reliability for activity CTA acknowledgements, shutdown-time DM queue checks, monthly reviews, and reaction activity handling during temporary Discord, database, or shard-routing interruptions.</li>
<li>Fixed purge jobs so they finish cleanly when CLNR loses access to the update channel.</li>
<li>Fixed stale report resend buttons so old clicks no longer create unnecessary error noise.</li>
<li>Fixed setup reminders so they show readable setup issue names instead of raw localization keys.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes - v3.4.0 - 31.05.2026</title>
        <link>https://clnr.works/changelog/v3-4-0/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Sun, 31 May 2026 16:57:12 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v3.4.0</guid>
        <description><![CDATA[CLNR v3.4.0 adds seasonal decay amnesty windows and keeps long `/bulk_user_upload` CSV runs on one persistent progress message.]]></description>
        <cb:headline><![CDATA[Amnesty windows and steadier bulk uploads]]></cb:headline>
        <cb:labels><![CDATA[New|Improvements|Fixes]]></cb:labels>
        <cb:indexSummary><![CDATA[
<ul class="wp-block-list">
<li>Admins can now set a seasonal decay amnesty window with <code>/config set amnesty_window</code>.</li>
<li>Long <code>/bulk_user_upload</code> CSV runs now keep progress and final results on one persistent channel message.</li>
</ul>
]]></cb:indexSummary>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New</span></strong></p>
<ul class="wp-block-list">
<li>Admins can now set a seasonal decay amnesty window with <code>/config set amnesty_window</code>.
<ul>
<li>During the selected local date range, CLNR pauses new decay score increases.</li>
<li>Member activity still reduces or resets decay scores as usual.</li>
<li>CLNR also advances its decay check timing during the window, so scores do not jump upward in bulk after holidays, exam breaks, conventions, or planned community downtime.</li>
<li>Members who were already above warning, inactive-role, or kick thresholds may still be processed according to the server’s existing settings.</li>
<li>Remove the window anytime with <code>/config remove amnesty_window</code>.</li>
</ul>
</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li>Long <code>/bulk_user_upload</code> CSV runs now keep progress and final results on one persistent channel message. This makes large roster imports easier to follow and avoids Discord interaction expiry during longer uploads.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Fixed reward grace DMs so their <code>Why?</code> response now uses the standard card layout, includes the configured ethics note, and gives clearer <code>/mute</code> and <code>/unmute</code> guidance when a DM fallback response is needed.</li>
<li>Fixed one-time Full Review pack handling after missed Discord entitlement updates. When the buyer clearly maps to exactly one CLNR server, CLNR can now reconcile the purchase and assign the credit automatically.</li>
<li>Fixed already-owned Full Review credits so they remain usable for automatic monthly reports after Pro or Scale ends.</li>
<li>Minor stability improvements.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes - v3.3.0 - 24.05.2026</title>
        <link>https://clnr.works/changelog/v3-3-0/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Sun, 24 May 2026 20:46:30 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v3.3.0</guid>
        <description><![CDATA[CLNR v3.3.0 adds one-time Full Review packs for eligible Free servers, Ghost member post controls, and clearer monthly review previews.]]></description>
        <cb:headline><![CDATA[Full Review packs and quieter Ghost mode controls]]></cb:headline>
        <cb:labels><![CDATA[New|Improvements|Fixes]]></cb:labels>
        <cb:indexSummary><![CDATA[
<ul class="wp-block-list">
<li><code>/bulk_user_upload</code> now asks whether to apply configured restore/swap roles to newly seeded members during roster setup.</li>
<li><code>/toggle ghost_member_posts</code> lets Ghost mode servers suppress member-related announcement posts while cleanup, reports, and support keep running.</li>
<li>Free servers below the tracked-member limit can now use one-time Full Review packs to unlock automatic monthly Staff Reviews without the need to subscribe.</li>
</ul>
]]></cb:indexSummary>
        <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 asks whether to apply configured restore/swap roles to newly seeded members during roster setup.</li>
<li><code>/toggle ghost_member_posts</code> lets Ghost mode servers suppress member-related announcement posts while cleanup, reports, and support keep running.</li>
<li>Free servers below the tracked-member limit can now use one-time Full Review packs to unlock automatic monthly Staff Reviews without the need to subscribe.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li><code>/config show</code> now displays whether Ghost member posts are disabled so admins can verify silent-mode behavior quickly.</li>
<li>Monthly Staff Review previews now explain the next-month Full Review option and keep one-time packs separate from Premium commands, exports, history, and member limits.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Fixed <code>/review channels</code> active member counts so repeated daily activity by the same users is no longer over-counted.</li>
<li>Fixed an AHS scoring edge case that could temporarily show active communities as <code>50 POOR</code> with artificial score drops during daily recalculation.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes - v3.2.0 - 20.05.2026</title>
        <link>https://clnr.works/changelog/v3-2-0/</link>
        <dc:creator><![CDATA[bjoerrn]]></dc:creator>
        <pubDate>Wed, 20 May 2026 17:42:39 +0000</pubDate>
        <category><![CDATA[Changelog]]></category>
        <guid isPermaLink="false">cleanerbot:release:v3.2.0</guid>
        <description><![CDATA[CLNR v3.2.0 adds rolling Premium Staff Review history, member-targeted purge cleanup, clearer review trend context, direct Premium plan links, over-limit recovery signals, and focused fixes for review policy context and CSV parsing.]]></description>
        <cb:headline><![CDATA[Review History and Safer Cleanup Tools]]></cb:headline>
        <cb:labels><![CDATA[New|Improvements|Fixes]]></cb:labels>
        <cb:indexSummary><![CDATA[
<ul class="wp-block-list">
<li><code>/review history</code> adds rolling Premium Staff Review history for saved and staff-posted reviews.</li>
<li><code>/purge_channel</code> can now target one selected member or a departed user's Discord ID.</li>
<li>Review cards now provide clearer trend context, guidance, Premium plan links, and over-limit recovery signals.</li>
</ul>
]]></cb:indexSummary>
        <content:encoded><![CDATA[
<p><strong><span style="text-decoration: underline;">New</span></strong></p>
<ul class="wp-block-list">
<li><code>/review history</code> adds rolling Premium Staff Review history for scheduled reviews, deliberately saved previews, and reviews posted to the staff channel.</li>
<li><code>/purge_channel</code> can now target one selected member or a departed user's Discord ID, so admins can clean up one user's messages without clearing the whole channel.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Improvements</span></strong></p>
<ul class="wp-block-list">
<li><code>/review</code> cards now show clearer staff guidance, including listed quiet-channel candidates, active-channel comparison, recovery rates, current cleanup settings, retention summaries, engagement depth, and cleaner recommended-action wording.</li>
<li><code>/review history</code>, <code>/review channels</code>, <code>/review coverage</code>, and <code>/review engagement</code> now turn saved aggregate rollups into readable trend context, including clear guidance when one more saved period is needed and deterministic next steps for declining trends.</li>
<li>Free <code>/score</code> cards can now preview whether the current 7-day AHS trend is positive, negative, or steady before Premium unlocks retained Staff Review history.</li>
<li>The temporary <code>/summary</code>, <code>/cohorts</code>, and <code>/analytics cohort_report</code> migration commands have been removed now that <code>/review</code> is the Staff Review home.</li>
<li><code>/premium</code>, <code>/guildtiers</code>, and over-limit upgrade cards now link directly to the new Premium plan comparison page so admins can understand limits, Reviews, exports, and upgrade options before subscribing.</li>
<li>Over-limit reminders can now show a server's historical recovery signal when enough prior cleanup data exists, making the upgrade prompt clearer for staff.</li>
<li>Free over-limit servers now follow one clear rule: stored tracking data and supported admin checks remain available, while automated messages and actions pause until the server is back within its tier limit. Unmanaged over-limit Free servers may also have background work reduced.</li>
</ul>

<p><strong><span style="text-decoration: underline;">Fixes</span></strong></p>
<ul class="wp-block-list">
<li>Fixed <code>/review cleanup</code> so it now reads the live Auto-Kick configuration correctly when showing current policy context.</li>
<li>Fixed a rare CSV parsing issue in <code>/bulk_user_upload</code>.</li>
</ul>
]]></content:encoded>
    </item>

    <item>
        <title>📦 Release Notes - v3.1.0 - 15.05.2026</title>
        <link>https://clnr.works/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[CLNR 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 CLNR'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 CLNR 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 CLNR, 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://clnr.works/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[CLNR 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 CLNR issues. This makes it easier to tell when slow or failed responses are caused by Discord itself rather than your server setup or CLNR.</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 CLNR 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, CLNR 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 CLNR.</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 CLNR 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://clnr.works/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[CLNR 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 CLNR started collecting summary data.</li>
<li>CLNR 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>/toggle monthly_summary</code>.</li>
<li>CLNR 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, CLNR 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 CLNR'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. CLNR 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, CLNR 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 CLNR 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://clnr.works/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[CLNR 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>CLNR 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>CLNR 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: CLNR 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://clnr.works/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[CLNR 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://clnr.works/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[CLNR 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. CLNR 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://clnr.works/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[CLNR 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 CLNR 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 CLNR status channel.</li>
<li>New <code>/config share</code> command lets admins generate a share-safe CLNR 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 CLNR 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://clnr.works/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>CLNR 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://clnr.works/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://clnr.works/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>/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>CLNR 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://clnr.works/features/bulk-upload/">https://clnr.works/features/bulk-upload/</a>.</li>
<li>Internal reliability improvement: CLNR 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://clnr.works/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 CLNR 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>CLNR 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://clnr.works/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 CLNR 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 CLNR'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://clnr.works/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 CLNR 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://clnr.works/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>/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://clnr.works/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://clnr.works/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>CLNR 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>CLNR 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://clnr.works/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://clnr.works/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; CLNR 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://clnr.works/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>CLNR 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>clnr.works</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, CLNR 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://clnr.works/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>/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 CLNR 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://clnr.works/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://clnr.works/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 CLNR details faster (legal, security, and identity): https://clnr.works/trust/</li>
<li>New <code>/status/</code> page gives admins a live overview of bot, database, and webhook availability: https://clnr.works/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://clnr.works/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>CLNR 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>/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://clnr.works/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://clnr.works/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://clnr.works/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://clnr.works/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://clnr.works/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/CLNR 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://clnr.works/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>/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://clnr.works/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>CLNR now recognizes server owners as trusted admins for protected commands. Access to configuration and setup tools now follows your configured CLNR 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://clnr.works/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://clnr.works/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://clnr.works/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://clnr.works/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>/toggle dm_warning</code></li>

<li><code>/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://clnr.works/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 CLNR 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>CLNR-Notification Comments</strong></p>

<ul class="wp-block-list">
<li>For public CLNR notifications (e.g. inactivity role assigned, highscore celebrations, members kicked, etc.) in the configured <code>warning_channel</code>, CLNR 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://clnr.works/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://clnr.works/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://clnr.works/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, CLNR 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, CLNR 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://clnr.works/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 CLNR&#8217;s Ethics Statements for a better understanding and to underline our commitment.</li>

<li>Self-heal skips entirely if CLNR 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 CLNR 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://clnr.works/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>CLNR 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://clnr.works/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>CLNR 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://clnr.works/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 CLNR 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://clnr.works/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 CLNR 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>
