← Brett Whitson

Changelog

[6.0.0] - 2026-10-24

Changed

  • SvelteKit - The page is now a SvelteKit 3 / Svelte 5 app, fully prerendered to static HTML by adapter-static. The rendered markup, SEO tags, JSON-LD, and public URLs are unchanged
  • Canonical host - brettwhitson.dev (apex) everywhere: canonical, Open Graph, JSON-LD, sitemap, robots.txt, and the resume
  • Deploy - GitHub Actions builds and deploys to GitHub Pages
  • Behavior from main.js is now Svelte actions; a failing enhancement logs an error and leaves the static content in place

Removed

  • scripts/build.mjs, templates/, javascript/main.js, styles/min/, and the generated root index.html and sitemap.xml. Static files moved to static/

[5.3.2] - 2026-09-25

Removed

  • Interests section

[5.3.1] - 2026-09-25

Fixed

  • If main.js was blocked or failed to load, every section stayed invisible, because the head script had already opted the page into entrance animations. The head script now drops those flags when the script errors or hasn't run within 4 seconds; main.js marks itself with js-ready as soon as it executes
  • Scroll reveal could never trigger for a section taller than about eight screens (e.g. Experience on a short landscape phone); it now reveals on any overlap past a 10% margin
  • Sections never scrolled to printed blank
  • The copy button showed, inert, without JavaScript: a component display rule overrode the hidden attribute
  • Un-pinning a skill by clicking it again cleared the highlight even while the pointer was still on it
  • The sidebar now fades with the rest of the page on theme change (a leftover .site-header selector missed it)

Changed

  • Screen readers get the intro query's result as a plain sentence (the styled query stays hidden from them)
  • Removed about 30 unused design tokens
  • README build notes match the current output

[5.3.0] - 2026-09-25

Accessibility (WCAG 2.2 AA)

  • Light-theme muted text darkened to #6b6b74 so it passes 4.5:1 on every surface
  • Hover and skill-linking now quiet other content with the muted text color instead of opacity, which had dropped dimmed text to about 2-3:1
  • Skill chips meet the 24px minimum target size
  • The footer is now a page-level landmark, outside main
  • Links that open a new tab say so to screen readers; the resume Preview link acts as a button when it opens inline
  • Section numbers in the nav are hidden from screen readers
  • Keyboard focus and anchor targets stay clear of the sticky bar on narrow screens
  • The backdrop glows no longer animate on their own; all background motion is driven by scrolling
  • Links in running text are underlined, so they don't rely on color alone

Removed

  • Published JSDoc pages and their toolchain; the doc comments stay in the source
  • Unused CSS outputs (styles/css/, empty and legacy files in styles/min/); the build writes only styles/min/styles.min.css
  • Unused utility classes, typography classes, button variants, and mixins

Changed

  • .gitignore is now tracked (its old .git* pattern ignored itself) and covers editor, OS, Node, and LaTeX files
  • Added .nojekyll so GitHub Pages serves the site as-is

[5.2.0] - 2026-09-25

Added

  • Parallax backdrop - A faint dot grid and soft amber glows behind the page, each layer drifting at its own rate as you scroll; the glows slowly breathe
  • Reading progress line along the top edge
  • Staggered reveals - Rows, stats, and skill groups enter one after another as their section appears, and section heading rules draw out from the label
  • Count-up stats in About
  • Intro entrance - The name wipes in and the rest of the intro follows in order; the SQL starts typing once its box is in
  • Theme switch grows the new theme outward from the toggle in a circle (View Transitions API, where supported)
  • Download buttons carry an arrow that dips on hover; linked skill chips lift slightly

Changed

  • Fonts: Geist and Geist Mono replace Newsreader, Inter, and JetBrains Mono
  • The intro's dot grid moved into the page-wide backdrop

[5.1.0] - 2026-09-25

