Archilyzer · Source

archilyzer

Archilyzer
git clone https://archilyzer.pages.dev/source/archilyzer.git
Log | Files | Refs | README | LICENSE

commit 8d2fe92fdde3fc593e3ca6ae131a3c91c05a33e5
parent e38c05d1c69c70698f333f029cacd8f02cd5412f
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date:   Thu,  1 Oct 2026 16:15:06 -0400

umtool: the clip bench takes MUTE_FADE from a dependency-free mute.mjs, so deck.mjs stays out of its client bundle

report-to-video/mute.mjs holds the one constant and is exported as
umtool-report-to-video/mute; deck.mjs re-exports it, so the build and the
bench still read the same number. playback.mjs, which the "use client"
bench imports, no longer pulls in deck.mjs with node:crypto and
attribution: the capped build's client chunks no longer carry
crypto-browserify (1 chunk before, 0 after) and are 1,505,165 bytes →
1,043,591.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

Diffstat:
Mumtool/lib/report/playback.mjs | 6++++--
Mumtool/report-to-video/deck.mjs | 4++--
Aumtool/report-to-video/mute.mjs | 7+++++++
Mumtool/report-to-video/package.json | 1+
4 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/umtool/lib/report/playback.mjs b/umtool/lib/report/playback.mjs @@ -40,9 +40,11 @@ export const START_LEAD = 0.03; /** * The mute mark's fade, in source seconds: the BUILD's, so what the bench plays * is what the cut does -- a ramp that ENDS at the mark, silent from the mark on. + * From `mute.mjs`, not `deck.mjs`: this module is in the bench's client bundle, + * and deck.mjs would bring node:crypto and attribution with it. */ -export { MUTE_FADE } from "umtool-report-to-video/deck"; -import { MUTE_FADE } from "umtool-report-to-video/deck"; +export { MUTE_FADE } from "umtool-report-to-video/mute"; +import { MUTE_FADE } from "umtool-report-to-video/mute"; /** One Web Audio render quantum, in frames. */ export const RENDER_QUANTUM = 128; diff --git a/umtool/report-to-video/deck.mjs b/umtool/report-to-video/deck.mjs @@ -906,8 +906,8 @@ export function footageMoves({ posts, segments, render }) { // validators (umtool's writers and the build share them) and the arithmetic. // --------------------------------------------------------------------------- -/** The fade into a `muteFrom`'s silence, in seconds: long enough not to click, short enough to keep the next word out. */ -export const MUTE_FADE = 0.04; +/** The fade into a `muteFrom`'s silence (`mute.mjs`, dependency-free so a client bundle can take it alone). */ +export { MUTE_FADE } from "./mute.mjs"; /** `render.endFade`'s upper bound, in seconds. */ export const END_FADE_MAX = 10; diff --git a/umtool/report-to-video/mute.mjs b/umtool/report-to-video/mute.mjs @@ -0,0 +1,7 @@ +// The mute mark's fade, alone: no imports, so a client bundle (umtool's clip +// bench previews the mute as the build makes it) can take it without pulling +// in deck.mjs and what deck.mjs imports (node:crypto, attribution). +// deck.mjs re-exports it; the build and the bench read the same number. + +/** The fade into a `muteFrom`'s silence, in seconds: long enough not to click, short enough to keep the next word out. */ +export const MUTE_FADE = 0.04; diff --git a/umtool/report-to-video/package.json b/umtool/report-to-video/package.json @@ -24,6 +24,7 @@ "./cues": "./cues.mjs", "./deck": "./deck.mjs", "./ledger-totals": "./ledger-totals.mjs", + "./mute": "./mute.mjs", "./package.json": "./package.json", "./render-cards": "./render-cards.mjs", "./resolve-windows": "./resolve-windows.mjs",