Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
17 commits
Select commit Hold shift + click to select a range
2af9d94
fix(setup): reactively re-poll prerequisites every 3s
S-Foxx Jun 23, 2026
5ff6ddd
fix(rdp): enable RDP8.1 GFX pipeline + /network:auto, gate /dynamic-r…
S-Foxx Jun 23, 2026
7815112
fix(main): ship AppArmor profile + runtime fallback for Electron GPU …
S-Foxx Jun 23, 2026
d00e7dd
feat(gpu): add read-only host topology detector for VFIO passthrough
S-Foxx Jun 23, 2026
a8a4f04
fix(rdp): correct /gfx codec syntax to AVC420:on,AVC444:on
S-Foxx Jun 23, 2026
50f73f1
feat(config): GPU passthrough config UI + optional prereq row
S-Foxx Jun 23, 2026
1931857
feat(gpu): polkit helper + vfio.ts privileged-side wrapper
S-Foxx Jun 23, 2026
d2c332c
feat(gpu): compose mutation + QEMU args builder for VFIO passthrough
S-Foxx Jun 23, 2026
813700b
feat(gpu): GpuManager orchestrator + lifecycle wiring (Phase 1.5/1.6)
S-Foxx Jun 23, 2026
175406a
feat(gpu): Phase 2 SR-IOV helper + sriov.ts wrapper + applySriovPasst…
S-Foxx Jun 23, 2026
16e1c21
fix(gpu): address verification report — FreeRDP /gfx comma + double-s…
S-Foxx Jun 23, 2026
1c9bbc4
test(gpu): real-hardware runbook + guest PowerShell test scripts
S-Foxx Jun 23, 2026
20110c8
fix(gpu): address Phase 2/3 verification report — i915 errno, NixOS m…
S-Foxx Jun 23, 2026
1fcbd76
fix(gpu): use require() for Node built-ins in detector.ts to match re…
S-Foxx Jun 23, 2026
4987a94
fix(build): alias jimp to ESM entry to avoid Rollup analysis of minif…
S-Foxx Jun 23, 2026
fe8ced6
fix(build): keep Node built-ins external in renderer bundle
S-Foxx Jun 24, 2026
110b89d
revert: vite.config.ts changes from 4987a94 and fe8ced6
S-Foxx Jun 24, 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
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -14,4 +14,5 @@ package-lock.json
# *.exe
temp
guest_server/winboat_guest_server.exe
guest_server/winboat_guest_server.zip
guest_server/winboat_guest_server.zip
gpu_helper/winboat-gpu-helper
53 changes: 53 additions & 0 deletions build-gpu-helper.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
#!/bin/bash
# Build the Linux-only GPU passthrough privileged helper.
#
# The helper is a tiny static Go binary that bridges the unprivileged
# renderer to the kernel's vfio-pci driver. It's only meaningful on
# Linux hosts; on every other platform this script is a no-op so the
# main electron-builder pipeline still completes.
#
# Sources / rationale:
# - polkit + pkexec model: https://www.freedesktop.org/software/polkit/docs/latest/pkexec.1.html
# - VFIO driver_override workflow: https://docs.kernel.org/PCI/pci.html
# - Why -trimpath / -buildvcs=false: reproducible build best practice
# (cf. https://go.dev/ref/mod#build-commands).

set -e

if [ "$(uname -s)" != "Linux" ]; then
echo "winboat-gpu-helper is Linux-only; skipping build on $(uname -s)."
exit 0
fi

echo "Building winboat-gpu-helper..."

export GOOS=linux
export GOARCH="${GOARCH:-amd64}"
export CGO_ENABLED=0 # pure-static binary, no glibc dependency
export PACKAGE=winboat-gpu-helper
export VERSION="$(bun -p "require('./package.json').version" 2>/dev/null || echo dev)"
export COMMIT_HASH="$(git rev-parse --short HEAD 2>/dev/null || echo none)"
export BUILD_TIMESTAMP=$(date '+%Y-%m-%dT%H:%M:%S')

LDFLAGS=(
"-s" "-w" # strip debug info
"-X" "main.helperVersion=${VERSION}+${COMMIT_HASH}"
)

cd gpu_helper

echo "Running go vet + unit tests..."
go vet ./...
go test -count=1 ./...

echo "Compiling static binary (GOOS=${GOOS}, GOARCH=${GOARCH})..."
go build \
-trimpath \
-buildvcs=false \
-ldflags "${LDFLAGS[*]}" \
-o winboat-gpu-helper \
.

ls -la winboat-gpu-helper
file winboat-gpu-helper 2>/dev/null || true
echo "winboat-gpu-helper build complete: $(pwd)/winboat-gpu-helper"
23 changes: 23 additions & 0 deletions electron-builder.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,15 @@
"category": "Utility",
"artifactName": "${name}-${version}-${arch}.${ext}"
},
"deb": {
"depends": ["libnotify4", "libxtst6", "libnss3", "xdg-utils", "libatspi2.0-0"],
"afterInstall": "packaging/installer/linux-after-install.sh",
"afterRemove": "packaging/installer/linux-before-remove.sh"
},
"rpm": {
"afterInstall": "packaging/installer/linux-after-install.sh",
"afterRemove": "packaging/installer/linux-before-remove.sh"
},
"files": [
{
"from": "build/main",
Expand Down Expand Up @@ -50,6 +59,20 @@
"from": "./data",
"to": "data",
"filter": ["**/*"]
},
{
"from": "./packaging/apparmor",
"to": "apparmor",
"filter": ["**/*"]
},
{
"from": "./packaging/polkit",
"to": "polkit",
"filter": ["**/*"]
},
{
"from": "./gpu_helper/winboat-gpu-helper",
"to": "winboat-gpu-helper"
}
]
}
3 changes: 3 additions & 0 deletions gpu_helper/go.mod
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
module winboat-gpu-helper

go 1.24.2
Loading