This repository was archived by the owner on May 14, 2026. It is now read-only.
Added
- Docker: Local Docker build script (
docker-build.sh) with versioning options, auto-detection from git tags, custom tags, and build targets (production/dev) - Config: Configuration generation with JSON schema,
.env.example, andenv.md;config generateproducesconfig.json.example,config.schema.json,.env.example, andenv.md;config currentfor database revision - Docs: FAQ sections for admins, developers, users, self-hosters, and general inquiries
- Sentry: Environment determination from config file, environment variable, or debug mode; init message includes determined environment
- Starboard: Message expiration (TTL 365 days) for starboard entries; expiration timestamp on creation; clearer error logging on update failures
- Jail system: Jail configuration and re-jail functionality
- Commands to configure jail channel and role via
/config jailand the Configuration Dashboard - Automatic re-jailing of members who leave and rejoin while jailed
is_jailedmethod to check user jail status from latest JAIL/UNJAIL casesguilds_registeredevent to coordinate guild-dependent tasks after registrationupdate_jail_role_idin guild config for jail role configuration- Case controller:
get_latest_jail_caseandget_latest_jail_or_unjail_casefor jail status checks
- Commands to configure jail channel and role via
- Error handling: Client event error handling
- Error handler manages errors from both app commands and client events (e.g.
on_ready,on_member_join) - Exceptions in non-command event listeners are logged and reported for diagnostics
- Error handler manages errors from both app commands and client events (e.g.
Changed
- Time conversion:
convert_to_secondssupports multi-character and compound units- Multi-character units (e.g.
1wks,2hrs,5min) and compounds (e.g.1h30m) - Case-insensitive unit lookups
- Multi-character units (e.g.
- Hot reload: Path shortening and log levels
_shorten_pathutility for logs relative to base directory- Less verbose hot-reload watcher logs (debug for less critical messages)
- Cog loader: Logging and terminology
- Per-category extension counts (e.g.
X plugins from atl) when a batch has multiple categories - Folder-level summary uses "plugins" for the plugins folder, "extensions" for others
- Clearer labels and type annotations
- Per-category extension counts (e.g.
- Database logging: Reduced noise and clearer messages
- Query:
find_allexecution logged at trace instead of debug - CRUD: refresh logging shows ID only when the instance has a singular
id(avoids "unknown" for composite keys)
- Query:
- Config: Migrate from TOML and YAML to JSON-only; remove multi-format loaders and TOML/YAML generators; streamline settings; validation and generation focus on JSON and environment files
- Dashboard: Streamline TextDisplay initialization in ConfigDashboard (component ID set at instantiation)
- Activity: Simplify activity data handling in ActivityHandler; remove redundant JSON parsing, clearer naming, default activity fallback
- Docs: Navigation (zensical.toml, Snippets link, FAQ); setup and developer references from
config.tomltoconfig.json; feature, configuration, environment, and template examples TOML→JSON; config doc titles and icons;.envandconfig.jsonloading order - Database migration plugin:
config.jsonin setup and error handling; schema report runs in executor; error message truncation - Docker / env: Compose and Containerfile comments for required env and
config/config.json;.env.exampledefaults for Postgres and external services - Dependencies:
pyyamlandtypes-pyyamlupdates;pydantic-settings-exportremoved from dev and Renovate - Docker: Merged
compose.yamlandcompose.production.yamlinto one file; use--profile devor--profile production;--profile adminerfor DB UI- YAML anchors/aliases for deduplication between dev and production services
- Enhanced
develop.watchconfiguration withinitial_syncfor better developer experience - Updated all documentation to use profile-based compose commands
- Entrypoint: Streamlined signal handling and cleanup process; simplified entrypoint script with enhanced comments on signal delivery
- Docs: README and AGENTS.md updates
- README: Clarified database description (SQLAlchemy and Pydantic), updated project metrics link, added FAQ link
- AGENTS.md: Enhanced setup instructions with detailed commands, expanded project structure descriptions, updated development workflow with Docker Compose profiles
Fixed
- Permissions: Explicit type
list[PermissionRank]for instances in PermissionRankController - Logging:
safe_message_filterescapes curly braces and angle brackets to avoid Loguru format errors and Discord mention misinterpretation - on_ready handlers: Error handling and startup order
- Event handler: exception handling for guild registration, waiters unblocked on failure
- Activity handler: exception handling for activity rotation startup
- RemindMe: exception handling, timezone-aware expiry checks, reminder scheduling only when timer fires (prevents unawaited coroutine on shutdown)
- Status roles: exception handling, guild-registration wait before status checks
- TTY roles: Jailed members are skipped in role assignment on join so the jail role is not overridden by re-jail logic
- Rank modals: Response handling in EditRankModal and CreateRankModal uses defer and followup for modal submissions; streamlined error handling for rank creation and editing
- Permission ranks: Description handling in PermissionRankController:
MISSINGby default,Noneclears, omitting leaves unchanged - Docker entrypoint: Fixed TLDR cache directory permissions; entrypoint now ensures
/app/.cache/tldrexists with proper ownership - Type checking: Fixed basedpyright deprecation warnings
- Replaced deprecated
asyncio.iscoroutinefunctionwithinspect.iscoroutinefunction(Python 3.14 compatibility) - Fixed
MappingProxyTypemutation by usingobject.__setattr__instead of direct__dict__assignment
- Replaced deprecated
- Docs: Clarified Adminer web UI startup instructions in contributing guide; updated database startup instructions in error handling to use profile-based Docker Compose commands
Removed
- Config: TOML and YAML configuration formats;
config.toml.exampleandconfig.yaml.example;pydantic-settings-exportand its type stubs - Docker:
compose.production.yaml(merged intocompose.yamlwith profiles)