Changelog
[0.0.6.0] - 2026-04-15
Added
- TAOCP study companion at
/aop. A new content category for study notes on Knuth's "The Art of Computer Programming." Dashboard page with hero stats, per-volume progress, and recent notes. Supports both algorithm posts (with the Algorithm component) and conceptual notes. Two posts ship with it: Euclid's Algorithm (Algorithm E, Vol. 1 §1.1) with inline SVG diagram and LaTeX equations, and a breakdown of Knuth's formal definition of computational methods. - LaTeX math support. remark-math + rehype-katex enable inline and display math notation in MDX posts. KaTeX CSS loaded globally.
- Build-time TAOCP stats pipeline.
scripts/taocp-stats.mjsparses AoP posts and outputstaocp-data.jsonwith per-volume stats and exercise tracking. Follows the same graceful-failure pattern as the fitness pipeline. - "studying" nav pill. Conditionally shown in the header when AoP posts exist, with blue accent color.
[0.0.5.0] - 2026-04-12
Added
- Training dashboard at
/training. A visual story page showing your training consistency, volume balance, PRs, and exercise progressions at a glance. Hero stat cards (sessions, total volume, PRs, streak), a 16-week frequency heatmap with hover tooltips, push/pull/legs session balance bars, a recent PRs timeline linking to individual posts, and a top exercises grid with sparklines grouped by type. - Push/pull/legs classification. Every exercise is categorized by type, powering the volume balance visualization and grouped exercise grid on the dashboard.
- Localized exercise names on dashboard. English visitors see English exercise names in the PR timeline and exercise grid, with Korean names used for data lookup behind the scenes.
Changed
- Training feed moved to
/training/log. The paginated feed of workout posts is now at a sub-route, making room for the dashboard at/training. - Shared volume formatting. Consistent "142.3k kg" formatting across training cards and dashboard.
Fixed
- Language picker dropdown z-index. The dropdown now renders above glass morphism cards on all pages.
[0.0.4.2] - 2026-04-12
Added
- Two fitness workout posts (Apr 10, 12). Pull day (PPL W7D5) and legs day (PPL W7D6) training logs in Korean and English with exercise data, images, and YouTube embeds, plus related translation and
Exercisecomponent updates.
[0.0.4.1] - 2026-04-10
Changed
- Navbar goes transparent. Removed opaque background so the Odin grid canvas shows through the nav area.
- Brand link in Geist Mono. The site title in the navbar now renders in monospace for visual distinction.
- Active nav links use pill style. Replaced the wavy underline with a subtle glass-tinted pill background.
- Project cards match post cards. Both the homepage feed and
/projectspage now use glass morphism cards with teal badges, tech pills, and hover effects. Project names render in monospace with status pushed to the right. - Faster Docker builds. Removed
python3,make,g++from the Dockerfile. Sharp and resvg-js ship prebuilt linux binaries, cutting ~30-50s off Railway builds.
[0.0.4.0] - 2026-04-09
Added
- Three fitness workout posts (Apr 7-9). Pull day (PPL W7D2), legs day (PPL W7D3), and push day (PPL W7D4) training logs in Korean and English with exercise data, images, and YouTube embed.
Fixed
- Broken table-of-contents anchors in April 7th and 9th workout posts. Typos in Korean anchor slugs caused in-page links to not scroll to the correct exercise.
[0.0.3.8] - 2026-04-08
Added
- Four new project entries. Odin (AI developer mission control), Training (gym workout tracker PWA), 우리집 (family daily dashboard), and Algo Tutor (SRS algorithm study app) now appear on the projects page.
Changed
- Haechi tech stack updated. Added Drizzle ORM, PostgreSQL, better-auth, Claude API, Tailwind CSS, and Playwright to reflect the current architecture.
[0.0.3.7] - 2026-04-06
Added
- April 6th push day workout post. PPL Week 7 Day 1 training log in Korean: bench press (smith machine), shoulder press, side lateral raise, pec deck fly, JM press, overhead tricep extension, tricep pushdown, cable side bend. Includes exercise images and YouTube embed.
[0.0.3.6] - 2026-04-05
Added
- April 5th leg day workout post. PPL Week 6 Day 6 training log in Korean: hack squat, leg curl, leg extension, stiff-leg deadlift, calf raise, machine crunch.
[0.0.3.5] - 2026-04-03
Added
- April 3rd pull day workout post. PPL Week 5 Day 5 training log in Korean: lat pulldown (machine), seated machine row, rear delt fly (cable), hammer curl, dumbbell curl. Includes arm training restructuring plan for upcoming sessions, exercise images, and YouTube embed.
[0.0.3.4] - 2026-04-02
Added
- April 2nd push day workout post. PPL Week 6 Day 4 training log in Korean: incline press, shoulder press, lateral raise, chest fly, overhead tricep extension, tricep pushdown. Includes exercise images and YouTube embed.
[0.0.3.3] - 2026-04-02
Added
- Railway deployment. Dockerfile and .dockerignore for deploying the static Astro site on Railway. Two-stage build: Node 22 + pnpm for the build,
servefor the runtime. Includes native dependency build tools for sharp and @resvg/resvg-js, non-root runtime user. - Haechi v0.2.3 blog post. Covers the v0.2.1–v0.2.3 updates: data persistence fix (HttpOnly cookie issue), server-side grammar search with pagination, footer and changelog page. Korean and English versions.
[0.0.3.2] - 2026-04-01
Added
- Haechi v0.2 blog post. Korean-language writeup covering the Haechi SRS app's evolution from v0.1.0 to v0.2.0: visual unification, auth, server database, offline-first sync, and the design philosophy behind it.
Changed
- Colophon link moved to footer. The "site" link now lives in the footer next to the version number, freeing navbar space for the content-type pills. Footer links get proper touch-target padding with a dot separator.
[0.0.3.1] - 2026-03-31
Changed
- Navigation overhaul. Replaced per-page filter pill tabs with navbar links for writing, training, and building. Training and writing links show post counts as pill badges. One place to navigate, not two.
Removed
- Filter pill sections from homepage, /writing, /training, and /building pages. Dead CSS cleaned up.
[0.0.3.0] - 2026-03-30 — Fitness Analytics Dashboard
Fitness posts now show exercise cards with progress sparklines, PR badges, and session summaries. Training post cards on the /training page show per-session volume sparklines (same-type comparison) and PR indicators. Vitals strip moved to the footer with a clickable version number linking to the new /changelog page. All rendered at build time with zero client JS.
Added
- Fitness data pipeline. New
scripts/fitness-stats.mjsparses 20 fitness MDX files, extracts exercise data via regex, computes volume, estimated 1RM (Epley formula), and PR detection. Outputssrc/_generated/fitness-data.jsonconsumed by Astro components at build time. 32 unit tests. - Exercise card restyling. Exercise.astro now uses card-surface styling with
--accent-trainingleft border, i18n labels, inline sparklines showing weight progression, and PR badges when you hit a personal record. - Fitness post summary. FitnessSummary.astro injected from PostDetails layout shows total volume, exercise count, and PRs per session, with delta from previous session of the same type (push/pull/legs).
- Training card sparklines. Each training post card on the /training page now shows a volume sparkline comparing same-type sessions (push vs push, legs vs legs) and a PR badge when personal records were hit.
- Vitals strip in footer. Moved from the homepage hero to the site footer so post count, project count, commit count, and training streak are visible on every page.
- Changelog page. New
/changelogroute renders CHANGELOG.md content. Footer version number links to it. - Streak tolerance. Training streak now allows 2-day gaps between workouts, so a 6-day PPL schedule with one rest day doesn't reset.
- Sparkline color prop. Sparkline.astro now accepts a
colorprop (defaults to--accent-building) so it can be reused across categories. - 21 new i18n keys for exercise stats and training dashboard labels in Korean and English.
- Canonical exercise list. Pipeline warns on unknown exercise names during build to catch typos early.
Fixed
- Exercise name normalization. Fixed typos and inconsistencies across 4 fitness posts: 답벨→덤벨, 레터럴→라테랄, 트라이셉→트라이셉스, spacing normalization.
- FitnessSummary date crash guard. Invalid date prop now returns early instead of throwing RangeError.
- isFitnessPost detection. Narrowed from
includes("/fitness/")tostartsWith("ko/fitness/")to avoid false positives.
[0.0.2.1] - 2026-03-30
Fixed
- Language bar legends. All languages in the bar now show labeled legends, not just those above 15%. Small-share languages like CSS and JSON were visible as colors but had no label.
- Stale commit count on project cards. Regenerated build-time stats so the project card commit count matches the actual repository (69 commits).
[0.0.2.0] - 2026-03-30 — Project Stats Dashboard
Project cards now show live GitHub statistics. Each building card renders a commit heatmap, weekly activity sparkline, language breakdown bar, and stat badges, all computed at build time from local git history and the GitHub API.
Added
- GitHub stats data pipeline. Build-time script (
scripts/github-stats.mjs) fetches per-project repository statistics. Self-repo stats are computed from local git. External repos use the GitHub Statistics API with retry logic and a 30-second global timeout. Graceful failure on network issues or missing tokens. - SVG visualization components. CommitHeatmap (7x52 grid), Sparkline (weekly trend line), LanguageBar (stacked color bar with GitHub linguist colors), and StatBadge (formatted counts with k-suffix). All use CSS custom properties for dark/light mode and include
role="img"+aria-labelfor accessibility. - Per-component graceful degradation. Each stats component independently renders or hides based on available data. A card with partial stats still shows what it can.
- Korean localization for stat labels. "commits", "language", "languages" are now translated via i18n keys (
stats.commits,stats.language,stats.languages). - 41 unit tests. 22 tests for SVG utility functions, 19 tests for the stats data pipeline. All pure functions extracted for testability with
node --test.
Changed
- BuildingCard metadata. Now shows commit count and language count from live data instead of static values.
- Build pipeline.
github-stats.mjsruns beforeastro build, wrapped in|| trueso stats failures never block the build.