Skip to content

Replace Quartz with the Astro site (i.usedtocode.com cutover) - #18

Merged
anibal merged 3 commits into
mainfrom
astro-import
Aug 26, 2026
Merged

Replace Quartz with the Astro site (i.usedtocode.com cutover)#18
anibal merged 3 commits into
mainfrom
astro-import

Conversation

@anibal

@anibal anibal commented Aug 26, 2026

Copy link
Copy Markdown
Owner

Migrates the full Astro site from anibal/website@57815a2 into this repo, replacing the Quartz build. This repo keeps serving i.usedtocode.com via GitHub Pages — DNS is already a Namecheap CNAME to anibal.github.io, so merging this PR is the cutover.

What changes

  • Quartz tree deleted (history preserved below this commit for rollback); Astro site imported (src/, public/, scripts/, brain/, reference/, docs).
  • .github/workflows/deploy.yml (new): build → upload-pages-artifactdeploy-pages on push to main. ci.yml (Lighthouse ship gates) unchanged.
  • public/CNAME keeps the custom domain bound through repo re-wipes.

Legacy URL surface (SEO continuity)

GH Pages serves static files only — no _redirects. The old Quartz URLs keep working via:

  • legacyStubs build integration (src/lib/legacy-stubs.mjs): 71 meta-refresh + canonical stubs (10 post .html twins, year/month/day archive folders, 47 tag pages) + /index.xml and /sitemap.xml feed copies.
  • Byte-identical old OG assets committed under public/ (hash-verified against live): static/og-image.png, index-og-image.webp, 10 per-post *-og-image.webp.
  • Native GH Pages 301s: extensionless /dir/dir/.
  • Accepted 404s: /draft/* (noindex), NFD ñ alias (404'd on the old site too).

scripts/verify-migration.mjs asserts the whole surface against production after merge. Plan + record: DEPLOY-GITHUB-PAGES.md.

anibal added 3 commits August 25, 2026 19:20
The i.usedtocode.com Astro build (anibal/website@57815a2) replaces the
Quartz static site. Hosting stays GitHub Pages; deploy.yml (new) builds
and deploys on push to main, ci.yml keeps the Lighthouse ship gates.
Old Quartz URLs keep working: legacyStubs build integration writes 71
meta-refresh+canonical stubs, /index.xml + /sitemap.xml feed copies,
and the old OG images are committed byte-identically under public/.
Quartz history remains below this commit for rollback archaeology.
Pre-existing debt surfaced by the migration branch's first CI runs
(branch pushes never triggered CI): Lighthouse 12.6.1 fails
target-size on the header (.wordmark 17.7px, .cli-item 16.2px boxes,
rows 5px apart) and label-content-name-mismatch on the wordmark
(aria-label lacked the visible ~/anibal-rojas text).

Fix: padding-block 5px on .wordmark/.cli-item (boxes ≥26px at every
breakpoint; baseline rows keep every label in place), aria-label now
leads with the visible text. Validated locally (devtools throttling):
/es/contacto/ and the ñ post score a11y 1, perf 1.
… avif

Pre-existing debt surfaced by the migration branch's first CI runs:
the about/sobre-mi portrait is the LCP element but carried
loading="lazy" — 69% of LCP was load delay (the in-viewport image's
download started 1.6s in).

- AboutPage: portrait eager + fetchpriority=high + head preload
  (imagesrcset 1x/2x) so the fetch starts with the head, not when the
  scanner reaches the img.
- Recompressed the portrait avifs (560x700 q40: 20.2→8.1KB; 280x350
  q50: 7.1→4.7KB) — indistinguishable at 280 CSS px; git keeps the
  originals.
- Base: font preloads fetchpriority=low — fonts are font-display:
  optional (they never block render or LCP; slow connections render
  the metric-matched fallback by design), so under contention the LCP
  image wins the pipe.

Full local gate: 11 URLs × 3 runs, all assertions pass (about LCP
≈1.44s local, CI ran ~35ms faster than local on identical code).
@anibal
anibal merged commit d77eb41 into main Aug 26, 2026
1 check passed
@anibal
anibal deleted the astro-import branch August 26, 2026 01:55
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.

1 participant