Changelog
Notable changes to gtcnsl, newest first. Format follows Keep a Changelog; versions follow Semantic Versioning.
Keep a Changelog · SemVer
v0.6.3
2026-05-30
Fixed
- The release pipeline now uploads each binary from its real build path and refuses to publish a missing or empty file — the root cause of the empty downloads across v0.6.0–v0.6.2.
v0.6.2
2026-05-30
Fixed
- gtcnsl --version now exists and prints the same line as gtcnsl version.
- self-update no longer always rolls back — its post-swap version check was failing because the --version flag was missing.
- Release binaries report their version with the leading v, fixing the self-update "already latest" and tag-match checks.
v0.6.1
2026-05-30
Fixed
- The mirror step no longer relies on a shell feature missing from the release image, so binaries actually reach dl.gtcnsl.com (v0.6.0 published on Gitea but was never mirrored).
v0.6.0
2026-05-30
Added
- gtcnsl self-update replaces the running binary with the latest (or a specific --to vX.Y.Z) release from dl.gtcnsl.com: download → verify SHA-256 → atomic swap → confirm it runs → roll back on any failure. Flags: --dry-run, --rollback, --yes, --dl-host.
- Discovery and download read a versions.json manifest from the download host and never call the Git API, so self-update survives the host going private.
- A Self-update screen in the TUI (Check / Apply / Rollback) driving the same flow as the CLI.
- The release workflow mirrors every published binary + checksums.txt to the download host (the Gitea release stays the source of truth).
Changed
- Release binaries are now named gtcnsl-vX.Y.Z-linux-<arch> (with the leading v), matching the download host’s contract.
v0.5.0
2026-05-24
Added
- Interactive TUI: run gtcnsl with no arguments to drive Gitea, Runner, Config, Secrets and Doctor from a menu — every v0.1–v0.4 operation, with colour-coded logs, scrollable output and a spinner.
- gtcnsl config get / set / toggle — read or change a single app.ini key, with the same backup → atomic write → restart → health-check rollback as the declarative flow. Secret and compound keys are refused with a redirect.
- gtcnsl doctor — host pre-flight checks (systemd, outbound HTTPS, disk, root) plus installed-Gitea and runner checks; --fix --yes auto-remediates common problems (missing ca-certificates, missing secrets).
- A config schema catalog backs the config screens with defaults, types and key descriptions; gtcnsl config sync-schema fetches a newer Gitea’s schema.
Fixed
- Config and secrets writes now preserve file ownership after the atomic rename, so Gitea can still read its own config after an apply (previously the file could be left root-owned).
- doctor --fix now re-checks outbound HTTPS correctly within the same run after installing ca-certificates.
v0.4.1
2026-05-23
Added
- Every release is mirrored to S3-compatible object storage alongside the Gitea release, with a /latest/ prefix and a versions.json discovery manifest for the upcoming self-update.
- Pre-release tags (-rc / -beta / -alpha) get a pinned upload but are kept out of /latest/ and versions.json, so a candidate never becomes the default install target.
v0.4.0
2026-05-23
Added
- gtcnsl config apply --template — render and apply a declarative app.ini with ${VAR} substitution, a diff, a backup, a restart and automatic rollback on health-check failure.
- Managed secrets: gtcnsl secrets generate / check / rotate for Gitea’s four core secrets in /etc/gitea/secrets.ini; rotate re-applies config and rolls back both files on failure.
- An embedded Gitea config-schema catalog (defaults, types, descriptions), with gtcnsl config sync-schema to fetch a newer version.
- gtcnsl runner install --executor=podman (Tier 3, experimental).
v0.3.1
2026-05-23
Added
- Container egress and disk-space health probes during runner setup, with copy-paste fixes on failure (non-fatal warnings).
- gtcnsl runner reconfigure --admin-token cleans up the orphaned Gitea-side runner registration after a re-register.
- docs/VPS-CHECKLIST.md — an operator checklist for setting up a gtcnsl-managed runner on a VPS.
v0.3.0
2026-05-23
Added
- gtcnsl gitea install / upgrade — install the latest Gitea (GPG + SHA-256 verified) with a hardened systemd unit and a post-start health check; atomic version upgrades with rollback on failure.
- gtcnsl runner install / register / reconfigure / upgrade for act_runner, with host, docker and docker-rootless executors.
- Per-distro package-manager support (apt / dnf) with pre-existing-Docker detection.
- A single static binary for amd64, arm64 and armv7, distributed through the project’s own Gitea releases.