Skip to content

Rebuild the site on the approved tighter-site design (FIL-1386) - #131

Merged
christopherrocco merged 69 commits into
mainfrom
chris/fil-1386-website-updates-for-tighter-site-messagingdesign
Oct 5, 2026
Merged

christopherrocco merged 69 commits into
mainfrom
chris/fil-1386-website-updates-for-tighter-site-messagingdesign

Conversation

@christopherrocco

@christopherrocco christopherrocco commented Oct 1, 2026 •

Copy link
Copy Markdown
Contributor

Rebuild the site on the approved tighter-site design (FIL-1386)

What and why

Rebuilds the marketing site on the approved tighter-site design: a shared shell (new nav with Sign in, four-column footer, window closing card), then the homepage, Bring a workload, Host a zone, Pricing and Partners, each on the site's components and Tailwind tokens. Blog keeps its layout and inherits the new header and footer. Based on filipa/website-updates so her HubSpot and copy work ships with it.

One commit per slice, so each page can be reviewed on its own.

Pages

Route Change
/ Rebuilt: hero, proof strip, Why Fil One (dark card), five workload cards, Enterprise and Neoclouds cards, developers section, quotes, press, FAQ, window CTA
/workloads New: five workload sections with sticky side nav and flow diagrams; replaces /solutions
/host New: zone schematic hero, problem card, product, egress ledger, pilot steps; replaces /neocloud. /host/apply keeps the HubSpot form
/pricing Rebuilt: plan cards, no-hidden-fees strip, dark calculator with live "N× less than AWS S3", cloud storage comparison table (restored from the old /storage page), billing FAQ
/partners Rebuilt as a footer-only page: six reasons, four roles, three steps. CTA still goes to /partners/apply
/contact-sales Adds a link to the partner application above the form
/blog, /blog/:slug Header and footer only

Nav and footer labels are updated in English and Spanish, and Shell.i18n.test.tsx covers both.

Redirects (all permanent)

  • /solutions → /workloads; /solutions/ai-training → /workloads#training; /solutions/media-archive → /workloads#media; /solutions/backup, /solutions/enterprise-backup, /solutions/archival, /solutions/ransomware, /products/archival → /workloads#backup; /solutions/web3-dapps → /workloads
  • /neocloud → /host; /neocloud/apply → /host/apply
  • /enterprise → /#teams

Check these on the Vercel preview, since npm run dev doesn't apply vercel.json.

