Locks: permission-aware Unlock in the row menu (#396) #399

Merged
Cordy merged 8 commits from lock-menu into main 2026-09-02 20:18:01 +00:00
Owner

Implements #396 (deferred L8 from #315).

  • Listings now carry spaceOwner once per response (resolved via the existing spaceOwnerCached, advisory only).
  • Client captures its own username at boot (meName from /api/v1/me; feat.admin already existed) and the current listing's space owner.
  • Row menu on a locked row is now honest: the holder gets Unlock; admins and the owning space owner get a danger-styled Break lock (distinct label, i18n ×4, so nobody breaks a colleague's lock thinking it was their own); everyone else gets no entry — the chip and tooltip already explain the state.
  • Folder locking (#395) is likewise only offered to the actual space owner now, instead of optimistically to every space member.
  • No server-side permission changes: the matrix shipped in #393 remains the enforcer and the 403 path the backstop.

Closes #396.

Implements #396 (deferred L8 from #315). - Listings now carry `spaceOwner` once per response (resolved via the existing `spaceOwnerCached`, advisory only). - Client captures its own username at boot (`meName` from `/api/v1/me`; `feat.admin` already existed) and the current listing's space owner. - Row menu on a locked row is now honest: the holder gets **Unlock**; admins and the owning space owner get a danger-styled **Break lock** (distinct label, i18n ×4, so nobody breaks a colleague's lock thinking it was their own); everyone else gets no entry — the chip and tooltip already explain the state. - Folder locking (#395) is likewise only offered to the actual space owner now, instead of optimistically to every space member. - No server-side permission changes: the matrix shipped in #393 remains the enforcer and the 403 path the backstop. Closes #396.
Cordy merged commit 7ae97be642 into main 2026-09-02 20:18:01 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Cordy/Cairn#399
No description provided.