1ec3abf17a
Replace HistoryTree (DAG with branches, Graphviz rendering) with a flat chronological SnapshotTimeline. New UI features: split-view layout, snapshot compare/diff, cherry-pick restore of individual sequences or fields, auto-snapshots with debounce, and pin/filter support. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
42 lines
1.3 KiB
Python
42 lines
1.3 KiB
Python
from dataclasses import dataclass, field
|
|
from pathlib import Path
|
|
from typing import Any, Callable
|
|
|
|
|
|
@dataclass
|
|
class AppState:
|
|
config: dict
|
|
current_dir: Path
|
|
loaded_file: str | None = None
|
|
last_mtime: float = 0
|
|
data_cache: dict = field(default_factory=dict)
|
|
snippets: dict = field(default_factory=dict)
|
|
file_path: Path | None = None
|
|
restored_indicator: str | None = None
|
|
timeline_selected_id: str | None = None
|
|
live_toggles: dict = field(default_factory=dict)
|
|
show_comfy_monitor: bool = True
|
|
|
|
# Project DB fields
|
|
db: Any = None
|
|
current_project: str = ""
|
|
db_enabled: bool = False
|
|
|
|
# Set at runtime by main.py / tab_comfy_ng.py
|
|
_render_main: Any = None
|
|
_load_file: Callable | None = None
|
|
_main_rendered: bool = False
|
|
_live_checkboxes: dict = field(default_factory=dict)
|
|
_live_refreshables: dict = field(default_factory=dict)
|
|
_src_cache: dict = field(default_factory=lambda: {'data': None, 'batch': [], 'name': None})
|
|
|
|
def create_secondary(self) -> 'AppState':
|
|
return AppState(
|
|
config=self.config,
|
|
current_dir=self.current_dir,
|
|
snippets=self.snippets,
|
|
db=self.db,
|
|
current_project=self.current_project,
|
|
db_enabled=self.db_enabled,
|
|
)
|