diff --git a/.gitignore b/.gitignore index d06cd30..517d3c8 100644 --- a/.gitignore +++ b/.gitignore @@ -169,3 +169,5 @@ kin.db-shm PROGRESS.md node_modules/ web/frontend/dist/ + +.kin_worktrees/ diff --git a/agents/runner.py b/agents/runner.py index b8d02e8..c75ab07 100644 --- a/agents/runner.py +++ b/agents/runner.py @@ -772,6 +772,7 @@ def _is_test_failure(result: dict) -> bool: # Roles that trigger auto-test when project.auto_test_enabled is set _AUTO_TEST_ROLES = {"backend_dev", "frontend_dev"} +_WORKTREE_ROLES = {"backend_dev", "frontend_dev", "debugger"} def _detect_test_command(project_path: str) -> str | None: @@ -1432,7 +1433,6 @@ def run_pipeline( } # Worktree isolation: opt-in per project, for write-capable roles - _WORKTREE_ROLES = {"backend_dev", "frontend_dev", "debugger"} worktree_path = None project_for_wt = models.get_project(conn, task["project_id"]) if not dry_run else None use_worktree = ( diff --git a/web/frontend/src/views/ProjectView.vue b/web/frontend/src/views/ProjectView.vue index 2b8fc17..cd5fa8d 100644 --- a/web/frontend/src/views/ProjectView.vue +++ b/web/frontend/src/views/ProjectView.vue @@ -256,6 +256,24 @@ async function toggleAutoTest() { } } +// Worktrees toggle +const worktrees = ref(false) + +function loadWorktrees() { + worktrees.value = !!(project.value?.worktrees_enabled) +} + +async function toggleWorktrees() { + worktrees.value = !worktrees.value + try { + await api.patchProject(props.id, { worktrees_enabled: worktrees.value }) + if (project.value) project.value = { ...project.value, worktrees_enabled: worktrees.value ? 1 : 0 } + } catch (e: any) { + error.value = e.message + worktrees.value = !worktrees.value + } +} + // Audit const auditLoading = ref(false) const auditResult = ref(null) @@ -483,6 +501,7 @@ async function load() { loadMode() loadAutocommit() loadAutoTest() + loadWorktrees() } catch (e: any) { error.value = e.message } finally { @@ -913,6 +932,14 @@ async function addDecision() { :title="autoTest ? 'Auto-test: on — запускать тесты после pipeline' : 'Auto-test: off'"> {{ autoTest ? '✓ Автотест' : 'Автотест' }} + +