Skip to content

chore: remove legacy sveltekit monorepo - #2

Merged
neramc merged 16 commits into
mainfrom
claude/linux-distro-webapp-astro-5dn8qn
Oct 3, 2026
Merged

neramc merged 16 commits into
mainfrom
claude/linux-distro-webapp-astro-5dn8qn

Conversation

@neramc

@neramc neramc commented Oct 3, 2026

Copy link
Copy Markdown
Owner

The project restarts from scratch as a single Astro site with an Adwaita
design, per the owner's request. History is kept; every tracked file of the
SvelteKit + Hono/Workers monorepo is removed so nothing legacy leaks into
the new codebase.

Co-Authored-By: Claude Opus 5.5 noreply@anthropic.com
Claude-Session: https://claude.ai/code/session_01J8A7WuJeLxG7aBvK6xfgC9

claude added 16 commits October 3, 2026 09:14
The project restarts from scratch as a single Astro site with an Adwaita
design, per the owner's request. History is kept; every tracked file of the
SvelteKit + Hono/Workers monorepo is removed so nothing legacy leaks into
the new codebase.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J8A7WuJeLxG7aBvK6xfgC9
Single Astro 7 app (static output, Vercel adapter with static headers and
CSP, MDX, sitemap with ko/en, Pagefind) on Bun, TypeScript strictest,
Biome, Vitest and Playwright. Adds the new CLAUDE.md, the approved plan
(docs/plan.md), the decision log, content guide, vercel.json with security
and cache headers, CI, and a SessionStart hook for cloud sessions.

Refs: docs/plan.md §2, §9, §10 (phase 0)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J8A7WuJeLxG7aBvK6xfgC9
- libadwaita 1.10 tokens ported to CSS with light-dark() (system / light /
  dark via data-theme); two documented AA deviations (ADR-0009)
- Adwaita Sans/Mono 51.0 subsets via the Astro Fonts API, Hangul from
  system fonts; Adwaita symbolic icons inlined at build (ADR-0010)
- adw components: Button, Card, BoxedList, ActionRow, ExpanderRow,
  StatusPage, Banner, Callout, Badge, Kbd, ViewSwitcher, Icon, toast
- site chrome: header bar with GNOME-style primary menu (Popover API,
  style switcher, language), mobile view-switcher bottom bar, footer
- ko/en dictionaries and locale-aware routing helpers
- distro catalog schema + taxonomy, Fedora reference entry, validator
- prose/Prism styles, copy-code; CSP hashes for every inline script/style
  (ADR-0011); dev-only /design showcase

Refs: docs/plan.md §4, §5.2

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J8A7WuJeLxG7aBvK6xfgC9
… workflow

- http client: descriptive LinuxhubBot UA, robots.txt check per host
  (Crawl-delay honored), per-host pacing ≥ 1 s, retries with backoff for
  429/5xx only, ETag/Last-Modified revalidation cache
- shared Zod schemas for releases, mirrors, history and status
  (src/lib/data-schemas.ts) used by both the sync and the site
- run.ts: independent sources, schema + host-allowlist + regression checks,
  deterministic output (diff only on real changes), release history,
  failure tracking that keeps the last good data
- helpers: checksum files (GNU/BSD/PGP-wrapped), autoindex listing,
  natural version order, endoflife.date, GitHub releases, SourceForge RSS
- fedora (releases.json + endoflife) and arch (releng + mirror status)
- geo datasets for mirror ranking from Natural Earth + IANA tzdata
- .github/workflows/sync.yml: releases every 6 h, mirrors daily, validate,
  type-check, commit to main, optional deploy hook, failure issue
- unit tests for parsers and the host allowlist

Refs: docs/plan.md §6, §7; ADR-0003, ADR-0004

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J8A7WuJeLxG7aBvK6xfgC9
- home, catalog with URL-state filters/sort, distro detail (facts, official
  links, related distros, JSON-LD), 404, about (data, privacy, bot, credits)
- download wizard: server-rendered default + progressive cascade
  (version → edition → arch → file type → mirror), checksum copy, signature
  and torrent links, remembered choice
- nearest official mirror: /api/geo (Vercel geolocation, no-store) with a
  time-zone fallback; ranking in src/lib/mirrors.ts (tested); compact static
  /data/mirrors/<slug>.json and /data/releases/<slug>.json endpoints
- install guide page with MDX data components (Latest, IsoName, Checksum,
  VerifyCommand, Steps, Tabs, Anchor), TOC and source citations
- Linux guide index/chapter templates, distro finder (attribute-based,
  explained scoring, tested), side-by-side compare, family tree + timeline,
  release news + RSS, Pagefind search dialog with Korean particle handling
- adw component CSS consolidated into src/styles/adwaita.css
- scripts/serve.ts serves dist/ for preview/e2e (astro preview is not
  available with the Vercel adapter once a server route exists)