Changed

  • Palette - Graphite neutrals with an amber accent replace the slate and blue. The main button is solid ink (near-black in light, near-white in dark); amber marks section numbers, the active nav item, SQL keywords, the current role, and linked skills
  • Skill chips are neutral until linked
  • The intro query is laid out on three aligned lines and returns specialties: Banner ERP administration, Full-stack development, Oracle database administration
  • About text says full-stack rather than front-end
  • Dark theme tokens are defined once and shared by the toggle and the OS preference

[5.0.0] - 2026-09-25

Changed

  • New design - Two-column layout: a sticky intro and numbered section index on the left, content on the right. Below 1024px the intro scrolls away and the index becomes a sticky horizontal bar
  • Database-flavored details - The intro "runs" a SQL query whose result rows are the roles; monospace 01 / section labels; a skill_group | members skills table; a faint dot grid behind the intro
  • Type: Newsreader for the name, Inter for body text, JetBrains Mono for labels, dates, and code
  • Projects and education are rows with the date in its own column; hovering a row quiets the others
  • Skills moved directly under Experience
  • Profile icons are inline SVG; the devicon font is no longer loaded

Added

  • Skill linking - Each role lists the skills it used. Hovering, focusing, or tapping a skill highlights the roles that used it, dims the rest, and spells it out under the skills table
  • Copy email button with inline confirmation
  • About section stats (years in university IT, years on Banner and Oracle, roles)
  • Organization captions such as "4 roles, 2018 to present", computed from the role dates
  • Build validation for unknown skill keys and icon names

Removed

  • Global list margins that doubled up spacing in every list

[4.1.1] - 2026-09-25

Changed

  • Removed BuilderJS from projects and the About text; projects are back to the original five from the resume

Fixed

  • A role with an empty bullets array rendered a stray "0"
  • Build now fails when required site metadata (email, url, description, image, headline) is missing, instead of writing empty meta tags

[4.1.0] - 2026-09-25

Added

  • Hero - Large portrait, name, role, and resume/email actions above the fold
  • Experience timeline - Roles at one organization hang off a vertical rail, current role highlighted; the rail draws and the dots appear in order when the section scrolls into view
  • Scroll-spy - The nav underlines the section being read and keeps it visible in the scrolling mobile nav
  • Scroll reveal - Sections fade up once as they enter the viewport
  • Header shows the name and a border only after the hero scrolls away
  • Source Serif 4 for the name and section titles

Changed

  • Sections are open blocks with the title in a sticky left column, instead of boxed cards
  • Projects are two-up cards; skill tiles are smaller
  • Header is a slim bar; profile links move to the hero below 1024px
  • Content column narrowed to 60rem for readable line lengths
  • Dark mode links use a lighter blue for contrast

Removed

  • Global * { transition } rule, hover lift on non-interactive sections, load-time staggered section animations
  • Unused card components and color tokens

Fixed

  • Keyframe animations now respect prefers-reduced-motion; scripted motion is skipped entirely when reduced motion is requested or JavaScript is off, so content is never left hidden

[4.0.0] - 2026-09-25

Changed

  • Static HTML - The page is rendered at build time by scripts/build.mjs from data/data.json and templates/index.html instead of being assembled in the browser. Search engines, link previews, and no-JS visitors now get the full content
  • Runtime script - main.js is down to ThemeController and ResumePreview; PortfolioController and the BuilderJS runtime dependency are gone
  • Section anchors are now #about, #experience, etc. (were #about-section)
  • Semantic markup: section/h2/h3 headings, a single h1, skip link, list markup for skill tiles and profile links

Added

  • JSON-LD Person data, sitemap.xml, and robots.txt
  • Saved theme applied before first paint (no flash of the wrong theme)
  • Resume preview falls back to opening the PDF on narrow screens, where mobile browsers can't show a PDF in an iframe
  • Tests for the build script (node --test scripts/)

[3.1.0] - 2026-09-25

Added

  • Projects section - BuilderJS, WebDocker (ACM first place), DockerUI, and the bipartite graph checker
  • Grouped roles - Experience entries can list several roles, each with its own dates and bullet points
  • Resume source - resume/whitson_resume.tex; the built PDF is published as data/whitson_resume.pdf
  • Page metadata - Description, canonical URL, and Open Graph tags for search and link previews
  • noscript fallback linking the resume PDF

