From e48835f7ff71b1c4bccea91f7313606589f9935a Mon Sep 17 00:00:00 2001 From: Ed_ Date: Thu, 19 Mar 2026 19:44:30 -0400 Subject: [PATCH] feat(gui): Add branch discussion action to history entries --- src/app_controller.py | 16 +++++++++++++++- src/gui_2.py | 2 ++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/app_controller.py b/src/app_controller.py index cf267c9..cafd84f 100644 --- a/src/app_controller.py +++ b/src/app_controller.py @@ -2191,8 +2191,22 @@ class AppController: discussions[name] = project_manager.default_discussion() self._switch_discussion(name) - def _rename_discussion(self, old_name: str, new_name: str) -> None: + def _branch_discussion(self, index: int) -> None: + self._flush_disc_entries_to_project() + # Generate a unique branch name + base_name = f"{self.active_discussion}_take" + counter = 1 + new_name = f"{base_name}_{counter}" disc_sec = self.project.get("discussion", {}) + discussions = disc_sec.get("discussions", {}) + while new_name in discussions: + counter += 1 + new_name = f"{base_name}_{counter}" + + project_manager.branch_discussion(self.project, self.active_discussion, new_name, index) + self._switch_discussion(new_name) + + def _rename_discussion(self, old_name: str, new_name: str) -> None: disc_sec = self.project.get("discussion", {}) discussions = disc_sec.get("discussions", {}) if old_name not in discussions: return diff --git a/src/gui_2.py b/src/gui_2.py index a92a532..f97e0c2 100644 --- a/src/gui_2.py +++ b/src/gui_2.py @@ -2479,6 +2479,8 @@ def hello(): imgui.pop_id() break # Break from inner loop, clipper will re-step imgui.same_line() + if imgui.button("Branch"): + self._branch_discussion(i) imgui.same_line() preview = entry["content"].replace("\\n", " ")[:60] if len(entry["content"]) > 60: preview += "..." if not preview.strip() and entry.get("thinking_segments"):