Changelog¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]¶
Added¶
Core Infrastructure¶
- Bot Framework: Complete Discord bot built on discord.py with hybrid command support (slash and prefix commands)
- Application Lifecycle: TuxApp orchestration system for managing bot lifecycle, initialization, and graceful shutdown
- Hot Reload System: File watching with watchdog for automatic cog reloading during development with dependency tracking
- Plugin System: Modular plugin architecture for extending functionality without modifying core code
- Error Handling: Comprehensive error handling system with error extractors, formatters, command suggestions, and Sentry integration
- Environment Management: Centralized environment configuration utilities
- Task Monitoring: Background task monitoring and management system
- Prefix Management: Dynamic prefix management with database-backed configuration
- Custom Context: Enhanced command context with additional utilities
- Type Converters: Custom type converters for Discord entities
- Command Flags: Flag-based command argument system
- Setup Services: Modular setup services for bot, cogs, database, and permissions with orchestrator
Database System¶
- SQLModel Integration: Type-safe database ORM using SQLModel (SQLAlchemy + Pydantic) with async PostgreSQL support
- Database Controllers: Controller pattern with BaseController and specialized controllers for CRUD operations, pagination, bulk operations, and transactions
- DatabaseCoordinator: Centralized facade for accessing all model-specific controllers
- Migration System: Alembic-powered schema management with PostgreSQL-specific enum support
- Connection Pooling: Async connection pooling with retry logic and health checks
- Database Models: Guild, GuildConfig, Case, AFK, Reminder, Snippet, Levels, Starboard, StarboardMessage, PermissionRank, PermissionCommand
Permission System¶
- Dynamic Permissions: Database-driven permission management with configurable ranks (0-100)
- Permission Decorators: Flexible permission checking decorators for commands
- Role-Based Permissions: Role-to-rank assignment system
Configuration System¶
- Multi-Format Config: Support for TOML, YAML, and JSON configuration files with pydantic-settings validation
- Config Generators: Automatic config file generation for TOML, YAML, and JSON formats
- Config Loaders: Priority-based configuration loading system with environment variable support
- Config Commands: Interactive configuration system with Components V2 UI for guild settings, permission ranks, and log channels
- Config Dashboard: Interactive dashboard with pagination and command discovery
- Environment Variables: Comprehensive .env support with python-dotenv integration
- Config Generation: CLI command to generate example configuration files
Moderation System¶
- Moderation Services: Service layer architecture with case service, communication service, execution service, factory pattern, and moderation coordinator
- Case Management: Comprehensive case system with viewing, searching, and modification capabilities
- Ban/Kick: Ban and kick commands with reason support
- Warn: Warning system with case tracking
- Timeout: Temporary timeout/mute functionality
- Tempban: Temporary ban with expiration handling
- Jail/Unjail: Jail system with dedicated channel support
- Purge: Bulk message deletion with Discord API limits handling
- Slowmode: Channel slowmode management
- Report: User reporting system with modal forms
- Poll Ban/Unban: Poll restriction system
- Snippet Ban/Unban: Snippet restriction system
- Clear AFK: Administrative AFK status clearing
Utility Commands¶
- AFK System: AFK status management with expiration times and automatic cleanup
- Self-Timeout: User-initiated timeout command with confirmation dialogs
- RemindMe: Reminder system with database persistence
- Ping: Bot latency and uptime display
- Poll: Poll creation with reaction-based voting
- Snippets: Complete snippet management system with CRUD operations, aliases, locking, and search
- Encode/Decode: Text encoding and decoding utilities
- Timezones: Timezone conversion utilities
- Wiki: Wikipedia search integration
Information Commands¶
- Info: Comprehensive information commands for Discord entities (members, channels, roles, emojis, guilds)
- Avatar: User avatar display
- Member Count: Server statistics (total members, humans, bots)
Level System¶
- XP and Levels: User leveling system with XP tracking
- Level Commands: Administrative commands for managing levels and XP
- Level Display: User level information display
Feature Modules¶
- Starboard: Message starboard system with configurable thresholds
- Status Roles: Automatic role assignment based on user status
- Bookmarks: Message bookmarking system
- Temp VC: Temporary voice channel creation
- GIF Limiter: Rate limiting for GIF messages with per-user and per-channel limits
- InfluxDB Logger: Metrics logging to InfluxDB
- Activity Rotation: Dynamic bot activity rotation with placeholder substitution
- Event Handler: Discord event handling system
Tools¶
- Code Execution: Run code in multiple languages with Wandbox and Godbolt integration
- TLDR: Quick command documentation lookup
- Wolfram Alpha: Math and science query integration
Fun Commands¶
- Random: Random number and choice generation
- XKCD: XKCD comic integration
Admin Commands¶
- Dev: Development utilities including cog loading/unloading/reloading
- Eval: Code evaluation with permission checks
Plugins¶
- Fact: Fun facts system
- Deepfry: Image manipulation
- Role Count: Role counting with emoji support
- TTY Roles: Terminal/editor role management
- Harmful Commands: Detection and warning for potentially harmful shell commands
- Support Notifier: Support channel notification system
- Git: GitHub integration commands
- Mail: Mail system
- Flag Remover: Flag emoji removal utility
- Mock: Text mocking utility
CLI Tools¶
- Typer CLI: Comprehensive command-line interface built with Typer
- Semantic Versioning: Dynamic version management utilities with build metadata generation
- Bot Commands:
tux start,tux version - Development Commands:
dev lint,dev format,dev type-check,dev lint-docstring,dev docstring-coverage,dev pre-commit,dev all - Database Commands:
db init,db dev,db push,db status,db new,db health,db schema,db queries - Docker Commands:
docker up,docker down,docker build,docker logs,docker ps,docker shell,docker health,docker config - Testing Commands:
tests all,tests quick,tests plain,tests parallel,tests html,tests coverage,tests benchmark - Documentation Commands:
docs serve,docs build - Config Commands:
config generate
Documentation¶
- MkDocs Material: Comprehensive documentation site with API reference generation
- API Reference: Complete codebase documentation
- Components V2 Documentation: Comprehensive rules documentation for Discord.py Components V2
- Cloudflare Workers Integration: Documentation deployment via Cloudflare Workers with Wrangler CLI
Testing¶
- Test Framework: Comprehensive pytest setup with async support and coverage reporting
- Test Markers: Unit, integration, slow, database, and async test markers
- Coverage Reporting: Multiple coverage formats with Codecov integration
CI/CD¶
- GitHub Actions: CI/CD workflows for testing, linting, type checking, and Docker builds
- Pre-commit Hooks: Automated code quality checks
- Docker Builds: Multi-platform Docker builds
- Codecov Integration: Coverage tracking
Monitoring & Logging¶
- Sentry Integration: Comprehensive Sentry integration with cog, context management, handlers, tracing, and utilities
- Structured Logging: Loguru-based structured logging with console output
- Performance Monitoring: Sentry transaction tracking for database operations and command execution
- Error Context: Enhanced error reporting with stack traces, user context, and performance metrics
UI Components¶
- Embed System: Comprehensive embed creation utilities with type-safe embed types
- Button Components: Reusable button components
- Banner System: Banner creation and formatting utilities
- Modals: Modal form system including report modals
- Views: Interactive view system with confirmation dialogs and TLDR views
- Config UI: Interactive configuration UI with dashboard, pagination, command discovery, and callbacks
HTTP & API Integration¶
- HTTP Client: Custom async HTTP client wrapper with retry logic and error handling
- API Wrappers: Wrappers for GitHub, Godbolt, TLDR, Wandbox, and XKCD APIs
- Emoji Manager: Centralized emoji management system for application emojis
Utilities¶
- Custom Exceptions: Comprehensive exception hierarchy for error handling
- Version Management: Dynamic version management using importlib.metadata
- Regex Patterns: Common regex patterns for validation
- Shared Functions: Utility functions for common operations
Docker & Deployment¶
- Docker Compose: Development environment with PostgreSQL and Adminer
- Compose Watch: Hot reload support for development with automatic rebuilds on file changes
- Adminer Integration: Database administration interface with auto-login functionality
- Multi-stage Builds: Optimized Containerfile (renamed from Dockerfile)
- Non-root User: Security improvements with non-root containers
- Health Checks: Container health monitoring
Changed¶
- Project Structure: Major reorganization of source code and documentation structure
- Source Code: Reorganized
src/tux/with clear separation:core/,database/,services/,modules/,plugins/,ui/,shared/,help/ - Services Directory: Created dedicated
services/directory with subdirectories formoderation/,hot_reload/,sentry/,handlers/,wrappers/ - Modules Reorganization: Renamed
modules/services/tomodules/features/for clarity - Plugins Organization: Moved plugins into
plugins/atl/subdirectory for better organization - Database Structure: Restructured database controllers into
database/controllers/withbase/subdirectory for specialized controllers - Documentation Structure: Reorganized documentation from
developer-guide/andadmin-guide/todeveloper/concepts/with subdirectories (core/,handlers/,tasks/,ui/,wrappers/,database/) andadmin/structure - Database System: Migrated from Prisma to SQLModel (SQLAlchemy + Pydantic) for better Python integration and type safety
- Permission System: Replaced legacy ConditionChecker and hardcoded permission levels with database-driven dynamic permission system
- Configuration System: Refactored from monolithic onboarding wizard to modular configuration management system with Components V2 UI
- Help System: Refactored help command with separated components, improved pagination, and interactive navigation
- Package Manager: Migrated from Poetry to uv for faster dependency resolution and improved performance
- CLI Tools: Migrated from Click to Typer for improved command-line interface with better type safety
- Plugin System: Refactored extensions to modular plugin architecture with hot-reload support
- Docker Configuration: Renamed Dockerfile to Containerfile for better compatibility with Podman and other container tools
- Bot Lifecycle: Streamlined initialization process with dedicated setup services and orchestrator
- Database Controllers: Improved session management with instance expunging and lazy loading of specialized controllers
- Case Creation: Enhanced with thread-safe case numbering using locking mechanism to prevent race conditions
- Command Suggestions: Enhanced accuracy with qualified name prioritization and alias support
- Logging Configuration: Simplified to console-only logging, removed file logging configuration
- Type Checking: Switched from pyright to basedpyright for stricter type checking
- Permission Ranks: Updated permission rank system from legacy levels to 0-100 hierarchy, then refined to 0-10 range
- Database Service: Unified AsyncDatabaseService and DatabaseService into single DatabaseService for consistency
Fixed¶
- Database Operations: Fixed race conditions in case numbering and reminder deletion
- Level System: Fixed XP reset issues when database errors occur
- Reminder System: Fixed reminders not deleting from database if DMs are closed
- AFK System: Fixed race conditions in AFK status removal
- Help Command: Prevented unauthorized interactions
- Moderation: Fixed ban check logic and enabled banning non-server users
- Poll System: Fixed reaction removal issues
- Snippet System: Fixed reply mention behavior
- Code Execution: Fixed handling for various programming languages
- Config System: Fixed crashes when configuration files are outdated
- CI/CD: Fixed type checking and Codecov uploads
Removed¶
- Legacy Permission System: ConditionChecker and hardcoded permission levels replaced with database-driven system
- File Logging: Removed file logging configuration and related methods in favor of console-only logging
- Prisma: Removed Prisma client in favor of SQLModel for better Python integration
- Supabase Client: Removed Supabase client in favor of direct PostgreSQL connection
- Onboarding Wizard: Removed interactive setup wizard in favor of modular configuration system
- Note Database Table: Removed unused Note model and table
- ASCII Art Module: Removed separate ASCII art module, integrated into banner system
- Ghost Ping Detection: Removed ghost ping notification feature
- Legacy Config Management: Removed old config management.py and wizard.py files
- Requirements.txt: Removed in favor of pyproject.toml for dependency management
- Deprecated Migration Commands: Removed migrate_deploy and migrate_format commands from DatabaseCLI
- Legacy Database Methods: Removed deprecated methods from BaseController
- Legacy CLI Scripts: Removed old CLI architecture in favor of Typer-based scripts
- Poetry: Removed Poetry package manager in favor of uv
- Adminer Theme: Removed custom CSS theme for Adminer (replaced with auto-login functionality)
- Various Documentation Files: Reorganized and removed outdated documentation files during documentation restructuring
Security¶
- Sentry Integration: Enhanced error reporting and monitoring
- Non-root Containers: Docker containers run as non-root user
- Dependency Scanning: Automated security scanning
- Input Validation: Comprehensive input validation with Pydantic models