Refs: docs/plan.md §3, §6, §8

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J8A7WuJeLxG7aBvK6xfgC9
Shared MDX partials (ko/en) for verifying a download, writing a bootable
USB drive, booting from it (per-vendor keys, Secure Boot variants) and
preparing Windows for dual boot. Fedora overview + install guide in both
languages as the template for every other distro; versions, file names and
checksums come from synced data. Content guide: no bare URLs.

Refs: docs/content-guide.md, docs/plan.md §5.2

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J8A7WuJeLxG7aBvK6xfgC9
…aders

- /og/default.png, /og/learn.png and /og/<distro>.png rendered at build with
  resvg from an SVG template (distro logo + name + English tagline) using
  small static Adwaita Sans instances (Latin only)
- experimental.clientPrerender: hover prefetch goes through the Speculation
  Rules API
- vercel.json: cache headers for /og/ and /data/; robots.txt with sitemap

Refs: docs/plan.md §8

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J8A7WuJeLxG7aBvK6xfgC9
28 Playwright tests against the production build: catalog filters and URL
state, distro detail and locales, 404, theme persistence, download wizard
(default link, edition cascade, nearest-mirror link with a mocked /api/geo),
finder, compare, search, install guide anchors, and axe WCAG 2.2 AA on key
pages in light and dark.

Fixes found by the tests: the mirror suggestion now rebuilds the download
link from data (it kept the official default before), and the size label on
the download button no longer drops below AA contrast.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J8A7WuJeLxG7aBvK6xfgC9
Fails CI when performance drops below 95 or accessibility, best practices
or SEO below 100, or when CLS/TBT regress. Local baseline on the current
build: performance 98–99, everything else 100, CLS 0, TBT 0 ms.

Refs: docs/plan.md §8

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J8A7WuJeLxG7aBvK6xfgC9
- Ubuntu + Kubuntu/Xubuntu/Lubuntu/Ubuntu MATE: supported cycles from
  endoflife.date, files and SHA-256 from SHA256SUMS on releases.ubuntu.com /
  cdimage.ubuntu.com (signature, torrent when published), newest point
  release per arch; Ubuntu mirrors from Launchpad's official CD-image list
- Debian stable: version from the archive Release file, netinst (amd64 +
  arm64) and live images per desktop from cdimage.debian.org; mirrors from
  Mirrors.masterlist, kept only when they answer over HTTPS
- Linux Mint: latest + previous series from the official ISO origin with
  the signed sha256sum.txt (the mirror page sits behind a bot challenge)
- Pop!_OS: System76 build API (generic/NVIDIA, amd64/arm64)
- releases past end of standard support are no longer offered; artifacts
  are ordered x86_64 first
- wizard labels the official origin server instead of claiming 'nearest'
  when a distro has no mirror list

Refs: docs/plan.md §6, §7

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J8A7WuJeLxG7aBvK6xfgC9
scripts/serve.ts now replays the per-page headers Astro writes into
.vercel/output/config.json, so e2e sees the same CSP as Vercel. New test:
no CSP violations across key pages, including Pagefind's WebAssembly search.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J8A7WuJeLxG7aBvK6xfgC9
Each scripts/sync/sources/<slug>.ts default-exports a DistroSource (or an
array); index.ts loads them all and rejects duplicate slugs, so adding a
distro is a single new file.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J8A7WuJeLxG7aBvK6xfgC9
- docs/deploy.md: Vercel project setup, SITE_URL, Actions permissions,
  optional deploy hook, pre-deploy checks, smoke tests, operations
- scripts/sync/docs.ts (bun run sync:docs) regenerates the per-distro table
  in docs/data-sources.md from the catalog, sync modules and synced data

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J8A7WuJeLxG7aBvK6xfgC9
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J8A7WuJeLxG7aBvK6xfgC9
26 researched catalog entries (facts from official sources with citations,
official logos with source/license/trademark notes, SVGO-optimized) and the
first synced release/mirror data (Arch, Debian, Fedora, Ubuntu + flavors,
Linux Mint, Pop!_OS), plus the regenerated data-source table. Remaining
distributions follow as their research and verification complete.

Refs: docs/plan.md §5.1, §5.3

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J8A7WuJeLxG7aBvK6xfgC9
What Linux is, history, why Linux, distributions, desktop environments, and
X11 vs Wayland — written from primary sources (kernel.org, gnu.org,
freedesktop/Wayland, project announcements), each with cited sources and
a review date. Remaining chapters follow.

Refs: docs/plan.md §10 (phase 6)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J8A7WuJeLxG7aBvK6xfgC9
@neramc
neramc merged commit a1b9a0c into main Oct 3, 2026
1 check passed
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.

2 participants