Replaces the signed-out home page with the new landing page we agreed on, and moves the web app to SvelteKit 3. Each commit stands on its own and passes pnpm check, pnpm lint and pnpm test.
Commits #
- web: migrate to sveltekit 3: SvelteKit 3 and the toolchain it needs (adapter-node 6, adapter-cloudflare 8, Vite 8.3, Vitest 5, Storybook 10.6).
$liband the other aliases become#lib/*subpath imports with explicit extensions,svelte.config.jsfolds intovite.config.ts, server env is declared insrc/env.ts, and$app/environmentis now$app/env. No behaviour change. - web/landing: replace the marketing home with a new landing page: the landing page for signed-out visitors on
/, with live activity and updates served from a cache shared by all guests, newsletter sign-up, dark/light themes, a landing-style 404, and Storybook stories. Removes the oldcomponents/home,/aboutand the deps only they used. - web: only link user-supplied urls over http(s):
safeHreffor hrefs that come from records (profile links, repo website, blob view). - web: block internal fetches, add security headers, patch deps: string blobs and spindle requests only go to public https hosts (with timeouts and size caps), nosniff/Referrer-Policy/no-framing headers, and sanitize-html and markdown-it bumps.
- web/seo: canonical subpage urls, json-ld escaping, new og image: per-page canonical URLs for repo subpages, issues and pulls,
<escaped in JSON-LD, a new default OG image,noindexon error pages and search, and updated robots.txt and llms.txt. - web: rewrite the readme, add agent docs and the landing design doc: docs only.
Testing #
The web CI workflows only trigger for PRs into master, so I ran these locally in web/, rebased on the current next-dev (15c1d0ab8):
pnpm check: 0 errors, 0 warnings (on every commit)pnpm lint: clean (on every commit)pnpm test: passes exceptoauth-client-metadata.test.ts, which also fails onnext-devitself: theorg.tangled.knot.blocklexicon isn't in the OAuth scope yet. Not touched here.pnpm build: OK- Commit messages pass
.tangled/hooks/commit-msg-lint.sh --range
Screenshots #
Signed-off-by: Tom Antas tom@altalogy.com