From 563dba5a0cb70aa8cd0d41863d00beece7f3647d Mon Sep 17 00:00:00 2001 From: Ethanfel Date: Sun, 15 Feb 2026 01:39:21 +0100 Subject: [PATCH] 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 --- tab_batch.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/tab_batch.py b/tab_batch.py index 485b02e..ec13859 100644 --- a/tab_batch.py +++ b/tab_batch.py @@ -377,7 +377,10 @@ def render_batch_processor(data, file_path, json_files, current_dir, selected_fi seq["flf image path"] = st.text_input("FLF Image Path", value=seq.get("flf image path", ""), key=f"{prefix}_flfi") with st.expander("VACE Settings"): fts_col, fts_btn = st.columns([3, 1]) - old_fts = int(seq.get("frame_to_skip", 81)) + saved_fts_key = f"{prefix}_fts_saved" + if saved_fts_key not in st.session_state: + st.session_state[saved_fts_key] = int(seq.get("frame_to_skip", 81)) + old_fts = st.session_state[saved_fts_key] seq["frame_to_skip"] = fts_col.number_input("Frame to Skip", value=old_fts, key=f"{prefix}_fts") delta = int(seq["frame_to_skip"]) - old_fts delta_label = f"Shift ↓ ({delta:+d})" if delta != 0 else "Shift ↓ (0)"