Vigil
← All news

v1.5.6 — abilities review queue: bulk-mark + kind/label filters

- **API**: `PATCH /api/abilities/labels/bulk` — applies the same label to many abilities in one transaction. Body: `{ability_ids: [...], label: "<label>", notes?: "..."}`. Returns…

Added — bulk apply + filter controls for the T-108 review queue

  • API: PATCH /api/abilities/labels/bulk — applies the same label to many abilities in one transaction. Body: {ability_ids: [...], label: "<label>", notes?: "..."}. Returns {updated: N, skipped_unknown_ids: [...]}. Rejects invalid labels with 422. Same locking semantics as the single-PATCH endpoint (source='user', confidence=1.0).
  • API: GET /api/abilities/review-queue now accepts ?kind=action|status|unknown and ?current_label=<label> filter params. current_label= (empty string) restricts to rows that have no label row at all yet.
  • UI (web/src/Abilities.jsx) — review queue now has:
    • kind / current label dropdowns above the list
    • Per-row checkbox + "Select all" / "Deselect all"
    • Bulk apply bar appears when any row is selected: pick a label from the dropdown, click "Apply to selected", all selected rows land with source=user
    • "Mark all kind=unknown as ignore" shortcut button (top-right of filter bar) — fetches up to 500 unknown-kind rows and one-shots them to ignore. Targets the ~196 boss/environmental rows the v0.12.0 live AC noted.
    • Selected rows render with a blue highlight; bulk-apply result reported inline with refresh.
  • 6 new tests in tests/test_ability_labels_api.py: kind filter restricts results, current_label filter incl. empty-string for no-label rows, bulk writes user-source, bulk skips unknown IDs without failing, bulk rejects invalid label, bulk empty-list is no-op. 366 tests passing (360 → 366).