Skip to content

v2.0.0 RELEASE

Latest

Choose a tag to compare

@jooncco jooncco released this 14 Jul 16:30

✨ Highlights

  • Iron Man / HUD design system — cyan glow, scanlines, HUD frames, reactor motifs, and animated accents across every section.
  • Bilingual EN / KO — full next-intl i18n with path-prefixed routing (/ English, /ko/… Korean). UI, sections, and all 45 blog posts are translated; Korean copy uses concise 개조식 phrasing.
  • MDX blog — migrated from the legacy site, with card (bento) / list view toggle, teaser thumbnails, categories, always-visible heading anchors, and per-post OG images.
  • Redesigned sections — Hangul jamo-by-jamo typewriter in About, mission-log Projects, reactor-cluster Skills, bento Portfolio, infinite-scroll Experience, and a HUD globe on Contact.
  • Reworked Now page and an updated projects/experience/skills set.
  • SEO-first — per-route metadata, sitemap.xml, robots.txt, OpenGraph images, and locale alternates.

🧱 Stack modernization

  • Migrated to TypeScript (strict) and Next.js 15 App Router with React Server Components.
  • Tailwind theme tokens via tw-colors; next-themes light/dark.
  • Vitest + Testing Library test suite (108 tests).
  • Contact form via EmailJS, sourced entirely from env (NEXT_PUBLIC_*).
  • Still a GitHub template — clone, set env, deploy.

⚠️ Breaking / migration notes

  • Full rewrite from the 1.x JavaScript site — not an in-place upgrade.
  • Routing moved under app/[locale]/; all links are locale-aware.
  • Requires Node 24.x and environment variables for EmailJS + CP handles (see .env.example / README).

🐛 Fixes since 1.x

  • Contact form: read NEXT_PUBLIC_* via static references so keys inline into the client bundle (dynamic process.env[name] never inlined → form reported "not configured").
  • next-intl ENVIRONMENT_FALLBACK at build: pass an explicit timeZone to NextIntlClientProvider and call setRequestLocale in every generateMetadata.
  • Security: patched dependency advisories — next-mdx-remote 5→6, vitest 2→3.2.7, vite 6.4.3, esbuild, postcss.
  • Light-mode contrast: fixed invisible text from the tw-colors base ↔ Tailwind text-base collision.
  • Portfolio overlay: legible title/description on light thumbnails.
  • Dev crash ("Maximum call stack"): removed unused Material Tailwind.
  • Blog hydration mismatch: rehype-unwrap-images.
  • Pinned Node engine to 24.x for reproducible builds.

Full Changelog: v1.0.1...v2.0.0