Skip to content

Releases: womat/relayhat

v2.0.2

Choose a tag to compare

@github-actions github-actions released this 16 Oct 21:32

Changelog

Documentation

  • a266d56 docu: remove legacy notes, fix stale versions and paths

Maintenance

  • dfb2b12 chore(deps): golib v2 and github.com/womat/gpio

Which file do I need?

Archive Raspberry Pi model
linux_arm64 Pi 3 / 4 / 5 / Zero 2 W with a 64-bit OS
linux_armv7 Pi 2 / 3 / 4 / 5 / Zero 2 W with a 32-bit OS
linux_armv6 Pi 1 and Zero (1st gen)

v2.0.1

Choose a tag to compare

@github-actions github-actions released this 15 Oct 20:55

Changelog

Documentation

  • 8497c69 docu: name the token file token-hashes

Which file do I need?

Archive Raspberry Pi model
linux_arm64 Pi 3 / 4 / 5 / Zero 2 W with a 64-bit OS
linux_armv7 Pi 2 / 3 / 4 / 5 / Zero 2 W with a 32-bit OS
linux_armv6 Pi 1 and Zero (1st gen)

v2.0.0

Choose a tag to compare

@github-actions github-actions released this 15 Oct 20:36

Changelog

Features

  • 299fadd feat: contrib/relayhat.service with a sandbox; build with -trimpath
  • 90e0be6 feat: exit code 78 for a config that does not load or validate

Documentation

  • 77d84d7 docu() durations need a unit, 0s instead of 0
  • 6643064 docu() example client address from the documentation range, not a real LAN
  • f4d58b3 docu: commit subjects follow Conventional Commits, type(scope): description
  • 913e56d docu: tokens, lastChange.user, root-owned install, contrib unit, TLS 1.3, upgrading to 2.0.0

Maintenance

  • 7e96017 chore() add golangci-lint, update the dependencies
  • 510a096 chore: golib v1.5.1
  • 233ccb4 refactor: golib xlog instead of a logger of its own

Other

  • 96d2557 feat!: TLS 1.3 only
  • f0da581 feat!: bearer tokens from a token file, managed with "relayhat token"
  • 3bc9746 feat!: lastChange names the token of the caller instead of its host name

Which file do I need?

Archive Raspberry Pi model
linux_arm64 Pi 3 / 4 / 5 / Zero 2 W with a 64-bit OS
linux_armv7 Pi 2 / 3 / 4 / 5 / Zero 2 W with a 32-bit OS
linux_armv6 Pi 1 and Zero (1st gen)

v1.9.1

Choose a tag to compare

@github-actions github-actions released this 08 Oct 16:33

Changelog

Bug fixes

  • b1338f1 fix() a reload that fails to start keeps the relays, no switch during shutdown

Documentation

  • dedd722 docu() present relayhat for its public README
  • 6437fae docu() security policy: report vulnerabilities privately

Maintenance

  • a81343a chore() one branch: work on main, release by tag, drop develop
  • 8d273e1 chore() update golib to v1.3.0 (go-gpiocdev 0.9.2)
  • ee7878d chore() update golib to v1.3.1 (broker password redacted in its logs)

Which file do I need?

Archive Raspberry Pi model
linux_arm64 Pi 3 / 4 / 5 / Zero 2 W with a 64-bit OS
linux_armv7 Pi 2 / 3 / 4 / 5 / Zero 2 W with a 32-bit OS
linux_armv6 Pi 1 and Zero (1st gen)

v1.9.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 21:04

Upgrade notes

  • New: switch lock per relay. minSwitchInterval (e.g. 5s, 10m, at most 24h) refuses a switch within that
    time of the last one. The request is answered with HTTP 429, a Retry-After header and
    {"error": "switching locked for …"}, and the relay stays as it is. The lock applies to every client, the web page
    included, and runs from the last switch, so it also holds across a reload or restart. Start states are never
    refused. Without minSwitchInterval nothing changes.
  • Changed: a request for the current state is no switch. PATCH /relays/{name}/on on a relay that is already on
    still answers 200, but it no longer updates lastChange and no longer starts the lock; it is also allowed while the
    relay is locked. Clients that repeat the current state (e.g. Node-RED on every poll) therefore no longer hide the
    real last switch.
  • API: relays carry lock: {intervalSeconds, remainingSeconds} when minSwitchInterval is set.
  • Web page: a locked button is disabled and counts down (🔒 Locked · 0:04), the lock is shown below it.

Changelog

Features

  • ea73381 feat() switch lock per relay (minSwitchInterval)

Which file do I need?

Archive Raspberry Pi model
linux_arm64 Pi 3 / 4 / 5 / Zero 2 W with a 64-bit OS
linux_armv7 Pi 2 / 3 / 4 / 5 / Zero 2 W with a 32-bit OS
linux_armv6 Pi 1 and Zero (1st gen)

v1.8.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 20:28

Changelog

Features

  • d1bda66 feat() web page to see and switch the relays, with last switch and display settings

Which file do I need?

Archive Raspberry Pi model
linux_arm64 Pi 3 / 4 / 5 / Zero 2 W with a 64-bit OS
linux_armv7 Pi 2 / 3 / 4 / 5 / Zero 2 W with a 32-bit OS
linux_armv6 Pi 1 and Zero (1st gen)

v1.7.0

Choose a tag to compare

@github-actions github-actions released this 07 Oct 19:27

Upgrade notes

  • Error responses are now JSON {"error": "..."} (was a bare string such as "relay not found"). A 500 carries only internal server error; the cause is in the log.
  • Unknown config keys are an error. Remove jwtSecret and jwtID from webserver: – JWT is no longer supported, authentication is API key only.
  • Config validation: each relay needs a GPIO between 2 and 27, and no GPIO may be used twice.
  • env: prod no longer falls back to the embedded development certificate; certFile must exist.
  • Environment variables are only expanded in the form ${VAR}; a bare $ stays as it is.
  • New startState per relay (off default, on, last). For last, create /opt/relayhat/data owned by the service user.
  • SIGHUP keeps the state of relays that stay configured and refuses a broken config instead of exiting. For systemctl reload, add ExecReload=/bin/kill -HUP $MAINPID to the unit.

Changelog

Features

  • bd8209b feat() configurable relay start state, JSON errors, switch audit log
  • f79a4c6 feat() keep relay state across reload, harden lifecycle and config

Bug fixes

  • cce5eb7 fix() change module name to github.com/womat/relayhat
  • f28d926 fix() change module name to github.com/womat/relayhat
  • 72af9ee fix() docu, clean shutdown, create builtin certificates

Documentation

  • dd41d85 docu() MIT license, CLAUDE.md, README update, regenerate Swagger
  • 2312f2a docu() install from release, single license section

Maintenance

  • ee30efa chore() adopt s0meter build, CI and release tooling
  • f529995 chore() test that a web server error restarts the app

Which file do I need?

Archive Raspberry Pi model
linux_arm64 Pi 3 / 4 / 5 / Zero 2 W with a 64-bit OS
linux_armv7 Pi 2 / 3 / 4 / 5 / Zero 2 W with a 32-bit OS
linux_armv6 Pi 1 and Zero (1st gen)