Skip to content

feat: Windows tray parity + god-rays site redesign (v0.4.35)#181

Merged
stuffbucket merged 8 commits into
mainfrom
feat/site-god-rays
Jun 24, 2026
Merged

feat: Windows tray parity + god-rays site redesign (v0.4.35)#181
stuffbucket merged 8 commits into
mainfrom
feat/site-god-rays

Conversation

@stuffbucket

Copy link
Copy Markdown
Owner

Lands the full Windows tray-parity workstream and the god-rays site redesign together, as the basis for the v0.4.35 stable release. Everything here has been validated on v0.4.35-beta.1/-beta.2 (full release pipeline green, incl. Windows MSI install/uninstall/smoke-test) and hands-on Windows hardware.

Supersedes #180 — all of its commits are contained here (verified by ancestry). Merging with a merge commit (not squash) so release-please sees each conventional commit and writes a complete changelog.

Windows app parity (was #180)

  • fix(shell): Windows startup notification — system-tray copy + down arrow (macOS menu-bar copy untouched)
  • feat(shell): "Restart Claude Code" modal when disabling routing on Windows (reads base URL at launch; macOS picks it up live)
  • fix(windows): Claude Desktop 3P config dir → %LOCALAPPDATA%\Claude-3p (Local, not Roaming) + non-circular install detection
  • fix(windows): detect MSIX/Store Claude Desktop installs (Packages\Claude_* family scan) — new installs aren't Squirrel
  • fix(shell): splash shows only once the webview has painted (kills the WebView2 empty-outline glitch); macOS banner/Dock click → Settings (Reopen)

Deferred (accepted): Windows toast-click itself isn't routable at tauri-plugin-notification 2.3.3 — tray left-click opens Settings and the toast body points there.

Site redesign (god-rays)

  • design(site): god-rays backdrop, brand-red hero, OS-aware download
  • design(site): glossy paint shaders (Paint.astro), unified primary buttons, cursor reflection

Validation

bun install clean · typecheck clean · 1028 pass / 0 fail · cargo check clean · beta.2 full release pipeline green.

- Add a subtle WebGL god-rays background (inlined GLSL; no Three.js / no shader dependency). Dark mode only; light mode keeps the warm-paper background. Brand jewel tones (turquoise -> indigo -> magenta), light source positioned behind the hero wordmark, prefers-reduced-motion renders a single frame, paused on hidden tab, DPR-capped.
- Hero is now a solid brand-red card (drops the per-section top accent rule), cream ink.
- Hero download button detects the OS: Windows -> inert "coming soon" chip; macOS/other -> the macOS download (server-rendered default, no-JS safe).
macOS copy (menu bar ↑) is unchanged; only the non-macOS branch gets
"Maximal is running in your system tray ↓".
…ndows

On Windows a running Claude Code session keeps routing through the proxy
until restarted (it reads its base URL at launch); macOS picks the change
up live. Show a modal (reusing ConfirmDialog) before disabling, Windows
only, telling the user to /exit and relaunch. Closes #178.
…etection

Two Windows-only bugs surfaced by hands-on testing (macOS unaffected):

1. getClaude3pDir wrote the 3P configLibrary to %APPDATA%\Claude-3p
   (Roaming), but Anthropic's docs locate it under %LOCALAPPDATA%\Claude-3p
   (Local) — so the config landed where Claude Desktop never reads it. On
   macOS both halves share ~/Library/Application Support; on Windows the
   consumer config (Roaming %APPDATA%\Claude) and the 3P dir (Local) diverge.

2. The settings Apps route detected Claude Desktop via getClaude3pDir()
   existence — circular, since that dir only exists after maximal writes it,
   so Claude read as not-installed until configured. Switch to the existing
   claudeAppInstalled() (probes %LOCALAPPDATA%\AnthropicClaude + the
   WindowsApps launcher shim; /Applications/Claude.app on macOS — same as
   before there).

Refs the Claude Desktop 3P config path investigation (Anthropic admin-deploy
docs: configLibrary under Local; managed config is registry HKLM/HKCU).
…eflection

- Unify the primary button into one glossy clear-coat treatment shared by the hero and Get Started, with a chromed spark and a version-number meta
- Generalize the WebGL paint into Paint.astro (candy / coat / clearcoat / chrome modes); apply it to the hero card, the secondary islands (translucent coat with depth), the primary buttons, and the chrome spark icon
- Add a 1:1 cursor-shaped reflection on the secondary islands that follows the browser's actual cursor (arrow / hand / I-beam), fixed pixel size, reduced-motion safe
- Simplify the Why-try-maximal lede (engine-swap), scrub em-dashes, Fraunces-bold inline 'maximal', unify island body-text color
- Remove the in-scroll footer, Cursor mentions, and the hero 'Other ways to install' link; update the hero byline
- Subtle click-celebration micro-interaction on primary buttons
New Windows installs are MSIX, not Squirrel — they don't create
%LOCALAPPDATA%\AnthropicClaude or always drop the WindowsApps alias, so
the Apps card showed 'Not installed' on a real install. Add the known
MSIX package dir (Packages\Claude_pzs8sxrjxfjjc) as a candidate and scan
the Packages dir for the Claude_/AnthropicPBC.Claude family prefix
(hashed family names mean no fixed path catches every install). macOS
and the unknown-platform 'can't tell → don't block' path are untouched.
On Windows/WebView2 the native surface is presented before the
compositor draws its first frame, so the transparent splash showed an
empty outline for hundreds of ms–seconds before the brand-red fill
popped in. Build the splash hidden and .show() it from on_page_load once
the DOM reports Finished. macOS/WKWebView paints in lockstep with show
so this fires immediately there — no regression.

Also broaden the macOS Reopen handler: clicking the 'Maximal is running'
banner (or the Dock icon) with no visible windows now opens Settings —
account section when signed out, plain Settings otherwise. Desktop
notifications can't carry a routable click (plugin show() is
fire-and-forget), so Reopen is the lever on macOS. On Windows the
plugin (2.3.3) exposes no toast-activation callback; tray left-click
already opens Settings and the toast body points there.
… feat/site-god-rays

# Conflicts:
#	site/src/components/GodRays.astro
#	site/src/components/markdoc/Hero.astro
@stuffbucket stuffbucket merged commit 1164d79 into main Jun 24, 2026
17 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