Skip to content

Releases: allthingslinux/tux

v0.1.1

21 Jan 21:39
871370d

Choose a tag to compare

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, 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)

v0.1.0

20 Jan 12:32
371a8c2

Choose a tag to compare

Added

  • Database Migration Plugin: Comprehensive solution for migrating from Prisma to SQLModel
    • Full database schema inspection and analysis ($migrate audit, $migrate validate-schema)
    • Automatic model mapping and data transformation
    • Batch processing with progress tracking
    • Transaction-based migration with rollback support
    • Post-migration validation and verification ($migrate validate, $migrate status)
    • Discord bot commands for migration management ($migrate all, $migrate table, $migrate dry-run)
    • Comprehensive deployment documentation with multiple scenarios (fresh install, same server, testing)
    • Case ordering ensures chronological migration even with missing case numbers
    • Enhanced error handling for unique constraint violations
    • Consolidated documentation in PLUGIN.md with complete table/column mappings
    • Primary key constraint checking ($migrate check-pk)
    • Duplicate detection tools ($migrate check-duplicates)
  • Maintenance Mode: Bot-wide maintenance mode for safe migrations and maintenance windows
    • MAINTENANCE_MODE configuration option to enable/disable maintenance mode
    • Global command check that blocks non-owner commands during maintenance
    • Event handler checks prevent user event processing (levels, AFK, starboard, bookmarks, status roles, temp VC, polls, GIF limiting)
    • Background task checks prevent data modification during maintenance (AFK expiration, tempban processing, GIF cleanup)
    • Owner and sysadmin commands remain functional during maintenance mode
    • Comprehensive integration with database migration plugin for safe migrations
  • Cursor Rules & Commands System: Comprehensive system for managing AI-assisted development patterns
    • CLI tool for validating Cursor rules and commands (uv run ai validate-rules)
    • Comprehensive guides for creating Cursor rules and commands
    • Templates for rule and command documentation
    • Enhanced validation with frontmatter checking and large file exception support
    • README for Cursor rules and commands system
  • Docker Improvements: Enhanced Docker setup and deployment
    • Production Docker Compose configuration (compose.production.yaml)
    • Multi-stage Containerfile build with common setup stage
    • Auto-login form plugin for Adminer database administration
    • Validation and date generation functions in Docker scripts
    • Enhanced CI/CD pipeline with validation and caching improvements
  • Documentation: New self-hosting and installation guides
    • Bare metal installation guide
    • Enhanced self-hosting guide with detailed requirements and installation methods
    • CI/CD best practices documentation
  • Bot Infrastructure: Improved initialization and setup
    • Prefix manager setup service for bot initialization
    • VALID_LOG_LEVELS constant exported from logging module
    • SLOW_COG_LOAD_THRESHOLD constant for performance monitoring
  • Test Structure Reorganization: Comprehensive test reorganization from flat structure to domain-based organization
    • New test directories: tests/core/, tests/database/, tests/services/, tests/shared/, tests/modules/, tests/help/, tests/plugins/
    • Database model tests: creation, queries, relationships, serialization, performance, and timestamp functionality
    • Error extractor tests: arguments, flags, HTTP, permissions, roles, utilities, and integration tests
    • Config loader tests: basic loading, environment variable handling, and generation
    • Version system tests: module functions, version objects, and system integration
  • Test Fixture Improvements: Enhanced test fixture organization and utilities
    • New tests/fixtures/data_fixtures.py for test constants and sample data
    • New tests/fixtures/utils.py with validation utilities for guild configs, guilds, and relationship integrity
    • Improved database fixture organization and PGlite management
  • Database controller improvements with enhanced error handling and logging

