Repository navigation
feat(frontend)!: invite forms share one state language, and a send says what happened per address - #1677
Open
flipvh wants to merge 1 commit into
Open
feat(frontend)!: invite forms share one state language, and a send says what happened per address#1677flipvh wants to merge 1 commit into
flipvh wants to merge 1 commit into
Conversation
…ys what happened per address Modes become a segmented control over one form, addresses read as session tiles do, and a paste names what it could not read. A send with something to explain gets a result screen, and pending invitations become tiles with link expiry. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rebuilds the invite forms so one state language runs through chips, lists, results and pending invitations, and nothing an inviter enters disappears without a word. Mocks: https://claude.ai/artifact/MtEXikEpQ64EF1Rbnbz55r (private; concept B).
What changes
InviteUsersowns the form, so a mode only swaps its field. The crumb, the "Click here" bulk link, the alert and the help tooltip go. Onboarding gets all modes.StatusTileandStatusDotshareExpandableTile's head.role_description.<role>.linkExpiresAt.Bugs fixed
Jane Doe <jane@x.com>and quoted CSV parse the same way in every mode, through one parser.Review notes
rejected-invitations.test.tsforbids listing a declined invitation as pending, and any member may read that list.linkExpiresAtis uniform: last email plus the token's lifetime, for every row, becausepending-invitations.test.tsforbids telling an account from a new address. Someone with an account can still answer in the app after "Link expired".select-emails.tsxmoved fromcommon/form-fieldstouser, since only invites use it. See the alignment.Known limits
Verification
pnpm check,pnpm unused, 30 backend invitation and security tests.invite-users.stories.tsxtimed out at the default one second in some full parallel runs and never alone. With a five second wait it passed every run that reached it, so the send was slow to start, not stuck.Size
select-emails.test.tsmoved and checks a table-driven rule, that the parser accepts exactly what a submit accepts, plus a row per paste shape.base-ui-wiring.test.tsxpins how the role control names its options.linkExpiresAtin the SDK.🤖 Generated with Claude Code