agnes-the-ai-analyst/app/web
ZdenekSrotyr e77f6067fa
feat(memory): bulk-edit batch bar on All Items tab (#129) (#325)
Follow-up to #62 / PR #126 — that PR shipped the bulk-edit batch bar
in the Review tab only and deferred the symmetric bar on All Items.
This adds it.

Scope:
- New .batch-bar block in #tab-all with selectAllAll, selectedCountAll,
  and the five bulk-edit buttons (Move to category / Move to domain /
  Add tag / Remove tag / Set audience).
- renderItemCard signature: third param widened from boolean isReview
  to a 'review' | 'all' | 'browse' mode enum so the Browse tab's
  call site can explicitly suppress the row checkbox. The earlier
  iteration of this PR widened the checkbox condition without
  auditing other callers, which left the Browse tab with orphan
  checkboxes that fired updateSelectionCount('all') against an
  invisible tab. Adversarial-review fix.
- updateSelectionCount('all') toggles the *BtnAll set; renderAllItems
  resets the header checkbox + recomputes counts on every re-render so
  stale selection state can't survive a list refresh.

Approve / Reject stay scoped to Review per the issue's scope decision
— status-change actions belong with the per-row action buttons or the
keyboard workflow in Review.

Existing JS plumbing already assumed tab-aware selection
(getSelectedIds(tab), toggleSelectAll(tab), openBulkEditModal reads
currentTab); the All-items DOM and the *BtnAll ID set are the only
additions.

Tests in tests/test_admin_memory_page_all_items_batch_bar.py:
- test_admin_page_renders_all_items_batch_bar — all five button IDs
  + the select-all checkbox + the toggleSelectAll('all') callback
  are present on the rendered admin page.
- test_all_items_bar_omits_approve_reject — Review-only Approve /
  Reject IDs do not appear with the All suffix (scope guard).
- test_browse_tab_omits_row_checkbox — regression guard for the
  Browse-tab orphan checkbox: confirms the call site uses 'browse'
  mode and renderItemCard omits the checkbox markup on that branch.

Closes #129.
2026-05-15 20:05:21 +02:00
..
static release(0.54.18): Curated Memory restructure + per-user Dismiss + bundled adversarial-review fixes (#316/#320/#322) (#324) 2026-05-15 18:51:05 +02:00
templates feat(memory): bulk-edit batch bar on All Items tab (#129) (#325) 2026-05-15 20:05:21 +02:00
__init__.py feat: add FastAPI server with auth, RBAC, and all API endpoints 2026-03-27 15:19:18 +01:00
connector_prompts.py feat(setup): configurable instance brand + connector setup overhaul (#268) 2026-05-12 17:10:08 +02:00
router.py release(0.54.18): Curated Memory restructure + per-user Dismiss + bundled adversarial-review fixes (#316/#320/#322) (#324) 2026-05-15 18:51:05 +02:00
setup_instructions.py feat(setup): configurable instance brand + connector setup overhaul (#268) 2026-05-12 17:10:08 +02:00