Просмотр исходного кода

docs: add verified screenshots and platform notes

Krasimir Kazakov 1 неделя назад
Родитель
Сommit
7e30bb853a

+ 1 - 0
AGENTS.md

@@ -91,4 +91,5 @@ notifyListeners();
 - The HOME role must be granted for the dashboard to replace the tablet home screen. On the emulator use `cmd role add-role-holder`; the in-app banner and Settings row use `RoleManager`.
 - The HOME role must be granted for the dashboard to replace the tablet home screen. On the emulator use `cmd role add-role-holder`; the in-app banner and Settings row use `RoleManager`.
 - Screen-space is deliberately finite: test at 1280×800 and 1024×600. Avoid unbounded `ListView`s inside `Column`s.
 - Screen-space is deliberately finite: test at 1280×800 and 1024×600. Avoid unbounded `ListView`s inside `Column`s.
 - `tool/emulator.sh` starts a headless AVD; use `adb exec-out screencap -p` for screenshots. There may be multiple `adb` binaries on PATH; use the absolute one.
 - `tool/emulator.sh` starts a headless AVD; use `adb exec-out screencap -p` for screenshots. There may be multiple `adb` binaries on PATH; use the absolute one.
+- While CarDash is foreground, `MainActivity` consumes hardware volume keys and adjusts `STREAM_MUSIC` so they match the dashboard. Do not remove that override without providing another sync path; otherwise Android controls the ring stream when no media is playing.
 - Reinstalling the app can clear its HOME role; re-run `tool/install.sh` or use Settings > Home app.
 - Reinstalling the app can clear its HOME role; re-run `tool/install.sh` or use Settings > Home app.

+ 24 - 9
README.md

@@ -10,17 +10,32 @@ apps open full-screen using the normal Android launcher mechanism. No overlays,
 no root, no kiosk setup.
 no root, no kiosk setup.
 
 
 <p align="center">
 <p align="center">
-  <em>Early preview — implementation and UI screenshots are in progress.</em>
+  <em>Verified on Android 15 and Android 10 tablet emulators at 1280×800.
+  Landscape only.</em>
 </p>
 </p>
 
 
+## Screenshots
+
+| Light | Dark |
+|---|---|
+| ![CarDash light home](docs/screenshots/home-light.png) | ![CarDash dark home](docs/screenshots/home-dark.png) |
+
+Also: [All apps](docs/screenshots/all-apps.png) ·
+[app picker](docs/screenshots/app-picker.png) ·
+[Settings](docs/screenshots/settings.png) ·
+[PIN lock](docs/screenshots/pin-lock.png) ·
+[1024×600 layout](docs/screenshots/home-compact-1024.png)
+
 ## Features
 ## Features
 
 
 - **One home screen** — no pages, no top bar, no bottom dock; information and
 - **One home screen** — no pages, no top bar, no bottom dock; information and
   controls live on the home page.
   controls live on the home page.
 - **Large clock and date** with the device's 12/24-hour preference.
 - **Large clock and date** with the device's 12/24-hour preference.
 - **Battery, charging and Wi-Fi** status.
 - **Battery, charging and Wi-Fi** status.
-- **Media volume** — ring, slider, step and mute controls; hardware volume keys
-  stay in sync. This is the phone's media stream, not a private volume.
+- **Media volume** — ring, slider, step and mute controls. While CarDash is in
+  front, the hardware volume keys are routed to the same media stream, so the
+  dashboard and the keys always agree. This is the phone's media stream, not a
+  private volume.
 - **Configurable shortcuts** for Navigation, Music and Radio. Generic icons on
 - **Configurable shortcuts** for Navigation, Music and Radio. Generic icons on
   the dashboard; real app icons in the picker and All Apps.
   the dashboard; real app icons in the picker and All Apps.
 - **All apps** — searchable grid of every launchable app, launched full-screen.
 - **All apps** — searchable grid of every launchable app, launched full-screen.
@@ -75,8 +90,8 @@ minimum-version checks.
 ### Manual install
 ### Manual install
 
 
 ```bash
 ```bash
-flutter build apk --debug
-adb install -r build/app/outputs/flutter-apk/app-debug.apk
+flutter build apk --release
+adb install -r build/app/outputs/flutter-apk/app-release.apk
 adb shell cmd role add-role-holder android.app.role.HOME com.wasp.cardash_launcher
 adb shell cmd role add-role-holder android.app.role.HOME com.wasp.cardash_launcher
 adb shell am start -a android.intent.action.MAIN -c android.intent.category.HOME
 adb shell am start -a android.intent.action.MAIN -c android.intent.category.HOME
 ```
 ```
@@ -96,7 +111,7 @@ same thing. Android will not let an app force itself into the home role silently
 | All apps | Search every launchable app; tap to open |
 | All apps | Search every launchable app; tap to open |
 | Volume ring / mute | Toggle media mute |
 | Volume ring / mute | Toggle media mute |
 | Slider or − / + | Set media volume |
 | Slider or − / + | Set media volume |
-| Hardware volume keys | Update the on-screen control automatically |
+| Hardware volume keys | Adjust the dashboard's media volume; the ring follows |
 
 
 The app hides the Android status and navigation bars while CarDash is in the
 The app hides the Android status and navigation bars while CarDash is in the
 foreground. Swipe from an edge to reveal them temporarily; they hide again when
 foreground. Swipe from an edge to reveal them temporarily; they hide again when
