Swipe left = A, right = B via a node-testable cmpSwipeSide(); pane taps go
through cmpPaneTap so a swipe never also casts a tap vote. Videos get
muted/playsinline set before the source loads and play() only after insertion,
with a tap-to-play fallback. Docs: README + ProjectStructure.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
- Record the size of the generated image an upscale started from at all
10 sites (deferred, inline Florence2 + sentinel, inline SeedVR2, inline
hires/model, and the dashboard upscale_runner paths via base_dims_of).
- CMP_EXCLUDED_KEYS now ignores per-image fields (config_fp, base_fp, metrics,
preview_of, florence2_*), so matched/one-axis pairing works on current manifests.
- Compare pool skips Florence2 no-detection sentinels (they alias the base file).
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Rich dragstart (asset-info JSON, uri-list, plain, DownloadURL; reference not copy), a modal button that
fills the selected/only/new Load Image via the parent bridge, standalone Download image fallback.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Load Session restores Workflow Sweep arrays from meta.configs_json (workflowConfigToArray) and
tells the user when an older sweep session has no saved configs. Builder Start shows 'attached'.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Quick Filter / Logic Filter (wf:<key>) / label overlay use item.wf_params. Sweep items get a
JOB button opening a read-only Workflow job panel with download/copy of the job's API prompt.
Standalone progress bar shows paused/cancelled.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Pure logic (no DOM): axis normalisers, attribution, Bradley-Terry with a ghost
prior, pair selection, scoreboard/CSV. node:test coverage.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>