Commit Graph
199 Commits
Author SHA1 Message Date
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 fad3223af3 Restore tuned nebula; make splash logo static for stable mobile LCP
- Revert the nebula density/parallax change that disturbed the carefully
  tuned streamer convergence (it gave no perf benefit; the nebula is behind
  the splash and not in the load trace).
- Logo is now fully static (no float/breath) so it's a stable LCP candidate
  on mobile; the rings, glow pulse, and staged button fade-ins still carry
  the motion. (Desktop TBT win from the framer->CSS conversion is retained.)
2026-06-06 17:31:43 -04:00
jwinterm a5815e20ee Cut desktop TBT: splash idle animations framer-motion -> CSS; lighten nebula
- The splash's always-on animations (logo float/breath, the two traveling
  glow rings) move from framer-motion (JS rAF every frame on the main thread)
  to CSS keyframes (browser/compositor). framer now only drives the one-shot
  click-to-enter water exit.
- Nebula: density 8 -> 4 and dropped the scroll parallax (the Forced-reflow
  source); reduced-motion still gets the static background.
2026-06-06 17:16:13 -04:00
jwinterm c9b6803a77 Splash entrance (B): instant logo + staged CSS fade-in around it
The logo stays painted at first render (LCP-safe); the tagline, corner
buttons, and Explore hint now stagger-fade in via Tailwind animate-in
(CSS/compositor, no JS main-thread cost). motion-safe only.
2026-06-06 16:55:45 -04:00
jwinterm 567edaed0d Fix mobile LCP: paint the splash logo at first render
The splash logo (the LCP element) started at opacity:0 and only faded in
after framer-motion hydrated, pushing mobile LCP to ~7s. Render it visible
immediately; the float/breath animations still layer on top.
2026-06-06 15:33:02 -04:00
jwinterm 11381bd1a0 Trim SEO titles to <=60 chars; stop tracking TODO.md
- Shorter, non-truncating <title>/OG titles for products, apps, wownerogue,
  smirk, neroswap, suchoice, barns-and-neutrons, webshops.
- TODO.md removed from the repo and gitignored (internal working notes).
2026-06-06 15:11:33 -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 62a68f5fd9 Add /contact shortcut to the contact form; reorder + relabel bento
- /contact redirects straight to the home contact form; product CTAs that
  pointed at the broken /about#contact now use /contact.
- Bento: custom e-commerce (Occupy Wallets) top-left, Smirk Wallet top-right,
  Wownerogue + Neroswap in the middle row; 'art brand' -> 'artist'.
2026-06-06 14:09:36 -04:00
jwinterm a11f436502 tweak copy 2026-06-06 11:21:42 -04:00
jwinterm a4be0baa3b Splash: replace ring "broadcast" with real water-refraction ripple
Drop the expanding circles. Clicking the logo now runs an SVG
feTurbulence + feDisplacementMap filter over the mark, ramped by a rAF
loop, so it ripples like a disturbed liquid surface and settles, with a
soft Cherenkov wash + backdrop blur, then enters. Reduced-motion still
enters instantly.
2026-06-06 00:02:10 -04:00
jwinterm d371762d15 Splash: drop tagline on mobile, fade content into a waterier wave
- Hide the cover tagline and subheader on mobile (logo + corner icons carry
  it); only the labeled pills/tagline show at sm+.
- On enter, fade the logo, tagline, buttons, and Explore cue out while the
  click-triggered wave plays.
- Waterier transition: backdrop-blur wash plus four expanding Cherenkov
  ripples; reduced-motion still enters instantly.
2026-06-05 23:55:48 -04:00
jwinterm 614a8c09e0 Splash: icon-only corner buttons on mobile, click-to-enter wave
- Mobile: corner nav buttons become icon-only (Portfolio/Apps/Services/About)
  with aria-labels; subheader hidden on mobile so nothing overlaps the logo.
- More ambient motion: logo float plus a second counter-rotating glow ring.
- Clicking the logo (or Explore) triggers a Cherenkov wave (wash + expanding
  rings) before entering; reduced-motion enters instantly.
- Beveled glass buttons.
2026-06-05 23:42:51 -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 71dec78abe update apps link ordering 2026-06-01 11:13:57 -04:00
jwinterm 254e969c36 Tweak copy and add links 2026-06-01 11:10:31 -04:00
jwinterm 4b2ae5646c OG cards: add icon-or-glyph graphic slot
Rework the per-product OG cards to a single template with a graphic slot: real
app icons for the apps that have one (Bauhaus Echo, Suchoice, Vegan IQ, Such Moon
Launch, Smirk), and thematic SVG glyphs for the rest (Wownerogue dungeon glyphs,
Neroswap candlesticks, a shopping bag for Webshops, a browser window for Custom
Websites). Same layout and accent system so the set reads as one family. Paths
are unchanged, so the page metadata already points at these.
2026-06-01 10:53:37 -04:00
jwinterm 97a8026ed6 SEO: FAQ schema, per-product OG cards, stable sitemap dates
- Add FAQPage structured data + visible FAQ sections to Wownerogue, Webshops,
  Neroswap, and Services (covers high-intent 'provably fair', 'no-KYC', and
  'revenue share' style queries; visible Q&A matches the schema).
- Generate branded 1200x630 OG cards per product and wire them into each
  product page's openGraph + twitter (summary_large_image), replacing the
  square app icons that previously got cropped in social previews.
- Sitemap: stop stamping every static page with new Date() on each build; use
  a single content-update date so freshness signals are not diluted.
2026-06-01 10:39:27 -04:00
jwinterm f51a1257c5 SEO: keyword-led titles/descriptions, structured data, internal linking
- Rewrite title tags + meta descriptions site-wide to front-load search intent
  (home, products index, services, apps, support, about, blog, and every product
  page); keep brand suffix, fix overlong/truncated descriptions, use colons not
  em dashes. Home keeps the visible 'Precision Engineering' hero; only the <title>
  changed. De-jargon Webshops away from leading with 'headless'.
- Add reusable JSON-LD helper (JsonLd + breadcrumb/softwareApp/article builders).
  WebSite schema site-wide; BreadcrumbList on all product + blog pages;
  SoftwareApplication on the apps/games; BlogPosting on posts.
- Cross-link the Monero/Wownero cluster (Neroswap, Smirk, Wownerogue, Such Moon
  Launch) and link products to services.
- Data fixes: Vegan IQ corrected to 1,000+ questions with Daily Challenge and
  Weekly Quiz (page + index); generalize Support page off a single game.
2026-06-01 10:21:06 -04:00
jwinterm d8db411824 Add Wownerogue product page + blog post; remove r/CryptoCurrency and MoonPlace
- New /products/wownerogue page (SEO metadata + VideoGame JSON-LD) and
  wownerogue-launch blog post covering the fairness, block-timing, and payout design.
- Drop the retired r/CryptoCurrency and MoonPlace references from the portfolio grid,
  products index, and custom-websites page; feature Wownerogue + Neroswap instead.
- Add WownerogueLinks component (live instances + GitHub source) and wire it into MDX.
- Remove now-orphaned r-cryptocurrency and moonplace images; add product page to sitemap.
2026-06-01 10:09:11 -04:00
jwinterm c8b90f6292 Privacy: align iOS section with actual app behavior (no ATT)
Apple rejected the v1.0 submission under 5.1.2(i) because App Privacy
declared tracking that the app does not actually perform. The app
ships without an App Tracking Transparency prompt, so AdMob falls
back to non-personalized ads on iOS and never accesses IDFA.

Rewrite the iOS subsection of the privacy policy to reflect this
accurately (no ATT request, no IDFA access, non-personalized ads
only on iOS). Also drop the now-misleading "Settings -> Privacy ->
Tracking -> Disable tracking for Such Moon Launch" instruction since
that toggle only exists for apps that have requested ATT.

Bump the Last Updated date to May 20, 2026.
2026-05-20 10:46:51 -04:00
jwinterm 927cf80c58 Fix blog build + clear 14 dependabot advisories
Build was failing because the new MDX post tried to `import` the
SuchMoonLaunchStoreButtons component — next-mdx-remote/rsc doesn't
support imports inside .mdx; components must be passed via the
`components` prop. Wire the helper into [slug]/page.tsx and drop the
import line from the .mdx.

Dependency bumps to clear the 14 outstanding Dependabot advisories
(9 high, 4 moderate, 1 low):
- apps/web/next: ^15.5.15 → ^15.5.18 (covers 12 next.js advisories)
- pnpm overrides: pin postcss ^8.5.14 (clears 1117015 XSS via </style>)
- pnpm overrides: pin fast-uri ^3.1.2 (clears 1117870 + 1117884 path
  traversal / host confusion)

pnpm audit: 14 vulnerabilities → 0.
2026-05-18 10:28:02 -04:00
jwinterm d2ee3ffb55 Rebrand Wownero Moon Launch → Such Moon Launch
Visible-name rebrand for the game ahead of Play Store + App Store launch.
The Wownero theme stays in the game itself; this is purely about the
product name.

- Rename slug: /products/wownero-moon-launch → /products/such-moon-launch
- Rename blog post file + flip from draft → published with rewritten
  origin story (first game ever → Tabby Labs test app → full rebuild
  with tilt-to-steer controls + 11 levels)
- New "The Story" section on the product page
- StoreButtons: accept null href to render disabled "Coming Soon"
  buttons; add SuchMoonLaunchStoreButtons preset (Google + Apple null
  pending review, web link present, itch removed — no itch page exists)
