feat: remote-editor invite handshake + "Shared with me" (#62, part 2) #70
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "feat/v7-remote-invite-handshake"
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?
Part 2 of #62. The host now tells the editor's instance about an invite, and the editor records it.
What it does
POST /api/projects/:id/invite-remotedelivers a signed APInviteto the remote actor's inbox (object= the project's AP collection URL + name,target= the actor), fire-and-forget so a delivery failure never fails the invite. Newservices/apOutbound.tsgetSigningIdentity()resolves (and lazily creates) the owner's AP keypair for signing.Invite— whentargetis this inbox's actor, it records a row inremote_project_invitations(migration043).GET /api/remote-projectslists active invitations; a new Shared with me page (/remote-projects, linked from Settings → Projects) shows them.Verification (dev server)
remoteInviteHandshake.test.ts— 2 tests (signed Invite): an Invite addressed to this user is recorded and listed (title + host actor); an Invite addressed to a different actor is ignored.api
tscclean; app build clean (fixed areact-routerv8 import); full API suite 213 passed (was 211).The host→editor
Invitedelivery is fire-and-forget outbound, so it's exercised end-to-end only across two live instances; the receive + list paths are fully tested here.Next
PR 3 (final): editor remote-view (signed-fetch the host's entries via #62-part-1's endpoint) + compose/edit → signed
Create/Updatedelivery — closing #62 and the v7 milestone.🤖 Generated with Claude Code