Phase 7: wallpaper maker (live preview, click-to-edit labels, .data import)

The interactive replacement for the legacy Sheet -> GIMP/Script-Fu pipeline:
WallpaperMakerForm (tray -> "Wallpaper maker") renders the profile wallpaper
live via SkiaOverlayRenderer, outlines all 119 template cells, and lets any
cell -- including the heading/banner cells the button editor cannot reach --
be clicked and retitled with debounced re-render. Clicks on stacked cells
cycle through the regions at that pixel (OverlayHitTester, unit-tested);
stacking is legitimate chroma-split display encoding. Imports a legacy .data
sheet row (with a game picker for multi-row sheets), exports the PNG, and can
apply the desktop wallpaper immediately to the same per-profile path the
runtime uses. Prompts for and remembers AppConfig.OverlayTemplatePath on
first use. PLAN.md: record this + the completed Phase 6 deploy package.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Cyd
2026-07-04 00:54:54 -05:00
co-authored by Claude Fable 5
parent b275892451
commit 0623891f74
6 changed files with 701 additions and 4 deletions
+23 -4
View File
@@ -209,11 +209,19 @@ Core logic in `src/RioJoy.Core/Profiles` + `RioRuntime`; UI/OS in `src/RioJoy.Tr
-**Remaining:** full on-cabinet verification of the auto-switch +
acquire/release lifecycle against real RIO hardware.
### Phase 6 — Packaging / signing / deploy
- Driver test-signing + `pnputil` install already scripted (`driver/sign.ps1`,
### Phase 6 — Packaging / signing / deploy — done ✅
- Driver test-signing + `pnputil` install scripted (`driver/sign.ps1`,
`driver/install.ps1`, `driver/uninstall.ps1`, [`driver/README.md`](../driver/README.md));
proven on the cabinet. ⏳ Still to do: app installer, a single bundled deploy,
and a cabinet deployment doc. (Production option: attestation signing.)
proven on the cabinet.
- **Deployment package** ([`deploy/`](../deploy/)): `build-package.ps1` produces
`dist/RIOJoy-<version>.zip` (framework-dependent net48 app + `postinstall.bat` /
`install-rio.ps1` / `pre-uninstall.bat` / `uninstall-rio.ps1`, all idempotent) with
the cabinet doc [`README-DEPLOY.txt`](../deploy/README-DEPLOY.txt). Deployed builds
use the **signed ViGEmBus** virtual controller (Xbox 360 layout, 11 buttons) so no
test signing / Secure Boot change / reboot is needed; the custom RioGamepad driver
remains the full-fidelity option for owned cabinets. App lifecycle is owned by the
TeslaConsole launcher (no auto-start). ⏳ Verify remaining: first real deploy on a
cabinet via TeslaConsole.
### Phase 7 — Profile/mapping editor + cockpit overlay generator — in progress
Replaces the legacy Google-Sheet → `.data` → GIMP → Script-Fu pipeline
@@ -243,6 +251,17 @@ Replaces the legacy Google-Sheet → `.data` → GIMP → Script-Fu pipeline
activation). The live `SystemParametersInfo` apply changes a user setting, so it
is gated behind config and not exercised by tests. ⏳ Optional: restore the prior
wallpaper when going dormant.
- **Wallpaper maker — done ✅.** `RioJoy.Tray/Editor/WallpaperMakerForm` (tray →
"Wallpaper maker") is the interactive replacement for the Sheet → GIMP pipeline:
it renders the profile's wallpaper live on the template base image, outlines all
119 cells, and lets the user click any cell — including the heading/banner cells
the button editor can't reach — to edit its text with debounced re-render.
Clicking a stacked cell cycles through the regions at that pixel
(`RioJoy.Core/Overlay/OverlayHitTester`, unit-tested — stacking is legitimate:
the image feeds six chroma-split displays). Imports a legacy `.data` sheet row
(game picker for multi-row sheets), exports the PNG, and can apply the desktop
wallpaper immediately (same per-profile path the runtime uses). Prompts for and
remembers `AppConfig.OverlayTemplatePath` on first use.
- **Mapping editor — done ✅ (cockpit control-panel layout).**
`RioJoy.Tray/Editor/ProfileEditorForm` shows the cockpit as a clickable control
panel matching the **original Win32 RIO design** (docs/Win32RIO/, by FASA/Michel