Commit Graph

  • a40faf3102 fix(rid): refetch's redo hint only for changed levels and deleted spikes master grabowski 2026-10-26 15:08:36 +07:00
  • 9bf904b23c feat(rid): screen one-hour spikes; refetch and redo-from to repair the store grabowski 2026-10-26 15:04:01 +07:00
  • a610abcdb8 feat(dashboard): CMU's 2024 flood marks as a map layer grabowski 2026-10-26 14:30:35 +07:00
  • 701bb87d34 feat(p1): city flood stages and zones from CMU Water Center's 2024 flood map grabowski 2026-10-26 14:19:52 +07:00
  • 180d95c6bd fix(forecast): no nightly gaps in the issued model forecasts grabowski 2026-10-20 15:21:48 +07:00
  • cf10f2e4c8 feat(dashboard): console phase 4 - 2024 replay, simulation, replaces the old page grabowski 2026-10-20 13:47:15 +07:00
  • ffd3030352 feat(dashboard): console phase 3 - history, forecast accuracy, data statistics grabowski 2026-10-19 17:12:39 +07:00
  • 71cc1b0ca7 feat(dashboard): console phase 2 - self-hosted basemap, basin stations, markers grabowski 2026-10-19 16:58:21 +07:00
  • 301a629b42 feat(dashboard): the console, phase 1 of the redesign (preview at /static/console.html) grabowski 2026-10-19 16:31:09 +07:00
  • 0e30ddbcb6 fix(notify): no "gauge feed stale" for RID's nightly pause on a quiet river grabowski 2026-10-19 09:35:10 +07:00
  • 7f29b1831e fix(install): find uv for the .venv owner (root shells and sudo lack ~/.local/bin) grabowski 2026-10-18 17:55:33 +07:00
  • 24998b033c fix(deps): python-dotenv 1.2.2 (PYSEC-2026-2270, set_key symlink overwrite) grabowski 2026-10-18 17:31:41 +07:00
  • 6fe2e287e5 docs: rewrite the README for the Rust service grabowski 2026-10-18 17:15:07 +07:00
  • 7e642555b4 chore: remove the Python service; Python is the training stack only grabowski 2026-10-18 17:15:07 +07:00
  • 330fdf7804 docs: website/API in ping-collector since 2026-10-18; quiet the install script's port probes grabowski 2026-10-18 16:42:40 +07:00
  • 779728e38b feat(web): the website and API in ping-collector; Matrix gets the ntfy transitions grabowski 2026-10-18 16:08:06 +07:00
  • 1d1c000922 docs: forecast + ntfy in ping-collector since 2026-10-18 grabowski 2026-10-18 15:10:03 +07:00
  • 6ae67dec63 feat(collector): forecast and ntfy in ping-collector; ThaiWater keeps alerts current at night grabowski 2026-10-18 14:43:39 +07:00
  • 5c4f464383 feat(forecast): Rust forecast crate, bit-for-bit with the Python serving path grabowski 2026-10-18 14:21:56 +07:00
  • 6d4beae65a fix(ml): serve the forecast rain the model was trained with grabowski 2026-10-18 14:07:56 +07:00
  • 64c5b02e06 fix(api): /health never serves a cached result older than 4 TTLs grabowski 2026-10-18 13:49:39 +07:00
  • 9b910c3cbf chore(rust): gap-fill progress lines; slow-statement warning at 30 s grabowski 2026-10-17 23:15:43 +07:00
  • 785836dcd8 docs: ping-collector in production since 2026-10-17 grabowski 2026-10-17 23:12:29 +07:00
  • c8e89840b5 fix(rust): read .env like python-dotenv; dry run in the service environment grabowski 2026-10-17 22:58:12 +07:00
  • 63353f1e80 build(rust): declare rust-version 1.88; rustup setup for the server grabowski 2026-10-17 22:39:45 +07:00
  • 4e619aa2ae feat(rust): ping-collector, phase 1 of the Rust rewrite grabowski 2026-10-17 22:20:02 +07:00
  • e3694d7591 docs: Rust rewrite assessment + forecast parity spike grabowski 2026-10-17 21:53:05 +07:00
  • 04ebdaa931 fix: RID collector keeps late readings instead of losing every evening grabowski 2026-10-17 21:45:09 +07:00
  • 32399f1899 feat: recalibrate P.77/P.75 thresholds; capacity guard on alerts grabowski 2026-09-12 00:34:59 +02:00
  • f4d42c90f4 fix: ntfy listens on the Tailscale address; monitor publishes to it directly grabowski 2026-09-12 00:28:29 +02:00
  • 039d24a5c3 fix: init ntfy only in the collection leader grabowski 2026-09-12 00:22:03 +02:00
  • 777b230baf feat: public flood notifications over self-hosted ntfy grabowski 2026-09-12 00:18:38 +02:00
  • 0ec675e9c5 ci: license report from a clean venv, not the runner's site-packages grabowski 2026-09-11 23:54:44 +02:00
  • 7b31d4d0dd feat: "Is the model getting better?" - live verification per model version grabowski 2026-09-11 23:44:44 +02:00
  • 2e19974fad docs: README describes the project that exists; CLAUDE.md for agents grabowski 2026-09-11 23:44:43 +02:00
  • b03318210c security: pip-audit + bandit gates that can fail; patch 29 known CVEs grabowski 2026-09-11 23:44:43 +02:00
  • 97a6694ab2 feat(dashboard): light/dark theme grabowski 2026-09-11 23:16:30 +02:00
  • 5ad8e4eac3 ci: green pipelines that check what exists; one formatting contract grabowski 2026-09-11 23:05:37 +02:00
  • 6f4a86edbb fix(dashboard): timestamps are Asia/Bangkok everywhere; stale feed says so grabowski 2026-09-11 23:00:39 +02:00
  • ce08312c0f docs: public dashboard URL (water.buildfor.life) replaces the Tailscale IP everywhere grabowski 2026-09-11 22:38:13 +02:00
  • d621aa9ce7 eval: quantile heads and fc48 on top of hgb-v3 (rejected/deferred); HII gauge-rain aggregate grabowski 2026-09-11 21:55:37 +02:00
  • 764764e07e feat: refuse silent v3->v2 downgrade; monthly retrain timer with staged promote grabowski 2026-09-11 21:37:11 +02:00
  • 0a4bf843ff chore: remove empty shell-accident files committed at repo root grabowski 2026-09-11 20:54:48 +02:00
  • f6570ac10f chore: declutter the repo grabowski 2026-08-14 13:42:08 +07:00
  • 7e64e0cf18 fix: one current river level, not two grabowski 2026-08-14 09:25:39 +07:00
  • 382daa7d86 perf: backfill one dam per request via the api/dam range endpoint grabowski 2026-08-13 23:10:36 +07:00
  • b02e815d72 feat: Thai localisation and portrait-phone layout for the dashboard grabowski 2026-08-13 23:10:34 +07:00
  • 5dc5850df6 docs: source sweep — P.75 already is the Mae Ngat release signal grabowski 2026-08-13 21:58:47 +07:00
  • 70e4da07a0 docs: lsim.rid.go.th is unreachable, not geo-blocked grabowski 2026-08-13 21:00:24 +07:00
  • 28b62e5a36 feat: Mae Ngat dam features — built, evaluated, defaulted OFF grabowski 2026-08-13 20:42:21 +07:00
  • 6af6fbe02c fix: survive junk RID dam values — widen storage_pct, bound inserts grabowski 2026-08-13 10:50:58 +07:00
  • ba781465a9 feat: in-memory HII gap-fill in the ML data loader grabowski 2026-08-13 10:29:54 +07:00
  • 6eafb353b1 feat: RID large-dam daily collector — Mae Ngat storage/inflow/outflow grabowski 2026-08-13 10:29:34 +07:00
  • 811af1625b feat: dashboard shows the live model version; DB stats count openmeteo_rain grabowski 2026-08-12 17:35:23 +07:00
  • 160617e87b feat: openmeteo_rain 2021+ backfill entry point grabowski 2026-08-12 17:28:44 +07:00
  • df0ae8cda3 feat: hgb-v3 — Open-Meteo rain features clear the 12h warning gate grabowski 2026-08-12 17:05:01 +07:00
  • cbb3bf7369 feat: Open-Meteo catchment rainfall series + rain features + harness variant grabowski 2026-08-12 16:39:36 +07:00
  • 21e9d2e114 feat: hgb-v2 — regression heads predict rise, recovering flood warning lead grabowski 2026-08-12 15:43:29 +07:00
  • a0086086a2 feat: rolling-origin event-aware evaluation harness for model variants grabowski 2026-08-12 15:19:26 +07:00
  • 98023243af feat: forecast precompute + issued-forecast archive + dashboard overlay grabowski 2026-08-12 14:13:39 +07:00
  • 731f10910e perf: stale-while-revalidate caching, bigger executor, cheap DB health probe grabowski 2026-08-12 12:32:38 +07:00
  • 96fedb3991 perf: single-flight /api/stats; fast-fail health probe grabowski 2026-08-12 11:55:49 +07:00
  • 0b14e394ad perf: Cache-Control headers so browsers and edge caches absorb traffic grabowski 2026-08-12 11:51:43 +07:00
  • d9c65bcf0c perf: inline cache fast path; cache /health checks grabowski 2026-08-12 11:48:05 +07:00
  • 1ec5cfb4df perf: gzip responses; multi-worker serving with single collection leader grabowski 2026-08-12 11:34:12 +07:00
  • 039af8caac perf: cache /measurements/latest; stale-on-error fallback for cached endpoints grabowski 2026-08-12 11:05:02 +07:00
  • d27ca8bf40 perf: 120s TTL cache with single-flight on /api/hii/*/latest grabowski 2026-08-12 10:58:19 +07:00
  • 0005f7dce1 feat: codified backtests, honest docs, belt-and-braces serving, perf fixes grabowski 2026-08-12 10:46:00 +07:00
  • d2d0e655aa fix: All-time range fills the date pickers with the DB's first record date grabowski 2026-08-11 17:02:31 +07:00
  • b89c7e1915 feat: flood-verdict banner, violet rain palette, per-station bands, chip contrast, Umami grabowski 2026-08-11 16:56:53 +07:00
  • 5848621c77 fix: UI/UX review round 1 — mobile reachability, legend toggle, replay correctness grabowski 2026-08-11 16:39:53 +07:00
  • 09c1c84153 feat: search-engine indexing — robots.txt, sitemap.xml, llms.txt, SEO meta grabowski 2026-08-11 16:33:44 +07:00
  • bd3353e2dc feat: buildfor.life link in dashboard footer grabowski 2026-08-11 16:30:25 +07:00
  • d0018d6529 feat: physically meaningful stat tiles + footer links grabowski 2026-08-11 16:25:41 +07:00
  • df31de092b fix: collapse additional-stations list by default; no scroll-jump on station click grabowski 2026-08-11 16:15:34 +07:00
  • e27d418a1a feat: station search in side panel; DB stats cover HII tables grabowski 2026-08-11 16:06:39 +07:00
  • ba4710b243 feat: 'Last N' labels on history ranges; dropdown mirrors into date pickers grabowski 2026-08-11 15:58:28 +07:00
  • 9516857d44 feat: date-range picker on the station history panel; drop PostgreSQL naming grabowski 2026-08-11 15:52:40 +07:00
  • d29d49eac7 feat: collapsible flood outlook (P.1 only by default) + dashboard fixes grabowski 2026-08-11 15:48:20 +07:00
  • 4f3f19f6db feat: rainfall + HII water-level layers on the dashboard grabowski 2026-08-11 15:26:58 +07:00
  • d72496f404 feat: backfill hii_waterlevel from the HII waterlevel_graph archive grabowski 2026-08-11 15:11:08 +07:00
  • 33d8baa8dd fix: composite (station_id, timestamp) PK on hii_* measurement tables grabowski 2026-08-11 14:50:27 +07:00
  • 1845ef7203 feat: hourly HII/ThaiWater rainfall + backup water-level collection grabowski 2026-08-11 14:44:53 +07:00
  • 7befc82ff5 feat: database stats on the dashboard via GET /api/stats grabowski 2026-08-10 23:27:36 +07:00
  • 5e62ea529d feat: --fill-gaps all repairs missing data across the whole DB range grabowski 2026-08-10 22:13:58 +07:00
  • 410faeddd5 fix: protect admin API endpoints; stop rejecting flood-peak measurements grabowski 2026-08-10 18:47:08 +07:00
  • 27fa292e09 docs: September 2025 flood render - deployed config, 24 h warning, peak within 7 cm grabowski 2026-08-10 18:35:55 +07:00
  • f0183faa62 feat: discharge-driven river animation speed, replay stat tiles, hourly doc render grabowski 2026-08-10 18:29:01 +07:00
  • 6112c681a7 docs: render of actual vs predicted through the 2024 flood; adaptive replay speed grabowski 2026-08-10 18:10:48 +07:00
  • 199b0e3483 feat: replay shows when the model would have detected and warned grabowski 2026-08-10 18:07:57 +07:00
  • d015420b66 feat: full-basin 2024 flood replay with clock and demo indicator grabowski 2026-08-10 17:59:06 +07:00
  • 0b885e572d chore: gitignore .playwright-mcp browser artifacts grabowski 2026-08-10 17:45:21 +07:00
  • 0672ea5ffa feat: Oct-2024 flood replay, simulation hooks, and static replay data grabowski 2026-08-10 17:44:36 +07:00
  • c62a03e778 feat: flooded zones render as water and auto-surface grabowski 2026-08-10 17:22:27 +07:00
  • 711629682d feat: per-marker icon field for custom markers grabowski 2026-08-10 17:20:12 +07:00
  • 7e7d244efa feat: add baan boe marker grabowski 2026-08-10 17:19:31 +07:00
  • 786b8514ea feat: custom map markers with per-location flood-zone risk grabowski 2026-08-10 17:16:28 +07:00
  • a17509f3ea feat: replace digitized flood zones with owner-traced polygons grabowski 2026-08-10 17:12:23 +07:00
  • 4f12360960 fix: shift flood zones 1.05 km south, anchored to Nawarat Bridge grabowski 2026-08-10 16:47:14 +07:00
  • c4e0fb6bae fix: re-georeference flood zones and make them clearly visible grabowski 2026-08-10 16:38:09 +07:00