thermograph/static
Emi Griffith 475e0ee7a2 Worldwide coverage: grade any point on Earth (#32)
Remove the US+Canada bounding box so every endpoint accepts any lat/lon.
The grading pipeline was already global-ready (ERA5 archive, timezone=auto,
day-of-year climatology), so opening it up is mostly deleting the guard —
plus the edge cases that only exist once the whole globe is in play:

- grid.py: snap() wraps longitude into [-180, 180) and clamps latitude, and
  cell centers are normalized so the polar row and the cells straddling the
  antimeridian always report valid coordinates to the weather/geocoding APIs.
  snap() and from_id() now share one _cell() builder, making id round-trips
  exact by construction (verified with a 300k-point global sweep).
- nav.js: neighbor-cell prefetch skips rows past the poles and wraps
  longitudes across the dateline instead of sending out-of-range queries.
- Nominatim reverse geocoding requests accept-language=en so place labels
  render in one script worldwide (matching the forward geocoder).
- mappicker: search suggestions are no longer filtered to US/CA, the
  placeholder and default map view are worldwide.
- calendar: season filter labels flip for southern-hemisphere locations
  (Dec-Feb shows as Summer); the underlying month groups are unchanged, so
  saved filter selections keep meaning the same months.

Verified end-to-end on a scratch server: Tokyo and Sydney grade with real
labels, a Fiji cell on the antimeridian's east edge builds and serves warm
hits from the derived store, and prefetch=1 on a cold cell still answers
204 without spending weather-API quota.
2026-07-11 15:02:28 +00:00
..
app.js Worldwide coverage: grade any point on Earth (#32) 2026-07-11 15:02:28 +00:00
calendar.html Metric cards: status to top-right, normal under the value; bold head context (#20) 2026-07-11 07:20:13 +00:00
calendar.js Worldwide coverage: grade any point on Earth (#32) 2026-07-11 15:02:28 +00:00
compare.html Compare: put full state in the URL and gate reloads behind Refresh (#12) 2026-07-11 03:17:17 +00:00
compare.js Compare: resolve a location's name immediately on add 2026-07-11 07:50:48 -07:00
day.html Lead location labels with neighbourhood; drop ±7-day window jargon (#18) 2026-07-11 00:02:19 -07:00
day.js Picker map: smaller labels, darker roads; location label coords→place (#27) 2026-07-11 08:35:43 +00:00
index.html Stack the location head context top-down; drop sq-mi-cell wording (#19) 2026-07-11 07:10:46 +00:00
legend.html Add comfort-temperature compare view; simplify Feels calendar filter (#9) 2026-07-10 19:58:56 -07:00
mappicker.js Worldwide coverage: grade any point on Earth (#32) 2026-07-11 15:02:28 +00:00
nav.js Worldwide coverage: grade any point on Earth (#32) 2026-07-11 15:02:28 +00:00
style.css Weekly view: center the daily-graded window on the target day (#28) 2026-07-11 14:58:42 +00:00