Skip to content

Releases: naxci1/1Click_SeedVR2.5

v.1.9.63b

Choose a tag to compare

@naxci1 naxci1 released this 24 Aug 18:48
f5b0c21

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 raised OverflowError → "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 .download partial 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

Choose a tag to compare

@naxci1 naxci1 released this 24 Aug 16:11
f5b0c21

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
    OverflowError from 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.62b into
    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 FAILED to 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
    false and config.json was persisted on first launch.

v.1.9.61b

Choose a tag to compare

@naxci1 naxci1 released this 24 Aug 13:28
bc555ec

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 root G:\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
    whose seedvr2_folder names 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. A threading.excepthook now funnels
    them into error.log with full tracebacks (and therefore into Send
    Logs mails) — this also captures the reported OverflowError class of
    failures with real context next time it happens.
  • The progress-line parser is hardened against OverflowError from
    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

Choose a tag to compare

@naxci1 naxci1 released this 24 Aug 11:30
ad2c484

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
    .download file 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_*.log reports and a last_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.exe and
    ffmpeg\bin\ffmpeg.exe) and is always preferred; the codec probe no
    longer silently falls back to a system-wide ffmpeg.
  • A new --ffmpeg_path argument 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 a config.json.bak instead 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_dir in config.json).
  • A transient CUDA error: device not ready in the downscaler is retried
    once after a synchronize before failing.
  • Down: Stop/abort during model downloads keeps the resumable partial.

v.1.9.59b

Choose a tag to compare

@naxci1 naxci1 released this 23 Aug 19:37
6798ed4

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 > 0 no 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

Choose a tag to compare

@naxci1 naxci1 released this 23 Aug 17:58
7ee3fc9

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
    with RuntimeError: Promotion for Float8 Types is not supported, attempted to promote Float and Float8_e4m3fn.
  • Root cause: CustomRMSNorm deliberately skipped the dtype cast for FP8
    weights, so F.rms_norm(float_input, fp8_weight) hit PyTorch's unsupported
    float8 promotion. CustomLayerNorm already 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

Choose a tag to compare

@naxci1 naxci1 released this 23 Aug 16:32
cbe44c9

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 combined mode="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

Choose a tag to compare

@naxci1 naxci1 released this 23 Aug 12:23
a998516

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.log and 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.log and config.json and 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.json and dist\temp are 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,
    default C:\1Click_SeedVR2.5\presets).

v1.9.51b — Executable renamed

  • SeedVR2_GUI.exe1-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.
  • 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 yuv420p plus an
    explicit bt709 RGB→YUV matrix (-vf scale=out_color_matrix=bt709:out_range=tv),
    so output is Main / 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>.log with 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

Choose a tag to compare

@naxci1 naxci1 released this 19 Aug 15:18
1ec3b51

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_vae was
    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 / CPU to GPU / CPU (clearer wording).
    • _build_cli_args() maps the GUI selection to --dit_offload_device,
      --vae_offload_device, and --tensor_offload_device for every run.
    • _parse_offload_device("none") returns None (GPU-resident) in the CLI.
  • Frame sync fixprepend_frames conditioning 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 fixrunner_cache is 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 to build_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.
  • AV1 hardware encodingav1_nvenc, av1_qsv, av1_amf auto-detected;
    falls back to libsvtav1.
  • 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 hvc1 added 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 vs ffmpeg -encoders probe) 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 running status
    (after a crash or force-quit) are automatically flipped back to pending
    via recover_stale_running() in job_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 via progress.json + completed_chunks skip logic.
    • No — pending jobs are cleared.
  • 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: --wid window embedding plus named-pipe
    IPC (gui/widgets/mpv_widget.py), to offload decoding from the CPU-bound Qt
    widget.
  • Result: reverted. --wid embedding produced a black screen inside the
    GUI's stacked widget, and python-mpv could not load mpv-2.dll (missing
    dependencies; a standalone libmpv build is required). The preview was
    reverted to the native Qt VideoPreviewWidget.
  • Interim fixes shipped in these builds:
    • Colors.TEXT_DIMColors.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 playbackpaintEvent switched from SmoothTransformation to
    FastTransformation for 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:
    the FFMPEGVideoWriter encoder 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_CONF migration — the deprecated PYTORCH_CUDA_ALLOC_CONF
    environment variable was renamed to the unified PYTORCH_ALLOC_CONF
    (inference_cli.py, rocm_compat.py), removing the PyTorch 2.9+ allocator
    deprecation warning from every run.
  • force_upcast FutureWarning fixed — the VAE upcast toggle in
    model_loader.py now accesses model.config.force_upcast instead of the
    deprecated direct attribute, silencing the diffusers FutureWarning during
    VAE materialization.

v.1.9.37b

Choose a tag to compare

@naxci1 naxci1 released this 09 Aug 10:24
99743c7

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_core was passing
    prepend_frames=0 to postprocess_all_batches, causing 4 extra frames in
    the output. Now passes args.prepend_frames to 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_nvenc with 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 rgba64le pixel 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_size override
    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 1 enabled for NVENC encoders for better quality.
  • 10-bit output — Optional 10-bit encoding (-pix_fmt p010le for H265,
    yuv422p10le for ProRes, etc.).
  • Smart container filtering — Only valid containers per codec are shown
    (e.g., ProRes → MOV only).
  • FFmpeg argument builderbuild_ffmpeg_command() constructs optimal
    ffmpeg arguments based on selected codec, profile, quality, and container.

v1.9.32b

  • Channels-last memory format (ComfyUI --force-channels-last equivalent)
    — The DiT model is now converted to torch.channels_last memory 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+ via supports_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 (via supports_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
    and force_upcast=True, forcing softmax to float32. Both disabled to keep
    the entire VAE pipeline in bf16. Applied at runtime in model_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 both vae_encode_tiled and
    vae_decode_tiled default to False (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)
    and backend:cudaMallocAsync (reserved VRAM never reclaimed) both caused
    fragmentation. The default PyTorch caching allocator works best on Windows.
  • _parse_offload_device no longer forces CPU — When offload_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 were vae_offload_device=cpu and tensor_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 viewSplitViewWidget rewritten with
    dual-video synchronized playback via dual cv2.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), plus cudnn.benchmark=True and TF32 matmul
    (set_float32_matmul_precision("high")). Compile-free speedup.
  • EWA-Lanczos downscale — Pre-downscale now uses GPU torch.interpolate
    (Lanczos + antialias) instead of CPU cv2 with 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 emits file_removed per file.
  • Sound fixes — Success = rising 3-note Beep chime (659→880→1319 Hz);
    failure = descending two-tone (622→415 Hz). All via winsound.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 direct torch.cudnn_convolution bypass.
  • Device manager backend detection — Unified Backend enum (CUDA/ROCM/
    XPU/MPS/CPU) with supports_channels_last() and supports_low_precision_rope()
    for backend-specific optimizations.
  • VAE decode batch cleanupempty_cache() between decode batches to
    prevent reserved-but-unallocated VRAM accumulation.
  • retry_on_oom sleep removal — Removed hardcoded 0.5s sleep in OOM retry
    path for faster recovery.
  • release_model_memory VRAM flush — Added empty_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_size for 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...
Read more