@@ -152,8 +167,9 @@ flutter test
 ```
 ```
 
 
 Current tests cover PIN hashing/persistence, settings persistence, theme
 Current tests cover PIN hashing/persistence, settings persistence, theme
-resolution and the shortcut tile widget. Native package enumeration and the
-HOME role are verified on the emulator.
+resolution and the shortcut tile widget. Native package enumeration, the HOME
+role, volume, app launching and PIN flows were verified on both API 35 and
+API 29 tablet emulators, including the release APK.
 
 
 ## Compatibility and limitations
 ## Compatibility and limitations
 
 
@@ -187,7 +203,6 @@ large numerals and quiet line icons. It is not a copy of that UI.
 
 
 - Optional compact now-playing control beside the volume card.
 - Optional compact now-playing control beside the volume card.
 - Configurable home layout or additional shortcut slots.
 - Configurable home layout or additional shortcut slots.
-- Screenshot set in `docs/screenshots/`.
 - Release signing configuration.
 - Release signing configuration.
 - Real-device soak test on an Android 10 car tablet.
 - Real-device soak test on an Android 10 car tablet.
 
 

+ 15 - 12
docs/IMPLEMENTATION_PLAN.md

@@ -74,8 +74,8 @@ Android (Kotlin)
 | M3 | Kotlin bridges: app list/icons/launch, HOME role, volume, battery/Wi-Fi | Done |
 | M3 | Kotlin bridges: app list/icons/launch, HOME role, volume, battery/Wi-Fi | Done |
 | M4 | App picker, All Apps, slot persistence, long-press flows, launch errors | Done |
 | M4 | App picker, All Apps, slot persistence, long-press flows, launch errors | Done |
 | M5 | Settings, theme auto window, PIN setup/change/remove, cold-start lock | Done |
 | M5 | Settings, theme auto window, PIN setup/change/remove, cold-start lock | Done |
-| M6 | Interaction testing, light/dark screenshots, layout polish, API 29 verification | In progress |
-| M7 | Release build, final docs, screenshots, last commits | Pending |
+| M6 | Interaction testing, light/dark screenshots, layout polish, API 29 verification | Done |
+| M7 | Release build, final docs, screenshots, last commits | Done |
 
 
 ## 5. Verification checklist
 ## 5. Verification checklist
 
 
@@ -86,15 +86,15 @@ Android (Kotlin)
 - [x] HOME role granted; Home opens CarDash.
 - [x] HOME role granted; Home opens CarDash.
 - [x] Immersive full-screen; no Android bars.
 - [x] Immersive full-screen; no Android bars.
 - [x] Real app list and icons in All Apps.
 - [x] Real app list and icons in All Apps.
-- [ ] App picker assign / long-press change / clear, with dock-independent persistence.
-- [ ] Launch Navigation/Music/Radio full-screen and return Home.
-- [ ] Volume slider, mute, hardware-key synchronization.
-- [ ] Light theme, dark theme and automatic switch.
-- [ ] PIN set → cold start shows lock; wrong PIN/cooldown; remove PIN.
-- [ ] Verify 1024×600 compact layout (`adb shell wm size 1024x600`).
-- [ ] Boot and verify on Android 10 (API 29) AVD.
-- [ ] Release APK on both AVDs.
-- [ ] Screenshots in `docs/screenshots/`; README/AGENTS/plan updated.
+- [x] App picker assign / long-press change / clear, with persistence across restart.
+- [x] Launch Navigation/Music/Radio full-screen and return Home (verified with Maps and YouTube Music).
+- [x] Volume slider, mute and hardware-key synchronization (keys are routed to `STREAM_MUSIC` while the dashboard is foreground).
+- [x] Light theme, dark theme and automatic switch.
+- [x] PIN set/change/remove; cold start shows lock; wrong PIN; no re-lock after returning from an app.
+- [x] Verify 1024×600 compact layout (`adb shell wm size 1024x600`).
+- [x] Boot and verify on Android 10 (API 29) AVD, including PIN and release APK.
+- [x] Release APK on both AVDs (54 MB universal APK).
+- [x] Screenshots in `docs/screenshots/`; README/AGENTS/plan updated.
 
 
 ## 6. Known risks and mitigations
 ## 6. Known risks and mitigations
 
 
@@ -125,4 +125,7 @@ Android (Kotlin)
 - 2026-10-29: Pivoted from an overlay/head-unit chrome design to a
 - 2026-10-29: Pivoted from an overlay/head-unit chrome design to a
   launcher-native single home page, no top/bottom bars, full-screen external
   launcher-native single home page, no top/bottom bars, full-screen external
   apps. Implemented core UI, Kotlin bridges, settings, PIN and documentation.
   apps. Implemented core UI, Kotlin bridges, settings, PIN and documentation.
-  Verified initial home/All Apps/immersive behavior on the API 35 AVD.
+  Verified initial home, app picker, All Apps, volume, themes and cold-start PIN
+  on the API 35 AVD; then verified the release build and PIN flows on the API 29
+  AVD. Added hardware volume-key routing and PIN verification progress.
+  Screenshots captured at 1280×800 and 1024×600.

BIN
docs/screenshots/all-apps.png


BIN
docs/screenshots/app-picker.png


BIN
docs/screenshots/home-compact-1024.png


BIN
docs/screenshots/home-dark.png


BIN
docs/screenshots/home-light.png


BIN
docs/screenshots/pin-lock.png


BIN
docs/screenshots/settings.png