Skip to main content
    All projects

    Change Log Explorer

    Active

    Browse the history of completed work on this site. Expandable cards with PR links, plan files, checklists, and timeline of each item's journey.

    Meta
    History
    Documentation
    54 items

    Streamline blog post build/deploy pipeline

    Added a `detect-changes` job to `deploy.yml` that classifies pushes as content-only or full-build. Content-only deploys skip Playwright tests, unit tests, Sentry source maps, security audit, and bundle size checks. Deployed in PR #249. Full pipeline: ~10min → Content-only: ~2min.

    Feb 24, 2026
    Medium

    Rework TabList Mobile Selector

    Feb 10, 2026
    PR #230
    Enhancement
    UX

    Feb 2: INP Performance Optimization

    Reduced Interaction to Next Paint from 493ms (poor) to <50ms (good). Throttled Kanban drag handlers, deferred analytics to idle time, debounced K8s form inputs, and memoized heatmap computations.

    Feb 2, 2026
    PR #222
    Performance

    K8s Resource Right-Sizer

    K8s CPU/memory rightsizing calculator with percentile-based recommendations, risk slider, savings estimates, and YAML export. Includes combobox inputs with tooltips and dropdown presets for easy exploration.

    Jan 31, 2026
    Feature
    SRE
    Calculator

    Jan 28: Hero GitHub Button

    Added GitHub button to hero section alongside the Email button: - Solid variant for visual hierarchy - Renamed "Get In Touch" to "Email" for clarity - Updated tests for new button layout Commits: b98efed, 0e53f51, acf7603, bd55d64

    Jan 29, 2026
    UI
    Enhancement

    GitHub Actions Billing Dashboard

    Track Actions minutes/spend in analytics dashboard. Phase 0 (API validation) complete - uses new Enhanced Billing endpoint. See docs/plans/60-github-actions-billing-dashboard.md

    Jan 29, 2026
    Medium
    Feature

    Jan 28: SEO Schema Improvements

    Enhanced structured data for better search visibility: - Added ProfilePage JSON-LD schema to homepage - Added BreadcrumbList schema to blog posts - Fixed LinkedIn URL in social links - Added author.sameAs to BlogPosting schema Plan: [docs/plans/61-seo-profilepage-schema.md](/docs/plans/61-seo-profilepage-schema.md)

    Jan 29, 2026
    PR #212
    SEO
    Enhancement

    Jan 28: Blog Post Date Rename

    Renamed all blog post files and frontmatter dates from 2025 to 2026 to reflect correct publication year.

    Jan 28, 2026
    PR #211
    Content
    Cleanup

    Jan 27: The 404s Came Back

    Published sequel to the original 404 debugging post, covering: - Mysterious traffic from CI/CD pipelines - HeadlessChrome user agent detection - Analytics filtering for bot traffic Also improved Top Pages table readability on mobile (PR #210). Related: [Blog post](/blog/2026-01-27-the-404s-came-back)

    Jan 28, 2026
    PR #209
    PR #210
    Blog
    Content

    Jan 27: SEO Pre-render All Routes

    Pre-rendered all routes at build time to ensure Googlebot can crawl them without JavaScript execution. SPAs on GitHub Pages return 404 for direct URL access without pre-rendering. Commit: 4eee9a8

    Jan 27, 2026
    SEO
    Infrastructure

    Jan 25: Dotfiles for AI-Assisted Development

    Published blog post covering dotfiles patterns for AI-assisted development: - CLAUDE.md project instructions - Global vs project-specific rules - Session notes for context persistence - Commit message conventions with flags Related: [Blog post](/blog/2026-01-25-dotfiles-for-ai-assisted-development)

    Jan 26, 2026
    PR #205
    Blog
    Content

    Jan 25: Employment Update

    Updated employment information to reflect new role as Technical Incident Manager at Nvidia.

    Jan 25, 2026
    PR #83
    Content

    Kanban System Durability Improvements

    Jan 23, 2026
    Medium
    Kanban
    Technical Debt
    10/10 tasks

    New Board Creation

    Add ability to create new kanban boards from the UI. Board selector dropdown to switch between boards, plus 'New Board' button to create fresh boards. **Architecture Decision**: Dynamic board discovery (Option A from plan). Worker scans `content/kanban/` to discover boards, no hardcoded allowlist. **Codex Review Complete** (2026-01-23): - Race condition handling with retry logic on 409 - Markdown fallback for new boards before precompile - Column ID validation with `SAFE_ID` - Optimistic UI with `precompiled: false` indicator See `docs/plans/58-new-board-creation.md` for full implementation plan.

    Jan 23, 2026
    Medium
    Kanban
    Feature
    8/8 tasks

    Migrate Kanban to Markdown Files

    Replace monolithic roadmap-board.json with individual markdown files per card. Adopt Backlog.md pattern or Astro Content Collections approach. Problem: 1665-line JSON file is error-prone for manual editing (trailing commas, bracket mismatches). Options evaluated: - Backlog.md (ready-made, Claude Code compatible) - Astro Content Collections pattern (gray-matter + Zod) - YAML files - TypeScript data files

    Jan 23, 2026
    Medium
    DX
    Infrastructure
    7/7 tasks

    Phase 2: Markdown-Only Saves

    Eliminate dual maintenance by making markdown the single source of truth. Current state: JSON files are edited by save workflow, markdown files power ChangelogExplorer. Target state: Save workflow writes .md files directly via GitHub API, precompile runs on every push. Benefits: - Single source of truth (no sync issues) - Better git diffs for card changes - Easier manual editing when needed - CLI tools work with same format

    Jan 23, 2026
    Medium
    Kanban
    Infrastructure
    6/6 tasks

    Jan 23: Kanban Phase 2 Complete

    ## Phase 2: Markdown-Only Saves Completed the migration to make markdown the single source of truth for kanban boards. ### Key Changes - **Eliminated JSON files**: Removed `roadmap-board.json`, `house-board.json`, and `roadmap-archive.json` - **Worker writes directly to markdown**: Save flow now commits `.md` files via GitHub Trees API - **Commit SHA conflict detection**: Replaced timestamp-based detection with atomic commit SHA comparison - **Precompiled JS fallback**: Board loads from worker API (primary) or generated JS (offline fallback) ### Bug Fixes - Fixed UTF-8 encoding corruption for non-ASCII characters (arrows, emojis) - Fixed duplicate history entries during drag operations (moved tracking from `handleDragOver` to `handleDragEnd`) - Fixed Cloudflare Workers 50 subrequest limit by using inline content in tree items - Fixed open redirect vulnerability in OAuth return_to validation ### Architecture ``` Save: UI → Worker → GitHub Trees API → content/kanban/*.md ↓ repository_dispatch → precompile-content.yml ↓ src/generated/kanban/*.js Load: UI → Worker API (primary) → precompiled JS (fallback) ``` Related PRs: #195, #198

    Jan 23, 2026
    Infrastructure
    Kanban

    Analytics Bot & CI Traffic Tagging

    Tag suspicious traffic with custom dimension instead of filtering. Enables analysis of bot patterns while keeping data. Implemented in `src/lib/analytics/clientTrafficClassifier.ts`: - Known bot user agents (Googlebot, Bingbot, HeadlessChrome, etc.) - CI/automation user agents (GitHub Actions runners, Playwright) - Known probe paths (wp-admin, .env, xmlrpc.php, etc.) - Sessions tagged on first pageview with GA4 custom dimension

    Jan 23, 2026
    Small
    Analytics
    6/6 tasks

    Analytics Event Tracking

    Add GA4 events for interactive tool usage. Track calculator submissions, tab switches, copy-to-clipboard actions. Implemented in `src/lib/trackToolEvent.ts` with events firing in: - SLO Calculator: tab_switch, calculate, period_change - CLI Playground: command_run, tool_select, mode_switch, preset_select, share_copy - On-Call Coverage: model_select

    Jan 23, 2026
    Small
    Analytics
    5/5 tasks

    Lighthouse: A11y & SEO Focus

    Lab Lighthouse provides unique value for accessibility audits and SEO checks that field CWV data can't capture. Reframed the workflow to focus on these strengths. Implemented in `.github/workflows/lighthouse.yml`: - Path-based triggers (only runs on UI changes to src/pages, components, CSS) - Multi-page testing with thresholds: A11y ≥95, SEO ≥90, Best Practices ≥90 - Results stored in lighthouse-metrics branch for historical tracking

    Jan 23, 2026
    Small
    Analytics
    Accessibility
    4/4 tasks

    Tailwind CSS v4 Upgrade

    Migrate to v4: CSS-based config, Vite plugin, updated utilities. ~116 class renames across 59 files. Completed Jan 21. See blog post: "Tailwind v4 Upgrade: The Performance Tradeoff"

    Jan 21, 2026
    Medium-Large
    Infrastructure
    9/9 tasks

    react-hook-form & @hookform/resolvers Update

    Updated react-hook-form from 7.53.0 to 7.71.1 and @hookform/resolvers from 3.10.0 to 5.2.2. The resolvers package had a peer dependency requiring react-hook-form >=7.55.0.

    Jan 19, 2026
    PR #165
    Infrastructure
    3/3 tasks

    Animated Mermaid Diagrams

    Added animated walkthrough mode to incident-command-diagrams with: - Step-by-step animation with play/pause/skip/back controls - Decision nodes that pause for user to choose a path (branching logic) - Link nodes for cross-diagram navigation and external tool links - Side-by-side layout with sticky context panel - Auto-scroll to center active node in viewport - Progress bar and step counter - Lazy-loaded Mermaid rendering with theme support

    Jan 18, 2026
    PR #162
    Feature
    SRE

    CLI Tool Playground

    Interactive in-browser demos for CLI tools. Pure JS implementations (no WASM). Features: - Tool selector: kubectl, jq, grep, sed, awk - Learn mode with goals, hints, and command chips - Playground mode for freeform experimentation - Command explainer with flag breakdowns and 'Try next' suggestions - Shareable URL state (tool, mode, input, command) - 5 presets per tool covering common use cases kubectl simulator: - 5 triage scenarios (CrashLoopBackOff, ImagePullBackOff, Service Mismatch, Rollout Regression, Node Pressure) - Full K8s resource schema (pods, deployments, services, nodes, events) - Supports: get, describe, logs, rollout, top, events - Session state mutation for rollback commands Security fixes: - Replaced Function() with safe regex parser (XSS) - URL param validation with fallbacks - Race condition guards for async results

    Jan 18, 2026
    PR #156
    Feature
    Learning
    Tool
    10/10 tasks

    Error Budget Burndown

    Visualize how quickly you're consuming error budget. Input SLO target + incident history to see burn rate and projected exhaustion date.

    Jan 17, 2026
    PR #136
    SRE
    Calculator
    8/8 tasks

    Programmatic OG Image Generation

    Generate Open Graph images at build time for project pages using satori + @resvg/resvg-js. Implemented: - Build-time generation via scripts/generate-og-images.mjs - Build-time validation via scripts/validate-projects.mjs - Dark theme template with icon, title, description, tags - Inter font (regular + bold) for typography - Added to build pipeline in package.json - Extracted project metadata to projects-meta.json - Simplified projects.ts by removing inline metadata - Fail-fast guards for CI (exits 1 on generation or validation failures)

    Jan 17, 2026
    PR #150
    Enhancement
    Infrastructure
    6/6 tasks

    SLO Calculator SEO

    Added JSON-LD structured data and keyword optimization for SLO Calculator project page. Implemented: - WebApplication JSON-LD schema for active projects - BreadcrumbList JSON-LD schema for navigation - Keywords and ogImage fields in ProjectMeta type - SEO-optimized keywords for SLO Calculator - resolveOgImage helper for absolute URL handling OG image generation moved to separate task (Programmatic OG Image Generation).

    Jan 17, 2026
    PR #149
    SEO
    Enhancement
    5/5 tasks

    SLO Tool UX Improvements

    Polished the SLO Calculator with better defaults and new burn rate simulator. Changes: - Realistic default response times (26m MTTR) - Collapsible Response Times section (shows Alert latency by default) - Removed redundant burndown charts from Achievable/Target tabs - Added interactive Burn Rate Simulator slider (0.1x-5x) - Explanatory text for the 'ideal' line concept - Fixed slider resync when inputs change (Codex finding) - Fixed edge case when zero incidents (Codex finding)

    Jan 17, 2026
    PR #151
    Enhancement
    SRE

    Grafana Dashboard JSON Builder

    Visual editor for Grafana dashboards. Drag-and-drop panel layout, panel type picker, export schema v38+ JSON.

    Jan 17, 2026
    Deferred
    Large
    SRE
    Tool

    Log Pattern Extractor

    Detect recurring log patterns from raw lines. Auto-group by template, field type inference, export to regex/grok/logstash format.

    Jan 17, 2026
    Deferred
    Medium
    SRE
    Tool

    Retention Cost Estimator

    Estimate observability costs across providers (Datadog, Grafana Cloud, New Relic). Side-by-side comparison, retention tradeoffs.

    Jan 17, 2026
    Deferred
    Medium
    SRE
    Calculator

    SLO Tools Cross-Pollination

    Connected SLO tools with shared presets and cross-linking. Unified sloPresets.ts, slider magnetism, flexible input ranges (0-99.999%), and URL param sync for SLO + incidents.

    Jan 16, 2026
    PR #143
    PR #144
    Enhancement
    SRE
    6/6 tasks

    Unified SLO Calculator

    Consolidated SLO Calculator and Error Budget Burndown into one project with three tabs: - What can I achieve? (response time inputs directly visible) - Can I meet this SLO? (collapsible config) - Budget Burndown (full chart view) Removed 2,700+ lines of redundant code. Collapsible configuration for target/burndown tabs, direct inputs for achievable tab.

    Jan 16, 2026
    PR #145
    PR #146
    Feature
    SRE
    9/9 tasks

    SLO Calculator Burndown Integration

    Add 'SLO Burndown' tab to SLO Uptime Calculator. Reuse BurndownChart from Error Budget Burndown, generate simulated incidents from 'incidents per month' input.

    Jan 16, 2026
    PR #142
    Enhancement
    SRE
    6/6 tasks

    Pre-commit Hooks (Husky + lint-staged)

    Add Husky + lint-staged for pre-commit hooks. Runs ESLint with auto-fix on staged TS/JS files before every commit.

    Jan 16, 2026
    PR #137
    Infrastructure
    DX
    5/5 tasks

    Kanban External Change Detection

    Detect when board is updated externally (e.g., by Claude commits). Check on tab focus + every 15s while visible. Show toast with reload button to prevent save conflicts.

    Jan 16, 2026
    PR #141
    UX
    Kanban
    6/6 tasks

    Change Log Explorer Project

    Visualize completed work from kanban changelog and archive. Rich expandable cards with PR links, plan file content, and completion history.

    Jan 16, 2026
    PR #140
    Feature
    Meta
    7/7 tasks

    Kanban URL Simplification

    Remove URL state persistence, keep just `?board=roadmap`. Add deep linking with `?card=id` to open specific cards on load.

    Jan 16, 2026
    PR #139
    Cleanup
    UX
    7/7 tasks

    Preview Deployments

    Deploy PRs to unique preview URLs via Cloudflare Pages. Enables visual review before merge. Preview URL: https://personal-website-adg.pages.dev Branch pattern: <branch>.personal-website-adg.pages.dev

    Jan 16, 2026
    Infrastructure
    5/5 tasks

    Kanban Card Comments

    Add giscus discussion threads to kanban cards. Reuse existing blog Comments pattern with theme matching. Also fixed blog Comments to use ThemeContext.

    Jan 16, 2026
    PR #131
    Feature
    5/5 tasks

    Sentry Error Tracking Enhancement

    Source maps for readable stack traces, React error boundaries, release tracking, and improved debugging context. Codex Review of PR #130: - High (fixed): Sentry lazy loading inconsistency - ErrorBoundary imported but Sentry.init deferred. Fixed: now initializes synchronously before render. - Medium (fixed): Source maps publicly served exposing source code. Fixed: using hidden sourcemaps + delete after Sentry upload.

    Jan 16, 2026
    PR #130
    Observability
    5/5 tasks

    Analytics Data Deduplication

    Deduplicate time-series data in useAnalyticsData hook. ga4-history.json has multiple entries per date from automated collection.

    Jan 16, 2026
    Small
    Bug Fix
    3/3 tasks

    Kanban Board Save Feature

    GitHub OAuth login, Cloudflare Worker proxy, save to GitHub via Actions. Includes conflict detection, unsaved changes warning.

    Jan 15, 2026
    PR #127
    Feature

    Jan 14-15: Infrastructure & Polish

    View Transitions API, RUM with web-vitals, CI/CD improvements with PR checks, Container Queries, MCP testing workflows

    Jan 15, 2026

    React Performance Optimizations

    Analytics CLS 0.71→0.10, scroll throttling, React.memo, lazy-loaded charts, skeleton loaders

    Jan 15, 2026
    PR #124
    Performance

    Dynamic PR Status Indicator

    Live CI status for In Review cards via GitHub API, merged icon for changelog PRs

    Jan 15, 2026

    Framer Motion Animations

    Stagger animations for grids, scroll reveals, tab transitions, mobile nav stagger. Respects prefers-reduced-motion.

    Jan 15, 2026

    Jan 14: Kanban & UX

    Kanban board with drag-and-drop, card colors, House Projects board, performance budgets, ARIA live regions, deploy notifications

    Jan 14, 2026

    Renovate Automation

    Decided against: overhead not justified for actively-maintained personal project. Manual npm update works fine.

    Jan 14, 2026
    Won't Do

    Jan 13: Analytics & Accessibility

    Analytics Dashboard, On-Call Coverage Explorer, Skip Navigation, Footer/Nav cleanup

    Jan 13, 2026

    Jan 12: Projects Page Launch

    SLO Calculator, Status Page Generator, registry pattern

    Jan 12, 2026

    Jan 11: MDX Precompilation

    Blog LCP 5.6s → 3.1s (45% faster)

    Jan 11, 2026
    PR #84
    Performance

    Jan 8: Blog Phase 4 & 5

    Comments, syntax highlighting, RSS, structured data

    Jan 8, 2026
    Feature

    Jan 6-7: Node.js v24 + Perf

    55 → 98 Lighthouse, system fonts, Radix cleanup

    Jan 7, 2026
    Performance