Added
- A notification inbox collects everything a team throws at you in one place:
pending invitations, sessions a teammate shared with you, and requests for
control of a session you are hosting. Each entry is actionable — accept,
decline, join, grant or deny without hunting for the right screen — and
resolves itself when the underlying event goes away, so the rail no longer
polls for shares. On mobile the bell is reachable from every tab. - Sessions gained one join affordance instead of several, plus an empty state
that explains what a team session is. An invite code pasted into the default
search bar now joins that session directly. - The MCP server gained the team and sharing domains, taking its verb surface
to 74: an agent can read a team and its members, change a member's role,
share a session, and revoke a share. The same domains are exposed on
PluginAPI. Both sets of verbs sit behind their own permission, and every
membership or sharing call writes an audit row naming the counterparty. - A session whose MCP client disconnected is now shown as disconnected rather
than silently live, and the next client can adopt it.
Fixed
- Accepting or declining an invitation closes the modal only once the call
succeeds, so a failure no longer looks like it worked. - A denied control request stays denied until the guest asks again, control
requests are retracted when the session ends, and landing control on yourself
now confirms with a toast. - Hosts are no longer notified about their own share, and a session you left
stops showing up as unresolved. - Join is no longer offered on mobile, where a joined session cannot render.
- A team whose vault key has not reached you yet shows an honest
waiting-for-access state instead of reporting the session as not found. - The share menu copies the invite code it actually displays, auto-copies on
generate, and remembers that it did. member_set_roleis callable again, and fails loudly when the roles cannot
be reloaded instead of reporting a change it did not make.- Membership verbs send their audit rows to the team server, where they were
previously dropped. - A broadcast share is refused before the audit row is written, not after.
Changed
- After a lagged sync event the session list refetches once, rather than on
every sync.