Skip to content

Add "Open in…" dropdown for selected item (Finder, Terminal, VS Code, Cursor, Claude Desktop, ChatGPT, Codex, copy path) #3

Description

@trieloff

Summary

Add an "Open in…" dropdown to the content browser for the selected item, offering quick handoff to external tools:

  • Finder — reveal the synced file/folder
  • Terminal — open at the item's local directory
  • VS Code — open the file/folder
  • Cursor — open the file/folder
  • Claude Desktop
  • ChatGPT
  • Codex
  • Copy path — copy the path to the clipboard

Why

Once an item is selected (and synced locally), the natural next step is often to open it somewhere else — edit it in an editor, poke at it in a terminal, or hand it to an AI tool. Today there's no path out of the app; you have to find the synced folder manually.

Suggested placement

Alongside the existing actions in the file-tree panel header (renderPanelHeader in src/renderer/file-tree.js, next to Sync selected… / Review changes…), driven by state.tree.selectedPaths. A single split/dropdown button keeps the header uncluttered.

Implementation notes / open questions

  • Local-path dependency: Finder, Terminal, VS Code, Cursor, and Codex all need a local filesystem path, which only exists after the item has been synced. We'll need to map the selected DA path → local path (via the sync-folder store) and either disable those targets or trigger a sync first when no local copy exists. Copy path could offer either the DA path or the local path.
  • App detection: only show targets for apps that are actually installed (e.g. probe known bundle IDs / app paths on macOS) rather than listing everything.
  • Launch mechanism: Finder/Terminal via shell.openPath / open; editors via their CLI (code, cursor) or bundle ID; AI tools via their URL scheme or app handoff (needs investigation per app).
  • macOS-first is fine given the app is Apple-Silicon-only today.

Acceptance criteria

  • "Open in…" control appears when an item is selected
  • Targets that require a local file are disabled (or trigger a sync) when the item isn't synced
  • Only installed apps are listed
  • "Copy path" copies a sensible path to the clipboard

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions