Changelog
What has changed in Understory, newest first, back to the day it was first published.
Drought, protected species, and quicker pages
· v71 - v82Drought 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 - v70New 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 – v67Background 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 - v51Every 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 – v33The 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 – v29A 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 – v21The 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 – v19Pages 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 – v8Understory 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