Understory

Changelog

What has changed in Understory, newest first, back to the day it was first published.

Drought, protected species, and quicker pages

· v71 - v82

Drought and protected-species data reach location pages for the first time. Pages stay quick while background updates run, and headlines lead with measurements rather than estimates.

Added

  • County drought conditions now appear on location pages
  • Nearby federally protected species now appear on location pages
  • A find of the day shows a placeholder while it is written

Improved

  • Pages stay quick while background updates run
  • Mold and pollen no longer crowd out measured signals
  • Background updates spread across the hour instead of arriving at once
  • Headlines settle visibly instead of rewriting themselves mid-read

Fixed

  • A pin dropped past the date line lands where you clicked
  • Unusable orbital data no longer stalls a location's other updates
  • Rate-limited sources wait longer instead of retrying together

Better context for the life around you

· v69 - v70

New public datasets add drought, conservation, and long-term bird context without pretending a regional estimate is a measurement at your pin. Each location also gets one featured find a day, written only from what is on record about it.

Added

  • Current county drought conditions from the U.S. Drought Monitor
  • Federal endangered and threatened status for animals actually observed nearby
  • Long-term state bird trends from the USGS Breeding Bird Survey
  • One featured find a day: a living thing, rock or soil, with a photo
  • Featured finds do not repeat a subject within a week

Improved

  • Bird trends include uncertainty, survey years, and route coverage
  • Annual bird data loads locally with no page-time request
  • Every place-specific sentence on a featured find is checked against its source
  • Featured photos are openly licensed, credited, and labelled when representative

Fixed

  • Common plants such as Valley oak no longer appear as rare wildlife
  • Wildlife observation counts are no longer mistaken for rarity
  • Records with deliberately obscured locations are no longer treated as nearby

Updates that finish what they start

· v52 – v67

Background updates now stay bounded, finish much faster, and cannot quietly lose new data that arrives while a score is being calculated. The quieter machinery comes with sturdier daily history and a handful of visible refinements from the last two days.

Improved

  • Bioscore refreshes complete in under two seconds
  • Saved-location controls stay in sync across the page
  • Hero photos refresh before their links expire and have broader fallbacks
  • Water uses the nearest real gauge instead of publishing a placeholder
  • Location pages rank their facts once and use less memory
  • Sky cards reserve attention for genuinely notable passes and events
  • Environmental cards describe conditions instead of narrating their scores

Fixed

  • Repeated background jobs can no longer pile up for the same work
  • Oversized wildlife payloads no longer make score refreshes stall behind database transfer
  • New readings arriving during a score refresh are no longer missed
  • Scheduling work remains responsive while provider or scoring queues are busy
  • Partially written daily summaries are detected and repaired
  • Raw readings are never cleared before their daily summary is safely stored
  • Database connections use the resolved address and the correct TLS settings
  • Location cleanup cannot delete readings shared with a nearby location
  • Backfills respect the same freshness checks as scheduled fetches

Behind the scenes

  • A permanent daily history preserves measurements after raw-data cleanup
  • Paid Google sources were disabled and pollen was kept inside the free tier
  • Background queues now carry explicit uniqueness and capacity invariants
  • Production-shaped performance and mid-refresh race regressions join the test suite

Noticing what is unusual

· v34 - v51

Every provider's real response is now recorded and checked, which turned up a season's worth of data the app was collecting and never showing — including how unusual today actually is, and where the app was overstating what it had compared.

Added

  • Sky card: aurora, moon, meteors, eclipses
  • Planetary oppositions and conjunctions
  • Local forest health outbreak signals
  • Fire risk as its own scored category
  • Streamflow and water temperature against their own history
  • Today's high and low against the local normal
  • How often it rains here on this date
  • Ten-day runs, not just single afternoons
  • How far the temperature moved in a day
  • Air pressure, and which way it is going
  • How many people felt an earthquake, and how strongly
  • El Nino, and what it has meant at your own station
  • A permanent daily record of every measurement
  • Kept whole after the raw data is cleared away
  • A page for sources we considered and declined

