What actually shipped.
Newest first. Anything not yet released is marked in progress rather than implied to be available.
Public website, module catalog, and premium pages; the product is now presented as a Discord platform end to end.
- Public site: home, features, module catalog, premium, docs, status, changelog, and support
- Live status page reporting real component health
- Documentation generated from the bot's own module, command, and variable registries
- Reduced-motion support across the whole site
- Legal pages moved under the site footer and reachable at /legal/terms and /legal/privacy
Split the monolith into four independently deployable services with their own health and readiness signals.
- Gateway, API, web, and worker services, each separately startable and scalable
- Liveness, readiness, and version endpoints that report which dependency is unavailable
- Per-service environment contracts (the web service no longer requires the bot token)
- Multi-stage non-root container image, production compose stack, and reverse-proxy config
- Graceful shutdown now drains work in reverse startup order on SIGTERM
No database change. Local development moved PostgreSQL to port 5439 and Redis to 6389 to avoid a port conflict.
Hardened command and interaction routing with collision detection, typed errors, and per-interaction telemetry.
- Startup and test-time route collision detection across every command, component, modal, and queue namespace
- Typed error model so users see a safe, actionable message while full context stays in internal logs
- Structured telemetry for every interaction with a correlation id
- Module ownership of routes and commands is now explicit and verifiable
- Duplicate interaction and modal route keys silently overwrote each other instead of failing
Removed the embedded storefront. Manager is a Discord bot, not an ecommerce product.
- The /store surface was replaced by /premium
- Legal pages were rewritten to describe the bot and dashboard rather than a shop
- The storefront, its commands, and its dashboard pages were removed
Storefront tables were archived, not dropped — data is preserved and the change is reversible.