Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
2896468
feat(linux): add Wayland CLI recording with VA-API
shivamhwp Sep 5, 2026
afbd715
fix(linux): preserve cancellation and bound shutdown waits
shivamhwp Sep 5, 2026
b4b8ae7
ci(linux): pin actions used to build CLI packages
shivamhwp Sep 5, 2026
a408279
feat(linux): support X11 and automatic encoder fallback
shivamhwp Sep 5, 2026
537ceee
fix: exclude source selection from recording history duration
shivamhwp Sep 5, 2026
c278524
fix(linux): open a fresh PipeWire remote for encoder retries
shivamhwp Sep 5, 2026
5afccdb
fix(linux): validate and repair native Wayland capture on Radeon
shivamhwp Sep 5, 2026
0624a9f
fix(linux): survive X11 source loss and reclaim idle capture memory
shivamhwp Sep 30, 2026
79256b9
fix(linux): isolate capture faults and preserve audio timing
shivamhwp Oct 2, 2026
cfb77c4
fix(linux): preserve capture time on older VA encoders
shivamhwp Oct 2, 2026
2680da7
fix(linux): fail timing guards without native assertions
shivamhwp Oct 2, 2026
c9ed976
fix(linux): preserve the initial static portal frame on older VA
shivamhwp Oct 2, 2026
12e9b25
fix(linux): keep portal startup clocks and streams stable
shivamhwp Oct 2, 2026
aa1cb1e
fix(linux): stop rejected capture pushes and refresh resized video pools
shivamhwp Oct 2, 2026
9cd2446
fix(linux): negotiate frame ceilings below the requested rate
shivamhwp Oct 2, 2026
11af9d7
fix(linux): match VA keyframes to capture rate and bound fallback cle…
shivamhwp Oct 2, 2026
c100333
fix(linux): keep rate changes playable and bound full attempt cleanup
shivamhwp Oct 3, 2026
4a4435e
test(linux): check partial movie timing across rate changes
shivamhwp Oct 3, 2026
fc3de38
fix(linux): preserve final frame and count actual queue drops
shivamhwp Oct 3, 2026
3363be0
fix(linux): emit sparse HEVC frames without blocking audio
shivamhwp Oct 3, 2026
16358d7
fix(linux): preserve movies when audio starts late
shivamhwp Oct 3, 2026
58d2ff2
test(linux): prevent audio gaps when idle video spans a pause
shivamhwp Oct 3, 2026
a52d865
test(linux): bound idle-video regression waits
shivamhwp Oct 3, 2026
e0ba723
test(linux): identify slow source-loss cleanup phases
shivamhwp Oct 3, 2026
4c9fa73
fix(linux): keep recording through short stalls and report lost media
shivamhwp Oct 5, 2026
7640740
fix(linux): let software H.264 use its quality's bitrate
shivamhwp Oct 5, 2026
27d782e
fix(linux): return memory after a stall drains its buffers
shivamhwp Oct 5, 2026
230be3c
fix(linux): finalize the movie when video encoding hangs at stop
shivamhwp Oct 5, 2026
e8e70eb
fix(linux): address review of stall handling
shivamhwp Oct 5, 2026
f6fedc4
fix(linux): measure lost audio against recorded pause intervals
shivamhwp Oct 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 40 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,46 @@ concurrency:
cancel-in-progress: true

jobs:
linux:
name: Linux CLI and capture lifecycle
runs-on: blacksmith-4vcpu-ubuntu-2404
timeout-minutes: 20
steps:
- uses: actions/checkout@11d5960a326750d5838078e36cf38b85af677262 # v4
with:
persist-credentials: false
- uses: dtolnay/rust-toolchain@6bed0761d98439e5a578e2877258200ad565ba87 # stable
with:
components: rustfmt
- name: Install native dependencies
run: |
sudo apt-get update
sudo apt-get install -y pkg-config libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev gstreamer1.0-pipewire \
gstreamer1.0-plugins-base gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly \
gstreamer1.0-libav ffmpeg dbus-daemon xvfb x11-apps pipewire
- name: Build and test
run: |
cargo fmt --check
cargo check --workspace --locked
cargo test --workspace --locked
dbus-run-session -- cargo test -p linux portal_roundtrip --locked -- --ignored
cargo test -p linux node_watch --locked -- --ignored
./scripts/package-cli-linux.sh
- name: Test packaged CLI
run: |
stage="$(mktemp -d)"
trap 'rm -rf "$stage"' EXIT
tar -xzf dist/cli/linux/wrec-cli-x86_64-unknown-linux-gnu.tar.gz -C "$stage"
python3 scripts/test-cli-linux.py "$stage"
python3 scripts/test-capture-linux.py "$stage/bin/wrec"
- name: Upload Linux CLI package
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4
with:
name: wrec-cli-linux
path: dist/cli/linux/*.tar.gz

rust:
name: Rust checks
runs-on: blacksmith-6vcpu-macos-latest
Expand Down
Loading
Loading