cat / goq
clone

turns a linux box into a private steam streaming appliance: plug in, tap your key, play from another computer

feat: build Gamescope streaming appliance

Dami committed 0d98618
commit
0d986183270d7d59b785d4147876af0ebb4f973a
parent
5c9393a560b8dc1b413b915a4501794be8c041bc
author
Dami <dami.etoile@gmail.com>
113 files changed, +23382 -31909
M.github/workflows/release.yml67-
M.gitignore6-
Msrc-tauri/Cargo.lock => Cargo.lock2910++++-----------
MCargo.toml7+-
MREADME.md225+-
Mcrates/sigil-host/Cargo.toml30+
Mcrates/sigil-host/src/audio.rs559+++
Mcrates/sigil-host/src/bin/sigil-probe.rs433++
Mcrates/sigil-host/src/clock.rs79+
Mcrates/sigil-host/src/config.rs689++++
Mcrates/sigil-host/src/cursor.rs611+++
Mcrates/sigil-host/src/identity.rs211+
Mcrates/sigil-host/src/input.rs1482++++++++
Mcrates/sigil-host/src/main.rs624+++
Mcrates/sigil-host/src/server.rs1766+++++++++
Mcrates/sigil-host/src/source.rs1425+++++++
Mcrates/sigil-protocol/Cargo.toml17+
Mcrates/sigil-protocol/src/audio.rs315++
Mcrates/sigil-protocol/src/error.rs52+
Mcrates/sigil-protocol/src/framing.rs56+
Mcrates/sigil-protocol/src/handshake.rs373++
Mcrates/sigil-protocol/src/input.rs508+++
Mcrates/sigil-protocol/src/lib.rs81+
Mcrates/sigil-protocol/src/media.rs379++
Mdocs/SETUP.md147-
Mdocs/evidence/2026-06-23-ctap-hid-fido2-titan-communication.md102-
Mdocs/evidence/2026-06-23-fido2-hid-raw-hidraw.md84-
Mdocs/evidence/2026-06-23-hmac-iroh-derivation.md78-
Mdocs/evidence/2026-06-23-iroh-native-ping.md46-
Mdocs/evidence/2026-06-23-yubikey-hmac-detection.md46-
Mdocs/evidence/README.md12-
Mdocs/fresh-bazzite-host.md1463++++++++
Mdocs/research-yubikey-options.md40-
Mdocs/spikes/001-iroh-native-ping/Cargo.lock4119----------------------
Mdocs/spikes/001-iroh-native-ping/Cargo.toml12-
Mdocs/spikes/001-iroh-native-ping/README.md52-
Mdocs/spikes/001-iroh-native-ping/src/main.rs89-
Mdocs/spikes/002-yubikey-hmac-detection/Cargo.lock338--
Mdocs/spikes/002-yubikey-hmac-detection/Cargo.toml10-
Mdocs/spikes/002-yubikey-hmac-detection/README.md46-
Mdocs/spikes/002-yubikey-hmac-detection/src/main.rs48-
Mdocs/spikes/003-fido2-hid-enumeration/Cargo.lock781----
Mdocs/spikes/003-fido2-hid-enumeration/Cargo.toml8-
Mdocs/spikes/003-fido2-hid-enumeration/README.md41-
Mdocs/spikes/003-fido2-hid-enumeration/src/main.rs70-
Mdocs/spikes/004-hmac-iroh-derivation/Cargo.lock4471-----------------------
Mdocs/spikes/004-hmac-iroh-derivation/Cargo.toml15-
Mdocs/spikes/004-hmac-iroh-derivation/README.md36-
Mdocs/spikes/004-hmac-iroh-derivation/src/main.rs179-
Mdocs/spikes/005-frame-stream/Cargo.lock5587-----------------------------
Mdocs/spikes/005-frame-stream/Cargo.toml16-
Mdocs/spikes/005-frame-stream/run-spike.sh44-
Mdocs/spikes/005-frame-stream/src/main.rs225-
Mdocs/spikes/006-input-injection/Cargo.lock5717------------------------------
Mdocs/spikes/006-input-injection/Cargo.toml15-
Mdocs/spikes/006-input-injection/src/main.rs368--
Mdocs/spikes/007-titan-no-copy/Cargo.lock4451-----------------------
Mdocs/spikes/007-titan-no-copy/Cargo.toml14-
Mdocs/spikes/007-titan-no-copy/src/main.rs281-
Mflake.lock27+
Mflake.nix27+
Mrust-toolchain.toml4+
Mscripts/50-sigil-spark-audio.conf10+
Mscripts/70-sigil-remote-input.rules5+
Mscripts/bazzite-inventory.sh158+
Mscripts/install-bazzite-package.sh244+
Mscripts/loopback-proof.sh447++
Mscripts/package-bazzite-release.sh267+
Mscripts/package-macos-client.sh159+
Mscripts/rollback-bazzite-release.sh135+
Mscripts/sigil-host.service25+
Mscripts/stage-bazzite-release.sh184+
Mscripts/verify-demo-build.sh75+
Msrc-tauri/Cargo.toml19+-
Msrc-tauri/build.rs2+-
Msrc-tauri/src/commands/auth.rs163+-
Msrc-tauri/src/commands/input.rs223-
Msrc-tauri/src/commands/mod.rs20+-
Msrc-tauri/src/commands/network.rs2918++++++++++++++-
Msrc-tauri/src/commands/state.rs615+++-
Msrc-tauri/src/commands/streaming.rs699----
Msrc-tauri/src/main.rs68+-
Msrc-tauri/tauri.conf.json6+-
Msrc/audio-envelope.mjs146+
Msrc/audio-envelope.test.mjs155+
Msrc/audio-ring.mjs224+
Msrc/audio-ring.test.mjs249+
Msrc/audio-ui.mjs25+
Msrc/audio-ui.test.mjs45+
Msrc/audio-worklet.js66+
Msrc/audio-worklet.test.mjs140+
Msrc/av-sync.mjs69+
Msrc/av-sync.test.mjs70+
Msrc/connection-attempt.mjs9+
Msrc/connection-attempt.test.mjs23+
Msrc/controller-state.mjs375++
Msrc/controller-state.test.mjs233+
Msrc/frame-envelope.mjs97+
Msrc/frame-envelope.test.mjs106+
Msrc/frame-session.mjs90+
Msrc/frame-session.test.mjs58+
Msrc/frame-stats.mjs144+
Msrc/frame-stats.test.mjs143+
Msrc/index.html282+-
Msrc/input-state.mjs339++
Msrc/input-state.test.mjs335++
Msrc/main.js2473+++++++++++--
Msrc/pointer-feedback.mjs16+
Msrc/pointer-feedback.test.mjs61+
Msrc/session-controls-layout.test.mjs39+
Msrc/stream-metrics.mjs278+
Msrc/stream-metrics.test.mjs282+
Msrc/style.css263+-
M .github/workflows/release.yml +0 -67

Diff not shown: this commit changes too many lines.

M .gitignore +0 -6

Diff not shown: this commit changes too many lines.

M src-tauri/Cargo.lock => Cargo.lock +738 -2172

Diff not shown: this commit changes too many lines.

M Cargo.toml +6 -1

Diff not shown: this commit changes too many lines.

M README.md +149 -76

Diff not shown: this commit changes too many lines.

M crates/sigil-host/Cargo.toml +30 -0

Diff not shown: this commit changes too many lines.

M crates/sigil-host/src/audio.rs +559 -0

Diff not shown: this commit changes too many lines.

M crates/sigil-host/src/bin/sigil-probe.rs +433 -0

Diff not shown: this commit changes too many lines.

M crates/sigil-host/src/clock.rs +79 -0

Diff not shown: this commit changes too many lines.

M crates/sigil-host/src/config.rs +689 -0

Diff not shown: this commit changes too many lines.

M crates/sigil-host/src/cursor.rs +611 -0

Diff not shown: this commit changes too many lines.

M crates/sigil-host/src/identity.rs +211 -0

Diff not shown: this commit changes too many lines.

M crates/sigil-host/src/input.rs +1482 -0

Diff not shown: this commit changes too many lines.

M crates/sigil-host/src/main.rs +624 -0

Diff not shown: this commit changes too many lines.

M crates/sigil-host/src/server.rs +1766 -0

Diff not shown: this commit changes too many lines.

M crates/sigil-host/src/source.rs +1425 -0

Diff not shown: this commit changes too many lines.

M crates/sigil-protocol/Cargo.toml +17 -0

Diff not shown: this commit changes too many lines.

M crates/sigil-protocol/src/audio.rs +315 -0

Diff not shown: this commit changes too many lines.

M crates/sigil-protocol/src/error.rs +52 -0

Diff not shown: this commit changes too many lines.

M crates/sigil-protocol/src/framing.rs +56 -0

Diff not shown: this commit changes too many lines.

M crates/sigil-protocol/src/handshake.rs +373 -0

Diff not shown: this commit changes too many lines.

M crates/sigil-protocol/src/input.rs +508 -0

Diff not shown: this commit changes too many lines.

M crates/sigil-protocol/src/lib.rs +81 -0

Diff not shown: this commit changes too many lines.

M crates/sigil-protocol/src/media.rs +379 -0

Diff not shown: this commit changes too many lines.

M docs/SETUP.md +0 -147

Diff not shown: this commit changes too many lines.

M docs/evidence/2026-06-23-ctap-hid-fido2-titan-communication.md +0 -102

Diff not shown: this commit changes too many lines.

M docs/evidence/2026-06-23-fido2-hid-raw-hidraw.md +0 -84

Diff not shown: this commit changes too many lines.

M docs/evidence/2026-06-23-hmac-iroh-derivation.md +0 -78

Diff not shown: this commit changes too many lines.

M docs/evidence/2026-06-23-iroh-native-ping.md +0 -46

Diff not shown: this commit changes too many lines.

M docs/evidence/2026-06-23-yubikey-hmac-detection.md +0 -46

Diff not shown: this commit changes too many lines.

M docs/evidence/README.md +0 -12

Diff not shown: this commit changes too many lines.

M docs/fresh-bazzite-host.md +1463 -0

Diff not shown: this commit changes too many lines.

M docs/research-yubikey-options.md +0 -40

Diff not shown: this commit changes too many lines.

M docs/spikes/001-iroh-native-ping/Cargo.lock +0 -4119

Diff not shown: this commit changes too many lines.

M docs/spikes/001-iroh-native-ping/Cargo.toml +0 -12

Diff not shown: this commit changes too many lines.

M docs/spikes/001-iroh-native-ping/README.md +0 -52

Diff not shown: this commit changes too many lines.

M docs/spikes/001-iroh-native-ping/src/main.rs +0 -89

Diff not shown: this commit changes too many lines.

M docs/spikes/002-yubikey-hmac-detection/Cargo.lock +0 -338

Diff not shown: this commit changes too many lines.

M docs/spikes/002-yubikey-hmac-detection/Cargo.toml +0 -10

Diff not shown: this commit changes too many lines.

M docs/spikes/002-yubikey-hmac-detection/README.md +0 -46

Diff not shown: this commit changes too many lines.

M docs/spikes/002-yubikey-hmac-detection/src/main.rs +0 -48

Diff not shown: this commit changes too many lines.

M docs/spikes/003-fido2-hid-enumeration/Cargo.lock +0 -781

Diff not shown: this commit changes too many lines.

M docs/spikes/003-fido2-hid-enumeration/Cargo.toml +0 -8

Diff not shown: this commit changes too many lines.

M docs/spikes/003-fido2-hid-enumeration/README.md +0 -41

Diff not shown: this commit changes too many lines.

M docs/spikes/003-fido2-hid-enumeration/src/main.rs +0 -70

Diff not shown: this commit changes too many lines.

M docs/spikes/004-hmac-iroh-derivation/Cargo.lock +0 -4471

Diff not shown: this commit changes too many lines.

M docs/spikes/004-hmac-iroh-derivation/Cargo.toml +0 -15

Diff not shown: this commit changes too many lines.

M docs/spikes/004-hmac-iroh-derivation/README.md +0 -36

Diff not shown: this commit changes too many lines.

M docs/spikes/004-hmac-iroh-derivation/src/main.rs +0 -179

Diff not shown: this commit changes too many lines.

M docs/spikes/005-frame-stream/Cargo.lock +0 -5587

Diff not shown: this commit changes too many lines.

M docs/spikes/005-frame-stream/Cargo.toml +0 -16

Diff not shown: this commit changes too many lines.

M docs/spikes/005-frame-stream/run-spike.sh +0 -44

Diff not shown: this commit changes too many lines.

M docs/spikes/005-frame-stream/src/main.rs +0 -225

Diff not shown: this commit changes too many lines.

M docs/spikes/006-input-injection/Cargo.lock +0 -5717

Diff not shown: this commit changes too many lines.

M docs/spikes/006-input-injection/Cargo.toml +0 -15

Diff not shown: this commit changes too many lines.

M docs/spikes/006-input-injection/src/main.rs +0 -368

Diff not shown: this commit changes too many lines.

M docs/spikes/007-titan-no-copy/Cargo.lock +0 -4451

Diff not shown: this commit changes too many lines.

M docs/spikes/007-titan-no-copy/Cargo.toml +0 -14

Diff not shown: this commit changes too many lines.

M docs/spikes/007-titan-no-copy/src/main.rs +0 -281

Diff not shown: this commit changes too many lines.

M flake.lock +27 -0

Diff not shown: this commit changes too many lines.

M flake.nix +27 -0

Diff not shown: this commit changes too many lines.

M rust-toolchain.toml +4 -0

Diff not shown: this commit changes too many lines.

M scripts/50-sigil-spark-audio.conf +10 -0

Diff not shown: this commit changes too many lines.

M scripts/70-sigil-remote-input.rules +5 -0

