Skip to content

Onboarding: hardware and phone acceptance for the implemented flow #2214

Description

@timohueser

Implementation complete; acceptance remains

Device setup is merged in #2237. Companion onboarding and the factory demo ride are merged in #2254. The listed S/F/A source sub-issues are closed. The old flow table is the design record, not an open implementation queue.

Remaining closeout:

  • Check the device setup flow on current hardware: first boot/reset progress, button lesson, Back/Select behavior, language/units/theme, skip-phone branch and paired handoff.
  • Check optional phone handoffs for update, demo route and demo ride with the current app/firmware. The true release OTA gate remains in Firmware release: production key, update host and end-to-end OTA acceptance #773.
  • Proofread French/Spanish device copy and check physical button positions when the enclosure exists.
  • Check the current first-use requirement suggestion in the verification console with the owner. Do not file a duplicate or imply approval.

The production QR link and current personal-team signing failure have one owner: #2233. The fixed link contract and implementation are no longer open design questions. No new onboarding screen or localization feature is selected for the cleanup week.

Requirements: none

Historical scope and evidence — use the current work above

Goal

A new rider goes from the first power-on to a first ride with the OBC and the app. The rider can start on the OBC or in the app. Both paths meet at pairing. After pairing, every step is optional. The OBC stays useful without a phone: the preinstalled map and ride recording work from the first minute.

This epic implements item 5 of #2213 in the direction the owner chose.

Wireframes

Canvas: https://claude.ai/artifact/9UqMiWGPTNopMhHqrK2tVD (owner-private). D boards are the OBC at 2×, P boards are the app.

[!IMPORTANT]
The wireframes are a rough guide, not a design. They set the order of the steps and what each step asks. They do not set layout, copy or visuals. Design every screen in the OBC UI language (device) and the app's Day/Tent theme (app). Most OBC boards need more than one 240 × 320 screen. Check the character limit of each font tier. Spend real effort on the design.

Flow

Phase OBC App Crosses the link
01 Hello D01 greeting in four languages. Power on is a long press. P01 welcome —
02 Make it yours D02 language, D03 button lesson, D04 units, D05 theme P02 switch on your OBC, P03 Bluetooth permission —
03 Connect D06 QR code, D07 passkey (exists), D08 paired P04 found (the QR names one OBC), P05 code, P06 paired and named QR link, passkey, device name
04 Tune D09 sensors, D14 max HR and FTP P08 look at your OBC —
05 Update D10 confirm install (exists) P09 update, skippable while compatible. P13 update needed. signed update
06 First route D11 route received (exists) P10 send the demo route, or import a route route
07 First ride The factory demo ride waits in Rides P11 sync the demo ride ride
08 Ready D12 all set, then Home P12 Library —

Branch: BACK on the QR screen opens D13, "Ride without the app?". The rider can get the app later in Settings ▸ Connections.

Decisions

  • The app sets only the device name. Language, units, theme, sensors, max HR and FTP are set on the OBC. No new settings protocol.
  • The app shows no live sensor status. It tells the rider to look at the OBC.
  • The app follows the iOS language. It is English only for now. It does not read the OBC language.
  • Setup progress lives in the RRAM settings blob. A factory reset clears it, so setup runs again.
  • OBC steps after pairing do not wait for the app. The update, route and ride steps use the existing cards and sync.
  • The demo route ships only in the app. The rider sends it with a normal route upload.
  • The demo ride ships on the OBC and syncs like a real ride. It is marked as a demo. Onboarding F10: factory demo ride on the OBC #2225 holds the details.
  • The firmware update is skippable while the firmware and the app are compatible.
  • Setup page rules: SELECT commits and moves on; BACK goes to the previous step; the global escape and the drawer chords are refused on every setup page. The title bar counts the titled steps.
  • Button names: the physical buttons are named UP, DOWN, SELECT and BACK in every language.

How we build it

  • One sub-issue at a time on each side. The owner reviews every screen before the next sub-issue starts.
  • The device work lands in one pull request for the whole device series. The owner approves each screen from its obc-sim --png frames as it lands. App screens get simulator screenshots.
  • The implementer designs each screen. The wireframe is only the starting point.

Sub-issues

Issue Boards Depends on
S1 #2215 QR pairing link contract — —
F1 #2216 setup state and the Hello screen D01 —
F2 #2217 language step D02 F1
F3 #2218 button lesson D03 F2
F4 #2219 units and theme steps D04, D05 F3
F5 #2220 QR code screen and the skip-app branch D06, D13 S1, F4
F6 #2221 paired handoff D07, D08 F5
F7 #2222 sensors step D09 F6
F8 #2223 max heart rate and FTP step D14 F7
F9 #2224 all set, then Home D12 F8
F10 #2225 factory demo ride on the OBC — —
A1 #2226 welcome and switch-on screens P01, P02 —
A2 #2227 open from the QR link and find that OBC P03, P04 S1, A1
A3 #2228 passkey and naming the OBC P05, P06 A2
A4 #2229 look at your OBC P08 A3
A5 #2230 firmware update step P09, P13 A4
A6 #2231 first route with the demo route P10 A5
A7 #2232 demo ride sync and the Library handoff P11, P12 A6, F10

Open questions

  • The power-on gesture: which button, and how long a press.
  • The QR link: a universal link on a project domain, or a custom scheme for the demo. S1 decides.
  • The French and Spanish setup copy needs a proofread by native speakers.
  • The lesson's button positions follow the simulator housing. Check them against the enclosure when it exists.
  • No system requirement covers first use yet. Suggest one with obc req suggest.

Out of scope

Activity

  1. added
    enhancementNew feature or request
    firmwareOn-device firmware / board bring-up
    epicTracking issue spanning multiple sub-issues
    area:appAffects the obc-app area
    iosiOS companion app
    on Sep 25, 2026
  2. changed the title [-]EPIC — First-use onboarding: two doors, one path[/-] [+]Onboarding: hardware and phone acceptance for the implemented flow[/+] on Oct 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area:appAffects the obc-app areaenhancementNew feature or requestepicTracking issue spanning multiple sub-issuesfirmwareOn-device firmware / board bring-upiosiOS companion app

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions