Commit graph

7 commits

Author SHA1 Message Date
spearzificial
2bd1e7c598 fix(packaging): make the AppImage self-contained and restore the RPM libva requirement
Two defects found by inspecting the published v0.2.19 artifacts.

The AppImage contained the binary and the desktop file and nothing else.
The binary links FFmpeg, PipeWire, ALSA and XCB directly, so the image
only ran on a host that happened to carry the exact FFmpeg build the
binary was linked against, which is the opposite of what an AppImage is
for. The packaging step now bundles the shared library closure that ldd
resolves, points the binary at it with an RPATH of $ORIGIN/../lib, and
prepends it to LD_LIBRARY_PATH in AppRun. The C runtime is deliberately
left on the host, because bundling a different glibc than the rest of
the system expects produces failures that are very hard to trace. The
step fails if fewer than five libraries were collected or if the image
was not produced, so a silently empty image can never ship.

alien drops libva2 when it converts the Debian package to an RPM,
because it has no Debian to RPM name rule for it. libva is loaded at
runtime by the FFmpeg VAAPI device, so the requirement is now added back
explicitly with rpm --addrequires and the build fails if it is missing
from the finished package. Without it an RPM install would leave
hardware encoding unavailable until the user noticed and installed libva
by hand.

Version bumped to 0.2.20 across the manifest, lock file, RPM spec, AUR
PKGBUILD and the guide.
2026-10-21 17:02:00 +05:30
spearzificial
f7f778916f chore(release): v0.2.19
v0.2.18 was already published to Forgejo on 2026-10-11, carrying the
pre-fix binary, so this cycle cuts a new version rather than moving the
published tag.

The version is bumped in Cargo.toml, Cargo.lock, the RPM spec, the AUR
PKGBUILD and the project guide so they stay in step. Cargo.lock matters
on its own: the CI workflow builds with --locked, which fails outright
when the manifest and the lock file disagree on the package version.
2026-10-21 16:51:48 +05:30
spearzificial
007e965d6a docs: point the project at the oiupoyt GitHub repository
origin now resolves to https://github.com/oiupoyt/scythe.git, using the
oiupoyt credential that is authenticated in the store. The spearzificial
repository stays as a mirror, and the topology table records both along
with the reason the two histories needed a merge: the LICENSE files were
authored independently on each side with byte-identical content, so the
branches had diverged by one commit.

The README pointed at the spearzificial repository for its badge, release
links and clone URL, and still listed GTK 3 and GTK Layer Shell as build
prerequisites even though the GTK backend was retired and no GTK crate
remains in the manifest. It also asked for Rust 1.80 while the crate uses
the 2024 edition, which needs 1.85.
2026-10-21 16:40:27 +05:30
spearzificial
2e9716d85d docs: record CI workflows, remote topology and the Windows autostart gap
The Repository Topology table still listed the old oiupoyt GitHub remote
as origin and named a separate spearzificial remote. origin now points at
spearzificial, so the table and both Dual-Push Rule blocks are updated to
the origin/forgejo pair.

Documents the two GitHub Actions workflows: ci.yml compiles and tests
both targets on every push, release.yml packages and publishes on a v*
tag. Records that the fmt check is advisory and that hardware-dependent
tests are opt-in via SCYTHE_HW_TESTS=1.

apply_autostart_system only has a Linux body, so its two parameters were
unused on Windows and the Windows build warned. Marked the parameters as
intentionally unused off Linux and documented the real gap behind it:
Windows has no registry Run key write in either the overlay toggle or
the NSIS installer, so the autostart switch currently does nothing on
Windows.
2026-10-20 18:18:03 +05:30
spearzificial
5988785d57 fix(cli): dispatch from argv[0] so daemon symlinks work; harden e2e run
Multicall dispatch used std::env::current_exe(), which reads /proc/self/exe
and resolves symlinks. Every installed alias therefore reported the stem
"scythe", so scythe-daemon and vrec-daemon fell through to client mode and
opened the HUD instead of starting the engine. The aliases shipped by
install.sh, the deb/rpm/flatpak packages and the Hyprland exec_cmd line were
all affected; a stale pre-consolidation target/release/scythe-daemon masked
it during local testing.

invoked_stem() now reads argv[0] and only falls back to current_exe() when
argv[0] has no usable stem. Verified against a packaged tarball: both daemon
aliases hit the running-instance guard while scythe, scythe-ui, vrec and
vrec-ui open the client.

The e2e guard also probed liveness with `scythe --status`, which calls
ensure_daemon_running() and so spawned a daemon while probing, then chased
its own tail. It now connects to the socket directly, records the running
daemon's command line and working directory, stops it gracefully, and
restores it on exit so a developer's recorder survives a test run.

Help text now reports the unified binary and marks --gtk as a deprecated
alias, since the GTK backend was retired.
2026-10-20 16:55:33 +05:30
spearzificial
e02bfefd72 docs: record repo topology, retired settings and this maintenance cycle
- PROJECT_GUIDE: repository table with forgejo as source of truth and
  spearzificial as the active GitHub account; explains that the oiupoyt
  GitHub token is expired and why the username is pinned in the remote URL
  so Git picks the right credential from the multi-account store
- PROJECT_GUIDE: document ShowOverlay and the retired-config table with the
  reason each key existed without effect
- README: point releases, clone URL and CLI examples at the unified binary
  and the spearzificial repository
- TODO_CHECKLIST: add the release pipeline, dead config, ShowOverlay and
  e2e socket entries; note that pre-v0.2.18 src/bin paths are historical
2026-10-20 16:33:48 +05:30
spearzificial
16edf3c693 docs: overhaul PROJECT_GUIDE.md with v0.2.18 unified binary architecture and features 2026-10-20 14:59:47 +05:30