Releases: naxci1/1Click_SeedVR2.5
Releases · naxci1/1Click_SeedVR2.5
Release list
v.1.9.63b
1-Click SeedVR 2.5 — Release Notes (v1.9.63b)
Everything new since v1.9.62b.
v1.9.63b — 7B download crash root-caused & fixed, never-die errors, split-line anywhere, model deletion
Fixed: 7B model downloads crashed the app (critical, root cause found)
- PySide6 marshals
Signal(int)arguments to a 32-bit C++ integer.
The 7B model sizes (4.8–16.5 GB in bytes) exceed the 32-bit limit, so
every progress update raisedOverflowError→ "Unhandled Exception"
dialog → freeze → app closed. This is why small models (≤2 GB) downloaded
fine while every 7B download died. - The progress signal now transmits megabytes (comfortably inside the
32-bit range). Verified live against HuggingFace: partial download of
the exact failing model (7B Q4) runs clean with zero exceptions, and
cancel/resume still work. All 10 catalog links re-verified (200 OK,
sizes match).
New: "never die" error policy (Topaz-style)
- The error dialog is now non-modal: an unhandled exception no longer
enters a nested event loop (that re-entrancy froze and killed the app
right after showing the dialog). The application keeps running so the
user can read the report and press Send Logs. - Only one error dialog at a time — cascading exceptions during a
crash no longer spawn a dialog storm. - Hard C++ crashes (access violations) are captured by
faulthandler
and appended to error.log (no separate crash.log; Send Logs ships
them automatically).
New: Split line drags from anywhere (ComfyUI Image-Comparer style)
- LMB press anywhere on the image grabs the split line — no precise
aiming, the line jumps to the cursor and follows the drag at any zoom
level. Video play/pause stays on the control button and the Space key.
RMB pans while zoomed; double-click still recenters.
New: Delete button in the model manager
- Downloaded models can be checked and deleted (with the model's
stale.downloadpartial cleaned up too). A confirmation dialog
lists the names and sizes and shows the disk space to be freed before
anything is removed; the DiT list refreshes afterwards.
Improved: download safety
- Disk-space pre-check: if the selection needs more space than the
drive has free, downloading refuses to start with a clear
"Needed X GB / Free Y GB" message. - Model-manager signal handlers are guarded against the dialog being
closed mid-download (late signals can no longer crash anything), and
the window was narrowed.
Verified (highlights)
- Live network tests: 7B Q4 partial download + cancel + Range-resume.
- Real Qt mouse events: split-line grab-anywhere at 3× zoom.
- Crash simulation: two consecutive slot exceptions → one dialog, app
alive, both tracebacks in error.log. - Delete flows: confirm/decline/partial-cleanup/empty-selection.
v.1.9.62b
1-Click SeedVR 2.5 — Release Notes (v1.9.62b)
Everything new since v1.9.61b.
v1.9.62b — Crash-proof downloads, self-diagnosing config
Fixed: model download could crash the whole app
- The Model Manager download worker is now fully crash-guarded: any
unexpected exception (including the reported traceback-less
OverflowErrorfrom inside Qt/C++ bindings) is converted into a clear
status message on the dialog instead of taking the application down. - The progress percentage is clamped to 0–100 with divide-by-zero
protection. - Unhandled exceptions without a Python traceback are now logged with
their type/repr and a note pointing at the operation context, so the
real cause shows up in error.log / Send Logs mails.
New: every log line identifies the build
- Startup writes
MainWindow ready — 1-Click SeedVR 2.5 v1.9.62binto
app.log — sent-in logs can always be matched to the exact version.
New: config write self-test at startup
- Right after load, the app verifies config.json is actually writable.
On failure (read-only folder, antivirus/lock) it logs
config.json WRITE TEST FAILEDto error.log and shows an on-screen
warning — the "settings silently don't stick" class of problems is now
immediately visible on the affected machine.
Improved: timeline behaviour in Split view (tester request)
- Clicking/scrubbing the timeline while in Split view now switches back
to Single view and seeks to the chosen frame — frame-accurate
scrubbing without manual mode switching.
Improved: import dialog start folder
- When no last-used folder is known (fresh install or unwritable config),
dialogs open in the user's home folder instead of the EXE/dist folder.
Verified
- The frozen EXE was tested end-to-end in a simulated fresh install on a
foreign path with a shipped (C:-pointing,first_run: true) config:
all paths were rebased to the real install root, the flag flipped to
falseand config.json was persisted on first launch.
v.1.9.61b
1-Click SeedVR 2.5 — Release Notes (v1.9.61b)
Everything new since v1.9.60b.
v1.9.61b — First-launch path bootstrap, safer error reporting
New: one-shot path bootstrap on first launch
- The shipped config.json carries a hidden
"first_run": "true"flag with
the build machine's default paths (C:\1Click_SeedVR2.5\...). - On the first launch the app derives the real install location from
the executable's own path (e.g.G:\seedvr\seedvr2_videoupscaler\dist\…
→ shared rootG:\seedvr\) and rewrites every path (python, ffmpeg,
models, seedvr2 folder, temp, log, presets) to that root, saves
config.json and flips the flag to"false"— the rebase runs exactly
once and is never repeated. - Paths that still carry the shipped default root, or no longer exist,
are rebased; intentional custom locations that resolve are untouched. - A safety net remains for copies made without the flag: a config
whoseseedvr2_foldernames a different install is re-anchored the
same way.
config.json now uses forward slashes
- Paths are stored as
C:/1Click_SeedVR2.5/...: Windows accepts forward
slashes everywhere, JSON needs no escaping for them, and hand edits in
Notepad can no longer break the file (a single\in JSON is an escape
sequence —\\was always correct, but/removes the confusion).
Fixed: "last used folder" forgotten after restart
- Two independent writers were overwriting each other's value; the key is
now owned by a single writer (the main window), so the last import
folder survives restarts.
Improved: error reporting for thread crashes
- Unhandled exceptions in worker/QThread threads previously bypassed the
app's exception hook and vanished. Athreading.excepthooknow funnels
them into error.log with full tracebacks (and therefore into Send
Logs mails) — this also captures the reportedOverflowErrorclass of
failures with real context next time it happens. - The progress-line parser is hardened against
OverflowErrorfrom
malformed numeric output.
Fixed: manual batch size was overwritten by Auto Tune
- With Auto Tune enabled, a GUI-configured batch size (e.g. 21) was
silently replaced by the computed default (81). The user's setting is
now authoritative: Auto Tune only caps it when the VRAM estimate says
it cannot fit, and the log states what happened
(batch=21 (user setting kept: 21)/
user 999 capped to 81 by VRAM estimate). - The last-resort OOM fallback no longer RAISES a smaller user batch to
45 — the floor only limits automatic reduction. - Note: "N-frame sequence" log lines use the temporal expansion
(batch−1)×4+1 — a batch of 21 legitimately processes 81 frames; that
is not the batch size.
v.1.9.60b
1-Click SeedVR 2.5 — Release Notes (v1.9.60b)
Everything new since v1.9.59b. This is a large release: a new Model Manager,
a full Split View rework, GPU-aware attention lists, non-system-drive install
fixes, and a critical error-reporting repair.
v1.9.60b — Model Manager, Split View rework, error reporting
New: AI Models manager (top-bar "Models" button)
- A Topaz-style model manager window with three groups: GGUF Models,
3B Models, 7B Models. - Every model shows its file size (fixed values captured once from the
download links — the dialog never queries the network). - Models already on disk show a green OK and cannot be re-selected.
- Select any combination and press Download: sequential downloads with
a progress bar, Cancel aborts the current transfer (the partial
.downloadfile is kept, so a later attempt resumes where it stopped),
Close finishes. - The DiT list in settings refreshes automatically after downloads;
downloaded models are bold there, missing ones carry a
"downloads on first use" tooltip. - The non-existent "7B Q8" entry was removed (no download source exists).
Fixed: the error dialog never opened on processing failures (critical)
- The failure dialog was called with an invalid argument list, the
TypeError was silently swallowed and only a small toast appeared — which
is why Send Logs was never visible and no reports arrived by mail. - The dialog now opens with the full report (command + last 100 log lines)
auto-expanded, plus Copy to Clipboard and Send Logs buttons.
Improved: Send Logs mail
- The mail body now contains the full error text (LAST ERROR section)
and the subject carries the error headline. - The archive additionally contains the three most recent
cli_failure_*.logreports and alast_error.txt. - The Send Logs button on unhandled-exception dialogs is wired too, so
every error path can report by mail.
Attention modes are now filtered by GPU
- Unsupported modes are removed from the list (not greyed out): every
visible option is selectable.- RTX 50xx: sdpa, flash_attn_2, sageattn_2, sageattn_3
- RTX 30/40: sdpa, flash_attn_2, sageattn_2
- GTX 10/20 / AMD / Intel / CPU: sdpa only
- The saved selection moves to the best supported mode automatically.
Split View rework (tester feedback)
- LMB drags the split divider at any zoom level, RMB pans, and
double-click recenters (zoom preserved) — in normal and fullscreen
split view alike (ComfyUI Image-Comparer-style behaviour). - Video outputs open a synchronized dual-video comparison instead of
dead-ending. - The comparison is remembered per file: switching to another file and
back restores that file's preview. - The timeline seeks the split view in video mode; hovering frames no
longer looks broken. - The frame position is remembered when switching between Split and
Single view. - Fullscreen can be reopened repeatedly (stale-window bug fixed) and
ESC exits fullscreen.
Fixed: installs on non-system drives (G:\ etc.)
- Default asset locations (python_embeded / ffmpeg / models) now probe the
shared root one level above the project folder first — matching the
shipped layout — instead of only looking inside the project folder. - The bundled ffmpeg is found in both layouts (
ffmpeg\ffmpeg.exeand
ffmpeg\bin\ffmpeg.exe) and is always preferred; the codec probe no
longer silently falls back to a system-wide ffmpeg. - A new
--ffmpeg_pathargument hands the CLI the exact binary so the
writer, concat and audio mux never depend on the system PATH. - Hand-edited config.json damage is handled: invalid JSON escapes
(G:\1Click…) keep aconfig.json.bakinstead of silently discarding
all settings; valid escapes that embed control characters
(\f,\b,\t) are repaired to forward-slash paths. - A failed config save (read-only folder) now shows a clear warning
instead of silently losing the settings.
Fixed: Auto Tune target resolution
- Auto Tune logged and sized its parameters from the raw
--resolution
(e.g. "target 2160×1080" for a 1920×960 source at 1:3 + 3×). It now uses
the same effective-resolution math as the pipeline (→ 1920×960), so tile
choices match the real workload.
Other
- New 1:4 pre-downscale ratio (for 4K–8K sources).
- File dialogs (Import / Browse / folder select) remember the last used
directory across restarts (last_import_dirin config.json). - A transient
CUDA error: device not readyin the downscaler is retried
once after a synchronize before failing. - Down: Stop/abort during model downloads keeps the resumable partial.
v.1.9.59b
1-Click SeedVR 2.5 — Release Notes (v1.9.59b)
Everything new since v1.9.58b.
v1.9.59b — GPU-aware attention, BlockSwap safety, Split View fix
Fixed: sageattn_3 crash on non-RTX-50 GPUs (critical)
- Selecting sageattn_3 on anything other than a Blackwell GPU
(RTX 50xx) crashed at runtime — the SageAttention package imports fine
on RTX 30/40 cards, so the old import-only check passed while the kernel
could not run. - The attention mode is now validated against the actual GPU
architecture: RTX 40 → automatic fallback to sageattn_2, AMD / Intel /
CPU-only machines → SDPA. A second kernel-level safety net guarantees
the fallback even if a mode slips through.
New: attention options filtered by detected GPU
- At startup the hardware probe result now drives the settings panel:
attention modes the detected GPU cannot run are greyed out (with a
tooltip explaining why) and an invalid saved selection is moved to the
best mode the GPU supports.- RTX 50xx: sdpa, flash_attn_2, sageattn_2, sageattn_3
- RTX 30/40: sdpa, flash_attn_2, sageattn_2
- GTX 10/20, AMD, Intel, CPU: sdpa only
- flash_attn_3 stays disabled everywhere (the Hopper FA3 package is not
part of the shipped Python bundle).
Fixed: BlockSwap without an offload device
- Runs with
blocks_to_swap > 0no longer abort with
"dit_offload_device is invalid": the CLI now auto-sets the DiT offload
to CPU at startup, in Auto Tune, in every OOM retry step, and rebuilds
a cached context when swap is enabled mid-run. - In the GUI, enabling blocks_to_swap or swap_io_components
automatically switches the DiT / VAE / tensor offloads to CPU.
Fixed: Split View "does nothing"
- Split View now opens a synchronized dual-video comparison for video
outputs (previously it dead-ended with a tiny corner toast). - When there is nothing to compare yet, a persistent status-bar message
and a clear warning are shown instead of silence.
Improved: failure headlines
- The error dialog headline no longer shows the generic
"CUDA kernel errors might be asynchronously reported…" boilerplate —
it now surfaces the real error line.
Other
- Tile debug row is labelled "(TEST)" with a warning note underneath
so it is not enabled accidentally. - UI language is fully English again — leftover localized tooltips were
translated and the whole codebase scanned clean.
v.1.9.58b
1-Click SeedVR 2.5 — Release Notes (v1.9.58b)
Everything new since v1.9.57b.
v1.9.58b — FP8 model crash fix, Send Logs wiring
Fixed: FP8 model crash (critical)
- Runs with an FP8 DiT model (
seedvr2_ema_*_fp8_e4m3fn.safetensors) crashed
withRuntimeError: Promotion for Float8 Types is not supported, attempted to promote Float and Float8_e4m3fn. - Root cause:
CustomRMSNormdeliberately skipped the dtype cast for FP8
weights, soF.rms_norm(float_input, fp8_weight)hit PyTorch's unsupported
float8 promotion.CustomLayerNormalready handled this correctly. - Fixed in both the 3B and 7B model paths: the norm weight is now always
cast to the activation dtype (FP8 → fp16/bf16 cast is fully supported). - Verified by reproducing the exact crash synthetically before the fix and
confirming clean output afterwards, plus regression checks for the
GGUF (Q8) fast path.
Fixed: Send Logs button on unhandled-exception dialog
- The error dialog shown for GUI-internal unexpected exceptions had a
Send Logs button that was never connected — clicking it did nothing.
It is now wired to the background log-email flow, so every error path
(processing failures and internal exceptions) can report by mail. - The mail pipeline was live-tested end-to-end over SMTP.
Notes for users seeing old error screenshots
- The "Send Logs" button exists on the processing-failure dialog since
v1.9.48b — screenshots without it come from older releases; updating
fixes that.
v.1.9.55b
1-Click SeedVR 2.5 — Release Notes (v1.9.55b)
Everything new since v1.9.54b.
v1.9.55b — Pre-downscale crash fix, filter selection, smarter Auto Tune
Fixed: pre-downscale crash (critical)
- Every run with Pre-downscale enabled crashed with
ValueError: Anti-alias option is only supported for bilinear and bicubic modes— the old resize call combinedmode="lanczos"with
antialias=True, a combination PyTorch does not support at all. - The downscaler now uses antialiased bicubic with a [0, 1] clamp —
PyTorch's highest-quality downscale path (matches PIL's antialiased
resize), fully float32, no uint8 quantization anywhere.
New: Downscale filter selection
- A new "Downscale filter" dropdown appears in the settings panel
whenever Pre-downscale is enabled. Eight resize kernels to choose from:- Bicubic + Anti-alias (best) — default
- Bicubic
- Bilinear + Anti-alias / Bilinear
- Area (average) / Nearest
- Lanczos and Mitchell cubic (via OpenCV, float32 CPU — torch
has no Lanczos kernel)
- New CLI argument
--downscale_filter; the choice persists in settings
and presets. - Robust by design: an unknown or stale value can never crash a run — it
silently falls back to the safe default (verified by automated tests). - All kernels were self-tested on GPU/CPU for correct shape, float32 dtype,
[0, 1] range and NaN-free output at factors 2× and 3×, plus an offscreen
GUI test (default value, selection, preset restore, visibility toggle).
Auto Tune is now resolution-aware
- Starting parameters are computed from the actual target output
dimensions (VAE working-set estimate from measured decode/encode peak
memory), instead of a fixed VRAM-tier table that ignored resolution. - Example: a 12 GB card processing 1080p output now starts at
batch=81 / tile=384 / swap=16 (~7.2 GB working set) instead of tile=512,
which silently spilled into shared memory (WDDM spills raise no OOM
error, so the retry chain never fired). - Tiling now engages whenever the tile size is smaller than the output
width or height (previously only below a fixed 1024 px, which skipped
tiling for wide frames). - The log line now reads
Auto Tune: free VRAM X GB, target W×H → batch=… tile=… swap=….
Other
- Executable is now built as
1Click_SeedVR_2.5.exe(InternalName and
OriginalFilename metadata updated to match).
v.1.9.54b
1-Click SeedVR 2.5 — Release Notes (v1.9.48b → v1.9.54b)
Everything new since v1.9.47b.
v1.9.54b — last_used.json relocation
- last_used.json moved next to config.json (project root) — processing
settings and app settings live side by side; named presets stay in the
configurable presets directory.
v1.9.53b — Temp directory, persistent logs, one-click log shipping
- Temp moved to
C:\1Click_SeedVR2.5\temp— all transient work (queue
files, previews, chunk runs) lives with the other shared assets
(python_embeded,models,presets), configurable via the Temp
directory setting. - "Log directory" setting row in Settings — where
app.log,
error.logand failure reports are written. - Debug output ON by default.
- access.log — every CLI log line is appended (timestamped) across
sessions. Show Log opens with previous-run history (last 3000 lines)
instead of a blank window; Clear wipes both view and file. - Send Logs button on the error dialog — zips
error.log,
access.log,app.logandconfig.jsonand emails the archive to the
developer fully in the background. SMTP credentials are embedded in the
binary (obfuscated, never shown in the UI) — zero configuration.
v1.9.52b — Single config.json + dedicated log/presets directories
- One config.json, in the project root only. The EXE (inside
dist\)
anchors one level up, so source runs and the frozen EXE read/write the
same file —dist\config.jsonanddist\tempare gone for good. - config.json contains only the Settings-dialog values (runtime paths,
temp/presets/log directories, alarm, systray, session I/O). - Processing settings (batch, tiles, model, offloads…) live in
presets\last_used.json— separated by design. - New
log\directory for app/error/failure logs, configurable via the
"Log directory" setting. - Presets directory is configurable ("Presets directory" setting,
defaultC:\1Click_SeedVR2.5\presets).
v1.9.51b — Executable renamed
SeedVR2_GUI.exe→1-Click_SeedVR_2.5.exe(InternalName and
OriginalFilename metadata updated as well).
v1.9.50b — Application renamed
- Display name is now "1-Click SeedVR 2.5" (window title, tray tooltip,
EXE file description, product name).
v1.9.49b — System tray toggle
- New System tray on/off switch in Settings (below Alarm sounds),
persisted in config.json, default on.- ON: closing the window hides the app to the tray; processing
continues in background; full quit via the tray menu. - OFF: no tray icon; closing the window really quits the app.
- ON: closing the window hides the app to the tray; processing
- Applies immediately — no restart needed.
v1.9.48b — Standard output colors, error reporting, voice alerts
Standard-compliant output colors (breaking fix)
- The raw RGB pipe reached NVENC and was encoded as GBR 4:4:4
(Main 4:4:4+ identity matrix) — many editors/players misinterpret it
and shift colors. The writer now forces-pix_fmt yuv420pplus an
explicit bt709 RGB→YUV matrix (-vf scale=out_color_matrix=bt709:out_range=tv),
so output isMain / yuv420p / bt709 / tv— the same standard combo
ComfyUI writes. Verified with a real NVENC encode + ffprobe. - Image-sequence export gets the same matrix fix. RGB targets (FFV1,
ProRes 4444) unaffected.
Detailed failure reporting
- Failures no longer show a bare "Exit code 1": the dialog opens with
details expanded, headed by the most meaningful error line, and the full
report (command + last 100 log lines) is saved to
log\cli_failure_<timestamp>.logwith Copy-to-Clipboard.
Voice (TTS) notifications
- Success/failure alarms now speak via Windows SAPI ("Processing completed
successfully." / "An error occurred during processing."), falling back to
the old chime when no voice is installed.
Project panel outcome colors
- Finished files turn green, failures red, cancellations amber.
Export defaults
- Quality level defaults to High (codec default was already H265).
Other
- Removed the non-functional "Side by Side" preview button.
- 7B config selection is case-insensitive — a file named with an uppercase
"7B" no longer silently loads the 3B config and fails with a confusing
architecture mismatch. Dry-run structure test passes for all 9 registered
DiT models (3B/7B/sharp, GGUF/fp8/fp16).
v.1.9.47b
Changelog — v1.9.37b → v1.9.47b
All changes between v1.9.37b and v1.9.47b, grouped by release.
v1.9.38b — Model RAM Caching (WITHDRAWN)
- DiT/VAE RAM caching between runs — when
cache_dit/cache_vaewas
enabled with offload set to GPU, models were moved to CPU RAM after each run
instead of being freed, so subsequent runs skipped re-loading from disk. - Withdrawn: the RAM-resident models slowed down DiT inference on the next
run (speed regression). The user reverted to the v1.9.37b backup. None of
these changes are present in v1.9.39b and later — development continued from
the v1.9.37b codebase.
v1.9.39b — GUI-Controlled Pipeline Behavior
- All offload settings are now fully GUI-driven — no hardcoded pipeline
behavior. The GUI dropdowns for DiT / VAE / tensor offload control the
pipeline end to end, and their values are forwarded to the CLI correctly:- GUI labels changed from
None/CPUto GPU / CPU (clearer wording). _build_cli_args()maps the GUI selection to--dit_offload_device,
--vae_offload_device, and--tensor_offload_devicefor every run._parse_offload_device("none")returnsNone(GPU-resident) in the CLI.
- GUI labels changed from
- Frame sync fix —
prepend_framesconditioning frames are now correctly
trimmed from the exported output (postprocess receives
prepend_frames=args.prepend_frames), so output frame count matches the
input instead of being offset. - Single-file runner caching fix —
runner_cacheis now used for
single-file processing as well, not only for batch/queue processing.
v1.9.40b — FFmpeg 9 GPU-Aware Export System
- GPU-aware FFmpeg 9 encoding flags — export encoder selects optimal flags
per GPU vendor, detected automatically at startup via the device probe and
passed tobuild_ffmpeg_command():- NVIDIA NVENC:
-preset p7 -tune hq -rc vbr -cq N -spatial-aq 1 -temporal-aq 1 -aq-strength 15 -rc-lookahead 32 -b_adapt 1.
10-bit output uses-pix_fmt p010le. - Intel QSV:
-preset veryslow -global_quality N -look_ahead 1 -look_ahead_depth 40. - AMD AMF:
-quality quality -rc cqp -qp_i N -preanalysis 1 -vbaq 1. - Software (libx264/libx265):
-preset slow -crf N.
- NVIDIA NVENC:
- AV1 hardware encoding —
av1_nvenc,av1_qsv,av1_amfauto-detected;
falls back tolibsvtav1. - Quality values tightened for AI-upscaled content — H264/H265 CQ
24/20/16 (was 28/23/18); AV1 CRF 30/24/20; VP9 CRF 33/27/21 with
-row-mt 1 -deadline good -cpu-used 3. - H265 QuickTime compatibility —
-tag:v hvc1added automatically for H265
in MOV containers. - Single GPU probe path — the device probe result and the ffmpeg encoder
cache are both passed into the export builder; the previously disconnected
dual-probe system (device probe vsffmpeg -encodersprobe) is unified.
v1.9.41b — System Tray + Interrupted Job Resume
- Minimize to system tray — pressing the window close button (X) hides the
application to the Windows system tray; processing continues in the
background. Full quit is available only from the tray icon's right-click
menu ("Full Quit"), which aborts the active worker, releases threads,
previews and the tray icon, and exits.- Tray icon left-click toggles the main window.
- A notification is shown when hiding during active processing.
- Interrupted job recovery on startup — jobs stuck in
runningstatus
(after a crash or force-quit) are automatically flipped back topending
viarecover_stale_running()injob_queue.py. If pending jobs exist, a
startup dialog offers to resume them:- Yes — the jobs are re-enqueued and started; the CLI resumes from
completed chunks viaprogress.json+completed_chunksskip logic. - No — pending jobs are cleared.
- Yes — the jobs are re-enqueued and started; the CLI resumes from
- Chunk resume surfaced to the user — the CLI's chunk progress tracking
already existed; the GUI now drives resume by re-invoking the same job, and
the CLI transparently skips completed chunks.
v1.9.42b — Comparison View Modes + Smooth Progress
- Single / Split / Side-by-Side view buttons fixed — all three comparison
view modes now work for both video and static-image previews. Mode switching
(_set_preview_mode()) pauses video playback on switch, and
_refresh_comparison_view()correctly reloads static frames when the
comparison payload contains images instead of videos. - Smooth progress bar — progress no longer jumps in 25% phase steps. The
phase update formula((current_phase - 1) + phase_progress) / total * 100
produces continuous within-phase progress, so the bar advances smoothly
across VAE encode → DiT → VAE decode → postprocess.
v1.9.43b – v1.9.45b — Preview Engine Iterations (mpv experiment)
- mpv-based preview experiment — attempted to embed
mpv.exe(Topaz Video
AI style) as the playback engine:--widwindow embedding plus named-pipe
IPC (gui/widgets/mpv_widget.py), to offload decoding from the CPU-bound Qt
widget. - Result: reverted.
--widembedding produced a black screen inside the
GUI's stacked widget, andpython-mpvcould not loadmpv-2.dll(missing
dependencies; a standalone libmpv build is required). The preview was
reverted to the native QtVideoPreviewWidget. - Interim fixes shipped in these builds:
Colors.TEXT_DIM→Colors.TEXT_MUTED(AttributeError at runtime in
video_preview.py).- A preview speed regression introduced during the experiment was reverted
("restore the previous speed").
v1.9.46b — Preview Overlay Layout Fix
- Info overlay / seek bar overlap fixed — the video info text no longer
collides with the bottom seek bar. Layout is now: frame counter top-left,
video info (resolution, fps, frame count, zoom level) top-right, seek slider
in a reserved 32px strip at the bottom.
v1.9.47b — VideoPreviewWidget Cleanup + Realtime Playback
- Duplicate play bar removed — the widget no longer renders its own
play/pause button and frame label; the application's external
PlaybackControls(play/pause, next/prev) is the single control set. The
widget keeps only the seek slider. - Realtime playback —
paintEventswitched fromSmoothTransformationto
FastTransformationfor frame scaling during playback, eliminating preview
lag/stutter on high-resolution outputs. - Video info overlay — resolution, fps, frame count and zoom level shown
at the top-right during playback. - Frame counter — current/total frame count at the top-left.
- Seek slider — draggable position slider at the bottom with show/hide and
layout logic (_show_seek_bar()/_hide_seek_bar()/
_layout_seek_bar()); import list cleaned accordingly.
Unreleased (source only, not yet built)
- BT.709 color metadata on all FFmpeg outputs — every FFmpeg command now
tags the output-color_primaries bt709 -color_trc bt709 -colorspace bt709:
theFFMPEGVideoWriterencoder pipe (covers default and GUI-export
encoding), the chunk concat (-c:v copy), and the audio mux step. MediaInfo
now reports BT.709 primaries / transfer / matrix on all outputs. PYTORCH_ALLOC_CONFmigration — the deprecatedPYTORCH_CUDA_ALLOC_CONF
environment variable was renamed to the unifiedPYTORCH_ALLOC_CONF
(inference_cli.py,rocm_compat.py), removing the PyTorch 2.9+ allocator
deprecation warning from every run.force_upcastFutureWarning fixed — the VAE upcast toggle in
model_loader.pynow accessesmodel.config.force_upcastinstead of the
deprecated direct attribute, silencing the diffusers FutureWarning during
VAE materialization.
v.1.9.37b
1-Click SeedVR2.5 GUI — Changelog v1.8b → v1.9.37b
v1.9.37b
- Split video frame offset sync — The split-view widget now calculates the
frame count difference between source and upscaled videos and applies an
automatic offset. Source video frame N is displayed alongside upscaled video
frame N+offset, ensuring temporal alignment in the comparison view.
v1.9.36b
- Postprocess prepend_frames fix —
_process_frames_corewas passing
prepend_frames=0topostprocess_all_batches, causing 4 extra frames in
the output. Now passesargs.prepend_framesto correctly remove prepended
frames, ensuring output frame count matches input.
Export System Overhaul
v1.9.35b
- Reverted prepend removal — Temporarily reverted to diagnose frame sync
issues. Prepend frames are kept in the output for debugging.
Comprehensive Codec Support
- H264 / H265 (NVENC GPU encoding) — Hardware-accelerated encoding via
h264_nvenc/hevc_nvencwith automatic NVENC detection. Profiles: Baseline,
Main, High (H264); Main, Main10, Main12 (H265). Quality levels: Low / Mid / High
mapped to CQ values. - ProRes — Apple ProRes with 6 profiles: Proxy, LT, Standard, HQ, 4444,
4444 XQ. MOV container. - DNxHR — Avid DNxHR with 5 profiles: LB, SQ, HQ, HQX, 444. MOV/MXF container.
- FFV1 — Lossless FFV1 codec (MKV/AVI).
- FFV1 Intra RGBA-16bit — Intra-only FFV1 with
rgba64lepixel format for
maximum fidelity (MKV/AVI). Uses-coder 1 -context 1 -g 1. - AV1 (NVENC) — Hardware-accelerated AV1 encoding (
av1_nvenc). - VP9 — Software VP9 encoding (WebM/MKV).
- QuickTime V210 — Uncompressed YUV 10-bit 4:2:2 (MOV).
- QuickTime R210 — Uncompressed RGB 10-bit (MOV).
- QuickTime Animation — Run-length compressed RGB 8-bit with alpha (MOV).
v1.9.34b
- Initial prepend_frames investigation — Attempted fix for frame count
mismatch between input and output videos.
Image Sequence Export
- TIFF — 8-bit and 16-bit (deflate compression).
- PNG — 8-bit and 16-bit.
- JPEG — 8-bit.
- EXR — 16-bit (half) and 32-bit (float).
- DPX — 8-bit, 10-bit, and 16-bit.
v1.9.33b
- Pipeline mode attempt (reverted) — Implemented per-batch streaming
pipeline (_pipeline_process) with async frame prefetch. This was slower
than the original 4-phase serial approach and was fully reverted. The
original serial pipeline is retained. - Batch size override removal — Removed
chunk_args.batch_sizeoverride
that was forcing single-batch processing per chunk, causing OOM with large
frame counts. - Stream mode cleanup — Removed all pipeline/stream mode artifacts:
_pipeline_process,lightweight_cleanup,pipeline_mode, async prefetch
thread, and related code.
Export Dialog Features
- NVENC auto-detection — Automatically probes ffmpeg for NVENC encoder
availability and selects GPU encoding when present. - Quality presets — Low / Mid / High quality levels per codec, mapped to
appropriate CQ/QP values. - Spatial AQ —
-spatial_aq 1enabled for NVENC encoders for better quality. - 10-bit output — Optional 10-bit encoding (
-pix_fmt p010lefor H265,
yuv422p10lefor ProRes, etc.). - Smart container filtering — Only valid containers per codec are shown
(e.g., ProRes → MOV only). - FFmpeg argument builder —
build_ffmpeg_command()constructs optimal
ffmpeg arguments based on selected codec, profile, quality, and container.
v1.9.32b
- Channels-last memory format (ComfyUI
--force-channels-lastequivalent)
— The DiT model is now converted totorch.channels_lastmemory layout
after materialization. On Blackwell (RTX 50xx) this enables the faster NHWC
tensor core path for conv and linear ops. Backend-specific: only applied on
NVIDIA CUDA and AMD ROCm RDNA3+ viasupports_channels_last(). - RoPE bf16 (no float32 upcast) (ComfyUI
--dont-upcast-attention
equivalent) — Rotary position embeddings were upcasting q/k to float32 on
every attention layer, then casting back. Now RoPE runs in native bf16
throughout (viasupports_low_precision_rope()), eliminating the expensive
fp32 round-trip on every forward pass in both 3B and 7B models. - VAE attention upcast disabled — VAE attention used
upcast_softmax=True
andforce_upcast=True, forcing softmax to float32. Both disabled to keep
the entire VAE pipeline in bf16. Applied at runtime inmodel_loader.py
based on backend detection. - VAE tiled encode/decode off by default — Tiling was splitting 960x720
into 2 tiles, doubling the decode work. Now bothvae_encode_tiledand
vae_decode_tileddefault toFalse(matching ComfyUI node defaults). RTX
5070 Ti 16GB VRAM handles full-resolution VAE without tiling. - CUDA caching allocator (no
PYTORCH_ALLOC_CONF) — Previous attempts with
expandable_segments:True(unsupported on Windows, PyTorch #123548 conflict)
andbackend:cudaMallocAsync(reserved VRAM never reclaimed) both caused
fragmentation. The default PyTorch caching allocator works best on Windows. _parse_offload_deviceno longer forces CPU — Whenoffload_device="none",
the CLI previously auto-promoted to"cpu"if caching was enabled, silently
re-introducing model ping-pong. Now"none"always means GPU resident.- Performance parity fix — model ping-pong eliminated — GUI offload
defaults werevae_offload_device=cpuandtensor_offload_device=cpu,
forcing every model and all latent tensors to ping-pong GPU↔CPU between
phases. Defaults changed to GPU (none), matching ComfyUI's--gpu-only. - GUI offload labels — Dropdown options changed from cryptic "none"/"cpu"
to friendly "GPU"/"CPU" labels with bidirectional mapping.
v1.9.31b
- Lossless preview source frame — Preview now reads the source frame
directly from the original file via cv2 (preserving full bit depth) instead
of the 8-bit display pixmap. 16-bit sources keep their full 16-bit precision
in the comparison. - Stale preview cleanup — Old preview artifacts (
preview_source.tiff,
preview_fallback.tiff,preview_result.tiff) are deleted before each new
preview run and when a file is removed from the project list. - Synchronized video split view —
SplitViewWidgetrewritten with
dual-video synchronized playback via dualcv2.VideoCapture+QTimer.
Supports play/pause, seek slider, keyboard controls (Space/Left/Right/
Home/End), and click-to-toggle playback.
Settings Panel Enhancements
v1.9.30b
- Performance parity with ComfyUI — CLI now sets the same PyTorch
environment variables ComfyUI uses (TORCH_CUDNN_BENCHMARK,
TORCH_CUDNN_SDP_ENABLED,TRITON_INTERPRET=0,CUDA_CACHE_PATH,
CUDA_MODULE_LOADING=LAZY), pluscudnn.benchmark=Trueand TF32 matmul
(set_float32_matmul_precision("high")). Compile-free speedup. - EWA-Lanczos downscale — Pre-downscale now uses GPU
torch.interpolate
(Lanczos + antialias) instead of CPUcv2with uint8 quantization. - FFV1 Intra RGBA-16bit codec — Added lossless intra-only FFV1 codec
(ffv1 -pix_fmt rgba64le -coder 1 -context 1 -g 1, MKV/AVI). - Clear list button — Project panel now has a 🗑 Clear List button
(variant="danger") that clears all files and emitsfile_removedper file. - Sound fixes — Success = rising 3-note Beep chime (659→880→1319 Hz);
failure = descending two-tone (622→415 Hz). All viawinsound.Beep.
Resolution
- Resolution modes — Pixel (exact short-side), X-Times (multiplier), and
Presets (720p, 1080p, 1440p, 4K). - Max resolution — Hard cap on the longest edge (default: 3840px).
- Pre-downscale — Optional 2:1 or 3:1 pre-downscale before upscaling, with
EWA-Lanczos GPU interpolation.
v1.9.21b–v1.9.29b
- Auto-Tune OOM-retry system — When CUDA OOM occurs, the CLI automatically
reduces tile size (1024→512→256), increases BlockSwap (0→16→24→32→36),
reduces batch size, or enables pre-downscale — then retries without manual
intervention. - BlockSwap escalation — Automatic block swap escalation for low-VRAM GPUs.
- Conv3d memory bug workaround — Detects PyTorch 2.9+ with cuDNN ≥91002
Conv3d 3x memory bug and applies directtorch.cudnn_convolutionbypass. - Device manager backend detection — Unified
Backendenum (CUDA/ROCM/
XPU/MPS/CPU) withsupports_channels_last()andsupports_low_precision_rope()
for backend-specific optimizations. - VAE decode batch cleanup —
empty_cache()between decode batches to
prevent reserved-but-unallocated VRAM accumulation. retry_on_oomsleep removal — Removed hardcoded 0.5s sleep in OOM retry
path for faster recovery.release_model_memoryVRAM flush — Addedempty_cache()after model
parameter release to immediately return freed VRAM to the allocator.
Batch Processing
- Batch size — Configurable batch size (default: 81). Higher = better temporal
coherence but more VRAM. - Uniform batch size — Pads the final batch to match
batch_sizefor consistent
processing. - Temporal overlap — Overlapping frames between batches for smooth blending
(default: 4). - Prepend frames — Reversed frames prepended at the start to reduce start
artifacts (default: 4).
VAE Tiling
- Encode tiled — Optional spatial tiling during VAE encoding.
- Decode tiled — Optional spatial tiling during VAE decoding.
- Tile size / overlap — Configurable tile dimensions and overlap for both
encode and decode.
Color Correction
- Methods — LAB perceptual transfer, Wavelet adaptive, Wavelet reconstruction,
HSV, AdaIN, or None.
Noise
- Input noise scale — Adds subtle noise to input before encoding (0.0–1.0).
- Latent noise scale — Adds n...