Invite someone straight to a folder, and finish sharing its key unasked #186
No reviewers
Labels
No labels
area:docs
area:identity
area:ops
area:plugin
area:server
channel:community
channel:direct
channel:owned
channel:press
channel:social
e2ee-constrained
gate:at-ga
gate:pre-ga
marketing
parity
relay:absent
relay:planned
relay:requested
relay:supported
risk:additive
risk:contract
risk:none
usability
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set
Reference
Nectenda/nectenda!186
Loading…
Reference in a new issue
No description provided.
Delete branch "worktree-nec-124-invite-to-folder"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Task: NEC-124 — https://projectron.nerchure.com/tasks/124
Plugin half of "invite straight to a folder" (server half: #185). Collaborating took an organisation invitation, a wait, and a second trip to the members dialog; the second step was the one people missed.
key-grants.ts) — owner devices wrap the folder key for members still waiting for one: cached keys only, never a prompt, only the missing generations, 409 counts as done.known-keys.ts) — a collaborator whose key differs from the one used for them before is refused with a lasting warning. The people list shows "not compared yet" or "compared ", with Mark as compared. Manual adds go through the same check. This is stricter than before.awaiting-folders.ts) — a new folder is offered once, after its key has arrived. Vaults that were already signed in record what is listed on their first pass rather than offering it.add-location.ts) — adding without choosing a location never adopts a folder that already holds notes; it uses<name> (shared)instead. Choosing such a folder by hand asks first. Previously, same-named local notes were uploaded to everyone.security-model.md(automatic sharing, trust on first use and its first-sighting caveat, checklist),sync-limitations.md(add location settled; waiting for an owner's device, open by design),manual-testing.md(13b, mobile).Tests:
key-grants,awaiting-folders(location, routing),quick-map,commands.invite-to-folder.test.ts: the full journey in two real Obsidian vaults, and refusal of a changed key.commands.test.ts, which is fixed here.Changelog
Invite someone to a shared folder by email in one step: they get the folder as soon as they join, and your vault shares its key automatically.
🤖 Generated with Claude Code
https://claude.ai/code/session_01NnpsVLx9NmMG2N2nJnA8mR
Collaborating on a folder took an organisation invitation, a wait, and a second trip to the members dialog; the second step was the one people missed. Now one action does it, from the folder menu, the palette, the organisation page or the people dialog: - Someone already in the organisation is added and the key wrapped now. - Someone new gets a folder invitation (the shard claims it when they join) plus the organisation invitation. - An owner's device wraps the folder key for members still waiting on one (key-grants.ts): owner devices only, keys already open only, never a prompt. A collaborator whose key differs from the one this vault used for them before is refused, with a warning that stays on screen (known-keys.ts). The people list shows each key as compared or not, with "Mark as compared". - The invitee's vault offers a newly shared folder once its key has arrived ("Ann shared a folder with you" / Add to this vault). - Adding a shared folder without choosing a location never adopts a vault folder that already holds notes; it lands in "<name> (shared)". Choosing one by hand asks first. Before this, same-named local notes were uploaded to everyone in the shared folder. security-model.md, sync-limitations.md and manual-testing.md say what changed. The e2e journey has its own file, because identity.test.ts stops its identity service part-way; both new tests were mutation-checked (refusal and location rule disabled: both fail). Task: NEC-124 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01NnpsVLx9NmMG2N2nJnA8mR