Commit Graph
22 Commits
Author SHA1 Message Date
EthanfelandClaude Opus 4.5 87ed2f1dfb Merge timeline tabs into single polished tab with adaptive scaling
Combine stable and WIP timeline tabs into one with all features:
view switcher, restore/rename/delete, and data preview panel.
Add adaptive graph spacing based on node count, show full dates
and branch names on node labels, increase label truncation to 25
chars, and drop streamlit-agraph dependency.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 13:10:23 +01:00
EthanfelandClaude Opus 4.5 e6ef69b126 Fix crash when navigating to a folder with no JSON files
st.radio was called with an empty list when no JSON files existed,
causing Streamlit to error and only render the sidebar.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 12:59:15 +01:00
EthanfelandClaude Opus 4.5 8d0e16ac63 Fix missing keys in newly created batch files
Batch creation now seeds one item from DEFAULTS (which includes all
VACE/I2V keys) instead of creating an empty batch_data list.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 12:54:30 +01:00
EthanfelandClaude Opus 4.5 a1bda9a979 Fix StreamlitAPIException when jumping to a favorite folder
Set nav_path_input before the widget renders and use on_change callbacks
instead of modifying widget state after instantiation.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-02 12:52:05 +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 18550005dd Update app.py 2026-01-05 15:21:14 +01:00
Ethanfel b25814f756 Update app.py 2026-01-05 12:51:55 +01:00
ethanfel bc2035eee5 Update app.py 2026-01-03 16:22:26 +01:00
ethanfel 2ed1c8a3cd Update app.py 2026-01-03 16:17:22 +01:00
ethanfel 29335bd4d5 Update app.py 2026-01-03 16:13:26 +01:00
ethanfel 5bd67476bc Update app.py 2026-01-03 16:10:05 +01:00
ethanfel 373242b1a0 Update app.py 2026-01-03 01:06:02 +01:00
ethanfel 607dd193e4 Update app.py 2026-01-02 20:51:39 +01:00
ethanfel 39f24e747c Update app.py 2026-01-02 19:14:48 +01:00
ethanfel 54358f5ec5 Update app.py 2026-01-02 19:08:41 +01:00
ethanfel f80a9746c7 Update app.py 2026-01-02 18:02:15 +01:00
ethanfel cde768e5f4 Update app.py 2026-01-02 16:17:25 +01:00
ethanfel 33d775e751 Update app.py 2026-01-02 13:15:50 +01:00
ethanfel 88c22d583f Update app.py 2026-01-02 13:13:56 +01:00
ethanfel 72c481ee7c Add UI reset token to session state
Added a version token to session state for UI refresh control.
2025-12-31 14:59:25 +01:00
ethanfel 8007bf190f Set up Streamlit app with sidebar and file management
Initialize Streamlit app with sidebar for navigation, snippets management, and JSON file handling.
2025-12-31 14:44:31 +01:00