Files
pad/internal/collections
xarmian 973887d5dd fix: comprehensive collection visibility enforcement
Close all identified bypass paths in the collection visibility system:

HIGH:
- Add requireItemVisible check to all 15+ item-by-slug handlers (get,
  update, delete, restore, move, children, progress, activity, versions,
  timeline, comments, links)
- Filter incremental sync (GET /changes) by visible collections with
  proper error handling for deleted item lookups
- Fix search to fail closed on visibility errors instead of removing
  the collection filter; apply per-workspace filtering in multi-workspace
  search path
- Empty CollectionIDs (non-nil but len 0) now returns zero results in
  ListItems and Search instead of skipping the filter
- Filter returned item links by linked item visibility; require target
  item visibility before creating links
- Block moving items into hidden collections
- Add visibility checks to comment-by-ID routes (delete, reply,
  add/remove reaction)

MEDIUM:
- SSE events for replies and reactions now include collection slug so
  visibility filtering can scope them; fail closed on visibility error
- Parent/plan resolution in create/update checks resolved parent is in
  a visible collection
- Progress endpoints compute from visible children only when user has
  restricted access
- Role board reorder checks item visibility before allowing sort changes
- Parent enrichment accepts optional visibility filter to hide parents
  from hidden collections
- Add IsSystem: true to Conventions and Playbooks in defaults.go

LOW:
- Child listing handles visibility lookup errors instead of failing open
- GetDeletedItemsWithCollection returns proper errors instead of
  swallowing them
- SetMemberCollectionAccess wrapped in transaction with workspace
  validation for collection IDs
2026-04-11 02:18:36 +00:00
..
2026-03-26 01:52:36 +00:00