Skip to content

Releases: CJFWeatherhead/ChatrixCD

2025.12.17.6.1.2

17 Dec 19:37

Choose a tag to compare

Added

  • Run Command Mapped Switches: !cd run now supports tags and raw args.
    • Positional tags: !cd run <project> <template> update,molecule
    • Flagged tags: !cd run <project> <template> --tags=update,molecule
    • Raw args: !cd run <project> <template> --args="--some --args -e"
    • Graceful errors when the template doesn’t support these options
  • Aliases Management: New commands aliases add <alias> <command> and aliases remove <alias> to manage command aliases via chat. Supports prefixed (!cd) or unprefixed commands and preserves extra arguments.
  • Support for access token authentication in configuration (matrix.access_token) for integration testing and pre-authenticated scenarios
  • Logging for encryption availability during bot initialization to help diagnose encryption issues
  • Encryption diagnostics logging to validate encryption library installation and AsyncClient configuration
  • INTEGRATION_TEST_ENCRYPTION_SETUP.md guide documenting encryption setup for remote integration tests
  • Integration Test Automation: Automatic cache clearing and process cleanup before bot startup in integration test suite
  • Integration Test Documentation: Comprehensive debugging guide in Copilot instructions for troubleshooting integration test failures
  • Alpine Linux Encryption Fix: Complete documentation and deployment script for Alpine Linux encryption initialization (docs/ALPINE_ENCRYPTION_FIX.md)
  • Alpine Deployment Script: scripts/alpine_encryption_fix.sh for automated Alpine Linux encryption fix deployment
  • Manual Verification Helper: When auto-verification fails in daemon/log mode, bot now logs device ID and fingerprint for manual verification via Element's /verify command
  • Startup Device Info: Bot now displays device ID and Ed25519 fingerprint on startup in daemon/log modes for easy manual verification
  • Verification Cancellation Tracking: Bot now tracks device verification cancellations and shows manual verification instructions when verification fails
  • Cross-Verification Test: Added integration test to verify device verification between bots, including unverify/reverify cycle testing

Changed

  • Help/Usage: Updated help and usage text to document alias management commands.
  • Encryption Backend: Using vodozemac (Rust-based) for superior features
  • Alpine Deployment: Now uses system py3-matrix-nio package instead of venv package to ensure encryption works correctly
  • Device Verification: Log-only mode (-L) now automatically verifies incoming device verification requests, matching daemon mode behavior for autonomous operation
  • Verification Timing: Added retry logic with up to 5 seconds wait time for matrix-nio to process verification events before attempting auto-verification

Fixed

  • Device verification hanging in log-only mode (-L) when initiated from Element or other Matrix clients - now auto-verifies as intended

  • "Unknown transaction id" errors during device verification due to timing issues - added retry logic to wait for matrix-nio to process verification events

  • Device Fingerprint Logging: Fixed "Could not find own device" warning by correctly retrieving Ed25519 fingerprint from olm account instead of device store

  • Alpine Linux Encryption: Fixed "Encryption not enabled" errors on Alpine Linux by using system py3-matrix-nio and py3-olm packages

  • matrix-nio ENCRYPTION_ENABLED Flag: Resolved issue where matrix-nio 0.25.2 requires python-olm package for encryption detection even when using vodozemac

  • System Site Packages: Enabled system-site-packages in Alpine venvs to access system Python packages

  • Package Conflicts: Removed venv's matrix-nio to prevent conflicts with system package on Alpine deployments

    • Documentation Organization: Moved AI/LLM generated documentation to dev/ai/docs/ directory for better organization
      • Implementation plans, migration notes, and audit trails now in dev/ai/docs/
      • Updated Copilot instructions and CONTRIBUTING.md to reference new structure
      • User-facing documentation remains in /docs for GitHub Pages
    • vodozemac provides cross-device verification capabilities needed for robust encrypted communication
    • More features and better performance than python-olm
    • matrix-nio properly supports vodozemac through its established cryptography integration
    • Updated AsyncClient initialization with AsyncClientConfig(encryption_enabled=True) for explicit encryption support
  • Bot Initialization: AsyncClient now initialized with proper encryption configuration to ensure E2E encryption is available when dependencies are present

  • Integration Test Updates: Test runner now performs robust cleanup and update sequence:

    • Clears Python bytecode cache (__pycache__, .pyc files) before updating code
    • Stops any existing bot processes before starting new ones
    • Uses git fetch -f origin main && git reset --hard origin/main for reliable code updates instead of just git pull
    • Uses uv pip install --python .venv/bin/python to explicitly target virtualenv on Alpine systems

Fixed

  • Fixed encryption store loading when using access token authentication - removed incorrect conditional checks that prevented load_store() from initializing encryption properly (3 locations in bot.py)
  • Fixed AttributeError in command handler: MatrixUser.displayname should be display_name (typo causing bot crashes when processing commands)
  • Fixed encryption dependency detection and error handling for missing encryption libraries
  • Fixed integration test dependency installation to properly target virtualenv using uv pip install --python on Alpine systems where global pip is not available
  • Fixed stale Python bytecode cache causing old code to run despite git updates in integration tests

Commit Log

  • refactor(plugin_manager): Simplify plugin loading and metadata handling (0cc3cad)
  • Refactor plugin status methods to utilize superclass implementation and improve logging (8af3e69)
  • feat(semaphore_webhook): Add ignore_ssl option and improve code formatting (ec8391b)
  • feat(semaphore_webhook): Add ignore_ssl configuration option for SSL verification (36896a4)
  • refactor(tests): Improve readability of test code by formatting and organizing async calls (b805e2b)
  • Refactor test files for improved readability and consistency (b67a241)
  • refactor(aliases): Simplify constructor and logging statements in AliasManager (fe4062d)
  • feat(run): Add support for positional tags and raw arguments in run command (9bf284b)
  • feat(aliases): Add command alias management with add/remove functionality and usage examples (cd00839)
  • feat(aliases): Implement command alias management with add/remove functionality and enhanced resolution (6dca4da)
  • feat(requirements): Add additional dependencies for enhanced functionality (f7e02fe)
  • fix(logging): Correctly retrieve Ed25519 fingerprint from olm account to resolve "Could not find own device" warning (da5bc84)
  • feat(logging): Add device ID and fingerprint logging on startup in daemon/log modes, and track verification cancellations (0fc67c0)
  • feat(verification): Implement cancellation handling for device verifications with tracking and logging (32f498e)
  • feat(verification): Enhance key verification cancellation handling with detailed logging and verification manager integration (362151e)
  • fix: Update installation commands to use explicit Python paths for virtual environment setup (d324765)
  • feat(verification): Add manual verification logging and cross-verification tests for device verification failures (a591160)
  • feat(verification): Enhance device verification with auto-verification in log and daemon modes, and add retry logic for pending requests (941b62c)
  • feat(alpine): Implement Alpine Linux encryption fix with system packages and deployment script (f8907fa)
  • docs: Add clarity to documentation organization and usage guidelines (131a546)

Full Changelog: 2025.11.25.6.0.0...2025.12.17.6.1.2

2025.12.16.6.1.1

16 Dec 06:51

Choose a tag to compare

Added

  • Run Command Mapped Switches: !cd run now supports tags and raw args.
    • Positional tags: !cd run <project> <template> update,molecule
    • Flagged tags: !cd run <project> <template> --tags=update,molecule
    • Raw args: !cd run <project> <template> --args="--some --args -e"
    • Graceful errors when the template doesn’t support these options
  • Aliases Management: New commands aliases add <alias> <command> and aliases remove <alias> to manage command aliases via chat. Supports prefixed (!cd) or unprefixed commands and preserves extra arguments.
  • Support for access token authentication in configuration (matrix.access_token) for integration testing and pre-authenticated scenarios
  • Logging for encryption availability during bot initialization to help diagnose encryption issues
  • Encryption diagnostics logging to validate encryption library installation and AsyncClient configuration
  • INTEGRATION_TEST_ENCRYPTION_SETUP.md guide documenting encryption setup for remote integration tests
  • Integration Test Automation: Automatic cache clearing and process cleanup before bot startup in integration test suite
  • Integration Test Documentation: Comprehensive debugging guide in Copilot instructions for troubleshooting integration test failures
  • Alpine Linux Encryption Fix: Complete documentation and deployment script for Alpine Linux encryption initialization (docs/ALPINE_ENCRYPTION_FIX.md)
  • Alpine Deployment Script: scripts/alpine_encryption_fix.sh for automated Alpine Linux encryption fix deployment
  • Manual Verification Helper: When auto-verification fails in daemon/log mode, bot now logs device ID and fingerprint for manual verification via Element's /verify command
  • Startup Device Info: Bot now displays device ID and Ed25519 fingerprint on startup in daemon/log modes for easy manual verification
  • Verification Cancellation Tracking: Bot now tracks device verification cancellations and shows manual verification instructions when verification fails
  • Cross-Verification Test: Added integration test to verify device verification between bots, including unverify/reverify cycle testing

Changed

  • Help/Usage: Updated help and usage text to document alias management commands.
  • Encryption Backend: Using vodozemac (Rust-based) for superior features
  • Alpine Deployment: Now uses system py3-matrix-nio package instead of venv package to ensure encryption works correctly
  • Device Verification: Log-only mode (-L) now automatically verifies incoming device verification requests, matching daemon mode behavior for autonomous operation
  • Verification Timing: Added retry logic with up to 5 seconds wait time for matrix-nio to process verification events before attempting auto-verification

Fixed

  • Device verification hanging in log-only mode (-L) when initiated from Element or other Matrix clients - now auto-verifies as intended

  • "Unknown transaction id" errors during device verification due to timing issues - added retry logic to wait for matrix-nio to process verification events

  • Device Fingerprint Logging: Fixed "Could not find own device" warning by correctly retrieving Ed25519 fingerprint from olm account instead of device store

  • Alpine Linux Encryption: Fixed "Encryption not enabled" errors on Alpine Linux by using system py3-matrix-nio and py3-olm packages

  • matrix-nio ENCRYPTION_ENABLED Flag: Resolved issue where matrix-nio 0.25.2 requires python-olm package for encryption detection even when using vodozemac

  • System Site Packages: Enabled system-site-packages in Alpine venvs to access system Python packages

  • Package Conflicts: Removed venv's matrix-nio to prevent conflicts with system package on Alpine deployments

    • Documentation Organization: Moved AI/LLM generated documentation to dev/ai/docs/ directory for better organization
      • Implementation plans, migration notes, and audit trails now in dev/ai/docs/
      • Updated Copilot instructions and CONTRIBUTING.md to reference new structure
      • User-facing documentation remains in /docs for GitHub Pages
    • vodozemac provides cross-device verification capabilities needed for robust encrypted communication
    • More features and better performance than python-olm
    • matrix-nio properly supports vodozemac through its established cryptography integration
    • Updated AsyncClient initialization with AsyncClientConfig(encryption_enabled=True) for explicit encryption support
  • Bot Initialization: AsyncClient now initialized with proper encryption configuration to ensure E2E encryption is available when dependencies are present

  • Integration Test Updates: Test runner now performs robust cleanup and update sequence:

    • Clears Python bytecode cache (__pycache__, .pyc files) before updating code
    • Stops any existing bot processes before starting new ones
    • Uses git fetch -f origin main && git reset --hard origin/main for reliable code updates instead of just git pull
    • Uses uv pip install --python .venv/bin/python to explicitly target virtualenv on Alpine systems

Fixed

  • Fixed encryption store loading when using access token authentication - removed incorrect conditional checks that prevented load_store() from initializing encryption properly (3 locations in bot.py)
  • Fixed AttributeError in command handler: MatrixUser.displayname should be display_name (typo causing bot crashes when processing commands)
  • Fixed encryption dependency detection and error handling for missing encryption libraries
  • Fixed integration test dependency installation to properly target virtualenv using uv pip install --python on Alpine systems where global pip is not available
  • Fixed stale Python bytecode cache causing old code to run despite git updates in integration tests

Commit Log

  • refactor(tests): Improve readability of test code by formatting and organizing async calls (b805e2b)
  • Refactor test files for improved readability and consistency (b67a241)
  • refactor(aliases): Simplify constructor and logging statements in AliasManager (fe4062d)
  • feat(run): Add support for positional tags and raw arguments in run command (9bf284b)
  • feat(aliases): Add command alias management with add/remove functionality and usage examples (cd00839)
  • feat(aliases): Implement command alias management with add/remove functionality and enhanced resolution (6dca4da)
  • feat(requirements): Add additional dependencies for enhanced functionality (f7e02fe)
  • fix(logging): Correctly retrieve Ed25519 fingerprint from olm account to resolve "Could not find own device" warning (da5bc84)
  • feat(logging): Add device ID and fingerprint logging on startup in daemon/log modes, and track verification cancellations (0fc67c0)
  • feat(verification): Implement cancellation handling for device verifications with tracking and logging (32f498e)
  • feat(verification): Enhance key verification cancellation handling with detailed logging and verification manager integration (362151e)
  • fix: Update installation commands to use explicit Python paths for virtual environment setup (d324765)
  • feat(verification): Add manual verification logging and cross-verification tests for device verification failures (a591160)
  • feat(verification): Enhance device verification with auto-verification in log and daemon modes, and add retry logic for pending requests (941b62c)
  • feat(alpine): Implement Alpine Linux encryption fix with system packages and deployment script (f8907fa)
  • docs: Add clarity to documentation organization and usage guidelines (131a546)
  • Add TUI architecture and implementation documentation (37996ca)
  • docs: Add AI/LLM context documentation guidelines and naming conventions (e2d04c3)
  • fix: Fix encryption setup, display_name typo, and integration test uv usage (904bb50)
  • feat(tui): Complete rewrite of TUI for v7.0.0 with improved layout and navigation (7929676)

Full Changelog: 2025.11.25.6.0.0...2025.12.16.6.1.1

2025.12.15.6.1.0

15 Dec 07:59

Choose a tag to compare

Added

  • Support for access token authentication in configuration (matrix.access_token) for integration testing and pre-authenticated scenarios
  • Logging for encryption availability during bot initialization to help diagnose encryption issues
  • Encryption diagnostics logging to validate encryption library installation and AsyncClient configuration
  • INTEGRATION_TEST_ENCRYPTION_SETUP.md guide documenting encryption setup for remote integration tests
  • Integration Test Automation: Automatic cache clearing and process cleanup before bot startup in integration test suite
  • Integration Test Documentation: Comprehensive debugging guide in Copilot instructions for troubleshooting integration test failures

Changed

  • Encryption Backend: Using vodozemac (Rust-based) for superior features
    • Documentation Organization: Moved AI/LLM generated documentation to dev/ai/docs/ directory for better organization
      • Implementation plans, migration notes, and audit trails now in dev/ai/docs/
      • Updated Copilot instructions and CONTRIBUTING.md to reference new structure
      • User-facing documentation remains in /docs for GitHub Pages
    • vodozemac provides cross-device verification capabilities needed for robust encrypted communication
    • More features and better performance than python-olm
    • matrix-nio properly supports vodozemac through its established cryptography integration
    • Updated AsyncClient initialization with AsyncClientConfig(encryption_enabled=True) for explicit encryption support
  • Bot Initialization: AsyncClient now initialized with proper encryption configuration to ensure E2E encryption is available when dependencies are present
  • Integration Test Updates: Test runner now performs robust cleanup and update sequence:
    • Clears Python bytecode cache (__pycache__, .pyc files) before updating code
    • Stops any existing bot processes before starting new ones
    • Uses git fetch -f origin main && git reset --hard origin/main for reliable code updates instead of just git pull
    • Uses uv pip install --python .venv/bin/python to explicitly target virtualenv on Alpine systems

Fixed

  • Fixed encryption store loading when using access token authentication - removed incorrect conditional checks that prevented load_store() from initializing encryption properly (3 locations in bot.py)
  • Fixed AttributeError in command handler: MatrixUser.displayname should be display_name (typo causing bot crashes when processing commands)
  • Fixed encryption dependency detection and error handling for missing encryption libraries
  • Fixed integration test dependency installation to properly target virtualenv using uv pip install --python on Alpine systems where global pip is not available
  • Fixed stale Python bytecode cache causing old code to run despite git updates in integration tests

Commit Log

  • docs: Add clarity to documentation organization and usage guidelines (131a546)
  • Add TUI architecture and implementation documentation (37996ca)
  • docs: Add AI/LLM context documentation guidelines and naming conventions (e2d04c3)
  • fix: Fix encryption setup, display_name typo, and integration test uv usage (904bb50)
  • feat(tui): Complete rewrite of TUI for v7.0.0 with improved layout and navigation (7929676)
  • Minor integration improvements (2b37f3b)
  • Screens overhaul, fixing defective TUI (cac3666)
  • feat: Add OIDC URL token parsing and improve error handling (c8adf22)
  • Fix OIDC plugin initialization and add signature validation test (0c55462)

Full Changelog: 2025.11.25.6.0.0...2025.12.15.6.1.0

2025.11.25.6.0.0

25 Nov 14:43

Choose a tag to compare

Added

  • Modular TUI Architecture: Complete redesign of Text User Interface
    • Modular screen system with dynamic registration
    • Plugin-aware: plugins can register their own TUI screens
    • Event-driven architecture for component communication
    • Reusable widget library (StatusIndicator, MetricDisplay, DataGrid, etc.)
    • Comprehensive testing framework with Textual pilot tests
    • Screen registry for managing available screens
    • Plugin TUI integration system (PluginTUIExtension, PluginScreenMixin)
    • Example implementation for aliases plugin
    • Complete documentation (TUI_ARCHITECTURE.md, TUI_QUICKSTART.md)
    • Core screens: Main Menu, Status, Rooms, Logs, Configuration
    • Type-safe events: ScreenChangeEvent, DataUpdateEvent, PluginLoadedEvent, etc.
  • Plugin TUI Integration: Plugins can now extend the TUI
    • register_tui_screens() method for plugins
    • Dynamic screen registration during plugin load
    • Plugin screen cleanup on plugin unload
    • Example TUI extension for aliases plugin
  • OIDC Authentication Plugin: OIDC/SSO authentication moved to plugin
    • New plugins/oidc_auth/ plugin for OIDC authentication
    • Interactive TUI modal for token input in interactive mode
    • Console fallback for non-interactive/log-only mode
    • Automatic session restoration
    • Multiple identity provider support
    • Enabled by default, can be disabled in config
    • Comprehensive documentation in plugin README
  • Plugin/Module System: Extensible plugin architecture for bot functionality
    • Plugin manager with complete lifecycle management (initialize, start, stop, cleanup)
    • Plugin metadata support via meta.json (name, version, description, author, dependencies)
    • Dynamic plugin discovery and loading from /plugins directory
    • Mutual exclusion for conflicting plugins (e.g., only one task monitor active)
    • Plugin status display in !cd info command with version, activity status, and descriptions
    • Plugin-specific configuration via plugin.json files with config.json override support
    • Global load_plugins flag in bot configuration to enable/disable plugin loading
    • Three initial plugins included:
      • aliases: Command alias management migrated from built-in AliasManager (enabled by default)
      • semaphore_poll: Traditional API polling for task monitoring (enabled by default)
      • semaphore_webhook: Gotify webhook-based push notifications for task monitoring
      • example_plugin: Comprehensive template demonstrating plugin API
    • Comprehensive plugin development documentation and examples
    • Complete test coverage with 18 test cases for plugin system
  • Configuration Version 5: Updated configuration schema
    • Added bot.load_plugins boolean flag to control plugin loading
    • Each plugin now has its own plugin.json for default configuration
    • Settings in main config.json override plugin-specific settings
  • Runtime Metrics Tracking: Bot now tracks and displays runtime statistics
    • Messages sent count
    • Requests received count
    • Errors count
    • Number of emojis used in messages
  • Enhanced !cd info Command: Extended bot info display
    • CPU model name (e.g., "Intel i7 4770K")
    • Runtime type (binary vs Python interpreter)
    • All runtime metrics displayed in both plain text and HTML table format
  • Git Version Detection: Automatic commit ID appending for git-based deployments
    • Format: x.x.x.x.x-c123456 for git vs x.x.x.x.x for releases
    • Helps distinguish between release and development versions
  • Enhanced !cd rooms Command: Improved room listing with send permissions
    • Color-coded output (green for can send, red for cannot send)
    • Table format with "Send Status" column
    • Rooms where bot cannot send are hidden when -R (redaction) flag is set
  • Centralized Status Information: New get_status_info() method in bot instance
    • Provides unified structure for bot status used by both TUI and commands
    • Eliminates duplicate logic between different interfaces

Changed

  • TUI Architecture: Replaced monolithic TUI with modular architecture
    • Old chatrixcd/tui.py (2000+ lines) removed in favor of modular design
    • New structure in chatrixcd/tui/ with separated concerns
    • Better maintainability, testability, and extensibility
  • Bot Authentication API: bot.login() no longer takes oidc_token_callback parameter
    • OIDC authentication now handled by oidc_auth plugin
    • Core bot only handles password authentication
    • Cleaner separation of concerns between auth methods
    • Plugin registers itself as bot.oidc_plugin during initialization
  • Task Monitoring Architecture: Refactored from built-in to plugin-based system
    • Task monitoring now delegates to active TaskMonitorPlugin
    • Command handler's monitor_task() uses plugin manager for monitoring
    • Bot lifecycle includes plugin loading, starting, and cleanup phases
    • Graceful fallback with clear messaging when no task monitor plugin is loaded
    • Task monitor plugins receive sender information for personalized notifications
  • Configuration Migration: Automatic migration from v4 to v5
    • Plugins now use dedicated plugin.json files for configuration
    • Main config.json can override plugin settings for backwards compatibility
  • TUI Status Display: Harmonized with !cd info command
    • Updated to use centralized get_status_info() method
    • Consistent naming and formatting across TUI and commands
    • Added loaded plugins section with names, versions, types, and descriptions
  • Version Display: All version displays now use full version with commit ID when applicable
  • Room Permission Checking: Enhanced can_send_message_in_room() method
    • Now also checks allowed_rooms configuration setting
    • Combines Matrix power levels with config-based restrictions

Fixed

  • Fixed TUI screen import test to only test existing screens (removed references to deprecated SayScreen, LogScreen, SetScreen, ShowScreen)
  • Fixed async test class in test_aliases_plugin.py to use IsolatedAsyncioTestCase for proper coroutine handling
  • Fixed mock setup in test_commands.py to properly mock async task monitor methods
  • Fixed test cleanup in test_commands.py to properly cancel background tasks and suppress mock-related warnings
  • Fixed missing sender information in task completion notifications
  • Fixed URL parsing in semaphore_webhook plugin (now uses urllib.parse)
  • Fixed duplicate return statement in _gather_matrix_info() method
  • Fixed MetricDisplay widget to properly accept initialization parameters
  • Added explanatory comments to exception handlers per code review

Removed

  • Legacy TUI (TUI v1): Removed monolithic TUI implementation
    • Old chatrixcd/tui.py file removed (2000+ lines)
    • chatrixcd/tui_manager.py version selector removed
    • Environment variable CHATRIXCD_TUI_VERSION no longer needed
    • New modular TUI is now the only TUI implementation
  • OIDC Authentication Screen: Temporarily removed pending reimplementation
    • OIDC authentication will show error message directing to password auth
    • Will be reimplemented in modular TUI in future release

Commit Log

  • Workspace Setting for vscode (8a4c8e0)
  • Added plugin description to !cd info (0faa202)
  • test: fix test suite issues and clean up output (6db94f1)
  • tui: fix lint issues (remove unused imports, wrap long lines) (1fe279b)
  • Tidy TUI compatibility shims; format and fix lint issues in TUI package (a4ae7a6)
  • A very non atomic, plugins and tui update (f274504)
  • Fix failing unit tests after plugin system integration (abee555)
  • Add executive summary document for plugin system (415a63f)
  • Add comprehensive implementation and migration plans (257fa22)
  • Update CHANGELOG with plugin system and config v5 changes (052401e)
  • Address code review comments and fix issues (8fd47fb)
  • Bump config version to v5 and add plugin.json configuration files (1640df0)
  • Update plugin.py (dd0a21b)
  • Update commands.py (1008816)
  • Update readme.md (bda10e5)
  • Update config.json.example (4c5aeae)
  • Fix async test compatibility with Python 3.12+ (8e082e3)
  • Add comprehensive tests and documentation for plugin system (f4bee0c)
  • Integrate plugin system into bot and command handler (45872d0)
  • Add plugin system infrastructure and three initial plugins (0113585)

Full Changelog: 2025.11.15.5.2.0...2025.11.25.6.0.0

2025.11.18.5.2.1

18 Nov 18:44

Choose a tag to compare

Added

  • Runtime Metrics Tracking: Bot now tracks and displays runtime statistics
    • Messages sent count
    • Requests received count
    • Errors count
    • Number of emojis used in messages
  • Enhanced !cd info Command: Extended bot info display
    • CPU model name (e.g., "Intel i7 4770K")
    • Runtime type (binary vs Python interpreter)
    • All runtime metrics displayed in both plain text and HTML table format
  • Git Version Detection: Automatic commit ID appending for git-based deployments
    • Format: x.x.x.x.x-c123456 for git vs x.x.x.x.x for releases
    • Helps distinguish between release and development versions
  • Enhanced !cd rooms Command: Improved room listing with send permissions
    • Color-coded output (green for can send, red for cannot send)
    • Table format with "Send Status" column
    • Rooms where bot cannot send are hidden when -R (redaction) flag is set
  • Centralized Status Information: New get_status_info() method in bot instance
    • Provides unified structure for bot status used by both TUI and commands
    • Eliminates duplicate logic between different interfaces

Changed

  • TUI Status Display: Harmonized with !cd info command
    • Updated to use centralized get_status_info() method
    • Consistent naming and formatting across TUI and commands
  • Version Display: All version displays now use full version with commit ID when applicable
  • Room Permission Checking: Enhanced can_send_message_in_room() method
    • Now also checks allowed_rooms configuration setting
    • Combines Matrix power levels with config-based restrictions

Fixed

  • Fixed duplicate return statement in _gather_matrix_info() method

Commit Log

  • Apply code review feedback: optimize imports and emoji counting (53844e4)
  • Update docs/METRICS_AND_COMMANDS.md (2de2f08)
  • Fix unit tests to work with centralized status info (bbee3c9)
  • Harmonize status info and add allowed_rooms check (f6494b1)
  • Add documentation for metrics and enhanced commands (254f88d)
  • Add tests and update CHANGELOG for metrics/version features (e9ec7f3)
  • Add runtime metrics and enhanced bot info/rooms commands (309c6ff)
  • Initial plan (b105d9b)
  • Updated the download pages to be more user friendly (68e5725)
  • Small graphical overhaul in documentation (e560536)

Full Changelog: 2025.11.15.5.2.0...2025.11.18.5.2.1

2025.11.15.5.2.0

15 Nov 02:05

Choose a tag to compare

Added

  • Vodozemac Migration: Replaced deprecated libolm with vodozemac for enhanced security
    • Updated to vodozemac 0.9.0+ for improved cryptographic primitives

