Skip to content

Join iOS history and live in one timeline - #93

Draft
frahlg wants to merge 3 commits into
mainfrom
codex/ios-continuous-history-20261018
Draft

frahlg wants to merge 3 commits into
mainfrom
codex/ios-continuous-history-20261018

Conversation

@frahlg

@frahlg frahlg commented Oct 18, 2026 •

Copy link
Copy Markdown
Member

A node’s Live view started with only the observations received by this phone, while its stored history lived behind separate period buttons. The node now opens one timeline from the cached 48-hour history, adds fresh source readings, and shows the box’s plan or forecast after now. Drag pans, pinch zooms around the fingers, and a held point names its source and time interval. A panned window stays put until Back to now.

Closed history means keep the interval returned by Core, and car ledger means remain hourly. The visible and accessible captions name that actual interval. A single live point hides no history; source silences and missing buckets stay open. Unfinished buckets wait for closure rather than showing energy-so-far divided by a full interval as instantaneous power. The energy footer uses the shown past only, marks partial interval estimates and missing time, and excludes live and future energy.

Validation:

  • Full Swift package checks: 283 FTWShared tests and 548 FTWKit tests pass, including 17 new timeline regressions for overlap, source gaps, anchored gestures, DST, late data, visible energy, hourly means, unfinished buckets, and short forecast windows.
  • Native iOS simulator build passes. Five native UI checks pass: pan/pinch/hold, retained viewport on live updates, Back to now, enlarge/close, distinct missing/loading/unavailable history, all five nodes at standard and largest standard text, and tap-versus-pan at 1/24/48-hour scales. Captures and a real gesture recording were reviewed locally.
  • Android shared checks pass with JDK 21: 44 tests, 0 failures, 0 errors, 1 skipped. The installed Android Studio JDK 25 failed in the local Gradle toolchain before tests; no app defect was inferred.

This is a separate iOS client change. It does not fix Core’s missing historical load/PV inputs, publish a beta, or establish Hannes’s installed app build. Human review of the rendered UI, physical-device Animation Hitches measurement, and a device VoiceOver pass remain before merge. The largest accessibility text render exposed a truncated energy readout; it now wraps in the existing scroll view and has been rendered again. Two earlier CI runs hit SwiftUI’s expression type-check limit. Accessibility now sits in its own typed modifier; the local native build and final gesture/state UI tests pass. Apple CI run 39148174351 now passes package tests, the native app/widget/Watch build and demo screenshots on exact head ba9c70a. No release, TestFlight upload, deployment, or merge is part of this PR.

Signed-off-by: Fredrik Ahlgren <fredrik@sourceful-labs.com>
Signed-off-by: Fredrik Ahlgren <fredrik@sourceful-labs.com>
Signed-off-by: Fredrik Ahlgren <fredrik@sourceful-labs.com>

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.

1 participant