2025.11.07.4.1.0
·
202 commits
to main
since this release
Changed
- Build Workflow: Migrated from
docker runto 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.buildfor 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'toexport 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
- Changed from
- ARM64 Runner: Re-enabled QEMU emulation for ARM64 builds to ensure compatibility
- Reverted from
ubuntu-24.04-arm64native runners (requires GitHub Team/Enterprise plan) toubuntu-latestwith QEMU - Prevents 12+ hour wait times when ARM64 runners are unavailable
- Keeps all other ARM64 optimizations: ccache, parallel compilation, and LTO disabled
- Reverted from
- 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=4flag 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
- ccache Configuration: Fixed "cannot locate suitable C compiler" error in x86_64, i686, and arm64 builds
Fixed
- Build Workflow: Fixed PEP 668 "externally-managed-environment" error in GitHub Actions build workflow
- Replaced
--break-system-packagesworkaround with Python virtual environments for all architectures (x86_64, i686, arm64) - Now uses
python3 -m venv /venvand activates the venv before installing dependencies - This is the recommended best practice per PEP 668, providing better isolation and compatibility with modern Linux distributions
- Replaced
Changed
- Global Log Tailing Mode: Redesigned
!cd log on/offcommands for better usability!cd log onand!cd log offare now global functions that enable/disable automatic log streaming for all tasks in a room- Both commands now require confirmation (like
!cd runand!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 logstill 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 oncommand 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()insemaphore.pyto 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-colorattributes - Logs now display with correct formatting and colors instead of showing raw JSON with encoded escape sequences
- Semaphore API returns task logs as JSON array:
Added
- Enhanced message formatting with m.notice, colors, semantic emojis, and tables
- m.notice support: Informational commands now use
m.noticemessage 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-colorattributes:- 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
- m.notice support: Informational commands now use
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=yesflag to statically link Python interpreter - Added
--lto=yesflag 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 logcommand 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-colorattributes 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
styleattributes 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