Repository navigation
fix(web): show ACP file reads as workspace-relative paths - #580
Merged
Merged
Conversation
Antigravity, Cursor, and Grok report file reads without a tool name, titled "Read file" with the absolute path as the row detail. The shared tool-row presentation returned nothing for them, so rows fell back to the raw path including the generated worktree directory. Present those reads like Claude's Read, with a path argument that clients shorten relative to the thread's workspace. The web live-row label also uses the presentation for tool-less rows that yield a path, leaving commands and other details untouched.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Antigravity, Cursor, and Grok report file reads without a tool name: the row is titled "Read file" and the absolute path sits in its detail. The shared tool-row presentation returned nothing for that shape, so the work log fell back to the raw path, including the generated worktree directory (
…/worktrees/styal/styal-7c5693d5/apps/…).These reads now present like Claude's
Read: aReadheading with a path argument, which web and mobile already shorten relative to the thread's workspace. Paths outside the workspace (for example Antigravity's own files under the styal data directory) stay absolute.On web, the live (in-progress) row only used the shared presentation for rows with a tool name. It now also uses it for tool-less rows when the presentation yields a path. I first tried applying it to every tool-less row, but that would have relabelled most Codex and ACP commands and searches ("Ran command - …", "Searched web - …"), so it stays limited to paths.
Before and after
Expanded "Read 6 files" group from a real Antigravity thread:
Scope and upstream
This stays out of the provider layer on purpose. Upstream is rewriting orchestration and providers for V2 (pingdotgg#2829) and has already fixed read and search tool presentation there (pingdotgg#13375), which isn't on upstream
mainyet. ChangingAcpRuntimeModel.tsin the fork would collide with that intake, so the logic lives in the fork-onlytoolRowPresentation.tsplus a small condition inMessagesTimeline.logic.ts. Theworkspace-path-presentationledger entry now tracks that upstream fix and covers these files, so this can be removed once V2 lands.ACP searches are still labelled "Searched web" even when they're file searches or page fetches. That's a separate follow-up.
Validation
Edited file - .github/fork-features.ymlinstead ofstyal-223e4030/.github/fork-features.yml). No commands, searches, or other rows changed.liveWorkEntryLabelis covered by a unit test with that row shape. Mobile wasn't opened in a simulator; it uses the same shared presentation, and itsthreadActivitytests pass.vp test runontoolRowPresentation.test.ts,MessagesTimeline.logic.test.ts,MessagesTimeline.test.tsx, and mobilethreadActivity.test.ts; typecheck forapps/webandpackages/shared; ledger validation.Written by an agent (Claude Code, claude-opus-5-5).