journal

Build Journal

Release notes and project updates synced from CHANGELOG.md.

11 releases·Last updated: July 26, 2026

v2.1.3

Latest

Added

  • Wired real keyboard shortcuts across the algorithm visualizer — Space (play/pause), arrow keys (step), R (reset), C (compare mode), Q (quiz mode), and ? for the shortcut help panel, which is now actually mounted and controlled; race mode shares the same playback keys.
  • Added replay behavior: pressing play on the final step restarts the trace from step 1 in both the run panel and race mode.
  • Added generic scrubber event markers (first find, pass boundaries, cost updates) for the six categories that previously had none — strings, compression, number theory, data structures, optimization, and approximation — with larger, easier-to-click marker dots.
  • Added a compact current-pseudocode-line strip under the visualization for viewports where the full pseudocode block is off-screen, plus a mobile metric strip and a swipe-to-step gesture hint.
  • Added component tests covering keyboard stepping, replay, and the final-step run summary.

Changed

  • Moved the run panel (playback controls, scrubber, chart, explanations, pseudocode) directly under the page header on visualizer pages; session controls, scenario presets, and dataset controls now follow the visualization instead of preceding it.
  • The run summary now appears only when the trace reaches its final step, instead of spoiling the outcome above the current-step explanation.
  • Adapted Liquid Glass refraction to element geometry with geometry-aware displacement maps ported from the upstream standard rendering pipeline, and removed the obsolete fixed displacement map.

Fixed

  • Fixed Boyer-Moore string matching: corrected the strong good-suffix shift, skipped zero-Z entries in table construction, added missing-occurrence sentinels to the good-suffix and bad-character tables, restricted the Galil bound to shifts proven by the matched-prefix rule, and fixed an empty-suffix over-shift plus a window bound that skipped matches at index 0 — verified with 500,000 randomized trials against brute force.
  • Fixed the simplex visualizer performing an invalid pivot: the minimum-ratio test now takes the correct degenerate pivot on the zero-RHS row, reaching the true optimum z = 6 at (0, 3) instead of an infeasible solution that violated a constraint.
  • Fixed counting sort and radix sort corrupting output for negative values by indexing with a min-value offset.
  • Fixed merge sort comparison highlights pointing at overwritten snapshot positions, and quick sort counting no-op self-swaps in its swap metric.
  • Fixed the B-tree delete-16 narration describing a merge that never happens (the actual trace is a case 3a borrow plus case 2b successor replacement) and rebuilt the Fibonacci heap cut diagram to respect the roots-are-never-marked invariant.
  • Fixed the metric TSP 2-approximation reporting the doubled walk's cost for the final compressed cycle, and Dijkstra/Prim painting undiscovered nodes as frontier.
  • Fixed the Burrows-Wheeler transform complexity annotation (O(n log n) for prefix-doubling construction) and wrong pseudocode line highlights across KMP, Boyer-Moore, Ukkonen, BWT, Huffman, Elias omega, LZ77, Miller-Rabin, and Prim.
  • Fixed persisted or URL-supplied datasets with fewer than 3 values bypassing input validation and producing degenerate two-step traces.
  • Fixed duplicate React keys in the step breadcrumb after a reset.

v2.1.2

Added

  • Added a client-side testing setup with Vitest and Testing Library, plus per-category algorithm loaders with contract tests.
  • Added the TextMatrixRain homepage effect and AVIF image sets for the homepage hero.

Changed

  • Consolidated Liquid Glass components, refined LiquidGlassCore shader styling and its standard refraction preset, and removed accumulated maintenance debt.
  • Enhanced the project catalog and unified action styles for consistency; refactored algorithm components for improved data handling and UI consistency.

Fixed

  • Fixed the Flappy Birb action surface shadow artifact and disabled shadow layers on LiquidGlassTag metadata for visual clarity.

v2.1.1

Added

  • Added /now and /uses pages with config-driven content, route metadata, sitemap coverage, and a browser-refreshed GitHub activity feed.
  • Expanded the algorithm visualizer with new algorithm families across strings, compression, data structures, number theory, optimization, approximation, selection, non-comparison sorting, and graph extensions.
  • Added richer algorithm learning controls, including draggable array editing, step breadcrumbs, keyboard help, mobile guidance, graph/state visualizations, shareable session controls, compare mode, and quiz-mode refinements.
  • Added a local Pixel Perfect and Liquid Glass component system with reusable buttons, links, tags, surfaces, carousel effects, text effects, metallic backgrounds, dot meshes, and display-only visual components.
  • Added day/night homepage hero image sets and a global visitor-local time theme that can drive theme-aware content beyond the first viewport.

