Repository navigation
Conversation
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — This is a narrowly scoped web bug fix that adds indexed resolution for duplicated repo-root-relative paths while preserving existing fallback behavior and covering the new logic with tests. An unresolved High-severity Windows casing finding remains a blocking correctness risk under the repository’s review policy. Notes:
You can add or adjust custom eligibility rules. Learn more. |
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository: pingdotgg/t3code/.coderabbit.yaml Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (3)
Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 6 remain after this review. 📝 WalkthroughWalkthroughWorkspace file lookup now handles bare filenames and paths that repeat the workspace directory prefix. File-panel opens use this lookup when needed and open other paths directly. ChangesWorkspace file lookup
Priority: ⬇️ Low Estimated code review effort: 2 (Simple) | ~10 minutes Change: Bug fix · Severity of issue fixed: Low Merge Risk: ⚪ Minimal · up to The change adds lookup for repeated project prefixes while preserving indexed literal paths. No concrete merge-blocking issue is established; merge after normal checks pass. Architecture SummaryArchitecture risk: 🟡 Medium · up to The change affects 1 system. Changed systems: Architecture concerns Review detailsSystems and components
Before / after behavior
Reliability and maintainability
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
Note
🤖 Claude Opus 5.5 on behalf of Guille
Fixes #14492 (triaged by Julius). Replaces #14506, which was closed for missing UI evidence.
When a project is a subfolder of its git repo (repo at
~/school, project at~/school/physics), agents often print paths the way git does, relative to the repo root:physics/notes/outline.md. The chip joins that onto the project root, so clicking it opensphysics/physics/notes/outline.mdand the files panel fails withFailed to read workspace file 'physics/notes/outline.md'.When a slashed chip's leading segments repeat the project folder's trailing segments (
physics/…inside…/physics), clicking it now asks the workspace index. Bare filenames already use this lookup. The chip opens the stripped path (notes/outline.md) only when that file exists and the literal path does not, so a realphysics/physics/...folder still wins. Windows paths compare case-insensitively and with either separator.This follows the triage note: it checks which candidate exists instead of stripping blindly, and it does not depend on
repositoryIdentity.rootPath, which is null for repos without a remote. "Reveal in file manager" shares the lookup, so it is fixed too.Verification
Reproduced in
vp run dev(worktree state) in an isolated Playwright Chromium. Setup: a remote-less git repo at/tmp/t3repro/schoolwithphysics/notes/outline.mdcommitted, the project registered at/tmp/t3repro/school/physics, and a seeded assistant message containingphysics/notes/outline.md.Before (
main): the chip opensphysics > physics > notes > outline.mdand the read fails.After: the same chip opens
physics > notes > outline.mdwith the file contents.Real nested folder: after creating
physics/physics/notes/outline.mdin the project, the chip opens that nested file, not the stripped one.vp test run apps/web/src/workspaceBasenameLookup.test.ts: 15 passed, including prefix stripping, nested-folder precedence, and Windows casingvp lintandvp fmt --checkon the changed files; typecheck left to CINot checked: Windows itself (unit tests only), desktop and remote connections (same web code path). Unchanged: the chip label, tooltip, and copy-path actions still show the joined path. Mobile is also unchanged, because its chips have no workspace lookup to reuse. A literal file that is gitignored, and so missing from the index, could still lose to a tracked stripped twin.
Made with Claude Opus 5.5 in Claude Code (T3 Code).