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¶
- Git blame ignore configuration for formatting commits
- Comprehensive error handling system with test registry and configuration
- Documentation workflow for automated builds and deployment
- Enhanced CI workflow scripts and updated action versions
- Security policy improvements with main policy link
- Communication service improvements with DM embed user reference updates
- Regex pattern standardization and new pattern additions
- Exception handling improvements with language input sanitization
- Info command handling and documentation improvements
- Dependency updates for Pillow and MkDocs Material
- CI workflow improvements with shfmt flag updates
- Database System Migration: Complete migration from Prisma to SQLModel (SQLAlchemy + Pydantic)
- SQLModel ORM implementation with async PostgreSQL support
- Database controllers with BaseController pattern
- DatabaseCoordinator facade for centralized access
- Alembic migration system with PostgreSQL enum support
- Connection pooling with retry logic and health checks
- CLI Framework Migration: Migrated from Click to Typer for improved type safety and developer experience
- Type Checker Migration: Switched from pyright to basedpyright for enhanced type checking
- Source Layout Migration: Reorganized from flat layout (tux/) to src layout (src/tux/) following Python packaging best practices
- Configuration System: Modular configuration management with multi-format support (TOML, YAML, JSON), priority-based loading, and pydantic-settings validation
- Plugin System: Modular plugin architecture for extending functionality without modifying core code
- Task Monitoring: Background task monitoring and management system
- Activity Rotation: Dynamic bot activity rotation with placeholder substitution
- Cloudflare Workers Integration: Documentation deployment via Cloudflare Workers with Wrangler CLI
- Database Testing: py-pglite integration for in-memory PostgreSQL testing
- Plugins: Deepfry (image manipulation), Flag Remover (flag emoji removal), Support Notifier (support channel notifications), Harmful Commands (detection and warning for potentially harmful shell commands), Fact (fun facts system)
Changed¶
- Package Manager Migration: Migrated from Poetry to uv for faster dependency resolution
- Project Structure: Reorganized from flat layout (tux/) to src layout (src/tux/) with clear separation:
core/,database/,services/,modules/,plugins/,ui/,shared/,help/ - Documentation Structure: Reorganized documentation from
developer-guide/andadmin-guide/todeveloper/concepts/with subdirectories (core/,handlers/,tasks/,ui/,wrappers/,database/) andadmin/structure - Help System: Refactored help command with separated components, improved pagination, and interactive navigation
- Bot Lifecycle: Streamlined initialization process with dedicated setup services
- Database Controllers: Improved session management with instance expunging and lazy loading
- Command Suggestions: Enhanced accuracy with qualified name prioritization and alias support
- Logging Configuration: Simplified to console-only logging, removed file logging configuration
- Code formatting to 88 character line length
- Pre-commit hooks and package version updates
- Documentation workflow components renamed for clarity
- Communication DM embed user reference updates
- Regex variable naming standardization with new patterns
- CI workflow scripts enhanced with updated action versions
- Info command handling and documentation improvements
Fixed¶
- Error message truncation issues
- AFK member ID deletion logic
- Moderation logging references
- Help command emoji additions for new categories
- SQLAlchemy verbose logging
- Communication DM embed user reference updates
- CI workflow shfmt flag issues
- Exception handling for language input sanitization
- Security policy link additions
- Command usage references to include dynamic prefix
- Hardcoded loading emoji removal
- Expired tempban checker log level adjustments
Removed¶
- Poetry: Removed Poetry package manager in favor of uv
- Prisma: Removed Prisma client in favor of SQLModel for better Python integration
- Click CLI: Removed Click framework in favor of Typer
- pyright: Removed pyright in favor of basedpyright
- 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
- Note Database Table: Removed unused Note model and table
- Legacy Config Management: Removed old config management.py and wizard.py files
- 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 Click-based scripts
- Adminer Theme: Removed custom CSS theme for Adminer
- ASCII Art Module: Removed separate ASCII art module, integrated into banner system
- Various Documentation Files: Reorganized and removed outdated documentation files during documentation restructuring
[0.1.0-rc.4] - 2025-06-15¶
Added¶
- Comprehensive test suite additions
- Multi-platform Docker builds
- Enhanced error handling for code execution
- Sentry integration with global Discord library version tagging
- Specific API error classes for better error handling
- Codecov integration for coverage tracking
Changed¶
- CI/Docker workflow improvements
- Dockerfile reorganization and optimization for better security and performance
- Enhanced dev and docker CLI with new commands and options
Fixed¶
- Codecov integration fixes and upload improvements
- CI workflow fixes for database tests and coverage reporting
- ShellCheck warnings in CI workflows
- Pre-commit hooks configuration updates
[0.1.0-rc.3] - 2025-05-13¶
Added¶
- Wolfram Alpha integration for math/science queries
- TuxApp orchestration system for lifecycle management
Changed¶
- Enhanced moderation cases command with aliases
Fixed¶
- Poll reaction handling fixes (remove user reaction if it doesn't meet poll criteria)
- InfluxDB logger improvements (update logger for starboard to use correct fields)
- AFK command responses made ephemeral
- TLDR output formatting improvements
[0.1.0-rc.2] - 2025-04-29¶
Added¶
- Comprehensive documentation improvements
- CLI documentation enhancements
- Docker development guide
- Dynamic version fetching using importlib.metadata
- API reference generation
- Developer guides (core concepts, handlers, tasks, UI, wrappers, database patterns)
- User documentation (feature guides and command references)
- Admin documentation (configuration and management guides)
- Self-hosting guides (installation and deployment instructions)
Changed¶
- Status roles enhancements and logging (improved initialization, better logging)
- Documentation structure updates and navigation improvements
- Contributing guide enhancements
Fixed¶
- Dockerfile cleanup and optimization
- Documentation formatting and indentation fixes
[0.1.0-rc.1] - 2025-04-19¶
Added¶
- Status roles feature (initial commit March 23, merged April 19)
- Dynamic versioning system
- Extensions/plugin system foundation
- Docker workflow improvements
Changed¶
- Final integration of features developed before rc.1
Fixed¶
- Docker workflow fixes
- Status roles logging improvements
- Version serialization formatting fixes
[0.0.0] - 2023-11-28¶
Added¶
Core Infrastructure
- Bot Framework: Complete Discord bot built on discord.py with hybrid command support (slash and prefix commands)
- Hot Reload System: File watching with watchdog for automatic cog reloading during development with dependency tracking
- Error Handling: Comprehensive error handling system with error extractors, formatters, command suggestions, and Sentry integration
- Sentry Integration: Comprehensive error tracking with cog, context management, handlers, tracing, and utilities
- Environment Management: Centralized environment configuration utilities
- 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
Database System (Prisma-based)
- Prisma Integration: Database ORM using Prisma with PostgreSQL support
- Database Controllers: Controller pattern with BaseController for centralized database management
- Database Models: Guild, GuildConfig, Case, AFK, Reminder, Snippet, Levels, Starboard, StarboardMessage
- Database Client: Singleton DatabaseClient for centralized database operations
Permission System (Legacy)
- Hardcoded Permissions: Permission system with hardcoded permission levels
- ConditionChecker: Legacy permission checking system
- Role-Based Permissions: Basic role-based permission checks
Moderation System
- 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 (September 4, 2024)
- 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
- Emoji Management: Centralized emoji management system for application emojis
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)
- Help System: Enhanced help command with interactive UI components, navigation, and category organization
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
- Blacklist Functionality: Ability to blacklist users from gaining XP
Feature Modules
- Starboard: Message starboard system with configurable thresholds
- Status Roles: Automatic role assignment based on user status (March 23, 2025)
- Bookmarks: Message bookmarking system (April 9, 2024)
- Temp VC: Temporary voice channel creation (April 9, 2024)
- GIF Limiter: Rate limiting for GIF messages with per-user and per-channel limits (September 22, 2024)
- InfluxDB Logger: Metrics logging to InfluxDB (March 14, 2025)
- Event Handler: Discord event handling system
Tools
- Code Execution: Run code in multiple languages with Wandbox and Godbolt integration
- TLDR (April 2024): Quick command documentation lookup
- XKCD (June 2024): XKCD comic integration
Fun Commands
- Random: Random number and choice generation
- Cowsay: ASCII art generation with customizable options
Admin Commands
- Dev: Development utilities including cog loading/unloading/reloading
- Eval: Code evaluation with permission checks
Plugins
- Role Count: Role counting with emoji support
- TTY Roles: Terminal/editor role management
- Git: GitHub integration commands
- Mail: Mail system
- Mock: Text mocking utility
CLI Tools (Click-based)
- Click CLI: Command-line interface built with Click (April 6, 2025)
- 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: Initial documentation site setup with Material theme (July 31, 2024)
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
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
Monitoring & Logging
- Structured Logging: Loguru-based structured logging with console output
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
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
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
- Adminer Integration: Database administration interface with auto-login functionality
- Non-root User: Security improvements with non-root containers
- Health Checks: Container health monitoring
Changed¶
- Case Creation: Enhanced with thread-safe case numbering using locking mechanism to prevent race conditions
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¶
- File Logging: Removed file logging configuration and related methods in favor of console-only logging (October 6, 2025)
- Supabase Client: Removed Supabase client in favor of direct PostgreSQL connection (March 28, 2024)
- ASCII Art Module: Removed separate ASCII art module, integrated into banner system (August 2025)
- Ghost Ping Detection: Removed ghost ping notification feature (April 9, 2024)
- Requirements.txt: Removed in favor of pyproject.toml for dependency management (March 26, 2024)
- Adminer Theme: Removed custom CSS theme for Adminer (November 10, 2025)
- Various Documentation Files: Reorganized and removed outdated documentation files during documentation restructuring (September-November 2025)
Security¶
- Sentry Integration: Enhanced error reporting and monitoring
- Non-root Containers: Docker containers run as non-root user