Repository navigation
Rebuild the site on the approved tighter-site design (FIL-1386) - #131
christopherrocco merged 69 commits into
Conversation
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
"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
"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
left a comment
There was a problem hiding this comment.
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:61andBarcelonaLandingPageES.tsx:90hardcode it. At $5.99/TB the table on the same page gives $1,132.50 against $59.90, about 18.9×.timesCheaperThanAws()insrc/lib/pricing.tscould compute it. - Double arrow on the Spanish docs button.
BarcelonaLandingPageES.tsx:241passesctaLabel="Ver documentación →", andIntegrationsSectionnow appends anArrowUpRighticon 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/solutionsdoes. Adding"trailingSlash": falsetovercel.jsonwould 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.
| <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." /> |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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".
| 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 |
There was a problem hiding this comment.
Same 11 nines claim here (and at line 201, plus public/llms.txt:95).
There was a problem hiding this comment.
Kept, same reason as index.html.
| { 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." }, |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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", |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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." }, |
There was a problem hiding this comment.
"Durable and verifiable" / "cryptographic proof of storage you can show an auditor" is another durability and verifiability claim; see the WhySection comment.
There was a problem hiding this comment.
Kept, see WhySection.
| <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> |
There was a problem hiding this comment.
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.
There was a problem hiding this comment.
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"; | |||
There was a problem hiding this comment.
Nit: nothing imports this component.
There was a problem hiding this comment.
Agreed. Leaving it this PR; it goes in the follow-up with the other dead code.
|
|
||
| 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`. |
There was a problem hiding this comment.
Nit: this still lists /solutions and /neocloud as main pages; they're now /workloads and /host.
| /** Partner Apply form */ | ||
| export const HS_PARTNER_FORM_GUID = "b18ae776-5b6f-42fa-a6aa-10ce63a36cb5"; | ||
|
|
||
| /** Neocloud application form (fields listed in NeocloudApplyPage.tsx) */ |
There was a problem hiding this comment.
Nit: NeocloudApplyPage.tsx no longer exists; the page is HostApplyPage.tsx, though the component inside is still named NeocloudApplyPage.
There was a problem hiding this comment.
Fixed in f7afdac (the comment). The component name stays NeocloudApplyPage for now.
| ? "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." |
There was a problem hiding this comment.
Nit: the copyright year is hardcoded; new Date().getFullYear() would keep it current.
There was a problem hiding this comment.
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.
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
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0154ZHemYuS9n2fYnkFSFyxe
…386) 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
|
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. |
RichardHerold
left a comment
There was a problem hiding this comment.
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.
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-updatesso her HubSpot and copy work ships with it.One commit per slice, so each page can be reviewed on its own.
Pages
//workloads/solutions/host/neocloud./host/applykeeps the HubSpot form/pricing/partners/partners/apply/contact-sales/blog,/blog/:slugNav and footer labels are updated in English and Spanish, and
Shell.i18n.test.tsxcovers 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→/#teamsCheck these on the Vercel preview, since
npm run devdoesn't applyvercel.json.Open items
RATES_CHECKED_ONinsrc/lib/pricing.ts). Chris owns the recheck; it's a one-line change./lpstill say "no egress fees" and follow in a separate PR.Linear
FIL-1386
Test plan
npm run lint(0 errors; the two LandingPrimitives warnings are pre-existing)npm run typechecknpm test(145 pass)npm run buildends with "Prerendering complete."🤖 Generated with Claude Code
https://claude.ai/code/session_0154ZHemYuS9n2fYnkFSFyxe