From 74737ac9c7ae83952acdd87e65a570d490fd32a4 Mon Sep 17 00:00:00 2001 From: Ed_ Date: Sun, 8 Mar 2026 21:29:54 -0400 Subject: [PATCH] fix(core): Anchor config.toml path to manual slop root This fixes an issue where config.toml was erroneously saved to the current working directory (e.g. project dir) rather than the global manual slop directory. --- src/aggregate.py | 7 ++++--- src/paths.py | 3 ++- tests/test_paths.py | 4 +++- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/aggregate.py b/src/aggregate.py index 4083e43..b028b68 100644 --- a/src/aggregate.py +++ b/src/aggregate.py @@ -342,16 +342,17 @@ def run(config: dict[str, Any]) -> tuple[str, Path, list[dict[str, Any]]]: def main() -> None: # Load global config to find active project - config_path = Path(os.environ.get("SLOP_CONFIG", "config.toml")) + from src.paths import get_config_path + config_path = get_config_path() if not config_path.exists(): - print("config.toml not found.") + print(f"{config_path} not found.") return with open(config_path, "rb") as f: global_cfg = tomllib.load(f) active_path = global_cfg.get("projects", {}).get("active") if not active_path: - print("No active project found in config.toml.") + print(f"No active project found in {config_path}.") return # Use project_manager to load project (handles history segregation) proj = project_manager.load_project(active_path) diff --git a/src/paths.py b/src/paths.py index 089fa51..fc951c1 100644 --- a/src/paths.py +++ b/src/paths.py @@ -49,7 +49,8 @@ from typing import Optional _RESOLVED: dict[str, Path] = {} def get_config_path() -> Path: - return Path(os.environ.get("SLOP_CONFIG", "config.toml")) + root_dir = Path(__file__).resolve().parent.parent + return Path(os.environ.get("SLOP_CONFIG", root_dir / "config.toml")) def _resolve_path(env_var: str, config_key: str, default: str) -> Path: if env_var in os.environ: diff --git a/tests/test_paths.py b/tests/test_paths.py index 4d98ac7..b5346c3 100644 --- a/tests/test_paths.py +++ b/tests/test_paths.py @@ -13,7 +13,9 @@ def test_default_paths(): assert paths.get_conductor_dir() == Path("conductor") assert paths.get_logs_dir() == Path("logs/sessions") assert paths.get_scripts_dir() == Path("scripts/generated") - assert paths.get_config_path() == Path("config.toml") + # config path should now be an absolute path relative to src/paths.py + root_dir = Path(paths.__file__).resolve().parent.parent + assert paths.get_config_path() == root_dir / "config.toml" assert paths.get_tracks_dir() == Path("conductor/tracks") assert paths.get_archive_dir() == Path("conductor/archive")