Skip to main content
BM

Changelog

All notable changes and updates to this site.

Rotating Background Animations

v0.11.0
feature

Added animated backgrounds that rotate throughout the day

The site now features subtle animated backgrounds that rotate every 8 hours, giving returning visitors a fresh visual experience.

Backgrounds

Seven canvas-based backgrounds are currently available:

  • Dot Grid - A pulsing grid of dots that fades from the top of the page
  • Topographic - Animated contour lines using Perlin noise
  • Flow Field - Particles following noise-based flow patterns
  • Constellation - Connected stars with twinkling and shooting stars
  • Wave Interference - Overlapping circular wave patterns
  • Aurora - Flowing ribbon-like aurora borealis effect
  • Voronoi - Animated Voronoi cell diagram with drifting points

How It Works

  • Backgrounds rotate every 8 hours (3 times per day)
  • Selection persists during your session for consistency while navigating
  • Adapts to light/dark theme with reduced opacity in light mode
  • Renders behind all content with no impact on interactivity

Homepage Animations

v0.10.0
improvement

Added subtle entrance animations to the homepage

Enhanced the homepage with smooth entrance animations for a more polished feel.

Animations

  • Staggered fade-in animations for homepage sections
  • Smooth transitions as elements enter the viewport
  • Responsive to user scroll position

Technical Details

Implemented using pure CSS and native browser APIs:

  • CSS keyframes and transitions for animations
  • Custom useInView hook using Intersection Observer API
  • Zero external dependencies (~50KB bundle size reduction vs framer-motion)
  • Follows the principle of preferring native browser APIs when functionality is equivalent

About Page & Resume

v0.9.0
feature

Refreshed about page and added a dedicated resume page

Updated the About page with current information and added a comprehensive Resume page.

About Page

Refreshed the about page with:

  • Updated bio including current role
  • Personal interests and hobbies
  • Contact information

Resume Page

New /resume route with detailed professional information:

  • Complete work history with role descriptions
  • Skills and technologies
  • Education background
  • Roles grouped by company for cleaner presentation

Navigation

  • Added Resume link to site navigation
  • Streamlined homepage by removing redundant contact section

Links API & Bookmarklet

v0.8.0
feature

Added API endpoints and a browser bookmarklet for quickly saving links

Added a streamlined workflow for saving interesting links directly from the browser.

Bookmarklet

A browser bookmarklet that captures the current page and opens the link saving interface:

  • One-click capture of page URL, title, and metadata
  • Opens /links/new with pre-filled information
  • Works on any website you're browsing

Links API

New API endpoints for programmatic link management:

  • /api/links/preview - Fetches page metadata (title, description, images)
  • /api/links - Saves links via GitHub API to create content files
  • Image selection UI for choosing the best preview image
  • API key authentication for protected endpoints

Documentation

Added setup documentation in tools/link-bookmarklet/README.md with installation instructions.

Links Collection

v0.7.0
feature

Added a Links page to share interesting articles and resources

Added a new Links section for sharing interesting articles, tools, and resources discovered around the web.

Links Page

  • New /links route displaying saved links in a card grid layout
  • Each link shows title, description, image (if available), date, and tags
  • Links open in new tabs and are sorted by date (newest first)
  • Added Links to the site navigation

Technical Details

  • New links Velite collection with schema for title, description, url, image, date, and tags
  • New pages.links-list package for the links list page component

Dark Mode & Mobile Navigation

v0.6.0
feature

Added theme switching and responsive mobile navigation

Enhanced the user experience with dark mode support and improved mobile navigation.

Dark Mode

Implemented a complete theming system with three modes:

  • Light - Clean, bright theme for daytime use
  • Dark - Reduced eye strain theme for low-light environments
  • System - Automatically matches your OS preference

Technical Details

  • Theme toggle component with accessible radio group pattern
  • next-themes for hydration-safe theme management
  • CSS variables for seamless color transitions
  • lucide-react icons for theme indicators

Mobile Navigation

