Skip to content

Dev Roadmap

Public dev log for thelingwu.com. Build in public — product decisions, tech choices, and the to-do list left in the open.

Manual operations (you handle these)

  • Translation review — 13 articles are AI-translated (voice prompt applied); needs human review for tone and detail
  • Project deck rebuild — HTML slides are low quality; rebuild from Figma source (Anchor especially)

Pending

  • Side-by-side image component — needs new MDX component; no current article uses adjacent images, so deferred
  • /subscribe route — Substack Building Flows landing; the /design hero subscribe CTA is parked until this ships
  • Persona / format frontmatter on articles (per VI §8.6) — 14 mdx files need persona: builder | designer migration

Done

2026-05 · Full VI design-system v1 landing

  • Brand library vendored into src/design-system/ (tokens, Tailwind preset, six component primitives)
  • Persona-aware ambient background: master orange / designer teal / neutral grey; /projects flips to designer, /photos flips to neutral; 1.4s cross-fade on swap
  • GradientMeshFlow replaces three.js + gsap (First Load JS 600 KB+ → 101 KB)
  • BrandFlow — SVG streams + six accent-tinted particles, CSS animateMotion, no JS animation loop
  • CursorHalo accent-aware (rAF-coalesced pointermove, prefers-reduced-motion respected)
  • TopNav rebuild: Bar + locale-aware Wordmark + per-item hover colour (writing orange / projects teal / photos grey)
  • Footer restored to approved layout with token migration
  • PageTitle / PullQuote / CTAButton / Bar / Wordmark / Tag shared primitives
  • Locale-aware prose font: [lang="zh-Hant"] Noto Serif TC (its sibling-Latin handles English to harmonise; PingFang dropped to prevent sans bleed); [lang="en"] Fraunces
  • Body 15px → 16px (VI §2.2 floor), strong 600 → 500 (BI §3 「重量點睛」), h3 family display → body
  • text-content 87% opacity sitewide (headings + body)

2026-05 · SEO + deploy

  • Article + Person + WebSite + SearchAction JSON-LD wired (generators existed but were never rendered)
  • /en/feed.xml (zh + en RSS), enriched with dc:creator + category + content:encoded
  • Article description fallback chain (excerpt > meta_desc > body 160 chars; never falls back to title)
  • Sitemap lastModified lifted to build-time constant (was new Date() per fetch)
  • Viewport export migrated to Next 15 schema with media-aware themeColor
  • OG card token alignment (hex literals → VI palette + Bar mark + bilingual wordmark)
  • CSP unsafe-eval dev-only fix (root cause of dead onClick / no hydration)
  • CSP allowed static.cloudflareinsights.com (cleared every-page console error → Best Practices score)

2026-05 · Architecture + performance

  • Design-system vendored into thelingwu.com (cross-repo file: dep failed in CI)
  • Dropped Noto Serif TC weight 700 (zero usages → ~36 KB gzip CSS saved)
  • Dropped Fraunces SOFT axis (zero usages → ~20 KB woff2 saved)
  • Rybbit script switched to lazyOnload (no longer competes for critical bandwidth)
  • Article hero fetchPriority="high" + first photo priority (LCP rescue)
  • 25-file text-neutral-* token migration (→ text-content / text-muted / border-line)

2026-04 · earlier

  • standalone output (Docker image 900MB → 65MB)
  • Host migration (Alibaba Cloud HK → Hetzner Singapore)
  • Google Search Console submission
  • Cloudflare AI bot unblock
  • Ghost naming cleanup (ghost.ts → mdx.ts, GhostPost → Post, 0 lingering refs)
  • Image blur placeholder (feature + inline, sharp blur + cache)
  • Tailwind design system integration (semantic tokens, removed !important, removed typography plugin)
  • Loading skeletons (sitewide pulse animation)
  • Ghost CMS dead-code removal (kg-* CSS, ArticleBookmark, unused types)
  • Footer social links (LinkedIn/Instagram/GitHub/RSS)
  • Locale-aware date formatting
  • Brand metadata update (Building Flows)
  • next/image migration
  • Article TOC + section anchors
  • llms.txt
  • Sitemap alternates (xhtml:link hreflang)
  • RSS link in head
  • Breadcrumb JSON-LD
  • IndexNow ping
  • Skip-to-content link
  • PWA manifest
  • Dynamic OG images
  • Error boundary
  • Reading progress bar
  • Warm-grey background (Notion-style)
  • Image blur placeholder (CSS fade-in)
  • RSS/Atom feed
  • hreflang alternate tags
  • Custom 404 page
  • zh / en bilingual support
  • Nav scroll collapse
  • Locale-switch preserves scroll position
  • Photos gallery page
  • Browser toolbar follows light/dark mode