Skip to content

Surface project Worktree Folder settings#350

Open
parsakhaz wants to merge 1 commit into
mainfrom
issue-340-worktree-folder
Open

Surface project Worktree Folder settings#350
parsakhaz wants to merge 1 commit into
mainfrom
issue-340-worktree-folder

Conversation

@parsakhaz

@parsakhaz parsakhaz commented Jul 22, 2026

Copy link
Copy Markdown
Member

Description

Closes #340.

This makes the existing per-project Worktree Folder setting reachable from each repository row's actions menu by adding a Project Settings item. It reuses the existing ProjectSettings modal and projects.update save path, including the existing worktree_folder behavior rather than introducing a second settings surface.

When a user saves a Worktree Folder for a project, Pane stores that project-level override and future worktrees for that project use the saved folder. Existing worktrees are not moved by this change.

Visual Overview

Before and after overview of the repository menu exposing Project Settings and Worktree Folder

Type of Change

  • Bug fix (non-breaking change which fixes an issue)

Testing

  • pnpm typecheck
  • pnpm lint exits 0; existing repo warnings remain
  • Focused Playwright coverage: pnpm exec playwright test tests/smoke.spec.ts -g "Repository menu opens Project Settings with editable Worktree Folder"

The focused Playwright test opens the repository actions menu, enters Project Settings, edits the Worktree Folder field, saves, and asserts projects.update receives worktree_folder.

CI should execute this coverage because .github/workflows/quality.yml runs xvfb-run -a pnpm test:ci:minimal, and playwright.ci.minimal.config.ts includes smoke.spec.ts.

Checklist

  • My code follows the code style of this project
  • I have performed a self-review of my own code
  • I have added tests that prove my fix is effective or that my feature works
  • I have run pnpm typecheck and pnpm lint locally
  • I have tested the Electron app locally with pnpm electron-dev

Critical Areas Modified

  • Session output handling (requires explicit permission)
  • Timestamp handling
  • State management/IPC events
  • Diff viewer CSS

Codex QA Summary

Status: Pass for PR #350 first-pass QA on branch issue-340-worktree-folder at 26d79347 (base main).

  • UI path exercised: repository overflow menu -> Project Settings -> editable Worktree Folder; save asserted through projects.update with worktree_folder.
  • Persistence/future worktree proof: isolated temp SQLite project persisted worktree_folder, then WorktreeManager.resolveWorkingDirectory created qa-pr-350-future-worktree under the saved custom folder. Marker: agent-e2e-pr350-backend.
  • Checks run: focused Playwright path, screenshot Playwright path, pnpm typecheck, pnpm lint, pnpm run build:main, pnpm run build:frontend, pnpm --filter runpane build, runpane doctor --json, and pnpm electron:rebuild after Node-side native-module testing.
  • Environment notes: pnpm lint exited 0 with existing warnings; RunPane doctor reached installed Pane 2.4.29 and reported no darwin/arm64 dmg in pr-assets, which is unrelated to this PR. Screenshots and full QA evidence are in the marked Codex QA comment.

@parsakhaz

parsakhaz commented Jul 22, 2026

Copy link
Copy Markdown
Member Author

Codex PR Test Automation QA

Status: Pass for PR #350 first-pass QA. Tested branch issue-340-worktree-folder at 26d79347cde4acbacd47351813aedb39b78356c5 against base main.

Test marker: agent-e2e-pr350-backend

What I Tested

  • Repository row overflow menu exposes Project Settings.
  • Project Settings opens from that menu and shows an editable Worktree Folder field.
  • Saving the field sends projects.update with worktree_folder.
  • Isolated backend proof persisted worktree_folder in SQLite and created a future git worktree under that saved custom folder.

Screenshot Evidence

Repository menu and Project Settings
Step Preview
Repository overflow menu Shows the Project Settings item available from the repository row actions menu for QA Repo.
Repository overflow menu with Project Settings item
Worktree Folder edit Shows the Project Settings modal with Worktree Folder edited to /tmp/pr-350-worktrees before save.
Project Settings modal with edited Worktree Folder

Upload manifest: GitHub Release tag pr-assets direct PNG URLs, release metadata verified as content-type: image/png; authenticated GET returned 67,143 and 131,048 bytes with matching SHA-256 checksums. Local copies and the updated manifest are under tmp/pr-350-qa/.

Automated Checks

  • Pass: pnpm exec playwright test tests/smoke.spec.ts -g "Repository menu opens Project Settings with editable Worktree Folder" --reporter=list --output=tmp/pr-350-qa/playwright-focused
  • Pass: temporary screenshot Playwright path via tmp/pr-350-qa/playwright.qa.config.ts
  • Pass: pnpm typecheck
  • Pass: pnpm lint (0 errors; existing warnings remain)
  • Pass: pnpm run build:main
  • Pass: pnpm run build:frontend (existing Browserslist/chunk-size warnings)
  • Pass: pnpm --filter runpane build
  • Pass: pnpm electron:rebuild after the Node-side native-module proof

Persistence / Future Worktree Evidence

Isolated temp repo and temp SQLite database proof wrote tmp/pr-350-qa/backend-persistence-worktree.json:

{
  "marker": "agent-e2e-pr350-backend",
  "projectId": 1,
  "persistedWorktreeFolder": "/var/folders/_g/m1ct2hts759cbkq3sd1kgy5r0000gn/T/pane-pr350-qvhSg5/custom-worktrees",
  "createdWorktreePath": "/var/folders/_g/m1ct2hts759cbkq3sd1kgy5r0000gn/T/pane-pr350-qvhSg5/custom-worktrees/qa-pr-350-future-worktree",
  "branch": "qa-pr-350-future-worktree",
  "baseBranch": "HEAD",
  "baseCommit": "f4d9665563dee90adb3876663931f103654fe51d"
}

Environment Notes / Limits

  • Initial local RunPane wrapper path was absent until pnpm --filter runpane build; after build, runpane doctor --json reached the installed packaged Pane daemon at app version 2.4.29. I did not use that packaged app as PR behavior evidence because it is not this branch.
  • runpane doctor --json reported no darwin/arm64 dmg asset in pr-assets; this is outside PR Surface project Worktree Folder settings #350's repository settings behavior.
  • The backend proof required temporarily rebuilding better-sqlite3-multiple-ciphers for Node 22, then I restored Electron ABI with pnpm electron:rebuild.
  • No production data, real Pane profile, or existing worktrees were mutated.

Remaining human review: optional visual/manual review in a real Electron app session built from this branch; no product failure found in automated/manual first-pass QA.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

"Worktree Folder" project setting exists in code but is not visible/reachable in the Settings UI

1 participant