All notable changes to worldwatcher.app are documented here. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
Version 0.6.71 · 2026-09-27
Added
Floods tab uses the same country filter as Dam Incidents (previous / next, All countries, Reset). Options come from flood records. The choice filters the list, map markers, flood paths, and sidebar stats, and stays in the URL (?layer=floods&country=). Each layer remembers its own country when switching tabs. No matching floods shows “No floods match.”
Dashboard country filter is available on the Floods layer as well, using that layer’s countries
Death counts use the failure red in the list, detail casualties, sidebar totals, and dashboard (number and label)
Version 0.6.70 · 2026-09-14
Fixed
Country deep-link and country select now fit the map to that country’s pins after incident data loads (early landingView no longer no-ops forever; 3D ready/toggle no longer snap back to world)
Version 0.6.69 · 2026-09-14
Added
Country filter deep link: /?country=Ukraine (and hash fallback country=) filters the dam-incidents map to that country, fits the map, and stays in the address bar; Reset / Home / floods layer drop country from the URL; id and layer are preserved
Version 0.6.68 · 2026-09-13
Changed
Year sliders use an incident-density scale: empty centuries take a thin sliver of the rail, travel concentrates where the archive actually is (from the 19th century on)
Dashboard incidents-over-time chart draws the projected trend as a dashed curve through the fan, not only the 50/80/95 ranges (still clipped to the plot box)
Version 0.6.67 · 2026-09-13
Fixed
Year sliders (map panel and dashboard) stay live while dragging: thumbs and year boxes update immediately, pin/list rebuilds skip unchanged years and are rAF-throttled
Version 0.6.66 · 2026-09-11
Fixed
3D globe world landing: raise initial zoom target to 3.45 (min 3.2) and recalibrate radius fit (base 0.30) so the home globe fills the open pane without shrinking below min
Version 0.6.65 · 2026-09-11
Fixed
3D globe world landing: reset Europe-facing view (no huge offset Y that slid Europe to the horizon); modest 10% lift + asymmetric padding (top 12 / bottom 92); zoom target 3.2 (min 3.0) with recalibrated radius fit so the globe fills the open pane without crushing to ~2.88
Version 0.6.64 · 2026-09-11
Fixed
3D globe world landing: raise lift to 42% canvas height and loosen offset Y clamp to 55% so upward moves are not capped near −29%h (fixes no-op lifts in 0.6.61–0.6.63)
Version 0.6.63 · 2026-09-11
Fixed
3D globe world landing: raise the globe disk substantially higher in the open map pane (~27% canvas-height upward lift, +13% beyond 0.6.62) with a soft top clamp so atmosphere is not sheared off the window edge
Version 0.6.62 · 2026-09-11
Fixed
3D globe world landing: raise the globe disk further in the open map pane (~14% canvas-height upward lift on offset Y, up from 6%) while keeping Europe-facing orientation, size, horizontal centering, and sidebar clearance
Version 0.6.61 · 2026-09-11
Fixed
3D globe world landing: nudge the globe disk upward in the open map pane (extra ~6% canvas-height lift on offset Y) while keeping Europe-facing orientation, size, sidebar clearance, and horizontal centering
Version 0.6.60 · 2026-09-11
Fixed
3D globe world landing: center the visible disk in the open map pane using sidebar/right padding plus pitch-aware disk offset (not just geographic focal point); keeps northern Europe facing, large zoom fit, and no sidebar clipping
Version 0.6.59 · 2026-09-11
Fixed
3D globe world landing: northern Europe focal point ([12, 53], pitch 16°, bearing 0) with sidebar-aware offset placing the disk center on the open pane midpoint and zoom fit (target 2.92, min 2.88) so the full globe clears the left sidebar without shrinking to a tiny ball
Version 0.6.58 · 2026-09-11
Fixed
3D globe world landing: one coherent easeTo (Europe center, zoom 2.92, pitch 24°, bearing 0) with sidebar-aware offset into the open map pane — removes stacked panBy that broke centering in 0.6.57 while keeping a large, fully visible globe
Version 0.6.57 · 2026-09-11
Fixed
3D globe world landing: pan the large Europe home view right into the open map pane so the globe disk is not clipped under the left sidebar overlay (sidebar-aware horizontal offset + limb clearance; zoom/size unchanged)
Version 0.6.56 · 2026-09-11
Fixed
3D globe world landing: keep Europe focal point (~10°E, 50°N) but raise zoom (2.9) and pitch (26°) plus a small vertical offset so the globe fills the map pane again instead of appearing too small
Version 0.6.55 · 2026-09-11
Fixed
3D globe world landing: initial camera focal point on western/central Europe (~10°E, 50°N), bearing 0 and moderate pitch, with sidebar-aware padding so the globe stays large and centered in the map pane
Version 0.6.54 · 2026-09-11
Fixed
3D globe world landing: derive camera from the same world bounds as 2D fitWorldStart (Atlantic mid-latitudes, bearing 0) instead of a fixed center aimed at southern Africa; moderate pitch and slight zoom boost for atlas-style framing
Version 0.6.53 · 2026-09-11
Fixed
3D globe world landing: sidebar-aware padding, higher zoom, gentler pitch, and post-resize vertical offset so the globe is centered and large enough on first enable (world view without a selected incident)
Version 0.6.52 · 2026-09-10
Fixed
Deep-link map zoom: declare pendingFocusId (0.6.50 crash), seed it before map init, skip world landing while pending, one delayed re-focus after detail opens
Version 0.6.51 · 2026-09-10
Fixed
Revert 0.6.50 deep-link map focus change that broke the app (map/panel missing); restore last good client
Version 0.6.49 · 2026-09-10
Changed
Copy post no longer shows a “Post copied” confirmation toast
Version 0.6.48 · 2026-09-10
Changed
Copy post now copies the Event card (name, place, date, what happened, status, known casualties) plus the deep link and tagline — X/LinkedIn still use the short social caption
Version 0.6.47 · 2026-09-10
Changed
Detail share footer: center the icon row (and feedback) under the card
Version 0.6.46 · 2026-09-10
Changed
Detail card share: moved from toolbar dropdown into a footer row of monochrome icon buttons (Copy link, Copy post, X, LinkedIn; device Share when available)
Version 0.6.45 · 2026-09-10
Changed
Left panel: lit hover fill on layer tabs, filter/period chips, and country prev/next/Reset (same select-bg treatment as detail tabs)
Version 0.6.44 · 2026-09-10
Changed
DAM tab: relabel Construction → Construction type (build method, not year built)
Version 0.6.43 · 2026-09-10
Changed
DAM tab: also show River / facility and Installed capacity (MW) alongside owner, year, height, reservoir capacity, construction, purpose, and type
Version 0.6.42 · 2026-09-10
Removed
Removed “Suggest a better pin” from the detail geo note — Report a correction already covers pin/location fixes
Version 0.6.41 · 2026-09-10
Changed
Share post text (Copy post / X / LinkedIn): deep link sits directly after the fact line (same line, space-separated); locked tagline follows on the next paragraph — brand still visible when LinkedIn shortens the URL
Version 0.6.40 · 2026-09-10
Changed
Detail panel tabs: less rounding (6px, not pill), lit hover fill on inactive tabs, slightly tighter type/padding, and always wrap so labels never overflow the panel
Version 0.6.39 · 2026-09-10
Changed
Share post text (Copy post / X / LinkedIn): drop the " — " before the deep link (X left a dangling dash after unfurling the URL into a card); insert the locked tagline worldwatcher.app · Global monitor for incidents and disasters on its own line between the fact line and the URL so the brand stays visible when LinkedIn shortens the link to lnkd.in
Version 0.6.38 · 2026-09-10
Changed
Detail panel section tabs (Event / Dam / Cause / Impact / Sources / Data): active tab uses a filled pill with stronger weight and contrast; inactive tabs stay readable with more spacing between labels — clearer in both light and dark themes
Version 0.6.37 · 2026-09-10
Fixed
LinkedIn share: opens the feed composer with post text prefilled (shareActive=true&text=…, same pattern as X intent) instead of share-offsite URL-only flow that opened an empty “Share your thoughts” composer; clipboard copy remains a fallback when the popup is blocked
Changed
Share captions: removed “Sourced on worldwatcher.app” from share text — event + place/date (+ confirmed deaths if any), then deep link only
Notes
Stale link-preview cards on LinkedIn are cached by LinkedIn, not our HTML. Refresh a URL with LinkedIn Post Inspector after tagline or OG changes
Version 0.6.36 · 2026-09-10
Fixed
LinkedIn share: copies the full post text to the clipboard before opening LinkedIn — paste into the composer (LinkedIn share-offsite cannot prefill the post body). Menu item tooltip/aria: “Copies post, then opens LinkedIn”
Changed
Share copy rules: event name + place/date only; casualties included only when deaths is a known number — no category/type tags, no “Deaths unknown” or similar phrases (client share text and server OG description)
Notes
Stale link-preview cards on LinkedIn are cached by LinkedIn, not our HTML. Refresh a URL with LinkedIn Post Inspector after tagline or OG changes
Version 0.6.35 · 2026-09-10
Changed
Site tagline: worldwatcher.app · Global monitor for incidents and disasters — updated default <title>, og:title, twitter:title, and homepage meta descriptions (layer tab labels unchanged)
Share menu: Copy post copies the full fact-line caption plus deep link; Copy link remains URL-only; X intent and native Web Share unchanged
Version 0.6.34 · 2026-09-10
Fixed
Social unfurls for ?id= and ?layer=floods&id= deep links: Edge Middleware rewrites homepage requests with an id query to /api/og before Vercel serves static index.html (filesystem routing bypassed the v0.6.33 vercel.json rewrite)
Version 0.6.33 · 2026-09-10
Added
Server-side Open Graph for deep links (?id= / ?layer=floods&id=): Vercel rewrites incident URLs to /api/og, which injects event-specific og:title, og:description, og:url, and twitter:* meta from a build-time index
Changed
Share / unfurl fact line now includes country, deaths (or “Deaths unknown”), and category/type — aligned with server OG description
Version 0.6.32 · 2026-09-10
Added
Share control on incident and flood detail panels: copy deep link, X (Twitter), LinkedIn, and native Web Share on supported mobile browsers
Deep links (?id= / ?layer=floods&id=) open the matching record on load; share text uses a short fact line (name, date, place, deaths) plus worldwatcher.app link
Client-side og:title, og:description, and og:url update when a detail panel is open
Version 0.6.31 · 2026-09-09
Changed
3D tips (coach mark and 3D button tooltip) now say Ctrl + drag to grab and rotate instead of Shift + drag to orbit (native MapLibre dragRotate); Shift+left-drag still works as a quiet Mac fallback
Version 0.6.30 · 2026-09-09
Fixed
Map-controls tooltips: coach mark and floating hover tips no longer stack (e.g. on 3D button); first-use 3D coach mark still shows on enable only
Native browser title tooltips stripped on map-controls toolbar buttons (Leaflet zoom, MapLibre compass) so only custom floating tips appear
Version 0.6.29 · 2026-09-09
Added
3D navigation hint floats above the bottom map-controls bar on first 3D enable (persisted dismissal in ww-3d-help-seen; re-shown on 3D button hover/focus)
Compass icon in the bottom toolbar uses classic red north / blue south needle styling
Light theme: selected layer tabs, preset chips, and active map-control buttons use blue accent fills instead of black
Version 0.6.28 · 2026-09-09
Fixed
MapLibre 3D rotate on macOS: Shift+left-drag changes bearing and pitch while 3D is enabled (in addition to right-drag / Ctrl+left-drag); contextmenu is suppressed on the 3D canvas so right-drag rotate works when available
3D compass control moved from top-right (hidden under the incident detail panel) into the bottom map-controls bar, so reset bearing/pitch stays reachable when a detail panel is open
Version 0.6.27 · 2026-09-09
Fixed
MapLibre 3D local navigation: zoomed-in views switch from globe to Mercator so pan, zoom, rotate, and pitch work reliably after focusing an incident or flood path (~z11)
Navigation compass control (top-right) makes rotate/pitch discoverable; drag/touch handlers are re-enabled after camera moves
Terrarium DEM terrain is enabled for all zoomed-in 3D views (mild exaggeration ~1.1) so elevation relief is visible — terrain wins over globe when the two conflict; globe remains the world-scale opener at low zoom
Version 0.6.26 · 2026-09-09
Fixed
MapLibre 3D blank gray canvas: #map-3d no longer uses HTML hidden (display: none) during init — container stays in layout with visibility/pointer-events so the WebGL canvas gets real dimensions from first paint
3D enable now double-resizes (rAF + short timeout), calls syncBaseLayers(), and triggerRepaint() so Esri basemap tiles appear after toggling
Globe projection is applied after style/layers load; explicit background layer prevents empty gray globe while rasters load
Terrain DEM remains disabled in globe mode (atmosphere/sky only)
Version 0.6.25 · 2026-09-09
Fixed
MapLibre 3D globe view: upgraded vendored MapLibre GL JS from 4.7.1 to 5.24.0 so setProjection({ type: 'globe' }) works (fixes blank gray canvas and MAP3D_PROJECTION_UNSUPPORTED)
3D enable now always calls syncBaseLayers() so Esri basemap rasters become visible on the globe
Terrain DEM is disabled in globe mode to avoid blanking the map (atmosphere/sky still shown)
Version 0.6.24 · 2026-09-09
Changed
MapLibre 3D mode now opens in globe projection with a full-Earth view (slight pitch and atmosphere) instead of a flat pitched Mercator map
Version 0.6.23 · 2026-09-09
Fixed
Content-Security-Policy connect-src now allows Esri basemap tiles (server.arcgisonline.com) required by MapLibre GL 3D mode
Version 0.6.22 · 2026-09-09
Added
MapLibre GL 3D map toggle: tilt, rotate, and terrain exaggeration on the Dam Incidents / Floods map
3D preference persists in localStorage (ww-map-3d)
Version 0.6.21 · 2026-09-07
Fixed
Sitemap and canonicals use clean URLs (/privacy, not /privacy.html) so Google does not crawl redirecting .html paths
Version 0.6.20 · 2026-09-07
Added
Planned badge for announced future releases (planned: true); date line reads “Planned for …”
Version 0.6.19 · 2026-09-02
Fixed
Incidents over time year labels no longer overlap
Version 0.6.18 · 2026-09-02
Fixed
Email is required on Contact and Report a correction (label no longer says optional)
Version 0.6.17 · 2026-09-02
Changed
Year fields a bit narrower, with small gaps in the row
Version 0.6.16 · 2026-09-02
Changed
Year fields are wider (gap between them is tighter)
Reset also returns the map to the starting view
Version 0.6.15 · 2026-09-02
Changed
Name is optional on Contact and Report a correction
Email field matches the name field
Version 0.6.14 · 2026-09-02
Changed
Contact and Report a correction require an email
Version 0.6.13 · 2026-09-02
Fixed
Projection ranges on Incidents over time stay inside the chart (no overflow under zero)
Version 0.6.12 · 2026-08-31
Added
Privacy-friendly visit counts via Plausible (no cookies)
Version 0.6.11 · 2026-08-30
Fixed
Dam tab photos were empty boxes (off-site images were blocked); they now load, one photo per dam
Version 0.6.10 · 2026-08-30
Added
Dam tab can show a public-domain photo of the structure when we have one
Version 0.6.9 · 2026-08-28
Fixed
Dams chip only shows on Floods (it was sticking on Dam Incidents)
Version 0.6.8 · 2026-08-28
Fixed
Rasuwa flood path now starts at the ice-rock avalanche into Lhende (28.29417, 85.51081), not the northern 东林 headwater lake
Version 0.6.7 · 2026-08-28
Added
Floods layer has a Dams chip that shows dam incidents tied to the visible floods
Fixed
Rasuwa / Bhotekoshi path now starts at the Lhende glacial lake, then follows 东林藏布, Bhotekoshi and Trishuli
Version 0.6.6 · 2026-08-28
Added
Floods can carry a sourced path line on the map, tied to that flood
Rasuwa / Bhotekoshi flood shows the Lhende–Bhotekoshi–Trishuli corridor
Version 0.6.5 · 2026-08-28
Fixed
Location line always writes the country (it used to hide it when location_label was set)
Version 0.6.4 · 2026-08-27
Fixed
Country filter zooms to that country’s pins and stays there (home view no longer snaps back to the world)
Version 0.6.3 · 2026-08-27
Changed
Map and Auto no longer use Carto tiles (those now watermark “API key required”)
Dark and light basemaps are Esri canvas, same as Aerial’s Esri tiles
Version 0.6.2 · 2026-08-27
Added
Cause tab links to the related flood when a dam row has related_flood_id
Version 0.6.1 · 2026-08-27
Changed
Notes and change-log time tags are Zulu (13:43:00Z)
Notes keep a UTC date next to the clock (2026-08-27 13:43:00Z)
Change log at is the Zulu clock; date stays the UTC calendar day
Version 0.6.0 · 2026-08-27
Added
Data tab on the incident detail panel
Record and Change log now live on the Data tab
Changed
Desktop detail panel widened from 400px to 520px so the extra tab fits
Sources tab is now sources only
Contact and Report a correction panels stay matched to the detail panel width (520px)
Version 0.5.5 · 2026-08-27
Changed
Event tab: What happened and Status render as paragraphs
Notes render as a timestamped list (time and zone, newest first)
Change log shows time and zone, not date only
Version 0.5.4 · 2026-08-25
Changed
Reporter name is required on the Report a correction form
Empty or whitespace-only names are rejected in the browser and on the server
Email remains optional; Contact form name stays optional
Version 0.5.3 · 2026-08-23
Changed
Contact and Report a correction panels now centered in viewport on desktop (centered vertically and horizontally)
Panels remain bottom-hugging on mobile with compact rounded corners
Version 0.5.2 · 2026-08-23
Fixed
Contact and Report a correction forms: honeypot spam-trap fields renamed to avoid browser autofill interference