-
v1.0.0
Stablereleased this
2026-09-18 14:02:01 +00:00 | 0 commits to master since this releaseFirst stable release. The configuration format and the
/routeros/index.jsonschema are now covered by
Semantic Versioning: breaking changes only arrive with a new major version.Fixed
- Truncated downloads were stored and served as complete files. When upstream dropped a connection
mid-transfer the body simply ended early — no error — and the short file was renamed into place.
MikroTik's CDN cuts long-running connections, so on a slow link this hit most large files: main
routeros-*.npkpackages, CHR images, netinstall archives, WinBox, and theall_packagesbundles. A
truncated bundle failed to unpack on every sweep (bundle <ver>/<arch> failed: File is not a zip file),
so that arch never completed and stayed hidden — e.g.arm/arm64and theirzerotierpackage
missing from a version — while being re-downloaded every sweep. Downloads are now verified against
Content-Lengthand resumed with HTTPRangefor as long as each request adds bytes (giving up
after 3 consecutive requests without progress); nothing incomplete is ever written to the mirror.
404s (package not built for an arch) are still not retried. refreshleft the sync worker down after the next reboot. It sent SIGHUP withdocker compose kill,
and Docker marks a container as manually stopped ondocker killwith any signal; the
unless-stoppedrestart policy then skippedsyncat the next daemon start — e.g. the automatic
reboot after security updates — whilewebandgoaccesscame back.refreshnow signals the worker
from inside the container. If you usedrefreshon an earlier version, runsudo ./src/deploy.sh start
once (or checkstatus) after the next reboot.
Added
- Integrity pass —
deploy.sh verify(python -m packagemini --verify). Compares every mirrored
file's size with upstream'sContent-Length; a mismatch removes the file and reopens its arch
(.complete/.size/ "download all" zip) so the next sweep re-fetches it. Files whose upstream
length can't be determined are left alone. The worker runs the pass once automatically on first
start per mirror root (.verifiedmarker), so mirrors filled by earlier releases repair themselves
on upgrade. Upgrade note: expect affected arches to disappear from the listings and
index.jsonuntil they have been re-fetched — on a slow link that can take hours.
Changed
- Terminology: "rootless" → "non-root containers" throughout the docs, README badge, compose
comments anddeploy.sh status. The containers run asuid:gid 1000, but the Docker daemon runs as
root with no user-namespace remapping, which is not what "rootless Docker" means. No behaviour change;
DESIGN.md now states the actual boundary. - README: removed the "under active development — feature-incomplete until v1.0" notice.
- Default branch renamed
main→master. The CI trigger,deploy.sh's no-tags fallback and the
docs follow. Installs that track the branch tip must switch once:sudo ./src/deploy.sh update master
(installs on release tags — the default — are unaffected).
Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
0 downloads
- Truncated downloads were stored and served as complete files. When upstream dropped a connection