🗺️

Best on a larger screen

occurd. uses a polygon drawing tool and interactive map that need a tablet or desktop to work properly.

occurd.
by

Rutherford ecology v4.06

| | Powered by GBIF & OpenStreetMap  ·  Feedback  ·  ☕ Buy me a coffee
← Click here to start drawing
Species checklist
Highlighting: clear
Taxon group
📝 Changelog — occurd.
v4.06 May 2026
  • Tree of Life — species common names: NZOR first, falls back to GBIF vernacular name
  • Tree of Life — loading phrase appears for minimum 2 seconds on every taxon click, even when cached
  • Tree of Life — empty columns left of Kingdom now show blank header instead of positional label
  • Tree of Life — loading phrases cycle every 2 seconds with fade transition while waiting
  • Tree of Life — taxonomy children now cached to localStorage (7-day TTL); repeat visits are fast
  • Tree of Life — loading phrase only shown during search jump, not on open or column click
  • Tree of Life — loading phrases stay visible for a minimum of 2 seconds
  • Tree of Life — loading phrase centred in header; refreshes on every new load
  • Tree of Life — expanded loading phrase pool to 45 phrases
  • Vernacular name filters — allow Māori macron vowels (ā ē ī ō ū) through the non-ASCII filter; é in "Ciervo Ibérico" is a different Unicode character so it is still blocked
v3.91b May 2026
  • Species checklist — require ASCII in null-language vernacular name fallbacks; fixes foreign names (e.g. "Ciervo Ibérico") slipping through when GBIF stores them without a language tag
v3.90b May 2026
  • Species checklist — skip non-ASCII vernacular names from GBIF occurrence records (e.g. Spanish "Ciervo Ibérico" no longer shown for red deer)
v3.89b May 2026
  • Tree of Life — sort children by rank hierarchy first (Phylum before Family before Genus) so incertae sedis placements in GBIF no longer cause wrong column headers on Plantae, Fungi etc.
v3.88b May 2026
  • Tree of Life — NZ occurrence filter cached to localStorage with 30-day TTL; repeat visits skip the GBIF facet queries entirely for any taxa already browsed
v3.87b May 2026
  • Tree of Life — fix "No sub-taxa found" after leaving and re-entering; replaced empty-array sentinel with in-flight promise tracking so a mid-fetch exit no longer poisons the cache
v3.86b May 2026
  • Tree of Life — taxa names appear after first page of GBIF results; remaining pages load silently in background so large families (e.g. Animalia phyla) no longer block the column
v3.85b May 2026
  • Tree of Life — kingdoms now render instantly on open; NZ counts and filtering load in background so Animalia is clickable immediately
v3.84b May 2026
  • Tree of Life — reverted global polygon mode; Tree of Life remains NZ-only where NZOR data makes it genuinely useful
v3.83b May 2026
  • Tree of Life — now works globally; when a polygon is drawn outside NZ a "Tree of life" button appears and occurrence counts use the polygon geometry instead of country=NZ; NZ behaviour unchanged
v3.82b May 2026
  • Tree of Life — paginate GBIF children fetches; large families (e.g. Muridae) now load all genera instead of stopping at 200
v3.81b May 2026
  • NZ species search / Tree of Life gate — added zoomend listener and a 2.5s fallback check; fixes features not appearing when map starts off-centre due to VPN geolocation
v3.80b May 2026
  • Favicon — fixed O as a punched hole in the pin so curves match; deployed to production
v3.78b May 2026
  • Tree of Life — fix crash when a GBIF fetch fails mid-session; undefined children no longer cause a TypeError in nzFilterAndCount or jumpToTaxon, breaking subsequent navigation
v3.77b May 2026
  • Tree of Life search — removed incorrect rank guessing for NZOR results; single-word names (families, orders, classes etc.) no longer wrongly labelled as "Genus"
