The game library was unreachable in Android's touch UI, and no library view could copy a title's link #266

Merged
enricobuehler merged 3 commits from worktree-library-access-and-copy-link into main 2026-08-16 08:54:01 +00:00
3 Commits
Author SHA1 Message Date
enricobuehler 14bdfeaeeb fix(client-windows): the library tile's overflow sat inside its own launch backstop
windows-client / client (x64, , x86_64-pc-windows-msvc, C:\t) (pull_request) Failing after 3m17s
ci / bun-nix (pull_request) Successful in 2m11s
ci / rust (pull_request) Successful in 8m19s
windows-client / client (arm64, --no-default-features, aarch64-pc-windows-msvc, C:\t-a64) (pull_request) Failing after 4m58s
ci / docs-site (pull_request) Successful in 1m59s
ci / web (pull_request) Successful in 4m41s
android / android (pull_request) Successful in 11m56s
apple / swift (pull_request) Failing after 12m45s
apple / distribute (pull_request) Skipped
apple / screenshots (pull_request) Skipped
ci / rust-arm64 (pull_request) Successful in 3m22s
The poster's new "…" button was a child of the border carrying on_tapped, so
opening the menu was also a click on the tile. host_tile on the hosts page
already splits these — the tapped region is the inner summary and the menu
button is its SIBLING in the grid — and the library tile now does the same.
Relying on Button marking Tapped handled is a guess about event routing where
the shell already has an answer that does not need one.
2026-08-16 10:20:57 +02:00
enricobuehler ae6d872bed test(client-android): shoot the touch library, and pass the shelf's callbacks as lambdas
Two follow-ups on the library work:

* LibraryScreen handed ConsoleLibrary/TouchLibrary `::launch` and `::copyLink`.
  Two callable references to the same local function compare EQUAL however
  different the frame they captured, so a skipped recomposition would have left
  the child calling a closure over stale settings — the trap SettingsScreen
  documents at scopeProfile(), having already been bitten by it. Lambdas
  instead, which is what every other call site here passes.
* The touch grid was a brand-new screen with no visual coverage. TouchGrid goes
  internal (the reason Coverflow already is) and the harness grows a portrait
  scene over the same mock shelf the coverflow scene uses, so the column count,
  the group headings and the launcher brand-mark tile are all captured.
2026-08-16 10:19:53 +02:00
enricobuehler b949bf2062 feat(clients): the game library was unreachable in Android's touch UI, and no library view could copy a title's link
Two gaps, both about the library:

* On Android, the shelf was reachable only with Y from a console tile — a
  finger has no Y, so the touch home had no route to it at all. LibraryScreen
  grows a second presentation (the poster GRID the Apple, GTK and Windows
  shells already draw) and a card's overflow grows "Browse library…", behind
  the same experimental toggle as everywhere else.
* No library view offered "Copy link", although design/client-deep-links.md §5
  names the library game context menu as an attach point beside the host card
  and the pinned card. Every shell now hands out a title's own URL — the same
  self-emitted form a host card gives, plus that game's launch= id, so pasting
  it into Playnite or a Stream Deck macro boots straight into the title.

The gesture follows each surface: a context menu on the touch/mouse grids
(Apple, Android, GTK; Windows uses a tile overflow button, since the reactor
hangs menu_flyout off buttons only), and the X face button plus a legend entry
on the three gamepad coverflows, where there is no right-click.
2026-08-16 10:09:53 +02:00