Improved

  • Weather now says where it was measured
  • Daily high, low, and reduced visibility
  • Air quality carries a monitor map link
  • Water station named and placed on a map
  • Earthquakes ranked by real significance
  • Forest health as a share of surveyed area
  • Pollen marked when out of season
  • Illness figures say how delayed they are
  • An empty wildfire card still offers the map
  • The two score panels read as a pair
  • Scores say where they sit in words, not percentages
  • Card bodies keep their line breaks

Fixed

  • Wind direction, which had been silently missing
  • Fire danger replaced with NOAA's own outlook
  • Card drilldowns and source links
  • Sweeps recover from a schedule they slept through
  • Sweeps no longer skip locations out of phase
  • A missing queue that stalled hourly updates
  • Stranded background jobs are rescued
  • Fires already out are no longer reported
  • Local temperature normals that matched nothing at all
  • An all-clear no longer reads as missing data
  • The signal count counts only signals that exist here
  • The same fact no longer appears twice on one page
  • A missing icon no longer blanks the page
  • Category names that read as English, not labels
  • "For this time of year" now means it
  • Seasonal comparisons re-centre as the year moves

Behind the scenes

  • Recorded live provider responses for all 23 sources
  • A test that catches data we collect but never read
  • A generated reference for every provider payload
  • An automatic check for leaked API keys

Score credibility and rich links

· v30 – v33

The Bioscore learned to explain itself, cards learned to link out, and the whole site picked up a palette that follows the sun.

Added

  • Forward-looking fire weather risk
  • Humidity and UV index on the weather card
  • Sunrise, sunset, and twilight in local time
  • Insect and spider activity on biodiversity
  • Streamflow and water temperature on the water card
  • Which categories pull the score up or down
  • Links out from every detail row

Changed

  • Nature activity scored by effort, not raw counts
  • A serious hazard now caps the score outright
  • Three sun-timed colour schemes replace the cream theme
  • A taller map on the landing page

Fixed

  • Stale provider data lingering in card details
  • Dependency security updates

Timing, retention, and monitoring

· v22 – v29

A week spent on the parts nobody sees: how often data is fetched, how long it is kept, and how we find out when it breaks.

Added

  • Error tracking and a background job dashboard
  • One source of truth for coverage granularity

Changed

  • Headline polish happens in the background and is cached
  • Refresh cadence eased back to every thirty minutes
  • Google data held for eight hours instead of refetched

Fixed

  • Three retention bugs behind a huge delete spike
  • Duplicate "no fresh data" tiles
  • Two near-identical trend messages shown at once
  • A missing "still building history" message

Milestones and what to notice

· v20 – v21

The feed started pointing at things rather than only listing them.

Added

  • A What to Notice Right Now card
  • Seasonal milestones: first bloom, migration, stream warming
  • Three more cross-signal connections
  • Water temperature and streamflow readings
  • Daily cleanup of old readings and snapshots

Changed

  • Milestone cards stay visible for two days
  • Score changes never blamed on wildlife counts

Return visits and real speed

· v9 – v19

Pages that took three seconds now don't, and coming back to a location tells you what moved since last time.

Added

  • A Since Your Last Visit comparison
  • More varied headlines, naming what was actually seen
  • Anonymous, cookieless visitor counts
  • understory.today as the real address

Changed

  • A different location photo on each visit
  • Return comparisons only after a real gap

Fixed

  • Repeated database queries causing slow page loads
  • Live pages dropped when the server scaled down
  • The home map no longer asks for your location

First published

· v1 – v8

Understory went live on 2026-07-22: a single page that tells you what is happening in the natural world within a mile or two of a point you pick, assembled from public science data.

The first version

  • Pick any point and get a daily reading of it
  • The Bioscore, and how favourable today is
  • The Nature Activity Index for how alive it is
  • Cards for birds, biodiversity, and plant timing
  • Cards for weather, air quality, pollen, and mold
  • Cards for water, wildfires, alerts, and illness season
  • A written summary of what stood out
  • Every card opens for the detail behind it
  • A two-week score trend, and saved locations
  • Badges saying how local each signal really is
  • Comparisons against this location's own history

Same day

  • The warm, organic look the site still wears
  • Precise weather and air quality from Google
  • Location photos, with three fallbacks
  • Six connections drawn between separate signals
  • A crash loop, a database setting, and a stale asset cache