Open items

  • The blog's featured slot points at the launch post until Monday's post has a title and slug. (The announcement bar and the hero pill were both removed after staging review; the nav's Start for free is now the dark primary tone instead.)
  • Calculator fine print says rates were checked 23 September 2026 (RATES_CHECKED_ON in src/lib/pricing.ts). Chris owns the recheck; it's a one-line change.
  • The proof claim ("Verify your data with cryptographic proof, without downloading") is back on the homepage after Consolidate the site onto fewer, truer pages #129 removed it, in softened form.
  • Press stays as text (no logo files or permission yet).
  • The durability FAQ is removed until the multi-site story is real. The only durability wording left is the approved "Designed for 11 nines" form (page meta, llms.txt, the price landing page and Barcelona); no page claims replication across sites.
  • Verification: the homepage, Partners and the Host page use the approved "verify with cryptographic proof, without downloading" wording. No page says data is checked continuously or on demand.
  • Egress wording: "subject to reasonable use" replaces "subject to fair use" on the main pages, with a FAQ defining it. The multiple (3x or otherwise) is not published; it waits on the egress cost work. The 39 landing pages under /lp still say "no egress fees" and follow in a separate PR.
  • Host a zone: no egress qualifier on the cross-connect card or the wholesale paragraph, since a cross-connect never uses the internet path.
  • Quotes section ("What builders are saying"): two cleared quotes (Jon Victor, Porter Stowell). A third (Manoj, Abyssgrid) is pending his surname.

Linear

FIL-1386

Test plan

  • npm run lint (0 errors; the two LandingPrimitives warnings are pre-existing)
  • npm run typecheck
  • npm test (145 pass)
  • npm run build ends with "Prerendering complete."
  • On the Vercel preview: every route above renders at 1440 and 375 wide; nav, footer and mobile menu in English and Spanish; all old URLs redirect; Start for free and Sign in open the console; Talk to sales, Host a zone apply and partner apply forms submit to HubSpot
  • Blog list and a post render with the new header and footer (needs the HubSpot token, so only on Vercel)

🤖 Generated with Claude Code

https://claude.ai/code/session_0154ZHemYuS9n2fYnkFSFyxe

filipa-filecoin and others added 30 commits September 21, 2026 20:52
The site carried five pages that each described one slice of the product:
/storage, /bucket-intelligence, /ai-agent-toolkit, their two waitlists, and
/enterprise. Fold what's still true into the homepage and drop the rest.

- Homepage: everything below the press carousel is now the Storage page's
  body (stats, features, integrations, use cases, comparison, pricing
  teaser), keeping the original CtaSection as the closer.
- New EnterpriseSection carries the Enterprise page's six capabilities as a
  two-column split with a hairline-divided list, placed after the pricing
  teaser so the funnel runs self-serve pricing to enterprise terms to FAQ.
- Hero: new headline and description; the Bucket Intelligence announcement
  badge is gone along with the products it pointed at.
- FAQs come from the FIL-1241 branch; include lists on /pricing and the
  solution pages are repointed at questions that still exist.
- Navbar: Products dropdown removed (it would have been empty), Enterprise
  removed, and Documentation moves out of the utility bar into the main
  navbar as "Docs".
- 301s send every removed URL to /.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Lifted from the FIL-1241 branch, extracted into PartnersSection so the
homepage keeps its one-component-per-section shape. Sits directly after the
Enterprise band: both speak to people who won't self-serve, and the dark
treatment breaks up the long light run before the FAQ.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Four near-identical pages on a shared scaffold, 24 feature cards and 16
use-case cards of copy, for four audiences. Now one page with six workload
sections, a shared platform grid, and a four-step start.

A code audit of the app repo drove the copy. Claims dropped because nothing
implements them: cryptographic verification, CIDs, proofs, "verifiable
integrity" and "verifiable provenance"; multi-region redundancy (two
independent regions, no replication); WORM compliance wording; sustained
multi-Gbps reads; named integrations (Veeam, PyTorch, DaVinci Resolve,
ethers.js). Object lock is now described as it works: governance or
compliance retention, set at bucket creation, alongside versioning.

Web3 drops as a top-level audience. Storj, the nearest decentralized peer,
sells durability and cost rather than decentralization, and our own FAQ
already says we support neither IPFS nor CIDs.

Nav: Solutions becomes a plain link, so the dropdown machinery goes with it.
Footer moves Solutions into Company. Old URLs 301 to the section anchors.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The GPU-cloud pitch, built from the internal deck and kept to what the
product can actually back. /partners still covers the channel, technology
and MSP roles; this is the operator story, including storage installed in
their own facility, which the Forge appliance path in the app makes real.

Left out of the deck as non-publishable: latency and throughput figures,
the egress cost arithmetic, wholesale rates and margin, launch-partner
exclusivity, the 2026 rollout, the NVMe/HDD tier split (no storage classes
exist), and the Filecoin proof and sovereignty slides.

Linked from the main navbar as "Neoclouds" and from the footer next to
Partners.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The comparison table asserted integrity verification for Fil One and marked
Backblaze and Wasabi down for it. There is no CID, proof or verification
code in the app, and both vendors publish checksum verification, so the row
is gone rather than re-rated.

Two homepage sections carried the same claim: "audit-ready integrity" and
"verifiable data integrity" in the features band, and "Every backup is
verified daily" in the use cases. Durability now reads as designed-for, the
way AWS, Wasabi and Scaleway all state it, and the backup card sells what is
real: versioning, and restores that carry no egress charge.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The deck's commercials slide promises your brand on the console, the docs
and the S3 endpoint, with per-bucket metering exported into your billing.
Taking the deck as the source of truth for the partner offer, so the page
claims both instead of the softened commercial-only version.

Also restores the security and compliance FAQ, whose wording attributes the
certifications to the data centers rather than to Fil One.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Partners page: "daily, audit-ready integrity proof" becomes durability
stated as designed-for, credited to the independent regional operators that
actually run the storage.

Pricing page: "Data integrity guarantees" in both plan lists becomes object
lock and versioning, which the product implements.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Five of the eight rows were ticks in every column, which persuades nobody,
and two made negative calls on named vendors with nothing behind them.

Every cell now carries a value rather than a symbol: a price, a rate, a
duration, each one taken from that vendor's own pricing page and linked in
a dated footnote. The glyph is a scan aid, and green appears on competitor
columns too, so the table reads as a record of published terms instead of
a scorecard. Rows: storage price, egress, request charges, minimum storage
duration, account minimum, storage classes, retrieval fees.

