Commit graph

22 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
0a406ba154 fix(packaging): correct runtime dependencies and drop the retired GTK deps
The Debian package declared libgtk-3-0 and libgtk-layer-shell0, which
belonged to the retired GTK backend, and omitted FFmpeg entirely. The
binary links libavcodec, libavformat, libavutil, libswresample and
libswscale directly, so a clean machine would have installed the package
and then failed to start it. The dependency list is now taken from the
dynamic section of the actual build output: libavcodec60,
libavformat60, libavutil58, libswresample4, libswscale7,
libpipewire-0.3-0, libxcb1, libasound2 and libva2.

XCB needs no extra package. The xcb crate marshals the SHM protocol in
Rust, so only libxcb.so.1 is linked and there is no libxcb-shm.so.0
load at runtime.

The RPM spec still said version 0.1.0 and required gtk3 and
gtk-layer-shell. It now tracks the Cargo.toml version, drops the GTK
packages, and adds the VAAPI, ALSA and XCB requirements it actually
needs.

The AUR PKGBUILD installed target/release/scythe-daemon and
target/release/scythe-ui, which no longer exist as build targets, so
any AUR build would have failed at the install step. It now installs the
single unified binary and points the compatibility names at it.

MSYS2 no longer installs gtk3 for the Windows build.
2026-10-21 16:50:06 +05:30
spearzificial
6fcdf357f7 ci: add build workflow; reject unknown args; make audio probe opt-in
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.
2026-10-20 17:10:45 +05:30
spearzificial
d01cdcb449 fix(ci): package the unified scythe binary instead of removed targets
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.
2026-10-20 16:31:46 +05:30
4a23b62de9 ci: disable automated release notes generation to preserve minimal notes 2026-09-11 07:28:22 +05:30
96dcfc1a17 fix(windows): overhaul Windows capture, encoding fallback, overlay translucency, installer DLL locking, and CI packaging
Some checks are pending
Release & Packaging / Build Linux Packages (.tar.gz, .deb, .rpm, .AppImage) (push) Waiting to run
Release & Packaging / Build Windows Binaries (.exe) (push) Waiting to run
Release & Packaging / Publish GitHub Release (push) Blocked by required conditions
2026-09-08 17:26:39 +05:30
6be83b21e6 fix(ui): remove bottom bar under cards, fix dropdown alignment and prevent card shift; bump v0.2.5
Some checks are pending
Release & Packaging / Build Linux Packages (.tar.gz, .deb, .rpm, .AppImage) (push) Waiting to run
Release & Packaging / Build Windows Binaries (.exe) (push) Waiting to run
Release & Packaging / Publish GitHub Release (push) Blocked by required conditions
2026-09-06 20:50:34 +05:30
0749bb2e61 Fix Windows overlay transparency, global hotkeys, toast duplication, and file dialogs
Some checks are pending
Release & Packaging / Build Linux Packages (.tar.gz, .deb, .rpm, .AppImage) (push) Waiting to run
Release & Packaging / Build Windows Binaries (.exe) (push) Waiting to run
Release & Packaging / Publish GitHub Release (push) Blocked by required conditions
2026-09-06 14:04:44 +05:30
1e8f440acb Fix Windows DXGI compilation errors and bump version to v0.2.1 2026-09-06 06:52:56 +05:30
900b7a9629 feat: auto-update system, datetime file naming, obsidian theme, and shadowplay toast overlay
Some checks are pending
Release & Packaging / Build Linux Packages (.tar.gz, .deb, .rpm, .AppImage) (push) Waiting to run
Release & Packaging / Build Windows Binaries (.exe) (push) Waiting to run
Release & Packaging / Publish GitHub Release (push) Blocked by required conditions
2026-09-05 22:08:49 +05:30
b39252adb8 ci: update release workflow to package and publish scythe artifacts 2026-09-05 15:59:26 +05:30
899cb884cd ci(release): omit zip package and publish only vrec-setup.exe for Windows 2026-09-05 07:33:22 +05:30
e0c5d1d0b5 ci(release): package windows installer as vrec-setup.exe instead of standalone no-install 2026-09-05 00:37:20 +05:30
f667c0aeab ci(release): publish single standalone vrec.exe for Windows without installer 2026-09-05 00:34:16 +05:30
0ecd522da0 feat(windows): bundle ffmpeg runtime dlls and build standalone executable vrec.exe via nsis 2026-09-04 22:50:47 +05:30
2208445c9f chore(ci): Add clean release notes template and prevent duplicate changelog entries 2026-09-04 16:34:31 +05:30
3a27b279b2 ci: Remove blueprints from release bundle, fix desktop EOF for AppImage, and set target for Windows bindgen 2026-09-03 20:37:34 +05:30
46b56852b8 ci: Isolate MSYS2 environment with path-type minimal and allow partial release publication 2026-09-03 20:12:05 +05:30
c2ec9e846f fix(ci): Resolve FFmpeg 6.1 pointer mutability and MSYS2 gcc include headers 2026-09-03 20:06:47 +05:30
01474a261f ci: Fix missing libavfilter-dev on Linux and configure clang in MSYS2 on Windows 2026-09-03 19:59:38 +05:30
4d45a260d8 ci: Add comprehensive packaging matrix for .deb, .rpm, .AppImage, tarball, and .exe 2026-09-03 19:51:52 +05:30
0d73a17815 feat(windows): Implement Windows DXGI Desktop Duplication capture and packaging definitions (AUR, RPM, Flatpak, GitHub Actions) 2026-09-03 07:45:45 +05:30