Monorepo for Tangled tangled.org

web: new landing page and sveltekit 3 migration #4601

Closed oppi.li
targeting next-dev from tomantas.tngl.sh/tangled-core:web-landing
Closed opened by and assigned to oppi.li
targeting next-dev from tomantas.tngl.sh/tangled-core:web-landing

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 #

  1. 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). $lib and the other aliases become #lib/* subpath imports with explicit extensions, svelte.config.js folds into vite.config.ts, server env is declared in src/env.ts, and $app/environment is now $app/env. No behaviour change.
  2. 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 old components/home, /about and the deps only they used.
  3. web: only link user-supplied urls over http(s): safeHref for hrefs that come from records (profile links, repo website, blob view).
  4. 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.
  5. 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, noindex on error pages and search, and updated robots.txt and llms.txt.
  6. 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 except oauth-client-metadata.test.ts, which also fails on next-dev itself: the org.tangled.knot.block lexicon isn't in the OAuth scope yet. Not touched here.
  • pnpm build: OK
  • Commit messages pass .tangled/hooks/commit-msg-lint.sh --range

Screenshots #

Image

Image

Signed-off-by: Tom Antas tom@altalogy.com

Commits 0