-
v0.11.0
Stablereleased this
2026-07-03 09:35:29 +00:00 | 5 commits to main since this releaseCodebase audit sweep (5 parallel agents: Python source, tests,
deploy.sh, docs, infra) — fixes below.Added
- Continuous CI — a
testworkflow runs the suite on every push tomain, not only on tag releases
(regressions between versions were previously unseen until the next tag). webwaits on asynchealthcheck (Caddyfile present) viadepends_on: condition: service_healthy,
so it no longer crash-loops against a missing config on first boot.- More tests — config validation (rate / sync_interval / packages), MikroTik URL-builder token guards,
HTML-escaping of operator/changelog fields, and asset cache-busting; plus an autouse fixture that resets
site.pyglobals between tests (removes order-dependent flakiness).
Fixed
- config:
web.rate_limit.rateis now format-validated at load — a typo like600/mused to pass
silently and render an invalid Caddyfile (written before downloads, so it could wedge first boot). - sweep: a version pinned into several channels is downloaded once — it was submitted to the pool
per-channel, causing redundant CDN fetches and a race on the shared.partfile. - deploy.sh: operator name/email and GoAccess/basic-auth usernames are escaped/validated before
being written intopackagemini.yml(a"///|could corrupt it);cmd_statusnowexports
LC_ALL(was an inertlocal) and restoresset -e; the three divergent "is GoAccess enabled" greps
are unified into one_goaccess_enabledhelper; the dnf-automaticsed/mkdirwrites are guarded;
set-certwarns whenopensslis missing; deadhf_perms_stateremoved; thethenkeyword-variable
renamed. - docs: corrected the
reboot_commandbehaviour in UPDATES.md (packagemini always overwrites it,
not "kept if present"); DESIGN.md GoAccess row (own port +portkey); "five → six" hardening measures
in SYSTEM-HARDENING.md; marked shipped TODO items (footer toggle, reports-over-web) done; fixed stale
/goaccess/…URLs in the compose file,env.example, and docs; documentedPM_GOACCESS_PORT.
Changed
- Docstrings added to
run_once,render_caddyfile,classify,same_bytes;Configdataclass type
hints aligned (tuple[str, ...]/dict[str, ChannelCfg]);.coveragegit-ignored.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Continuous CI — a