Diff not shown: this commit changes too many lines.

M scripts/bazzite-inventory.sh +158 -0

Diff not shown: this commit changes too many lines.

M scripts/install-bazzite-package.sh +244 -0

Diff not shown: this commit changes too many lines.

M scripts/loopback-proof.sh +447 -0

Diff not shown: this commit changes too many lines.

M scripts/package-bazzite-release.sh +267 -0

Diff not shown: this commit changes too many lines.

M scripts/package-macos-client.sh +159 -0

Diff not shown: this commit changes too many lines.

M scripts/rollback-bazzite-release.sh +135 -0

Diff not shown: this commit changes too many lines.

M scripts/sigil-host.service +25 -0

Diff not shown: this commit changes too many lines.

M scripts/stage-bazzite-release.sh +184 -0

Diff not shown: this commit changes too many lines.

M scripts/verify-demo-build.sh +75 -0

Diff not shown: this commit changes too many lines.

M src-tauri/Cargo.toml +11 -8

Diff not shown: this commit changes too many lines.

M src-tauri/build.rs +1 -1

Diff not shown: this commit changes too many lines.

M src-tauri/src/commands/auth.rs +37 -126

Diff not shown: this commit changes too many lines.

M src-tauri/src/commands/input.rs +0 -223

Diff not shown: this commit changes too many lines.

M src-tauri/src/commands/mod.rs +1 -19

Diff not shown: this commit changes too many lines.

M src-tauri/src/commands/network.rs +2745 -173

Diff not shown: this commit changes too many lines.

M src-tauri/src/commands/state.rs +576 -39

Diff not shown: this commit changes too many lines.

M src-tauri/src/commands/streaming.rs +0 -699

Diff not shown: this commit changes too many lines.

M src-tauri/src/main.rs +37 -31

Diff not shown: this commit changes too many lines.

M src-tauri/tauri.conf.json +3 -3

Diff not shown: this commit changes too many lines.

M src/audio-envelope.mjs +146 -0

Diff not shown: this commit changes too many lines.

M src/audio-envelope.test.mjs +155 -0

Diff not shown: this commit changes too many lines.

M src/audio-ring.mjs +224 -0

Diff not shown: this commit changes too many lines.

M src/audio-ring.test.mjs +249 -0

Diff not shown: this commit changes too many lines.

M src/audio-ui.mjs +25 -0

Diff not shown: this commit changes too many lines.

M src/audio-ui.test.mjs +45 -0

Diff not shown: this commit changes too many lines.

M src/audio-worklet.js +66 -0

Diff not shown: this commit changes too many lines.

M src/audio-worklet.test.mjs +140 -0

Diff not shown: this commit changes too many lines.

M src/av-sync.mjs +69 -0

Diff not shown: this commit changes too many lines.

M src/av-sync.test.mjs +70 -0

Diff not shown: this commit changes too many lines.

M src/connection-attempt.mjs +9 -0

Diff not shown: this commit changes too many lines.

M src/connection-attempt.test.mjs +23 -0

Diff not shown: this commit changes too many lines.

M src/controller-state.mjs +375 -0

Diff not shown: this commit changes too many lines.

M src/controller-state.test.mjs +233 -0

Diff not shown: this commit changes too many lines.

M src/frame-envelope.mjs +97 -0

Diff not shown: this commit changes too many lines.

M src/frame-envelope.test.mjs +106 -0

Diff not shown: this commit changes too many lines.

M src/frame-session.mjs +90 -0

Diff not shown: this commit changes too many lines.

M src/frame-session.test.mjs +58 -0

Diff not shown: this commit changes too many lines.

M src/frame-stats.mjs +144 -0

Diff not shown: this commit changes too many lines.

M src/frame-stats.test.mjs +143 -0

Diff not shown: this commit changes too many lines.

M src/index.html +112 -170

Diff not shown: this commit changes too many lines.

M src/input-state.mjs +339 -0

Diff not shown: this commit changes too many lines.

M src/input-state.test.mjs +335 -0

Diff not shown: this commit changes too many lines.

M src/main.js +2027 -446

Diff not shown: this commit changes too many lines.

M src/pointer-feedback.mjs +16 -0

Diff not shown: this commit changes too many lines.

M src/pointer-feedback.test.mjs +61 -0

Diff not shown: this commit changes too many lines.

M src/session-controls-layout.test.mjs +39 -0

Diff not shown: this commit changes too many lines.

M src/stream-metrics.mjs +278 -0

Diff not shown: this commit changes too many lines.

M src/stream-metrics.test.mjs +282 -0

Diff not shown: this commit changes too many lines.

M src/style.css +202 -61

Diff not shown: this commit changes too many lines.