-
Notifications
You must be signed in to change notification settings - Fork 7
[attestations] Add attestations to mvr frontend #243
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Closed
Closed
Changes from all commits
Commits
Show all changes
54 commits
Select commit
Hold shift + click to select a range
40af7af
Add ATTESTATION-INTEGRATION.md: plan for surfacing attestations in MVR
mdgeorge4153 5154976
M1: mvr-api demo server + frontend localnet repoint
mdgeorge4153 00b84b8
demo: repoint all networks (not just mainnet) at the local stack
mdgeorge4153 738f49b
M2: Attestations tab reading from the registry over JSON-RPC
mdgeorge4153 43da69a
Trust Signals tab: polarity sections, count pills, attester avatars
mdgeorge4153 7bddb9f
Pass 2: vuln propagation, severity sort/chips, Security tab polish
mdgeorge4153 271bb68
Pass 2: link attesters to their MVR pages
mdgeorge4153 df7d10e
doc: mark pass 2 complete
mdgeorge4153 fbfe10c
Show attester MVR name instead of raw address; defer web-of-trust
mdgeorge4153 27aeeb0
Show vuln attester MVR names; give auditors distinct namespaces
mdgeorge4153 4b3d2a4
demo_server: seed git_info for auditor packages (sample READMEs)
mdgeorge4153 0bf9590
Make all displayed MVR names clickable links
mdgeorge4153 bb62324
Show MVR name in attestation types; consolidate the vuln row
mdgeorge4153 4a0d3c4
Trust tab: drop Active label, severity-colored vuln border, object ex…
mdgeorge4153 90109e2
Trust tab: fix severity border colors; per-band breakdown coloring
mdgeorge4153 ab527d8
Trust tab: inline-style severity colors + borders; report link in header
mdgeorge4153 ec435fd
M3: spam-proof server-side MatchAny over trusted attester types
mdgeorge4153 7d61572
Attestations: Issued tab on attester pages + whitelist-gated tabs
mdgeorge4153 386a505
docs: drop machine-specific demo-ids path; note WITH_GRAPHQL
8586632
MVR frontend: trusted-attestors page, trust badge, attestor icons
62c79bf
Fix stale ts/lib provenance refs (registry repo moved them to ts/src)
2cf92ee
Frontend: salt-revocation read-model + Issued-tab revocation
ca99354
Frontend: surface revoked attestations distinctly
19613d4
Frontend positive MVP: carve out negatives + revocation polish
ee60fff
demo trust config: audit_example -> auditor_a ("Auditor A")
mdgeorge4153 cff8743
Frontend PR-A cleanups: remove expiration; lib/hooks/script tidy
mdgeorge4153 b5d6819
attestation config: source default + env override (not env-only)
mdgeorge4153 a917d50
demo: fix auditor mvr name (@demo/auditor-a, not invalid @demo/audito…
mdgeorge4153 539a222
Frontend: client-side trust filtering; icons split; testnet gating; n…
mdgeorge4153 7c5951b
Follow attestation_registry -> attestations module rename
mdgeorge4153 4d7c852
Remove demo attester icons from the app; source them from the registr…
mdgeorge4153 a2deb3c
Add an example trust config so reviewers can see its shape
mdgeorge4153 07430fd
demo_server: fetch demo READMEs from the branch, not the stale mvr-de…
mdgeorge4153 4a8c2e2
Version selector for attestations; seed the demo dependency as multi-…
mdgeorge4153 73b8c84
Warning copy: 'This package version has no published audits'
mdgeorge4153 5bd1853
UI review: focus the Security view; make the Issued list scale
mdgeorge4153 9faacf8
Surface reverse-read GraphQL errors instead of swallowing them
mdgeorge4153 b6fc9f0
Surface forward-read errors on the Security tab too
mdgeorge4153 46d2b2b
Issued tab: surface per-object failures, split revoked, show descript…
mdgeorge4153 d99e48d
Version selector navigates to the version's page; surface revoked-rea…
mdgeorge4153 c967d5d
Versions tab: "Latest" marks the newest version, not the viewed one
mdgeorge4153 d16cb74
Security tab: show every version's audit status, not a navigating sel…
mdgeorge4153 4ad5e16
Trust-signal pill: show the count even at 0
mdgeorge4153 902282c
Security page heading: "Audits" (tab stays "Security")
mdgeorge4153 30ba1c7
Audit card: surface only standard Display conventions, not custom fields
mdgeorge4153 ad72986
demo_server: seed names for untrusted attestors too
mdgeorge4153 33da41a
Issued tab: viewable by URL for any package, with a not-trusted warning
mdgeorge4153 4ef12be
demo_server: seed @demo/attestations for the registry package
mdgeorge4153 2b55792
demo: per-org mvr names for verisimilitude
mdgeorge4153 2ecbb12
Issued tab: warning says "mvr's trusted list", not "your"
mdgeorge4153 d5946ec
demo_server: render the @mysten/attestations README
mdgeorge4153 421934c
demo: add Auditor C to the trust-config presentation map
mdgeorge4153 5ec2826
Issued tab: page through all results, render them all (drop see-more)
mdgeorge4153 48e04a2
demo_server: seed all versions of upgraded trusted attesters
mdgeorge4153 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,79 @@ | ||
| "use client"; | ||
|
|
||
| import { PlainPageLayout } from "@/components/layouts/PlainPageLayout"; | ||
| import { Text } from "@/components/ui/Text"; | ||
| import { AttesterAvatar } from "@/components/single-package/SinglePackageTrustSignals"; | ||
| import { attestationConfig, type TrustedAttestor } from "@/lib/attestations"; | ||
| import { beautifySuiAddress } from "@/lib/utils"; | ||
|
|
||
| export default function TrustedAttestorsPage() { | ||
| const cfg = attestationConfig(); | ||
| const attestors = cfg?.trustedAttestors ?? []; | ||
|
|
||
| return ( | ||
| <PlainPageLayout> | ||
| <div className="flex flex-col gap-lg py-lg"> | ||
| <div className="flex flex-col gap-xs"> | ||
| <Text kind="heading" size="heading-regular"> | ||
| Trusted attestors | ||
| </Text> | ||
| <Text | ||
| as="p" | ||
| kind="paragraph" | ||
| size="paragraph-small" | ||
| className="max-w-2xl text-content-secondary" | ||
| > | ||
| Attestations are surfaced only from this curated set of attesters. | ||
| Trust is a consumer-side choice — these are the packages MVR | ||
| recognizes as authoritative sources of audits and vulnerability | ||
| disclosures. | ||
| </Text> | ||
| </div> | ||
|
|
||
| {attestors.length === 0 ? ( | ||
| <Text as="p" kind="paragraph" size="paragraph-small"> | ||
| No trusted attestors are configured. | ||
| </Text> | ||
| ) : ( | ||
| <div className="flex flex-col gap-sm"> | ||
| {attestors.map((a) => ( | ||
| <AttestorCard key={a.originalId} attestor={a} /> | ||
| ))} | ||
| </div> | ||
| )} | ||
| </div> | ||
| </PlainPageLayout> | ||
| ); | ||
| } | ||
|
|
||
| function AttestorCard({ attestor }: { attestor: TrustedAttestor }) { | ||
| return ( | ||
| <div className="flex items-center gap-md rounded-md bg-bg-secondary p-md"> | ||
| <AttesterAvatar attestor={attestor} size="lg" /> | ||
| <div className="flex flex-col gap-2xs"> | ||
| <Text kind="label" size="label-regular"> | ||
| {attestor.name} | ||
| </Text> | ||
| {attestor.mvrName ? ( | ||
| <a | ||
| href={`/package/${attestor.mvrName}`} | ||
| className="text-content-accent underline w-fit" | ||
| > | ||
| <Text kind="paragraph" size="paragraph-xs"> | ||
| {attestor.mvrName} | ||
| </Text> | ||
| </a> | ||
| ) : ( | ||
| <Text | ||
| as="p" | ||
| kind="paragraph" | ||
| size="paragraph-xs" | ||
| className="font-mono opacity-60" | ||
| > | ||
| {beautifySuiAddress(attestor.originalId)} | ||
| </Text> | ||
| )} | ||
| </div> | ||
| </div> | ||
| ); | ||
| } |
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
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
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
Oops, something went wrong.
Oops, something went wrong.
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.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
TODO: need to click the trusted attestor icon twice to get to all attestors page
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[CLAUDE] Fixed — TrustedAttestorBadge used a plain
<a href="/attestors">(a hard full-document navigation), which didn't reliably activate on the first click from the client-rendered package page. Switched to next/link<Link>for single-click client-side navigation.