Skip to content

Release 2026-06-01: Bird Families tab, species coverage, basemaps, and map fixes#264

Merged
jimchurches merged 49 commits into
mainfrom
beta-next
Jun 1, 2026
Merged

Release 2026-06-01: Bird Families tab, species coverage, basemaps, and map fixes#264
jimchurches merged 49 commits into
mainfrom
beta-next

Conversation

@jimchurches
Copy link
Copy Markdown
Owner

@jimchurches jimchurches commented Jun 1, 2026

Summary

Promote the current beta-next integration branch to main as the next Explorer release. This release focuses on Bird Families as a first-class tab, world species coverage metrics, map/basemap improvements, Streamlit API updates, popup constant codegen, and test/CI hygiene.

Embedded build version remains 2026-05-24 until the follow-up hygiene branch bumps it to 2026-06-01.

Changes

Bird Families & species coverage

Maps & basemaps

Streamlit & export

Testing & CI

  • Isolate E2E config from repo config_secret.yaml (Fix E2E tests overwriting local config_secret.yaml #250)
  • Expanded coverage for basemap manifest, taxonomy bundle, family summary, and banner URL integration
  • Generated map assets check now covers popup width constants (generate_basemap_assets.py --check)

Tooling & dependencies

Testing

Notes

  • 38 commits on beta-next since main
  • Follow-up hygiene work (including build version bump to 2026-06-01) will land on release-2026-06-01-final-review after this merge.

Issues

jimchurches and others added 30 commits May 24, 2026 12:37
Refs: #246
Co-authored-by: Cursor <cursoragent@cursor.com>
Refs: #246
Co-authored-by: Cursor <cursoragent@cursor.com>
Refs: #247
Co-authored-by: Cursor <cursoragent@cursor.com>
Refs: #247
Co-authored-by: Cursor <cursoragent@cursor.com>
Refs: #251
Co-authored-by: Cursor <cursoragent@cursor.com>
Refs: #251
Co-authored-by: Cursor <cursoragent@cursor.com>
Refs: #254
Co-authored-by: Cursor <cursoragent@cursor.com>
Refs: #253
Co-authored-by: Cursor <cursoragent@cursor.com>
Refs: #253
Co-authored-by: Cursor <cursoragent@cursor.com>
Replace hand-maintained tile URLs across Python, React, and HTML export with a single basemaps.yaml source, generated TS assets, and runtime export injection.

Fixes #249

Co-authored-by: Cursor <cursoragent@cursor.com>
Refs: #249
Co-authored-by: Cursor <cursoragent@cursor.com>
Refs: #249
Co-authored-by: Cursor <cursoragent@cursor.com>
Refs: #249
Co-authored-by: Cursor <cursoragent@cursor.com>
Refs: #249
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Refs: #258
Co-authored-by: Cursor <cursoragent@cursor.com>
Refs: #258
Co-authored-by: Cursor <cursoragent@cursor.com>
Refs: #258
Co-authored-by: Cursor <cursoragent@cursor.com>
Updates the requirements on [streamlit](https://github.com/streamlit/streamlit) and [ruff](https://github.com/astral-sh/ruff) to permit the latest version.

Updates `streamlit` to 1.58.0
- [Release notes](https://github.com/streamlit/streamlit/releases)
- [Commits](streamlit/streamlit@1.57.0...1.58.0)

Updates `ruff` to 0.15.15
- [Release notes](https://github.com/astral-sh/ruff/releases)
- [Changelog](https://github.com/astral-sh/ruff/blob/main/CHANGELOG.md)
- [Commits](astral-sh/ruff@0.15.14...0.15.15)

---
updated-dependencies:
- dependency-name: streamlit
  dependency-version: 1.58.0
  dependency-type: direct:production
  dependency-group: python-deps
- dependency-name: ruff
  dependency-version: 0.15.15
  dependency-type: direct:production
  dependency-group: python-deps
...

Signed-off-by: dependabot[bot] <support@github.com>
Ranking & Lists keeps nested Top Lists and Interesting Lists only;
species-group coverage UI and prep bundle are unchanged.

Co-authored-by: Cursor <cursoragent@cursor.com>
Extract species-group coverage UI and prep helpers from rankings module;
add fragment tests and fix empty-taxonomy messaging when bundle exists.

Co-authored-by: Cursor <cursoragent@cursor.com>
…hon-deps-c872317b72

chore(deps): bump the python-deps group with 2 updates
RANKING_LISTS_FAMILIES_BUNDLE_KEY replaces RANKINGS_TAB_BUNDLE_KEY;
align build_ranking_lists_families_bundle and sync_ranking_lists_families_bundle.

Co-authored-by: Cursor <cursoragent@cursor.com>
Move magic numbers into defaults.py, streamlit_ui_constants.py, and
settings_schema_defaults.py; dedupe MAP_HEIGHT bounds via schema re-export;
rename map_working/taxonomy_assets and other opaque locals; drop stale
app_prep_map_ui test aliases in favour of app_prep_map_leaflet_caches.

Refs: #264
Co-authored-by: Cursor <cursoragent@cursor.com>
@jimchurches
Copy link
Copy Markdown
Owner Author

Hygiene branch update (release-2026-06-01-final-review)

Post-release code review cleanup committed on the hygiene branch (ahead of merging onto beta-next):

Commit: 5c1fc318refactor: Centralize Streamlit defaults and clarify orchestration naming

What changed

Constants → correct home

  • MAP_IFRAME_MIN_HEIGHT_PX, Leaflet session LRU sizes, Bird Families dataframe height, country not-seen cache size → defaults.py
  • Spinner emoji iframe height + batch-ms floor → streamlit_ui_constants.py
  • Rankings visible rows + yearly column window → settings_schema_defaults.py (no more magic 16 / 10 / 3 / 25)
  • MAP_HEIGHT_PX_* deduped: single source in schema, re-exported from defaults.py

Naming

  • mw / taxmap_working / taxonomy_assets in app orchestration
  • ixspecies_search_index; settings UI _msc*marker_colour_scheme_*

Cleanup

  • Removed stale _leaflet_payload_cache_* aliases from app_prep_map_ui; tests import app_prep_map_leaflet_caches directly

Checks

  • python3 -m ruff check explorer/ — passed
  • python3 -m pytest tests/ -q — 635 passed, 7 skipped

Branch state

  1. b39c6c79 — build version bump to 2026-06-01
  2. 5c1fc318 — defaults/naming hygiene (this commit)

Deferred follow-ups (not in this commit): triplicated MAP_POPUP_MAX_WIDTH_PX across Python/TS/export JS; issue-led module docstrings trim.

jimchurches and others added 4 commits June 1, 2026 12:29
…lts.py

Extend generate_basemap_assets.py to emit TS, CSS, and export JS constants
from MAP_POPUP_MAX_WIDTH_PX; HTML export concatenates the generated snippet;
CI --check covers all generated map assets.

Refs: #265
Co-authored-by: Cursor <cursoragent@cursor.com>
Replace issue-led module and helper docstrings in app orchestration,
rankings, country, yearly summary, bird families, and map sidebar UI
with behaviour-focused descriptions for new contributors.

Refs: #264
Co-authored-by: Cursor <cursoragent@cursor.com>
Complete the docstring hygiene pass across orchestration, caches, settings,
theme, constants, landing/data loading, maintenance, and defaults inline
comments so behaviour is documented without (refs #NN) issue ledgers.

Refs: #264
Co-authored-by: Cursor <cursoragent@cursor.com>
@jimchurches
Copy link
Copy Markdown
Owner Author

Docstring hygiene (release branch)

Two commits on release-2026-06-01-final-review:

  1. 545e4c2b — Core tab modules: app.py, rankings, country, yearly summary, bird families, app_map_ui.py
  2. Latest — Remaining Streamlit package: orchestration, caches, settings, theme, constants, landing, maintenance, perf, defaults comments

Goal: Describe what/why in docstrings; drop (refs #NN) from module/helper docs (issue history stays in git/PRs).

Scope: All explorer/app/streamlit/ — no remaining refs # in that tree.

Checks: ruff check explorer/ + pytest tests/ -q passed on each commit.

jimchurches and others added 2 commits June 1, 2026 12:59
Refs: #264
Co-authored-by: Cursor <cursoragent@cursor.com>
Refs: #264
Co-authored-by: Cursor <cursoragent@cursor.com>
@jimchurches
Copy link
Copy Markdown
Owner Author

Release hygiene (branch release-2026-06-01-final-review)

Follow-up doc/comment cleanup on the release review branch — no behaviour changes.

Commits

  • 09affa62docs: Rewrite presentation CSS comments without issue refs (checklist_stats_display, rankings_display, maintenance_display)
  • 841be4f3docs: Remove issue refs from presentation module docstrings (checklist_stats_display, maintenance_display, rankings_display, stats_html_helpers, design_map_preview, leaflet_map_export.js)

Earlier on same branch

  • Streamlit module docstrings (no (refs #NN))
  • Centralized defaults / naming pass
  • Build version 2026-06-01

Quality

  • ruff check explorer/ — pass
  • pytest tests/ -q — 635 passed, 7 skipped

Refs: #264
Co-authored-by: Cursor <cursoragent@cursor.com>
@jimchurches
Copy link
Copy Markdown
Owner Author

Hygiene (release-2026-06-01-final-review): moved main-tab hover green (#156248) from streamlit_theme.py to THEME_MAIN_TAB_HOVER_HEX in defaults.py alongside THEME_PRIMARY_HEX and other theme tokens — no visual change, just one place for tweakables.

Commit: `refactor: Centralize main tab hover colour in defaults`

Refs: #264
Co-authored-by: Cursor <cursoragent@cursor.com>
@jimchurches
Copy link
Copy Markdown
Owner Author

Hygiene: _filter_taxonomy_for_coverage parameter renamed taxtaxonomy_frame in bird_families_streamlit_html.py (matches naming rubric; no behaviour change).

Refs: #264
Co-authored-by: Cursor <cursoragent@cursor.com>
@jimchurches
Copy link
Copy Markdown
Owner Author

Hygiene: cleared 8 pre-existing F401 unused imports in test files (test_all_locations_map_component, test_design_map_preview, test_map_renderer, test_streamlit_map_prep, test_taxonomy_bundle) — ruff check tests/ now clean; no test behaviour change.

Refs: #264
Co-authored-by: Cursor <cursoragent@cursor.com>
@jimchurches
Copy link
Copy Markdown
Owner Author

Final review hygiene: theme inactive/header hex moved to `defaults.py`; `streamlit_theme.py` issue refs removed; `taxonomy_frame` naming in Bird Families coverage; test docstrings/comments cleaned (kept `refs #189` on release-version tests only). No behaviour change.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Enhancement] Unify MAP_POPUP_MAX_WIDTH_PX across Python, React, and export JS

1 participant