feat(history): Context snapshotting per discussion/take

This commit is contained in:
2026-05-10 13:38:59 -04:00
parent b4f8633bd6
commit e9eda04a6c
+6
View File
@@ -2597,6 +2597,9 @@ class AppController:
disc_data = discussions[name] disc_data = discussions[name]
with self._disc_entries_lock: with self._disc_entries_lock:
self.disc_entries = models.parse_history_entries(disc_data.get("history", []), self.disc_roles) self.disc_entries = models.parse_history_entries(disc_data.get("history", []), self.disc_roles)
if "context_snapshot" in disc_data:
snapshot_data = disc_data["context_snapshot"]
self.files = [models.FileItem.from_dict(f) if isinstance(f, dict) else models.FileItem(path=str(f)) for f in snapshot_data]
self.ai_status = f"discussion: {name}" self.ai_status = f"discussion: {name}"
def _flush_disc_entries_to_project(self) -> None: def _flush_disc_entries_to_project(self) -> None:
@@ -2612,6 +2615,7 @@ class AppController:
disc_data = discussions.setdefault(self.active_discussion, project_manager.default_discussion()) disc_data = discussions.setdefault(self.active_discussion, project_manager.default_discussion())
disc_data["history"] = history_strings disc_data["history"] = history_strings
disc_data["last_updated"] = project_manager.now_ts() disc_data["last_updated"] = project_manager.now_ts()
disc_data["context_snapshot"] = [f.to_dict() for f in self.files]
def _create_discussion(self, name: str) -> None: def _create_discussion(self, name: str) -> None:
""" """
@@ -2623,6 +2627,8 @@ class AppController:
self.ai_status = f"discussion '{name}' already exists" self.ai_status = f"discussion '{name}' already exists"
return return
discussions[name] = project_manager.default_discussion() discussions[name] = project_manager.default_discussion()
if self.files:
discussions[name]["context_snapshot"] = [f.to_dict() for f in self.files]
self._switch_discussion(name) self._switch_discussion(name)
def _branch_discussion(self, index: int) -> None: def _branch_discussion(self, index: int) -> None: