Commit Graph
998 Commits
Author SHA1 Message Date
digital-garbageandClaude Opus 4.8 c331fc21c7 Make refinement keys cross-compatible: detect any-named drops, chunk uploads past proxy limits
Detection: refinement_key_names() now scans every .json in the refinements
folder (not just the canonical refine_v2_<hash>.json name) and tolerates the
{"state": ...} export wrapper, so manually-placed keys and HuggingFace downloads
are listed whatever they're named. On detection/load they self-heal: the file is
migrated to the canonical hashed path so loads (which resolve by hash) succeed
everywhere — fixing keys that listed but wouldn't load. Sidecars (sampler_ctx
etc.) are excluded by the clip-namespace check.

Upload 413: large keys POSTed in one shot were rejected by the reverse proxies
on Vast.ai / Runpod (body cap well under ComfyUI's 100 MB). importRefinementKey
now streams big keys in 256 KB byte-accurate chunks reassembled server-side via
new /refinement_keys/import_chunk + /import_finalize routes; small keys keep the
fast single POST with an automatic chunked fallback on 413.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 15:41:59 +03:00
digital-garbageandClaude Opus 4.8 81c67f99e4 Release 3.0.1: refinement keys + Cutting Room fixes
Per-shortcut refinement keys (multi-key per-scene steering, timeline key
preview, session-reset wipes all trained keys) plus Cutting Room fixes
(comma-split replacements, i2v anchor prompt re-render, trigger-that-is-also
-a-shortcut timeline split). Restore the dropped [3.0.0] CHANGELOG header and
bump pyproject + README to 3.0.1.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
v3.0.1
2026-06-14 11:05:58 +03:00
digital-garbageandClaude Opus 4.8 5f784285d0 Stop splitting shortcut replacements on commas
A replacement is a prose phrase and may contain commas (e.g. "The video
rapidly cuts, showing the next view."). Both the Movie Editor's splitLines
and the backend _shortcut_replacements string fallback split on commas, so
one phrase became several variants: the editor showed it across lines,
expansion picked one half at random (never matching the comma-form transition
trigger), and a comma edit reverted on save because it re-split every time.

Replacements are now one-per-line only (commas preserved); triggers still
accept comma-separation per their UI. Existing torn replacements self-heal on
the next edit + save.

- mediabrowser.js: separate splitTriggers (\n or ,) and splitReplacements (\n).
- templates.py: _shortcut_replacements string fallback splits on \n only.
- tests: comma phrase stays one replacement (list + string + normalize paths).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 10:56:16 +03:00
digital-garbageandClaude Opus 4.8 025b0213ef Re-render timeline after i2v anchor change so prompt text doesn't vanish
Replacing a scene's i2v anchor is a source-only change: it doesn't change
the prompt-preview key or selection, so commit() replaced state.project with
the saved project WITHOUT a notify(), leaving the stale optimistic DOM. The
clip's prompt text label could read blank until a reload/regenerate forced a
full re-render. Anchor/source changes now set _renderAfterSave so commit()
re-renders from the authoritative saved state once the save completes (the
flag survives commit's requeue/reentrancy and only clears on an actual
render). Backend round-trip already preserved text/gen_unit_id/source.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 10:38:52 +03:00
digital-garbageandClaude Opus 4.8 2fde2e8506 Fix editor timeline losing scenes when a trigger is also a shortcut
split_timeline_verbatim expanded shortcuts before detecting transitions, so
a cut marker that is ALSO a shortcut (e.g. qcut/cut, common now that cut
markers carry refinement keys) had its trigger word replaced before
detection -> the split was lost or misplaced ("scene 2 removed, scene 1
shows scene 2's prompt"). It now ALSO scans the original verbatim text for
triggers and merges with the expanded scan; trigger-shortcuts are caught at
their true offset, shortcut-driven splits and plain triggers are unchanged,
and the dedup collapses duplicates. Lossless round-trip preserved.

- conditioning.py: original-text trigger scan in split_timeline_verbatim.
- tests: user's qcut/cut case (2 scenes, actions 10|20,30, lossless) +
  shortcut-driven split still works.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 10:27:57 +03:00
digital-garbageandClaude Opus 4.8 3b719d098e Revert over-aggressive verbatim-split guard
The shortcut-internal-cut guard disabled the supported 'shortcut whose
expansion resolves to a transition' splitting (see project prompt model),
so scenes stopped splitting at all. Reverts split_timeline_verbatim to the
prior behavior; the real drop/shift bug needs a targeted fix with the
user's actual prompt + shortcut definition.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 10:17:55 +03:00
digital-garbageandClaude Opus 4.8 209466995b Fix editor timeline dropping scenes on shortcut-internal cuts
split_timeline_verbatim detected scene cuts in EXPANDED text and projected
them back onto the original. A cut living inside a shortcut's replacement
got projected onto the shortcut's edge; colliding/early boundaries were then
deduped away, dropping a scene and shifting the rest ("scene 2 removed,
scene 1 shows scene 2's prompt") until reload. This surfaced more once
shortcuts could carry refinement keys (more key-bound shortcuts in prompts).

The editor treats shortcuts as opaque (they only expand for preview/
generation), so the verbatim splitter now ignores any transition match that
starts inside a shortcut expansion. Literal user-typed markers still split;
generation still expands and splits unchanged. Result round-trips losslessly.

- conditioning.py: _starts_in_shortcut guard in split_timeline_verbatim.
- tests: shortcut-internal cut is ignored + lossless; literal cuts still split.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 10:11:51 +03:00
digital-garbageandClaude Opus 4.8 c8ec0e3d55 Session Reset wipes all prompt keys; warn with the key list
Per-scene multi-key learning trains every refinement key whose shortcut
fired in the prompt, so a reset must clear them all — not just the
project/default key, which left stale per-key state behind.

- conditioning.py: _v2_reset_prompt_keys() — on reset_session, union the
  non-default keys from the raw positive + intent prompts and reset/save
  each (primary key excluded; main flow already handles it). Reported in
  the state status string.
- store.js: "Reset Studio session" now confirms before arming, listing
  every key it will wipe (default + non-default keys in the prompt, from
  the preview's scene_refinement_keys). Disarming does not re-prompt.
- tests: union/primary-exclusion + no-op cases.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 09:53:40 +03:00
digital-garbageandClaude Opus 4.8 b78de23ccd Show per-scene refinement keys in the Movie Editor preview
Surface, before generation, which refinement key(s) each scene will steer
with — exactly matching the generation-time resolution.

- conditioning.py: extract resolve_scene_refinement_keys() as the single
  source of truth; FunPackVideoRefinerV2._v2_scene_refinement_keys now
  delegates to it (no behavior change).
- bridge.scene_refinement_keys(): preview payload per scene — explicit
  non-default keys, or the project default key when none fired.
- server /preview: attach scene_refinement_keys (both gen and non-gen
  branches), resolved against the project's refinement_key.
- inspector.js + styles.css: per-scene key chip in the timeline preview
  (avg when >1; greyed "(default)" fallback).
- tests: resolver/Studio parity + bridge preview payload.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 09:46:21 +03:00
digital-garbageandClaude Opus 4.8 1a475f73d4 Add multi-refinement-key support to the Movie Editor
- Shortcuts carry an optional refinement_key (templates model + expansion);
  editor gains a "Use non-default refinement key" checkbox + field.
- Project-level Refinement key field (Studio engine card) wired through
  server -> builder into FunPackRefinementKeyLoader (settable in any mode).
- Per-scene key attribution (prompt_scene_shortcut_keys): keys whose shortcuts
  fired in a scene; anchor keys count for every scene; union fallback on
  rewrite/count mismatch.
- Per-scene conditioning merge: steer with each participating key's state and
  average (one key = substitute, none = default), replacing the default-key
  relative steering for keyed scenes.
- Multi-key rating: full per-scene learning suite + value fn trained into each
  participating key's state.
- Tests for shortcut key surfacing, expansion tagging, per-scene attribution,
  fallback, and keyloader injection.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-14 00:01:35 +03:00
digital-garbage 3bf69fefe1 Revert "Add Chain Sampler live preview with View menu VAE picker."
This reverts commit 4e69545f0c2cbd2780982b4f01dc8db681e1bf99.
2026-06-13 02:40:31 +03:00
digital-garbage fddd38270f Revert "Improve live preview VAE picker and Models wiring."
This reverts commit c81b1d2951d49f8c04c84de7590261c02673fba8.
2026-06-13 02:40:31 +03:00
digital-garbage b388c35a09 Revert "Allow VAE loaders to wire live preview in guided mode."
This reverts commit a35f2ae2b341ac9a03716c65e9d39ad5171ebe5a.
2026-06-13 02:40:31 +03:00
digital-garbage dc21ea4235 Revert "Fix stale generate input and live preview visibility."
This reverts commit 1a259bd56a941aedf722fa03dfaaa833f92adb08.
2026-06-13 02:40:31 +03:00
digital-garbage 4647cd87b2 Revert "Fix timeline/generate drift and stale chain preview segments."
This reverts commit 4cc1c206738523e7bb03dca847c42a11738808e4.
2026-06-13 02:40:31 +03:00
digital-garbage 77b6257698 Revert "Revert preview segment cache and live preview UI changes."
This reverts commit a1f20e04619be64bbd5dcbd425b64cad4476ac8b.
2026-06-13 02:40:31 +03:00
digital-garbage 301c978dd2 Revert preview segment cache and live preview UI changes.
Roll back segment cache busting, player refresh-on-render, and gen overlay behavior while keeping timeline snapshot verification before generate.
2026-06-13 02:05:10 +03:00
digital-garbage f4d381c44c Fix timeline/generate drift and stale chain preview segments.
Verify saved project matches the editor before generate and reject mismatches on the server. Invalidate preview-segment cache on regen, key trims by source mtime, and refresh the player after new renders land.
2026-06-13 00:39:20 +03:00
digital-garbage 93281a818b Fix stale generate input and live preview visibility.
Flush pending global prompt edits before save/generate so runs use the latest timeline text and anchors. Improve live preview wiring detection, progress polling, overlay stacking, and diagnostics when a VAE is configured.
2026-06-13 00:07:07 +03:00
digital-garbageandCursor cfd33e3279 Allow VAE loaders to wire live preview in guided mode.
Expose Chain Sampler live preview as an optional VAE port so Video VAE and custom slots can select it in Models without Full control.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-12 23:56:42 +03:00
digital-garbageandCursor 3fd08dcd13 Improve live preview VAE picker and Models wiring.
Show node class in the picker, allow manual wire to Chain Sampler live preview from Models, and keep wires synced with the View menu config.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-12 23:51:13 +03:00
digital-garbageandCursor 2761d6d3ac Add Chain Sampler live preview with View menu VAE picker.
Wire an optional fast preview VAE to show per-scene animated previews in the program monitor during generation.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-12 23:42:49 +03:00
digital-garbageandCursor 086e260b33 Fix project length/FPS not updating inheriting timeline clips.
Respect frames_mode/fps_mode in effective duration, propagate frame clears for image-source scenes, and include project timing in ViewBus fingerprints so the timeline rebuilds when project settings change.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-12 17:41:49 +03:00
digital-garbageandCursor f9e882d0ce Release 3.0.0: Cutting Room docs and version bump.
Document the Movie Editor, update README for the 3.0 frontend direction, credit pipeline dependencies, and ship CHANGELOG/pyproject 3.0.0.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-12 16:46:06 +03:00
digital-garbageandCursor ac6e7fe91d Fix timeline pause UX and player crash on gap segments.
Drag clips apart to create pauses automatically; dragging back flush removes them. Guard preview minibar against gap segments so transport controls load.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-12 16:39:21 +03:00
digital-garbage 656d948e0b Offer ComfyUI-Manager install first and allow cancelling stale node installs. 2026-06-12 16:35:31 +03:00
digital-garbage 29b0b6f705 Install missing pipeline nodes via ComfyUI-Manager on first project open. 2026-06-12 16:31:19 +03:00
digital-garbage 69ae9bacf4 Add pauses between timeline clips for beat alignment. 2026-06-12 16:22:16 +03:00
digital-garbage 17f1a5a7dc Fix repeat trims and sync embedded audio with video clip length.
Use directional frame snapping for shorten operations, trim video via source_dur, and update original audio lane visuals and waveforms during edits.
2026-06-12 16:16:56 +03:00
digital-garbage d82d7306c6 Fix timeline trim updates and default scene length to project settings.
Scene trims now refresh the timeline, inherit project frames/FPS until edited, and tour FAQ scroll no longer collapses open answers.
2026-06-12 16:13:22 +03:00
digital-garbage 6b17e1208a Add interactive welcome tour with sandbox demo mode.
Launch via ?mode=tour or Help menu: spotlight walkthrough, demo project, FAQ, and clearer workflow template labeling.
2026-06-12 16:05:29 +03:00
digital-garbage 2739203992 Align README support buttons in a single HTML row.
Use fixed-height images so Ko-Fi, Patreon, and Vast.ai badges line up cleanly on GitHub.
2026-06-12 15:51:14 +03:00
digital-garbage 0d174f1177 Refresh README support links and trim version blurbs.
Add Ko-Fi, Patreon, and Vast.ai buttons under the intro and update the thank-you section; drop inline release notes in favor of CHANGELOG.
2026-06-12 15:49:20 +03:00
digital-garbage 2ff89a8456 Allow final render from overlays and audio without video clips.
Generate a blank lavfi canvas at project resolution, composite overlays, mix audio tracks, and download without rewriting scene renders.
2026-06-12 15:39:48 +03:00
digital-garbage 2652044c2f Fix player.js syntax error in minibar if/else block.
Wrap previewSegs.forEach in braces so the overlay-only minibar else branch parses correctly.
2026-06-12 15:35:35 +03:00
digital-garbage 312602b18a Enable overlay-only playback and full audio lane editing.
Use a blank project canvas when no video clips exist, add trim/slip/split for inserted audio tracks, and honor overlay audio trims in export.
2026-06-12 15:34:37 +03:00
digital-garbage 4a90f901ff Keep separated audio on the timeline when its clip is removed.
Detach orphaned audio tracks instead of deleting them so pinned bin/render audio survives video clip removal.
2026-06-12 15:20:42 +03:00
digital-garbage d10595d52a Allow separating audio from imported video clips.
Pin separated audio from media-bin video sources so preview, timeline waveforms, and export match generated-scene behavior.
2026-06-12 15:18:03 +03:00
digital-garbage 5d4bac1044 Fix overlay crash when no project is loaded.
Guard sortedOverlayTracks and preview rendering against a null project state.
2026-06-12 15:14:38 +03:00
digital-garbage 8548fdd1b1 Align overlay preview with video frame for WYSIWYG export.
Size and position overlays against the letterboxed frame area and scale text/images to project pixel coordinates.
2026-06-12 15:12:14 +03:00
digital-garbage 7bdd183456 Fix overlay export when ffmpeg lacks drawtext.
Rasterize text overlays to PNG with Pillow before compositing so render works on minimal ffmpeg builds.
2026-06-12 15:09:13 +03:00
digital-garbage c26cb92f7e Improve overlay preview editing and fix overlays vanishing on pause.
Add pixel-based sizing with keep-proportion, preview resize/flip, sticky timeline ruler, and refresh overlays after player rebuilds.
2026-06-12 15:05:35 +03:00
digital-garbage fceedff3f3 Fix overlay timeline UX: track removal, alignment, and preview interactions.
Add gutter controls to remove overlay tracks, align lane labels with rows, and improve clip removal, Space play/pause, and preview drag/double-click behavior.
2026-06-12 14:59:15 +03:00
digital-garbage 1413cd20b7 Fix overlay drag crash by forwarding mouseup from coalescedDrag.
Pass the mouse event through to overlay lane-drop handlers.
2026-06-12 14:51:07 +03:00
digital-garbage aded647371 Fix timeline.js syntax error from missing openAudioTrackModal header.
Restores the function declaration removed during overlay modal refactor.
2026-06-12 14:48:46 +03:00
digital-garbage 2932293bd3 Add multi-lane overlay tracks with drag-drop and layer ordering.
Includes font picker, redesigned overlay modals, and compositing by track height on export.
2026-06-12 14:47:43 +03:00
digital-garbage 70edd020f5 Fix overlay drag positioning and timeline trim UX.
Collapse scene-to-video replacement to one clip, clear stale renders, and add edge trim plus double-click edit modals.
2026-06-12 14:39:33 +03:00
digital-garbage 717f25c447 Add text and image overlay compositing to Cutting Room.
Single overlay lane with preview drag positioning and ffmpeg burn-in on final render.
2026-06-12 14:32:05 +03:00
digital-garbageandCursor 160cb733f9 Add Welcome screen on Cutting Room first load.
Show a four-action landing page on boot instead of auto-opening the latest project, with New, Open Latest, Load, and a placeholder Welcome Tour.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-12 14:20:22 +03:00
digital-garbageandCursor 09e951cf81 Add refinement key import/export to FunPack menu.
Wire Movie Editor to the same /funpack/refinement_keys routes Studio uses so keys can be backed up or restored without opening ComfyUI.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-11 23:36:59 +03:00