Added a responsive hamburger menu for mobile devices:

  • Collapsible menu that appears on screens smaller than md breakpoint
  • Smooth open/close transitions with Menu and X icons
  • Accessible with proper ARIA attributes (aria-expanded, aria-controls)
  • Auto-closes when navigating to a new page

Testing Improvements

  • Added E2E tests for theme toggle functionality
  • Created mobile navigation E2E test suite
  • Integrated Playwright HTML reports into CI summary for easier debugging

Blog Infrastructure

v0.5.0
feature

Added blog pages with MDX content, syntax highlighting, and improved typography

Launched the blog section with full MDX support and migrated existing content.

Blog Pages

Created two new page packages following the established architecture:

  • pages.blog-list - Displays all blog posts with title, date, and description
  • pages.blog-post - Renders individual posts with MDX content support

Content Migration

Migrated 7 blog posts covering React, CI/CD, and mobile development:

  • GitHub Actions for Continuous Deployment
  • Deploying to Netlify via CircleCI
  • Understanding React Fragments
  • Introducing React NHL Logos
  • Fastlane Mobile App Builds
  • Drafts for Gatsby
  • Using Bulma with React

Syntax Highlighting

Integrated rehype-pretty-code with Shiki for code block syntax highlighting:

  • Dual theme support for light and dark modes
  • Language-aware highlighting
  • Clean, minimal code block styling

Typography & Accessibility

  • Configured @tailwindcss/typography for consistent prose styling
  • Improved color contrast to meet WCAG AA compliance
  • Integrated typography styles with the design system

Velite Content Management

v0.4.0
feature

Added type-safe MDX content collections with Velite

Integrated Velite for managing MDX content with full TypeScript support.

Content Collections

Three content types are now available:

  1. Blog Posts - MDX-powered blog with frontmatter for title, description, date, and tags
  2. Projects - Showcase for personal projects with tech stack and links
  3. Changelog - Track site updates and version history

Technical Implementation

  • Configured Velite with Turbopack for fast development builds
  • Set up #content path alias for type-safe imports
  • Added MDX support with rehype and remark plugin extensibility

Developer Experience

  • Full TypeScript inference for content schemas
  • Hot reloading during content development
  • Automatic slug and permalink generation

About Page

v0.3.0
feature

Added the About page with proper accessibility

Introduced the About page as a new section of the website.

Features

  • Created pages.about package following the established architecture
  • Used semantic HTML with proper heading hierarchy and article elements
  • Ensured screen reader compatibility and keyboard navigation
  • Mobile-first responsive styling with Tailwind CSS

Accessibility Improvements

  • Fixed skip-to-content link functionality for keyboard users
  • Resolved Tailwind content path configuration for reliable builds

Testing Infrastructure

v0.2.0
featureimprovement

Added comprehensive testing with Vitest and Playwright

Established a robust testing foundation with unit testing and end-to-end testing capabilities.

Unit Testing

Added Vitest with React Testing Library for component testing:

  • Created shared configs.vitest package for consistent test configuration
  • Added tests for all page components and utilities
  • Integrated with CI pipeline for automated test runs

E2E Testing

Set up Playwright for end-to-end browser testing:

  • Configured cross-browser testing (Chromium, Firefox, WebKit)
  • Added accessibility testing with skip-to-content link verification
  • Created smoke tests for critical user flows

CI Integration

  • Added test job to GitHub Actions workflow
  • Tests run automatically on all pull requests

Initial Monorepo Setup

v0.1.0
feature

Foundation of the personal website with Next.js 16 and Turborepo

The initial foundation of the personal website establishing the monorepo architecture.

Highlights

  • Configured pnpm workspaces with Turborepo for efficient builds
  • Set up Next.js 16 with App Router and React 19
  • Created reusable configs for TypeScript, ESLint, Prettier, and Tailwind
  • Established packages structure for pages, components, and utilities
  • Added GitHub Actions workflow for PR checks (lint, typecheck, build)

Technical Stack