Changed

  • Migrated documentation hosting from GitHub Pages to Cloudflare Pages
  • Updated primary domain from chatrixcd.cjfw.me to chatrix.cd
  • Updated all documentation links to use new domain
  • Remote Store Integration: Integration tests now copy and use remote encryption stores for proper E2E testing
  • Log Analysis: Automatic collection and analysis of remote bot logs for error detection and redaction assessment

Changed

  • Integration Testing: Removed test_client configuration; tests now use preauthenticated bot sessions exclusively
  • Documentation: Updated integration testing docs to reflect removal of separate test client requirement

Fixed

  • Encryption Testing: Fixed integration tests to properly decrypt and validate encrypted messages using copied stores

Changed

  • Greeting Consistency: Bot responses now use user display names instead of full Matrix user IDs in greetings for better readability

Removed

  • GitHub Pages Workflow: Removed .github/workflows/pages.yml as documentation is now deployed via Cloudflare Pages
  • Encryption Verification Notification: Removed automatic notification message when bot cannot decrypt encrypted messages
    • Users must now manually verify devices through Matrix client
    • Reduces spam in rooms while maintaining security

Fixed

  • Message Formatting: Fixed markdown escaping issues by ensuring all formatted messages use proper HTML
    • Exit confirmation now uses HTML formatting instead of mixed markdown/HTML
    • Log tailing confirmations now use HTML formatting
    • Prevents markdown from being displayed as escaped text in Matrix clients
  • Encryption Issue Notifications: Bot now sends helpful messages when it receives encrypted messages it can't decrypt
    • Automatically notifies users to verify the bot's device when encryption issues occur
    • Prevents silent failures and guides users to resolve verification problems

Fixed

  • Matrix-nio API Compatibility: Fixed keys_query() calls to use updated matrix-nio 0.25.x API
    • Removed deprecated user_ids parameter and use client.olm.users_for_key_query instead
    • Removed dependency on deprecated libolm library
    • Maintained API compatibility with existing encryption features
  • Device Verification Commands: New !cd verify and !cd sessions commands for bot-to-bot verification
    • verify list - List unverified devices
    • verify start <user_id> <device_id> - Start verification with a specific device
    • verify pending - Show pending verification requests
    • verify auto - Auto-verify all pending requests
    • verify cross - Cross-verify with other ChatrixCD bots in the room
    • sessions list - List all known devices and verification status
    • sessions reset <user_id> <device_id> - Reset Olm session with a device
    • sessions clear - Clear unverified devices from store
    • sessions info - Show encryption session information
    • sessions save <filename> - Save current session state to file
    • sessions restore <filename> - Restore session state from file
  • Enhanced Integration Tests: Bots can now read each other's encrypted messages
    • Automatic cross-verification between test bots
    • Encrypted message decryption in test framework
    • Real message content validation instead of "[ENCRYPTED_RESPONSE]"
  • Improved Redaction: Enhanced redaction patterns based on real-world Matrix logs
    • Better detection of cryptographic keys and session data
    • Improved hostname and IP address masking
    • Enhanced token and credential detection
  • Automatic Device Verification: In daemon/log modes, the bot automatically verifies unverified devices to enable communication in encrypted rooms
  • Emoji-Based Verification: Full support for interactive emoji verification in TUI mode and automatic verification in daemon mode
  • Session Management: Save and restore Olm session state, device verification status, and encryption keys

Changed

  • Integration testing framework for live ChatrixCD instances
    • Remote bot management via SSH
    • Multi-host bot deployment support
    • Cross-bot interaction testing using existing authenticated bots
    • Simultaneous bot execution for realistic testing scenarios
  • Integration tests now use cross-bot communication instead of separate test users
  • Reduced test timeouts from 300s to 10s for faster iteration
  • Updated test configuration to support multiple simultaneous bots
  • Modified workflow to start all bots concurrently for inter-bot testing
  • Bot now responds in encrypted rooms even with unverified devices by automatically establishing encryption

Fixed

  • Fixed keys_query API calls to use user_ids parameter for matrix-nio compatibility
  • Bot response validation now works with separate test user account
  • Resolved authentication issues for OIDC-authenticated bots via session file access tokens
  • Integration tests now properly test cross-bot interactions without self-messaging
  • Fixed message reception in tests by adding periodic sync calls
    • Multi-host testing support for cross-bot functionality
    • Access token retrieval from session files for OIDC-authenticated bots
    • Reduced test timeout from 300s to 10s for faster failure detection
    • Matrix client authentication and room joining capabilities

Changed

  • Integration test timeout reduced from 300 seconds to 10 seconds for faster iteration

Fixed

  • Access token extraction for OIDC bots from session files
  • Matrix client session restoration for testing

Known Issues

  • Integration tests require separate test user credentials to properly test bot responses
  • Current test setup uses bot's own credentials, preventing proper command/response testing
    • Multi-host testing support for comprehensive integration testing
    • Automatic configuration discovery from remote servers
    • Automated test execution against running bot instances

Fixed

  • AliasManager.load_aliases() now properly handles empty alias files without logging errors
    • Matrix protocol integration tests
    • Configurable test setup for local network testing
    • Automated start/stop of remote bot during testing
    • Automatic Matrix configuration discovery from remote server

Changed

  • Temporarily removed E2E encryption requirement from matrix-nio dependency
    • Allows easier local development and testing on macOS
    • Reduces build complexity by avoiding python-olm compilation issues
    • E2E features can be re-enabled when needed for production deployments

Commit Log

  • Fix weird padding issue (e090131)
  • More color updates (9f52546)
  • Update README header and description (d2f2fb4)
  • Design changes (fdb0974)
  • Remove pages.yml workflow and update CHANGELOG (409548e)
  • Revert to an earlier version (efc3ce1)
  • Initial plan (93eb3dd)
  • More documentation updates (7343846)
  • Maybe no CSS is better (432f0c3)
  • removed gemfile dependencies (8ce9513)
  • Swapped theme for something less hacky (46ffcbb)
  • more theme hackery (856f69e)
  • Custom head.html (49b7ab0)
  • Custom Head (3fd6b7d)
  • Additional Selector test (3c0907b)
  • Selector Check (75e2fd7)
  • Removed unnecessary dark tags (62f55b5)
  • Further contrast tweaks (3992471)
  • Content readability improvements (7877471)
  • Add bigdecimal gem for Ruby 3.4.4 compatibility (ffc462a)

Full Changelog: 2025.11.09.5.1.0...2025.11.15.5.2.0

2025.11.09.5.1.0

09 Nov 21:33

Choose a tag to compare

Changed

  • Build System: Removed redundant QEMU emulation from build workflow
    • Docker Buildx with BuildKit can perform native cross-compilation without QEMU
    • QEMU was only needed for older docker run approach, not for buildx
    • BuildKit uses platform-specific base images and cross-compilation toolchains
    • Simplifies build process and potentially improves build times
    • Affects all architecture builds (x86_64, i686, arm64)

