Commit b4267163 by PLN (Algolia)

Pre-compact cleanup: CHANGELOG + archive

parent 6bc6419e
# CHANGELOG
## Sprint 1 — 2026-09-06 · the blog comes home
### Added
- `/blog` content section: unified remark→rehype pipeline in `lib/markdown.ts` (GFM, remark-directive escape-hatch stub for future Hydra/Strudel islands, shiki build-time highlighting via rehype-pretty-code, figure/caption centering), draft:true prod filtering with dev SHOW_DRAFTS, `/blog` index + `/blog/[slug]` SSG routes with generateMetadata/OG, fixture post `hello-world-again` — commits 8513a37, 87e54dd on feat/blog (#blog-1).
- `yarn post <slug>` / `yarn post:image <slug> <file>` — new-post scaffold + image-drop helpers (#blog-2).
### Changed
- `content/posts``content/blog` (two 2021 entries demoted `draft:true`); `/post/[id]` route removed; remark/remark-html retired for the unified chain (#blog-1).
- Static export: `output:'export'`, unoptimized images; the two parvagues `revalidate` ISR exports removed — rebuild-on-push replaces ISR (ratified) (#blog-3, 87e54dd).
- Fixture image codec: 9.3M PNG → 145K 1600px JPEG (original kept in public/images) (#blog-4, 1ebd5f7, 6bc6419).
### Fixed
- Jest under Yarn PnP: `transformIgnorePatterns` now transforms the ESM-only unified chain (PnP cache zips carry `/node_modules/` segments, so the old exclusion skipped them) (#blog-5, 4ea7f05).
- e2e smoke route `/post/hello-world``/blog/hello-world-again` (#blog-5).
### Infra
- Repo home = git.nech.pl/pln/www (origin flipped; github demoted to secondary `github` remote); 651M stray pre-hoist `next/` detritus deleted; main reconciled (7b5fdf9).
- me.nech.pl cutover complete: erable nginx vhost (games/opal pattern), certbot --webroot, TLS enabled, HTTP 301, rsync deploy — HTTPS live, cert to 2026-12-05, renewal via certbot.timer (SRE e30cbc0 + TLS flip).
### Doctrine
- Blog content ships as neutral fixtures — prose is the owner's via git; no Claude-authored "draft in your voice" scaffolds (see memory `feedback_no-claudespeak-prose`).
- Builder briefs carry: fixture-final clause, report-don't-fix clause, and the documented zero-test baseline means "No tests found" IS green.
[
{
"id": "blog-1",
"subject": "Blog core: unified pipeline + /blog routes + drafts + fixture",
"completedAt": "2026-09-06",
"learnings": "Yarn PnP's virtual /node_modules/ segments inside cache zips mean a blanket transformIgnorePatterns exclusion silently skips ESM-only deps (unified chain) — exclude only css module mocks, not node_modules."
},
{
"id": "blog-2",
"subject": "new-post + add-image CLI helpers (yarn post, yarn post:image)",
"completedAt": "2026-09-06",
"learnings": null
},
{
"id": "blog-3",
"subject": "Static export conversion + parvagues ISR removal",
"completedAt": "2026-09-06",
"learnings": "Static export default (no trailingSlash) emits out/blog.html + out/blog/<slug>.html — the erable vhost try_files $uri $uri.html matches it natively; no mode drift between next.config and nginx needed."
},
{
"id": "blog-4",
"subject": "Repo rationalization: origin → git.nech.pl, next/ detritus deleted, main reconciled",
"completedAt": "2026-09-06",
"learnings": "git.nech.pl main had a stray feat/v0.2 merge (merge-base 1fd386d, not ancestor of HEAD); `merge -s ours` absorbed it with empty content diff — history reconciled without data change."
},
{
"id": "exit-1",
"subject": "me.nech.pl cutover: vhost + certbot webroot + TLS + 301, HTTPS live on erable",
"completedAt": "2026-09-06",
"learnings": "nginx 1.10.3 won't blink on the wire when -t fails — reload refuses and the old in-memory config keeps serving; the catch happens pre-reload. Also: a real-DNS 200 during cutover is ambiguous (Vercel still answers) — fingerprint via a route only one server has (/blog) or Server headers."
},
{
"id": "exit-2",
"subject": "Fixture image codec fix (9.3M PNG → 145K JPEG) + toolchain incident",
"completedAt": "2026-09-06",
"learnings": "PNG is the wrong codec for photographic renders at any resize; JPEG q84 at 1600px was 64× lighter. Incident: something pruned Node 20's lib/node_modules (likely a disk-hygiene pass) leaving broken bin shims — nvm trees are toolchain, not cache; guard cleanup there."
}
]
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment