fix(qt): kiosk feedback round — chrome, search, album, artists, lyrics

Address the owner's kiosk feedback on top of the release hardening:

- Chrome: the back bar is a drag surface and shrank to 44px with one shared
  button form for Back/Forward/Connect/Cast; Qobuz Connect and Cast are a
  permanent cluster in the bar; the dead Share-logs button left the kiosk
  Settings header.
- Transport bar: the hidden overflow menu is gone; Volume is always visible
  with a vertical sheet, and Desktop mode has its own button.
- Now Playing: one centred transport row (New-bar order); lyrics are centred
  (shared LyricsLinesView gains an opt-in centered, desktop default false).
- Local Library: the media funnel and an Open (ephemeral) entry point reach
  the kiosk; Artists is its own multi-column round-card grid (kiosk-only, the
  desktop LocalArtistsTab is untouched); the Artists drill-down query no
  longer hangs off a stale derived guard.
- Search: the All-tab dashboard shelves render again — they were mounted in a
  Loader Component that read the delegate id under reuse and bound an empty
  model; they are direct children now.
- Album detail: icon actions the height of the quality badge plus play next /
  later / queue, an inline floating quality badge, and zebra rows; both album
  headers show a quality badge.
- Immersive: a quiet auto-hiding kiosk exit moved to the bottom, clear of the
  window controls.

Regression coverage in scripts/test_qt_kiosk_feedback.mjs (wired into the
runtime gate). Verified on a private authenticated Xvfb; QML audits 6/6,
Node gate 5/5, release build 0 warnings.

cc
This commit is contained in:
vicrodh committed 2026-09-07 12:33:28 -06:00
1 parent b1dba198c9
commit 31da9c57bb
24 files changed
+1273 -328

No files matched your search

+6 -14
View File
@@ -122,11 +122,15 @@ Item {
font.pixelSize: root.kioskHost ? (theme.fontTitle) * 1.2 : (theme.fontTitle)
font.weight: theme.weightBold
}
// The kiosk section selector. The "Share logs" icon button that
// used to sit to its right is gone: it called QbzShell.logOpen(),
// whose viewer modal is mounted by the desktop AppShell only, so
// on the kiosk it was a dead control (owner report 2026-09-07).
QbzSelect {
visible: root.kioskHost
kioskHost: true
anchors.right: logsButton.left
anchors.rightMargin: 8
anchors.right: parent.right
anchors.rightMargin: 12
anchors.verticalCenter: parent.verticalCenter
menuWidth: Math.max(180, Math.min(300, parent.width - 270))
searchable: options.length > 8
@@ -137,18 +141,6 @@ Item {
flick.contentY = 0
}
}
SettingsButton {
id: logsButton
visible: root.kioskHost
kioskHost: true
anchors.right: parent.right
anchors.rightMargin: 12
anchors.verticalCenter: parent.verticalCenter
minWidth: 44
iconName: "cloud-upload"
onClicked: QbzShell.logOpen()
Accessible.name: QbzSession.tr("Share logs", QbzSession.trRev)
}
}
// --- Sub-nav + active panel ---------------------------------------