• v1.0.0 ff000db850

    uptime.link runner v1.0.0
    Release / build-and-release (push) Successful in 17m33s
    Stable

    jkunz released this 2026-10-15 07:50:38 +00:00 | 4 commits to main since this release

    Breaking Changes

    • ship the runner as Node.js 26.11.1 single executables instead of Deno binaries (runner)
      • The executable names stay the same: uptimerunner-linux-x64, -linux-arm64, -macos-x64, -macos-arm64 and -windows-x64.exe.
      • Linux hosts need glibc 2.28 or later plus libstdc++6 and libatomic1; without libatomic.so.1 the executable does not start and exits with 127. Alpine/musl is not supported. macOS hosts need 13.5 or later.
      • The Windows executable is built but not yet run in tests.
      • The Deno module entry point and its Deno configuration are gone; the runner is no longer a Deno module.
      • uptimerunner --version prints uptimerunner <version> instead of the bare version.
      • The protocol types are no longer re-exported by the runner; import them from @uptime.link/interfaces.
    • install and update the runner with the gitzone-managed installer (installer)
      • It verifies the downloaded executable and its third-party notices against the release's SHA256SUMS.txt and runs the executable with --version before it touches the installation; a mismatch, a missing entry or missing checksums are refused. The notices install beside the executable.
      • It accepts only a SemVer 2.0 version with an optional v (or latest) for --version and as the release tag the Gitea API names, and downloads over HTTPS only, also on redirects, with connect, idle and transfer time limits.
      • An update moves the previous installation aside instead of deleting it first, restarts a running uptimerunner service with the new version, and restores the previous installation and service when any step fails. Every failure exits non-zero with the failed step.
      • The installer itself now needs sha256sum or shasum besides curl.
      • The options stay --version <version> and --install-dir <dir>; the new --dry-run checks, without root and without changing the system, that the release carries every file the installation needs. The executable still installs to /opt/uptimerunner/uptimerunner, linked from /usr/local/bin/uptimerunner.
    • release with the gitzone-managed release workflow (release)
      • A v* tag builds the five executables with Node.js tooling only, after checking that the package.json version equals the tag.
      • The release carries exactly the executables, their third-party notices (.third-party-notices.txt and .json) and SHA256SUMS.txt; its description is the version's changelog section.
      • A published asset is never replaced: a release that already has an asset of the same name fails before anything uploads.

    Features

    • trust the operating system's CA store in addition to Node's bundled CAs (runner)
    • check jobs carry the coordinator's plannedTime, and results report it back in their timing (runner)

    Fixes

    • take the runner protocol types from @uptime.link/interfaces, so the runner builds from its own repository (runner)
    • report an HTTP check that exceeds its timeout as timed out instead of not ok (runner)
    • write the config file, which holds the runner token, with mode 0600 instead of a world-readable one (runner)
    • close the TCP connection of a check on every outcome, including a timeout (runner)
    • honour UPTIMERUNNER_CONFIG in the run, once and config commands (runner)
    • keep environment overrides when connection settings come from command-line flags, and stop ignoring config file errors in that case (runner)

    Maintenance

    • build with tsbuild 6, bundle with tsbundle and tssea, test with tstest 8 on Node.js (runner)
    • upgrade build tooling to tssea 1.2.1 and tsbundle 3.6.1, and generate the installer and release workflow with gitzone 9.1.0 binaryCli managed assets; the release workflow installs with --frozen-lockfile (tooling)
    Downloads