v3.76b May 2026
  • Tree of Life — reverted to standard ranks only (Kingdom → Phylum → Class → Order → Family → Genus → Species); intermediate sub-ranks removed for now
  • Renamed kakapo.js → projects.js (file was still named after the deleted Kākāpō project)
v3.75b May 2026
  • Tree of Life — failed GBIF fetches no longer cached as empty; clicking the taxon again retries the request
v3.74b May 2026
  • Tree of Life — wider default column layout (1160px base); all columns now auto-widen dynamically to fit long names, not just the species column
v3.73b May 2026
  • Tree of Life — expanded rank support: Division, Subdivision, Superfamily, Infrafamily, Superorder, Infraorder, Parvorder, Superclass, Infraclass, Subtribe and Infraphylum now recognised and navigable
v3.72b May 2026
  • First-time onboarding tour — 5-step spotlight walkthrough for new users; shows once then remembers via localStorage
v3.71b May 2026
  • Taxon group headers — chevron (▼/▶) added to show expand/collapse state; rotates on toggle
v3.70b May 2026
  • Taxon group toggle — header stays visible when group is off; only species rows collapse; click again to expand
v3.69b May 2026
  • Taxon group headers in species list are now clickable toggles — click to show/hide that group's records on the map; header dims when off
  • Filter chips section removed — filtering is now done directly from the species list
v3.68b May 2026
  • Species list — coloured dot added to each taxon group header; map legend removed (redundant)
v3.67b May 2026
  • Large fetches — added 120 ms inter-page delay to avoid GBIF rate limiting on big samples; increased per-page timeout from 20 s to 30 s for deep pagination
v3.66b May 2026
  • Removed Kākāpō project — GBIF only holds NZ records for this species; Projects dropdown now contains QEII only
v3.65b May 2026
  • Kākāpō — hardcoded GBIF backbone taxon key, removed species/match step; institution markers made more visible (darker grey, higher opacity)
v3.64b May 2026
  • Projects dropdown — project names (QEII, Kākāpō) stay fixed; only the icon changes to show lock/loading/active/error state
v3.63b May 2026
  • Removed QEII lock button from sidebar footer — QEII is now activated exclusively via the Projects dropdown
v3.62b May 2026
  • Projects dropdown — removed access keys from visible labels; projects now show as "QEII" and "Kākāpō" only
v3.61b May 2026
  • Projects dropdown — fixed invisible item text (var(--text1) was undefined; corrected to var(--text))
v3.60b May 2026
  • Taxon group legend moved from bottom-right to bottom-left of map
v3.59b May 2026
  • Renamed "Clients" dropdown to "Projects" — button, IDs, and all references updated
v3.58b May 2026
  • Projects dropdown — new 🔑 Projects button in the header unlocks project-specific layers: QEII Perpetuity (key: perpetuity) and Kākāpō · Whenuahou (key: whenuahou)
  • Kākāpō project — fetches all global Strigops habroptilus records from GBIF; records with field coordinates are plotted in green; records without coordinates are placed at the publishing organisation's registered location (grey marker) using the GBIF organisation API; dropdown shows total count and how many are institution-placed
  • QEII key updated from 'qeii' to 'perpetuity' (both the sidebar footer button and the new Projects dropdown)
v3.57b May 2026
  • Tree of life: fix breadcrumb duplicating full ancestry after a search jump — jumpAncestry now shown alone (Kingdom › … › Parent › Target) without also appending all selNodes
  • Tree of life: search dropdown now shows NZOR/NVS results immediately (no network wait), then updates with GBIF results as they arrive — first suggestions appear in milliseconds instead of 2–3 seconds
  • Tree of life: increase auto-widen overhead allowance for species name padding/badges
v3.56b May 2026
  • Tree of life: Species column gets double width by default (flex:2); modal also auto-widens to fit the longest species name after each render using canvas text measurement; resets to default width when the panel is closed
