feat(web): open files in containing folder - #5366
Conversation
ApprovabilityVerdict: Needs human review This PR introduces a new feature ('open files in containing folder') with a new RPC endpoint, authorization scope, server capability, cross-platform file manager integration, and user-facing context menu functionality. New features introducing user-facing behavior and authorization changes warrant human review. No code changes detected at You can customize Macroscope's approvability policy. Learn more. |
c5ce623 to
71d99ee
Compare
47284e0 to
316bb7d
Compare
0647b60 to
8709943
Compare
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
There was a problem hiding this comment.
reviewed the full diff, existing review threads, and the result merged onto current main (e321667b1). i found no blocking issues.
verified on the merged tree:
- contracts, client-runtime, server, and web typechecks
- external launcher tests: 17 passed
- markdown and file-link menu tests: 51 passed
- rpc routing test: 1 passed
- authorization and environment capability tests: 7 passed
- targeted lint, formatting, and
git diff --check
all github ci on 50f611eaf is green. the pr is technically mergeable. this is a comment review rather than a human approval, so a maintainer approval may still be required by policy.
There was a problem hiding this comment.
correction to my earlier review: two blocking edge cases were found and reproduced after a deeper parser/platform pass.
-
apps/web/src/markdown-links.ts:181-214: the custom href scanner parses markdown-looking text inside inline code.[see \x`](src/real.ts)renders one link tosrc/real.ts, but the scanner returns onlyfake.ts.ChatMarkdown` therefore misses the real file link and routes it as a normal link. -
apps/server/src/process/externalLauncher.ts:241-260: WSL uses Explorer only whenDISPLAYandWAYLAND_DISPLAYare absent. Standard WSLg sets those variables, so the code chooses Linuxxdg-openinstead of the available Windows Explorer. This can hide the action whenxdg-openis absent or invoke a handler that cannot reveal the file. Current WSL coverage tests only the non-WSLg environment.
these should be fixed before merge. the malformed-destination performance concern was also tested, but i could not reproduce quadratic behavior in the actual implementation, so i am not including it as a finding.
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 8d5ba1b. Configure here.
Co-authored-by: Matthew Feroz <136640686+MatthewFeroz@users.noreply.github.com>
8d5ba1b to
bae4628
Compare
|
closing in favor of #6463, the newer and broader implementation with authorization, launcher, contract, client, and test coverage. |


1|## problem
2|
3|file link context menus can open files in editors or copy their paths, but cannot reveal them in the host file manager.
4|
5|## fix
6|
7|- add an "Open in folder" action to markdown file chip context menus
8|- route the action through the thread's environment so remote hosts open their own file manager
9|- reveal files with Finder and Windows Explorer, and open the containing directory on Linux
10|- add launcher and websocket routing coverage
11|
12|## testing
13|
14|-
GOMAXPROCS=2 pnpm --filter @t3tools/contracts typecheck15|-
GOMAXPROCS=2 pnpm --filter @t3tools/client-runtime typecheck16|-
GOMAXPROCS=2 pnpm --filter t3 typecheck17|-
GOMAXPROCS=1 pnpm --filter @t3tools/web typecheck18|-
GOMAXPROCS=2 pnpm --filter t3 exec vp test run src/process/externalLauncher.test.ts19|-
GOMAXPROCS=2 pnpm --filter t3 exec vp test run src/server.test.ts -t "routes websocket rpc shell.revealInFileManager"20|
21|model: gpt-5.4
22|harness: t3bot
23|
24|
Note
Medium Risk
Spawns host processes from user-supplied paths and branches on SSH/WSL/session env; scope is bounded by capability gating and operate-scope auth, with broad platform test coverage.
Overview
Adds Open in folder for chat markdown file links, wired through a new
shell.revealInFileManagerRPC and afileManagerRevealserver capability so clients only show the action when the host can reveal paths.The server’s external launcher now spawns the OS file manager with platform-specific behavior (Finder
-R, Explorer/select,, Linuxxdg-openon the parent folder), including WSL-without-display viaexplorer.exeand UNC paths. File-manager availability is gated on graphical sessions and suppressed for headless Linux, SSH, and Windows service contexts.The web UI routes reveals through the thread’s environment, extends file-link context menus, and tightens markdown link handling (richer destination parsing, AST tagging so only real markdown links become file chips—not raw HTML or nested inline-code false positives).
Reviewed by Cursor Bugbot for commit bae4628. Bugbot is set up for automated code reviews on this repo. Configure here.
40|
41|
Note
Add 'Open in folder' file reveal action to chat file links
shell.revealInFileManagerWebSocket RPC that spawns the OS file manager to reveal or open the containing folder of a file path.fileManagerRevealcapability; the UI gates the 'Open in folder' context menu item on this capability, connection phase, and available editors.open -R, Windows usesexplorer /select,, Linux usesxdg-openon the containing folder, and WSL without a display usesexplorer.exewith UNC paths.Macroscope summarized bae4628.
58|
1|## request provenance
2|
3|- requested by: @MatthewFeroz
4|
5|
6|