- New src/lib/api/moon.js: fetches daily moon_phase from Open-Meteo (independent of the NWS/Open-Meteo weather source, since NWS has no moon data), plus pure helpers: moonName (8 phases), illumination fraction, and nextMoonPhase, which unwraps the ~29.5-day cycle and interpolates the next quarter boundary (new/first quarter/full/last quarter), returning its name, date, and days until it. - New MoonPhaseCard.svelte: renders an SVG moon (two-circle terminator that correctly shows crescent/quarter/gibbous shapes), the current phase name, percent illuminated, and the next phase with date. Caches per-location via an effect; degrades gracefully when unavailable. - Wired into WeatherDetail between Sun and UV and Temperature Range. - 11 unit tests for moonName/illumination/interpolation/nextMoonPhase. - Verified in headless Chromium: card renders, moon shape correct, no errors.
Description
Vibe-coded weather app
Languages
Svelte
50.2%
JavaScript
46.3%
CSS
3.1%
HTML
0.4%