feat(project): project-level logs and scripts path isolation
This commit is contained in:
+21
-3
@@ -1125,9 +1125,6 @@ class AppController:
|
|||||||
self.ui_separate_tool_calls_panel = False
|
self.ui_separate_tool_calls_panel = False
|
||||||
self.ui_separate_external_tools = False
|
self.ui_separate_external_tools = False
|
||||||
self.config = models.load_config()
|
self.config = models.load_config()
|
||||||
path_info = paths.get_full_path_info()
|
|
||||||
self.ui_logs_dir = str(path_info['logs_dir']['path'])
|
|
||||||
self.ui_scripts_dir = str(path_info['scripts_dir']['path'])
|
|
||||||
theme.load_from_config(self.config)
|
theme.load_from_config(self.config)
|
||||||
ai_cfg = self.config.get("ai", {})
|
ai_cfg = self.config.get("ai", {})
|
||||||
self._current_provider = ai_cfg.get("provider", "gemini")
|
self._current_provider = ai_cfg.get("provider", "gemini")
|
||||||
@@ -1140,6 +1137,27 @@ class AppController:
|
|||||||
self.project_paths = list(projects_cfg.get("paths", []))
|
self.project_paths = list(projects_cfg.get("paths", []))
|
||||||
self.active_project_path = projects_cfg.get("active", "")
|
self.active_project_path = projects_cfg.get("active", "")
|
||||||
self._load_active_project()
|
self._load_active_project()
|
||||||
|
|
||||||
|
# Track 5: Path isolation overrides
|
||||||
|
if self.project and 'paths' in self.project:
|
||||||
|
project_root = Path(self.active_project_path).parent if self.active_project_path else Path.cwd()
|
||||||
|
proj_paths = self.project.get('paths', {})
|
||||||
|
if 'logs_dir' in proj_paths:
|
||||||
|
lpath = Path(proj_paths['logs_dir'])
|
||||||
|
if not lpath.is_absolute():
|
||||||
|
lpath = project_root / lpath
|
||||||
|
os.environ['SLOP_LOGS_DIR'] = str(lpath)
|
||||||
|
if 'scripts_dir' in proj_paths:
|
||||||
|
spath = Path(proj_paths['scripts_dir'])
|
||||||
|
if not spath.is_absolute():
|
||||||
|
spath = project_root / spath
|
||||||
|
os.environ['SLOP_SCRIPTS_DIR'] = str(spath)
|
||||||
|
paths.reset_resolved()
|
||||||
|
|
||||||
|
path_info = paths.get_full_path_info()
|
||||||
|
self.ui_logs_dir = str(path_info['logs_dir']['path'])
|
||||||
|
self.ui_scripts_dir = str(path_info['scripts_dir']['path'])
|
||||||
|
|
||||||
if not self.project or not isinstance(self.project, dict) or "project" not in self.project:
|
if not self.project or not isinstance(self.project, dict) or "project" not in self.project:
|
||||||
name = Path(self.active_project_path).stem if self.active_project_path else "unnamed"
|
name = Path(self.active_project_path).stem if self.active_project_path else "unnamed"
|
||||||
self.project = project_manager.default_project(name)
|
self.project = project_manager.default_project(name)
|
||||||
|
|||||||
Reference in New Issue
Block a user