Wildbook 10.11 is largely about making photo-ID matching faster, more complete, and more robust to real world data. This release also opens a new door for programmatic access: from the "API Access" entry in your profile menu, you can issue a time-limited token that lets scripts, notebooks, or AI assistants read the encounters, individuals, and annotations you already have permission to see, and a companion "agent skill" endpoint teaches AI assistants how to help with re-ID curation in plain language. Underneath, 10.11 fixes a long list of issues (database connection leaks, a stuck indexing flag, a user-creation deadlock, an access-control leak) and everyday annoyances: bulk imports now reject corrupt images instead of stalling at 99%, import task pages stop jumping back to page one while they poll, search filters survive a page refresh, quicksearch puts exact matches first, and zoom and pan work again across gallery, match-result, and encounter images.
What's Changed
- Modified ToU with GCF feedback by @JasonWildMe in #1600
- Add wildbook_tasks_vectorMatch gauge + fix MiewID gauge metric-name collision by @JasonWildMe in #1602
- Count ml-service v2 detection tasks in /metrics detection gauges by @JasonWildMe in #1601
- fix(security): harden viewUsers OpenSearch ACL (revocation leak + second buggy writer) by @JasonWildMe in #1592
- Fix bulk-import task page polling stall across Import→Detection handoff by @JasonWildMe in #1605
- Localize sampling protocol label on React encounter page (#1522) by @JasonWildMe in #1607
- Fix UserCreate/Collaborate self-deadlock from setPermissionsNeeded in long transaction by @JasonWildMe in #1614
- feat(security): token-scoped read API — token issuance + canUserAccess + encounter/individual/annotation scoping (Artifacts B+D+Spec A; supersedes #1594) by @JasonWildMe in #1613
- Fix class import editOrg.jsp by @JasonWildMe in #1617
- fix(metrics): bound WBIA HTTP fetch so a hung remote can't kill /metrics by @JasonWildMe in #1618
- 1568 persist values in the react encounter search filter form by @jbmort in #1588
- Bulk import: reject corrupt images instead of stalling detection at 99% by @JasonWildMe in #1609
- feat(security): token-issuance UI + served agent-skill (server-verified step-up; anon agent skill) by @JasonWildMe in #1619
- Gallery View Zooming and Panning Feature by @Joey-Li0118 in #1596
- Restore mouse-wheel zoom on React match-results and encounter image viewers by @JasonWildMe in #1628
- Set acmId on manual annotations so they are matchable candidates by @JasonWildMe in #1634
- fix(ia): restore bulk-import Class-column links for legacy imports (#1624) by @JasonWildMe in #1625
- Fix v2 ml-service detections leaving iaClass/viewpoint null (unmatchable) by @JasonWildMe in #1632
- Converge Modified-Groth + I3S spot-matching onto main (supersedes #1610, #1611, #1630) by @JasonWildMe in #1636
- feat(header): add API Access link to JSP profile dropdown by @JasonWildMe in #1638
- refactor(api-access): read JWT keys from a dedicated apiAccessKeys.properties by @JasonWildMe in #1640
- i18n(header): localize profile dropdown menu items by @JasonWildMe in #1639
- Agent-skill suite: serve re-ID curation skills from a single /api/v3/agent-skill URL by @JasonWildMe in #1642
- fix(bulk-import): preserve table page across polling refreshes (#1637) by @JasonWildMe in #1641
- Bump annotation version when embeddings change so OpenSearch reindexes them into _source by @JasonWildMe in #1643
- Agent-skill docs: address live API feedback (token TTL, response shape, limits, time-decay) by @JasonWildMe in #1644
- Annotation index: add encounterDateMillis (denormalized sighting date) by @JasonWildMe in #1645
- media/resolve: explicit per-ID status (identified/unidentified/no_image/unavailable/error) by @JasonWildMe in #1646
- Token search: safe terms aggregations (+ explicit 400 for unsupported aggs) by @JasonWildMe in #1647
- Raise OpenSearch client socket timeout to 120s by @JasonWildMe in #1651
- Prevent indexingActive flag leak from wedging the OpenSearch reconciler by @JasonWildMe in #1652
- Relax metadata edit permissions on individuals.jsp by @JasonWildMe in #1653
- Fix quicksearch relevance to show exact matches first by @JasonWildMe in #1543
- fix github unit test failure by @naknomum in #1657
- Batch-load + cap match prospects; raise match socket timeout to 240s by @JasonWildMe in #1660
- Warm kNN match graph on startup so the first match isn't cold by @JasonWildMe in #1661
- PIE/WBIA target set: fetch ids only (_source:false) — fix large-set match timeout by @JasonWildMe in #1663
- Don't index non-candidate (trivial) annotations in OpenSearch by @JasonWildMe in #1658
- AcmIdBot: replace 24h query with WBIA reconciliation sweep of the matchable set by @JasonWildMe in #1659
- catchUpEmbeddings: only backfill embeddings for match candidates (matchAgainst=true) by @JasonWildMe in #1665
- Set 10.11 version by @JasonWildMe in #1666
- Close scan-result Shepherds in finally to stop DB connection leak by @JasonWildMe in #1667
- Close MediaAsset background/URL Shepherds in finally to stop connection leaks by @JasonWildMe in #1668
New Contributors
- @Joey-Li0118 made their first contribution in #1596
Full Changelog: 10.10.2...10.11