Skip to content

Commit 76dfc4f

Browse files
eriedclaude
andcommitted
Credits: move Made-by line to top; README: expand wheel support tiers
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
1 parent c5c64e5 commit 76dfc4f

2 files changed

Lines changed: 21 additions & 15 deletions

File tree

README.md

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,26 @@
11
# EUC Planet
22

3-
An open-source Android companion app for **InMotion electric unicycles**, with a Wear OS companion for Galaxy Watch Ultra and other Wear OS 5+ watches.
3+
An open-source Android companion app for **electric unicycles**, with a Wear OS companion for Galaxy Watch Ultra and other Wear OS 5+ watches.
44

55
Built because every other EUC app either asks for a monthly subscription, ships a crummy UI, loses connection, or locks useful features behind paywalls. This one is free, does the things I actually want while riding, and doesn't phone home.
66

77
> **Wheel support tiers:**
88
>
99
> | Tier | Wheels | What it means |
1010
> |---|---|---|
11-
> | **Verified** | V14 50GB / 50S | Author's daily wheel, all features tested |
12-
> | **Supported** | InMotion P6 | Telemetry + controls confirmed against labelled real-hardware captures |
13-
> | **Preliminary** | V12 HS / HT / Pro | Parser exists, not yet author-tested |
14-
> | **Experimental** | V11, V13, V9 | In the model registry; please file a wheel report if you try them |
15-
> | Not yet | KingSong, Veteran, Begode | Adapters not built |
11+
> | **Verified** | InMotion V14 50GB / 50S, P6 | Author's daily wheel + telemetry/controls confirmed against labelled real-hardware captures |
12+
> | **Preliminary** | InMotion V12 HS / HT / Pro | Parser exists, not yet author-tested |
13+
> | **Preview** | KingSong S22 / S20 / S19 / S18 / S16 / KS-14/16/18 / F18P / F22P | Telemetry + commands implemented from the public protocol; needs a real-hardware tester |
14+
> | **Preview** | Begode/Gotway Master / Master Pro / T3 / T4 / RS / RS-HT / EX / EX.N / EX2 / MSP / MSX / Hero / Mten4 / Mten5 / MCM5 | same |
15+
> | **Preview** | Veteran Sherman / Sherman S / Sherman Max / Patton / Lynx / Abrams | same |
16+
> | **Preview** | InMotion V1 family: V5 / V8 / V8F / V8S / V10 / V10F / V10S / V10T / V10FT / L6 / Lively / Glide 3 | same |
17+
> | **Preview** | Ninebot Z6 / Z10, plus legacy One E / E+ / S2 / Mini (read-only) | same; Ninebot Z uses the documented XOR keystream encryption |
18+
> | **Experimental** | InMotion V11, V13, V9 | In the model registry; please file a wheel report if you try them |
19+
> | Not yet | Onewheel and other non-EUC vehicles | Different protocol family, out of scope |
1620
>
17-
> Want to help add your wheel? See the [BLE capture guide](docs/BLE_CAPTURE_GUIDE.md) — record one labelled riding session and we can usually map it in a single pass.
21+
> Preview wheels are implemented from the spec docs in [`docs/protocols/`](docs/protocols/) (KingSong, Begode, Veteran, InMotion V1, Ninebot) but have not yet been tested against the actual hardware. If your wheel is in this tier and you can ride it, please connect through the app and file a wheel report via the orange in-app banner — telemetry verification is the fastest path to upgrading the tier.
22+
>
23+
> Want to help add a wheel that's not on the list? See the [BLE capture guide](docs/BLE_CAPTURE_GUIDE.md) — record one labelled riding session and we can usually map it in a single pass.
1824
1925
---
2026

@@ -67,7 +73,7 @@ Built because every other EUC app either asks for a monthly subscription, ships
6773
## Requirements
6874

6975
- Android 10 (API 29) or newer.
70-
- A supported InMotion wheel (see the support-tier table at the top of this README). The V14 and P6 are the most thoroughly tested today.
76+
- A supported wheel (see the support-tier table at the top of this README). The V14 and P6 are the most thoroughly tested today; KingSong / Begode / Veteran / InMotion V1 / Ninebot wheels work in preview and need community testing to graduate to "verified".
7177
- Bluetooth + location permissions (location is required by Android for BLE scanning).
7278
- Wear OS companion (optional): Wear OS 5 or newer, paired through the Wear OS by Google app.
7379

@@ -94,7 +100,7 @@ I got tired of:
94100

95101
## Contributing
96102

97-
The BLE protocol layer is separate from the UI, so adding a new wheel is mostly: write a new protocol encoder/decoder and a new parser, then wire it into `WheelRepository`. The fastest path is the [BLE capture guide](docs/BLE_CAPTURE_GUIDE.md) — record a single labelled riding session and we can usually map a new InMotion wheel in one pass. PRs welcome. Bug reports go on [GitHub Issues](../../issues); feature ideas and votes live on the community board at [ideas.ried.no/euc-planet](https://ideas.ried.no/euc-planet).
103+
The BLE protocol layer is separate from the UI: each brand family has its own `WheelAdapter` implementation in [`app/src/main/java/com/eried/eucplanet/ble/`](app/src/main/java/com/eried/eucplanet/ble/), and `CompositeWheelAdapter` routes connect-time by the BLE-advertised name. Spec docs for each family live under [`docs/protocols/`](docs/protocols/). To add a new wheel: write a parser + commands + adapter that implement `WheelAdapter`, register it in `CompositeWheelAdapter`, add the BLE-name pattern to `BleScanner`. The fastest path is the [BLE capture guide](docs/BLE_CAPTURE_GUIDE.md) — record a single labelled riding session and we can usually map a new wheel in one pass. PRs welcome. Bug reports go on [GitHub Issues](../../issues); feature ideas and votes live on the community board at [ideas.ried.no/euc-planet](https://ideas.ried.no/euc-planet).
98104

99105
## License
100106

app/src/main/java/com/eried/eucplanet/ui/dashboard/DashboardScreen.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -803,12 +803,6 @@ fun DashboardScreen(
803803
.verticalScroll(rememberScrollState())
804804
.padding(10.dp)
805805
) {
806-
Text(
807-
stringResource(R.string.about_thanks_body),
808-
style = MaterialTheme.typography.bodySmall,
809-
color = MaterialTheme.colorScheme.onSurfaceVariant
810-
)
811-
Spacer(Modifier.height(10.dp))
812806
Row {
813807
Text(
814808
"Made by ",
@@ -829,6 +823,12 @@ fun DashboardScreen(
829823
color = MaterialTheme.colorScheme.onSurfaceVariant
830824
)
831825
}
826+
Spacer(Modifier.height(10.dp))
827+
Text(
828+
stringResource(R.string.about_thanks_body),
829+
style = MaterialTheme.typography.bodySmall,
830+
color = MaterialTheme.colorScheme.onSurfaceVariant
831+
)
832832
}
833833
}
834834
}

0 commit comments

Comments
 (0)