STATUS: ONLINE
~/home
$ git log --graph --decorate --no-merges HEAD@6bbc169

/var/log/portfolio.timeline

CHANGELOG

A live-feeling commit stream for the portfolio: filtered git history, decoded hashes, expandable bodies, and a terminal HUD built for scanning the evolution of the site.

entries

37

last update

12 May 2026

type distribution 33 with body
feat 23 fix 8 refactor 2 content 1 chore 1 misc 2

showing 37 of 37 commits

  1. * + feat row:01

    add desktop contact activity view toggle

    6bbc169

    Add a desktop-only control to switch the contact activity panel between the existing full activity heatmap and the compact recent-month chart treatment used on mobile. Keep mobile constrained to the chart-only presentation, extract the shared recent-month activity summary into a reusable local component, and preserve the existing heatmap tooltip behavior for the default desktop mode. Also update AGENTS.md with the current split terminal and projects-page structure plus refactor guidance for large interaction-heavy route files.

  2. * ! fix row:02

    prevent mobile changelog body truncation

    45304ee

    Replace the standalone changelog page's fixed expanded body height with content-driven sizing so long commit messages can fully expand on narrow mobile layouts. Initialize each body shell with the collapsed preview height, expand to the element scrollHeight when toggled open, and resync those heights on resize so wrapping changes do not reintroduce clipping. Add integration coverage that asserts the page script uses dynamic max-height management and no longer relies on the old 34rem expansion cap.

  3. * * misc row:03

    refine hero terminal trigger animation and contact activity spacing

    8328340

    Adjust the Contact dashboard activity layout so both desktop and mobile charts keep breathing room away from the right edge. Add a shared right-side inset for the contact rows and a small inner offset for the activity charts to prevent the bars from visually colliding with the card boundary. Rework the Hero terminal trigger entrance into a measured width-morph animation before the typewriter loop starts, so the command chip no longer pops from a cramped square into a wider rectangle. Keep the full 'press [Ctrl + K] to launch terminal' copy on one line on narrow screens and tune the token spacing between the prompt, shortcut, and surrounding text for a cleaner command-line look.

  4. * ! fix row:04

    align terminal changelog navigation and homepage refresh behavior

    5755278

    Update the terminal changelog surface so /changelog resolves to the standalone route instead of the homepage anchor, and make /changelog/commits.log print recent real changelog entries from generated data instead of a placeholder hint. Add the missing autocomplete entry and regression coverage for the changelog virtual file so terminal suggestions stay aligned with supported commands. Adjust homepage scroll initialization to reset refreshes back to the hero section only on the root route while preserving a safe module-script boot flow, then cover the behavior with scroll unit and integration tests. Refresh the 0PNG portfolio project devlog copy to document the current terminal-first navigation, standalone project command-space, dossier devlog layout, and changelog surfaces shipped in the site.

  5. * ~ refactor row:05

    split standalone projects page into focused layout, UI, and script modules

    d66d93f

    Restructure the standalone /projects route so the page entry only handles data preparation, composition, page-owned styles, and a thin client-script bootstrap. Extract the hero/filter surface, atmosphere layers, and individual stack cards into dedicated Astro components under src/components/projects while preserving the existing route, copy, class names, data attributes, and stack-card markup contracts. Move shared derived data and filter/depth constants into src/lib/projects-page.ts and centralize reveal, filtering, and pseudo-3D depth behavior in src/scripts/projects-page.ts so the interactive logic is isolated from the route template without changing current behavior. Keep the standalone projects page styles owned by src/pages/projects/index.astro via a single global style block to avoid Astro scoping drift across cross-component selectors such as data-project hooks, reversed card layouts, focused states, and mobile callout resets. Update projects page integration coverage to validate route plus component plus script contracts instead of a single oversized file snapshot, and add unit tests for derived page data, filter semantics, and exported interaction thresholds.

  6. * ~ refactor row:06

    split terminal palette into focused UI and command modules

    6605619

    Restructure the global TerminalPalette implementation into smaller terminal-specific modules while preserving the existing public import path and user-facing behavior. Extract command output rendering into a dedicated TerminalOutput component and move terminal types, content, path normalization, directory navigation, and command resolution into src/lib/terminal for lower coupling and easier maintenance. Keep src/components/TerminalPalette.tsx as a thin wrapper so BaseLayout and other consumers do not need to change imports during the refactor. Replace the previous string-only terminal integration smoke coverage with behavior-oriented checks and add unit tests for terminal path helpers and command resolution contracts. Align the About section terminal window controls with the live command palette by matching the grouped hover behavior and the updated crisper macOS-style red-yellow-green control icons while keeping them decorative only.

  7. * * misc row:07

    refine hero and contact activity behavior, add regression coverage

    bffd9f3

    Adjust the homepage hero pinned-scroll exit so key copy and scroll cues stay readable instead of fading out too aggressively. Add a mobile-only recent activity summary to ContactDashboard while preserving the desktop full-width contribution log. Expand integration coverage for the hero/contact behavior changes and add a codex refactor planning note for future structural cleanup work.

  8. * + feat row:08

    overhaul project devlog dossier experience

    905971c

    Upgrade /projects/[slug] pages from a plain markdown render into a terminal/HUD-style dossier layout with reading progress, estimated read time, section index navigation, copy-link controls, metadata panels, and prev/next project navigation driven by project order. Refine the standalone /projects page for mobile by fixing responsive hero/card behavior, converting the project node callout into a vertical mobile flow, and simplifying the card media treatment back to a neutral grayscale surface. Also fix markdown separators in the 0PNG Portfolio devlog so horizontal rules render correctly, align the Uniconvert standalone description with its actual file-conversion positioning, and add integration coverage for the new devlog layout hooks.

  9. * + feat row:09

    expand terminal palette into Linux-like site shell

    808036b

    Add a virtual read-only filesystem for the portfolio command palette so visitors can use familiar commands like pwd, ls, cd, cat, tree, find, grep, xdg-open, history, date, uname, and echo. Support deeper navigation paths including section anchors and project devlog routes such as /projects/<slug>, with project files generated from the existing projects data. Replace the terse help output with categorized help topics, help all, and man-style command hints so the expanded command set remains discoverable. Add integration coverage for the Linux-like command set, direct project navigation, virtual filesystem model, and categorized help entries.

  10. * + feat row:10

    redesign standalone projects page

    9494dd8

    Replace the plain standalone projects grid with an immersive 3D project stack experience. Add a changelog-aligned terminal/HUD hero with a lightweight home link, command-line framing, project stats, and compact tag filters. Implement scroll-scrubbed project panels with a longer focused plateau, animated node callouts, devlog links, responsive fallbacks, reduced-motion handling, and filter-aware visible counts. Add integration coverage for the new standalone projects page structure, hero language, filter controls, depth hooks, and reduced-motion support.

  11. * ! fix row:11

    stop truncating generated changelog history

    505552b

    Remove the hard-coded fetch and output limits from the changelog generator so src/data/changelog.json includes the full filtered non-merge commit history instead of being capped at 10 entries.

  12. * + feat row:12

    redesign changelog surfaces and align homepage CTA interactions

    0601b15

    - redesign the homepage changelog section as a terminal-style activity feed with refined motion, simplified row hover behavior, and a bottom-up fill hover for the full changelog CTA - align the projects section View All Projects button with the same bottom-up fill hover treatment used by the homepage changelog CTA - update the standalone changelog page changes currently in the worktree and add integration coverage for changelog page rendering plus the refreshed homepage scroll experience assertions - include the codex environment metadata currently present in the workspace

  13. * ! fix row:13

    refine portfolio load and contact interactions

    4206e7f

    Limit the boot loading animation to the homepage by making BaseLayout render the boot overlay only when showBoot is enabled. Keep the Hero terminal command trigger visible during the pinned parallax scroll by moving fade and blur effects onto the headline elements instead of the whole content container. Align Contact section spine nodes by giving the node wrapper a fixed 20px square so the vertical line passes through the dot center. Bake GitHub contribution stats during the GitHub Pages deploy workflow before Astro builds, using the Actions-provided GH_TOKEN so the contact activity chart refreshes on every deployment.

  14. * + feat row:14

    enhance scroll experience

    c44cb35

    no extended commit body

  15. * ! fix row:15

    generate changelog during deploy

    6b2b49c

    no extended commit body

  16. * = chore row:16

    stabilize Windows project setup

    221b0fe

    no extended commit body

  17. * ! fix row:17

    restrict mobile notice to mobile devices only

    169e00b

    no extended commit body

  18. * + feat row:18

    add parallax layers, typewriter trigger, mobile notice, and OG meta

    33a546f

    - Hero: multi-layer scroll parallax on orbs/dots/content, 3D tilt on mousemove, typewriter loop on terminal trigger - About/Changelog/Contact: per-section background parallax at varying scrub depths - ProjectCard: tighten hover transition, add bg tint on hover - BaseLayout: closable mobile notice (all-device for testing), OG/Twitter meta tags - scroll.ts: expose lenis instance on window for cross-component access

  19. * + feat row:19

    add cd /contact command and functional terminal traffic light buttons

    434a994

    - Add `cd /contact` command to terminal (registry, commandMap, help, ls) - Replace static dot divs with functional buttons in TerminalPalette - Red closes, yellow clears output, green toggles maximize (max-w-2xl ↔ max-w-5xl) - Hover over dot group reveals macOS-style SVG icons (×, −, diagonal arrows) - Fix ChangelogSection mobile layout: left-aligned spine, single-column card grid, read-more truncation

  20. * + feat row:20

    add contact section, revamp mobile nav, and update project content

    3b20981

    - Add ContactSection + ContactDashboard React island with activity bar chart (from github-stats.json), Discord copy button, live HKT clock, status indicator, and email row - Fix tooltip positioning via createPortal to escape backdrop-filter stacking context - Add scripts/fetch-github-stats.js + bake:stats npm script for pre-building the activity data at build time - Add contactConfig.ts and fallback contribution generator - Revamp mobile navbar to full-screen overlay with fade transition and aria-expanded; add CONTACT nav link; bump z-index to z-[60] - Rewrite lumix.md, uniconvert.md, upmods.md project devlogs with accurate stack, features, and usage sections - Update block-blast-slayer.md tags (add PWA) and 0png-portfolio.md minor content edits - Sync projects.ts Uniconvert tags/excerpt with updated devlog - Document GITHUB_TOKEN in .env.example

  21. * # content row:21

    update project data, devlogs, navbar, and terminal palette

    c739aa9

    - Rewrite 0png-portfolio devlog with accurate feature descriptions - Rewrite block-blast-slayer devlog to reflect JS/DFS-based solver - Update project tags and descriptions in projects.ts - Add CHANGELOG nav link to Navbar and TerminalPalette

  22. * + feat row:22

    add changelog page, section, component, and CI automation

    71191bc

    - Redesign /changelog as a full-page zigzag timeline (max-w-5xl, glassmorphism cards, fractal noise + purple vignette background, GSAP ScrollTrigger fade-up, colour-coded type badges) - Add ChangelogSection.astro to homepage showing 3 latest commits with the same zigzag design, scoped to max-w-5xl - Add reusable Changelog.astro component (limit + repoBase props, runtime JSON validation, empty-state fallback) - Add scripts/generate-changelog.js (ESM, pure Node built-ins, RS+NUL git log parsing, Co-Authored-By and boilerplate filtering) - Add .github/workflows/generate-changelog.yml (push to main, github-actions[bot] loop guard, idempotent diff-before-commit)

  23. * + feat row:23

    add hero terminal trigger button and mobile device notice

    6bcd964

    Wire up a click-to-open terminal button in the Hero section that dispatches the open-terminal event consumed by TerminalPalette. Add a fixed amber-coloured terminal-log-style banner in BaseLayout that appears on touch/mobile viewports via navigator.maxTouchPoints + window.innerWidth detection.

  24. * + feat row:24

    add global Terminal Command Palette (Ctrl+K)

    a558099

    - React island with GSAP fade+slide animation, body scroll lock, and wheel event isolation to prevent Lenis scroll chaining - Zsh-style ghost-text autocomplete, Tab completion, and ↑/↓ command history - commandMap with 12 commands: help, whoami, cat about_me.txt, cat github.txt, hobby.sh, stack, ls, cd /, cd /about, cd /projects, sudo rm -rf /, clear - Custom monospace scrollbar (6px, neutral track, pill thumb) - Global Escape + Ctrl/Cmd+K listeners with proper cleanup

  25. * + feat row:25

    add smart sticky navbar and fix projects page layout

    aa3a3d0

    - Add Navbar component with smart hide/show on scroll (rAF-based), glassmorphism backdrop, terminal-style [ LINK ] formatting, pinging status indicator, and GSAP entrance animation - Mount Navbar globally via BaseLayout - Add [HOME], [ABOUT], [PROJECTS] links; PROJECTS anchors to /#projects - Add id="projects" to ProjectsSection for anchor navigation - Fix /projects back button z-index conflict by converting from fixed to inline breadcrumb with proper pt offset - Add Footer to /projects standalone page and BlogLayout (devlog pages)

  26. * + feat row:26

    simplify ProjectsSection animation and add back-link to projects page

    a4dd05b

    - Replace all parallax logic with a simple GSAP fade-up stagger on scroll - Clean up ProjectCard: remove cover-parallax classes and will-change-transform - Remove unused ScrollTrigger import from ProjectsSection - Add fixed terminal-style back link (← ~/home) to /projects/index.astro

  27. * + feat row:27

    implement 6-grid progressive disclosure for ProjectsSection

    f45d423

    - Slice projects to max 6; fill remaining slots with "Coming Soon" placeholder cards that mirror exact ProjectCard dimensions - Always render "View All Projects" terminal-style button linking to /projects - Remove fixed horizontal-scroll widths from ProjectCard (w-full for grid) - Add /projects/index.astro stub listing all projects in responsive grid - Remove src/lib/horizontalScroll.ts and its unit tests

  28. * + feat row:28

    replace Notion blog with content collections, add projects pages and Footer

    c638a09

    - Migrate blog from Notion API to Astro content collections (projects/) - Add project detail pages via src/pages/projects/[slug].astro - Add Footer component with tests - Remove Notion integration (notion.ts, blog/[slug].astro, related tests) - Enhance ProjectCard, ProjectsSection, BlogLayout, and horizontalScroll - Update project data in projects.ts and CI workflow

  29. * + feat row:29

    redesign About section with HUD, terminal, and fix Marquee loop

    b0bfcb7

    - Refactor About.astro into full-viewport section with two-column layout - Add macOS-style interactive terminal with typewriter GSAP reveal - Add Control Console HUD (real-time HKT clock, geo coords, public IP) - Add 40px lit grid background with intersection dots and spotlight orbs - Fix Marquee.astro seamless loop using per-item padding-right strategy - Add Adobe Premiere Pro, After Effects, Obsidian, Python to tech stack - Add avatar card with scanline hover effect and parallax depth lag

  30. * + feat row:30

    enhance Hero with animated orbs, spotlight, and text reveal

    9139c54

    Add three drifting light orbs, a mouse-tracking GSAP spotlight, a more visible dot grid with four-sided edge vignettes, per-word clip-path reveal animation, and a shadcn Badge status indicator.

  31. * + feat row:31

    implement US3 Hero, About, and Marquee components (T034-T037)

    01f2b7b

    Add full-viewport Hero section, bio About section, and CSS-only infinite Marquee for the tech stack. Wire all three into index.astro above ProjectsSection, completing the above-the-fold homepage experience.

  32. * ! fix row:32

    gracefully handle Notion API failure in getStaticPaths

    222bb26

    Wrap getAllDevlogs() in a try-catch so a missing or invalid NOTION_TOKEN produces a warning and an empty blog route list instead of crashing the build.

  33. * ! fix row:33

    add missing class-variance-authority dependency

    ef0fac2

    shadcn button.tsx imports cva from class-variance-authority but it was never explicitly installed, causing Rollup to fail at build time.

  34. * + feat row:34

    implement US2 Notion blog layer (T029-T033)

    6972c1e

    - Add src/lib/notion.ts with Client init, getAllDevlogs(), getDevlogBySlug(), and transformNotionPage() returning typed DevlogEntry - Add src/layouts/BlogLayout.astro with formatted date, back-link, and markdown slot - Add src/pages/blog/[slug].astro with getStaticPaths() and marked-powered HTML rendering - Update ProjectCard.astro devlog link to use buttonVariants for consistent styling - Install marked for markdown-to-HTML conversion at build time - All 29 tests pass (notion.test.ts + blog-routes.test.ts green)

  35. * + feat row:35

    implement US1 projects section (T020-T026)

    31a39a1

    - Add 3 placeholder Project entries to src/data/projects.ts - Implement GSAP horizontal scroll with pin+scrub+parallax in src/lib/horizontalScroll.ts - Build premium monochromatic ProjectCard.astro with tag pills, ghost year overlay, and conditional devlog link - Build ProjectsSection.astro with responsive vertical stack below md breakpoint and ScrollTrigger resize refresh - Bootstrap src/pages/index.astro with BaseLayout and featured projects - Expand global.css with full shadcn CSS variable set and @theme inline block for Tailwind v4 - Fix vi.mock hoisting bug in horizontalScroll.test.ts using vi.hoisted(); add jsdom environment - Install jsdom dev dependency for browser-API unit tests - All 15 tests pass (T017, T018, T019)

  36. * + feat row:36

    add UI components, data layer, layouts, scroll utilities, and tests

    005d990

    - Add shadcn/ui button and badge components - Add site config, projects, and tech stack data files - Add BaseLayout Astro layout with Lenis scroll integration - Add scroll and utils library helpers - Add unit tests for data and scroll utilities - Add eslint config and shadcn components.json - Update package.json with sorted deps and new radix-ui/slot

  37. * + feat row:37

    scaffold 001-portfolio-website with Astro, React, Tailwind, and tooling

    7b606b7

    Sets up the full project structure including Astro 5.x config, React 18 islands, Tailwind CSS v4, ESLint, Vitest, CI/CD GitHub Actions workflows, and initial page/style stubs. Updates package.json with all production and dev dependencies.