feat(client/windows): make the console UI findable, and launchable on its own

Two problems, one feature. The gamepad/couch UI existed but you had to
already know it was there:

- On the hosts page its card only rendered when a controller was CONNECTED,
  so with no pad plugged in there was no visible entry point at all -- the
  only other door being a per-host overflow menu behind a "..." nobody
  opens. The card now always shows, with copy that adapts to whether a pad
  is present, so the feature is findable before you own the hardware.
- There was no way to start it directly. An HTPC or TV box wants the couch
  interface as its first screen, not the desktop shell. "punktfunk-client
  --console" now hands straight off to it (fullscreen unless --windowed),
  which covers shortcuts, Steam entries, autostart and Task Scheduler.

The Start-menu tile needs its own executable: an MSIX <Application> cannot
pass arguments to a full-trust exe, so "punktfunk-client.exe --console" is
not expressible there. punktfunk-console.exe is a ~20-line hand-off to the
session binary's browse mode, staged into the package and given its own
tile ("Punktfunk Console").

Nothing new is implemented behind either door: a bare "--browse" was
already a complete standalone client (host list, discovery, PIN pairing,
settings, Wake-on-LAN, library). It just had no front door.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-19 18:45:14 +02:00
parent aa45757a72
commit 2508b72062
7 changed files with 116 additions and 13 deletions
+6
View File
@@ -12,6 +12,12 @@ repository.workspace = true
name = "punktfunk-client"
path = "src/main.rs"
# The couch/HTPC Start-menu entry. Its own executable because an MSIX <Application> cannot
# pass arguments to a full-trust exe — see the binary's own docs.
[[bin]]
name = "punktfunk-console"
path = "src/bin/punktfunk-console.rs"
# Everything is Windows-gated so `cargo build --workspace` stays green on Linux/macOS (the
# other native clients live in clients/linux and clients/apple); on other
# platforms this builds as a stub binary. Mirrors the Linux client's cfg(target_os="linux")