v3.55b May 2026
  • Tree of life: two-phase progressive loading — taxonomy columns appear immediately (fast taxonomy API), then NZ occurrence counts and filtering update each column in the background as they arrive; removes the 15–20 second wait on first search
  • Second searches are instant: taxonomy is cached after the first load, and NZ counts are cached per taxon for the session
v3.54b May 2026
  • Tree of life: expanded to 7 Miller columns (Kingdom → Phylum → Class → Order → Family → Genus → Species) — the full Linnean hierarchy is now always visible in a single view with no panning required
  • Tree of life: search results now show inferred rank badges (Species, Genus, Subspecies) for NZOR and NVS results that don't carry rank metadata
  • Modal widened to 980px to accommodate 7 columns
v3.53b May 2026
  • Tree of life: fix "No sub-taxa found" for families like Muridae whose direct GBIF taxonomy children are Subfamily/Tribe intermediate ranks — these don't appear in GBIF occurrence facets, so the NZ filter was incorrectly wiping out the entire child list; now falls back to unfiltered children when filtering produces zero results
  • Tree of life: increase child fetch limit from 100 to 200 to handle families with many intermediate-rank children
v3.52b May 2026
  • Tree of life: expanded from 3 to 5 Miller columns — fixes taxa with intermediate ranks (Subfamily, Tribe, Suborder etc.) that were previously stuck with no Family column visible; Rattus rattus and similar deep-hierarchy species now navigate correctly
v3.51b May 2026
  • Tree of life: fix drill-up past the first level — was using index comparison to detect re-clicking the selected item, which drifts after a drillUp; now uses node key comparison so every level works reliably
  • Tree of life: clicking the already-selected item in col 0 drills up through the full taxonomy all the way to kingdom
v3.45b May 2026
  • Record type filters — replace the single "Exclude eDNA" checkbox with four inclusion filters: Observations (on by default), Preserved specimens (on by default), Fossils (off by default), and eDNA (off by default); uncheck all but Fossils to fetch only fossil records
v3.41b May 2026
  • Tree of life search jump now positions correctly — searching a species lands with the family in col 0 (highlighted), genus in col 1 (highlighted), and species in col 2 (highlighted); previously the genus was in col 0 with no family context
v3.40b May 2026
  • Tree of life column items no longer show a rank badge per row — the column header already shows the rank, so showing it on every item was redundant and made columns cramped
  • Tree of life is hidden and unavailable on small screens (under 700px)
v3.39b May 2026
  • NVS code search — type a National Vegetation Survey code (e.g. PIPCRA, ACASP) in the NZ species search or the Tree of life to find the matching species; codes and their preferred synonyms are resolved from the NVS dataset and matched to GBIF; results show a blue NVS badge
v3.38b May 2026
  • Tree of life now shows NZ occurrence counts alongside each taxon — e.g. Rhodophyceae (132) or Animalia (1.2k) — so you can see at a glance which branches have the most NZ records; counts come from the same GBIF facet query already used for NZ filtering
v3.36b May 2026
  • Sidebar tidied: "No polygons loaded" text removed; "Exclude eDNA records" moved up to sit directly below Taxon Groups; "Browse taxonomy tree" is now a small inline link beside the NZ species search label; "Notes for nerds" renamed to "Nerd notes"
v3.35b May 2026
  • Sidebar declutter: "Clear all polygons" is now a small text link rather than a button; "NZ species search" label simplified; taxonomy browser link is now hidden unless the map is centred over New Zealand
v3.34b May 2026
  • Taxonomy browser search ranking: exact matches now sort to the top — "Whau" will appear above "Whauwhaupaku", "Whauama" etc.
v3.33b May 2026
  • Taxonomy browser search jump now positions the result correctly across all three columns — col 0 shows the grandparent's children (e.g. genera in the family), col 1 shows the direct parent's children (e.g. species in the genus) with the target selected, col 2 shows the target's own children (subspecies etc.); previously the target landed alone in col 0
v3.32b May 2026
  • Taxonomy browser search now queries three sources in parallel: NZOR (common/Māori names), GBIF backbone full-text search (catches vernacular names not held in NZOR, e.g. plain "mahoe"), and GBIF backbone suggest (scientific names)
v3.31b May 2026
  • Taxonomy browser column headers now reflect the actual rank of the taxa shown (e.g. Species, Genus, Family) rather than fixed position labels like Kingdom / Phylum
  • NZOR common name search now returns up to 20 results (was 10) to reduce the chance of missing plain common names like "mahoe" when compound forms appear first
v3.30b May 2026
  • Fix taxonomy browser search jump — GBIF parents API returns ancestors kingdom-first, so direct parent is now correctly taken from the end of the array; previously the kingdom was used as the parent, filling col 0 with phyla instead of the taxon's actual siblings
v3.29b May 2026
  • Taxonomy browser search — results now ranked by relevance: vernacular and common names appear before scientific name matches, and names that start with the search term rank above names that only contain it
v3.28b May 2026
  • Taxonomy browser search bar — type a scientific name, common name or Māori name to jump directly to any taxon; GBIF backbone and NZOR are searched in parallel; selecting a result loads that taxon's siblings into the browser and shows its children, with the full ancestry path shown in the breadcrumb
v3.27b May 2026
  • Taxonomy browser now filters to NZ-present taxa only — each column load runs a parallel GBIF occurrence facet query (country=NZ) alongside the taxonomy children fetch, so only groups with actual NZ records appear; kingdoms, phyla, classes, orders and families with no NZ occurrences are hidden
v3.26b May 2026
  • Taxonomy browser rebuilt as Miller columns — three scrollable side-by-side panels replace the sunburst; click to drill down through Kingdom › Phylum › Class › Order › Family, with a Back button and breadcrumb trail; selected taxon at any rank added to species basket
v3.25b May 2026
  • Fix "click here to start drawing" hint — now positions dynamically against the actual draw button rather than a fixed offset, so it stays correct regardless of how many controls are stacked in the top-left corner
v3.24b May 2026
  • Taxonomy browser — new sunburst diagram for exploring and selecting any taxonomic rank (Kingdom down to Genus); opens via "Browse taxonomy tree" link below the taxon groups filter; 3 visible rings with drill-in navigation and breadcrumb trail; selected taxon added directly to species basket
v3.23b May 2026
  • Fix genus taxon key lookup — now validates GBIF returns a genus-rank match (not a higher group), with backbone suggest API as fallback; prevents inflated record counts when genus name matched a family or order
v3.22b May 2026
  • Genus search — when a single-word query matches the start of two or more NZ scientific names, an "all species in this genus" option appears at the top of the dropdown (e.g. type "blechnum" or "senecio"); selecting it adds an "all Blechnum" entry to the species basket and fetches every species in that genus across your polygon
v3.21b May 2026
  • Polygon list split into two groups — when both geometry polygons and species entries are present, they appear under separate "Polygons" and "Species" headings so it is clear that species entries search across all polygons rather than being tied to a specific one
v3.20b May 2026
  • Layer control (Map / Greyscale / Satellite) moved to top-left — it was being covered by the species checklist due to a CSS stacking context boundary; top-left is never affected by the checklist sliding in from the right
v3.19b May 2026
  • Species basket — selecting a species from the NZ search dropdown adds it as a virtual polygon entry (blue, 🔍) rather than setting a one-time filter; add as many species as you like before fetching; each species entry fetches only that taxon within your drawn polygon(s); close the entry to drop its records just like a geometry polygon; the search field clears after each selection ready for the next species
v3.18b May 2026
  • Species checklist no longer covers the map controls — Leaflet's layer switcher and zoom buttons slide left when the checklist panel opens, then slide back when it closes
v3.17b May 2026
  • NZ vernacular & Māori names in species checklist — when the map is centred in New Zealand, common and Māori names from NZTCS and NZOR replace generic GBIF vernacular names in the species list (e.g. kererū · New Zealand pigeon, tūī, kea); NZOR data loads silently in the background as soon as the map enters NZ bounds
v3.16b May 2026
  • Species search guard — if you've typed in the species field but haven't selected from the dropdown, clicking Fetch now shows a warning and shakes the input rather than silently fetching all taxa
v3.09 May 2026
  • Species search — type a name in the new field (between taxon groups and exclude eDNA) to search GBIF for matching species; select from the autocomplete dropdown; when a species is selected it overrides the taxon group filter and fetches only that taxon across your polygon; clear with ×
v3.08 May 2026
  • More aggressive fetch retry — up to 5 attempts with exponential backoff (1 s → 2 s → 4 s → 8 s → 12 s); added 20-second request timeout per attempt so a hung connection is cut and retried rather than stalling indefinitely
v3.07 May 2026
  • Better fetch retry — "Failed to fetch" errors caused by the connection dropping mid-response now retry up to 3 times (with status showing "retrying attempt N/3") before giving up; previously the app failed immediately
v3.05 May 2026
  • Deleting a polygon no longer wipes records from other polygons — only that polygon's records are removed and the map, checklist and metrics update in place
v3.04 May 2026
  • Perpetuity layer is now key-locked — clicking 🔒 perpetuity prompts for a key; entering the correct key unlocks the layer for the session and the lock opens (🔓)
v3.03 May 2026
  • Drawing around KMZ polygons now keeps the drawn polygon in the list alongside the selected KMZ polygons — consistent with QEII behaviour; delete either polygon if you only want the other
v3.01 May 2026
  • Perpetuity (QEII) button moved to sidebar footer — subtle text button between © Rutherford Ecology and Changelog; labelled "🔒 perpetuity" with a small "qeii" key; turns green when active
  • Draw-to-select QEII covenants — while perpetuity layer is on, drawing a polygon around or overlapping covenant polygons automatically adds those covenants to your polygon list, just like importing a KML
v3.00 May 2026
  • QEII National Trust covenant layer — overlays all QEII covenant polygons in the current map view; click a polygon to see covenant number, type, area (ha), registration date and territorial authority; layer refreshes automatically on pan and zoom
v2.97 May 2026
  • Removed establishment means filter (Native/Introduced/Naturalised) — GBIF data coverage for this field is too patchy to be useful as a fetch filter; establishmentMeans is still included in CSV and GeoJSON exports where populated
v2.92 May 2026
  • Added establishmentMeans field to all occurrence exports (CSV, GeoJSON) — shows Native, Introduced, Naturalised etc. where populated by the source dataset
v2.91 May 2026
  • Notes for nerds link in NZTCS modal now opens the nerds panel on top rather than replacing it — NZTCS modal stays open underneath so you can still accept and continue
  • Added iNaturalist geoprivacy section to Notes for nerds panel explaining the 0.2° × 0.2° obscuring box and its size at NZ latitudes
v2.89 May 2026
  • Buffer polygons labelled as "Polygon name + Nkm buffer" (e.g. "Wetland + 1km buffer") — stacking buffers chains the labels
v2.88 May 2026
  • iNaturalist geoprivacy disclaimer — added to NZTCS beta modal and all download formats (CSV, GeoJSON, KML, checklist CSV) explaining that threatened/obscured species are snapped to a 0.2° × 0.2° grid square (~349–493 km² depending on latitude), so rare species near polygon boundaries may be missed or incorrectly included
  • Per-polygon buffer — click 1/2/5/10 km on any polygon to add a new buffered polygon with its own independent species list
v2.83 May 2026
  • Fixed Reptilia filter — GBIF retired the Reptilia taxon key (358) in their 2022 Catalogue of Life update; now queries Squamata, Testudines, Crocodylia and Sphenodontia (tuatara) directly so geckos, skinks and tuatara come through correctly
v2.78 May 2026
  • Checklist opens automatically after each fetch — removed the manual toggle button; minimise with › and restore via the Checklist tab on the right edge of the map
