8000 feat(ui): add safe Today navigation shell by shroominic · Pull Request #69 · shroominic/OpenGlucose · GitHub
[go: up one dir, main page]

Skip to content

feat(ui): add safe Today navigation shell - #69

Draft
shroominic wants to merge 3 commits into
mainfrom
feature/issue-38-today-navigation
Draft

shroominic wants to merge 3 commits into
mainfrom
feature/issue-38-today-navigation

Conversation

@shroominic
@shroominic shroominic commented Aug 24, 2026 •
Copy link
Copy Markdown
Owner

Summary

  • Add state-restored Today, Timeline, and Trends navigation with a compact mobile bar and wide-screen rail.
  • Preserve the existing dashboard as Today and show current glucose rows or trend metrics only when the active sensor is usable.
  • Make no-sensor, retained-history, inactive, warmup, unavailable, and stale states explicit; none can appear as live glucose context.
  • Re-evaluate Timeline and Trends at the next timestamp-freshness or sensor-life deadline even when device refresh is stalled or no session snapshot arrives.
  • Expose stale and inactive state cards as labelled live regions for platform screen readers.

Scope

Partial implementation of #91. This PR does not close #91.

Out of scope: the unified multi-source body timeline, journal entries, source import, meal analytics, AI, Health Connect, quick add, deep-link URL routing, final chart overlays, and final dark-mode migration.

Validation

  • cd openhealth && flutter analyze — passed.
  • cd openhealth && flutter test test/today_navigation_test.dart — passed, including controlled-clock timestamp and 15-day lifecycle boundaries.
  • Normal hook-verified git push — full make check passed, including tooling, all tests, Android/web/iOS/macOS builds, signing guard, and native iOS/macOS tests.

Visual and accessibility evidence

Synthetic, redacted fixtures contain no sensor identifier, connection metadata, or glucose value.

375 px compact Trends state

900 px rail Timeline state

  • tester.ensureSemantics() verifies named destinations plus labelled stale/inactive live regions in today_navigation_test.dart.
  • Flutter forwards this semantics tree to VoiceOver and TalkBack. No physical screen-reader run was performed for this synthetic capture; the controls register has no device accessibility lane. This is not a waiver. The accountable owner must record device VoiceOver/TalkBack verification before a production-readiness claim.

Review risks

  • R2: health-state presentation and accessibility. The state guard intentionally hides all support-tab values and derived metrics whenever the current sensor is not usable.
  • Manual device screen-reader evidence remains an owner QA item; no invalid or implied waiver is claimed.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Feature] Compact Today navigation and metabolic design system

1 participant

0