|
@@ -24,7 +24,9 @@ Also: [16-button home](docs/screenshots/home-16.png) ·
|
|
|
[16 buttons at 1024×600](docs/screenshots/home-16-1024.png) ·
|
|
[16 buttons at 1024×600](docs/screenshots/home-16-1024.png) ·
|
|
|
[All apps](docs/screenshots/all-apps.png) ·
|
|
[All apps](docs/screenshots/all-apps.png) ·
|
|
|
[app picker](docs/screenshots/app-picker.png) ·
|
|
[app picker](docs/screenshots/app-picker.png) ·
|
|
|
-[Settings · home buttons](docs/screenshots/settings-buttons.png) ·
|
|
|
|
|
|
|
+[Settings · accent & buttons](docs/screenshots/settings-buttons.png) ·
|
|
|
|
|
+[Blue accent](docs/screenshots/settings-blue-accent.png) ·
|
|
|
|
|
+[user-app icon on Home](docs/screenshots/home-user-icon.png) ·
|
|
|
[PIN lock](docs/screenshots/pin-lock.png) ·
|
|
[PIN lock](docs/screenshots/pin-lock.png) ·
|
|
|
[1024×600 layout](docs/screenshots/home-compact-1024.png)
|
|
[1024×600 layout](docs/screenshots/home-compact-1024.png)
|
|
|
|
|
|
|
@@ -33,20 +35,30 @@ Also: [16-button home](docs/screenshots/home-16.png) ·
|
|
|
- **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, with one switch to hide the battery
|
|
|
|
|
+ level and charging bolt.
|
|
|
- **Media volume** — ring, slider, step and mute controls. While CarDash is in
|
|
- **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
|
|
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
|
|
dashboard and the keys always agree. This is the phone's media stream, not a
|
|
|
private volume.
|
|
private volume.
|
|
|
- **Configurable home buttons** — switches in Settings show or hide Navigation,
|
|
- **Configurable home buttons** — switches in Settings show or hide Navigation,
|
|
|
- Music and Radio. Settings and All apps are always present. Dashboard icons
|
|
|
|
|
- stay generic; real app icons appear in the picker and All Apps.
|
|
|
|
|
|
|
+ Music and Radio. Settings and All apps are always the last two buttons.
|
|
|
|
|
+ User-installed apps show their own icons on Home; system apps and unassigned
|
|
|
|
|
+ slots keep the generic category icon.
|
|
|
- **Pin any app from All Apps** — long-press an app to add it to Home. The home
|
|
- **Pin any app from All Apps** — long-press an app to add it to Home. The home
|
|
|
page holds up to **16 buttons including Settings and All apps**, and the grid
|
|
page holds up to **16 buttons including Settings and All apps**, and the grid
|
|
|
shrinks as it fills. Long-press an added app on Home to remove it completely;
|
|
shrinks as it fills. Long-press an added app on Home to remove it completely;
|
|
|
add it back with another long press in All Apps.
|
|
add it back with another long press in All Apps.
|
|
|
- **All apps** — searchable grid of every launchable app, launched full-screen.
|
|
- **All apps** — searchable grid of every launchable app, launched full-screen.
|
|
|
|
|
+- **Media-aware Music tile** — while media audio is active and the Music shortcut
|
|
|
|
|
+ is assigned, the tile shows the selected app's icon with a small animated
|
|
|
|
|
+ equalizer. Android exposes media-active state, not the playing package, to a
|
|
|
|
|
+ normal launcher; see the limitation below.
|
|
|
|
|
+- **Six accent colors** — Green, Blue, Amber, Rose, Violet or Teal, applied
|
|
|
|
|
+ across the whole interface.
|
|
|
- **Screen stays awake** while CarDash is in the foreground.
|
|
- **Screen stays awake** while CarDash is in the foreground.
|
|
|
|
|
+- **A short onboarding hint** — the long-press hint fades away two minutes after
|
|
|
|
|
+ app start, then stays gone.
|
|
|
- **Light / Dark / Automatic** theme. Automatic uses a fixed local-time window
|
|
- **Light / Dark / Automatic** theme. Automatic uses a fixed local-time window
|
|
|
(default 19:00–07:00), editable in Settings.
|
|
(default 19:00–07:00), editable in Settings.
|
|
|
- **Optional PIN** — four digits, stored as a salted PBKDF2 hash in
|
|
- **Optional PIN** — four digits, stored as a salted PBKDF2 hash in
|
|
@@ -120,11 +132,14 @@ same thing. Android will not let an app force itself into the home role silently
|
|
|
| Tap Navigation / Music / Radio | Open the assigned app full-screen |
|
|
| Tap Navigation / Music / Radio | Open the assigned app full-screen |
|
|
|
| Long-press Navigation / Music / Radio | Pick a different installed app |
|
|
| Long-press Navigation / Music / Radio | Pick a different installed app |
|
|
|
| Tap an unassigned shortcut | Open the app picker |
|
|
| Tap an unassigned shortcut | Open the app picker |
|
|
|
|
|
+| Settings → Accent | Pick Green, Blue, Amber, Rose, Violet or Teal |
|
|
|
|
|
+| Settings → Battery & charging | Show or hide battery level and charging bolt |
|
|
|
| Settings → Home buttons switches | Show or hide Navigation, Music, Radio |
|
|
| Settings → Home buttons switches | Show or hide Navigation, Music, Radio |
|
|
|
| Long-press an app in All Apps | Add it to Home (up to 16 buttons) |
|
|
| Long-press an app in All Apps | Add it to Home (up to 16 buttons) |
|
|
|
| Long-press an added app on Home | Remove it from Home |
|
|
| Long-press an added app on Home | Remove it from Home |
|
|
|
-| Settings | Theme, home buttons, default-home role, PIN |
|
|
|
|
|
|
|
+| Settings | Theme, accent, battery, home buttons, default-home role, PIN |
|
|
|
| All apps | Search every launchable app; tap to open, hold to pin |
|
|
| All apps | Search every launchable app; tap to open, hold to pin |
|
|
|
|
|
+| Music tile while media is active | Shows the selected app icon + equalizer |
|
|
|
| Screen | Stays awake while CarDash is in front |
|
|
| Screen | Stays awake while CarDash is in front |
|
|
|
| Volume ring / mute | Toggle media mute |
|
|
| Volume ring / mute | Toggle media mute |
|
|
|
| Slider or − / + | Set media volume |
|
|
| Slider or − / + | Set media volume |
|
|
@@ -138,9 +153,11 @@ the app resumes.
|
|
|
|
|
|
|
|
**General**
|
|
**General**
|
|
|
- Light / Dark / Auto theme.
|
|
- Light / Dark / Auto theme.
|
|
|
|
|
+- Accent: Green, Blue, Amber, Rose, Violet or Teal.
|
|
|
|
|
+- Battery & charging: one switch hides both the level and charging bolt.
|
|
|
- Auto night window (default dark from 19:00, light from 07:00).
|
|
- Auto night window (default dark from 19:00, light from 07:00).
|
|
|
- Home buttons: show/hide Navigation, Music, Radio; live count out of 16.
|
|
- Home buttons: show/hide Navigation, Music, Radio; live count out of 16.
|
|
|
-- Assign the app for each slot; Settings and All apps are fixed.
|
|
|
|
|
|
|
+- Assign the app for each slot; Settings and All apps are fixed and last.
|
|
|
- Home role status and shortcut to the system prompt.
|
|
- Home role status and shortcut to the system prompt.
|
|
|
|
|
|
|
|
**Security**
|
|
**Security**
|
|
@@ -184,13 +201,14 @@ flutter test
|
|
|
./tool/check.sh
|
|
./tool/check.sh
|
|
|
```
|
|
```
|
|
|
|
|
|
|
|
-The 17 tests cover PIN hashing/persistence, settings persistence, theme
|
|
|
|
|
-resolution, slot visibility, pinned apps, the 16-button cap and the dense
|
|
|
|
|
-shortcut grid. Native package enumeration, the HOME role, volume, app launching
|
|
|
|
|
|
|
+The 21 tests cover PIN hashing/persistence, settings persistence, theme and
|
|
|
|
|
+accent resolution, battery visibility, slot visibility, pinned apps, the
|
|
|
|
|
+16-button cap, the dense shortcut grid and the equalizer animation. Native
|
|
|
|
|
+package enumeration, system/user app flags, the HOME role, volume, app launching
|
|
|
and PIN flows were verified on API 35 and API 29 emulators, including the release
|
|
and PIN flows were verified on API 35 and API 29 emulators, including the release
|
|
|
-APK. The home-button, pinning and keep-awake flows were checked at 1280×800 and
|
|
|
|
|
-1024×600. Release 0.2.0 is also installed on a physical Android 17 HyperOS
|
|
|
|
|
-tablet.
|
|
|
|
|
|
|
+APK. The home-button, pinning, user-icon and keep-awake flows were checked at
|
|
|
|
|
+1280×800 and 1024×600. Release 0.3.0 is installed on the emulator and the
|
|
|
|
|
+physical Android 17 HyperOS tablet.
|
|
|
|
|
|
|
|
## Troubleshooting the emulator
|
|
## Troubleshooting the emulator
|
|
|
|
|
|
|
@@ -213,10 +231,17 @@ Android 15 AVD is left running headlessly after development; use
|
|
|
requires a newer Android release.
|
|
requires a newer Android release.
|
|
|
- **Landscape only** (`sensorLandscape`). The home page is designed for
|
|
- **Landscape only** (`sensorLandscape`). The home page is designed for
|
|
|
1280×800 and remains usable at 1024×600.
|
|
1280×800 and remains usable at 1024×600.
|
|
|
-- **16-button cap** includes Settings and All apps. Added apps use the generic
|
|
|
|
|
- dashboard icon and their name; real icons remain in the picker and All Apps.
|
|
|
|
|
|
|
+- **16-button cap** includes Settings and All apps. Non-system apps use their
|
|
|
|
|
+ own icon on Home; system apps, unassigned slots and fixed buttons keep the
|
|
|
|
|
+ generic line icons.
|
|
|
|
|
+- **Media equalizer** reacts to system media activity, not a per-app media
|
|
|
|
|
+ session. Android does not expose the playing package to a normal launcher
|
|
|
|
|
+ without notification access; adding that permission is deliberately out of
|
|
|
|
|
+ scope for now.
|
|
|
- **Screen-on** applies while CarDash is the foreground window. Android can
|
|
- **Screen-on** applies while CarDash is the foreground window. Android can
|
|
|
still sleep while another app is in front.
|
|
still sleep while another app is in front.
|
|
|
|
|
+- **Onboarding hint** is anchored to process start and disappears after two
|
|
|
|
|
+ minutes; it does not return until the next cold start.
|
|
|
- **No embedded third-party app UI.** Navigation/Music/Radio are launched in
|
|
- **No embedded third-party app UI.** Navigation/Music/Radio are launched in
|
|
|
their own full-screen windows.
|
|
their own full-screen windows.
|
|
|
- **No global play/pause control.** Volume is on the home screen; playback
|
|
- **No global play/pause control.** Volume is on the home screen; playback
|
|
@@ -232,8 +257,8 @@ Android 15 AVD is left running headlessly after development; use
|
|
|
## Design
|
|
## Design
|
|
|
|
|
|
|
|
The visual language is inspired by the [TrailCurrent Godwit](https://trailcurrent.com/godwit.html)
|
|
The visual language is inspired by the [TrailCurrent Godwit](https://trailcurrent.com/godwit.html)
|
|
|
-head unit (MIT): warm neutral surfaces, a single deep-green instrument accent,
|
|
|
|
|
-large numerals and quiet line icons. It is not a copy of that UI.
|
|
|
|
|
|
|
+head unit (MIT): warm neutral surfaces, a selectable instrument accent, large
|
|
|
|
|
+numerals and quiet line icons. It is not a copy of that UI.
|
|
|
|
|
|
|
|
- Typeface: **Manrope** (SIL Open Font License), bundled offline.
|
|
- Typeface: **Manrope** (SIL Open Font License), bundled offline.
|
|
|
- Icons: **Lucide** (ISC), bundled as SVGs.
|
|
- Icons: **Lucide** (ISC), bundled as SVGs.
|
|
@@ -242,6 +267,7 @@ large numerals and quiet line icons. It is not a copy of that UI.
|
|
|
## Roadmap
|
|
## Roadmap
|
|
|
|
|
|
|
|
- Optional compact now-playing control beside the volume card.
|
|
- Optional compact now-playing control beside the volume card.
|
|
|
|
|
+- Exact per-app media detection via notification access, if desired.
|
|
|
- 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.
|
|
|
|
|
|