You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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, and env.md; config generate produces config.json.example, config.schema.json, .env.example, and env.md; config current for 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 jail and the Configuration Dashboard
Automatic re-jailing of members who leave and rejoin while jailed
is_jailed method to check user jail status from latest JAIL/UNJAIL cases
guilds_registered event to coordinate guild-dependent tasks after registration
update_jail_role_id in guild config for jail role configuration
Case controller: get_latest_jail_case and get_latest_jail_or_unjail_case for jail status checks
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
Changed
Time conversion: convert_to_seconds supports multi-character and compound units
Multi-character units (e.g. 1wks, 2hrs, 5min) and compounds (e.g. 1h30m)
Case-insensitive unit lookups
Hot reload: Path shortening and log levels
_shorten_path utility 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
Database logging: Reduced noise and clearer messages
Query: find_all execution logged at trace instead of debug
CRUD: refresh logging shows ID only when the instance has a singular id (avoids "unknown" for composite keys)
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.toml to config.json; feature, configuration, environment, and template examples TOML→JSON; config doc titles and icons; .env and config.json loading order
Database migration plugin: config.json in 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.example defaults for Postgres and external services
Dependencies: pyyaml and types-pyyaml updates; pydantic-settings-export removed from dev and Renovate
Docker: Merged compose.yaml and compose.production.yaml into one file; use --profile dev or --profile production; --profile adminer for DB UI
YAML anchors/aliases for deduplication between dev and production services
Enhanced develop.watch configuration with initial_sync for 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_filter escapes 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: MISSING by default, None clears, omitting leaves unchanged
Docker entrypoint: Fixed TLDR cache directory permissions; entrypoint now ensures /app/.cache/tldr exists with proper ownership
Type checking: Fixed basedpyright deprecation warnings
Replaced deprecated asyncio.iscoroutinefunction with inspect.iscoroutinefunction (Python 3.14 compatibility)
Fixed MappingProxyType mutation by using object.__setattr__ instead of direct __dict__ assignment
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.example and config.yaml.example; pydantic-settings-export and its type stubs
Docker: compose.production.yaml (merged into compose.yaml with profiles)