# Changelog All notable changes to this project will be documented in this file. ## [0.12.4] - 2026-06-29 ### Bug Fixes - Use hardcoded matrix array for Gitea 1.26 compatibility ## [0.12.3] - 2026-06-29 ### Bug Fixes - Fix wiki link URLs, heading hierarchy, quote pip install vars - Improve runner service stability and deregistration ## [0.12.2] - 2026-06-28 ### Bug Fixes - Bump devx to 0.26.3 (latest with pinned deps) ## [0.12.1] - 2026-06-28 ### Bug Fixes - Add approval step to auto-merge workflow using REVIEW_GITEA_TOKEN ## [0.12.0] - 2026-06-28 ### Features - Upgrade all dependencies, add trigger-workflow command ## [0.11.1] - 2026-06-28 ### Bug Fixes - Makefile HOST/NAME requirement errors, add restart and list targets ## [0.11.0] - 2026-06-28 ### Features - Unified --become-password-file, --verbose, --no-status, labels fix ## [0.10.3] - 2026-06-27 ### Bug Fixes - Install hadolint on-the-fly in setup-image - Revert EXTRAS=ci default in setup-image - Add EXTRAS=ci to all setup-image calls, workflow-level CI_GITEA_TOKEN ### Refactor - Remove hadolint on-the-fly install workaround - Use devx Makefile aliases, bump devx>=0.23.0 ## [0.10.2] - 2026-06-27 ### Bug Fixes - Setup-image configures Gitea PyPI registry and shows pip errors - Gate auto-merge on release-dry-run and unmask failures - Bump devx>=0.22.0 and remove REPO_TOKEN alias ### Refactor - Rename REPO_TOKEN to CI_GITEA_TOKEN, consolidate env vars ## [0.10.1] - 2026-06-27 ### Bug Fixes - Set PYTHONPATH=src in publish Install CI tools step ### Refactor - Replace duplicated Makefile targets with devx.mak aliases - Consolidate publish.yml into post-merge.yml ## [0.10.0] - 2026-06-26 ### Features - Adopt devx tools, devx.mak fragment, ci extra, remove legacy install-devx ### Bug Fixes - Always run publish in post-merge (idempotent) ## [0.9.0] - 2026-06-24 ### Features - Adopt devx v0.11.1 across Makefile and workflows - Add Polish as officially supported language ## [0.8.1] - 2026-06-24 ### Bug Fixes - Repair publish workflow and add publish step to post-merge - Add build/twine to ci deps, activate venv in notify_failure ## [0.8.0] - 2026-06-24 ### Features - Remove .taskid file, use branch name only for task ID ### Bug Fixes - Add workflow_dispatch to publish workflow and update devx to 0.9.12 ## [0.7.0] - 2026-06-24 ### Features - Switch devx installation from git to Gitea PyPI registry - Adopt per-test timing quality gate from devx 0.7.0 ### Bug Fixes - Update devx to v0.4.2 and fix workflow env vars - Pin devx to v0.4.3 to fix post-merge workflow failures - Pin devx to v0.4.4 to fix validate-commit-msg and sync-wiki - Rewrite CHANGELOG with correct version ordering and missing sections - Lower test speed threshold to 4s and update devx to v0.8.2 - Retrospective fixes for CI/CD friction - Replace stale badge SHA URLs with raw/branch/badges/ ## [0.6.4] - 2026-06-22 ### Bug Fixes - Update devx to v0.4.2 and fix workflow env vars - Pin devx to v0.4.3 to fix post-merge workflow failures - Pin devx to v0.4.4 to fix validate-commit-msg and sync-wiki ## [0.6.3] - 2026-06-22 ### Bug Fixes - Add scripts/** to infrastructure classification config ## [0.6.2] - 2026-06-22 ### Bug Fixes - Include lint extras in setup-ci and setup-release - Use commit SHA URLs for badges to bypass Gitea cache - Make sync-wiki and vikunja depend on release - Pin devx to v0.4.0, fix cliff.toml preprocessor, bump to v0.7.0 ### Refactor - Fully automate PR merge — no manual label/review needed - Require tea CLI everywhere, fail on missing Vikunja task - Separate GRM and CI translations with validation - Migrate from scripts/ to devx package ## [0.6.1] - 2026-06-22 ### Bug Fixes - Badges always update on release commits + fix configure-repo PYTHONPATH - Enforce commit message convention on master with CI validation - Post-merge workflow failures (4 jobs) ## [0.6.0] - 2026-06-22 ### Bug Fixes - Molecule-tests matrix runner-index renders as empty for 0 - Use 1-based runner indices for Gitea Actions compatibility - Molecule-tests static matrix and role_dir path fix - Auto-merge label condition uses pull_request.labels - Revert review_pr.py to GiteaClient (tea v0.14.1 is interactive-only) (#70) ### Revert - Remove v0.6.0 release (no user-facing changes) ## [0.5.0] - 2026-06-22 ### Features - Enforce commit naming conventions and workflow discipline ### Bug Fixes - Clean up infrastructure-only releases and fix release classification - Rewrite changelog and re-tag releases at user-facing milestones ## [0.4.0] - 2026-06-21 ### Features - Replace inline workflow scripts with tested Python modules - User-friendly click errors with i18n in configure_repo - Bandit integration (#1) - Auto-delete branch after merge in configure_repo script - Add runner labels support and refactor i18n to JSON - Parallel molecule runner with kill-on-first-failure - Cross-runner molecule cancellation via Gitea API polling ### Bug Fixes - Set runner_mode to binary in multi-instance converge - Skip systemd operations in lifecycle molecule when unavailable - Improve make setup with version guard, pre-push hooks and commit-msg validator - Enforce GRM-N: conventional on master commits and PR titles - Remove molecule tests from pre-push hooks - Resolve bandit security warnings in source code and tests - CI pipeline for rootless Docker runners - CI workflows for rootless runner compatibility - Vikunja task resolution pagination in post_merge.py - Use PUT instead of POST for Vikunja task comments - Parse pytest output with warnings in check_test_speed - Use systemd as container command for rootless molecule tests - Add Docker APT repository before installing docker-ce - Use deb822_repository for Docker APT repo (proper GPG handling) - Dearmor Docker GPG key with gpg --dearmor for apt_repository - Use bash for gpg dearmor (pipefail not available in sh) - Install curl, gpg, ca-certificates in molecule prepare - Separate apt update after adding Docker repo, use variable for repo string - Add apt source debug tasks, fix arch mapping for Docker repo - Fail-fast CI, write Docker apt source directly, fix arch mapping - Skip rootless Docker daemon startup in molecule tests - Gate all Docker-dependent tasks behind docker_rootless_setup - Catch TimeoutExpired in parallel runner wait loop - Stream molecule subprocess output to CI logs - Run molecule pairs sequentially within each CI runner - Guard all systemctl --user tasks with docker_rootless_setup - Guard handler systemctl --user calls with docker_rootless_setup - Make user_setup and download tasks idempotent - Use gnupg instead of gpg package name on Arch Linux - Add default(0) to gitea_runner_uid in environment blocks - Set runner_name in deregister verify.yml - Security, dead code, idempotence, and documentation cleanup - Use content_base64 for Gitea wiki API, add --verify flag (#33) - Wiki links, add --strict integrity check for wiki sync (#34) ### Refactor - Standardise pre-commit hooks on make targets - Use http.HTTPStatus constants instead of magic numbers - Rework all scripts to use click and i18n - *(scripts)* Centralize constants, API clients, and HTTP status codes - Rootless Docker, fix auto-merge, molecule platform matrix ## [0.3.2] - 2026-06-21 ### Features - Smart CI and release skipping for workflow-only changes ### Bug Fixes - Set PYTHONPATH=. for release.py to find scripts.ci module (#32) ### Refactor - Split CI scripts, fix release PYTHONPATH, dynamic runner discovery ## [0.3.1] - 2026-06-21 ### Bug Fixes - Use correct Gitea 1.26 wiki API endpoints ## [0.3.0] - 2026-06-21 ### Features - Implement documentation-as-code with wiki sync and doc-coverage ## [0.2.2] - 2026-06-21 ### Bug Fixes - Bypass commit-msg hook for release commits - Enforce tests pass before tagging a release ## [0.2.1] - 2026-06-21 ### Bug Fixes - Strip git-cliff header from CHANGELOG.md updates ## [0.2.0] - 2026-06-18 ### Features - Parameterize all hardcoded configuration values as Ansible variables - Add GITEA_ADMIN_TOKEN support for integration test - Add AnsibleExecutor and i18n modules - Integrate AnsibleExecutor and i18n into CLI and RunnerManager - Add systemd template units and multi-instance Ansible support - Add lifecycle CLI commands and RunnerManager extensions - Add runner registry for simplified CLI UX - Add translated operation report for success and failure cases - Replace print() with stdlib logging module - Use click.echo() for user-facing messages with dual logging - Add colorized output for better visual feedback - Add --force flag to grm remove for unreachable runners - Make --ask-become-pass the default behavior ### Bug Fixes - Resolve idempotence issues and testing infrastructure - Remove recursive variable definitions in install and update playbooks - Add timeout to runner registration to prevent indefinite hangs - Override Docker container entrypoint to bypass run.sh wrapper - Set Docker working dir to /data for .runner persistence - Make integration test conditional on admin API accessibility - Remove recursive var definitions from install-runner.yml - Convert runner config from TOML to YAML format - Rewrite integration test to verify .runner file and container health instead of unreliable API checks - Eliminate duplicate console output, restore GRM_LOG_LEVEL filtering - Make grm list retrieve runner status correctly ### Refactor - Remove dead code and legacy artifacts - Migrate source terminology from act_runner to gitea_runner - Consolidate systemd checks and deduplicate role structure - Deduplicate CLI, remove dead code, move validation to business layer - Resolve_runner returns gitea_url, add --url CLI option, force remove improvements, code quality fixes ## [0.1.0] - 2026-06-17 ### Features - Initial implementation of Gitea Runner Manager