v2.77 May 2026
  • Low-precision markers now have a light red ring to match the red warning theme
v2.76 May 2026
  • Low-precision markers (≥1.5 km uncertainty) now have a black ring instead of white — easier to distinguish from normal points at a glance
v2.75 May 2026
  • Fixed photo lightbox — close button event was wired before the element was in the DOM, crashing the expand function silently
  • NZTCS beta disclaimer now shows every time the button is clicked, not just the first time per session
v2.74 May 2026
  • Cancel now stops common-name lookup mid-way — previously the button had no effect once the name-lookup phase began
v2.73 May 2026
  • Photo expand button (⛶) — click to view any species or record photo full-screen in a lightbox overlay; press Escape or click outside to close
v2.72 May 2026
  • NZTCS relocks on each new search — button shows 🔒 until clicked; popup appears on first click per session, then unlocks directly on subsequent clicks
v2.71 May 2026
  • Low precision warning in record popup now shown in red
v2.70 May 2026
  • NZTCS beta popup now triggers when you click the NZTCS button, not automatically when results load
  • Clicking a threat category chip (NC, NE, NV etc.) now filters the map as well as the checklist
v2.69 May 2026
  • Switch social share image to JPEG (95% quality) — prevents Facebook recompressing the PNG and causing artefacts
v2.68 May 2026
  • NZTCS beta disclaimer now resets each session — popup shows once per browser session rather than once ever
v2.67 May 2026
  • Greyscale basemap option added to the layer control (top-right of map)
v2.66 May 2026
  • Polygon names are now editable — click the name in the polygon list to rename it
  • Exports (CSV, GeoJSON, KML) now include a polygon_name column showing which polygon each record came from
v2.65 May 2026
  • Fix contact email in NZTCS beta popup to rutherfordecology@gmail.com
v2.64 May 2026
  • NZTCS now auto-activates for NZ searches only — no password required
  • Beta disclaimer popup on first use — must be accepted before NZTCS badges appear
  • NZTCS button hidden for non-NZ searches
  • Once agreed, beta disclaimer not shown again (stored in browser)
v2.63 May 2026
  • Restore broken page logo images (occurd-logo.png, logo.png) accidentally overwritten by replace_all during og:image edits
v2.62 May 2026
  • Use custom medialogo.jpg as social media share image
v2.61 May 2026
  • New social-preview.png (1200×630) — compact version of full logo for Facebook/social link previews
v2.60 May 2026
  • Switch social media preview image to logo.png (green logo with icons and "by Rutherford ecology")
v2.58 May 2026
  • Fix og:url and og:image meta tag URLs to use correct capitalisation (Occurd) for Facebook/social media link previews
v2.57 May 2026
  • 🐚 badge on fossil specimen records, 📄 badge on preserved specimen (museum/herbarium) records — shown alongside the eDNA badge in both single and multi-species popups
v2.56 May 2026
  • Add "Exclude eDNA records" checkbox in fetch parameters — when ticked, MATERIAL_SAMPLE records are excluded at the GBIF query level so they never count against your record limit
v2.55 May 2026
  • eDNA filter in the taxon group panel — choose All, eDNA only, or Hide eDNA; row only appears when eDNA records are present in the results
v2.54 May 2026
  • Fix eDNA badge missing from multi-species popup record rows — the badge was only shown in single-record popups, not in the expanded species list
v2.53 May 2026
  • Removed Australian EPBC threatened species feature — taxonomic name divergence between GBIF and ALA made reliable matching impractical
v2.52 May 2026
  • Australian EPBC threatened species status — unlock with access code to see live Commonwealth conservation status badges (CE, E, V, CD, EW, Ex) fetched from the Atlas of Living Australia; filter checklist by threat category; status exported in CSV/checklist
  • NZTCS button hidden for Australian searches; EPBC button hidden for New Zealand searches — each system only activates in the region it applies to