Changed

  • Deployment Focus: Updated all deployment documentation to reflect Alpine Linux as primary target
    • Alpine Linux (OpenRC) is now explicitly marked as primary deployment target
    • Debian/Ubuntu (systemd) marked as secondary target
    • Updated DEPLOYMENT.md with clear priority indicators
    • Updated docs/deployment.md to lead with Alpine recommendations
    • Added notes in systemd service files indicating Alpine as primary target
    • Enhanced OpenRC init script with primary target documentation
  • Docker Configuration: Removed environment variable support, now config.json only
    • Removed .env.example file (environment variables no longer supported)
    • Updated docker-compose.yml to mount config.json instead of using env vars
    • Updated docker-compose.alpine.yml to mount config.json instead of using env vars
    • Added notes in Dockerfiles about config.json requirement
    • Simplified Docker configuration to single source of truth
  • Documentation Cleanup: Removed outdated environment variable documentation
    • Removed "Environment Variables" section from docs/configuration.md
    • Environment variables were removed in version 2025.10.14
    • All configuration now exclusively through config.json

Fixed

  • Binary Download Links: Corrected binary artifact links in documentation
    • Updated docs/installation.md to use .dist.tar.gz format (was single file)
    • Fixed WSL installation instructions to use correct tarball format
    • All download links now correctly point to distributed tarball artifacts

Added

  • Repository Analysis: Reviewed repository alignment with copilot instructions
    • Identified high-priority improvements: test coverage reporting, security scanning
    • Identified medium-priority improvements: documentation consolidation, E2E testing, developer experience
    • Identified low-priority improvements: UX enhancements, accessibility features

Fixed

  • Build System: Fixed PyType_GetModuleByDef: symbol not found error in compiled binaries
    • Root cause: Alpine's default Python package provides shared libraries instead of static ones
    • Solution: Build Python from source with --disable-shared --enable-static=yes --with-static-libpython
    • Added --python-flag=no_site to Nuitka build flags for better static linking
    • Ensures --static-libpython=yes works correctly with musl libc on Alpine Linux
    • Affects all architectures (x86_64, i686, arm64)

Changed

  • Build Performance: Optimized build times in GitHub Actions
    • Python optimization flags (PGO + LTO) disabled by default for faster CI builds
    • Can be enabled for release builds with PYTHON_OPTIMIZE=yes build arg
    • Python source download cached with BuildKit cache mounts
    • Reduces Python build time from ~15 minutes to ~5 minutes per architecture

Commit Log

  • Remove redundant QEMU setup from build workflow (9f8e3a0)
  • Initial plan (017d18d)
  • Fix CHANGELOG: remove trailing whitespace and /tmp file reference (d2fb9c7)
  • Remove outdated environment variable documentation (61523c6)
  • Update CHANGELOG and add alignment improvement plan (5957823)
  • Add Alpine primary target notes to init system files (dd06379)
  • Remove environment variable support and update deployment docs (77598cf)
  • Use Alpine 3.21 instead of 3.22 in Dockerfile.build (2edf14a)
  • Initial plan (dd76baf)
  • Fix static Python build for Nuitka compilation on Alpine (ce51b86)
  • Initial plan (b8494ed)

Full Changelog: 2025.11.08.5.0.0...2025.11.09.5.1.0

2025.11.08.5.0.0

08 Nov 23:40

Choose a tag to compare

There is a build fault with the release, a re-release is being worked on

Fixed

  • Build System: Fixed Dockerfile.build to correctly rename main.bin to chatrixcd in standalone mode
    • Nuitka creates main.bin instead of main when using --mode=standalone
    • This was causing all builds (x86_64, i686, arm64) to fail with "No such file or directory" error

Changed

  • Documentation Accessibility (WCAG 2.1 AA Compliance): Complete accessibility overhaul for GitHub Pages documentation

    • Color Contrast: All colors now meet WCAG 2.1 AA standards (4.5:1 for normal text, 3.0:1 for large text)
      • Updated brand green: #3e836b (was #4A9B7F, improved from 3.34:1 to 4.50:1 contrast)
      • Updated link hover: #407e66 (was #5CB593, improved from 2.47:1 to 4.78:1 contrast)
      • Updated warning: #B45309 (was #FFC107, improved from 1.63:1 to 5.02:1 contrast)
      • Updated success: #1e7e34 (was #28A745, improved from 3.13:1 to 5.14:1 contrast)
      • Updated info: #0C7792 (was #17A2B8, improved to 5.16:1 contrast)
    • Semantic HTML: Improved structure with proper header, nav, section, article elements and ARIA labels
    • Keyboard Navigation: Added skip-to-content links and visible focus indicators (3px outline)
    • Responsive Design: Enhanced mobile support with proper viewport, touch-friendly buttons (44x44px minimum)
    • Meta Tags: Added comprehensive accessibility metadata (viewport, lang, Open Graph, Twitter Card)
    • User Preferences: Support for reduced motion, high contrast mode, and print stylesheets
    • Documentation: New ACCESSIBILITY.md page documenting compliance and testing
  • Code Refactoring: Comprehensive refactoring to improve maintainability and reduce code duplication

    • Extracted FileWatcher class for shared file monitoring logic (used by aliases.py and messages.py)
    • Simplified configuration migrations (reduced from 100 lines to 30 lines)
    • Modernized packaging: enhanced pyproject.toml with complete metadata, simplified setup.py to minimal stub
    • Added psutil to dependencies (was missing from pyproject.toml)
    • Moved PyYAML to dev dependencies (only used in tests)
    • Consolidated RESERVED_COMMANDS list in aliases.py
    • Net code reduction: ~478 lines of duplicate/cruft code removed
    • Restored AI/LLM acknowledgment sections following best practices for transparency
  • TUI Consolidation (Breaking Change): Removed Turbo Vision-style TUI, keeping only the classic TUI

    • Removed tui_turbo.py (~1,005 lines) and related tests
    • Removed -t/--tui-mode command-line option
    • Removed bot.tui_mode configuration option
    • Classic TUI is now the only TUI implementation
    • Rationale: Classic TUI is more feature-complete, consistent, and maintainable
  • Build System: Switched ALL architectures (x86_64, i686, arm64) to standalone mode for consistency

    • All binaries now distributed as .tar.gz archives containing executable and dependencies
    • Simplified installation process - same instructions for all architectures
    • More reliable than onefile mode on musl libc (avoids symbol resolution issues)
    • Distribution format: chatrixcd-linux-{arch}.dist.tar.gz → extract and run

Removed

  • Turbo Vision TUI: Removed experimental Turbo Vision-style TUI implementation
    • chatrixcd/tui_turbo.py removed
    • tests/test_tui_turbo_pilot.py removed
    • Command-line option -t/--tui-mode removed
    • Configuration option bot.tui_mode removed

Fixed

  • i686 Binary: Fixed ImportError with PyType_GetModuleByDef: symbol not found when running i686 binaries
    • Root cause was onefile mode's symbol resolution issues with musl libc on Alpine Linux
    • Solution: Use standalone mode for all architectures (consistent approach)

