Repository navigation
Conversation
…covery (#1389) * Bridge: look up same-name Discord member avatars via member search Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * Comment out IRC placeholders in .env.example so they don't override defaults Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * Privacy compliance for Discord intent review, bridge channel discovery, test coverage Privacy and data minimisation: - Remove the guild-to-guild bridge (command, utils, tests) - Add /privacy bridge to opt out of IRC relaying (users.irc_bridge_opt_out) - Add 6-month inactivity purge and 90-day command-parameter pruning - Track users.last_seen_at so retention is based on real activity - Only create user rows for the TripSit guild; strip stored command option values - Drop user_tickets.description; clear saved roles after ticket restore - Stop logging message content, AI prompts and command option values - Log the user ID instead of the username in command context - Remove Sentry/GlitchTip and Rollbar; errors go to the Discord channel only Also includes bridge channel auto-discovery and the broader Vitest coverage work. Three new migrations must be applied before deploying: 20261112120000, 20261112120100, 20261112130000 (the last deletes data). Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * Keep moderation actions for 2 years instead of deleting them with the user purge - purgeInactiveUsers no longer deletes moderation actions; it only scrubs personal data - New pruneModerationActions deletes actions older than 2 years (from the action date), keeping full bans, ban evasion and every action of a currently banned user - Runs daily with the retention timer; /privacy delete wording updated - Restore the privacy tests lost in the uat merge (opt-out, purge, prune, /privacy bridge) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * Cover the remaining uncovered lines so the 100% coverage threshold passes - Skipped saved roles on ticket close, failed hash write in command deploy, seed warnings and listener diff in bridge mappings, default topic length and an emptied join queue in the IRC channel joiner Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * Make /privacy delete remove everything except moderation records Also delete quotes, game scores, the RPG character, AI data, best-of and bounty records, member trust flags and linked accounts (Last.fm, IRC, Matrix, Moodle, password hash). Moderation actions, appeals, bans, tickets and the bridge opt-out are kept. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * Fix bridge privacy checks and atomic data deletion * Fix privacy transaction tests and time-dependent coverage * Fix bridge permission sync and channel rejoining --------- Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
) * Make /purge ephemeral by default and deploy commands on bot start - /purge: rename the `private` option to `ephemeral` (the code read `ephemeral`, so replies were always public) and default to a hidden reply. Fixes #1382. Requires a command redeploy. - Register slash commands on every bot start, skipping the Discord call when the definitions are unchanged since the last deploy. A failure is logged and does not stop the bot. - AGENTS.md: document the `ephemeral`-by-default option rule and the deploy-on-start behavior. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * Fix object-curly-newline lint errors in mid_guild_commands test Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
* Fix DeepScan issues (null checks, dead stores, unused imports) - purge: skip channels missing from cache instead of dereferencing undefined - sheesh: null-safe member.id in passjoint - report: drop redundant always-true role_moderator check - rpg/profile/levels: remove dead variable assignments - matrix: fix always-true calc_nasal condition and NaN checks, drop await on handler - irc archive: remove unused imports/requires - tests for the purge and sheesh null cases Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * Remove unused logger require from i.thoughtPolice Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
LunaUrsa
approved these changes
Nov 14, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Automated promotion PR: uat is 1 commit(s) ahead of main. Approving this PR fast-forwards main to uat's current commit automatically - no need to click Merge.