We're replacing a 20-year monopoly in UK flood hydrology software. Follow every decision, every line of code, as we build the platform practitioners actually deserve.
1,031
Tests passing
13
Packages
71
Commits
19 Feb 2026
Last updated
What we shipped, fixed, and improved — week by week.
Added the 4 missing FEH technical note sections: Summary & Conclusions, Method Selection rationale, pooling diagnostics (D_i, H, Z tables), and descriptor attribution. Plus ReFH2 initial conditions table, recommended branch marking, and OS grid reference in header.
Analysis panels now appear progressively as data arrives via Server-Sent Events. The QMED panel renders within ~3 seconds instead of waiting for the full 10-15 second pipeline to complete.
Click any QMED method or growth curve row to select it — design flows recompute instantly in the browser with zero server round-trip. Branch capture lets you snapshot the current state for comparison.
The decision tree sidebar now surfaces computed analysis intelligence: goodness-of-fit Z-stat badges, heterogeneity H colour-coded, discordant station counts, trend/outlier warnings, Q100 inline, and ReFH2 vs statistical comparison.
Dedicated shareable station detail route with mini MapLibre map, AMAX summary statistics (mean, max, min, CV), and rule-based data quality warnings.
Fixed the SM2025 donor-adjusted column showing the wrong number. Was applying SM2008 adjustment factor to both columns — now correctly uses the distinct SM2025 donor adjustment value.
Stripped .js extensions from all 148 internal imports across the monorepo. Turbopack doesn't perform the .js to .ts rewrite that tsc does — extensionless imports work for both.
Mobile-responsive sidebar with hamburger drawer, decision tree scroll-to-panel on branch selection, map loading skeleton, error boundary on StationMap, and beforeunload warning for unsaved analysis state.
Cross-referenced every ReFH2 parameter against the UKFE R package (CRAN, Anthony Hammond). Found and fixed two discrepancies: Tp regression exponent (-0.25 → -0.28) and alpha parameter now uses season-specific power-law formulas.
Replaced localStorage with SQLite for persisting saved analyses. No more 5 MB browser limit — save unlimited catchment analyses locally with instant retrieval.
Pooling group formation now uses SM2025 similarity distance metric when 2025 descriptors are available. 800-year pooling target matches SM2025 specification. Donor selection prioritised by geographic distance.
Automated testing on every push — 1,019 tests run across all packages in dependency order. TypeScript type-checking included.
Implemented seasonal initial conditions for the ReFH2 rainfall-runoff model. Winter and summer now produce different Cini (initial soil moisture) and BF0 (baseflow) values, matching UKFE R reference equations.
Practitioners can now exclude stations from the pooling group with a mandatory justification note. Exclusions flow through to growth curve recomputation and are recorded in the audit trail.
Resolved 7 issues in one pass: AMAX values can be rejected/restored, station markers colour-coded by data quality, tree node deduplication, BNG reprojection fix for ungauged catchments, and donor suitability filtering improvements.
Full SM2025 donor transfer process: de-urbanise donor QMED, compute ratios, re-urbanise final result. URBEXT2015 urban expansion factor. Ungauged catchments can now form pooling groups from descriptor similarity alone.
SM2025 equations require BFIHOST19scaled (not BFIHOST19). Traced the bug end-to-end from NRFA API through client types to the equation inputs. Also fixed AREA to use DTM-derived ihdtm-catchment-area.
GLO/GEV/GPA scale parameters were mean-normalised (λ₁=1) but FEH growth curves normalise to QMED (median=1). Fixed to match UKFE R median-normalised formulas. ~1-2% growth factor error corrected.
Created 23 cross-verification tests comparing our implementations against the UKFE R package (v2.0.0). Verified: QMED (2008+2025), L-moments, GLO, GEV, GPA, Kappa3, non-flood adjustment, SDM, and urban adjustment factor.
Implemented the FEH Volume 3 §19 adjustment for stations with recorded non-flood years. L-moment ratios are corrected to account for years where flow was below the perception threshold.
Two new calculation packages: @hydrometric/scs (SCS curve number runoff model with unit hydrograph) and @hydrometric/rational (Rational method for small catchments). Plus FSR reservoir routing research.
Added the Kappa distribution (4 parameters) to the growth curve fitting engine. Includes the generalised logistic, GEV, and GPA as special cases. FEH reference library documentation added.
Full assessment of the platform against the original vision. Identified critical UX gaps, prioritised the roadmap, and documented the gap between calculation engine maturity and frontend polish.
Sprint 4 delivery: Pearson Type III and Kappa distributions for growth curves, manual parameter overrides for ReFH2, AEP toggle on design flow table, and inline AMAX series editing with real-time recomputation.
Full SM2025 descriptor support: SAAR9120, FARL2015, BFIHOST19scaled, FPEXT. Ungauged catchment workflow with manual descriptor overrides. Observed data label distinguishes gauged vs estimated.
Fixed a bug where user overrides (descriptor tweaks, QMED manual entry) were lost when rerunning the analysis pipeline. Overrides now persist through SSE stream and populate on reload.
What we're building next. Priorities shaped by practitioner feedback.
Full Depth-Duration-Frequency estimation from catchment descriptors. Replaces the empirical placeholder currently used by ReFH2.
Shared projects, multi-user workspaces, and team admin. Built for consultancies running dozens of FRAs simultaneously.
Auto-generate catchment boundaries from Environment Agency LiDAR DTM. No more manual tracing in FEH Web Service.
We're in early access. Your feedback drives our roadmap. Join the community and help us build the future of UK flood hydrology.