Skip to content

SnowSignal v1.0.0-beta.2 — polish release#3

Merged
DawsonCodes merged 6 commits into
mainfrom
feature/v1.0.0-beta.2-polish
Jun 6, 2026
Merged

SnowSignal v1.0.0-beta.2 — polish release#3
DawsonCodes merged 6 commits into
mainfrom
feature/v1.0.0-beta.2-polish

Conversation

@DawsonCodes

@DawsonCodes DawsonCodes commented Jun 6, 2026

Copy link
Copy Markdown
Owner

A focused polish beta on the existing prediction engine. No engine redesign, backend, paid API, secret keys, framework, or new dependencies. GitHub Pages compatibility under /snowsignal/ is preserved (all asset paths relative).

What changed

  1. Larger desktop layout — wider main column (--maxw: 880px), roomier spacing/typography, two-column factor breakdown ≥760px, bigger gauges. Mobile one-column layout, touch targets, and no-horizontal-overflow preserved.
  2. Seasonal atmosphere — new Atmosphere setting (Auto / Winter / Spring / Summer / Fall / Off). Auto reads the location's hemisphere + local date; Midnight snow keeps a snow identity year-round. Lightweight CSS particles (js/atmosphere.js), pointer-events: none, gated by the motion preference and prefers-reduced-motion (renders nothing when reduced). No image assets.
  3. UI motion — gauge count-up + ring sweep, filling factor bars, staggered hourly cards, modal entrance/exit, dropdown/toast entrances, theme cross-fade, subtle logo drift. All respect the Motion setting.
  4. School-calendar awareness — dismissible, clearly-labeled heuristic notices (summer break hemisphere-aware, winter break, weekend) + a forecast-window label. Isolated/tested in js/calendarContext.js; never claims to know a real district calendar.
  5. Cleaner URLs — address bar no longer rewritten during use; prefs persist via localStorage. New Copy share link button builds a default-omitting scenario URL; shared links still restore the scenario.
  6. Friendly geolocation labels — reverse-geocode (keyless BigDataCloud) to e.g. Owosso, Michigan, US, exact coords retained, graceful fallback to coordinates.
  7. Reworked Settings — grouped Appearance / Weather / Data / About; confirm-guarded data resets with toasts; version + changelog + roadmap links; focus trap (now covers links), Esc/X/click-outside retained.
  8. Persistence auditatmosphere added; theme, atmosphere, motion, unit, school type, area, sensitivity, used, allowed, saved & recent all persist. Tests cover persistence + resets.
  9. Input validation — non-negative, capped (0–60) snow-day inputs; used > allowed is allowed with an explanatory note.
  10. Version/docs1.0.0-beta.2, in-app SnowSignal v1.0.0-beta.2, new CHANGELOG.md, updated README.md / ROADMAP.md. Documented as a polish beta, not stable.

Verification

  • Tests: node --test71 passing / 0 failing (added calendar heuristics, atmosphere motion-gating, clean-URL share builder, reverse-geocode parser, persistence/resets, relative-path safety).
  • Serving: verified under a simulated /snowsignal/ subpath — 200s, ES-module MIME text/javascript, CSS text/css, relative paths resolve.
  • No console/debugger leftovers; removed dead reverse-name helper.

Manual browser checks suggested

  • Desktop ≥760px feels roomier; mobile stays one-column; no horizontal scrollbar.
  • Atmosphere Auto matches season; Midnight shows snow; Off clears it; reduced-motion shows none.
  • Gauges/bars/cards animate once per result; reduced-motion makes them instant.
  • Settings: Esc / X / click-outside close; Tab cycles within (incl. links); resets prompt + toast.
  • "My location" shows a friendly label; URL stays clean until "Copy share link"; the link restores the scenario.

Same prediction engine; focused polish, no backend/build-step/framework.

- Layout: wider desktop column (~880px), roomier spacing/typography, two-column
  factor breakdown on wide screens; mobile one-column + touch targets preserved.
- Seasonal atmosphere: lightweight CSS particle layer (snow/petals/motes/leaves)
  with an Auto mode (hemisphere + date), Midnight keeps snow year-round; fully
  gated by the motion preference and prefers-reduced-motion; pointer-events:none.
- UI motion: animated gauges (count-up + sweep), filling factor bars, staggered
  hourly cards, modal entrance/exit, dropdown/toast entrances, theme cross-fade,
  subtle logo drift — all respecting the motion setting.
- School-calendar reminders: dismissible, clearly-labeled heuristics (summer break
  hemisphere-aware, winter break, weekend) in a pure tested module; forecast-window
  label on results.
- Clean URLs: address bar no longer rewritten during use; preferences persist via
  localStorage; explicit "Copy share link" builds a default-omitting scenario URL.
- Geolocation: reverse-geocoded friendly labels (keyless), coords retained for the
  forecast, graceful fallback.
- Settings reworked into Appearance / Weather / Data / About with confirm-guarded
  resets and version/changelog/roadmap links; focus trap covers links.
- Validation: non-negative, capped snow-day inputs; used>allowed allowed with a note.
- New modules js/calendarContext.js and js/atmosphere.js; new tests for calendar
  heuristics, atmosphere gating, share-URL building, reverse-geocode parsing,
  persistence/resets, and GitHub Pages relative paths.
- Version 1.0.0-beta.2; CHANGELOG.md added; README/ROADMAP updated.
@DawsonCodes DawsonCodes marked this pull request as ready for review June 6, 2026 03:09
@DawsonCodes DawsonCodes merged commit e1c7da4 into main Jun 6, 2026
2 checks passed
chatgpt-codex-connector[bot]

This comment was marked as spam.

@DawsonCodes DawsonCodes deleted the feature/v1.0.0-beta.2-polish branch June 6, 2026 03:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant