Configure watch pages from the phone #61

Open
opened 2026-08-31 17:55:58 +02:00 by robert · 0 comments
robert commented 2026-08-31 17:55:58 +02:00 (Migrated from git.butzei.de)

Goal

The payoff of the descriptor model: choose which pages exist, in what order, with which fields, from the phone where there is a real screen and keyboard.

Acceptance criteria

  • Page list UI: add, remove, reorder and enable pages
  • Template picker per page, with a live preview at true 200x228 proportions
  • Field picker per slot, grouped as in docs/DESIGN.md
  • Descriptors sent to the watch over a CONFIG_PAGES message and persisted there
  • Configuration survives a watchapp restart with the phone absent
  • Reset to defaults available
  • Invalid configurations rejected: unknown field ids, wrong slot count for the template, or zero enabled pages
  • Changing configuration mid-ride does not disturb the ride or the recording

Files

  • companion/.../settings/PageConfigScreen.kt
  • shared/message_keys.json

Notes

Requires no change to the watch renderer if the descriptor model in Phase 1 was built correctly. See docs/DESIGN.md section 1.

Update — 2026-09-02: the preview cannot hard-code emery

  • The live preview sizes itself from SCREEN_W / SCREEN_H / SCREEN_SHAPE (D46), not from
    "true 200x228 proportions". As written it cannot preview gabbro at all, which contradicts
    NFR-C8 and D24 — and SCREEN_* exists precisely for this
  • Preview reflects the round variants, including GRID6 falling back to QUAD on gabbro

Open question, not a criterion: this issue sits in Phase 5, while D23 calls the descriptor model
"the load-bearing choice" specifically because it makes phone-side configuration cheap — and Phase 1
pays that model's cost from the first line of the renderer. Whether the payoff should arrive four
phases later deserves a decision rather than being an accident of ordering.

## Goal The payoff of the descriptor model: choose which pages exist, in what order, with which fields, from the phone where there is a real screen and keyboard. ## Acceptance criteria - [ ] Page list UI: add, remove, reorder and enable pages - [ ] Template picker per page, with a live preview at true 200x228 proportions - [ ] Field picker per slot, grouped as in docs/DESIGN.md - [ ] Descriptors sent to the watch over a `CONFIG_PAGES` message and persisted there - [ ] Configuration survives a watchapp restart with the phone absent - [ ] Reset to defaults available - [ ] Invalid configurations rejected: unknown field ids, wrong slot count for the template, or zero enabled pages - [ ] Changing configuration mid-ride does not disturb the ride or the recording ## Files - `companion/.../settings/PageConfigScreen.kt` - `shared/message_keys.json` ## Notes Requires no change to the watch renderer if the descriptor model in Phase 1 was built correctly. See docs/DESIGN.md section 1. ## Update — 2026-09-02: the preview cannot hard-code `emery` - [ ] The live preview sizes itself from `SCREEN_W` / `SCREEN_H` / `SCREEN_SHAPE` (D46), **not** from "true 200x228 proportions". As written it cannot preview `gabbro` at all, which contradicts NFR-C8 and D24 — and `SCREEN_*` exists precisely for this - [ ] Preview reflects the round variants, including `GRID6` falling back to `QUAD` on `gabbro` **Open question, not a criterion:** this issue sits in Phase 5, while D23 calls the descriptor model "the load-bearing choice" specifically because it makes phone-side configuration cheap — and Phase 1 pays that model's cost from the first line of the renderer. Whether the payoff should arrive four phases later deserves a decision rather than being an accident of ordering.
Sign in to join this conversation.
No description provided.