Skip to content

fix(web): show ACP file reads as workspace-relative paths - #580

Merged
incognitojam merged 2 commits into
mainfrom
styal/hide-worktree-paths
Oct 1, 2026
Merged

incognitojam merged 2 commits into
mainfrom
styal/hide-worktree-paths

Conversation

@incognitojam

Copy link
Copy Markdown
Owner

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: a Read heading 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:

Before After
Before: absolute worktree paths After: workspace-relative paths

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 main yet. Changing AcpRuntimeModel.ts in the fork would collide with that intake, so the logic lives in the fork-only toolRowPresentation.ts plus a small condition in MessagesTimeline.logic.ts. The workspace-path-presentation ledger 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

  • Compared old and new web labels across 601 real work-log entries (Codex, Claude, OpenCode, Antigravity) from a read-only copy of a real database. 9 changed: the 6 Antigravity reads, now workspace-relative, and 3 Codex file edits, which now match their grouped row (Edited file - .github/fork-features.yml instead of styal-223e4030/.github/fork-features.yml). No commands, searches, or other rows changed.
  • Ran a dev server against that copy, opened the Antigravity thread, and expanded the read group (screenshots above).
  • Not exercised live: the in-progress row while an Antigravity turn is running. liveWorkEntryLabel is covered by a unit test with that row shape. Mobile wasn't opened in a simulator; it uses the same shared presentation, and its threadActivity tests pass.
  • vp test run on toolRowPresentation.test.ts, MessagesTimeline.logic.test.ts, MessagesTimeline.test.tsx, and mobile threadActivity.test.ts; typecheck for apps/web and packages/shared; ledger validation.

Written by an agent (Claude Code, claude-opus-5-5).

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.
@github-actions github-actions Bot added the size:S label Oct 1, 2026
@incognitojam
incognitojam merged commit 2e4ae29 into main Oct 1, 2026
24 checks passed
@incognitojam
incognitojam deleted the styal/hide-worktree-paths branch October 1, 2026 15:12
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant