Skip to content

fix: position the Windows preview window after reparenting - #6

Merged
jcgruesome merged 12 commits into
mainfrom
feat/screensaver
Oct 16, 2026
Merged

jcgruesome merged 12 commits into
mainfrom
feat/screensaver

Conversation

@jcgruesome

Copy link
Copy Markdown
Owner

Closes MKT-762

What

Installable screensaver for macOS (.saver, arm64) and Windows (.scr). Each run uses a synthetic graph, ReshapeX-family palette, fictional SKUs and queries, re-rolled every 60 s, with the ReshapeX logo. No real customer data ships.

  • @kg/runtime bare-specifier seam: the screensaver Vite build swaps the data layer, so real queries/i18n never enter the bundle (checked by pnpm verify:screensaver, with a negative control).
  • Synthetic kit generator with a denylist test (200 seeds), palette clamped to ReshapeX hues.
  • macOS host: Swift ScreenSaverView + WKWebView, built with swiftc (no Xcode). Verified on hardware by the owner.
  • Windows host: .NET WebView2, built by CI only. Untested on Windows (MKT-763).
  • ?maxpx pixel budget (web default unchanged).

Not in this PR

Signing/notarization and the prospect download page (MKT-764). Minors from final review (MKT-765).

Learnings

  • Vite resolve.alias matches import text, not resolved paths: relative imports like ./queries are not aliased. Use a bare specifier seam.
  • Under macOS legacyScreenSaver, WebKit reports the page hidden and stops rAF after one frame. Fix: private _setWindowOcclusionDetectionEnabled: set to false (call the IMP; perform(_:with:) mishandles BOOL).
  • ScreenSaverEngine ignores moduleDict on macOS 27, so the saver can only be selected by hand in System Settings.
  • A multi-display view can be 7680x2160 pts; at 2x pixel ratio that ran at about 15 fps. Cap canvas pixels (4M).
  • document.fonts.load resolves with an empty array when the face is missing; assert length > 0.
  • A .scr is one file in System32: embed the web build and extract to %LOCALAPPDATA%; WebView2 user-data folder must not be next to the exe.

https://claude.ai/code/session_01UrC5iwLW3LmG3bkgWzHckb

@jcgruesome
jcgruesome merged commit c2dbd42 into main Oct 16, 2026
1 check passed
@jcgruesome
jcgruesome deleted the feat/screensaver branch October 16, 2026 23:18
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