Commit Graph
40 Commits
Author SHA1 Message Date
EthanfelandClaude Opus 4.6 bdcc05f388 Fix mode-unaware base_length recovery in VACE calculation
The recovery formula now matches the storage formula per mode:
End Extend subtracts only A, Pre Extend subtracts only B.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 19:24:06 +01:00
EthanfelandClaude Opus 4.6 31da900502 Add mode-aware VACE frame calculation with 4n+1 snap
- Formula changes per VACE schedule: End Extend uses base+A,
  Pre Extend uses base+B, others use base+A+B
- Snap total to 4n+1 to match VACE sampler
- Show mode name label next to schedule number
- Add mode reference popover with all formulas

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 19:16:52 +01:00
EthanfelandClaude Opus 4.6 bc75e7f341 Add CFG input to batch processor UI
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-24 14:10:37 +01:00
EthanfelandClaude Opus 4.6 7261f2c689 Change input_a_frames and input_b_frames default to 16
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 17:12:24 +01:00
EthanfelandClaude Opus 4.6 2263c3f598 Store vace_length as total (base + input_a + input_b) in JSON
UI shows the base value (vace_length - input_a - input_b) for editing,
saves the computed total back to the JSON.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 17:11:11 +01:00
EthanfelandClaude Opus 4.6 a4717dfab6 Add vace_length field, move end_frame out of VACE settings, revert type coercion
- Moved end_frame to main settings area (i2v field, not VACE)
- Added vace_length (default 49) with computed output display
  showing vace_length + input_a + input_b