Cloudflare R2 gains a column. It is the other genuinely zero-egress
S3-compatible provider, so leaving it out would look evasive, and it still
costs three times as much per TB and charges per operation.

Our own $4.99 account minimum is in the table, marked as a caveat, next to
Wasabi's 1 TB minimum and 90-day retention floor.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The check, dash and cross graded every cell on top of text that already
said what the term was, and a green check next to a competitor's figure
read as praise for them rather than context. Cells are now values alone.
Fil One's column keeps its white card, brand-blue price and near-black
text, which is enough to say whose table this is.

Prices drop from 22px to 17px so the row sits with the rest of the table
instead of shouting over it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
960px was cramping six columns of published terms into three and four
line cells. At max-w-container most cells fit on one or two lines, and the
feature column gets 200px so the row labels stop wrapping mid-phrase.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
- Replace the white grid hero with a brand-blue card, with background and
  bottom glow as hero-card-brand / hero-card-glow tokens
- Fold the utility bar into a single nav row, widen link spacing, rename
  the CTA to "Talk to sales", and add a floating support button
- Drop the secondary CTA from the Solutions hero
- Raise PRICE_PER_TB to 5.99

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Move pages and shared components onto design tokens (type scale,
  colors) and shared primitives
- Remove the unused shadcn/ui components, hooks, and ~40 dependencies
- Remove retired sections and assets (HeroSection, CtaSection,
  IntroSection, PricingTeaserSection, feature PNGs) in favor of CtaBanner
  and SplitFeatureSection
- Add the Neocloud apply page and shared form validation
- Update SEO route meta, prerender, and llms.txt
- Separate the monthly minimum constant from the per-TB rate
- Fix the missing SectionLabel/SectionHeading import that blanked the
  homepage, and restore the side-by-side "No surprises" layout

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Slide the active pill on the Solutions workload tabs, and fade the
  track edge that has hidden tabs when it scrolls on mobile
- Add an external-link arrow to the "Read the docs" buttons
- Balance closing-banner headings and subheads (new subheadMaxWidth
  prop, balanced wrapping) on the homepage, Solutions, and Partners, and
  break the Pricing subhead before the price
- Use the secondary button for every SplitFeatureSection CTA
- Form fields rest on the light border and darken to the 3:1 `input`
  token on hover; radios and checkboxes keep the 3:1 border
- Rename the neocloud form heading to "Talk to our neocloud team"
- Mobile menu: full-bleed and full-height, locks page scroll, closes on
  Escape and at the desktop breakpoint, inset focus ring, links aligned
  with the logo
- Move the user-generated content card last on mobile
- Align the mobile comparison rows: centred price rows, baseline text
  rows, no line-height strut on the provider label

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Re-export the Buckets screenshot from a 4x capture as WebP (q90):
  2400w for the 1120px container on 2x screens, 1200w for phones
- Serve both via srcset/sizes and update the intrinsic dimensions

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The egress FAQ named the 2 TB trial allowance but not that it is a hard
cap: the console disables the account once it is reached and restores
access on upgrade. One clause makes the limit read as a limit.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The homepage, Organization and Product JSON-LD, /lp/backup-dr, /partners,
/partners/apply and /about descriptions still said "verifiable" or
"proven daily". Durability now reads as designed-for, matching the page
copy. index.html's fallback description changes with them.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
llms.txt and llms-full.txt still made the claims this branch removed from
every page: CIDs, Proof of Spacetime, verifiable integrity and
tamper-evident logs. They now describe what the product does: designed-for
durability, object lock and versioning, operator-held encryption keys, and
two independently operated regions. The S3 operation list now carries the
docs' regional caveats (CreateBucket, DeleteBucket and CopyObject), and
addressing is path-style only. The trial row names the 2 TB egress
allowance, the page lists add Neoclouds, Partners and About, and the Python
samples import what they use.

README: current stack, structure, scripts, routes/SEO sources, HubSpot
forms (including the unset neocloud GUID) and the repo URL.

landing-page-framework.md: drop the recommended "independently verifiable
storage with a cryptographic audit trail" line, add a claims guardrail to
the proof-points section, and use the current CTA labels.

(SITE-AUDIT-2026-07-17.md was removed in the previous commit; its findings
are tracked in Linear.)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
About still said every object carries an independently verified
fingerprint, that "you hold the keys", and that your data never depends on
any single company. None of that holds: there is no CID or verification
code, keys are held by the regional operator, and each region is one
operator. The story and pillars now sell what is real: flat pricing with
zero egress, object lock and versioning, S3 portability, and independent
regional operators.

/lp/barcelona and /lp/es/barcelona: "tamper-evident audit logs" and
"replicated across locations" become governance or compliance retention
with versioning, and durability stated as designed-for.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The console has built production endpoints as s3.<region>.filonecontent.com
since 2026-09-10 (getS3Endpoint in fil-one/fil-one). The site still quoted
eu-west-1.s3.filonecontent.com. Both resolve today, but s3-endpoint.ts is
meant to track the console, so samples and the llms files now use
s3.eu-west-1.filonecontent.com.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The form now exists (65ce81c3), so the null-GUID guard that sent visitors
to /contact-sales instead is gone.

Field mapping follows the properties as HubSpot has them: GPU location,
fleet size and start timeline are contact properties
(where_are_your_gpus_located, gpu_fleet_size,
when_are_you_looking_to_start), not company ones, and two of them carry
different internal names than the page assumed. Company name and the
business description stay on the company object. Dropdown values already
matched the properties' option values.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…(FIL-1386)

Announcement bar above the navbar (currently the launch post), nav reduced to
Bring a workload, Host a zone, Pricing, Docs and Blog with a Sign in link via
console-url, footer regrouped to Product / Company / Resources / Legal with the
subsidiary tagline, and a "window" image variant on CtaBanner used by the
homepage close. Page top offsets move to the new `header` spacing token.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154ZHemYuS9n2fYnkFSFyxe
White hero with grid and halo over the console screenshot, a three-figure
proof strip, the Why Fil One space card (four reasons), five workload doors,
the Enterprise and Neoclouds pair, a tabbed code sample for developers, press
on the tint band, then the FAQ and the window close. New shared pieces:
ProofStrip, SpaceCard, WhySection, WorkloadsGrid, TeamsSection,
DevelopersSection, a tint tone on PressBar, and space-horizon / horizon-glow /
drives-tint gradient tokens.