Commit Log

  • Removed redundant double header (893f867)
  • More documentation tidy up (7f87635)
  • Minor coding tweaks (58d00b3)
  • Raw update on redundant files (88c0210)
  • Update CHANGELOG.md with build fix (94c2c75)
  • Fix Dockerfile.build to rename main.bin instead of main (1c8e550)
  • Initial plan (14389fb)
  • Update _config.yml (7ed44b4)
  • Final accessibility improvements: fix success color and update CHANGELOG (46521bb)
  • Improve accessibility: WCAG AA compliant colors, semantic HTML, and proper metadata (ec32ac2)
  • Initial plan (7c66d43)
  • Fix: All test failures resolved - 382/382 tests passing! ✅ (c051391)
  • Fix: Add nio Sas compatibility to tui.py - 364/364 critical tests passing (8bc0438)
  • Fix: Clean up test_tui.py syntax errors from turbo removal (225c70f)
  • Fix: Address all unit test failures - nio compatibility and test updates (ba0f83c)
  • Fix: Address code review issues and test failures (0abe18b)
  • Docs: Complete GitHub Pages restructuring - configuration, deployment, support, security, contributing (914df0e)
  • Docs: Complete GitHub Pages restructuring with visual aids - DONE! 🎉 (8ba8f89)
  • Docs: Complete visual overhaul of key pages (quickstart, installation, architecture) (c987660)
  • Docs: Start GitHub Pages restructuring with visual aids (index, quickstart, architecture diagram) (4be4c4b)

Full Changelog: 2025.11.07.4.1.0...2025.11.08.5.0.0

2025.11.07.4.1.0

07 Nov 21:23

Choose a tag to compare

Changed

  • Build Workflow: Migrated from docker run to Docker buildx for all architecture builds
    • Better Performance: 35-50% faster builds with BuildKit's intelligent layer caching
    • Improved Caching: Using BuildKit cache mounts (RUN --mount=type=cache) for pip and ccache
    • GitHub Actions Cache: BuildKit layers cached via GitHub Actions cache backend (type=gha)
    • Unified Approach: Created Dockerfile.build for cleaner, more maintainable build process
    • Cross-Platform Optimization: BuildKit automatically optimizes when to use native vs emulated execution
    • All builds (x86_64, i686, ARM64) now use the same Dockerfile with platform-specific builds
    • Removed manual ccache directory management in favor of BuildKit's built-in caching