Changed

  • Rebuilt the homepage around a full-screen sliced carousel, time-themed media, Door Reveal intro, adjacent personal notes, Scramble Decode statement, and display-only Ring Carousel selected-work section.
  • Redesigned public page shells, navigation, footer, status, contact, project, vault, terminal, 404, blog list, and blog article surfaces around shared page primitives and Liquid Glass styling.
  • Replaced the blog Markdown pipeline with gray-matter, unified/remark/rehype rendering, sanitized HTML output, slugged headings, safer external links, richer code/image metadata, related posts, series navigation, and selection sharing.
  • Centralized route metadata and sitemap configuration, added a shared standard page shell, and moved repeated headers, dividers, labels, metadata pills, and text buttons into reusable primitives.
  • Restored local and CI validation gates with ESLint 9 flat config, typecheck/test/verify scripts, GitHub Actions verification, Vitest coverage, and schema-backed content validation.

Security

  • Removed decorative client-side IP lookup and WebRTC/STUN fallback from the terminal badge; the badge now uses a local-only session label.
  • Hardened browser storage access so unavailable storage, quota failures, and invalid JSON no longer break algorithm, terminal, vault, or navigation state.
  • Hardened GitHub activity requests with username validation, URL encoding, shared request construction, and timeouts.
  • Added safe JSON-LD serialization and replaced avoidable client/server HTML injection paths in the journal and blog enhancer.
  • Upgraded framework/tooling dependencies and added scoped pnpm overrides for vulnerable transitive dependency ranges reported by audit.

Fixed

  • Fixed night theme coverage and tag contrast across public chrome, homepage layers, blog, project, journal, algorithm catalog, and Liquid Glass controls.
  • Fixed mobile navigation dropdown placement, mobile menu contents, and footer visibility so small viewports avoid clipping and horizontal overflow.
  • Fixed homepage carousel and intro details, including full-screen carousel ownership, stable hero title width, Door Reveal ratio/name placement, Ring Carousel proportions, and page-root background fallback.
  • Fixed algorithm visualizer layout responsiveness, Liquid Glass safe padding, dense metric shadows, wrapped shareable URL controls, and simplex visualizer panel alignment.
  • Fixed build validation behavior so production builds no longer suppress TypeScript or ESLint failures.

Removed

  • Removed the decorative network lookup utility that powered the previous terminal IP badge.
  • Removed the legacy .eslintrc.json entry point in favor of ESLint 9 flat config.
  • Removed the Refraction Glass CTA implementation after standardizing the site on Liquid Glass primitives.
  • Removed the homepage Field Notes section from the landing page after switching selected work to a display-only Ring Carousel.

v2.1.0

Added

  • Complete minimal white design system replacing the previous warm beige palette — CSS custom properties, hairline dividers, flat border-only cards, and no box shadows across the entire site.
  • Rebuilt homepage (SignalLanding) with Framer Motion entrance animations: letter-by-letter name reveal with per-letter magnetic hover effect, text scramble on role label and section eyebrows, velocity-driven marquee that accelerates on scroll, avatar 3D tilt, and scroll parallax layering on the hero.
  • Interactive constellation canvas in the hero — particles drift, connect with lines, and repel from the cursor.
  • Scroll-stacking project cards in Selected Work: each card pins with position: sticky and scales down as the next slides over it, with a cursor spotlight glow on hover.
  • Scroll-driven word-by-word reveal for the bio statement — words shift from light gray to black as the section scrolls through the viewport.
  • Shared-element (View Transitions) morph from blog list rows to the post title using next-view-transitions.
  • PageFade / PageFadeItem stagger system for page entrance animations across all routes.
  • BlogTagFilter with AnimatePresence for animated tag filtering on the blog listing page.
  • ReadingProgress bar on blog post pages (thin line at the top of the viewport).
  • ContactMethods component with click-to-copy clipboard interaction and magnetic hover rows.
  • AnimatedCounter (number roll-up from zero) and staggered uptime bar fill animation on the Status page.
  • Pulsing dot on the Status page overall health indicator.
  • Typewriter stack trace and character-scramble title on the 404 debug mission page.
  • Redesigned /journal as a structured vertical release timeline parsed directly from CHANGELOG.md — version nodes, color-coded change categories (Added, Changed, Removed, Fixed…), and inline code/bold formatting without a raw HTML dump.
  • Scroll-spy floating table of contents component (TableOfContents) and heading anchor IDs in the blog markdown renderer.
  • Reusable effect components: ConstellationField, Spotlight, ScrollRevealText, TransitionLink.

