Commit History
-
fix: graceful fallback when indicator has no grid overlay
KSvend +1: Claude Opus 4.6 (1M context)The overlay was disappearing completely when clicking between indicators if any of them hit the raster→grid fallback path — the frontend fell through to _renderStatusOverlay() which (after the AOI rectangle was removed) did nothing visible, leaving a blank map with no feedback. Backend: - raster_to_grid_dict() now handles all-NaN rasters by emitting an empty grid so the legend still renders instead of returning None - _save_spatial_json() logs the raster path + band + existence when serializing, and writes a richer raster-unavailable payload (with label, colormap, vmin, vmax) so the frontend can still show a meaningful legend Frontend: - renderSpatialOverlay() no longer falls through to the old status overlay — unknown/fallback payloads render the legend in its new "overlay not available" mode with the product name + color hint - new _activeProductId tracking drops stale spatial responses when the user clicks through indicators rapidly - addSource/addLayer calls are wra…ef89b38 -
feat: remove AOI box, add map legend, color hints, before/after bars
KSvend +1: Claude Opus 4.6 (1M context)Polish pass on the results dashboard based on user feedback: - the AOI rectangle is gone from the results map — it was clashing with the indicator overlay for no informational gain; the overlay itself defines the area - new floating map legend (bottom-right) shows the active indicator label, the exact color gradient, the value range, and a one-line plain-language hint like "Green = healthier than baseline, pink = stressed, cleared, or burnt" - each indicator card now carries its own color hint under the chart, so non-tech readers don't need to consult the map legend to interpret what they're looking at - two-point chart_data (the built-up baseline → current payload) is now rendered as a before/after bar pair with a percent-change badge, instead of a meaningless two-dot line - MapLibre ScaleControl added in the bottom-left so distances are legible at a glance - grid overlay opacity softened from 0.65 → 0.55 so basemap labels remain readable - product color hints c…1ea9510
-
feat: rich results dashboard with inline sparklines and overview
KSvend +1: Claude Opus 4.6 (1M context)Previously the results page showed only a map and tiny cards with a single headline, so users had to download the PDF to see any actual findings. Every ProductResult already contained chart_data, z-scores, confidence factors, summary text, and limitations — they were just being thrown away by the frontend. Backend: - new GET /api/jobs/{id}/overview serves overview_score.json + compound_signals.json (both already written at job-complete time) Frontend: - new getJobOverview() helper in api.js - results.js rewritten to render: - Overview header: composite score ring, plain-language headline, clickable per-indicator chip strip, compound signals banner - Rich indicator cards with: - name + question, status badge, trend glyph, confidence dot - inline SVG sparkline (baseline envelope, mean line, current line, anomaly markers) — no external chart library - z-score / anomaly months / hotspot % metrics row - full summary paragraph (no truncation) - 4-factor …57ba197
-
feat: add advisor card HTML and CSS styles
KSvend +2: Claude, HappyGenerated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering>526cf11 -
feat: replace draw/upload CSS with size toggle styles
KSvendc8318e6
-
fix: show waiting status for indicators not yet started in progress view
KSvend +2: Claude, HappyThe status list only showed indicators already in the progress dict, hiding ones that hadn't started yet. Now shows all requested indicator IDs with "Waiting" badge for those not yet processing or complete. Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering>5e3b25e -
feat: improve AOI selection UX — remove polygon, add area feedback
KSvend +2: Claude, Happy- Remove polygon draw tool (always converted to bbox anyway) - Show computed area in km² as user draws - Block "Continue" if area exceeds 10,000 km² limit with clear message - Add area display styling using MERLx design tokens Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering>bc4a082 -
style: add CSS for basemap toggle button
KSvend +2: Claude, HappyGenerated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering>bc75f75
-
feat: add mobile responsive layout (768px breakpoint)
KSvend +2: Claude, HappyGenerated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering>761d876 -
feat: add history page HTML and CSS
KSvend +1: Claude Opus 4.6 (1M context)Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>b5c28d8 -
feat: add login page HTML and CSS
KSvend +1: Claude Opus 4.6 (1M context)Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>f49c9d9
-
feat: fix nightlights with real VIIRS data + placeholder data warnings
KSvend +2: Claude, HappyNightlights indicator now reads real radiance from Planetary Computer HREA light-composite COGs (no auth), with NASA Black Marble VNP46A4 as a second source (free Earthdata creds), falling back to synthetic. All 9 indicators now report whether they used real satellite data or placeholder values via a new data_source field on IndicatorResult. The frontend shows an amber "Placeholder data" badge on result cards, and the PDF report includes a per-indicator warning when placeholder data was used. Generated with [Claude Code](https://claude.ai/code) via [Happy](https://happy.engineering) Co-Authored-By: Claude <noreply@anthropic.com> Co-Authored-By: Happy <yesreply@happy.engineering>619edca -
Initial commit: Aperture platform (extracted from SR4S)
KSvendae74af5