v0.11.34 โ ๐ฉบ City Pulse charting overhaul, deterministic status hardening & mobile fixes
๐ฉบ v0.11.34
Ten days of work on City Pulse's deterministic layer, a full charting migration to Chart.js, and a round of mobile/map polish.
๐ Charts & methodology page
- ๐ Migrate category status/trend charts to Chart.js, replacing the old dot/range plot
- ๐จ Replace the thin p25โp75 whisker with a translucent baseline band
- ๐๏ธ Reorganize the pulse methodology page and add AI narrative/overrides evidence
- ๐ผ๏ธ Render cited alerts as icon+title cards instead of raw links
- ๐ Link methodology page to
analysis.mdinstead of duplicating detail; surface AI inputs - ๐ Restore
histScoresinselectCell, broken by the Chart.js migration - ๐ Expose
lookahead/lead_alertin the pulse-methodology-data API
๐งฎ Deterministic status/trend engine
- ๐ก๏ธ Deterministic status/trend hardening: lagged baseline, hysteresis, weights versioning
- โฑ๏ธ Give lead-alert its own window, decoupled from
projected_score - ๐ Rebase surge baseline to scheduled load instead of noisy ongoing score
- โก Regenerate immediately when hysteresis flips a fast category's status during a skip window
๐ฅ๏ธ Admin dashboard
- ๐ Add a 24h system health chart with failure/recovery/restart events
๐ฑ Mobile & map UX
- ๐ซ Don't close pulse/weather overlays on scroll gestures when expanded
- ๐ Fixed 340px width for pulse/weather overlays; unify disclaimer font
- ๐บ๏ธ Consistent map popup width/dark-mode; extend incident-circle UX to strike/fire
- ๐ Fix URL-shaped alert IDs breaking Telegram deep links (feuerwehr, polizei, strike)
๐งน Reliability & cleanup
- ๐ Reconcile
strike_duplicatescleanup with the active-strike check it must match - ๐ฐ Stop re-paying for polizei/strike extraction on entries that get discarded
๐ Docs
- ๐ Full audit and rewrite of README, docs/, and policy files