Point published S3 endpoints at filonecontent.com (FIL-627) - #115
Merged
Conversation
Every code sample on the site tells customers to configure their tooling against eu-west-1.s3.fil.one. User data is moving to its own registrable domain so that abuse of uploaded content cannot flag the domain serving the console, this site, the docs and company email (FIL-627). Nothing here is functional — all 35 occurrences were documentation or copy-paste samples — but they are what customers actually configure, and the two llms.txt files are explicitly crawlable by GPTBot/ClaudeBot/PerplexityBot, so a stale value gets ingested and repeated back to people. Centralises the value in src/lib/s3-endpoint.ts, following the pricing.ts pattern of importing a constant into the sample template literals. A plain constant is right here, unlike console-url.ts, which must stay a function because it reads window.location and pre-rendering would freeze the build-time host into every page; this value does not depend on the visitor's host. The two files under public/ are static and React never touches them, so they are edited directly and centralisation is inherently partial. s3-endpoint.test.ts therefore scans src/, public/ and scripts/ on disk and fails if the old hostname reappears anywhere — verified to fail by reintroducing one. It matches the s3 host specifically, so www.fil.one and docs.fil.one are unaffected. Also fixes the rclone advice in Support.tsx and SupportBcnES.tsx, which pointed at a bare s3.fil.one that has never had a DNS record and so never resolved. Refs FIL-627. RFC: rfcs/2026-07-user-data-domain-separation.md Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
pyropy
marked this pull request as ready for review
August 18, 2026 09:31
…t-domain-docs main migrated the landing pages to the LandingPage shell, which dropped the code samples from 13 of the pages this branch had touched. Took main's version of those files and re-applied S3_ENDPOINT only where a sample survived: AgentsLandingPage (boto3, JS, Go), MigrateFromS3LandingPage (boto3, JS), AgentReadableLandingPage (llms.txt mock-up) and Support (rclone prose, on main's reworded "S3-compatible" copy). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Every code sample on the site tells customers to configure their tooling against
eu-west-1.s3.fil.one. User data is moving to its own registrable domain so thatabuse of uploaded content cannot flag the domain serving the console, this site,
the docs and company email — see the RFC.
Merging publishes a hostname to every visitor and every AI crawler. If it isn't
serving yet, we are advertising an endpoint that fails TLS.
filonecontent.comand the regional CNAMEs.eu-west-1actually serving on the new hostname. That is the only region this site advertises, sous-east-1is not a gate here. Aurora must have issued a certificate for it:eu-west-1, so the console and the site quote the same endpoint.Scope
Nothing here is functional. All 35 occurrences were documentation or
copy-paste samples; no navigation, config, redirect or sitemap value referenced
the S3 host. The risk is entirely that a customer copies a stale sample.
src/**(19 files)${S3_ENDPOINT}public/llms.txt,public/llms-full.txtWhy a constant, and why only partly
Centralised in
src/lib/s3-endpoint.ts, following thepricing.tspattern —those same sample template literals already interpolate
PRICE_PER_TB_MONTH.A plain constant is correct here, and deliberately not a function like
console-url.ts. That helper must be called per render because it readswindow.location, and pre-rendering would otherwise freeze the build-time hostinto all 60 static pages. This value doesn't depend on the visitor's host.
The two
public/files are static and React never touches them, socentralisation is inherently partial and nothing stops the next landing page
pasting a literal hostname back in.
s3-endpoint.test.tscloses that gap: itscans
src/,public/andscripts/on disk and fails if the old hostnamereappears, naming the offending files. Verified by reintroducing one —
It matches the
s3host specifically, sowww.fil.oneanddocs.fil.oneareuntouched — otherwise the check would be unfixable and someone would delete it.
Easily-missed cases, all covered
public/llms-full.txt:155— PyArrowendpoint_overrideis schemeless, so ahttps://…search misses it. Hence the separateS3_ENDPOINT_HOSTexport.LogRetentionLandingPage.tsx— a Vector TOML sink, not boto3.MlTrainingLandingPage.tsx—fsspecand HuggingFacestorage_options.DeveloperSection.tsx/AgentsLandingPage.tsx— GoBaseEndpoint.DataControlLandingPage.tsx— marketing prose, not a code block.AgentReadableLandingPage.tsx— a mock-up ofcurl https://www.fil.one/llms.txt, a hand-maintained duplicate of the real file. Now interpolated, so it can't drift from it on this value.Drive-by fix
Support.tsxandSupportBcnES.tsxtold users to "point rclone ats3.fil.one"— a bare hostname that has never had a DNS record and so never resolved. Now
eu-west-1.s3.filonecontent.com, which will.Verification
npm run typecheckclean,npm run lint0 errors (8 pre-existing warnings inuntouched
src/components/ui/*), 27 tests pass, build + 60-route prerender green.Checked against the built output, which is what catches an interpolation landing
in a plain string rather than a template literal:
dist/contains 0 unrendered${S3_ENDPOINT}occurrencesdist/contains 0 occurrences of the old hostnamedist/llms.txthas 4 anddist/llms-full.txt5 — matching the originals exactlySpot-checked in the prerendered HTML: the Vector TOML sink, the boto3 sample on
the home page, the schemeless PyArrow line, and the rclone copy all render correctly.
Note
docs.fil.oneis a separate Vercel project whose source is in neither this reponor
fil-one, and this site points users there as the authoritative "S3compatibility reference" for exactly these connection details. Whatever endpoints
it documents are out of reach of this PR and need their own pass.
🤖 Generated with Claude Code