-
v0.63.0 Stable
released this
2026-09-24 10:16:54 -05:00 | 27 commits to main since this releaseEvery weather tool takes
unitsandtimezone, andget_model_rungains UV. An
answer can now be used as it arrives, with no °F↔°C or UTC→local conversion left to
the caller. Breaking for existing callers: the default is now metric, and every
field that carried a unit in its name was renamed. Tool descriptions changed, so the
connector needs a reconnect after the deploy.Added
unitson all eleven tools:metric(C, km/h, mm, m, hPa) orimperial(F, mph,
in, ft, mb). When a call omits it,WEATHER_DEFAULT_UNITSdecides, and that defaults
to metric. A misspelled value refuses to boot rather than quietly serving the default.timezoneon all eleven tools:local(the coordinate's own zone, the default),
utc, or an IANA name. Every timestamp in the answer is rendered in that zone with an
explicit offset, including those inside sentences. An unknown name is refused rather
than read as UTC.appliedon every response: the units and zone used, and where the zone came from
(nws_points,open_meteo_auto,caller, orfallbackwhen no lookup answered and
the answer is in UTC).- A
uvblock onget_model_run, with the hourly UV index and clear-sky index, a
daily maximum per local day, and the model named. It comes fromgfs_globalon its
own request. Measured across eleven models, GFS was the only one supplying UV, and
best_matchreturned GFS's values without naming a model. A failed UV request costs
the UV block only. - A
unitsblock wherever a response carries measured quantities without one:
get_hourly_forecast,get_taf,list_stations, normals, and distances. - Local time-zone lookup outside the US. Open-Meteo's
timezone=autoanswers with
the zone name alone, and the answer is cached for 30 days like/points.
Changed
- Field renames, so no name claims a unit:
temperature_f→temperature,
dewpoint_f→dewpoint,wind_speed_mph→wind_speed,wind_speed_high_mph→
wind_speed_high,wind_gust_mph→wind_gust,distance_miles→distance,
elevation_feet→elevation,model_cell_elevation_feet→model_cell_elevation
(withmodel_cell_elevation_unit),searched_miles_north_south→
searched_north_south(withsearched_north_south_unit), the normals'
normal_high_f/normal_low_f/normal_mean_f→normal_high/normal_low/
normal_mean,median_precipitation_in→median_precipitation,
normal_total_precipitation_in→normal_total_precipitation, a sky layer'sbase_ft
→base, and thesunblock'sdate_utc→date. - Five tools reported
"timezone": "UTC"for a US coordinate.get_model_run,
get_taf,get_observations,get_observation_historyandget_outlooknow answer in
the coordinate's zone like the rest. - Offset-less
startandendare read in the answer's zone, onget_observations
andget_observation_history, andget_outlookcounts days from the coordinate's
today. All three used the server'sTZbefore. - Sunrise and sunset are filed under local days. Open-Meteo requests name the zone
and ask for epoch seconds, because given a zone it applies one fixed offset to the whole
request. Measured across 2025-11-02, its local time strings run an hour off after a
DST change. A daily row's date is taken from the response's own offset, so the day
after a change is not labelled with the previous date. - Metric Open-Meteo requests omit the unit parameters, which is its default, and the
answer is checked against a metric echo table recorded on 2026-09-24. Metric
/forecast/hourlyis asked forunits=si, sowind_speed_textreads in km/h.
Removed
from_time_localandto_time_localon wind-shift hits, andissued_localon the
forecast discussion. Every time is now in the answer's zone, so each was a second
copy of the field beside it.
Notes
- Two premises of the plan were wrong, and both were caught by measuring before
building. The raw grid was not losing precision: its Celsius values are exact
conversions of whole Fahrenheit, so they convert back to whole numbers. And
Open-Meteo's heights and visibility were already in feet underprecipitation_unit=inch,
so converting them for imperial would have converted them twice. - The DST change cannot be checked live until late October, because the forecast
endpoint reaches only 16 days ahead. The suite pins it against recorded fixtures, and
docs/operations.mdcarries the live check with its date. WEATHER_DEFAULT_UNITS=imperialin the stack file restores the previous numbers
without a rebuild. The field renames stay either way.- 33 new tests, 1895 in all. Nine new guards were proved by breaking them: the
sourceskip, the daily-date offset, refusing an unknown zone, omitting metric unit
parameters,units=si, UV isolation, the boot refusal, the one rendering pass, and
reading the window in the answer's zone.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads