Commit Graph
29 Commits
Author SHA1 Message Date
jwinterm 651be20100 home: drop Selected Works card + juice hero; per-pillar OG cards; sitemap freshness
Home: the big empty 'Selected Works' section-container card is gone in favour of a compact
centered heading, pulling the bento up ~300px so the work leads directly under the hero.
Hero juice (all LCP-safe + motion-safe): the H1 gets an animated gradient sheen (only the
gradient POSITION animates, so the largest paint is never delayed; verified opacity stays 1),
a soft breathing cyan aura sits behind it (aria-hidden), and the CTAs get a cyan glow + hover
lift.

Services: each pillar page (and the hub) now generates its own OG social card via the shared
gameOgImage helper with a 'Services' badge and the pillar accent, so sharing a pillar shows
a distinct card instead of the generic banner. Verified: distinct per-slug image URLs, valid
1200x630 PNGs.

Sitemap: bump lastModified 2026-06-01 -> 2026-07-12 (we've meaningfully changed the site).
2026-07-12 14:15:46 -04:00
jwinterm 62fee8b83a home: bento above What We Do; splash enters on scroll intent; pre-warm the water filter
The page after the splash was two screens of text before the first image. Selected
Works (the bento, with the live barns vignette) now leads and the services copy
supports it below, wrapped in the same scroll-reveal.

Splash: the first wheel tick, 24px touch drag, or scroll key now plays the SAME
water-ripple enter as a tap (scrolling past used to hard-cut after a full screen).
Listeners are passive, the entering guard dedupes, reduced-motion still gets the
instant dismiss.

Pre-warm: on requestIdleCallback (post-LCP, invisible to Lighthouse) a 1px element
paints through the splash-water filter so the graph compiles before first use (the
first-tap stutter), and the logo layer gets will-change ahead of the zoom.

Verified with Playwright against the production build: wheel/key/touch all enter,
session flag set, bento renders above What We Do.
2026-07-11 10:45:50 -04:00
jwinterm e3cc38bded Site copy: education-only nuclear (no for-hire controlled modeling), software-only/no-custody crypto, accessibility as capability not warranty, studio voice; fix support privacy link + terms consulting scope clarifier 2026-06-08 14:26:11 -04:00
jwinterm 673d07a00e Mobile nebula: keep left monitor + parallax, glide-and-fade with the hero
A phone has no left gutter like desktop, and the nebula was position:fixed, so
scrolling slid the text up into the pinned monitor (overlap + jumps). Keep the
monitor to the left of the title and keep the parallax, but on mobile the field
glides up and out with the hero (slower-than-scroll lag for depth) and fades as it
leaves, so it never crosses the content below. Only the monitor/streamer layer
fades; the base gradient stays. Extra top room (pt-44) keeps it clear of the header
at rest. Desktop unchanged.

Dials: yRangeMobile (parallax), heroOpacity range (fade), pt-44 (top room).
2026-06-07 08:05:34 -04:00
jwinterm b43c9d851b Homepage: Server Component + client splash island (cut hydration render-delay)
The data-URI logo still had LCP ~5s with zero network request, proving the
bottleneck is render delay (JS), not the image. So:
- page.tsx is now a Server Component. The hero, tagline, buttons, ServicesPreview,
  PortfolioGrid, and FounderSignature render as static server HTML (they had no
  client features, so they now hydrate to nothing).
- Splash state machine + header/nav/background gating + nebula position + scroll
  restoration moved into a small client island (home-shell.tsx) that takes the
  static content as children. Nebula reads the title via getElementById.
- Dedupe @types/react to 19 across the workspace (pnpm override) so the
  server->client children boundary type-checks.
2026-06-06 19:52:11 -04:00
jwinterm 065cabc38c Mobile LCP: inline splash logo as data URI; revert harmful image preload
- The high-priority <link rel=preload as=image> stole bandwidth from render-
  blocking CSS on 4G, pushing FCP 1.1s -> 2.2s and the score 82 -> 70. Removed.
- TBT is ~30ms (not main-thread bound), so the FCP->LCP gap was the logo's
  network fetch. Inline the mark as a data URI: zero request, paints with FCP.
  LCP should drop toward FCP and stop swinging run-to-run.
2026-06-06 19:03:38 -04:00
jwinterm 945529af33 Splash only on fresh visit (sessionStorage); preload LCP logo; draft perf blog post
- Splash is now a one-time intro per session: once entered (scroll or click) a
  refresh skips it, so you can't scroll back up into it mid-page.
- Preload the splash logo <img> (the mobile LCP element) at high priority.
- Draft blog post on keeping an animated hero without tanking Core Web Vitals
  (draft: true, for review).
2026-06-06 18:49:50 -04:00
jwinterm ea012b63fe Splash: remove non-composited glow rings (fix mobile NO_LCP); cross-fade to content; nudge tracer target
- Drop the two animated glow rings: stroke-dashoffset is non-composited, so
  they repainted every frame next to the logo and prevented Lighthouse from
  settling on an LCP (mobile NO_LCP). The static box + pulsing glow remain.
- Splash now cross-fades into the content: on enter it becomes a fixed overlay
  and fades opacity to 0 over the revealed page, instead of a hard cut.
- Nebula tracer target moved up-and-left (computerX-1, computerY-1.5) so the
  streamers converge on the monitor screen, not below-right of it.
- Removed the now-unused splash-* keyframes.
2026-06-06 17:50:42 -04:00
jwinterm 874bc4a2ff Skip the splash entirely for prefers-reduced-motion visitors
Reduced-motion users now land straight on the main hero (desktop and mobile);
the splash is no longer shown to them, not just de-animated. Set before paint
via useIsoLayoutEffect so it never flashes.
2026-06-06 14:37:17 -04:00
jwinterm ed07bb5681 Add splash intro, nuclear games + consulting, Cherenkov hero
- Splash: full-viewport animated SUCH logo cover with four corner nav
  buttons; reveals the site once "entered" (scroll-through or Explore) and
  does not resurrect on scroll-up. Original hero restored beneath it
  (title-anchored monitor pulse + Cherenkov-blue background).
- Logo: traveling Cherenkov glow ring + gentle letter breath (SVG/Framer,
  reduced-motion safe); beveled glass corner buttons.
- Services: new "Nuclear & Radiation Modeling" section + "Consulting"
  umbrella (payments, crypto, nuclear), MCNP Google Scholar link, and a
  not-a-licensed-PE clarification.
- About/founder bio: LLNL credibility + accessibility, art101.io link.
- Products: add Barns & Neutrons, Alpha Doc, Decay Theory (detail pages,
  OG cards, SVG icons); client-side sortable grid with coming-soon at the
  bottom. New Neroswap + Custom Websites icons (de-duplicated).
- SEO: game pages added to sitemap.
- Copy: dial back em-dashes to colons/commas/parens on home + services.
2026-06-05 22:40:14 -04:00
jwinterm 5c1e3d597f Add scroll-reveal animations across home, services, portfolio, about, apps
New ScrollReveal client component wraps section-containers and cards with
a subtle opacity + y-translate fade-in triggered by IntersectionObserver.
Bails out to an unanimated render when prefers-reduced-motion is set.

- home: Selected Works, Inclusive by Design, Start a Project
- services: each of the four verticals and the Recent Work card
- portfolio: each product card, slight stagger by column index
- about: Leadership section and Get in Touch
- apps: each app card, stagger by index
2026-04-20 13:28:03 -04:00
jwinterm ca5f555918 Rework home hero and portfolio, invert favicon theme mapping
- Home hero subhead rewritten to name commerce/websites/apps/consulting
  plus in-house mobile apps and games; primary CTA points to /products
- Portfolio page (/products) title renamed and each product card now shows
  a 56px icon beside the title
- Favicon served inverse to the browser color scheme so the tile contrasts
  with the chrome instead of blending into it
2026-04-20 13:04:27 -04:00
jwinterm 08ded4d6fd Fix hero and tweak footer 2026-04-18 16:52:08 -04:00
jwinterm 610d8351fe tweak copy in main page and add socials 2026-04-18 16:44:12 -04:00
jwinterm 637c6d09ef update bauhaus and main page copy 2026-04-18 16:16:58 -04:00
jwinterm f9516180cd Update copy and headline 2026-03-23 18:46:08 -04:00
jwinterm 1705497ca6 Add blog and products pages (including bauhaus privacy policy) 2026-02-06 09:45:33 -05:00
jwinterm 8e1c5aed6e fix font size on mobile for title 2026-01-29 21:16:05 -05:00
jwinterm 6f8c2ba325 fix: computer animation positioning 2026-01-20 09:34:14 -05:00
jwinterm 3c1e0b659c Achieve 100% Lighthouse accessibility and SEO on all pages
- Fix color contrast: emerald-600 → emerald-700 for WCAG AA compliance
- Fix heading hierarchy across all pages (h1 → h2 → h3 → h4)
- Lazy load NebulaField with next/dynamic and requestIdleCallback
- Remove debug console.log statements
- Add .env.example for Turnstile configuration
- Update documentation with audit results
2026-01-17 11:15:51 -05:00
jwinterm e5508588d1 Refactor Services page and restrict nebula to homepage
- Move DynamicBackground from layout to homepage only
- Restructure Services: H1 outside cards, consistent heading sizes
- Rename 'Medusa v2 Development' to 'Custom E-Commerce Engines'
- Rename 'Custom Data Models' to 'Flexible Architecture'
- Add 'Partnership-First Development' section
- Update copy for clarity and customer focus
2026-01-16 22:39:03 -05:00
jwinterm 0d284b5c7d Upgrade Next.js to 15, fix first-load theme bug, add SVG assets
- Upgrade next 14.1.0 → 15.5.9, next-themes 0.2.1 → 0.4.6
- Fix theme not initializing on first load after server restart
- Add SVG logos and favicon, update site-logo to use SVGs
- Create shared Header component with skip-to-main link
- Add portfolio links to bento grid cards
- Improve accessibility: aria-describedby, prefers-reduced-motion
- Fix useFormState → useActionState for React 19 compatibility
- Fix founder-signature icon (use square favicon instead of wide logo)
2026-01-16 21:02:05 -05:00
jwinterm b81bea6297 Fix UI/UX issues and restore styling
- Fix dark mode toggle (use resolvedTheme, simplify icon rendering)
- Restore colored left borders on section containers
- Remove conflicting px-2 classes from section-container elements
- Fix founder signature vertical alignment (items-center)
- Reduce header nav gap for tighter spacing
- Increase section-container and glass-card padding
2026-01-16 15:34:19 -05:00
jwinterm ffaea03e58 Fix critical accessibility and SEO issues
- Fix homepage heading hierarchy (h2 -> h1)
- Add page-specific metadata to services and about pages
- Fix outline-none on form inputs for keyboard accessibility
- Delete sync conflict files
- Add group class back to bento cards for hover animations
- Use raw CSS for glassmorphism to fix Tailwind opacity errors
- Add TODO.md with production checklist
- Add semantic CSS classes (.section-container, .glass-card)
- Update Tailwind config for opacity modifier support
2026-01-16 15:03:12 -05:00
jwinterm b40193c086 feat: synchronize background nebula animations and overhaul site copy
- perfectly synced nebula streamer impacts with computer icon pulse
- standardized typography with left-border headers and blurbs across landing and services pages
- expanded services page with specialized solutions for commerce, custom apps, and crypto
- fixed bento grid image distortion and background persistence issues
- corrected hydration and syntax errors in nebula-field
2026-01-16 11:28:46 -05:00
jwinterm c9dbcc2f84 fix: globalize nebula background, refine positioning and mute animations 2026-01-16 10:55:41 -05:00
jwinterm 19a72bd621 feat: enhance landing page, add about page and footer. refactor nebula animation. 2026-01-16 09:58:12 -05:00
jwinterm 4a51d8a334 feat: Refactor animation alignment & visual tweaks
- **Visuals**:
  - Implemented 'Data Ingress' animation with lines starting from edges and converging to a fixed point.
  - Added centralized 'Monitor' icon as the convergence target.
  - Refactored 'NebulaField' to use percentage-based coordinates for perfect alignment on resize.
  - Smoothed animation timing and easing.
- **Micro-interactions**:
  - Increased transparency of Bento Grid cards (from 90% to 70%) for better visibility of background elements.
  - Added backdrop-blur to cards.
- **Fixes**:
  - Fixed 'bg-clip-text' bug cutting off descenders in the main headline.
2026-01-15 16:09:34 -05:00
jwinterm 717a3be1c8 feat: Initial Monorepo Setup for Such Software
- **Architecture**: Initialized Turborepo monorepo with pnpm workspace.
- **Frontend**: Scaffolding for Next.js 14 app (apps/web) with Tailwind CSS v4 configuration.
- **UI System**: Created shared UI package (@repo/ui) with Shadcn/UI primitives (Card, Button).
- **Procedural Design**:
  - Implemented 'NebulaField' organic background animation for Home.
  - Implemented 'DataGrid' isometric background for Services.
  - Added 'DynamicBackground' for theme-aware transitions.
- **Features**:
  - Responsive 'ThemeToggle' with View Transitions API support.
  - 'PortfolioGrid' component showcasing key projects (r/CryptoCurrency, etc.).
  - 'FounderSignature' component detailing accessibility focus.
  - 'ContactForm' with Zod validation + turnstile integration stub.
- **Pages**:
  - Landing page with parallax/procedural visuals.
  - Services page highlighting Medusa v2 development capabilities.
- **Clean Up**: Removed initial Medusa backend scaffold to focus on frontend delivery first.
2026-01-15 15:43:47 -05:00