- Reverted custom param type coercion (ComfyUI handles conversion)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 15:26:13 +01:00
EthanfelandClaude Opus 4.6 3718975d99 Add image preview popover for reference and FLF path fields
Shows a clickable eye button next to each image path input that
opens a popover with the image preview when the path is valid.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 13:49:17 +01:00
EthanfelandClaude Opus 4.6 40ffdcf671 Clean up DEFAULTS: remove unused settings, add end_frame and transition
Removed steps, cfg, sampler_name, scheduler, denoise, model_name, and
vae_name that were showing as custom parameters. Added end_frame (0)
and transition (1-2) with VACE Settings widgets. Set default
general_negative prompt.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 13:34:21 +01:00
EthanfelandClaude Opus 4.6 81ecb91835 Fix Clone Next inserting between parent and its sub-segments
When cloning a parent sequence, the new sequence now inserts after the
parent's last sub-segment instead of directly after the parent.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 18:34:59 +01:00
EthanfelandClaude Opus 4.6 563dba5a0c Fix frame_to_skip shift by caching saved value in session state
The old_fts value was read from the data dict which gets mutated
in-place by widget renders, so on button click rerun delta was always 0.
Now the saved value is captured once per ui_reset_token cycle.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 01:39:21 +01:00
EthanfelandClaude Opus 4.6 b7164ae167 Replace legacy import with source sequence selector
Source file picker now shows all sequences in the selected file with a
dropdown, replacing the outdated history entry selector. Both "From
Source" and per-sequence "Copy Source" buttons use the selected sequence.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 01:07:29 +01:00
EthanfelandClaude Opus 4.6 adff3d0124 Add sub-segment support for VACE batch sequences
Sub-segments use parent*1000+index numbering (e.g. 2001 = Sub #2.1) so
ComfyUI nodes can reference them via integer sequence_number without
code changes. Adds clone-as-sub button, visual distinction in expander
labels, sort-by-number button, and fixes auto-numbering/frame_to_skip
shift to work correctly with sub-segments.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-15 01:04:03 +01:00
EthanfelandClaude Opus 4.6 f0ffeef731 Show delta on shift button and disable when zero
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 22:50:08 +01:00
EthanfelandClaude Opus 4.6 2473a3d20c Add frame_to_skip shift button to propagate delta to following sequences
Adds a "Shift ↓" button next to Frame to Skip in VACE Settings that
applies the change delta to all sequences with a higher sequence_number.
Uses sequence_number field ordering, not array position.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-14 22:43:54 +01:00
EthanfelandClaude Opus 4.6 58345dc7c0 Fix delete corruption, promote desync, and shallow copies
- Delete sequence: add ui_reset_token increment to prevent shifted
  sequences from inheriting deleted sequence's widget state
- Promote: update data_cache with single_data so UI reflects the
  file format change without requiring a manual refresh
- Mass update & clone: use copy.deepcopy to avoid shared mutable
  references between sequences

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-08 18:54:06 +01:00
EthanfelandClaude Opus 4.6 941eb836b0 Force data_cache reassignment after mass update
Explicitly reassign st.session_state.data_cache after mass update
to ensure Streamlit picks up in-place mutations to the batch data.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-07 11:23:23 +01:00
EthanfelandClaude Opus 4.6 c757038535 Fix mass update not refreshing UI
Increment ui_reset_token after mass update save so Streamlit
widgets re-read their values, matching all other save operations.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-06 12:48:07 +01:00
EthanfelandClaude Opus 4.5 8a86915347 Increase Specific Prompt text area height
- tab_single.py: 150 → 250px
- tab_batch.py: 100 → 300px to better match second column

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-05 11:59:28 +01:00
EthanfelandClaude Opus 4.5 56db4080de Add mass update feature to batch processor
Allows propagating field values from one sequence to multiple/all other
sequences. Includes source selector, field multi-select, target checkboxes
with Select All toggle, preview, and history snapshot on apply.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-03 13:57:34 +01:00
EthanfelandClaude Opus 4.5 676160be8c Always show reference path, flf image path, and VACE fields in batch editor
These fields were previously gated behind filename checks ("vace"/"i2v"
in filename), hiding them when the filename didn't match. Since DEFAULTS
includes all these keys, always render them.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 12:57:15 +01:00
EthanfelandClaude Opus 4.5 b02bf124fb Add atomic writes, magic string constants, unit tests, type hints, and fix navigation
- save_json() now writes to a temp file then uses os.replace() for atomic writes
- Replace hardcoded "batch_data", "history_tree", "prompt_history", "sequence_number"
  strings with constants (KEY_BATCH_DATA, etc.) across all modules
- Add 29 unit tests for history_tree, utils, and json_loader
- Add type hints to public functions in utils.py, json_loader.py, history_tree.py
- Remove ALLOWED_BASE_DIR restriction that blocked navigating outside app CWD
- Fix path text input not updating on navigation by using session state key
- Add unpin button (❌) for removing pinned folders

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 12:44:31 +01:00
EthanfelandClaude Opus 4.5 326ae25ab2 Fix critical bugs, security issues, and code quality across all modules
- Replace bare except clauses with specific exceptions (JSONDecodeError, IOError, ValueError, TypeError)
- Add path traversal protection restricting navigation to ALLOWED_BASE_DIR
- Sanitize iframe URLs with scheme validation and html.escape to prevent XSS
- Extract duplicate to_float/to_int to module-level helpers in json_loader.py
- Replace silent modulo wrapping with clamped bounds checking via get_batch_item()
- Remove hardcoded IP 192.168.1.51:5800, default to empty string
- Add try/except around fragile batch history string parsing
- Add JSON schema validation (dict type check) in read_json_data()
- Add Python logging framework, replace print() calls
- Consolidate session state initialization into loop with defaults dict
- Guard streamlit_agraph import with try/except ImportError
- Add backup snapshot before history node deletion
- Add cycle detection in HistoryTree.commit()

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 11:47:50 +01:00
Ethanfel 268de89f6d Update tab_batch.py 2026-01-06 21:53:38 +01:00
Ethanfel 2b4221e444 Update tab_batch.py 2026-01-05 12:51:20 +01:00
ethanfel d054ff2725 Update tab_batch.py 2026-01-04 17:03:31 +01:00
ethanfel a6b88467a8 Update tab_batch.py 2026-01-04 15:26:08 +01:00
ethanfel f7d7e74cb9 Update tab_batch.py 2026-01-04 12:42:31 +01:00
ethanfel 909f2b5f21 Update tab_batch.py 2026-01-03 10:51:52 +01:00
ethanfel 7df798ccd1 Update tab_batch.py 2026-01-02 19:15:21 +01:00
ethanfel 70686b6b3f Update tab_batch.py 2026-01-02 19:11:53 +01:00
ethanfel 25f8dd471a Update tab_batch.py 2026-01-02 19:09:30 +01:00
ethanfel af174839e8 Update tab_batch.py 2026-01-02 13:26:57 +01:00
ethanfel cbe2355ef6 Update tab_batch.py 2026-01-02 13:16:17 +01:00
ethanfel b89c5448a7 Refactor batch sequence UI and add randomness 2026-01-02 01:25:46 +01:00
ethanfel 39f4e7d96f Refactor sequence management and UI updates
Refactor sequence handling and UI elements in Streamlit app. Update custom parameters section and improve user experience.
2026-01-02 01:02:35 +01:00
ethanfel 378fc4dc90 Enhance sequence expander and custom parameter handling
Updated the sequence expander title to include the current prompt and added functionality for custom parameters, including adding and removing keys.
2026-01-02 00:58:31 +01:00
ethanfel 9cc956e5d3 Add random seed generation feature 2026-01-01 01:29:32 +01:00
ethanfel b628f17ec6 Refactor sequence handling and UI updates 2025-12-31 14:58:42 +01:00
ethanfel 3a9b58f3b5 Refactor batch file handling and UI interactions 2025-12-31 14:54:37 +01:00
ethanfel 2964101782 Add batch processing features to tab_batch.py
Implement batch processing functionality in Streamlit app with options to create, modify, and save batch sequences.
2025-12-31 14:44:09 +01:00