The Minimal Redesign

3.0.0 · 8/19/2026

Archived the View-Master reel homepage and rebuilt the site as a text-first single column, in the spirit of the small personal sites I keep coming back to.

  • Single-column layoutOne 42rem column, three small pages (home, work, projects) with a tiny history router and view transitions.
  • TypographyDM Sans + JetBrains Mono, self-hosted, plus the Lont handwriting font (built from my own handwriting) on page titles.
  • Activity tabsGitHub and Strava heatmaps combined into one toggled panel; Strava loads only when opened.
  • Rewritten bioHome is now a short personal bio with live widgets, instead of a hero and card grids.
  • Book bar/bookbar — the reading shelf returns as collapsible sections with every cover fetched at build time and self-hosted.
  • TFT match history/tft — rank, per-set match history, and a search box so anyone can look up their own NA riot id through the worker.
  • Recipes and eats/recipes — the random recipe generator returns with all nine recipes, and the food photos went from 31MB to under 1MB.
  • Patch notes revivedThis page — history recovered from the old site so the changelog survives the rewrite.

TypeScript Migration!

2.0.1 · 10/7/2025

Captured the TypeScript migration commit alongside the JavaScript cleanup, Tailwind tweaks, and Jest smoke-test fix.

  • Legacy JavaScript removalDeleted redundant .js files now backed by TypeScript implementations.
  • Tailwind content scopeRestricted the content glob to .ts and .tsx sources.
  • App styles cleanupRemoved stale App.css imports after consolidating styling into styled-components.
  • App test import fixRestored the App import so the render smoke test executes.

Major Codebase Refactoring & Organization

2.0.0 · 9/18/2025

Complete codebase overhaul with comprehensive refactoring, performance improvements, accessibility enhancements, and backend organization.

  • Shared styled-components systemCentralized design tokens and layouts; eliminated ~200 lines of duplicate styling code.
  • Navigation modernizationReplaced window.location.href calls with React Router’s useNavigate().
  • Prop validationAdded PropTypes validation across components.
  • Utility organizationCreated shared formatters and API endpoint helpers to remove duplicates.
  • AccessibilityDescriptive alt text, ARIA labels, and semantic HTML throughout.

MCP Integration & Resume Update

1.1.2 · 9/17/2025

Added a playground page for the Poke MCP Server project, updated the resume, and made Strava styling consistent.

  • Poke MCP Server pageNew playground tile for the Twitter-metrics and reminders MCP server, with auto-redirect to GitHub.
  • Resume updateLatest professional experience, skills, and achievements.
  • Lowercase month stylingConsistent lowercase month names across the Strava page.
  • Playground gridExpanded the grid to six tiles while staying responsive.

Strava Activity Links & Twitter Integration

1.1.1 · 9/13/2025

Quality-of-life improvements: clickable activity links and Twitter/X social integration.

  • Clickable activity linksStrava activity names open the full activity in a new tab, with external-link icons.
  • Twitter/X integration@ujustgotleid added to the footer and contact dialog.
  • Contact dialogLinkedIn entry shows the handle leiwuhoo instead of generic text.
  • Bug fixesRemoved a duplicate footer on the recipes page; fixed home-page tile alignment.

Major Strava Integration Update

1.1.0 · 9/12/2025

Complete real-time Strava integration in the playground: webhooks, monthly organization, and heart-rate monitoring.

  • Strava integrationActivities sync automatically via webhooks and are organized by month and year.
  • Monthly dashboardCurrent-month stats: activities, distance, time in motion, and heart rate.
  • Activity color codingDistinct colors per activity type for at-a-glance reading.
  • Heart-rate analyticsAverage and max heart rate per activity and per month.
  • Cloudflare Workers backendServerless backend with KV storage, token refresh, and caching to respect rate limits.

TFT Match History Update

1.0.2 · 8/4/2025

Added win/loss and placement data to the TFT page, plus caching and rate limiting on the worker to survive Riot’s API limits.

  • TFT match historyMatch history now works, with placements pulled through the worker.

The First Update

1.0.1 · 7/28/2025

The first update to the patch notes system.

  • Book barA simple bar in the playground showing the books I’m reading and my progress, via the Google Books API.

The Inaugural Patch

1.0 · 7/27/2025

The very first version of the patch notes.

  • Patch notes systemA dedicated changelog page for all future updates, big and small. I’ve definitely missed the first 2 years of patches but it starts now.