Durability moves to one FAQ answer and out of the SEO description, per the
claims decisions.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154ZHemYuS9n2fYnkFSFyxe
Five workloads (AI training, data lakes, backup, media, security logs), each
with a sticky side-nav entry, three checks, a "how it flows" schematic and a
docs link, alternating on grey; "One storage class. Every workload." on the
tint band; the window close. New FlowCard component and schematic color
tokens. /solutions and the old /solutions/* paths redirect to /workloads and
its anchors; the nav, footer and homepage cards now point there. Every $0
egress mention carries "subject to fair use".

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154ZHemYuS9n2fYnkFSFyxe
Two-column hero with the building schematic (compute, scratch, Fil One
Capacity on a cross-connect; Fil One Sovereign and other clouds beyond the
internet line), a proof strip, the problem on the space card, the product as
four cards, the egress ledger on the drive-photo card with the $0 panel,
commercials, the four pilot steps on grey, and "Be first in your region." as
the close. The neocloud form moves to /host/apply unchanged. /neocloud and
/neocloud/apply redirect permanently; nav, footer, homepage, FAQ and llms
files point at the new paths.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154ZHemYuS9n2fYnkFSFyxe
New hero and plan cards (Pay as you go, Reserved capacity), a no-hidden-fees
strip with the fair-use note on egress, the calculator on the dark SpaceCard
with a live "N× less than AWS S3" figure, a billing FAQ in the side layout and
the window CTA. CostCalculatorSection and PricingComparison gain a dark tone,
FaqSection gains page-specific items and a side layout, and the rates-checked
date moves into pricing.ts so it is updated in one place.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154ZHemYuS9n2fYnkFSFyxe
…L-1386)

Partners is now a footer-only page on the approved design: hero, six
reasons to partner, the press band, the four roles on the dark card (the
data-center role points at Host a zone), three steps and the window CTA.
Talk to sales gets a link to the partner application so partners don't land
in the sales form. The partner CTA still goes to /partners/apply.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154ZHemYuS9n2fYnkFSFyxe
…FIL-1386)

Older redirects now point straight at their final targets: /enterprise to
/#teams and the archival and ransomware URLs to /workloads#backup. Removes the
components and illustrations nothing renders any more (the old use-case,
enterprise, partners, comparison, proof-bar, role-card and step sections).
llms.txt and llms-full.txt describe the new plans, pages and fair-use note.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154ZHemYuS9n2fYnkFSFyxe
The dark primary pill now fills with navy-800 on hover, white text unchanged and the ring deepening, in place of the thicker ring.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154ZHemYuS9n2fYnkFSFyxe
Chris Rocco and others added 3 commits October 2, 2026 11:55
"Subject to fair use" becomes "subject to reasonable use" across the main pages and llms.txt, since fair use is a copyright term. A new FAQ on the pricing page and homepage says what reasonable use means: normal workloads are well within it, it covers CDN-like use, and it does not apply on a cross-connect. The homepage FAQ no longer says egress is free at any scale, "egress fees" reads "egress penalties" on the main pages, and the Host diagram says "no egress charge" rather than "no egress meter". Landing pages under /lp are unchanged and follow separately.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154ZHemYuS9n2fYnkFSFyxe
…1386)

Jon Victor (BitRobot Foundation) and Porter Stowell (Web3.io), name and company in text, no logos. Sits between Developers and the press band.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154ZHemYuS9n2fYnkFSFyxe
Not every quoted person is a customer, so the section no longer says so. Heading is now "What builders are saying."

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154ZHemYuS9n2fYnkFSFyxe
It follows the grey Developers band, so it needs its own space above the heading rather than borrowing the band's bottom padding.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154ZHemYuS9n2fYnkFSFyxe
Dropped from the homepage FAQ, the Support page and the Spanish support page. The answer also misnamed Filecoin Onchain Cloud.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154ZHemYuS9n2fYnkFSFyxe
…386)

The six-row table from the old /storage page, which the homepage rebuild dropped. Sits under the calculator. Fil One's egress cell now reads "Free, subject to reasonable use"; competitor list prices rechecked today and unchanged.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154ZHemYuS9n2fYnkFSFyxe
Chris Rocco and others added 2 commits October 2, 2026 15:16
"Comparison / Cloud storage comparison" said the same thing twice. Now "The fine print, side by side." with no eyebrow.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154ZHemYuS9n2fYnkFSFyxe
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154ZHemYuS9n2fYnkFSFyxe

@RichardHerold RichardHerold left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Reviewed at 7b6354b. Locally, npm ci, typecheck, the 145 tests and the build with prerender all pass. The redirects work on the Vercel preview: 308s, and the #teams and #training anchors survive the redirect.

The code is in good shape. The main problems are claims that contradict the PR description. Details are in the inline comments; a few items couldn't be anchored to diff lines and are listed below.

Should fix before merge

  • Barcelona "20× cheaper than AWS" is now stale. BarcelonaLandingPage.tsx:61 and BarcelonaLandingPageES.tsx:90 hardcode it. At $5.99/TB the table on the same page gives $1,132.50 against $59.90, about 18.9×. timesCheaperThanAws() in src/lib/pricing.ts could compute it.
  • Double arrow on the Spanish docs button. BarcelonaLandingPageES.tsx:241 passes ctaLabel="Ver documentación →", and IntegrationsSection now appends an ArrowUpRight icon itself.

Worth checking on the preview

  • Trailing-slash URLs skip the redirects. /solutions/ returns 200 with the SPA shell, which renders the 404 page, instead of redirecting like /solutions does. Adding "trailingSlash": false to vercel.json would fix it.
  • Submit one form each on Support and Host apply. Support now sends legalConsentOptions. Host apply uses a new form GUID, with field names and dropdown values that can't be verified from the repo.

Comment thread index.html
<title>Fil One | S3 object storage built for the AI era</title>
<meta name="description" content="S3-compatible object storage built on Filecoin. Enterprise-grade durability, no egress fees, and verifiable data integrity." />
<title>Fil One · S3 object storage built for the AI era</title>
<meta name="description" content="S3-compatible object storage built on Filecoin. Designed for 11 nines of durability, with no egress fees and no per-request charges." />

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Durability claim. The PR says durability isn't claimed anywhere, but this default description (also og:description and twitter:description at 36 and 45) now says "Designed for 11 nines of durability". Any route without its own metadata serves it, including blog posts and the 404 page. It came in via the base branch, but it ships with this PR.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Kept. "Designed for 11 nines of durability" is the softened form that product approved; the earlier unqualified "11 nines" wording is what was removed. Same for llms.txt and llms-full.txt. I've updated the PR description so it says this instead of "not claimed anywhere".

Comment thread public/llms-full.txt
This makes Fil One uniquely suited to AI agent workloads where data integrity and
auditability matter: you can independently verify that your training data, model
weights, or agent memory has not been altered or silently corrupted.
Storage is designed for 11 nines of durability. Object lock (governance or

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Same 11 nines claim here (and at line 201, plus public/llms.txt:95).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Kept, same reason as index.html.

Comment thread src/components/FeaturesSection.tsx Outdated
{ icon: Plug, title: "Drop-in S3 compatibility", desc: "Same API, same SDKs, same tools. Point your existing workflow at our endpoint." },
{ icon: ArrowsOut, title: "Zero egress fees", desc: "Every read is free, so your bill stays flat no matter how busy the month." },
{ icon: ArrowsOut, title: "No egress penalties", desc: "Every read is free, so your bill stays flat no matter how busy the month." },
{ icon: ShieldCheck, title: "Eleven nines of durability", desc: "99.999999999% durability, replicated across locations and monitored around the clock." },

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Still "99.999999999% durability, replicated across locations" on /lp/price. The Barcelona pages were changed to "Designed for…", and landing-page-framework.md now says there is no replication across regions. Also, line 8's title now reads "No egress penalties", but its body still says "Every read is free" with no reasonable-use qualifier.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Fixed in f7afdac. Now "Designed for 99.999999999% durability and monitored around the clock", matching Barcelona, with the replication claim gone. The egress body now says reads are included subject to reasonable use.

},
{
icon: ShieldCheck,
title: "Proof, not promises",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Verifiability claims. bddfb4f and 5cf4652 removed the fingerprint and verifiability claims. This section brings them back ("Verify your data with cryptographic proof"), as do PartnersPage.tsx:22 and TestimonialsSection.tsx:23. The PR description covers the homepage proof claim but not the others, so worth a product or legal sign-off on all three.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Kept. This is the softened proof wording ("Verify your data with cryptographic proof, without downloading") that replaced the "checks continuously" claim, and it has product sign-off. The Partners line is the same claim in the same terms. The testimonial is the quoted person's own words.


const WHY: { icon: PhosphorIcon; title: string; body: string }[] = [
{ icon: CurrencyDollar, title: "$0 egress, $0 API calls", body: "One per-TB rate. Easy to quote, no surprise bills for your customers.*" },
{ icon: ShieldCheck, title: "Durable and verifiable", body: "Erasure coded across independent providers, with cryptographic proof of storage you can show an auditor." },

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

"Durable and verifiable" / "cryptographic proof of storage you can show an auditor" is another durability and verifiability claim; see the WhySection comment.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Kept, see WhySection.

Comment thread src/components/PricingComparison.tsx Outdated
<span className="text-zinc-500">Storage</span>
<div className="grid grid-cols-2 gap-y-2 text-body-sm">
<span className="text-zinc-600">Storage</span>
<span className={`text-right ${storageClass(r)}`}>${r.storage.toFixed(2)}</span>

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Nit: the light tone uses toFixed(2) and shows "$39937.40", while the dark tone's usd() adds separators. The cost maths at 51-60 also duplicates monthlyCost() from pricing.ts, so the table and the N× headline could drift apart.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Fixed in f7afdac: the light tone uses the same usd() formatter as the dark tone. Left the duplicated cost maths for now; both read from COMPETITORS so they can't drift on price, only on formula, and I'd rather consolidate that in a change that touches nothing else.

@@ -0,0 +1,86 @@
import type { ReactNode } from "react";

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Nit: nothing imports this component.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Agreed. Leaving it this PR; it goes in the follow-up with the other dead code.

Comment thread README.md Outdated

Every route is declared once in `src/routes.tsx`. The router, the prerender list, and `sitemap.xml` all derive from it. Each route's title and description live in `scripts/routeMeta.mjs`, which the prerender bakes into static HTML and `useSeo` reads at runtime. `src/test/route-seo-parity.test.ts` fails CI if a route has no metadata.

Main pages: `/`, `/pricing`, `/solutions`, `/neocloud`, `/partners`, `/about`, `/blog`, `/support`, `/contact-sales`, plus the legal pages. `/lp/*` pages are campaign landing pages: they're `noindex`, left out of the sitemap, and never linked from the main site. Retired URLs are 301'd in `vercel.json`.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Nit: this still lists /solutions and /neocloud as main pages; they're now /workloads and /host.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Fixed in f7afdac.

Comment thread src/lib/hubspot.ts Outdated
/** Partner Apply form */
export const HS_PARTNER_FORM_GUID = "b18ae776-5b6f-42fa-a6aa-10ce63a36cb5";

