Save freeze fix:
- Added record_symlinks_batch() that inserts all symlinks in a single
DB transaction instead of opening a new connection per file
- _save_session and _auto_save_session now use batch inserts
- With 1700 files this goes from 1700 connection cycles to 1
Removed files fix:
- _restore_files_from_session now filters by _removed_files so
individually deleted files stay removed even when restoring from
session data that pre-dates the removal
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Session restore fixes:
- AUTO-typed folders now default to MAIN on restore instead of using
position-based index%2, which silently flipped half the folders to
TRANSITION when restoring legacy sessions
- All restored folders get explicit type overrides so no folder relies
on position-based typing after restore
- TRANSITION folders with symlink data are auto-recovered as MAIN
(catches incorrectly saved types from older export paths)
- Export Sequence path now saves with save_effective_types=True,
preventing folder type loss
- Removed redundant trim-only save that used unresolved paths
- Auto-save guards against overwriting sessions with empty file lists
UI improvements:
- Added 4th "Frame" column to Sequence Order tab showing overall
frame number (1-based)
- Last frame of each sequence is bold for visual clarity
- Fixed column resizing (ResizeToContents + Stretch) to prevent
column collapse bugs
- Save Session dialog now reports main + transition folder counts
- Default optical flow preset changed to Max
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Fix export range not covering TRANSITION folder middle frames: range max
was based on MAIN-only file count, causing blends at sequence end to be
silently skipped. Now uses full sequence frame count from preview table.
- Fix preview table not counting TRANSITION middle frames: these frames are
output as symlinks in export but were shown without sequence numbers in
preview. Now displayed as [T] entries with proper output_seq numbering.
- Fix session restore path resolution: all folder paths now .resolve()'d on
save and restored with _resolve_lookup() fallback for both raw and resolved
forms. Fixes folder order corruption on restore.
- Fix legacy session restore: detect pre-migration sessions (all folder_order=0)
and fall back to symlink-derived ordering with get_all_folder_settings().
- Fix ffmpeg concat demuxer duration format: use decimal instead of fraction.
- Fix QProgressDialog false cancellation from autoReset at max value.
- Fix Export with Transitions skipping TRANSITION folders entirely while
preview processed them, causing cutoff at blend boundaries.
- Fix Encode Video Only not finding transition-exported files in trans_dest.
- Add video encoding module (core/video.py) with concat demuxer support.
- Add direct_transition_settings DB table and persistence.
- Add sticky folder types on reorder and placeholder transition slots.
- Add blend-skipped-range counter to export completion dialog.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Rewrite _export_sequence with QProgressDialog, per-file error handling,
cancel support, and continuous seq_00000 naming
- Add folder progress labels to _process_with_transitions
- Extend cleanup_old_links to remove film_temp_*.png temporaries
- Add copy-files checkbox for Docker/remote destinations
- Persist individually removed files across sessions (removed_files table)
- Recover file removals from export history for older sessions
- Save effective folder types in transition exports for reliable restore
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implement standalone PyTorch-based RIFE interpolation that runs in a
dedicated virtual environment to avoid Qt/OpenCV conflicts:
- Add PracticalRifeEnv class for managing venv and subprocess execution
- Add rife_worker.py standalone interpolation script using Practical-RIFE
- Add RIFE_PRACTICAL blending model with ensemble/fast mode settings
- Add UI controls for Practical-RIFE configuration
- Update .gitignore to exclude venv-rife/ directory
The implementation downloads Practical-RIFE models on first use and runs
interpolation in a separate process with proper progress reporting.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Split monolithic symlink.py into modular components:
- config.py: Constants and configuration
- core/: Models, database, blender, manager
- ui/: Main window and widgets
New features included:
- Cross-dissolve transitions with multiple blend methods
- Alpha blend, Optical Flow, and RIFE (AI) interpolation
- Per-folder trim settings with start/end frame control
- Per-transition asymmetric overlap settings
- Folder type overrides (Main/Transition)
- Dual destination folders (sequence + transitions)
- WebP lossless output with compression method setting
- Video and image sequence preview with zoom/pan
- Session resume from destination folder
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
PyQt6 application to create sequenced symlinks for image files.
Features:
- GUI and CLI modes
- Multiple source folder support with drag & drop
- SQLite database for tracking symlink sessions
- Multi-select and reorder files
- Two-column file view (filename + source path)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>