improvement(secret-sharing): overhaul sharing UX across surfaces - #7824
Draft
jaddenki wants to merge 7 commits into
Draft
improvement(secret-sharing): overhaul sharing UX across surfaces#7824jaddenki wants to merge 7 commits into
jaddenki wants to merge 7 commits into
Conversation
Rework the Secret Sharing entrypoints so the list, share flow, form, expiry selection and shared-secret view read as one experience. - Move the page off the v2 PageHeader/Tabs onto their v3 equivalents so the shell matches the rest of the product and tabs get real tablist semantics. - Open the authenticated share form in a Sheet instead of a Dialog; the form is long and conditional, which is what Sheet is for. - Restructure both forms into Secret / Access / Delivery groups and drop the advanced-settings accordion. Email delivery and the external recipient toggle now sit in the flow ahead of the field whose meaning depends on them, rather than buried behind a disclosure. - Expiry now resolves to the absolute timestamp the link stops working, and the org cap is stated rather than implied. - Replace the Unlimited/Limited select plus number input with a single toggle and a bounded input. - Validate view limits and require a password when external recipients are addressed, instead of leaving both to the backend. - Give the result state its own hierarchy: status, link, expiry and view metadata, and one forward action. - Let active shared secrets be copied from the table, so a link is no longer recoverable only from the creation state. - Name the resource in delete confirmations, await deletion before reporting success, reset pagination on page-size change, and give row menus and copy/reveal controls intent-specific accessible names.
The recipient view buried its actual purpose. Copying the secret was a small ghost icon in the corner of the value box, while the loudest button on the page sent the recipient off to create their own secret. Follow the pattern Bitwarden uses for Send: a clean value box, then Reveal Value as a secondary full-width button and Copy Value as the primary one, with expiry and remaining views underneath. Demote "Share Your Own Secret" to a quiet tertiary link. Apply the same hierarchy to the requested-secret reveal dialog, where Close was the only real button. Its copied state also latched on permanently, since it used a toggle that was never reset.
… hiding them Three states lied to the user. A failed list query fell through to the empty state, so a request that errored rendered as "No Shared Secrets" and read as data loss. Both tables now distinguish the two. Clipboard writes assumed success. navigator.clipboard is unavailable in non-secure contexts, which self-hosted HTTP deployments hit, and copy is the whole point of this feature. Every copy path now reports failure and points at the visible value instead of failing silently. This also stops a clipboard rejection from aborting the post-create flow before reset(). "Expired" covered both a lapsed timestamp and an exhausted view count. Views-exhausted now says so, since the distinction changes what the user would do about it. Also only show pagination once there is more than one page.
…ing a share The password set on a share was write-only. You could not check what you typed before sending it, even though it is the credential you then have to relay to the recipient out of band, and a typo is unrecoverable once the link is out. Use the InputGroup + eye toggle composition already established in PasswordField rather than a new control.
The card announced itself twice, once as "View shared secret" and again as a "Shared Secret" heading directly beneath it. Dropped the second. Reveal and Copy were identical full-width buttons, which read as two equal actions. Revealing is not a peer of copying, it is a view control on the value, so it now sits in the value box it affects and Copy Value is the only primary action. The value box carried a fixed 96px minimum that left a large gap under a single line of dots. It now sizes to its content and scrolls past a sensible maximum instead of growing without bound. "Share Your Own Secret" was a muted ghost button floating with no affordance, reading as disabled text. It is a real link now, below a divider, clearly secondary to the recipient's task.
The card is scoped to one secret. A prompt to go create your own is not part of that, so sitting inside the card it needed its own divider and still read as stray muted text below the metadata. It now sits between the card and the page footer, alongside the other Infisical chrome, which is the level it actually belongs to. The card ends on the secret's own detail and carries one divider instead of two.
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.
Context
Improves the secret sharing and secret request experience across organization and public surfaces. The update clarifies information hierarchy and primary actions, improves table and modal states, makes copying and password visibility more explicit, reports copy/load failures, and groups advanced sharing controls while preserving organization policy enforcement.
Screenshots
Not included yet. This is a draft PR for early visibility; screenshots or videos will be added before review.
Steps to verify the change
Type
Checklist
type(scope): short description(scope is optional, e.g.,fix: prevent crash on syncorfix(api): handle null response).