forked from unom/punktfunk
The Skia console UI grows from the single library coverflow into a complete couch shell (Apple gamepad-UI parity), so a Deck/gamescope session is self-sufficient end to end: - Home: host carousel (saved + discovered + Add Host tile) with presence pips, paired locks, wake & connect; A/Y/X/B per the Apple launcher. - In-console SPAKE2 PIN pairing (previously needed the Decky plugin or a desktop), add-host with a controller keyboard, couch settings over the shared Settings store, wake-on-LAN overlay with retry, cancelable dials. - Shell chrome: screen stack with push/pop entrance/exit choreography (slide + fade + recede; aurora↔form backdrop crossfade), per-pad button glyphs (PS shapes vs ABXY, keycaps with no pad), menu haptics, toasts, embedded Geist typography, in-stream start banner. - Steam Deck: our OSK never draws — fields start SDL text input (the new Overlay::text_input_active hook) and Steam's keyboard types; a hint chip points at STEAM + X. Other Linux gets the full gamepad keyboard tray. - punktfunk-session: bare --browse opens Home; --browse host opens that host's library with Home behind it (Decky launches keep working, B now pops instead of quitting). Service threads run discovery, 10 s probes, pairing, wake loops, fetches, and known-hosts persistence. - Presenter contract: Launch actions carry the host, CancelConnect never engages a won race, pad kind/list ride FrameCtx, menu events flow while dialing so B can cancel. Every screen renders to PNG on CPU raster for review (PF_CONSOLE_DUMP=<dir> cargo test -p pf-console-ui -- --ignored dump). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
36 lines
1.6 KiB
TOML
36 lines
1.6 KiB
TOML
[package]
|
|
name = "pf-console-ui"
|
|
description = "The Skia console UI for the Vulkan session binary — stats OSD, capture HUD, and (next) the gamepad library; renders on the presenter's device via the Overlay contract"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
rust-version.workspace = true
|
|
license.workspace = true
|
|
authors.workspace = true
|
|
repository.workspace = true
|
|
|
|
# Same Linux+Windows gating as the rest of the client stack.
|
|
[target.'cfg(any(target_os = "linux", windows))'.dependencies]
|
|
pf-presenter = { path = "../pf-presenter" }
|
|
# MenuEvent/MenuPulse (the gamepad service's menu mode drives the library).
|
|
pf-client-core = { path = "../pf-client-core" }
|
|
|
|
# Skia on the presenter's VkDevice (`vulkan`); `textlayout` = skparagraph/harfbuzz for
|
|
# the typography the console library needs (~15 MB stripped, prebuilt binaries exist for
|
|
# this feature set on x86_64-unknown-linux-gnu AND x86_64-pc-windows-msvc — a source
|
|
# build is never triggered on either).
|
|
skia-safe = { version = "0.87", features = ["vulkan", "textlayout"] }
|
|
ash = { version = "0.38", features = ["loaded"] }
|
|
|
|
anyhow = "1"
|
|
tracing = "0.1"
|
|
# `config::GamepadPref` keys the button-glyph style (PlayStation shapes vs ABXY).
|
|
punktfunk-core = { path = "../punktfunk-core" }
|
|
|
|
# Linux links the system SDL3; Windows builds it from source (same choice as the rest
|
|
# of the workspace's Windows SDL consumers).
|
|
[target.'cfg(target_os = "linux")'.dependencies]
|
|
sdl3 = { version = "0.18", features = ["hidapi", "ash"] }
|
|
|
|
[target.'cfg(windows)'.dependencies]
|
|
sdl3 = { version = "0.18", features = ["hidapi", "ash", "build-from-source"] }
|