StationCast 10.6.3 (build 208)
What's new since 6.7
Now on Android
- Native Android app. StationCast is now available on Android in addition to iOS, written from scratch in Kotlin / Jetpack Compose. It talks to the same backend as the iOS app, so saved stations, units, and labels travel cleanly between phones.
- Same product feel. Place-first layout, weather-driven gradients, glass-backed cards, the four-up metric grid (humidity, wind, pressure, rainfall), the 24-hour temperature history chart, and the solar status cards are all there.
- Station selection. Search and pick stations by location or by station ID; the list seeds itself from your device location when you grant it.
- Settings, units, and display preferences. Imperial / metric / custom presets, °F / °C decimal precision, duration format — the same toggles iOS has been carrying.
- Comfortable on a phone. Card heights and chart sizes were tuned so the whole detail view fits on a typical Pixel screen without scrolling.
- Edge-to-edge layout. Respects display cutouts and system bars instead of fighting them.
Ask Siri
- Siri shortcut for the temperature. “Hey Siri, what’s the temperature?” pulls the latest reading from your primary saved station so you can ask without opening the app.
Inline trend lines on the metric chips
- Sparklines in the metric grid. The Humidity, Wind, Pressure, and Rainfall chips on the iOS station-detail screen now carry a quiet inline sparkline so you can see how the value has been moving over the day. Rainfall uses bars; the others use lines. Sensors that have no recent data, or rainfall cards that have been dry all day, omit the sparkline rather than rendering an empty chart.
- Toggle. A new “Show spark lines for daily metrics” switch in Settings → Display Options lets you turn the inline trend lines off entirely if you prefer text-only chips. The hero temperature chart is unaffected.
A higher-resolution temperature chart
- 15-minute history. The 24-hour temperature chart now plots backend-provided 15-minute buckets (96 points across the day) instead of hourly samples (24 points), so the curve actually traces the day’s small moves. The current temperature still anchors the line at “now.”
Distance, in plain English
- Quarter-mile glyphs. Imperial distances now read on a friendlier ladder: feet rounded to 100 ft below 1000 ft, then
¼ mi → ½ mi → ¾ mi → 1 mi → 2 mi → … so a station that’s 1,200 ft away reads “¼ mi” instead of “1 mi” or “1200 ft.”
- Metric stays smooth across 1 km. Below 500 m you still get 100-m-rounded meters; from 500 m up to 1 km you now see decimal kilometers (“0.7 km”) instead of jumping straight from “700 m” to “1 km.”
- Selector list and detail header agree. Both surfaces use the same banding now, so the same station can’t read two different distances.
Detail-screen polish (iOS)
- Cards reordered to match design. The station-detail card stack now matches the production-direction layout.
- Hero card centered. The hero temperature column is centered horizontally so it reads as the focal element.
- Compact cards, single-screen view. Card heights and the sun / temperature charts were trimmed so the whole detail screen fits on a typical iPhone without scrolling.
- Temperature display includes degree + unit. Anywhere temperatures are shown they now carry the degree symbol and the unit (°F or °C) consistently.
- Optional decimal temperatures. Settings → Display Options now has separate toggles for showing decimals on °F and °C, so people who care about a 0.4° change can see it and people who don’t won’t.
- Uniform metric chips. The Humidity / Wind / Pressure / Rainfall chips are now guaranteed to be the same height regardless of how long the detail string is — long Rainfall labels like “Last rain 3h 14m ago” or “Light rain · 0.05 in/hr” shrink slightly instead of wrapping to a second line and pushing the row taller.
More saved stations
- Save up to 20. The saved-station limit has been raised from 10 to 20.
Reliability and feel
- Stale refresh has a visible loading state. When you pull to refresh on an observation that’s gone stale, you now see a clear “refreshing” state instead of a frozen card.
- Search-results scroll fix. The station selector’s search results now scroll reliably; small lists no longer get stuck.
Under the hood
- Backend Prometheus metrics. The backend now exposes a
/metrics endpoint for observability — request rates, latencies, and provider-side error counts are tracked. Invisible during normal use; useful for keeping the service healthy.
- Persistent rotated logs. Backend logs now write to disk with rotation so that on-call investigations have history past the most recent process restart.
- Resilient device store. The backend’s App Attest device store no longer gets wedged on SQLite permission failures; it logs and continues serving.
- Wider weather-history parsing. The 1-day history parser now ingests every field the upstream data provider returns — groundwork for the inline sparklines and the 15-minute temperature chart.
- Android CI gate. Android tests now have to pass before merge, alongside the existing iOS gate.
Thanks for testing. Please file feedback via TestFlight or on GitHub.