Part of the team-ux initiative (brainstorm 2026-07-24).
Relates: #41.
Problem
There is no "share this vault" action. A vault becomes shared as a side effect of inviting a member from its Members page: handlePrivateAdd in MembersPage.tsx silently createTeam(vault.name), links it, initTeamVaultKey, and converts the private vault into a team/cloud vault — with no confirmation and no explanation. Users may not realize a "team" now exists or that their vault is now synced/shared.
There are also two divergent invite panels — InvitePanel (existing team vaults) and PrivateVaultInvitePanel (not-yet-team vaults) — with slightly different role sets; inconsistent.
Proposed reflow
- Add an explicit "Share" verb on a vault (sidebar context menu + Members page), opening a share sheet (Google-Docs-style, single mental model):
- People with access + their roles (add/change/remove in one place).
- Invite by in-app user search or email (one unified control, clear which is which).
- On first share of a private vault, an explicit moment: "Sharing turns <vault> into a team vault — it will sync to the cloud and become accessible to people you add. Continue?" — no more silent conversion.
- Unify
InvitePanel + PrivateVaultInvitePanel into one component with one role set, parameterized by whether the vault is already a team vault.
Decisions (brainstorm 2026-07-24)
- Explicit verb + explicit conversion consent — the private→team change is significant (cloud sync, key distribution) and must not be a hidden side effect.
- Single share surface reused everywhere a resource can be shared (aligns with the overall "one mental model" goal).
Still open
Part of the team-ux initiative (brainstorm 2026-07-24).
Relates: #41.
Problem
There is no "share this vault" action. A vault becomes shared as a side effect of inviting a member from its Members page:
handlePrivateAddinMembersPage.tsxsilentlycreateTeam(vault.name), links it,initTeamVaultKey, and converts the private vault into a team/cloud vault — with no confirmation and no explanation. Users may not realize a "team" now exists or that their vault is now synced/shared.There are also two divergent invite panels —
InvitePanel(existing team vaults) andPrivateVaultInvitePanel(not-yet-team vaults) — with slightly different role sets; inconsistent.Proposed reflow
InvitePanel+PrivateVaultInvitePanelinto one component with one role set, parameterized by whether the vault is already a team vault.Decisions (brainstorm 2026-07-24)
Still open