Skip to content

Promote sandbox to main (2026-07-09)#38

Merged
TOM-BOHN merged 1 commit into
mainfrom
sandbox
Jul 9, 2026
Merged

Promote sandbox to main (2026-07-09)#38
TOM-BOHN merged 1 commit into
mainfrom
sandbox

Conversation

@github-actions

@github-actions github-actions Bot commented Jul 9, 2026

Copy link
Copy Markdown

Sandbox validated and ready for production

This PR was opened automatically after sandbox was validated by
this workflow run.

  • Build (npm run build): passed
  • Commit validated: 515f032f5d507ec647299ecdc61781f328818dfb

Commits included in this promotion

Review checklist

  • Build passed in CI (see above)
  • Changes reviewed and look correct for production
  • Ready to deploy (merging this PR triggers the GitHub Pages deploy workflow)

This PR requires manual human review and must be merged by a person.
This automation will never merge it.

* Add new UI enhancement components

- RoleTypewriter: cycles through prior role titles before settling on the
  current one, with a blinking cursor
- ScrollReveal: fades/slides content in via IntersectionObserver as it
  scrolls into view, with a safety-net timeout so content is never
  permanently stuck invisible
- BackToTop: floating button that appears after scrolling and smooth-scrolls
  to the top of the page
- ReadingProgressBar / ShareButton: blog post reading aids

Co-authored-by: Thomas Bohn <bohn.tl@gmail.com>

* Wire skip-link, back-to-top, and OG share image into the root layout

- Add a visually-hidden skip-to-content link for keyboard/screen-reader users
- Give <main> an id so the skip-link has a target
- Mount the global BackToTop button
- Point openGraph/twitter metadata at the new social share image

Co-authored-by: Thomas Bohn <bohn.tl@gmail.com>

* Generate branded OG/Twitter share image

Adds scripts/og-image/generate-og-image.js (sharp-composited from the
profile photo + Tableau Color Blind brand palette) and commits the
generated public/images/og-image.png. Wired into metadata in a prior
commit. Documented regeneration in the README, same pattern as the
existing icon generator.

Co-authored-by: Thomas Bohn <bohn.tl@gmail.com>

* Default to system color-scheme preference for first-time visitors

Previously the theme always defaulted to light until a visitor made an
explicit choice (persisted in localStorage). Now, when there's no saved
preference, honor prefers-color-scheme: dark before falling back to light.

Co-authored-by: Thomas Bohn <bohn.tl@gmail.com>

* Add mobile hamburger nav and animated active-link indicator

- Replace the always-expanded mobile nav block with a hamburger toggle that
  smoothly expands/collapses (CSS grid-rows trick, no JS height measuring),
  closing automatically on route change
- Extract a shared DesktopNavLink with an animated underline that scales in
  on hover and stays put in the accent color for the active page

Co-authored-by: Thomas Bohn <bohn.tl@gmail.com>

* Add reading time, progress bar, share, and scroll-reveal to blog pages

- lib/blog.ts: estimate reading time from rendered word count, exposed as
  BlogPost.readingTimeMinutes
- Blog listing: show '<date> · X min read' per post; reveal each post card
  via ScrollReveal (staggered) instead of animating on mount; add the role
  typewriter to the page header
- Blog post: mount a top-of-viewport ReadingProgressBar, add a ShareButton
  (Web Share API with clipboard fallback) next to 'Back to Blog', and show
  reading time alongside the date

Co-authored-by: Thomas Bohn <bohn.tl@gmail.com>

* Add role typewriter and scroll-reveal animations across all pages

Replace the static 'PRODUCT MANAGER & SOFTWARE DESIGNER' role tag with the
RoleTypewriter component (Home, About, Contact, Certifications, Projects,
Hub, Links, V2ME), and swap each page's on-mount fade-in-up sections for
ScrollReveal so below-the-fold content animates in as it's scrolled into
view rather than all at once on load.

Co-authored-by: Thomas Bohn <bohn.tl@gmail.com>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
@github-actions
github-actions Bot requested a review from TOM-BOHN July 9, 2026 02:11
@TOM-BOHN
TOM-BOHN merged commit 39b4fcf into main Jul 9, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant