Skip to content

Promote sandbox to main (2026-07-10)#46

Merged
TOM-BOHN merged 7 commits into
mainfrom
sandbox
Jul 10, 2026
Merged

Promote sandbox to main (2026-07-10)#46
TOM-BOHN merged 7 commits into
mainfrom
sandbox

Conversation

@github-actions

@github-actions github-actions Bot commented Jul 10, 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: b2f6dc947e38d244f3897b4bec055fe8a69afb22

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.

cursoragent and others added 5 commits July 10, 2026 01:05
…ring selector

html[data-theme="xanga"] body a[class*="bg-accent"] was meant to fix
contrast for links with a literal, resting bg-accent background, but
[class*=...] does substring matching against the whole class string - so
it also matched inactive mobile-nav links whose only accent-flavored class
was the hover-prefixed "hover:bg-accent-orange", forcing dark
--on-accent text onto them even at rest (on top of their actual dark navy
background), making Home/Blog/Contact/Hub/Links/V2ME/Learning/Projects
unreadable in the mobile menu.

Excludes any element whose class also contains "hover:bg-accent" from
this always-on rule, matching the same guard already used for the
analogous hover-only overrides a few lines down.

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

.gradient-btn was always orange and .gradient-btn-blue was always blue,
so the homepage showed one blue CTA (Request VIP Access) next to one
orange CTA (Get in touch) regardless of theme, which read as an
arbitrary/inconsistent color choice.

Introduces --btn-primary-from/-to/-text/-shadow-rgb tokens that resolve
per theme: blue in light mode (matching light's already-dark, high
contrast --accent), orange in dark and Xanga modes (since dark's --accent
is a lighter blue that needs a dark-text workaround, and Xanga's --accent
already *is* the orange). .gradient-btn now uses these tokens, and both
homepage CTAs share the single .gradient-btn class, so they always match
each other and swap color together based on theme.

Removes the now-unused --accent-blue/-hover/on-accent-blue tokens and
.gradient-btn-blue, which existed solely to force one button blue
regardless of theme.

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

Nudges hardcoded/fixed colors across the site toward the theme system:

- Profile photo accent bar (page.tsx, about/page.tsx) used raw light-mode
  hex values (#c85200/#fc7d0b/#1170aa) instead of the accent-orange-hover/
  accent-orange/accent tokens they were meant to represent, so it stayed
  frozen at light-mode colors in dark/Xanga.
- ProjectArtifact type badges (artifact/deliverable/phase/example) used
  hardcoded Tableau-palette hex values (comments literally named them
  'Tableau Dark Blue' etc.) instead of the equivalent semantic tokens, for
  the same reason.
- Blog listing's Medium icon hover used hover:text-black, an actual
  contrast failure (near-invisible) on dark/Xanga's near-black background.
- 'Read on Medium' buttons (blog/[slug]/page.tsx) and the LinkedIn contact
  tile used literal bg-black/text-white and LinkedIn's brand blue
  regardless of theme, inconsistent with how this site already represents
  Medium (orange, on the homepage Medium card) and email (theme accent, on
  the Email tile) - aligned them to the same convention.

Also fixes two structural bugs uncovered while making these changes:

- tailwind.config.ts colors were plain  strings, which Tailwind
  cannot decompose into RGB channels at build time - so every
  opacity-modifier utility built on them (bg-accent/10, border-accent/40,
  etc.) was silently generating no CSS at all, leaving several existing
  elements (the header's sidebar-restore button, decorative photo-frame
  borders, the contact page's VIP callout box, five v2me tag pills, plus
  the new artifact badges) with fully transparent backgrounds/borders
  instead of the intended tinted ones. Wrapped every color in color-mix()
  with the <alpha-value> placeholder so Tailwind can generate correct
  opacity variants while still resolving the actual color from the CSS
  variable at runtime.
- html[data-theme="xanga"] body [class*="text-accent"] used the same
  loose substring-match pattern already fixed for bg-accent: it also
  matched text-accent-hover and text-accent-orange (both contain
  "text-accent"), forcing them all to var(--accent) instead of their own
  shade - which made the new artifact badges (and anything else using
  text-accent-hover/text-accent-orange in Xanga) collapse to a single
  color. Added :not() guards plus dedicated rules for the hover/orange
  variants.

Co-authored-by: Thomas Bohn <bohn.tl@gmail.com>
@github-actions
github-actions Bot requested a review from TOM-BOHN July 10, 2026 01:52
@github-actions

Copy link
Copy Markdown
Author

Sandbox re-validated at fb50fa6263fb317440c867f0c9ecdd01a2091906 - build passed. Ready for review.

cursoragent and others added 2 commits July 10, 2026 01:57
…stency-fixes-abac

# Conflicts:
#	tailwind.config.ts

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

Copy link
Copy Markdown
Author

Sandbox re-validated at b2f6dc947e38d244f3897b4bec055fe8a69afb22 - build passed. Ready for review.

@TOM-BOHN
TOM-BOHN merged commit 5e30658 into main Jul 10, 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.

2 participants