Changed

  • Content refresh - Current Oracle DBA role, rewritten About, bullet points for every role, skills refocused on the database stack
  • Resume - Updated for 2026 and reworked to one page
  • Mobile header - Two compact rows with a horizontally scrolling nav (218px down to 104px tall)
  • Skill icons - Data now carries the full devicon class and a display label ("VS Code", not "Vscode")
  • Theme toggle - Inline SVG icons instead of emoji
  • Portrait - 192px WebP (7 KB) instead of the 960px JPEG (280 KB)
  • devicon pinned to 2.17.0

Fixed

  • Theme stopped following the OS setting after the first visit, because the initial theme was saved as if the user had chosen it
  • themechange event reported the new theme as previous
  • Nav links had no nav-item/nav-link classes, so the nav styles never applied
  • Section headings hidden under the sticky header after clicking a nav link
  • Desktop header overflowed horizontally between roughly 770px and 1100px wide
  • Resume download filename was hardcoded

[3.0.0] - 2025-10-07

Added

  • Complete style overhaul - Modern, clean design system
    • CSS custom properties for dynamic theming
    • Light/dark mode with system preference detection
    • Modular SCSS architecture (abstracts, base, layout, components)
    • Responsive design with mobile-first approach
    • Modern button and card components with hover animations
  • ThemeController class - Comprehensive theme management
    • Automatic system theme detection
    • Manual theme override capability
    • Theme persistence with localStorage
    • Smooth theme transitions
  • Resume preview functionality - Interactive PDF viewing
    • Download and preview buttons
    • Toggle-able iframe display
    • Responsive iframe sizing
    • Clean event handling with Builder.js utility
  • Enhanced footer - Professional site footer
    • Responsive grid layout
    • Theme-aware styling
    • Accessibility features

Changed

  • Design system overhaul - From cyberpunk to contemporary
    • Replaced glitch effects with smooth animations
    • Updated color palette to professional theme
    • Modernized typography and spacing
    • Simplified navigation design
  • SCSS architecture - Organized modular structure
    • Separated abstracts (variables, mixins)
    • Base styles (reset, typography, utilities)
    • Layout components (header, main, footer)
    • Reusable component library
  • Resume section - From auto-preview to user-controlled
    • Buttons for download and preview actions
    • Hidden iframe until user requests preview
    • Improved mobile experience
  • Event handling - Established Builder.js patterns
    • Created addEventListenerAfterBuild() utility
    • Documented proper Builder.js event binding
    • Cleaner, more maintainable code

Fixed

  • Builder.js event handling patterns established
  • SCSS compilation warnings addressed
  • Responsive design issues resolved
  • Theme consistency across all components

[2.0.0] - 2025-10-07 Major Architecture Overhaul

Added

  • PortfolioController Class: Complete refactor from procedural to object-oriented architecture
  • BuilderJS v0.0.3: Enhanced DOM manipulation library with new scope() method
  • Professional JSDoc Documentation: Comprehensive API documentation with automated generation
  • GitHub Pages Documentation: Auto-generated docs at /docs/JSDocs/ with compatibility fixes
  • Enhanced Error Handling: Comprehensive validation and graceful error recovery
  • Automated Documentation Pipeline: Batch scripts for JSDoc generation and deployment
  • TODOs Section: Added style overhaul planning with light/dark mode specifications

Changed

  • Complete Code Refactor: Migrated from procedural main.js to PortfolioController class
  • Improved BuilderJS: Enhanced with better scoping, validation, and memory management
  • Enhanced Data Loading: Robust JSON data loading with comprehensive error handling
  • Better Section Management: Modular section builders with type-specific handling
  • Documentation Quality: Added extensive JSDoc comments throughout codebase

Technical Improvements

  • Removed old BuilderJS v0.0.1 documentation and legacy code
  • Updated HTML documentation structure and index page content
  • Implemented professional documentation generation workflow
  • Enhanced GitHub Pages compatibility with CORS and protocol fixes

[1.3.0] - 2025-02-26 Content Modernization