Changed

  • Redesigned all non-algorithm pages (blog list, blog post, project, contact, journal, vault, status, privacy, 404) with a consistent design language.
  • Updated StatusDashboard — removed warm beige colors, updated service/incident/impact badge palette to Tailwind semantic greens/yellows/oranges/reds, and uptime history block colors.
  • Scroll-aware floating nav: gains a frosted-glass background, border, and shadow after 24px of scroll.
  • BlogPostCard refactored to a row layout consistent with the homepage Field Notes section.
  • Blog post page: removed surface card around article content; post navigation is now a flat two-column layout.
  • Contact page: redesigned channel rows with click-to-copy instead of static links; email template displayed as a visual preview.
  • Status config (config/status.ts) fully updated to semantic color tokens.
  • Removed box shadows from .swift-surface and .swift-surface-strong.
  • Added smooth scroll-behavior and view-transition duration tuning in global CSS.

Removed

  • Legacy pages/_document.tsx and pages/_error.tsx (empty Pages Router remnants causing build errors).
  • Legacy public/tdri-about/ static assets.
  • Warm beige hardcoded color values across all components and pages.

v1.2.2

Added

  • Added dedicated algorithm detail routes under /alg/[algorithmId], with statically generated visualizer pages and page-specific SEO metadata for each supported algorithm.
  • Added a curated /alg landing experience that acts as a launchpad for focused demos, curated presets, and dedicated walkthrough pages.
  • Added a node-link graph canvas for BFS, DFS, and Dijkstra so graph traversals can show highlighted nodes, active paths, edge weights, and live distance updates more clearly.
  • Added richer status reporting on /status, including 90-day uptime history, response-time rollups, open/resolved incident views, and scheduled maintenance windows.

Changed

  • Reworked the algorithm visualizer into smaller focused components and improved compare-mode matching so visitors only compare like-for-like algorithms with compatible inputs.
  • Split algorithm definitions into dedicated sorting, searching, graph, and shared config modules to better support the new detail pages and graph-specific interactions.
  • Renamed the case-study route from /projects to /project and updated navigation, terminal output, and sitemap entries to match.
  • Improved terminal onboarding with a clearer boot hint that points visitors to help and blog, and refined responsive terminal layout behavior.
  • Polished typography, spacing, and copy consistency across the home page, blog, journal, privacy, vault, status, and not-found experiences.

v1.2.1

Added

  • Expanded the /alg experience with custom dataset input, randomize controls, and target selection for supported search and graph algorithms.
  • Added more replayable algorithms in the visualizer, including Merge Sort, Quick Sort, Heap Sort, Linear Search, BFS, DFS, and Dijkstra.
  • Added grouped browsing by category or difficulty, compare mode, quiz mode, and a draggable step scrubber for step-by-step review.
  • Added richer learning aids across the visualizer, including pseudocode highlighting, simpler step explanations, live counters, complexity summaries, and algorithm notes.

Changed

  • Improved the algorithm visualizer UX with responsive visual modes for bars, search cards, and graph views, plus swipe gestures for mobile step navigation.
  • Persisted algorithm preferences through local storage and shareable URL state so sessions can be resumed and compared more easily.
  • Refined the /alg mobile chart layout so algorithm bars stay within the viewport, use a bounded horizontal scroller, and avoid label overflow on smaller screens.
  • Adjusted algorithm visualizer counters and action labels to wrap more safely on mobile devices.
  • Updated the privacy notice to document the algorithm visualizer's local storage key and URL-based state sharing behavior.

v1.2.0

