Reaching further back
Two parts of the app were showing a slice of the past and letting it look like all of it. Neither was wrong about the readings it had; both were quiet about the ones it did not. The two fixes went out a build apart, and together they are 1.1.
The archive is the whole archive
Synced data used to fetch the last hundred readings of each metric and lay them out as one flat list — about a hundred days of daily weigh-ins, four rows per morning, and nothing on screen saying where the list stopped. A bad reading from five months ago could not be found, let alone removed.
The screen is now bounded by time rather than by count. It moves a month at a time and steps to the nearest month that actually holds a reading, so empty stretches are skipped instead of paged through. A day is one row, showing that day’s most recent weigh-in — an average would invent a number nobody weighed, and finding the number nobody weighed is the reason to open the screen at all. Deleting a day removes the whole weigh-in, because a scale that fired for the wrong person got weight, body fat and muscle wrong in the same instant. Open the day to delete one reading on its own.
The import reads the table that keeps the past
“Import history” with Year selected was bringing back nine readings. Not a failure — nine was everything the app had asked for. Home Assistant keeps the past in two places: raw states, which the recorder purges after ten days by default, and long-term statistics, hourly aggregates it keeps for as long as the database lives. The import had only ever read the first.
It now reads both, and stitches rather than mixes them: states cover the stretch they still hold, statistics fill in everything older, and a weigh-in arrives once. A scale sensor holds its last reading until the next one, so the recorder compiles the same number every hour of every day — those runs collapse to the reading that started them, which is what turns thousands of hourly buckets back into the mornings they describe. A statistic knows the hour but never the minute, so imported readings are matched against Health by the hour: a reading you deleted stays deleted when it returns as an aggregate.
The report at the end now says what it reached rather than what it was asked for — the period, the sources, the earliest date actually found, and the fact that a statistic is placed on the hour. A sensor Home Assistant keeps no statistics for is named as such, instead of quietly producing a short window.
Known limits
On a real instance this did not yet reach as far as it should. Home Assistant answers a year of statistics in a single message of several megabytes, and iOS drops a WebSocket message larger than a mebibyte — so the reply never arrived and the import fell back on the ten days of states without saying so. The ceiling goes up in 1.2, and that is the build to import a year with.
1.1 is a TestFlight build; the App Store listing is not open yet.
Bugs and requests: [email protected].