Skip to content

Polish Linux (Proton) support: review fixes, CI, docs, messaging - #4

Merged
mattmarcin merged 1 commit into
mainfrom
linux-followup
Jun 12, 2026
Merged

Polish Linux (Proton) support: review fixes, CI, docs, messaging#4
mattmarcin merged 1 commit into
mainfrom
linux-followup

Conversation

@mattmarcin

@mattmarcin mattmarcin commented Jun 12, 2026

Copy link
Copy Markdown
Contributor

Follow-up to the native Linux port (#2). Makes the build-from-source Linux path correct and honest, and adds the CI/docs/messaging that #2 didn't include. Windows behavior is unchanged — everything is platform-gated and the Windows UI strings are byte-for-byte identical.

Code fixes (Linux AF_PACKET backend)

  • Reuse a single 256 KiB recv buffer instead of a fresh zeroed allocation per frame.
  • Adapter picker shows the interface name (eth0 (link up)) instead of a bare link up identical for every NIC.
  • Only offer the Npcap capture method on Windows (off Windows its load() bails).
  • Add examples/capture_smoke.rs (referenced by docs/LINUX.md).

Platform-aware messaging

Windows text unchanged; new Linux variants added to every locale (the 7 new strings are translated into all 19 non-English locales, no English fallback).

  • Elevation prompt → capture-permission wording / "Grant capture access" (Linux uses CAP_NET_RAW, not Administrator).
  • Drop "stays in the tray" on synced screens (no tray on Linux; closing quits).
  • Capture label "Windows raw sockets" → "Raw sockets (AF_PACKET)".
  • Language default "Match Windows" → "Match system".
  • Hide the tray-only Startup settings card off Windows.
  • Don't run the self-updater off Windows (the installer extracts arctracker-sync.exe, which a source build never matches).
  • Gate #![windows_subsystem] with cfg_attr(windows).

CI and docs

  • New ubuntu-latest CI job: clippy -D warnings + build + full test suite (Linux runs the tests, not just compiles them).
  • README: Linux-aware intro, build-from-source Linux section, and a "why it needs elevation" section covering both Administrator and CAP_NET_RAW.

Verification

  • Windows clippy -D warnings: clean.
  • Linux fresh build: clean; all 67 tests pass.
  • capture_smoke captures live TCP/443 in a Linux container.
  • All locale files are valid JSON and load at build time.

Not in scope / known gaps

  • End-to-end on real hardware is unverified. Capture plumbing works, but whether ARC Raiders under Proton honors SSLKEYLOGFILE → decrypt → sync has not been confirmed on a real Linux box with the game. Treat Linux as experimental until that smoke test passes.
  • No Linux release binary (CI-only); Linux users build from source.
  • Pre-existing typo noticed in sr.json (sledećу, a stray Cyrillic letter in syncedIdle.body) — left as-is since it predates this branch; worth a separate fix.

Follow-up to the native Linux port (PR #2). Covers the review fixes,
Linux-aware messaging, CI coverage, and docs so the build-from-source
Linux path is correct and honest. Windows behavior is unchanged
(platform-gated; Windows UI strings are byte-for-byte identical).

Code fixes (Linux AF_PACKET backend):
- Reuse a single 256 KiB recv buffer instead of a fresh zeroed
  allocation per frame; copy out only the captured bytes.
- Interface description now includes the name, so the adapter picker
  shows e.g. "eth0 (link up)" instead of a bare "link up" identical for
  every live NIC.
- Only offer the Npcap capture method on Windows; off Windows the sole
  backend is the raw socket, so selecting Npcap (whose load() bails) is
  no longer possible.
- Add examples/capture_smoke.rs (referenced by docs/LINUX.md): lists
  interfaces, opens one, reports captured frames + TCP/443 segments.

Platform-aware messaging (Windows text unchanged; new Linux variants
added to every locale):
- Elevation prompt: "run as administrator" -> capture-permission
  wording / "Grant capture access" (Linux gates capture behind
  CAP_NET_RAW, not Administrator).
- Synced screens: drop "stays in the tray" (no tray on Linux; closing
  the window quits).
- Capture method label: "Windows raw sockets" -> "Raw sockets (AF_PACKET)".
- Language default: "Match Windows" -> "Match system".
- Hide the tray-only Startup settings card off Windows.
- Don't run the self-updater off Windows: the installer extracts
  arctracker-sync.exe, which a source-built Linux binary never matches.
- Gate #![windows_subsystem] with cfg_attr(windows).

The 7 new Linux UI strings are translated into all 19 non-English
locales (no English fallback).

CI and docs:
- Add an ubuntu-latest CI job (clippy -D warnings + build + full test
  suite; Linux has no requireAdministrator manifest so it runs the
  tests, not just compiles them).
- README: Linux-aware intro, a build-from-source Linux section, and a
  "why it needs elevation" section covering both Administrator and
  CAP_NET_RAW.

Verified: Windows clippy -D warnings clean; Linux fresh build clean and
all 67 tests pass; capture_smoke captures live TCP/443; all locale
files are valid JSON and load at build time.
@mattmarcin
mattmarcin merged commit 38125c8 into main Jun 12, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant