Commit Graph

9 Commits

Author SHA1 Message Date
Joel Hooks 53207f60ca Add short ADR route aliases, resolve them to canonical Convex slugs, and redirect legacy full-slug ADR URLs 2026-03-07 21:55:25 -08:00
Joel Hooks 5deb2eebc9 feat(content): migrate adr/discovery reads to convex 2026-02-28 10:36:57 -08:00
Joel Hooks 923381353e feat(CFP-2): Read articles from Convex instead of filesystem
Codex implement step completed — tsc clean, build passes.
Committed manually because codex didn't commit (prompt strengthened).
Also: stronger commit requirement in story-pipeline implement prompt.
2026-02-27 09:49:47 -08:00
Joel Hooks 1077942d50 revert(CFP-2): restore filesystem article reads — async Convex breaks PPR prerender
CFP-2 made getPost/getAllPosts async for Convex reads, but Next.js 16
with PPR rejects uncached async data access outside <Suspense>.
ALL article pages failed prerender with 'Uncached data was accessed
outside of <Suspense>'.

CFP-2 and CFP-3 need to land together — Convex reads require
'use cache' boundaries first.
2026-02-27 09:21:43 -08:00
Joel Hooks 561b636f52 fix(story-pipeline): retries: 2 for transient SDK failures (ADR-0156)
retries: 0 made worker restarts fatal — Inngest couldn't retry
the step on the new worker. With retries: 2, the 1s restart window
is covered by Inngest's built-in retry backoff.

ADR-0156 rewritten: blue/green port swap > drain-then-restart.
Inngest is step-level stateless — we don't need to wait for runs,
just for the current in-flight step.
2026-02-27 09:19:32 -08:00
Joel Hooks 6dfd308d40 feat(web): include ADRs and discoveries in RSS feed, sorted by date 2026-02-24 06:20:43 -08:00
Joel Hooks e7f36114c5 web: stabilize cache components build and route dynamic islands 2026-02-22 13:59:37 -08:00
Joel Hooks 39518c6c34 feat: Next.js best practices audit fixes (ADR-0108)
Error boundaries:
- app/error.tsx: route-level error recovery with reset button
- app/global-error.tsx: root layout failure handler with html/body

Loading skeletons:
- vault, memory, syslog, system, system/events, dashboard, voice
- Pulse shimmer matching each page's actual layout structure
- font-pixel labels for consistent dashboard aesthetic

Import aliases:
- Converted all relative imports (../../lib/, ../../../lib/) to @/*
- 40+ files across app/, components/site-header, components/mobile-nav
- tsconfig @/* alias was already configured, now actually used
2026-02-22 12:13:22 -08:00
Joel Hooks 016dccc295 redesign: cool finds index — full titles, readable descriptions, compact cards
- Titles wrap fully instead of truncating
- Relevance text shows complete (no line-clamp)
- Date shown as relative time (2d ago) above title, not stealing width
- Single type badge (repo/article/video) replaces full tag list
- Source URL removed from index (shown on detail page)
- Tighter card spacing for better scan density
- Re-removed duplicate self-hosting discovery (also from Vault source)
2026-02-22 08:07:35 -08:00