Releases: JoshuaKimsey/variable-weather
Releases · JoshuaKimsey/variable-weather
Release list
Variable Weather v2.9.9
- Changed start_url, id, and scope from relative "./" to absolute URLs on the canonical host (https://variablewx.librewxr.net/) so PWA Builder stops flagging start_url as missing. The id is now a stable absolute URL so the installed app keeps its identity across future moves.
- Added "window-controls-overlay" as the first entry in display_override (PWA Builder expects it), with "standalone" kept as the fallback for browsers that don't support WCO.
- Note: the manifest is now optimized for the canonical domain; the GitHub Pages mirror may see cross-origin start_url/scope and fall back to defaults, which is acceptable since librewxr.net is the official host.
Full Changelog: v2.9.8...v2.9.9
Variable Weather v2.9.8
- Added periodic background sync (Android Chrome only) that re-fetches cached weather, alerts, and nowcast roughly every 12h when the app is closed, so offline loads see recent data instead of the last manual fetch
- Used a URL-replay design via IndexedDB: the service worker can't read localStorage (where location, provider, and API-key prefs live), so the existing network-first API fetch handler records each successful request URL to IDB (deduped, capped at 12) and the periodicsync handler replays that list. Auto-handles provider switches, API-key changes, and location changes with zero duplicated provider logic
- Silently no-ops on browsers without PeriodicSyncEvent (iOS Safari, desktop Firefox) — fine since the target is the Android TWA
Full Changelog: v2.9.7...v2.9.8
Variable Weather v2.9.7
- Split manifest icon purposes into separate any/maskable/monochrome entries; added a padded maskable 512/192 so Android no longer crops the logo, plus a monochrome 512 for Android 13+ themed icons
- Added app shortcuts (My Location, Search, Radar) to the manifest with dedicated 96x96 icons, and wired up ?action= launch params in main.js so the long-press menu actually opens the right UI
- Added Play Store screenshots (two 1080x1920 mobile, one 1920x1080 desktop) as branded placeholders to be swapped for real screenshots before store submission
- Added scope, display_override, orientation, dir, lang, categories, prefer_related_applications, and launch_handler to the manifest for native launch feel and a clean PWA Builder score
- Added env(safe-area-inset-*) to the floating settings FAB, install banner, update banner, and the full-screen settings/radar modal headers so controls clear notches and Android gesture nav; viewport now uses viewport-fit=cover
- Cached the new icons and screenshots in sw.js so addAll() stays atomic and they work offline
Full Changelog: v2.9.6...v2.9.7
Variable Weather v2.9.6
- Switched the LibreWXR radar color palette from Rainbow SELEX-IS to Viper HD across both the main radar modal and the main-page radar preview
Full Changelog: v2.9.5...v2.9.6
Variable Weather v2.9.5
- Service worker's API fetch handler used to resolve its timeout with the cached
offline.htmlpage, which fed HTML into JSON callers and produced "Unexpected token '<'" errors on slow first-loads (cold DNS, cold-start CDN edge, deep-link navigations from other sites) - Replaced the
Promise.race+offline.htmlfallback with anAbortController-driven 10s timeout that aborts the in-flight fetch, falls back to cache if available, and otherwise returns a JSON504soresponse.json()never sees HTML
Full Changelog: v2.9.4...v2.9.5
Variable Weather v2.9.4
- Manifest `start_url` and `id` now point to `./` instead of `./index.html`, fixing PWA launches from the home screen on Cloudflare Pages where `/index.html` was 308-redirected to `/` and breaking standalone mode
- No effect on GitHub Pages deployments
Note: existing broken home-screen shortcuts won't auto-heal — delete the old shortcut and reinstall the PWA after this update applies.
Full Changelog: v2.9.3...v2.9.4
Variable Weather v2.9.3
- Service worker now registers immediately during HTML parse instead of waiting for the window `load` event, so static PWA analyzers (PWABuilder, Lighthouse) correctly detect it
- No behavior change in real browsers; runtime update flow is unchanged
Full Changelog: v2.9.2...v2.9.3
Variable Weather v2.9.2
- Service worker now passes through third-party requests (analytics beacons, external scripts, CDNs) instead of intercepting them, eliminating spurious "Fetch failed" errors in the console
- Same-origin app shell and the existing weather-API allowlist are unaffected
Full Changelog: v2.9.1...v2.9.2
Variable Weather v2.9.1
- Location URL parameter is no longer stored — shared links now contain just `lat` and `lon`, and legacy `?location=` parameters are stripped on visit
- Eliminated the brief timezone-string flash on cold loads; the label now shows "Loading location..." until reverse-geocoding resolves
- Location label formatting now skips ZIP codes and county/parish/borough segments (e.g. "Atlanta, Georgia" instead of "Atlanta, Fulton County")
Full Changelog: v2.9.0...v2.9.1
Variable Weather v2.9.0
- Tap any 7-day forecast card for a per-day detail modal with feels-like temps, wind, UV, humidity, dew point, cloud cover, sunrise/sunset, and a per-day hourly temperature curve
- Hourly forecast on the main page is now an inline temperature curve with precipitation bars (height = chance %, color = intensity) and tap/hover tooltips, covering an inclusive 12-hour window
- Daily forecast switches to a vertical list on mobile so all 7 days fit without horizontal scrolling
- Radar animation waits for each frame's tiles to finish loading before advancing
- Hour labels now follow the forecast location's timezone, not the user's browser
- Pirate Weather hourly window extended to a full week via `extend=hourly`; Open-Meteo timestamps converted to real UTC
Full Changelog: v2.8.1...v2.9.0