Fixed

  • Build Workflow: Fixed broken build process from PR #110 optimization changes
    • ccache Configuration: Fixed "cannot locate suitable C compiler" error in x86_64, i686, and arm64 builds
      • Changed from export CC='ccache gcc' to export PATH=/usr/lib/ccache/bin:$PATH (Alpine's standard ccache wrapper location)
      • This allows Nuitka's Scons build system to correctly detect the C compiler while still benefiting from ccache
    • ARM64 Runner: Re-enabled QEMU emulation for ARM64 builds to ensure compatibility
      • Reverted from ubuntu-24.04-arm64 native runners (requires GitHub Team/Enterprise plan) to ubuntu-latest with QEMU
      • Prevents 12+ hour wait times when ARM64 runners are unavailable
      • Keeps all other ARM64 optimizations: ccache, parallel compilation, and LTO disabled
    • All build optimizations from PR #110 remain intact: ccache caching, parallel compilation, LTO tuning, and test matrix optimization
    • Build Cache: Added ccache configuration for all architectures to cache compilation artifacts across builds
    • Docker Build Cache: Configured BuildKit with proper caching for faster Docker builds
    • LTO Optimization: Disabled Link Time Optimization (--lto=no) for ARM64 builds to dramatically reduce compilation time while keeping it enabled for x86_64 and i686
    • Parallel Compilation: Added --jobs=4 flag to Nuitka builds for parallel compilation
    • Test Optimization: Test workflow now runs only Python 3.12 for PRs, full matrix (3.11, 3.12, 3.13) only for main branch pushes
    • Parallelization: Removed unnecessary dependency between test and validate-build jobs to run them in parallel

Fixed

  • Build Workflow: Fixed PEP 668 "externally-managed-environment" error in GitHub Actions build workflow
    • Replaced --break-system-packages workaround with Python virtual environments for all architectures (x86_64, i686, arm64)
    • Now uses python3 -m venv /venv and activates the venv before installing dependencies
    • This is the recommended best practice per PEP 668, providing better isolation and compatibility with modern Linux distributions

Changed

  • Global Log Tailing Mode: Redesigned !cd log on/off commands for better usability
    • !cd log on and !cd log off are now global functions that enable/disable automatic log streaming for all tasks in a room
    • Both commands now require confirmation (like !cd run and !cd exit) with support for 👍/👎 reactions or text responses
    • Global log tailing works regardless of whether a task is currently running
    • When enabled, logs are automatically streamed for any task that runs in the room
    • When a task starts running and global log tailing is enabled, log streaming begins automatically
    • !cd log still shows logs for the last task (one-time retrieval)
    • !cd log <task_id> still shows logs for a specific task (one-time retrieval)

Fixed

  • Log Output Parsing for Ansible: Fixed !cd log on command showing raw JSON instead of properly parsed Ansible output
    • Semaphore API returns task logs as JSON array: [{"id":0, "task_id":123, "time":"...", "output":"log line"}, ...]
    • Updated get_task_output() in semaphore.py to parse JSON and extract "output" field from each log entry
    • ANSI color codes now properly preserved and converted to Matrix-compatible HTML with data-mx-color attributes
    • Logs now display with correct formatting and colors instead of showing raw JSON with encoded escape sequences

Added

  • Enhanced message formatting with m.notice, colors, semantic emojis, and tables
    • m.notice support: Informational commands now use m.notice message type for non-urgent notifications (help, info, projects, templates, status, rooms, admins, aliases, ping)
    • Color support: Added Matrix v1.10+ compliant color helpers using data-mx-color attributes:
      • Success messages in green (✅)
      • Error messages in red (❌)
      • Warning messages in yellow (⚠️)
      • Info messages in blue (ℹ️)
    • Semantic emojis: Standardized and expanded emoji usage across all commands:
      • ✅ ok/success
      • ⚠️ warning/changed
      • ❌ failed/error
      • 🔒 unreachable
      • ⏭️ skipped
      • 🛟 rescued
      • 🙈 ignored
      • 🔄 running
      • ⏸️ waiting
      • 🛑 stopped
    • HTML tables: Implemented table formatting for structured data display:
      • !cd help - Commands listed in table format with descriptions and emojis
      • !cd info - System information displayed in organized tables (bot, Matrix server, Semaphore)
      • !cd projects - Projects listed in table with name and ID columns
      • !cd templates - Templates listed in table with name, ID, and description
      • !cd rooms - Rooms listed in table with name and ID
      • !cd admins - Admin users listed in table
      • !cd aliases - Command aliases displayed in table format
    • Maintains sassy and fun personality throughout with emoji-rich responses

Changed

  • Build system now uses musl-based static compilation for maximum portability
    • All Linux binaries (x86_64, i686, arm64) now built on Alpine Linux using musl libc
    • Added --static-libpython=yes flag to statically link Python interpreter
    • Added --lto=yes flag for link-time optimization and better code size
    • Binaries now include all required libraries (OpenSSL, libffi, etc.) with no external dependencies
    • Eliminates reliance on glibc or other system libraries for maximum portability
    • Binaries work across different Linux distributions without compatibility issues
  • Complete reimplementation of !cd log command for better readability and async performance
    • ANSI color codes now properly converted to Matrix-compatible HTML instead of being stripped
    • Uses Matrix v1.10+ spec-compliant data-mx-color attributes on <span> tags (not inline CSS)
    • Uses <strong> tags for bold, <code> tags for monospace, <br/> for line breaks
    • Logs render beautifully in Matrix clients like Element with colored, monospace output
    • Improved async log tailing with 2-second polling interval (was 5 seconds)
    • More frequent, smaller updates during tailing (30 lines vs 50 lines per chunk)
    • Better one-time log display showing 150 lines (was 100 lines)
    • Better error, success, and info message color differentiation
    • Fixed: Removed inline CSS style attributes which Element strips for security
    • Fixed: Removed styled <pre> blocks which don't support nested tags in Matrix
    • Fixed: Changed from deprecated <font> tags to <span> tags per Matrix v1.10 spec
  • Improved consistency of --redact (-R) flag application - now properly passed to command handler for IP address redaction in info command
  • Updated documentation to accurately reflect Linux-only pre-built binaries (removed outdated Windows/macOS binary references)
  • Clarified platform availability in docs/index.md, docs/quickstart.md, and QUICKSTART.md

Fixed

  • Fixed misleading error message when no projects exist in Semaphore - now shows clear message to create a project instead of connection error
  • Fixed incorrect "multiple templates" message when no templates exist - now shows clear message to create templates with proper handling for 0, 1, and multiple template cases

Commit Log

  • Fix shellcheck warnings in build workflow (5f94f2b)
  • Update CHANGELOG.md (c93fd09)
  • Refactor test_workflow.py to eliminate code duplication (c184e92)
  • Fix unit tests for Docker buildx migration (47fd678)
  • Fix remaining Alpine version references in BUILD_WORKFLOW.md (d80ec3d)
  • Fix Alpine version in documentation to match Dockerfile.build (f1200a5)
  • Address code review feedback (225fe48)
  • Update documentation for Docker buildx migration (12e8e50)
  • Replace docker run with docker buildx for ARM64 cross-compilation (7c318b6)
  • Initial plan (b2f90ed)
  • Fix broken build process from PR #110 (2eea36d)
  • Initial plan (4737f71)
  • Update docs/CI_CD_OPTIMIZATION.md (c91f3a2)
  • docs: fix Docker Buildx example to match implementation (610b4f8)
  • fix: improve security and documentation accuracy (1697e69)
  • fix: remove duplicate package dependencies in build workflow (f1972b5)
  • docs: add comprehensive CI/CD optimization guide (f449d5d)
  • feat: optimize CI/CD workflows for faster build and test times (1bc8d96)
  • Initial plan (073c4df)
  • Fix PEP 668 error by using Python virtual environments in build workflow (290c496)

Full Changelog: 2025.11.04.4.0.1...2025.11.07.4.1.0

2025.11.04.4.0.1

04 Nov 06:34

Choose a tag to compare

Added

  • Comprehensive TUI Automated Testing with Textual Pilot (94 new tests!)

    • Added 44 core pilot tests for regular TUI main app, screens, and widgets (test_tui_pilot.py)
      • Main app startup, rendering, and navigation
      • All keyboard bindings (q, s, a, r, e, m, l, t, c, x)
      • Button navigation for all menu options
      • Theme application and switching (5 themes tested)
      • Screen display and back navigation for all screens
      • Widget rendering and data updates
    • Added 17 interactive workflow tests for regular TUI (test_tui_pilot_interactive.py)
      • Alias management workflows and navigation
      • Multi-screen navigation sequences
      • Rapid navigation stress testing
      • Screen stack integrity verification
      • Theme system validation and CSS completeness
      • Widget dynamic updates testing
      • Error handling for missing components
      • All keyboard shortcuts functionality
      • Application lifecycle validation
    • Added 33 comprehensive pilot tests for Turbo TUI (test_tui_turbo_pilot.py)
      • Main app startup with menu bar and status bar
      • F-key bindings (F1-F4) for menu navigation
      • Arrow key navigation (left/right menu cycling)
      • Theme application and validation (5 themes)
      • Menu screen navigation (File, Edit, Run, Help)
      • Multi-menu navigation workflows
      • Rapid menu navigation stress testing
      • Active tasks widget and status bar integration
      • Error handling for missing components
      • Application lifecycle validation
    • Total TUI tests increased from 40 to 134
    • Total test suite now includes 433 tests (up from 327)
    • Uses Textual's pilot feature for automated, reproducible TUI testing
  • Comprehensive end-to-end (E2E) tests for main entry point with input/output verification

    • 21 E2E tests for CLI argument parsing and configuration handling
    • 14 E2E workflow tests for complete user scenarios
    • Tests use subprocess for true end-to-end validation
    • Improved main.py test coverage from 0% to 23%

Changed

  • Updated TESTING.md documentation with comprehensive TUI testing information

    • Documented all 94 new TUI pilot tests (regular + turbo)
    • Added test file organization for pilot tests
    • Updated test suite composition (433 total tests)
    • Documented TUI test coverage improvements
    • Added detailed breakdown of core, interactive, and turbo tests
    • Updated coverage statistics and goals
    • Documented E2E testing approach
  • TUI Navigation: Added left/right arrow key navigation to cycle between menus in turbo TUI

    • Left/right arrow keys now cycle through File (F1), Edit (F2), Run (F3), and Help (F4) menus
    • Menu position tracking maintained when using F-keys or arrow keys
    • Complements existing up/down navigation within dropdown menus

Commit Log

  • Add 33 comprehensive pilot tests for Turbo TUI (1c22ce8)
  • Fix magic numbers in tests with named constants (b6dfeeb)
  • Update documentation with comprehensive TUI testing details (ecc70e0)
  • Add 17 interactive workflow tests - 101 total TUI tests passing (6474a36)
  • Add comprehensive TUI pilot tests - 44 tests passing (72034a1)
  • Initial plan (8e12a0a)
  • Fix logical OR issues in E2E test assertions (ff01e09)
  • Update documentation with E2E test information (9e76a2a)
  • Add comprehensive E2E tests for main entry point and workflows (be6c85e)
  • Initial plan (882e2d6)
  • Fix invisible text in TUI dropdown menus by using auto color (1206fdf)
  • Refactor menu navigation to reduce code duplication (dcae36a)
  • Add pet/scold to reserved commands and implement left/right menu navigation (ef350b1)
  • Initial plan (c1a6380)

Full Changelog: 2025.11.03.4.0.0...2025.11.04.4.0.1