Skip to content
RealWeather.org Methods over vibes Launch CurrentWeather.info
Menu
Change log

Documented changes. Nothing else.

Low-frequency updates documenting real changes in behavior, sources, or validation rules. If nothing changes, we publish nothing.

January 15, 2026

Radar labeling corrected to reflect discrete frame nature

Link ↗

Radar modal labels were updated to accurately represent RainViewer data as discrete observed snapshots rather than real-time streams.

What changed

  • Replaced "Live" button with "Latest" to clarify it jumps to the most recent observed frame, not a live stream.
  • Changed timestamp format from "Updated" to "Observed" to reflect that frames are static snapshots captured at specific times.
  • Updated "Now" age label to "Latest" for frames less than 2 minutes old, removing false real-time implication.
  • Refined legend disclaimer from vague "qualitative, not exact dBZ" to technically accurate "relative reflectivity (not calibrated dBZ)".

Copy-only changes. No data sources, animation behavior, or frame timing changed. Prevents user misinterpretation of discrete radar frames as continuous real-time feeds.

Radar modal lifecycle cleanup hardened

Link ↗

Fixed React lifecycle edge case where rapid open/close of the radar modal could trigger console warnings about state updates on unmounted components.

What changed

  • Added mounted guard to prevent async fetch continuations from calling setState after modal unmounts.
  • Removed unnecessary state setters from cleanup function (component is unmounting, state updates are no-ops).
  • Preserved all external cleanup: AbortController, Leaflet map removal, and ref clearing remain unchanged.

Internal cleanup only. No visual or behavioral changes. Eliminates console warnings without affecting radar functionality.

GPS loading state reliability improved for first-visit edge case

Link ↗

Fixed rare first-visit edge case where manual GPS refresh could leave the loading indicator active indefinitely if reverse geocoding failed.

What changed

  • Added .finally() handler to first-visit reverseGeocode call to guarantee loading state clears within bounded time (8-second timeout).
  • Preserved fast-path behavior: when weather data already exists, loading clears after reverse geocode completes.
  • Guard prevents clearing loading if main weather fetch has started (avoids race condition).

Affects only first-visit GPS flow when reverse geocoding fails (network error, timeout, or abort). Subsequent visits already had correct cleanup. Loading now always clears correctly.

January 11, 2026

Source badge tooltips expanded to explain provenance states

Link ↗

CurrentWeather.info now shows rule-level tooltip explanations for all three source badge states (NWS, Hybrid, Open-Meteo), making provenance explicit without adding new UI clutter.

What changed

  • NWS tooltip now includes a plain rule statement: temp + conditions come from the station when fresh and consistent.
  • Hybrid now has a tooltip clarifying badge scope: temp and conditions may come from different sources.
  • Open-Meteo now has a tooltip clarifying scope: modeled now means the station is not used for temp or conditions.

No data logic changed. The badge remains derived from the provenance of temperature + conditions (not a claim about every metric).

DayDetail “Now” highlighting fixed for cross-timezone browsing

Link ↗

Fixed the DayDetail modal “Now” column highlighting the wrong hour when viewing a location in a different timezone than the user’s device.

What changed

  • DayDetail “Now” now matches the main forecast timeline across timezones, including DST edge cases (23/24/25-hour days).
  • “Today” determination is based on the location’s date (not the user’s machine timezone).

GPS and manual location updates hardened (iOS reliability + faster feedback)

Link ↗

Manual GPS updates are now more reliable on iOS Safari and more responsive when refreshing an already-loaded location.

What changed

  • Improved iOS Safari tap reliability for manual GPS actions.
  • Reduced “Locating…” lag when weather data already exists (clears after reverse geocode completes).
  • Added user-facing handling for geolocation unavailability (POSITION_UNAVAILABLE).
  • Manual GPS actions request a fresh fix (maximumAge: 0).
  • Reverse geocoding now times out and cleans up correctly on abort.

Precipitation math corrected across unit systems + clearer rolling windows

Link ↗

Corrected unit-handling bugs in the precipitation modal that affected imperial displays and clarified the meaning of rolling 24-hour totals to prevent calendar-day confusion.