Changed

  • Cursor Rules System: Refactored validation command structure and enhanced documentation
    • Updated AGENTS.md with Cursor rules and commands overview
    • Expanded and organized Cursor rules and commands documentation
    • Enhanced pre-commit configuration for commit message handling
  • Docker Configuration: Updated Docker Compose and build processes
    • Updated Docker Compose configurations for production and development environments
    • Enhanced health checks and service management
    • Restructured Containerfile into multi-stage build with common setup
    • Enhanced database connection handling and startup logic in entrypoint script
    • Expanded .dockerignore to include additional files and directories
    • Disabled attestations in GitHub Actions for improved architecture visibility
  • Bot Architecture: Improved initialization and error handling
    • Consolidated setup services with improved error handling
    • Simplified bot startup and enhanced shutdown handling
    • Streamlined prefix resolution
    • Enhanced configuration loading and data handling
    • Improved bot readiness checks and logging
  • Code Quality: Enhanced error handling and type annotations across modules
    • Improved error handling in database migration tests
    • Enhanced logging configuration and error handling
    • Improved type annotations across multiple modules (AFK, Godbolt, TLDR, info, task monitor, decorators)
    • Enhanced error handling in validation, linting, and VSCode settings parsing
    • Improved error extractor tests for httpx exceptions
    • Enhanced database model relationship tests
  • Module Refactoring: Improved code organization and functionality
    • Streamlined embed creation and improved boolean formatting in info module
    • Enhanced cache handling and command processing in TLDR module
    • Enhanced AFK management and filtering capabilities
    • Streamlined prefix management and improved cache handling
    • Enhanced cog loading process and improved performance monitoring
    • Replaced custom logging methods with loguru for consistency
    • Simplified get_recent_cases method and updated documentation
  • Documentation: Updated guides and references
    • Updated command syntax in migration and development documentation
    • Updated validation command in AGENTS.md for consistency
    • Standardized command usage across documentation
    • Updated lifecycle and setup documentation for clarity
    • Removed outdated installation links and updated database installation references
  • Database Migration Plugin Documentation: Consolidated migration documentation
    • Merged README.md, DEPLOYMENT.md, TABLE.md, and REVIEW.md into single PLUGIN.md
    • Added comprehensive deployment scenarios and safety warnings
    • Updated migration workflow to include maintenance mode instructions
    • Clarified bot operation requirements during migration (bot must run for Discord commands, but maintenance mode prevents user events)
    • Included complete table and column mapping reference
    • Added troubleshooting guide and post-migration verification steps
  • CI/CD: Enhanced workflows and automation
    • Optimized cache management in CI workflows
    • Updated workflows with improved permissions and error handling
    • Added checks for Cloudflare API token in preview deployment
  • Test Organization: Reorganized tests from tests/unit/ and tests/integration/ to domain-specific directories
    • Core permission system tests moved to tests/core/
    • Database tests consolidated in tests/database/ with comprehensive model coverage
    • Service layer tests organized in tests/services/ with error handler and HTTP client tests
    • Shared utility tests moved to tests/shared/ for config and version management
    • Module integration tests organized in tests/modules/
  • Test Fixtures: Improved fixture organization with better separation of concerns
    • Consolidated test constants and sample data fixtures
    • Enhanced validation utilities for test data integrity
    • Improved PGlite process management and cleanup
  • Database controller error handling and logging improvements
  • Documentation updates for debugging, testing fixtures, and versioning

Fixed

  • Database Migration Plugin: Improved migration reliability and data integrity
    • Cases now migrate in chronological order (guild_id, case_created_at) to ensure proper insertion order even with missing case numbers
    • Enhanced error handling for unique constraint violations with clear error messages
    • Improved duplicate detection and validation tools
    • Fixed exception message formatting (extracted f-strings to variables for better error handling)
    • Fixed session variable shadowing in migration methods
    • Removed unnecessary type ignore comments
    • Added complexity suppressions for large migration methods
  • Code Quality: Fixed linting and type checking issues
    • Removed unused functions from migration plugin tests
    • Improved code quality compliance across migration plugin
  • Validation: Improved rule validation system
    • Added support for large file exceptions in rule validation
    • Enhanced error handling and frontmatter validation in rule files
    • Fixed pre-commit hook entry for cursor validation
  • Documentation: Fixed command syntax and references
    • Updated command syntax in migration and development documentation
    • Fixed validation command in AGENTS.md for consistency
    • Updated related links in database management documentation
    • Fixed database installation link in configuration documentation
  • Testing: Enhanced test reliability and accuracy
    • Enhanced error handling in database migration tests
    • Improved database model relationship tests and error handler assertions
    • Updated URL assertion in error extractor tests for accuracy
    • Enhanced ...
Read more

v0.1.0-rc.5

22 Dec 03:22
5c33117

Choose a tag to compare

v0.1.0-rc.5 Pre-release
Pre-release