Added

  • Added a new /alg Algorithms page with SEO metadata, canonical URL, and a learning-focused hero section.
  • Added an interactive AlgorithmVisualizer with category filtering, step controls (play/pause/prev/next/reset), playback speed options, progress tracking, and pseudocode/state explanations.
  • Added algorithm data and simulation logic in config/algorithms.ts for Bubble Sort, Selection Sort, Insertion Sort, and Binary Search.
  • Added shared algorithm domain types in types/algorithm.ts for strongly typed definitions and replay steps.
  • Added mobile device rotation hint animation styles (mobile-device-rotate, .mobile-rotate-device) for the algorithm page experience.

Changed

  • Updated site navigation to include an internal algorithm link to /alg.
  • Added /alg to sitemap generation so the new page is discoverable by crawlers.
  • Increased the navigation brand text size for improved visual balance.

v1.1.1

Added

  • Introduced a native blog system with a dedicated /blog listing page and statically generated /blog/[slug] article pages.
  • Added markdown-based blog content pipeline (content/blog/*.md) with frontmatter parsing, reading-time metadata, and HTML rendering.

Changed

  • Added an internal /journal page that renders CHANGELOG.md directly.
  • Updated site navigation so both new content sections (/blog and /journal) are first-party internal routes.
  • Added /journal to sitemap output.
  • Updated status dashboard data to reflect the blog/journal first-party rollout and current operational state.
  • Fixed markdown heading rendering so section titles like ### display correctly.
  • Includes current uncommitted local updates as part of this patch release.

v1.1.0

Added

  • Added a new /vault CTF experience with terminal-integrated challenge commands and dedicated challenge config.
  • Added standalone /privacy and custom not-found pages.
  • Added shared SiteFooter and SiteNavigation layout components for consistent page structure.
  • Added dedicated terminal hooks (use-terminal-controller, use-terminal-badges) and a focused DesktopTerminal component.

Changed

  • Refined terminal behavior and command handling in NativeTerminal and lib/terminal/commands.
  • Updated page layouts across home, status, vault, privacy, and not-found routes to use a unified shell.
  • Refreshed status dashboard visuals and card components (IncidentCard, OverallStatus, ServiceStatus, SystemMetrics).
  • Consolidated global styling into app/globals.css and removed legacy styles/globals.css.
  • Updated terminal configuration and supporting docs (config/terminal.ts, README.md).

Removed

  • Removed unused visual layers and helpers (BackgroundLight, CyberGrid, shader effects, theme provider).
  • Removed unused UI primitives and hooks under components/ui and legacy hooks/utilities.
  • Simplified dependency footprint in package.json and lockfile after component cleanup.

v1.0.0

Major Features

  • Terminal-Style Main Page: Complete redesign with a native terminal interface featuring command history, tab completion, and file system navigation
  • Status Dashboard: New /status page with real-time service monitoring, incident tracking, and system metrics
  • Mobile-First Design: Enhanced mobile rendering with responsive navigation and optimized layouts

New Components

  • NativeTerminal: Interactive command-line interface with system information display
  • CyberGrid: Stylized background component for visual enhancement
  • BackgroundLight: Dynamic animated gradient lights with mobile optimization
  • StatusDashboard: Comprehensive service status monitoring
  • IncidentCard: Display and manage service incidents
  • OverallStatus: System health overview
  • ServiceStatus: Individual service monitoring
  • SystemMetrics: Real-time system performance metrics

Technical Improvements

  • Added terminal-specific fonts and glass morphism effects
  • Implemented framer-motion animations throughout the application
  • Created TypeScript interfaces for TerminalLine, FileSystemItem, and BootMessage
  • Enhanced network utilities with IP address detection
  • Added configuration files for terminal and status page data
  • Improved CSS with keyframe animations (pulse-light, shimmer-light)
  • Fixed mobile rendering issues and added responsive design patterns

Bug Fixes

  • Fixed typo in blog URL (corrected from https://blog.yflong.devblog.yflong.dev to blog.yflong.dev)
  • Corrected startup date display in terminal configuration
  • Resolved iOS rendering logic issues

Dependencies

  • Added framer-motion for smooth animations
  • Integrated various Radix UI components for enhanced UX
  • Added three.js and React Three Fiber for 3D capabilities
  • Included recharts for data visualization in status dashboard

Design Updates

  • Implemented terminal aesthetic with monospace fonts
  • Added cyberpunk-inspired visual elements
  • Enhanced mobile user experience with optimized layouts
  • Introduced dynamic background effects and animations

v0.1.0

Notes

  • Initial commit. It worked on my machine.