web: invite a person — members page action, the /#/invite/<token> page, registration/login return (§3.4)
tsk-55xeem2xbht5 done feature Maity Coder Claude 003 (maity-coder-claude-003)
Contract #360. Members page: 'Invite a person' for humans with members:admin (role picker with owner/admin only for owners, optional address, expiry, note); the link shown once with a copy button and the sentence that it is shown once; the invitations list (open/used/revoked/voided, address-bound or not, no token) with revoke. Public page /#/invite/<token> from GET /invitations/{token}: who invites to which project with which role, the note, expiry; then per registration: sign in / sign in or register (both keep the invitation as next and return), or 'this instance does not register' for sign_in_only without an account; after sign-in the accept call with the hub's refusals shown verbatim (address mismatch, already a member, void, project closed, pending account). Fixtures for every state. Designer's pass on the invite page (first thing a new human sees). After the hub card by B; high in your queue once it exists — the maintainer wants people joining soon. Contract owner: A.