Repository navigation
feat: rebrand the checkup as a PatchWave on-ramp and remove report analytics - #76
Conversation
…ing copy User-facing text now calls the CLI "PatchWave Dependency Checkup" (or "the checkup"), so "PatchWave" only means the GitHub app. Copy that still promised report sharing, removed in 0.7.1, now says the report stays on the user's machine.
…the banner The report no longer bundles posthog-js or sends any events, so it makes no network requests. The CLI's own usage events and crash reports are unchanged, and the welcome banner now says it sends them and how to turn them off.
…inishes The welcome banner says what the scan measures and what PatchWave is, and the CLI ends with a link to patchwave.ai. The link's UTM tags live only in the terminal hyperlink, so the visible text stays clean. URLs the CLI and report share now come from src/urls.ts.
46b971b to
198079a
Compare
| </Button> | ||
| <div className="mt-2 flex flex-wrap items-center gap-x-6 gap-y-4 no-print"> | ||
| <Button asChild variant="sun" cursor> | ||
| <a data-testid={verdictTestIds.primaryCta} href={`#${automatedStorySectionId}`}> |
There was a problem hiding this comment.
The hero is only about the problem now. I want the takeaway to be "this is a big problem for you", so Patch and the trial buttons wait until the PatchWave section. This button just scrolls down to it.
|
|
||
| <div className="mt-6"> | ||
| <Card> | ||
| <CostReceipt /> |
There was a problem hiding this comment.
I moved the editable calculation out of the hero and into this section, since it already explains the number. The hero links here with "How we calculated this".
This undoes part of #17, which put the assumptions in the hero.
|
|
||
| export const costReceiptCopy = { | ||
| observedLabel: 'PRs merged', | ||
| observedLabel: 'PRs merged or reviewed', |
There was a problem hiding this comment.
This number is merges plus reviews (humanMergeCount + humanReviewCount), so the "PRs merged" label on main was wrong.
| <Sprite sprite="patchHead" scale={3} /> | ||
| </PixelTile> | ||
| <div className="grid gap-1"> | ||
| <p className="text-foreground m-0 text-2xl font-bold">Meet Patch.</p> |
There was a problem hiding this comment.
Patch shows up here, with the solution, instead of surfing in the hero. The surfboard felt forced, so this introduces him the way patchwave.ai's "Meet Patch" section does.
| @@ -0,0 +1,21 @@ | |||
| # Copied from the PatchWave repo | |||
There was a problem hiding this comment.
Everything in pixel/ and the pixel primitives is copied from the website package, so you can skim it. This file lists each source and what I changed or dropped.
| high: 'text-severity-high', | ||
| }; | ||
|
|
||
| /** A labelled figure, one cell of a StatGrid. */ |
There was a problem hiding this comment.
The report had five label-plus-number components, each styled a little differently. They're all Stat now. This also gets rid of the black "Annualized" box, which was the only pure-black thing on the page after the rebrand.
| @@ -0,0 +1,20 @@ | |||
| export const PATCHWAVE_URL = 'https://patchwave.ai/'; | |||
There was a problem hiding this comment.
All the URLs the CLI and report link to live here now, and withUtm is the one place we build tracking tags.
| @@ -1,5 +1,5 @@ | |||
| export function welcomeBannerTitle(): string { | |||
| return 'patchwave-analysis'; | |||
| return 'PatchWave Dependency Checkup'; | |||
There was a problem hiding this comment.
Thoughts on this name?
| @@ -0,0 +1,19 @@ | |||
| export const PATCHWAVE_URL = 'https://patchwave.ai/'; | |||
There was a problem hiding this comment.
Putting all URLs into a constants file
|
|
||
| function UnitToggle() { | ||
| const { unit, setUnit } = useDisplayUnit(); | ||
| const analytics = useAnalytics(); |
There was a problem hiding this comment.
We can't easily use UserCentrics on something served from localhost, so I think the easiest thing to do is just remove the web analytics for now.
jcarver989
left a comment
There was a problem hiding this comment.
Ship it. Fun seeing all the brand stuff come in here too, and I think it's totally ok to copypasta it for now.
Adds a report screenshot and a "What is PatchWave?" section, explains who sees the full CVE section, corrects the $0 troubleshooting entry, and brings the source trees in AGENTS.md and CONTRIBUTING.md up to date.
Copies the brand colors, Radio Canada and Geist Mono, Patch's head, the wordmark, and the website's pixel engine and components from the PatchWave repo. src/report/web/brand/README.md lists each source and what changed locally. The report is light-only now, like patchwave.ai, so the Storybook theme switcher and dark stories are gone.
… sign-up The hero now states the org's problem: hours spent on Dependabot PRs, open updates, and unpatched vulnerabilities with critical alerts flagged. Its button scrolls to the PatchWave section, which introduces Patch and holds the first trial link. The cost calculation moves into the section that explains it. Sections use the pixel components, and label-plus-number figures share one Stat primitive. The trial buttons go to app.patchwave.ai/join with UTM tags per placement and use the site's trial copy. The header logo and "See how it works" link go to patchwave.ai.
198079a to
2726e9c
Compare
🤖 I have created a release *beep* *boop* --- ## [1.0.0](v0.7.1...v1.0.0) (2026-10-15) ### Features * rebrand the checkup as a PatchWave on-ramp and remove report analytics ([#76](#76)) ([4c09944](4c09944)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: contextbridge-pr-automation[bot] <259134118+contextbridge-pr-automation[bot]@users.noreply.github.com>
Summary
Turns the checkup into an on-ramp to PatchWave. The CLI is renamed "PatchWave Dependency Checkup" and links to PatchWave when a scan finishes. The report adopts the PatchWave brand and 16-bit look, leads with the org's open updates and unpatched vulnerabilities, and sends its CTAs to the trial sign-up with UTM tags. The report no longer sends any analytics; the CLI's usage events and crash reports are unchanged and are now disclosed in the welcome banner.
Please review the storybook here: https://6a1476f6e70f669b161a85a3-upyttirqru.chromatic.com/?path=/story/report-app--default
This ships as 1.0.0.
Review focus
src/report/web/reportCtaUrls.ts, so patchwave.ai's analytics needs to recordutm_source,utm_mediumandutm_content. This also fixes a leak on main, where the report's PostHog events carried the localfile://path of the report and session replay recorded unmasked text.DO_NOT_TRACK=1enough disclosure for opt-out CLI telemetry?Commits
92d3f0e— fix: name the CLI "PatchWave Dependency Checkup" and drop report-sharing copy4b4f7d1— feat: remove analytics from the report and disclose CLI telemetry in the banner9c8aeaf— feat: describe PatchWave in the banner and link to it when the scan finishes82a99c1— docs: point the README at PatchWave and correct its guidanceb03ea70— feat: bring PatchWave's brand and pixel components into the report2726e9c— feat: lead the report with the problem and send its CTAs to the trial sign-upRelease-As: 1.0.0