Release Notes - Version 0.1.3¶
Released: 2026-02-17¶
🔧 Bug Fixes¶
- DevContainer issues:
- Docker buildx tagging: Pre-built image approach with simple tag (
bess-rcu-dev:arm64) - .venv permission errors: Removed anonymous volume mount (Docker creates volumes as root → bind mount allows container-managed ownership)
- Missing coreutils: Added package for VS Code essential utilities
- Pre-commit hooks: Removed install (git hooks fail in bind-mounted
.gitfrom Windows) - python3-can conflict: Removed system package (installed via pip to avoid dpkg configuration errors)
- ARM64 exec format error: Build script now automatically registers QEMU emulation using multiarch/qemu-user-static (more reliable than tonistiigi/binfmt), includes verification step to ensure ARM64 emulation actually works before building
- Missing unzip for fpm: Added unzip package (required by fpm to extract Python wheels when building .deb packages)
- py3compile SIGSEGV under QEMU: Both DevContainer and Dockerfile.test-arm64 now handle py3compile segfault (exit code -11) gracefully by catching installation failures, forcing dpkg reconfiguration, and verifying Python installation
- Release workflow:
- Merge command: Fixed syntax
-X theirs(was--strategy-option=theirs CHANGELOG.md) - Empty section headers: Content check AFTER blank stripping prevents empty
### Deprecated - awk syntax error: Consistent 2-space indentation in YAML multiline (bash parser compatibility)
- Debian package build:
- Added
--no-auto-dependsflag (skip Python metadata parsing, explicit dependencies) - Removed
--config-filesand--deb-default(files don't exist at build time) - Output paths:
output/deb/directory for package, checksums, artifacts - Version-agnostic Dockerfile: Wildcard
bess-rcu_*_arm64.deb(was hardcoded 0.1.2) - Previous errors resolved:
ModuleNotFoundError,JSON::ParserError,Invalid package configuration, file not found
🗑️ Removed¶
- DevContainer non-root user approach: Removed
ndrs-adminuser setup after extensive testing revealed Docker Desktop Windows nosuid limitation cannot be worked around with configuration changes - Package testing workarounds: Removed
test-deb-in-devcontainer.ps1script andPACKAGE_TESTING.mddocumentation (root user makes these unnecessary)
🎉 What's New¶
- Native CLI command (
bess-rcu) for system management and monitoring: - Entry point via
pyproject.toml[project.scripts], CLI wrapper at/usr/local/bin/bess-rcu - Three invocation methods:
bess-rcu,uv run bess-rcu,python -m bess_rcu - Subcommands:
status(system health),config(validation),run(main entry) - Global options:
--help,--version,--config FILE - CLI and package management documentation:
- CLI commands reference (04.cli-commands.md) with examples and troubleshooting
- Package management guide (02.package-management.md) - 856 lines covering installation, updates, lifecycle scripts, troubleshooting
- Debian package build infrastructure:
- Docker-based workflow:
Dockerfile.build(Ubuntu 22.04, fpm, uv),Dockerfile.test-arm64(ARM64 test container) - Automated scripts:
build-package.sh,health-check.sh,test-local.ps1(interactive/build-only modes) - Comprehensive documentation: Local testing guide (738 lines), Docker README (339 lines), deployment overview
- Package components for production:
bess-rcu.service- systemd unit with restart policies- Lifecycle scripts:
postinst(115 lines - service setup, CLI wrapper),prerm(31 lines),postrm(50 lines - purge support) - Environment config:
bess-rcu.default - GitHub Actions CI/CD: build-debian-package.yml - Automated .deb building, ARM64 QEMU testing, GitHub Release integration, workflow sequencing (runs after Release workflow)
- PowerShell validation: 21.validate-deployment-files.ps1 - 87 checks across systemd, bash, Docker, CI/CD, documentation
- ARM64 DevContainer:
- Production-matching environment (Debian 12, Python 3.11, ARM64 via QEMU)
- Pre-built image with
build-image.ps1(fast/cleanup/clean build modes) - Root user for pragmatic development (allows dpkg, apt-get without permission issues)
- Package building support: Includes fpm (Effing Package Manager), Ruby, build-essential for creating .deb packages directly in DevContainer
- VS Code integration (Python, Pylance, Black, Ruff, TOML)
- Setup guide (05.devcontainer-setup.md) - 500+ lines
- Common bash aliases (
ll,la,l) for better user experience - Organized package output:
output/deb/directory structure - Interactive ARM64 testing: Python dependencies via pip, full CLI support, container-aware systemd checks
✨ Improvements¶
- Postinst script: Dynamically creates
/usr/local/bin/bess-rcuwrapper, sets permissions, adds CLI usage instructions - Documentation restructured:
- Deployment README: template format, directory structure, "What Goes Where" table, workflow diagram
- Getting Started & Main README: comprehensive links to pre-commit hooks, CLI commands, DevContainer setup
- Package output location: Moved to
output/deb/(from project root), updated all build scripts and workflows - Build workflow sequencing: workflow_run trigger (runs AFTER Release workflow), adds packages to existing GitHub Release
- GitHub Release body formatting: Enhanced markdown with proper headers (###), code blocks, table layout for better readability
- ARM64 testing: Requires buildx for
--platform linux/arm64(QEMU alone can't override amd64) - Package dependencies: Disabled auto-generation (
--no-auto-dependsflag), explicit--dependsdeclarations - Dockerfile.test-arm64: Wildcard pattern for version-agnostic builds (
bess-rcu_*_arm64.deb) - DevContainer configuration:
- Removed
.venvvolume mount (bind mount sufficient, avoids root ownership issues) - Added
UV_LINK_MODE=copyto suppress hardlink warning (expected on cross-filesystem mounts) - Switched to root user: Pragmatic solution for Docker Desktop Windows (nosuid on bind mounts prevents sudo from working)
- Removed unnecessary complexity:
--security-opt=apparmor=unconfined(doesn't fix nosuid limitation), explicit SHELL environment variable - Simplified Dockerfile: Removed user creation, sudo group setup, and user-specific configuration
- DevContainer documentation: Updated setup guide to explain
.venvmanagement workflow (manual cleanup when switching between Windows and Linux environments), documented UV hardlink warning as normal behavior - DevContainer ARM64 QEMU stability:
- Added
terminal.integrated.inheritEnv: falseto prevent VS Code server segfault when reading shell environment - Added
updateContentCommandto ensureuv syncruns on every container start (fallback ifpostCreateCommandfails) - Added bash aliases (
ll,la,l) for convenience - Fixed
py3compileBrokenPipeError: Split Python installation into separate RUN step withPYTHONDONTWRITEBYTECODE=1during apt-get only (prevents QEMU timing issues) -
Release preparation: Updates both pyproject.toml and uv.lock for version consistency
-
Update release workflow and add Debian package support (#57)
Full Changelog: View on GitHub