- Add Such Moon Launch entry to /apps with coming-soon store buttons
- Bump privacy + terms last-updated dates to May 18, 2026
- Theme color: orange → amber to match the new brand palette
- Sweep all remaining "Wownero Moon Launch" / "wownero-moon-launch"
  references in product listing, sitemap, top-level privacy index, and
  website-relaunch blog post
2026-05-18 09:59:23 -04:00
jwinterm a6dc211ef6 Patch remaining dev-dependency advisories via pnpm overrides
Forces flatted, minimatch, picomatch, ajv, and brace-expansion to
patched versions across the transitive graph (ESLint, Tailwind, and
Playwright toolchains). Both prod and full audits now report no
known vulnerabilities.
2026-04-20 13:33:02 -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 7eb531170d Sharpen services page and bump deps to patch known vulns
- Brand Motion card rewritten with concrete capability language
- Revenue-share card clarified: no upfront fees, no retainers, low % after launch
- Recent Work section added with Occupy Wallets as the first case study
- Bumped next to ^15.5.15 to patch 2 high and 3 moderate advisories
- Added pnpm override for yaml ^2.8.3 to resolve the transitive next-mdx-remote
  stack-overflow advisory. Production audit now reports no known vulnerabilities.
2026-04-20 13:19:51 -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 ae87efe77f tweak copy on main page and about 2026-04-20 11:16:59 -04:00
jwinterm e55d4dcff4 Rename /links to /apps, add Apps to header, rename Products to Portfolio 2026-04-20 10:53:01 -04:00
jwinterm d754a1373e fix footer 2026-04-18 16:54:34 -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 f7fcb8d254 Suchoice v1.2.0: update product page, publish 3D physics blog post
Product page: added Dice Roll and Decision Duel to features grid (now
6 features), updated meta description and hero text, broadened Snap &
Decide description to include ingredients/labels.

Blog post: published 3D Physics in Flutter article covering three_js +
cannon_physics integration, framebuffer cache bug, quaternion convention
issue, vertex clustering for face detection, and settle mechanics.
2026-04-17 18:45:03 -04:00
jwinterm 6717ae071a fix OG banner 2026-04-09 16:45:18 -04:00
jwinterm c1fd1f3928 Add privacy, ToS, and update sitemap 2026-04-09 08:58:58 -04:00
jwinterm 57a365dc06 add icons and animation to links 2026-04-09 08:42:33 -04:00
jwinterm 2c5562f45d add links page 2026-04-08 17:27:46 -04:00
jwinterm 41276cd0bb add play and app store buttons and review vegan blog 2026-04-08 12:41:00 -04:00
jwinterm f54d9476d2 update vegan iq product page and publish blog 2026-04-08 12:24:14 -04:00
jwinterm b7db48d9be update neroswap and bauhaus blog posts 2026-03-27 19:21:07 -04:00
jwinterm 03f0a47a6c update privacy policy for vegan-IQ 2026-03-26 20:43:51 -04:00
jwinterm fb5feb6510 add vegan-iq initial pages 2026-03-26 20:36:42 -04:00
jwinterm 6e89c956ee fix branding, copy, SEO, and broken links across site
- update site title and meta to Precision Engineering for Everyone
- footer and about: full-service software provider → software studio
- schema.org structured data aligned with new meta description
- clarify revenue-share model in services preview
- remove placeholder App Store links for Wownero Moon Launch
- add OpenGraph tags to all product, blog, and support pages
- fix About page OG description to match meta description
2026-03-26 12:36:39 -04:00
jwinterm 725723ed8b add live links for suchoice 2026-03-26 11:28:28 -04:00
jwinterm e2dad3bef1 update suchoice copy 2026-03-23 18:51:06 -04:00
jwinterm f9516180cd Update copy and headline 2026-03-23 18:46:08 -04:00
jwinterm 44638a04b3 add neroswap icon and dynamic feature to bento 2026-03-23 17:49:12 -04:00
jwinterm eff0173135 fix bento grid 2026-03-23 17:38:42 -04:00
jwinterm cfcc72d840 generate blog entries in sitemap dynamically, skip drafts 2026-03-22 17:54:38 -04:00
jwinterm d0a3e8c399 fix: content audit — SEO, cross-links, draft filtering, styling
- Add sitemap.xml and robots.txt (such.software-site)
- Fix blog date on neroswap post (2025→2026)
- Filter draft posts from generateStaticParams and getPost
- Fix stale product list in website-relaunch blog post
- Fix Godot version (4.6→4)
- Add cross-links: product pages→blog posts, blog posts→product pages
- Add OG/Twitter metadata to blog [slug] pages
- Fix Bauhaus Echo privacy: hover color (emerald→blue), contact URL
- Fix Suchoice: card styling (p-6→glass-card), font-semibold→font-bold
- Fix products listing meta to include Suchoice
2026-03-17 13:17:59 -04:00