v2.51 May 2026
  • eDNA badge shown in popup for environmental DNA records (GBIF basisOfRecord: MATERIAL_SAMPLE)
v2.50 May 2026
  • KMZ badge is now clickable — tap it after clearing polygons to re-open the selection panel without re-uploading
v2.49 May 2026
  • Clicking a species name in the map popup opens the iNaturalist taxa map for that species
v2.48 May 2026
  • Fix Plantae records with old backbone class names (e.g. Hamamelidae, Rosopsida) falling through to "Other" — any kingdom Plantae record now routes to Angiosperms as a fallback
v2.47 May 2026
  • NZTCS unlock no longer persists across page loads — each new instance starts locked
v2.46 May 2026
  • Fix NZTCS false positives: added missing GBIF taxon keys for kawakawa (Piper excelsum subsp. excelsum, Not Threatened) and Geniostoma ligustrifolium var. majus (NU) so records match the correct status instead of a threatened sibling subspecies
v2.45 May 2026
  • Reset NZTCS unlock password
v2.44 May 2026
  • Heatmap intensity increased — higher point weights, lower saturation threshold, and more visible base opacity
v2.43 May 2026
  • When GBIF rejects a polygon as invalid shape, automatically retries with its convex hull rather than stopping the whole fetch — remaining polygons continue to load
v2.42 May 2026
  • Clear all polygons no longer dismisses the loaded KMZ — the badge persists so you can draw a new area and re-select. Use × on the badge to unload the KMZ.
v2.41 May 2026
  • KMZ polygons with keyholes (inner boundary rings) now send proper WKT with holes to GBIF — records within excluded areas like building footprints are correctly omitted from results
v2.40 May 2026
  • Fixed "Invalid shape in WKT" for KMZ polygons with holes (keyholes) — inner boundary rings are now ignored when parsing, so only the outer boundary is sent to GBIF
v2.39 May 2026
  • Fixed "Invalid shape in WKT" for self-intersecting KMZ polygons — now detects and splits them into valid sub-polygons before sending to GBIF
v2.38 May 2026
  • KMZ file stays loaded in memory after a search — a badge shows the polygon count and filename so you can draw a new study area and re-select without re-uploading. × on the badge clears it.
v2.37 May 2026
  • Fixed GBIF invalid WKT for KMZ polygons — now strips all trailing closure duplicates and deduplicates any consecutive identical vertices in the ring (handles KML files that repeat the start vertex)
v2.36 May 2026
  • Robust fix for KMZ polygon duplicate vertex — use epsilon comparison when stripping KML closing point to handle floating-point precision edge cases
v2.35 May 2026
  • Fixed GBIF "Invalid shape in WKT" error caused by KMZ polygons — KML LinearRings include a closing duplicate vertex which was producing two identical consecutive points in the WKT, now stripped before sending
v2.34 May 2026
  • Drawing a polygon while KMZ browse is open now automatically adds all overlapping KMZ polygons and begins clipping immediately — no need to click "Add selected"
v2.33 May 2026
  • Drawing a polygon while KMZ browse mode is open now immediately auto-selects all KMZ polygons that overlap the drawn area, with tick marks appearing in the list
v2.32 May 2026
  • Fixed clip-to-drawn-polygon — now queries GBIF using the KMZ polygon shapes, then filters returned records client-side using point-in-polygon against the drawn study area. More reliable than the previous intersection geometry approach.
v2.31 May 2026
  • Drawn study area is now kept on the map as a faint dashed reference outline after clipping — visible for context but not included in the GBIF query. Cleared with "Clear all polygons".
v2.30 May 2026
  • Fixed clip-to-drawn-polygon — drawn study area is now removed when intersection polygons are added, so GBIF is only queried within the clipped shapes (previously the full drawn area was also included, giving unclipped results)
  • Original drawn polygon is restored if no intersections are found
v2.29 May 2026
  • Traditional Knowledge labels — occurrence popups now show a 🏷️ link to the Local Contexts community project when a record carries a local_contexts_project_id in its dynamic properties
