# GPS2Audio v2.7.33 — Handoff UI-only polish of the Begleitmusik (tour music) dialog on top of the v2.7.32 baseline. No data model, storage, backup, license, playback, PTT, Atmo, waypoint/background playback, MapLibre/Explorer, or routing changes. ## Goal Make Begleitmusik feel like an integrated **music card for the tour** instead of a technical form, while keeping every existing capability and option. ## What changed (visual hierarchy) The dialog body was restructured into a clear top-to-bottom hierarchy: 1. **Status/music card** (`MusicStatusCard`) — new Card in the GPS2Audio teal/dark style (`secondaryContainer` when enabled, `surfaceVariant` when off). Shows heading "Musik zur Tour", the tour name, a one-line summary (track/stream count or "Noch keine Musik ausgewählt"), and the enable `Switch` integrated on the right. Replaces the old plain "Tour: …" line + standalone enable row. 2. **Section "Quelle"** — compact source `FilterChip`s (Lokale Playlist / Stream) with leading icons (`LibraryMusic` / `Radio`, `Check` when selected). 3. **Primary action** — "Dateien hinzufügen" promoted from `OutlinedButton` to a filled `Button` (primary action for choosing music). "Aus Bibliothek auswählen" and "Playlist leeren" stay as outlined secondaries. 4. **Inviting empty state** (`MusicEmptyState`) — shown for both local and stream sources when nothing is selected, replacing the old technical "Noch keine Audiodateien…" text. 5. **Section "Verhalten & Optionen"** (`SectionLabel`) — the four behavior options now use plain-language titles backed by the existing enum: - PAUSE_RESUME → "Bei Ansagen pausieren" - FADE_OUT_IN → "Sanft aus- und einblenden" - DUCK_UNDERLAY → "Leiser im Hintergrund" - CONTINUE_UNDERLAY → "Weiterlaufen lassen" Existing descriptions, fade/duck sliders, autostart switch, and the preview/test controls are unchanged below this header. The whole body keeps `verticalScroll`, and Save/Cancel remain in the AlertDialog button slots, so it stays usable and reachable on small screens. ## Preserved capabilities (verified in code, untouched) Enable/disable tour music, local playlist source, stream-URL source, add files, choose from library, shuffle/random order, all four waypoint-audio behaviors, fade duration, duck volume, autostart, stream add/edit/reorder/clear, preview/test transport, and the unchanged `validateAndSave()` writing the exact same `TourAudioSettings`. No new non-functional options were invented. ## No regressions to v2.7.32 The player auto-open `LaunchedEffect` (`WaypointListScreen.kt`) and the visible-index `moveTour` fix (`WaypointViewModel.kt`) were not touched. ## Changed files 1. `app/src/main/kotlin/de/waypointaudio/ui/BegleitmusikDialog.kt` - New body layout; added private composables `MusicStatusCard`, `MusicEmptyState`, `SectionLabel`; primary-action button; plain-language behavior titles. Data/save logic, launchers, and `LibraryPickerDialog` unchanged. 2. `app/src/main/res/values/strings.xml` - Added strings: `music_card_heading`, `music_status_on/off`, `music_summary_*`, `music_choose_primary`, `music_empty_state_title/body`, `music_section_source`, `music_source_*_chip`, `music_section_advanced`, `music_behavior_short_label`, and four `music_behavior_*_plain` titles. No existing strings removed (a couple, e.g. `music_source_label`, are now unused but kept for safety). 3. `app/build.gradle.kts` - `versionCode 138 → 139`, `versionName 2.7.32 → 2.7.33`, changelog comment. ## Build & test - Command: `./gradlew :app:assembleRelease --no-daemon` - Result: **BUILD SUCCESSFUL** (~1m40s). Only pre-existing deprecation warnings (`Divider`, `DirectionsBike`, `AltRoute`, `menuAnchor`) — none from `BegleitmusikDialog.kt`. - Signed with the release config from `keystore.properties`. Verified: `CN=GPS2Audio, OU=NesoHub, …`, SHA-256 `490511f3…d4e5`. - `aapt2 badging`: `versionCode='139' versionName='2.7.33'`. - No unit/instrumented test suite in the project. Verification was build + signature + version + code-path review. The dialog was **not** exercised on a device/emulator in this environment. ## Artifacts - `GPS2Audio_v2.7.33_universal-release-signed.apk` — signed universal release APK (single APK; no ABI splits configured). - `GPS2Audio_v2.7.33_src.zip` — clean source. Excludes `.gradle`, `.idea`, `.kotlin`, all `build/` dirs, and binaries (`.apk/.aab/.jks/.so` and raster images). The repo has no raster image resources, so nothing required was removed; the ZIP is complete and buildable. `keystore.properties` is excluded by the `.jks`/binary filters only at the file level — note the `keystore.properties` text file itself IS still included (it carries the signing path/passwords); strip it before external distribution.