docs: the phone app, before the first line of it - #107
Draft
pierre-rouanet wants to merge 1 commit into
Draft
Conversation
`app-path-design.md` describes the robot half of the app path in detail and says almost nothing about the client, beyond two warnings aimed at whoever writes it. This is the other half: what the app is built from, what it takes from the Reachy Mini app and what it deliberately does not, and the list of robot-side gaps that are app-facing. Three things it settles. The protocol belongs in Rust, because `tauri-plugin-blec` exposes the same handler to Rust as to JS, so the app can depend on `duck-ipc-proto` and `btd::framing` and be unable to drift from the daemon — the property `duck-btctl` already has. Bluetooth is the permanent channel here rather than a setup step, which is the one structural difference from the app we already ship and the reason its wizard cannot be inherited. And a phone spike with `--require-pairing` on comes before any screen, because §5.5 is a fact about CoreBluetooth on a laptop and the blocker is about a phone. Nothing is built. Written now so the decisions are arguable rather than implied by a repo, and so the open ones — the PIN screen, one app or two — are recorded as open. Assisted-by: Claude:claude-opus-5[1m]
pierre-rouanet
marked this pull request as draft
August 24, 2026 13:23
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
app-path-design.mdcovers the robot half of the app path and says almost nothing about the client. This addsdocs/design/mobile-app.mdfor the other half, and links the two.It settles three things.
The protocol belongs in Rust.
tauri-plugin-blecexposes the same handler to Rust as to JS, so the app can depend onduck-ipc-protoandbtd::framingand drive the radio from the Rust side — which makes it unable to drift from the daemon, the propertyduck-btctlalready has. That is the argument for Tauri here, and it is not the usual one: every cross-platform toolkit gives you one codebase, only this one lets the client speak the server's own types.Bluetooth is the permanent channel, not a setup step. Reachy Mini's BLE code runs once and hands over to the LAN; ours is where the settings live, because settings that work with no network is what §2.2 exists for. So the app needs a session layer that reconnects and re-authenticates silently — §3.2 discards the session with the peer — and that layer has no counterpart to copy.
A phone spike comes before any screen. §5.5 is the blocker and it is currently a fact about CoreBluetooth on a laptop. Scan, connect,
hello, authenticate,system.info, with--require-pairingon, on a real iPhone and a real Android, answers that plus the one-characteristic question, the MTU, and the stored-identifier fast path.The Reachy Mini app is treated as a reference rather than a base: its plumbing is worth taking —
blecwiring, Android permissions, safe-area work, the release workflow, the store compliance notes — and its BLE dialect and HF-terminated wizard are not.Also a table of what the robot still owes the app, each row pointing at the section of
app-path-design.mdthat owns it, and two open decisions: whether v1 shows a PIN screen for a PIN that is000000, and whether one app ever serves both robots.Nothing is built.