-
Notifications
You must be signed in to change notification settings - Fork 0
Feature Roadmap
Jason Tucker edited this page May 12, 2026
·
7 revisions
A living document describing what's planned, why, and the concrete steps to ship it. Each feature also has a card on the Bot Development project board with a matching breakdown — bring those into "In Progress" when you start, and use the implementation steps below as the punch list.
- ✅ Shipped — running in production, documented, and wired into
/help - 🟡 Infrastructure ready — schema and/or
/sudo → Settingstoggle exists, but the user-facing behavior hasn't been built - 🔵 Designed — concept agreed, scope written, no infrastructure yet
- 💭 Idea — bullet on a napkin; needs more thought before estimating
The 0.7.x and 0.8.x lines covered most of the original Phase 5/6 backlog:
- ✅ Auto voice channels with persistent control panel — hubs rename in place, replacement hub spawns, attached private text channel, sticky 📋 Open Panel button, reconciler on startup
- ✅ Voice control panel buttons — Rename, Lock/Unlock, Hosts (single panel listing all members with rank emojis), Templates (Auto / Counter / Comp 5-stack / Tryhard / Chill), Claim, Delete
- ✅ Random tech default channel names —
Sloppy Ethernetstyle fallback when no rich-presence game is active - ✅
/reportflow — modal → owner DM with Approve/Reject (notify or silent) → GitHub issue - ✅
/sudo → Settingspanel — runtime config for sudo users, channels, voice cleanup delay, and the auto-thread channel list. Backed bybot_settings(key/value overrides),sudo_users(members granted sudo at runtime), andauto_thread_channels(the dynamic auto-thread list). See Slash Commands for the full sub-panel reference. - ✅ Auto Threads — channels added under
/sudo → Settings → Auto Threadsget a public thread on every non-bot message. Default thread name{author} — {first line}(100-char cap). Backed byauto_thread_channels. Requires theMessageContentprivileged intent. Shipped as a single dynamic list rather than the per-channel feature flags originally drafted (clips/food were collapsed into one panel during implementation). - ✅ Hub Channels (dynamic) —
/sudo → Settings → Hub Channelsadds/removes hubs at runtime.HUB_CHANNEL_IDSenv is now a one-time legacy seed list; the DB is authoritative. Reconciler-driven hub recreation, replacement-hub flow, andisHubChannel()are all cache-backed. - ✅
channel.auto_voice_categoryoverride — theAUTO_VOICE_CATEGORY_IDenv value is now overridable from/sudo → Settings → Voice. Auto-channel creation, hub registration, and the reconciler all read viagetSetting() ?? env.AUTO_VOICE_CATEGORY_ID. - ✅ User profile editor — sudo-side editor under
/sudo → Settings → User Profilesand via right-click → Manage User → Edit Profile. Self-service via/profile. Sudo edits all fields; self mode covers display name, birthday, and opt-out toggles. Every edit logs aprofile-editline. - ✅ Birthday pings — daily scheduler that fires at the configured target hour (default 9). Members opt out via
/profile. Idempotency viabot_settings.birthday.last_run_date. Feb 29 birthdays handled in non-leap years. - ✅ Game roles + game prefs +
/playLFG —/sudo → Settings → Gamesis a full catalog editor (name / aliases / sort / view role / ping role / channel / visibility / archive / delete)./gamesis the self-service prefs editor; Manage User → Game Prefs is the sudo-on-behalf path. Toggling auto-syncs the corresponding Discord role on the target member./play <game>posts an LFG message in the game's channel pinging itsping_role_id, with a 30-minute per-(user,game) cooldown (sudo-bypass viaforce:true) andallowedMentionshardening so@everyone/@hereare never resolved.
The current active backlog is tracked on the Bot Development project board. The backlog issues #11–#38 (filed 2026-05-11) are the carved-up /sudo brainstorm; #39 is the umbrella for designing the future /mod command.
- ✅ #11 — Dynamic
isBotOwner()from the Discord Application Team. Bot-owner permission checks now resolve at runtime; see Bot Owner for setup. /report approval gates via this. - ✅ #12 — Per-hub auto-channel defaults (template, manual name, user limit). See Auto Voice Channels → Hub defaults.
- ✅ #13 — Hub lockdown — per-hub (sudo) and server-wide (bot-owner). See Auto Voice Channels → Hub lockdown.
- ✅ Owner grace — original owner can reclaim within 5 min, configurable in
/sudo → Settings → Voice → Owner grace (ms). See Auto Voice Channels → Ownership transfer. - ✅ Auto-thread media gate — auto-thread channels only thread messages with attachments or resolved link embeds.
- Verify
AUTO_VOICE_CATEGORY_IDandHUB_CHANNEL_IDSin.envare correct for the ITSRI guild — see issue #3 - Enable Presence Intent in Discord Developer Portal — issue #4 (resolved)
- GitHub Actions auto-deploy on push to main — done end-to-end
Light sketches — bring one to "Designed" status before it goes on the project board.
-
Voice channel "party" / LFG mode — members in an auto-channel can mark themselves LFG; the channel name appends
(LFG x/y)and a button lets others join. - Auto-name cycling — if the rich-presence game changes mid-session, the auto-channel name updates to match (with rate-limit guards — Discord limits channel renames to 2/10min).
-
OC-style stock widget for other businesses — port otterbot's
oc_stockpattern if a non-MKE business in the server wants the same kind of board. -
External webhook intake —
POST /webhook/<token>endpoint that posts to a configured channel (e.g. for GitHub Actions completion notices, Grafana alerts). Would require a small HTTP server alongside the Discord client.
- When you start working on a feature, move its project board card to In Progress.
- Add a corresponding
## [Unreleased]entry inCHANGELOG.mdwith the same name. - Treat the implementation steps above as a checklist — tick them off in commit messages or PR description.
- When the feature ships, move the card to Done, mark the row above ✅ Shipped, and prune steps from this page (keep the headline + 1-line summary so the history is readable).