Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
71 commits
Select commit Hold shift + click to select a range
7da9582
refactor(native): replace GStreamer streamer with Rust v2 foundation
zortos293 Aug 17, 2026
baf9058
fix(native): use platform crypto backends
zortos293 Aug 17, 2026
6132d0d
feat(native): implement transport lifecycle
zortos293 Aug 17, 2026
0138b2b
feat(native): add self-contained media runtime
zortos293 Aug 17, 2026
57075fe
feat(gfn): own NVST RTSPS sessions
zortos293 Aug 17, 2026
7eb70ae
ci: select ARM64 MSVC tools
zortos293 Aug 17, 2026
07cef78
ci: stabilize native CMake builds
zortos293 Aug 17, 2026
7e19e5b
feat(native): receive authenticated NVST video
zortos293 Aug 17, 2026
dbf7337
ci: use x64-hosted Windows ARM64 tools
zortos293 Aug 17, 2026
8de7d7e
fix(native): scope physical surface geometry helpers
zortos293 Aug 17, 2026
6473618
fix(native): avoid cross-process AppKit pointers
zortos293 Aug 17, 2026
331b570
fix(native): use SDL window sizing contract
zortos293 Aug 17, 2026
8cd69e6
fix(native): scope foreign handle parsing
zortos293 Aug 17, 2026
7594197
feat(native): add macOS VideoToolbox backend
zortos293 Aug 17, 2026
3d7974a
fix(settings): expose native transport selection
zortos293 Aug 17, 2026
dd474fb
fix(stream): honor selected NVST transport
zortos293 Aug 17, 2026
17cb71b
fix(native): negotiate direct ICE with GFN
zortos293 Aug 18, 2026
b0a9e97
fix(native): strip NVST frame headers
zortos293 Aug 18, 2026
06d09e7
fix(ci): restrict release source refs
zortos293 Aug 18, 2026
b000898
fix(stream): keep explicit NVST off WebRTC
zortos293 Aug 18, 2026
b352ac4
fix(ci): install Windows ARM64 compiler
zortos293 Aug 18, 2026
3d544b2
fix(native): preserve CloudMatch transport topology
zortos293 Aug 18, 2026
ab67bfa
fix(stream): preserve resumable recovery window
zortos293 Aug 18, 2026
eb71b47
fix(native): ignore stale process events
zortos293 Aug 18, 2026
186b406
fix(native): retain CloudMatch subsession identity
zortos293 Aug 18, 2026
ca750af
fix(gfn): align native RTSP client flow
zortos293 Aug 18, 2026
af42af8
fix(gfn): honor Bifrost ANNOUNCE-only startup
zortos293 Aug 18, 2026
9cb33a0
fix(gfn): implement authenticated NVST version-6 handshake
zortos293 Aug 19, 2026
d78c346
fix(gfn): drive ICE+DTLS on the reserved NVST bundle socket
zortos293 Aug 19, 2026
0f9c219
feat(native): align NVST streamer with official two-socket session flow
zortos293 Aug 20, 2026
f5a7585
feat(native): sustain NVST video with rtcp_on_sctp_private feedback c…
zortos293 Aug 21, 2026
d5d3bf8
fix(native): assemble and present authenticated NVST video
zortos293 Aug 23, 2026
5e87632
feat(native): add Linux and Windows media backends
zortos293 Aug 23, 2026
18d6b82
fix(native): harden NVST and platform recovery
zortos293 Aug 24, 2026
72befd0
feat(native): complete NVST media and input support
zortos293 Aug 24, 2026
a5ce1b1
fix(native): harden cross-platform runtime verification
zortos293 Aug 24, 2026
cd6a80b
fix(native): capture input in Windows SDL surface
zortos293 Aug 24, 2026
1e87bc0
fix(native): keep readiness timeout alive
zortos293 Aug 24, 2026
6a9e3d8
fix(native): negotiate requested stream rate
zortos293 Aug 24, 2026
c643e49
feat(native): add stream debug overlay and smooth presentation
zortos293 Aug 24, 2026
e592581
fix(native): align NVST transport and input handling
zortos293 Aug 24, 2026
bff8cc8
feat(gfn): negotiate H265 and AV1 stream profiles
zortos293 Aug 24, 2026
4265cc9
fix(native): pace dynamic video presentation
zortos293 Aug 25, 2026
5d0bc73
perf(native): gate verbose NVST packet tracing
zortos293 Aug 25, 2026
5f67f6e
fix(native): recover high-bitrate RTP gaps
zortos293 Aug 25, 2026
e2ea96d
fix(native): smooth adaptive frame presentation
zortos293 Aug 25, 2026
27b1364
perf(native): preserve high-rate mouse input
zortos293 Aug 25, 2026
610f288
fix(native): restore full-rate H265 presentation
zortos293 Aug 25, 2026
87c8285
fix(native): nack only missing RTP packets
zortos293 Aug 25, 2026
55c6994
fix(native): smooth bursty frame presentation
zortos293 Aug 25, 2026
738d313
perf(native): reduce input channel polling latency
zortos293 Aug 25, 2026
f4e8318
perf(native): adapt presentation to source cadence
zortos293 Aug 25, 2026
9006cb2
perf(native): capture mouse on dedicated raw input thread
zortos293 Aug 25, 2026
cfbf589
perf(native): use precise presentation deadlines
zortos293 Aug 25, 2026
dd56552
fix(native): capture raw mouse buttons
zortos293 Aug 25, 2026
a9c3e59
fix(native): recover transient media backpressure
zortos293 Aug 25, 2026
b372309
fix(native): keep video alive during audio changes
zortos293 Aug 25, 2026
a099f61
fix(gfn): reconnect RTSP control before resume play
zortos293 Aug 25, 2026
c5cb254
fix(native): prefer official GFN UDP ports
zortos293 Aug 25, 2026
f239a27
fix(gfn): activate video promptly on session resume
zortos293 Aug 25, 2026
17ff2cb
fix(native): bound NVST packet-gap latency
zortos293 Aug 25, 2026
6a62002
fix(native): accept video during surface resize
zortos293 Aug 25, 2026
8e30df9
fix(native): keep audio queued during surface resize
zortos293 Aug 25, 2026
54b468b
fix(native): preserve grouped decoder frames
zortos293 Aug 25, 2026
6f1c2d4
fix(native): strip GFN AV1 frame header
zortos293 Aug 25, 2026
6f6313e
fix(native): recover AV1 after packet gaps
zortos293 Aug 25, 2026
70ef22a
fix(native): resync AV1 after decode backlog
zortos293 Aug 25, 2026
9ba3f38
perf(native): keep AV1 on direct D3D11
zortos293 Aug 25, 2026
9bc5520
perf(native): drain D3D11 decoder bursts
zortos293 Aug 25, 2026
03b6b4b
fix(native): retain rounded 120 fps decoder bursts
zortos293 Aug 25, 2026
7d137a4
fix(native): pace dynamic decoder output without false drops
zortos293 Aug 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
99 changes: 77 additions & 22 deletions .github/workflows/auto-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,18 +38,24 @@ jobs:
{
label: "windows-x64",
os: "blacksmith-2vcpu-windows-2025",
native_target: "x86_64-pc-windows-msvc",
native_platform_key: "win32-x64",
builder_args: "--win nsis portable --x64",
artifact_paths: "opennow-stable/dist-release/*-x64.exe\n",
},
{
label: "windows-arm64",
os: "blacksmith-2vcpu-windows-2025",
native_target: "aarch64-pc-windows-msvc",
native_platform_key: "win32-arm64",
builder_args: "--win nsis portable --arm64",
artifact_paths: "opennow-stable/dist-release/*-arm64.exe\n",
},
{
label: "macos-x64",
os: "blacksmith-6vcpu-macos-15",
native_target: "x86_64-apple-darwin",
native_platform_key: "darwin-x64",
builder_args: "--mac dmg zip --x64",
artifact_paths:
"opennow-stable/dist-release/*.dmg\n" +
Expand All @@ -58,6 +64,8 @@ jobs:
{
label: "macos-arm64",
os: "blacksmith-6vcpu-macos-15",
native_target: "aarch64-apple-darwin",
native_platform_key: "darwin-arm64",
builder_args: "--mac dmg zip --arm64",
artifact_paths:
"opennow-stable/dist-release/*.dmg\n" +
Expand All @@ -66,6 +74,8 @@ jobs:
{
label: "linux-x64",
os: "blacksmith-2vcpu-ubuntu-2404",
native_target: "x86_64-unknown-linux-gnu",
native_platform_key: "linux-x64",
builder_args: "--linux AppImage deb --x64",
artifact_paths:
"opennow-stable/dist-release/*-x86_64.AppImage\n" +
Expand All @@ -74,6 +84,8 @@ jobs:
{
label: "linux-arm64",
os: "blacksmith-2vcpu-ubuntu-2404-arm",
native_target: "aarch64-unknown-linux-gnu",
native_platform_key: "linux-arm64",
builder_args: "--linux AppImage deb --arm64",
artifact_paths:
"opennow-stable/dist-release/*-arm64.AppImage\n" +
Expand All @@ -87,7 +99,11 @@ jobs:
const isDevValidationPullRequest = isPullRequest && baseRef === "dev";
const include = isDevValidationPullRequest
? builds.filter(({ label }) =>
label === "windows-x64" || label === "linux-x64" || label === "linux-arm64")
label === "windows-x64"
|| label === "macos-x64"
|| label === "macos-arm64"
|| label === "linux-x64"
|| label === "linux-arm64")
: builds;

fs.appendFileSync(process.env.GITHUB_OUTPUT, `matrix=${JSON.stringify({ include })}\n`);
Expand Down Expand Up @@ -121,30 +137,65 @@ jobs:
cache-dependency-path: opennow-stable/package-lock.json

- name: Setup Rust
if: runner.os == 'Linux'
uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.native_target }}

- name: Install Linux native streamer dependencies
- name: Install Linux native streamer build dependencies
if: runner.os == 'Linux'
env:
DEBIAN_FRONTEND: noninteractive
run: |
sudo apt-get update
sudo apt-get install -y --no-install-recommends \
build-essential \
pkg-config \
sudo apt-get install -y \
libasound2-dev \
libdrm-dev \
libpulse-dev \
libva-dev \
libx11-dev \
libglib2.0-dev \
libgstreamer1.0-dev \
libgstreamer-plugins-base1.0-dev \
libgstreamer-plugins-bad1.0-dev \
gstreamer1.0-libav \
gstreamer1.0-plugins-base \
gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad \
gstreamer1.0-nice \
gstreamer1.0-gl \
gstreamer1.0-x
libxcursor-dev \
libxext-dev \
libxfixes-dev \
libxi-dev \
libxrandr-dev \
libxrender-dev \
libxss-dev

- name: Install Windows ARM64 compiler
if: matrix.native_target == 'aarch64-pc-windows-msvc'
shell: pwsh
run: |
$ErrorActionPreference = "Stop"
$installerRoot = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer"
$installPath = & "$installerRoot\vswhere.exe" -latest -products * -property installationPath
if (-not $installPath) {
throw "Visual Studio Build Tools installation was not found."
}
$compiler = Get-ChildItem "$installPath\VC\Tools\MSVC\*\bin\Hostx64\arm64\cl.exe" -ErrorAction SilentlyContinue | Select-Object -First 1
if (-not $compiler) {
$arguments = "modify --installPath `"$installPath`" --quiet --norestart --add Microsoft.VisualStudio.Component.VC.Tools.ARM64"
$install = Start-Process "$installerRoot\vs_installer.exe" -ArgumentList $arguments -Wait -PassThru
if ($install.ExitCode -notin 0, 3010) {
throw "Visual Studio ARM64 compiler installation failed with exit code $($install.ExitCode)."
}
$compiler = Get-ChildItem "$installPath\VC\Tools\MSVC\*\bin\Hostx64\arm64\cl.exe" -ErrorAction SilentlyContinue | Select-Object -First 1
}
if (-not $compiler) {
throw "Visual Studio ARM64 compiler is unavailable after installation."
}
Write-Host "Using Windows ARM64 compiler: $($compiler.FullName)"

- name: Setup Windows ARM64 build tools
if: matrix.native_target == 'aarch64-pc-windows-msvc'
uses: ilammy/msvc-dev-cmd@v1
with:
arch: amd64_arm64

- name: Pin CMake for bundled SDL2
if: runner.os == 'macOS'
shell: bash
run: |
python3 -m venv "$RUNNER_TEMP/cmake-venv"
"$RUNNER_TEMP/cmake-venv/bin/pip" install --disable-pip-version-check cmake==3.31.6
echo "$RUNNER_TEMP/cmake-venv/bin" >> "$GITHUB_PATH"

- name: Install dependencies
run: npm ci
Expand All @@ -165,10 +216,14 @@ jobs:
id: build
run: npm run build

- name: Test and build Linux native streamer
if: runner.os == 'Linux'
- name: Test and build native streamer v2
env:
OPENNOW_NATIVE_STREAMER_TARGET: ${{ matrix.native_target }}
OPENNOW_NATIVE_STREAMER_PLATFORM_KEY: ${{ matrix.native_platform_key }}
run: |
cargo test --manifest-path ../native/opennow-streamer/Cargo.toml --features gstreamer
cargo fmt --manifest-path ../native/opennow-streamer/Cargo.toml --all -- --check
cargo clippy --manifest-path ../native/opennow-streamer/Cargo.toml --workspace --all-targets -- -D warnings
cargo test --manifest-path ../native/opennow-streamer/Cargo.toml --workspace
npm run native:build

- name: CI summary
Expand Down
Loading
Loading