Skip to content

feat(phase61): open in editor / show in Finder (Plan 061) - #90

Merged
SuperLogicAI merged 1 commit into
mainfrom
feat/phase-61-open-in-editor
Oct 11, 2026
Merged

SuperLogicAI merged 1 commit into
mainfrom
feat/phase-61-open-in-editor

Conversation

@SuperLogicAI

Copy link
Copy Markdown
Owner

Users who live in VS Code want to see the whole file an agent touched, not just the staged diff, and won't adopt a tool that hides their files. Phase 61 hands files and projects to the user's real editor instead of building one in-app.

  • Add open_in_editor (Rust). Agent-reported paths are untrusted: they're canonicalized and must be regular files inside the project, so .., absolute outside paths, and out-pointing symlinks are rejected. Opens via open -a <editor> with an exit-status check, never the default handler (which would execute .command/.app targets). No capability change.
  • Add the editor_app setting (default Visual Studio Code) with inline error recovery and a "change editor" link.
  • One shared OpenInEditor component in the diff pop-out and on the dashboard project view's path line: Show in Finder · Open in editor · change editor. The empty-diff copy now points to Open in editor for the whole file.
  • Docs: Plan 061, PROGRESS (Phase 61 accepted), TESTING checks 104–110, ROADMAP Windows gap row for the non-macOS fallback, and an IDEAS "Editor-native users" entry (field feedback; VS Code companion parked; markdown editor proposed as Plan 062, not part of this PR).

Validation: macOS built-app checks 104–110 passed, including the exploit check: an executable x.command opened as text in VS Code and TextEdit, and /tmp/pwn was never created. The editor setting survived a restart. Detailed evidence is in docs/TESTING.md.

Automated gates passed on the committed tree: npm run check, npm run opencode:check, npx tsc --noEmit, cargo test --lib (180 passed, 1 ignored, including 3 new resolve_inside tests), cargo clippy --all-targets -- -D warnings, and git diff --check. npm run build passed before the final button-order change, and again after it. No extraction prompt changed, so golden was not run.

Not verified: the non-macOS fallback (opener plugin, detached, so a missing editor may fail silently), which is tracked in the ROADMAP Windows gap table. Codex's UI fixtures left 28 labeled synthetic events for a /private/tmp scratch project in the maintainer's local DB; archive it on the dashboard if it appears.

User's unrelated .logic-loop/board.md edit and the Plan 062 draft are excluded from this PR.

🤖 Generated with Claude Code

https://claude.ai/code/session_014UA3Dk8XywNUyaR3MV5tzP

Hand files and projects to the user's real editor instead of building one.
Agent-reported paths are untrusted, so the Rust command resolves them
inside the project (symlinks and .. followed, regular files only) and
always opens with the named editor via `open -a`, never the default
handler that would execute .command/.app targets.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014UA3Dk8XywNUyaR3MV5tzP
@SuperLogicAI
SuperLogicAI merged commit c5cc736 into main Oct 11, 2026
3 checks passed
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.

1 participant