Changed

  • General content updates and data refresh
  • Maintenance updates for current information

[1.2.0] - 2024-01-26 Code Quality Improvements

Fixed

  • Tab Handling: Fixed tab-related JavaScript issues
  • Code cleanup and formatting improvements

[1.1.0] - 2023-04-02 to 2023-05-15 Feature Expansion Period

Added

  • Resume Integration: Added iframe tab navigation for resume viewing
  • Enhanced Navigation: Implemented new animations and icon tooltips
  • BuilderJS Integration: Implemented use of new BuilderJS Library
  • Favicon: Finally added proper favicon support
  • Social Links: Added icon links to relevant sites above portrait
  • Email Updates: Updated contact information and resume

Enhanced

  • Animations: Added grow animation and fixed navigation animations
  • User Experience: New hover animations and tooltips for technology icons
  • Performance: Minified assets and removed defer attributes
  • Content: Updated resume spelling and content
  • Documentation: Updated BuilderJS documentation

Fixed

  • Mobile Compatibility: Added missing Builder.mod.id code
  • Navigation: Fixed animation issues with new grow effects

[1.0.0] - 2022-11-08 to 2022-11-11 First Major Release

Added

  • Complete Site Redesign: Full revamp of portfolio architecture
  • Mobile Responsiveness: Comprehensive mobile-friendly design implementation
  • README Documentation: Added proper project documentation

Enhanced

  • Mobile Optimization: Multiple iterations to achieve mobile compatibility
  • Layout Responsiveness: Fixed width identifiers and media queries
  • User Experience: Prevented automatic PDF downloads on mobile devices

Fixed

  • Mobile Display Issues: Resolved media query problems
  • PDF Handling: Fixed iframe behavior on mobile devices
  • Layout Issues: Multiple fixes for mobile viewport handling

[0.3.0] - 2022-05-10 to 2022-05-27 Domain & Infrastructure

Added

  • Custom Domain: Established brettwhitson.dev domain with CNAME configuration
  • GitHub Pages Setup: Configured proper GitHub Pages deployment
  • README: Initial project documentation

Fixed

  • Domain Configuration: Multiple CNAME adjustments for proper domain routing
  • Spelling Corrections: Fixed various text content issues
  • Deployment: Resolved GitHub Pages hosting configuration

[0.2.0] - 2021-04-26 to 2021-04-27 Content Development

Added

  • Resume Integration: Added PDF resume functionality
  • Content Structure: Established initial content organization
  • File Management: Organized project assets and structure

Enhanced

  • Resume Updates: Multiple iterations of resume content and formatting
  • Content Quality: Continuous content refinement and updates
  • File Organization: Improved project structure and asset management

Fixed

  • File Cleanup: Removed unnecessary files (whitson_hw3.pdf)
  • Content Accuracy: Multiple content updates and corrections

[0.1.0] - 2021-04-26 Project Genesis

Added

  • Initial Commit: Project foundation and basic structure
  • HTML Structure: Created initial index.html file
  • Basic Functionality: Established core portfolio framework
  • File Upload System: Initial asset management

Foundation

  • Project repository initialization
  • Basic HTML/CSS/JS structure
  • Initial portfolio concept implementation
  • File organization and management system

Project Statistics

  • Total Development Period: April 26, 2021 - October 24, 2026 (5+ years)
  • Total Commits: 100+ commits
  • Major Versions: 6 major releases

Key Milestones:

  • 2021: Project inception and initial development
  • 2022: Major redesign and mobile optimization
  • 2023: Feature expansion and library integration
  • 2025: Complete architectural overhaul with modern practices
  • 2026: Static rendering from JSON, a full visual redesign, then a move to SvelteKit on brettwhitson.dev

Technology Evolution:

  • Started with basic HTML/CSS/JS
  • Progressed to SCSS and modular architecture
  • Integrated custom BuilderJS library
  • Replaced client-side rendering with a zero-dependency Node build that prerendered the page from JSON
  • Moved to SvelteKit and Svelte 5, still fully prerendered, deployed by GitHub Actions