Skip to content

Custom installer: Prism-style frameless video setup - #15

Merged
Maxaubert merged 3 commits into
mainfrom
installer-v2
Aug 20, 2026
Merged

Maxaubert merged 3 commits into
mainfrom
installer-v2

Conversation

@Maxaubert

Copy link
Copy Markdown
Owner

Closes #14.

Ports Prism's installer kit to Filesmith: a frameless, DPI-aware setup window playing a defocused video loop through GDI+, with the UI rendered from over.html into alpha overlays, composited per tick, and hit-tested by hand. Four screens (Welcome / Where / Installing / Done), Run + Start-menu + Desktop options on finish — and deliberately no run-at-startup option.

Filesmith adaptations: the app's own mark in the caption, Filesmith copy, indigo accent (shared with Prism already), no file-type registration, plain launch on finish.

Verified:

  • Live render confirmed on this machine at 225% scaling (window sizes to 1440x1080 physical, frames decode, overlays composite, layout correct)
  • Silent install (/S): custom pages skip themselves; exe + uninstaller + start-menu shortcut + all 140 magick coders land; registry shows 0.2.1
  • Silent uninstall: directory, shortcut and registry all removed
  • Installer builds at 479 MB (the media adds ~13 MB)

Placeholder footage: the loop is currently a synthesized drifting indigo gradient. When the real clip arrives, swapping it is:

node build/installer/make-loop.cjs "path\to\clip.mp4"

then set FRAMES in video.nsh to the number it prints and rebuild. Overlay copy/layout changes go in over.html, regenerated with make-over.cjs 1440 + 960.

🤖 Generated with Claude Code

Maxaubert and others added 3 commits August 20, 2026 16:41
Ports Prism's custom NSIS kit: a frameless, DPI-aware window that plays a
defocused video loop (JPEG frames decoded through GDI+ every tick) with the
UI rendered from over.html into alpha overlays and composited on top. No
real controls anywhere - the same tick hit-tests the pointer for hover,
clicks, and caption dragging. Four screens: Welcome, Where-it-goes (own
folder enforced, Browse dialog), Installing (one frame + the real progress
bar re-themed indigo on the drawn trough), and Done with Run / Start-menu /
Desktop options (checkbox states stamped at runtime from two cut-out
images). No run-at-startup option, deliberately. Silent installs (/S) skip
every custom page and install straight through.

Filesmith adaptations vs Prism: the app's own mark in the caption, Filesmith
copy, no file-type registration, plain launch (no --setup flag).

The current loop is a PLACEHOLDER (a drifting defocused indigo gradient
synthesized with ffmpeg) until the owner's clip arrives - swapping is:
  node build/installer/make-loop.cjs "path\to\clip.mp4"
then update FRAMES in video.nsh with the number it prints, and rebuild.
Overlays regenerate with make-over.cjs (960 + 1440) after any over.html
change. Generated media is committed, as in Prism.

Refs #14

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Replaces the placeholder gradient with the owner-supplied clip
(1080p60, cover-cropped to 4:3, resampled to 24 fps, tail crossfaded
into the head over 36 frames). 380 frames, 17.5 MB; FRAMES was already
380 so video.nsh is unchanged.

Refs #14

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Two things users read as broken:

- The progress bar filled, then snapped back to ~70% and froze for a minute.
  electron-builder extracts the 7z into TEMP (Nsis7z pumps the bar to 100%)
  and then copies 1.4 GB to $INSTDIR in ONE blocking CopyFiles instruction
  (nothing pumps; instruction-based progress takes the bar backwards).
  Patched (patch-package + postinstall) to extract STRAIGHT into $INSTDIR -
  upstream's own last-resort branch, safe here because the app is closed and
  the old version uninstalled before extraction. Install time roughly halves
  (~53s measured) and the bar now fills exactly once, truthfully.

- The finish screen's checkboxes are DRAWN with GDI+ paths instead of being
  stamped from captured images. The cut-outs kept the shade's half-opaque
  pixels outside the border radius (a dark square behind the rounded box),
  the alpha solve left a pale fringe, and the half-pixel rescale at 225%
  smeared both. Vector paths are exact at any DPI: solid indigo + anti-
  aliased check when on, a .34-white ring around a translucent well when
  off. The box cut-outs are gone from make-over.cjs and the media.

Refs #14

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@Maxaubert
Maxaubert merged commit 5c26e3e into main Aug 20, 2026
1 check failed
@Maxaubert
Maxaubert deleted the installer-v2 branch August 20, 2026 16:08
Maxaubert added a commit that referenced this pull request Aug 20, 2026
The kit's generator scripts are CommonJS by design (they run under plain
node/electron without the app's toolchain) and keep Prism's formatting; CI
correctly failed PR #15's lint over them - this scopes the gates to app code.

Refs #14

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
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.

Custom installer: Prism-style frameless video setup

1 participant