What changed

  • Imperial precipitation and snowfall values now display correctly without double conversion.
  • Wet-hour detection and intensity labels are now consistent across metric and imperial modes.
  • “Next 24 Hours” views now show an explicit rolling time window (start → end).
  • The Pressure modal uses the same rolling window labeling for semantic consistency.

This was a correctness-first fix: no new thresholds were introduced, and no data sources changed.

January 7, 2026

Visibility modal mobile scene rendering restored

Link ↗

Fixed a mobile-only rendering regression where the Visibility modal’s scenic background failed to display after alert banner interaction changes.

What changed

  • Restored the mountain scene as the hero background element on mobile.
  • Corrected layout and stacking so alert banners render in the intended position.
  • Desktop behavior was unaffected and remains unchanged.

This was a UI regression only. No visibility data, thresholds, or source logic changed.

December 30, 2025

Sunrise and sunset times corrected across timezones

Link ↗

Sunrise and sunset times were corrected for locations where times were previously displaying incorrectly due to timezone handling.

What changed

  • Fixed incorrect sunrise and sunset times for western U.S. locations such as Los Angeles and Las Vegas.
  • Astronomy calculations now consistently respect the location’s local timezone and daylight saving transitions.
  • Daily forecast and metric detail views now agree on sunrise and sunset timing.

Verified against multiple U.S. timezones.

Search interaction and keyboard behavior stabilized

Link ↗

Search behavior was hardened to fix broken keyboard actions, focus issues, and inconsistent dismissal across devices.

What changed

  • Enter now reliably selects the highlighted (or first) search result.
  • Arrow keys consistently navigate search results with visible highlighting.
  • Clicking outside the search dropdown now closes it correctly.
  • Search no longer gets stuck after selecting a result and can be reopened normally.
  • Mobile and desktop search behaviors were intentionally differentiated to match platform expectations.

No changes to search results, ranking, or location data sources.

December 23, 2025

Precipitation type and trace behavior refined

Link ↗

Precipitation modal updated to classify rain, snow, mixed, and freezing events more precisely using Open-Meteo weather codes.

What changed

  • Precipitation type now distinguishes Rain, Snow, Mix, and Freezing mix using Open-Meteo codes (including freezing drizzle and freezing rain).
  • Freezing precipitation is elevated from generic “rain” labels to a dedicated Freezing mix type in probability, chart styling, and summary text.
  • Trace precipitation edge cases corrected: chart axis now enforces a minimum headroom so tiny non-zero rates no longer produce 0.00 labels with visible spikes.
  • Peak rate labels now use <0.01 in / <0.1 mm style for trace events, aligning with total accumulation formatting.
  • Chart bands adapt to precipitation type (cyan for snow, purple for freezing/mixed events, existing radar palette for rain) while still classifying intensity in mm/hr so behavior is stable across imperial and metric modes.

December 22, 2025

Visibility logic hardening and physics capping

Link ↗

Visibility logic was overhauled to align raw model outputs with human perception and driving context. Raw atmospheric transparency data is no longer displayed directly.

What changed

  • Internal physics capped at 32km (20mi). This eliminates statistical noise (e.g., “100 mile averages”) and forces charts to use a readable scale.
  • UI now displays “20+ mi” for unlimited visibility, distinguishing between “sensor max” and “calculated infinity.”
  • Charts now gap-fill missing data points, preventing false “whiteout” dips caused by occasional API packet loss.

Wind modal unit safety and hybrid source refinement

Link ↗

Wind modal underwent a deep clean to fix unit conversion edge cases and improve chart scaling during active weather.

  • Fixed a unit injection bug where raw forecast data (km/h) was plotting against user-preference axes (mph).
  • Corrected Wind Chill formula for metric users (prevented Fahrenheit values from leaking into Celsius displays).
  • Chart Y-axis scaling is now dynamic: it accounts for current observed gusts that exceed forecast models, ensuring the “Now” dot stays on the graph during sudden storms.
  • Hybrid logic strictness increased: Unified Current Conditions > Raw NWS (checked for staleness) > Open-Meteo Model.