Added

  • owner_id to bot configuration and banner
  • Type reporting options for unknown variables and parameters in pyproject.toml
  • Rich representation for BaseModel
  • Utility functions for configuration checks in documentation scripts
  • Database initialization state inspection
  • Unified CLI entry point with comprehensive command groups for tux, test, docs, dev, db, and config
  • 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

  • Refactored and improved error handling across all CLI scripts (main, database, documentation, development, tests)
  • Enhanced terminal output formatting with indent guides and improved utility functions
  • Modularized coverage command and browser handling
  • Improved table listing with progress indication and better query structure
  • Streamlined bot execution flow and startup process
  • Updated documentation build and serve scripts with better error handling and configuration checks
  • Restructured development checks with a new Check class
  • Updated wrangler deployment scripts with improved argument handling and error checks
  • 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/ and admin-guide/ to developer/concepts/ with subdirectories (core/, handlers/, tasks/, ui/, wrappers/, database/) and admin/ 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

  • Log level for prefix override in prefix_manager changed to trace
  • Configuration file validation paths
  • KeyboardInterrupt handling across database, coverage, and HTML report generation scripts
  • Error message clarity in database version function and coverage reports
  • Docker installation guide and storage requirements in documentation
  • CLI entry point organization
  • Graceful handling of RuntimeError and SystemExit in main execution flow
  • 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

  • Legacy CLI scripts in favor of the unified Typer-based CLI
  • 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

Security

  • Updated database nuke command with enhanced security prompts and confirmation requirements
  • Improved validation for configuration file paths and environment variables

v0.1.0-rc.4

15 Jun 18:55

Choose a tag to compare

v0.1.0-rc.4 Pre-release
Pre-release

What's Changed

  • feat(fact): improve fun facts command by @electron271 in #861
  • feat: Nix Shell by @maningreen in #799
  • fix(tty_roles.py): handle role assignment errors by @electron271 in #864
  • fix(DEVELOPER.md): fix broken cli usage link by @marmishaw14 in #868
  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #857
  • refactor(eight_ball): update responses for clarity and humor by @electron271 in #873
  • fix(function): fix strip_formatting function regex by @CapnRyna in #874
  • Improve the run command by adding extra languages and fixing longstanding issues. by @HikariNee in #880
  • fix(.env.example): corrected sentry variable name by @marmishaw14 in #881
  • Fix cinnamon logo so its not all wobbly by @FluxC0 in #877
  • feat(snippets): change snippet command behavior by @CapnRyna in #875
  • fix(eight_ball): improve response formatting by @jakobdylanc in #879
  • fix(snippets): Fix reply mention in snippet behavior by @CapnRyna in #883
  • feat(tldr.py): enhance TLDR command with caching, platform detection,… by @kzndotsh in #859
  • feat(eval): implement sysadmin eval permissions by @electron271 in #884
  • fix(config.py): fix crashes if settings.yml is not up to date by @electron271 in #887
  • fix(devcontainer): add conditional zsh support and fix broken devcontainer config by @alik-6 in #886
  • Fix Javascript evaluation for $run and remove the global error handler. by @HikariNee in #885
  • Jail/unjail fix by @RainzDev in #888
  • fix(devcontainer-workflow): correct workspace mount and folder for /a… by @alik-6 in #893
  • chore: enhance developer tooling and configuration by @kzndotsh in #894

New Contributors

Full Changelog: v0.1.0rc3...v0.1.0rc4

v0.1.0-rc.3

13 May 19:10
fc64eae

Choose a tag to compare

v0.1.0-rc.3 Pre-release
Pre-release

What's Changed

  • fix(influx): update influxdb cog to use correct table for starboard s… by @thanosengine in #846
  • fix(afk): make afk command responses ephemeral by @thanosengine in #847
  • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #845
  • fix(tldr): condense tldr pages by @electron271 in #851
  • feat(wolfram): add Wolfram Alpha integration for math/science queries by @electron271 in #855
  • fix(DEVELOPER.md): fix broken link by @electron271 in #856
  • fix(influxdb): update logger for starboard to use correct fields by @thanosengine in #860

Full Changelog: v0.1.0rc2...v0.1.0rc3

v0.1.0-rc.2

29 Apr 18:49
be22e11

Choose a tag to compare

v0.1.0-rc.2 Pre-release
Pre-release

sorry for any confusion with this version there were a few conflicts

What's Changed

  • chore(deps): update alstr/todo-to-issue-action action to v5.1.12 by @renovate in #832
  • fix(deps): update dependency rich to v14 by @renovate in #837
  • fix(deps): update dependency githubkit to v0.12.11 by @renovate in #838

Full Changelog: v0.1.0rc1...v0.1.0rc2

v0.1.0-rc.1

20 Apr 04:05
fda66d6

Choose a tag to compare

v0.1.0-rc.1 Pre-release
Pre-release

After almost a year and a half, the first release candidate for 0.1.0 is out.

Changelog (VERY LONG)

What's Changed

Read more