/** Neocloud application form (fields listed in NeocloudApplyPage.tsx) */

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Nit: NeocloudApplyPage.tsx no longer exists; the page is HostApplyPage.tsx, though the component inside is still named NeocloudApplyPage.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Fixed in f7afdac (the comment). The component name stays NeocloudApplyPage for now.

Comment thread src/components/Footer.tsx
? "Soberano por diseño. Optimizado para la IA."
: "Sovereign by design. Optimized for AI.";
const copyright = lang === "es"
? "© 2026 Fil One. Todos los derechos reservados."

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Nit: the copyright year is hardcoded; new Date().getFullYear() would keep it current.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

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

Agreed in principle, but this site prerenders at build time, so new Date() would freeze at the build date anyway. Leaving it hardcoded; it's one character a year.

Chris Rocco and others added 6 commits October 2, 2026 15:39
The comparison table's Fil One egress cell reads "Free" with a footnote marker. The marker and the footnote link to #reasonable-use, the FAQ item further down the pricing page, which now opens when the page hash points at it. FAQ items take an optional id for this.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154ZHemYuS9n2fYnkFSFyxe
…L-1386)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154ZHemYuS9n2fYnkFSFyxe
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154ZHemYuS9n2fYnkFSFyxe
- FeaturesSection: "Designed for 99.999999999% durability", no replication claim; egress body says reads are included subject to reasonable use.
- routeMeta: homepage and Workloads descriptions and JSON-LD say "no egress penalties".
- Jump targets: drop the per-element scroll-mt-header (and the FAQ's scrollMarginTop) so only the global scroll-padding-top applies; the FAQ re-aligns after its panel opens.
- Calculator: egress slider capped at 10x storage, so the headline can't advertise the pattern the reasonable-use policy excludes.
- Barcelona (EN and ES): the "x cheaper than AWS" stat is computed from pricing.ts; Spanish docs button no longer has a double arrow.
- Floating support button: out of the tab order and aria-hidden while hidden; label localised.
- PricingComparison: thousands separators on the light tone.
- README page list and the hubspot.ts comment updated.

Not changed, on purpose: the WhySection and Partners proof wording has product sign-off; trailing-slash redirect and the mobile menu focus trap go to a follow-up.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0154ZHemYuS9n2fYnkFSFyxe
@christopherrocco

Copy link
Copy Markdown
Contributor Author

Thanks Richard, that was a useful pass. Everything is addressed in f7afdac except where noted on the inline threads.

Fixed: FeaturesSection durability and egress wording, homepage and Workloads meta/JSON-LD egress wording, the double scroll offset on jump targets, the uncapped calculator multiple (egress slider now tops out at 10x storage), Barcelona's hardcoded "20×" (now computed from pricing.ts, EN and ES), the double arrow on the Spanish docs button, the floating support button's tab order and label, thousands separators in the light pricing table, the README page list, and the hubspot.ts comment.

Kept on purpose: "Designed for 11 nines" in the meta and llms files, and the proof wording on Why Fil One and Partners. Those are the softened forms that product approved; I've corrected the PR description, which overstated what was removed.

Follow-up PR: trailing-slash redirect in vercel.json, the mobile menu focus trap, SplitFeatureSection and other dead code, the /lp route meta, and the 39 landing pages' egress wording.

Still to do by hand before merge: submit one form each on Support and Host apply on the preview. Doing that now.

@christopherrocco
christopherrocco marked this pull request as ready for review October 2, 2026 20:28

@RichardHerold RichardHerold left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Thanks Chris, the fixes in f7afdac check out. The 11 nines and proof wording are fine on the basis of product's sign-off, and the follow-ups (trailing-slash redirects, mobile menu focus trap, dead code, /lp egress wording) are noted. Please merge once the Support and Host apply test submissions go through on the preview.

@christopherrocco
christopherrocco merged commit b8a7b23 into main Oct 5, 2026
5 checks passed

This branch was successfully deployed

1 active deployment
Preview — f7afdac1 Deployed Oct 2, 2026 by vercel[bot]
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.

3 participants