feat(qt): kiosk profile release hardening

Integrate the Kiosk profile hardening round: 12 dedicated Kiosk views plus
22 shared opt-in hosts, shared navigation history with Back/Forward, Albums
as the default library tab, native paged Local Library (artists/tracks),
lightweight MyQBZ grid and detail, Ephemeral lifecycle, bounded lists and
artwork sized to the physical frame, static skeletons, 64px transport bar,
Settings touch reflow and a persistent Immersive exit.

Desktop keeps its prior behavior: every shared component defaults to the
desktop path and only opts into Kiosk behavior through explicit properties
(origin-relative ScrollMemory, viewport-bounded artwork requests).

Regression coverage: kiosk navigation and artwork Node tests added to the
runtime gate, scroll-origin fixtures for fixed and grouped rows, i18n
strings for all eight locales.

Verified by 750 release tests, six QML audits, Kiosk smokes at 800x480 and
1280x800 and a Desktop A/B with seven pixel-identical captures.

cc
This commit is contained in:
vicrodh committed 2026-09-07 08:23:11 -06:00
1 parent c1c463dc94
commit b1dba198c9
139 files changed
+9590 -4973

No files matched your search

@@ -33,6 +33,7 @@ import "../theme"
Rectangle {
id: root
property bool kioskHost: false
/// [{ id, label, icon, danger, needsSelection }] — `id` is what `action`
/// publishes; `label` is the tooltip text and must arrive ALREADY
@@ -75,8 +76,8 @@ Rectangle {
required property var modelData
readonly property bool armed: !modelData.needsSelection
|| root.selectedCount > 0
width: 34
height: 30
width: root.kioskHost ? 44 : 34
height: root.kioskHost ? 44 : 30
anchors.verticalCenter: parent.verticalCenter
radius: theme.radiusSm
opacity: armed ? 1.0 : 0.4