Atmospheric physics & metric refinements

Link ↗

Refined derived atmospheric calculations to better support metric users and edge cases.

  • Cloud Base (LCL) estimation now natively handles Metric units, displaying cloud heights in meters/km correctly instead of converting to feet.
  • “Feels Like” attribution text is now context-aware: it correctly attributes cooling to “wind factor” and warming to “humidity” based on the delta.
  • Fog logic updated to report “Surface” cloud base when dewpoint depression is near zero, replacing the previous “n/a” error state.

December 19, 2025

Modal layout & sizing improvements (desktop)

Link ↗

Focused on fixing desktop modal sizing while keeping mobile behavior stable. The failures were skinny widths, forced heights, unnecessary scrolling, and dead air at the bottom of dense views.

What changed

  • Modals moved away from fixed viewport heights. Layout now uses max-height limits and shrinks naturally to content, eliminating empty space and reducing pointless scroll.
  • Unified scroll behavior: headers stay fixed; only the content region scrolls when required. Removes awkward bottom padding and keeps modals feeling lighter.
  • Modal widths were increased for medium/large screens, fixing the “skinny column” desktop problem and improving chart/card readability.
  • Humidity was updated first and used as the reference layout; the same structure was applied to Wind, Pressure, and other metric modals after validation.
  • Pressure was confirmed to be taller by design on desktop; height was nudged slightly to match density while keeping scroll controlled.
  • Astronomy was still on the old fixed-height approach and was updated to match the new system (shrinks to content, aligns visually, no forced scroll).

Outcome

  • Modals expand when they have content and collapse when they don’t.
  • Scrollbars show up only when necessary.
  • Desktop views feel wider, calmer, and more readable.
  • Mobile behavior remains unchanged.
  • Radar was intentionally left untouched.

Principle locked in

Prefer max-height limits with flexible layout over fixed viewport heights. Let content determine size whenever possible.

Status

  • Safe to ship
  • UI-only changes
  • No data or logic changes
  • No mobile regressions

December 17, 2024

Radar and satellite layers combined

Link ↗

Radar and satellite cloud cover can now be viewed together in a single interactive layer.

Interface was simplified: one-click header access, draggable/collapsible legend with session memory, quieter defaults (70% opacity), and keyboard controls for pausing + scrubbing.

This improves spatial context without changing the underlying radar or satellite data.

Location handling normalized and clarified

Link ↗

Location resolution was moved to Cloudflare Workers and normalized at the edge.

Canonical deep links: /place/{id} for named locations and /coords/{lat},{lon} for direct coordinate access. Both resolve consistently and cache correctly.

Forecast logic and data selection are unchanged. This improves routing clarity, caching behavior, and link reliability.

December 12, 2024

Pressure signal refactor and “NOW” logic hardening

Link ↗

Pressure handling was refactored to reduce short-term noise and improve consistency across cards, charts, and modals.

Fresh NWS observations are preferred more aggressively, with quiet fallback to Open-Meteo when observations are missing/invalid. Pressure trends are derived from one consistent source so signals align everywhere.

This removes noise paths and prevents contradictory signals between 3h/12h/24h views. No new thresholds were introduced.

Pressure visualization and interpretation refined

Link ↗

Pressure trend visualization was tightened to improve interpretability under calm and active conditions.

Chart labeling was corrected, extremes stabilized, and bands clarified (low / unsettled / normal / high). Storm/front signals now key off steepest rise/drop instead of subjective thresholds.

Presentation/interpretation refinement only. Selection logic and source precedence are unchanged.

Wind behavior stabilized under light conditions

Link ↗

Wind handling was adjusted to stay calm when conditions are calm.

Removed random direction arrows, fake gusts, and jitter driven by tiny sensor fluctuations. Light-wind conditions now render quietly and proportionally.

This does not suppress real events or gusts. It reduces visual noise when the signal is weak.

Policy

We only log changes that affect behavior, sources, validation rules, routing/caching behavior, or UI interpretation. Cosmetic tweaks without meaning don’t get an entry.