Skip to content

feat(website): homepage sequencing, plate trim, and diagram scaling - #1089

Merged
blove merged 5 commits into
mainfrom
blove/whitepaper-disclosure
Sep 9, 2026
Merged

feat(website): homepage sequencing, plate trim, and diagram scaling#1089
blove merged 5 commits into
mainfrom
blove/whitepaper-disclosure

Conversation

@blove

@blove blove commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Summary

A batch of requested homepage changes, plus two bugs found while making them.

Sequencing. OpenSourceStrip moves above Stage, so the fork band now follows the architecture diagram. The e2e spine order moves with it.

The airport plate. The N/S/E taxiways are gone — lines, letters, the TaxiwayLetter component, the TWY_* constants and the .ap-taxiway / .ap-twy-* rules — and the plate gains 44 viewBox units of margin below the southern runway (NEAT 444→488, VIEW 536→580, margin furniture shifted with it). The off-airport strip now reads "All AI Models supported".

Copy removals. "Compatibility, not endorsement — no company here is claimed as a customer" and "Everything on the right is yours" are removed.

The briefing titles swap. The eyebrow carries the problem, the <h2> carries the offer: "Free preflight briefing for agentic UI". · free leaves the eyebrow meta because the headline now opens with "Free".

The whitepaper form's disclosure becomes "We will never spam you or share your email address.", and every direct-download escape is removed — the form's two and the toast's two. The guide is reachable only through a successful submission; a failed send says to retry.

Two bugs found along the way

The architecture diagram was never scaling. min-width: 1024px and max-width: 860px were both set on it, and min-width wins in CSS — so it rendered at exactly 1024px at every viewport: ~96px of container unused on desktop, and a sideways scroll between 768px and 1024px until the phone stack snapped in. Both constraints are dropped so width: 100% governs, and the phone stack now takes over below 1024px so there is no scroll window at any width.

The max-width override needs .arch-figure .tp-diagram-figure[data-scale] .tp-diagram-svg: the marketing cap is (0,3,0) and a plain .arch-figure descendant selector is (0,2,0), so the first attempt silently stayed at 860px.

Measured: 1120px wide and 11.8px type at a 1440px viewport (was 1024px / 10.8px), no scroll; stack and no page overflow at 900px.

Notes

  • "Threadplane never talks to model providers" leaves the homepage with the old strip copy. That was a structural claim, and its guard cited feat(website): the reliability band becomes a preflight checklist #1067 as having corrected a related overclaim. The negative half of that guard stays — "never sees" must still appear nowhere in the band, drawn or spoken.
  • The whitepaper follow-up still sends and is no longer disclosed at capture. Raised before the change and confirmed. GROWTH_FORM_POLICY_VERSION is bumped to growth_v1.2026-09-09 so consent recorded under the old wording stays distinguishable, and the constant is renamed WHITEPAPER_PRIVACY_ASSURANCE because it no longer discloses outreach.
  • Two e2e specs pinned things this branch removes (the three taxiways, the failure-block link). Both now assert absence rather than being deleted, so re-adding either is a deliberate act.
  • Dead code swept: .wp-already, .toast-download-link, .ap-taxiway, .ap-twy-*, and the home_whitepaper_direct_inline and toast_direct_download analytics ids, none of which anything can reach.

Test Plan

  • npx nx test website — green
  • npx nx lint website — 0 errors
  • npx nx build website — green
  • home-architecture.spec.ts + home-airport.spec.ts — 6 passed
  • Measured the diagram at 1440px and 900px; measured the section order, plate texts and viewBox in a browser
  • Verify on production after merge

🤖 Generated with Claude Code

blove and others added 4 commits September 9, 2026 07:29
…links

Requested change. The form now reads 'We will never spam you or share your
email address.' in place of the three-email outreach disclosure, and the
two 'Download the PDF directly' escapes are gone: the 'Already on the list?'
line and the one in the failure block.

Recorded because it is not a copy edit: whitepaper signups are still
enrolled into the founder campaign (campaign/send.ts treats formKind
'whitepaper' as a campaign context), so the follow-up sequence still sends
and is no longer disclosed at the point of capture. Raised before making
the change and confirmed. GROWTH_FORM_POLICY_VERSION is bumped to
growth_v1.2026-09-09 so consent captured under the old wording stays
distinguishable from consent captured under this one, and the constant is
renamed WHITEPAPER_PRIVACY_ASSURANCE because it no longer discloses outreach.

The SUCCESS block keeps its direct link -- that reader has already given
their address and the copy promises it ('the PDF is here too'). The failure
block now says 'Try again in a moment.' rather than handing over the file.

Also removes the .wp-already rules and the home_whitepaper_direct_inline
analytics id, both of which nothing can reach any more.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…ng titles

- OpenSourceStrip moves above Stage, so the fork band follows the
  architecture diagram. The e2e spine order moves with it.
- The airport plate loses its N/S/E taxiways -- lines, letters, the
  TaxiwayLetter component, the TWY_* constants and the .ap-taxiway /
  .ap-twy-* rules -- and gains 44 viewBox units of margin below the
  southern runway (NEAT 444->488, VIEW 536->580, furniture shifted with it).
- The off-airport strip now reads 'All AI Models supported'.
- 'Compatibility, not endorsement' and 'Everything on the right is yours'
  are removed.
- The briefing titles swap: the eyebrow carries the problem, the h2 carries
  the offer. '· free' leaves the eyebrow meta because the headline now
  opens with 'Free'.

Two guards changed rather than deleted. Compatibility.spec kept its
negative half -- nothing may read as an endorsement, and 'never sees' must
still appear nowhere, that being the overclaim #1067 corrected -- while
losing the positive never-TALKS-TO assertion, since that claim leaves the
homepage with the old strip copy.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
It was never scaling at all. The docs kit floors every figure at a render
width so shrinking the SVG cannot shrink its text into illegibility, and the
marketing scale caps it at 860 -- but min-width beats max-width, so the two
together pinned this diagram at exactly 1024px: ~96px of the container went
unused on desktop, and between 768 and 1024 the figure scrolled sideways
until the phone stack snapped in.

Both constraints are dropped so width:100% governs. The max-width override
needs .arch-figure .tp-diagram-figure[data-scale] .tp-diagram-svg -- the
marketing cap is (0,3,0) and a plain .arch-figure descendant selector loses
to it, which is how the first attempt at this silently stayed at 860px.

Legibility now comes from the breakpoint rather than a floor: the phone
stack takes over below 1024px, so the SVG never renders under ~944px and
its 13.5px type never drops under ~10px. Measured at 1440px: 1120px wide,
11.8px type, no scroll. At 900px: stack, no page overflow.

Also removes the toast's standalone 'or download directly' link and its
now-dead .toast-download-link rule, and updates the airport e2e, which
pinned the three taxiways this branch removed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Aligns it with WhitePaperForm, whose failure block was changed the same way
earlier on this branch: the guide is reachable only through a successful
submission, so a failed send says to retry rather than releasing the file.

trackWhitepaperDownloadClick and the toast_direct_download cta id go with
it -- nothing in the toast can emit either any more.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Sep 9, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated
threadplane Ready Ready Preview Sep 9, 2026 2:46pm UTC

Request Review

@github-actions github-actions Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Automated approval: this PR received an intelligent (AI) code review. See the review comments on this PR.

@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Claude finished @blove's task in 0s —— View job


I'll analyze this and get back to you.

Both surfaced in CI, both real consequences of this branch.

website.spec.ts hardcoded growth_v1.2026-09-01 rather than importing it
(form-policy.ts is server-only and cannot load in a Playwright process), so
bumping the policy version made the running app post a value the suite did
not expect. Updated, with a comment saying it has to move with the constant.

'marketing pages link to downloadable whitepaper PDFs' failed because there
are no such links any more: removing every direct-download escape from
WhitePaperForm took the library pages' links with it. The test now asserts
the gate instead -- the PDFs stay served, they are just not linked -- so
re-adding a link is a deliberate act rather than a silent regression.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Claude finished @blove's task in 0s —— View job


I'll analyze this and get back to you.

@blove
blove merged commit f9c649b into main Sep 9, 2026
32 checks passed
@blove
blove deleted the blove/whitepaper-disclosure branch September 9, 2026 15:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant