Skip to content

History

Revisions

  • docs: sandboxed systemd unit, auto-update requirements, v1.2.2 notes Setup guide now installs uv system-wide for services, gives a complete sandboxed unit (writable uv cache, system Python only, UMask=0007, XDG_CONFIG_HOME), grants the service account write access to directories and .git rather than files, and lists what auto-update needs: HTTPS remote, safe.directory, clean tree. Adds the v1.2.2 untrack step and the missing state files to the table. All of it was exercised on the production host.

    @johnnyxmas johnnyxmas committed Oct 26, 2026
    67405fa
  • docs: install and run with uv instead of pip v1.2.0 moved dependencies to pyproject.toml/uv.lock. Setup now uses uv sync --frozen --no-dev and starts with uv run --frozen --no-dev; the systemd example puts uv on PATH so auto-update can find it, and the auto-update description covers the uv sync step and the unknown-changes gate.

    @johnnyxmas johnnyxmas committed Oct 26, 2026
    e07a09c
  • docs: document /media_dump and its MEDIA_DUMP_* settings

    @johnnyxmas johnnyxmas committed Oct 19, 2026
    d6e9190
  • Document the raid protection, anti-nuke, and spam protection systems Adds a Safety Systems page covering all three: what each detects, how they respond, the bot permissions they need, and guidance on sizing the thresholds against a server's own join history rather than a guess. Records the reasoning behind the non-obvious choices, since they look like oversights otherwise: link spam is detected behaviorally instead of by domain blocklist (scam domains burn within days), avatar clustering hashes image bytes rather than Discord's avatar key (whether identical uploads share a key is undocumented and unverified), and the raid lockdown uses Discord's self-expiring incident actions so no local state has to survive a restart. Spells out that anti-nuke deliberately does NOT exempt moderators. A compromised moderator account is the threat it exists for, so exempting trusted accounts would defeat it — and a reader assuming the usual moderator exemption would draw exactly the wrong conclusion. Home, Setup-Guide and Commands-Reference updated to match, including the three permissions an existing install won't already have granted.

    @johnnyxmas johnnyxmas committed Sep 22, 2026
    4028520
  • Document PR #5: guild-wide perms, kick rank check, param bounds, DM scope - Permission checks are now resolved guild-wide, not per-channel overwrite; note the security rationale and that no command works in a DM - /kick and /kick_role now also check the invoker's role rank, not just the bot's - Document the new limit param on /purge_string and /purge_webhooks, and the scan-vs-delete distinction; note the fixed silent 100-message cap - Document enforced ranges on /timeout, /purge_last_messages, /message_dump, /log_tail - /voice_chaperone disabling now releases outstanding mutes immediately - /check_event_feeds explicitly scoped to the invoking guild - Event announcements changed from an embed to a plain heading + URL (still unfurls to a native event card) - iCal DURATION is now honored for event end times, not just DTEND - Feed/event-page fetches now validate against SSRF and cap response size - /dashboard now sends multiple messages when the listing exceeds Discord's 2000-char limit - Corrected the Concurrency Model section to match the current implementation (APScheduler jobs, not a reminder thread; locks guard specific dicts, not a general cache) - Python support: 3.11+, CI now covers 3.11-3.14 - Added an Upgrade Notes section covering the one-time event-timing cleanup (/check_event_feeds once, then delete stale mistimed events)

    @johnnyxmas johnnyxmas committed Sep 9, 2026
    59513f1
  • Document server backup/restore, permission-bit auth model, tag-based versioning

    @johnnyxmas johnnyxmas committed Aug 18, 2026
    88c88ec
  • docs: genericize deployment and feed examples - Replace the real Meetup group feed in the /add_event_feed and /remove_event_feed examples with a neutral placeholder, and describe the Meetup iCal URL pattern instead of naming a specific group - systemd section now uses placeholders for the service name, user, paths and interpreter rather than reading like one specific host - Recommend EnvironmentFile over an inline Environment= token: unit files under /etc/systemd/system are world-readable, so an inline token is exposed to every account on the machine

    Johnny Xmas committed Aug 10, 2026
    9841309
  • docs: DM auto-kick policy, corrected access levels, chaperone lifecycle - /log_tail and /list_users_without_roles moved to the Moderator row of the permissions table and marked Moderator in their own sections - Document the automatic DM kick on Home and in Setup-Guide, including the moderator and recently-DMed exemptions, plus the Kick Members permission it needs. This behavior was previously undocumented - /clone_role_permissions: note that all moderation permissions are excluded, and correct the @Moderator -> @Junior-Mod example, which implied those permissions transfer - Chaperone: single alert per incident, automatic unmute, and mute persistence across restarts - Day-of event reminders run Tue-Sun, not daily - Add a Runtime State Files table covering chaperone_mutes.json - Note the ~15 line practical cap on /log_tail output

    Johnny Xmas committed Aug 10, 2026
    d71b51f
  • Update checking is config-only; remove /update_checking docs

    @johnnyxmas johnnyxmas committed Jun 10, 2026
    10feaa9
  • Document AUTO_UPDATE_ENABLED auto-update option

    @johnnyxmas johnnyxmas committed Jun 10, 2026
    12ff129
  • Event feed commands are mod-only; restore 64-user Discord API limit notes

    @johnnyxmas johnnyxmas committed Jun 10, 2026
    00340cf
  • Sync wiki with current functionality Remove obsolete /event_announce commands (now automatic via /add_event_feed), update feed schedule and message_dump DM delivery, fix config setup (config_example.py), Python 3.11+, permission levels. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

    @johnnyxmas johnnyxmas committed Jun 10, 2026
    6dd244d
  • docs: update Event Feed and add Event Announcement command docs - Rewrite Event Feed Commands section for new architecture - Add feed_name, required channel, RSS support, JSON-LD scraping - Add new Event Announcement Commands section - Update Table of Contents and permission table

    @johnnyxmas johnnyxmas committed Mar 10, 2026
    32b655e
  • Updated to comply with project changes

    @johnnyxmas johnnyxmas committed Mar 9, 2026
    6b0a519
  • Added /autoreply

    @johnnyxmas johnnyxmas committed Aug 23, 2025
    4473fe3
  • Added update checking

    @johnnyxmas johnnyxmas committed Jul 31, 2025
    d305c71
  • Updated Commands Reference (markdown)

    @johnnyxmas johnnyxmas committed Jul 31, 2025
    8d4bda2
  • Updated Setup Guide (markdown)

    @johnnyxmas johnnyxmas committed Jul 31, 2025
    8f13381
  • Added voice chaperone switch

    @johnnyxmas johnnyxmas committed Jul 28, 2025
    591d617
  • Added voice chaperone default state

    @johnnyxmas johnnyxmas committed Jul 28, 2025
    3dbbeea
  • Added HTTP server config

    @johnnyxmas johnnyxmas committed Jul 28, 2025
    8531deb
  • Created Commands Reference (markdown)

    @johnnyxmas johnnyxmas committed Jul 28, 2025
    90deb09
  • Created Setup Guide (markdown)

    @johnnyxmas johnnyxmas committed Jul 28, 2025
    464b69b
  • Initial Home page

    @johnnyxmas johnnyxmas committed Jul 28, 2025
    8828403