Page carousel navigation with long-press jumps #60
Labels
No labels
area:companion
area:docs
area:shared
area:tooling
area:watchapp
blocker
kind:chore
kind:feature
kind:spike
kind:test
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Blocks
Depends on
#37 Auto-switch between ride and nav views near a turn
robert/PedalPebble
#8 Watchapp skeleton: window stack, view switching, button handling
robert/PedalPebble
#58 Field value store and page descriptor model
robert/PedalPebble
Reference
robert/PedalPebble#60
Loading…
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
A single flat ring of pages, wrapping at both ends, with two shortcuts so nothing is more than two presses away.
Acceptance criteria
Files
watchapp/src/c/main.cwatchapp/src/c/carousel.cNotes
See docs/DESIGN.md section 5. Chosen over a Back-toggles-groups model because Back not going back is surprising on Pebble and risks accidental exits.
Closed by PR #85 (merged): carousel.c (renamed in place from #8's page_view.c, git history preserved) implements the real DESIGN.md section 5 button model — Up/Down step to the next visible page with a cold-boot all-hidden fallback, long Up jumps to page 1 (bypassing the visibility skip on purpose, an explicit request always wins), long Down is a documented no-op (no map page exists yet), and Select/long-Select/Back are wired to #11's real ride_state_/ride_link_ functions with a shared confirmation-prompt model for stop-vs-exit. Active page persisted via a second persist key. Verified live in emery+gabbro emulators: heap flat across every transition (107512\u2192107512), 0 bytes leaked at exit, persistence survives a reinstall.\n\nHonestly scoped: nav-page insertion (no route-loaded state exists) and the "disabled" half of page-skipping (no #61 settings surface yet) are both documented as not-yet-backed-by-real-data rather than faked. Page rendering is still #8's one-TextLayer placeholder — the template renderer (HERO1/HERO2/QUAD/GRID6) is #59's job.