v2.28 May 2026
  • Multi-polygon KML/KMZ support — large files with thousands of polygons now open in a browse panel instead of loading all at once
  • Spatial auto-selection — polygons from the file that overlap your drawn study area are pre-selected automatically
  • Clip to drawn polygon option — fetch GBIF data only within the intersection of a selected KMZ polygon and your drawn area
  • Re-select from drawn polygon button to refresh the spatial selection after adjusting your study area
v2.27 May 2026
  • Fixed antimeridian polygon queries — polygons crossing the 180° line are now split into two sub-polygons and sent as MULTIPOLYGON, avoiding GBIF's winding-order check failures for cross-antimeridian geometry
v2.25 May 2026
  • Fixed polygon rejection for areas east of New Zealand — antimeridian-crossing polygons now always use positive-extended longitudes (e.g. 181°) which GBIF requires
v2.24 May 2026
  • Source links (iNaturalist, eBird, Xeno-canto, museum collections) now appear in the species checklist record rows, not just in map popups
  • eBird checklist-based record IDs (older records) now generate working links to the eBird checklist page
  • Direct source links replace GBIF link where available — GBIF shown as fallback only
  • Error messages from GBIF now shown verbatim to help diagnose query issues
  • Fixed polygon winding order bug that caused some valid polygons to be rejected by the GBIF API
v1.98 May 2026
  • Fish detection overhaul — added ~25 modern fish orders split from Perciformes in current taxonomy (gobiiformes, carangiformes, labriformes, scombriformes and more), plus class-based fallback for records with missing order data
  • Species matching improvements — GBIF taxon keys now used for primary lookup, avoiding mismatches from genus reclassifications and synonyms
  • Classification data columns added to CSV exports (occurrences and species list)
  • Map/satellite layer control repositioned to avoid overlap with checklist panel
  • Checklist button now resets correctly when a new polygon is drawn
  • Conservation status feature locks on tab close rather than persisting across browser sessions
v1.90 May 2026
  • Record cap raised to 100,000 (was 10,000) — large areas and broad filters now load full datasets
  • Coordinate precision warning threshold refined — low-precision records flagged at >1.5 km uncertainty
  • Species richness indicator added to results metrics
  • Common name detection improved — API-preferred names take priority, with fallback voting across occurrence records; foreign-language names now correctly excluded for English-speaking regions
  • Record-level photos — where available, view the photo attached to an individual occurrence record and toggle back to the species photo
v1.75 May 2026
  • KML and KMZ file import — drop a file onto the map to load polygons directly
  • Multiple polygon support — draw or import several areas and fetch all at once
  • KML export added alongside CSV and GeoJSON
  • Species checklist — click any species to highlight its records on the map; photos load from iNaturalist
  • Taxon group filter chips added to results view
v1.62 May 2026
  • Pacific island fix — Samoa, Tonga, Fiji and other near-antimeridian locations now return and display results correctly
  • Photo gallery — browse multiple iNaturalist photos per species using ‹ › buttons below the image
  • Draw distance labels — segment lengths appear on each side as you draw a polygon, with a live label tracking the current segment
  • Partial results on network error — if a fetch fails mid-way, records already loaded are shown with a warning rather than discarded
  • Automatic fetch retry — transient network errors are retried up to 3 times before failing
  • Common name fix — German compound animal names (e.g. "Bisamratte") were being misclassified as English and are now correctly excluded
v1.15 May 2026
  • Mobile layout overhaul — sticky header, map-first scroll order, draw buttons (undo/cancel) now work reliably on touch
  • Fetch button converts to Cancel button during active fetch
  • Hard 10,000 record limit — fetch aborts early if result set is too large
  • Fixed Mammalia fetch filter (was silently returning zero records due to wrong taxon key)
  • Portrait photos no longer cropped — tall images scale to fit
v1.0 May 2026
Initial release.