diff --git a/src/app_controller.py b/src/app_controller.py index 21733ff..87433b7 100644 --- a/src/app_controller.py +++ b/src/app_controller.py @@ -1812,7 +1812,6 @@ class AppController: def _cb_project_save(self) -> None: self._flush_to_project() - self._save_active_project() self._flush_to_config() models.save_config(self.config) self._set_status("config saved") @@ -1828,7 +1827,6 @@ class AppController: self._set_status(f"project file not found: {path}") return self._flush_to_project() - self._save_active_project() try: self.project = project_manager.load_project(path) self.active_project_path = path @@ -2006,7 +2004,8 @@ class AppController: def _save_active_project(self) -> None: if self.active_project_path: try: - project_manager.save_project(self.project, self.active_project_path) + cleaned = project_manager.clean_nones(self.project) + project_manager.save_project(cleaned, self.active_project_path) except Exception as e: self._set_status(f"save error: {e}") @@ -2324,6 +2323,9 @@ class AppController: else: mma_sec["active_track"] = None + cleaned_proj = project_manager.clean_nones(proj) + project_manager.save_project(cleaned_proj, self.active_project_path) + def _flush_to_config(self) -> None: self.config["ai"] = { "provider": self.current_provider, @@ -2360,7 +2362,6 @@ class AppController: def _do_generate(self) -> tuple[str, Path, list[dict[str, Any]], str, str]: """Returns (full_md, output_path, file_items, stable_md, discussion_text).""" self._flush_to_project() - self._save_active_project() self._flush_to_config() models.save_config(self.config) track_id = self.active_track.id if self.active_track else None diff --git a/src/gui_2.py b/src/gui_2.py index 1e4ea56..a32d98b 100644 --- a/src/gui_2.py +++ b/src/gui_2.py @@ -344,7 +344,6 @@ class App: if imgui.begin_menu("Project"): if imgui.menu_item("Save All", "", False)[0]: self._flush_to_project() - self._save_active_project() self._flush_to_config() models.save_config(self.config) self.ai_status = "config saved" @@ -409,7 +408,6 @@ class App: self._last_autosave = now try: self._flush_to_project() - self._save_active_project() self._flush_to_config() models.save_config(self.config) except Exception: @@ -1470,7 +1468,6 @@ class App: imgui.same_line() if imgui.button("Save All"): self._flush_to_project() - self._save_active_project() self._flush_to_config() models.save_config(self.config) self.ai_status = "config saved" @@ -2085,7 +2082,6 @@ def hello(): imgui.same_line() if imgui.button("Save"): self._flush_to_project() - self._save_active_project() self._flush_to_config() models.save_config(self.config) self.ai_status = "discussion saved" diff --git a/src/project_manager.py b/src/project_manager.py index 0d866bf..2fa227c 100644 --- a/src/project_manager.py +++ b/src/project_manager.py @@ -196,6 +196,7 @@ def save_project(proj: dict[str, Any], path: Union[str, Path], disc_data: Option disc_data = proj["discussion"] proj = dict(proj) del proj["discussion"] + proj = clean_nones(proj) with open(path, "wb") as f: tomli_w.dump(proj, f) if disc_data: