GitHub Actions built only on tag pushes, so nothing verified that main
compiles. Adds ci.yml running check, unit tests, clippy and a release
build on Linux, plus a Windows MSYS2 build, with both binaries uploaded
as artifacts.
Two issues would have made that workflow hang or fail:
- Unknown CLI arguments fell through the dispatch match into the global
hotkey loop, so `scythe --version` (a typo, or any unrecognised flag)
silently became a background hotkey daemon that never exited. Unknown
arguments now report the flag and exit 2.
- test_audio_probe asserts that a system audio device opens and emits
samples. Headless runners have no audio server, so the suite could
never pass in CI. The test is now opt-in via SCYTHE_HW_TESTS=1 and
still runs on a real desktop session.
The multicall consolidation removed the scythe-daemon and scythe-ui crate
targets, but every packaging path still copied them, so a tag push failed
at the first packaging step and no release could be produced.
- release.yml: tarball, .deb and AppImage ship scythe plus daemon/ui/vrec
symlinks; AppRun execs scythe; Windows bundle copies scythe.exe only
- gitlab-ci.yml: artifacts publish target/release/scythe; Windows job
builds --bin scythe
- rpm spec and flatpak manifest install one binary and link the aliases
- NSIS installers target scythe.exe for shortcuts, finish page,
DisplayIcon and forwarded args, keeping legacy taskkill lines so old
installs shut down cleanly
Also make the gitlab fmt job advisory: it reported drift across 20 files
and build-linux hard-depended on it, blocking every build. A whole-tree
reformat belongs in its own commit.