• v1.1.0 603e1e344b

    v1.1.0
    Release / build (amd64, freebsd) (push) Successful in 56s
    Release / build (amd64, linux) (push) Successful in 58s
    Release / build (arm64, freebsd) (push) Successful in 58s
    Release / build (arm64, linux) (push) Successful in 58s
    Release / build (loong64, linux) (push) Successful in 1m3s
    Release / build (riscv64, freebsd) (push) Successful in 1m1s
    Release / build (riscv64, linux) (push) Successful in 1m1s
    Release / release (push) Successful in 20s
    Stable

    petrbalvin released this 2026-07-26 19:48:22 +00:00 | 0 commits to main since this release

    Added

    • RISC-V and LoongArch builds — CI now produces binaries for linux/riscv64,
      linux/loong64, and freebsd/riscv64 in addition to the existing four
      targets.
    • 80 % coverage gatejust test and CI enforce ≥ 80 % test coverage on
      internal/ and pkg/ packages.
    • Handler and email test suites — 22 handler tests covering CORS, rate
      limiting, validation, honeypot, and send/store paths via mock interfaces.
      12 email composition tests covering all four form types.

    Changed

    • Module migrated to sourcedock.dev — all imports and documentation now
      reference sourcedock.dev/petrbalvin/nuntius.
    • CI migrated from Forgejo to Gitea — workflows now live in
      .gitea/workflows/, run on the fedora runner, and use the standard
      actions/* short form.
    • Dependency bumpinterpres updated to v1.1.1.
    • IPv6-first — the server now binds [::]:port for explicit dual-stack.
    • Installer rewritten in Pythoninstall.py replaces install.sh.
    • nginx → Caddy — all documentation and the installer now use Caddy as the
      recommended reverse proxy.

    Fixed

    • Rate limiter memory leak — a periodic cleanup goroutine removes expired
      IP entries from the token-bucket map.
    • Silent template errorscompose() now produces a fallback HTML message
      instead of silently discarding template execution errors.
    • Silent JSON encoding errors — all json.NewEncoder(w).Encode() calls now
      log errors instead of discarding them.
    • CI formatting gategofmt -l in the test workflow now actually fails
      when it finds unformatted files.
    • Missing just fmt recipe — added gofmt -w target.
    • Copyright headers — added to all Go and Python source files.
    • Smoke test restricted to native builds — cross-compiled binaries now
      skip the smoke test step since they cannot execute on the Linux amd64 CI
      runner.
    Downloads