fix(web): make file breadcrumbs navigable - #7145

Open
t3-code[bot] wants to merge 7 commits into
mainfrom
fix/clickable-file-breadcrumbs
Open

fix(web): make file breadcrumbs navigable#7145
t3-code[bot] wants to merge 7 commits into
mainfrom
fix/clickable-file-breadcrumbs

Conversation

@t3-code

@t3-codet3-codeBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

problem

The workspace file breadcrumbs looked navigable but were rendered as static text.

fix

  • render every project, directory, and file breadcrumb as an accessible button
  • open the file explorer when a breadcrumb is clicked
  • expand the path, select the clicked item, and scroll it into view
  • teach the UI consistency check to catch invisible selection in flattened tree rows

verification

  • vp run --filter @t3tools/web typecheck
  • vp run --filter @t3tools/web build
  • targeted vp lint on both changed components
  • 8 focused file tests
  • real-app browser checks covered project, file, normal directory, nested intermediate flattened-directory breadcrumbs, and project-root reveal while mounting a hidden explorer

before

static file breadcrumbs

after

clicking a breadcrumb reveals it in the file explorer

Created by GPT-5.6-sol in T3 Code via the Codex harness.

request provenance

Note

Make file breadcrumbs navigable in the file preview panel

  • Replaces non-interactive breadcrumb spans in FilePreviewPanel with clickable buttons that trigger a reveal in the file explorer, opening it if closed.
  • Clicking a breadcrumb crumb calls revealBreadcrumb, persists the explorer open state to local storage, and emits a reveal request with a unique id to FileBrowserPanel.
  • FileBrowserPanel handles the reveal by expanding ancestor directories, selecting the visible target (accounting for flattened single-child directory rows via visibleDirectoryTreePath), and center-scrolling it into view.
  • Project-root breadcrumb clicks scroll the file tree viewport to the top without changing the current selection.
  • Invalid or unavailable paths are acknowledged without mutation once entries finish loading.

Macroscope summarized 692234a.


Note

Medium Risk
Adds non-trivial tree selection/scroll coordination in the virtualized file browser; behavior is localized to file preview/explorer UX with dedicated tests noted in the PR.

Overview
File preview breadcrumbs are now interactive buttons that open the file explorer and request a one-shot tree reveal for the clicked project, directory, or file path.

FilePreviewPanel issues breadcrumbRevealPath / breadcrumbRevealId to FileBrowserPanel and clears the request after handling. FileBrowserPanel expands ancestors, resolves flattened directory rows via visibleDirectoryTreePath, selects the visible target, and scrolls it into view. Project-root reveals scroll the virtualized tree viewport to the top without refocusing the open file; a suppressed selectedPath sync keeps the current file selected without stealing focus or closing search.

The UI consistency agent doc adds guidance for path-driven tree actions and one-shot external reveal requests in virtualized trees.

Reviewed by Cursor Bugbot for commit 692234a. Bugbot is set up for automated code reviews on this repo. Configure here.

Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 16, 2026
Comment threadapps/web/src/components/files/FilePreviewPanel.tsx
@github-actions

github-actionsBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire12.6 KiB12.6 KiB−1 B (−0.0%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.3 KiB−7 B (−0.1%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.3 KiB+6 B (+0.1%)7.8 KiB
CodexLive turn WebSocket decoded51.8 KiB51.8 KiB0 B (0.0%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire12.6 KiB12.6 KiB−20 B (−0.2%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.3 KiB−6 B (−0.1%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.3 KiB−14 B (−0.2%)7.8 KiB
ClaudeLive turn WebSocket decoded52.7 KiB52.7 KiB0 B (0.0%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: d484735 · PR result: 692234a · Source CI: success

Scenario and decoded snapshot size

10 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.

  • Codex decoded thread snapshot: 99.9 KiB
  • Claude decoded thread snapshot: 100.6 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UI consistency review

Two findings on the new breadcrumb reveal affordance.

  1. FilePreviewPanel.tsx — the crumb was converted from <span> to a raw <button> without text-left, so the UA text-align: center now applies to a truncate max-w-40 label. Long path segments lose their leading characters instead of ellipsizing at the end.
  2. FileBrowserPanel.tsx — the breadcrumb reveal effect closes the tree search (and probes focus) before it can abort, so a reveal that resolves to nothing still destroys the user's search/focus context, which the existing selected-path reveal deliberately avoids.

Both are inline below with the smallest expected fix.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FilePreviewPanel.tsx Outdated
Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
@macroscopeapp

macroscopeappBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new interactive feature (navigable breadcrumbs) with significant new state management logic, and modifies a .macroscope/ configuration file. Both factors warrant human review.

You can customize Macroscope's approvability policy. Learn more.

Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the new breadcrumb reveal: the project-root crumb resolves its scroll/focus target from raw array position instead of the tree's visible projection, and clears selection with nothing to select. Directory/file crumbs and the text-left fix from the previous round look good.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx Outdated
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 94a2fd8. Configure here.

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx Outdated
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
Comment thread.macroscope/check-run-agents/ui-consistency.md Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two issues in the new breadcrumb reveal path, both around the project-root ("") reveal and the new suppression gate. See inline comments.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx Outdated
Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding in the new selected-path suppression branch in FileBrowserPanel.tsx. The earlier root-reveal acknowledgement gap is resolved.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the reveal-state scoping in FileBrowserPanel. Everything else in this revision (the deselect before select() in the suppressed branch, the text-left crumb button, acknowledging an exhausted root-reveal retry) looks right.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

fix(web): make file breadcrumbs navigable - #7145

Open
t3-code[bot] wants to merge 7 commits into
mainfrom
fix/clickable-file-breadcrumbs
Open

fix(web): make file breadcrumbs navigable#7145
t3-code[bot] wants to merge 7 commits into
mainfrom
fix/clickable-file-breadcrumbs

Conversation

@t3-code

@t3-codet3-codeBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

problem

The workspace file breadcrumbs looked navigable but were rendered as static text.

fix

  • render every project, directory, and file breadcrumb as an accessible button
  • open the file explorer when a breadcrumb is clicked
  • expand the path, select the clicked item, and scroll it into view
  • teach the UI consistency check to catch invisible selection in flattened tree rows

verification

  • vp run --filter @t3tools/web typecheck
  • vp run --filter @t3tools/web build
  • targeted vp lint on both changed components
  • 8 focused file tests
  • real-app browser checks covered project, file, normal directory, nested intermediate flattened-directory breadcrumbs, and project-root reveal while mounting a hidden explorer

before

static file breadcrumbs

after

clicking a breadcrumb reveals it in the file explorer

Created by GPT-5.6-sol in T3 Code via the Codex harness.

request provenance

Note

Make file breadcrumbs navigable in the file preview panel

  • Replaces non-interactive breadcrumb spans in FilePreviewPanel with clickable buttons that trigger a reveal in the file explorer, opening it if closed.
  • Clicking a breadcrumb crumb calls revealBreadcrumb, persists the explorer open state to local storage, and emits a reveal request with a unique id to FileBrowserPanel.
  • FileBrowserPanel handles the reveal by expanding ancestor directories, selecting the visible target (accounting for flattened single-child directory rows via visibleDirectoryTreePath), and center-scrolling it into view.
  • Project-root breadcrumb clicks scroll the file tree viewport to the top without changing the current selection.
  • Invalid or unavailable paths are acknowledged without mutation once entries finish loading.

Macroscope summarized 692234a.


Note

Medium Risk
Adds non-trivial tree selection/scroll coordination in the virtualized file browser; behavior is localized to file preview/explorer UX with dedicated tests noted in the PR.

Overview
File preview breadcrumbs are now interactive buttons that open the file explorer and request a one-shot tree reveal for the clicked project, directory, or file path.

FilePreviewPanel issues breadcrumbRevealPath / breadcrumbRevealId to FileBrowserPanel and clears the request after handling. FileBrowserPanel expands ancestors, resolves flattened directory rows via visibleDirectoryTreePath, selects the visible target, and scrolls it into view. Project-root reveals scroll the virtualized tree viewport to the top without refocusing the open file; a suppressed selectedPath sync keeps the current file selected without stealing focus or closing search.

The UI consistency agent doc adds guidance for path-driven tree actions and one-shot external reveal requests in virtualized trees.

Reviewed by Cursor Bugbot for commit 692234a. Bugbot is set up for automated code reviews on this repo. Configure here.

Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 16, 2026
Comment threadapps/web/src/components/files/FilePreviewPanel.tsx
@github-actions

github-actionsBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire12.6 KiB12.6 KiB−1 B (−0.0%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.3 KiB−7 B (−0.1%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.3 KiB+6 B (+0.1%)7.8 KiB
CodexLive turn WebSocket decoded51.8 KiB51.8 KiB0 B (0.0%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire12.6 KiB12.6 KiB−20 B (−0.2%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.3 KiB−6 B (−0.1%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.3 KiB−14 B (−0.2%)7.8 KiB
ClaudeLive turn WebSocket decoded52.7 KiB52.7 KiB0 B (0.0%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: d484735 · PR result: 692234a · Source CI: success

Scenario and decoded snapshot size

10 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.

  • Codex decoded thread snapshot: 99.9 KiB
  • Claude decoded thread snapshot: 100.6 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UI consistency review

Two findings on the new breadcrumb reveal affordance.

  1. FilePreviewPanel.tsx — the crumb was converted from <span> to a raw <button> without text-left, so the UA text-align: center now applies to a truncate max-w-40 label. Long path segments lose their leading characters instead of ellipsizing at the end.
  2. FileBrowserPanel.tsx — the breadcrumb reveal effect closes the tree search (and probes focus) before it can abort, so a reveal that resolves to nothing still destroys the user's search/focus context, which the existing selected-path reveal deliberately avoids.

Both are inline below with the smallest expected fix.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FilePreviewPanel.tsx Outdated
Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
@macroscopeapp

macroscopeappBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new interactive feature (navigable breadcrumbs) with significant new state management logic, and modifies a .macroscope/ configuration file. Both factors warrant human review.

You can customize Macroscope's approvability policy. Learn more.

Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the new breadcrumb reveal: the project-root crumb resolves its scroll/focus target from raw array position instead of the tree's visible projection, and clears selection with nothing to select. Directory/file crumbs and the text-left fix from the previous round look good.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx Outdated
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 94a2fd8. Configure here.

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx Outdated
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
Comment thread.macroscope/check-run-agents/ui-consistency.md Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two issues in the new breadcrumb reveal path, both around the project-root ("") reveal and the new suppression gate. See inline comments.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx Outdated
Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding in the new selected-path suppression branch in FileBrowserPanel.tsx. The earlier root-reveal acknowledgement gap is resolved.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the reveal-state scoping in FileBrowserPanel. Everything else in this revision (the deselect before select() in the suppressed branch, the text-left crumb button, acknowledging an exhausted root-reveal retry) looks right.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(web): make file breadcrumbs navigable - #7145

Open
t3-code[bot] wants to merge 7 commits into
mainfrom
fix/clickable-file-breadcrumbs
Open

fix(web): make file breadcrumbs navigable#7145
t3-code[bot] wants to merge 7 commits into
mainfrom
fix/clickable-file-breadcrumbs

Conversation

@t3-code

@t3-codet3-codeBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

problem

The workspace file breadcrumbs looked navigable but were rendered as static text.

fix

  • render every project, directory, and file breadcrumb as an accessible button
  • open the file explorer when a breadcrumb is clicked
  • expand the path, select the clicked item, and scroll it into view
  • teach the UI consistency check to catch invisible selection in flattened tree rows

verification

  • vp run --filter @t3tools/web typecheck
  • vp run --filter @t3tools/web build
  • targeted vp lint on both changed components
  • 8 focused file tests
  • real-app browser checks covered project, file, normal directory, nested intermediate flattened-directory breadcrumbs, and project-root reveal while mounting a hidden explorer

before

static file breadcrumbs

after

clicking a breadcrumb reveals it in the file explorer

Created by GPT-5.6-sol in T3 Code via the Codex harness.

request provenance

Note

Make file breadcrumbs navigable in the file preview panel

  • Replaces non-interactive breadcrumb spans in FilePreviewPanel with clickable buttons that trigger a reveal in the file explorer, opening it if closed.
  • Clicking a breadcrumb crumb calls revealBreadcrumb, persists the explorer open state to local storage, and emits a reveal request with a unique id to FileBrowserPanel.
  • FileBrowserPanel handles the reveal by expanding ancestor directories, selecting the visible target (accounting for flattened single-child directory rows via visibleDirectoryTreePath), and center-scrolling it into view.
  • Project-root breadcrumb clicks scroll the file tree viewport to the top without changing the current selection.
  • Invalid or unavailable paths are acknowledged without mutation once entries finish loading.

Macroscope summarized 692234a.


Note

Medium Risk
Adds non-trivial tree selection/scroll coordination in the virtualized file browser; behavior is localized to file preview/explorer UX with dedicated tests noted in the PR.

Overview
File preview breadcrumbs are now interactive buttons that open the file explorer and request a one-shot tree reveal for the clicked project, directory, or file path.

FilePreviewPanel issues breadcrumbRevealPath / breadcrumbRevealId to FileBrowserPanel and clears the request after handling. FileBrowserPanel expands ancestors, resolves flattened directory rows via visibleDirectoryTreePath, selects the visible target, and scrolls it into view. Project-root reveals scroll the virtualized tree viewport to the top without refocusing the open file; a suppressed selectedPath sync keeps the current file selected without stealing focus or closing search.

The UI consistency agent doc adds guidance for path-driven tree actions and one-shot external reveal requests in virtualized trees.

Reviewed by Cursor Bugbot for commit 692234a. Bugbot is set up for automated code reviews on this repo. Configure here.

Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 16, 2026
Comment threadapps/web/src/components/files/FilePreviewPanel.tsx
@github-actions

github-actionsBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire12.6 KiB12.6 KiB−1 B (−0.0%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.3 KiB−7 B (−0.1%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.3 KiB+6 B (+0.1%)7.8 KiB
CodexLive turn WebSocket decoded51.8 KiB51.8 KiB0 B (0.0%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire12.6 KiB12.6 KiB−20 B (−0.2%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.3 KiB−6 B (−0.1%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.3 KiB−14 B (−0.2%)7.8 KiB
ClaudeLive turn WebSocket decoded52.7 KiB52.7 KiB0 B (0.0%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: d484735 · PR result: 692234a · Source CI: success

Scenario and decoded snapshot size

10 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.

  • Codex decoded thread snapshot: 99.9 KiB
  • Claude decoded thread snapshot: 100.6 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UI consistency review

Two findings on the new breadcrumb reveal affordance.

  1. FilePreviewPanel.tsx — the crumb was converted from <span> to a raw <button> without text-left, so the UA text-align: center now applies to a truncate max-w-40 label. Long path segments lose their leading characters instead of ellipsizing at the end.
  2. FileBrowserPanel.tsx — the breadcrumb reveal effect closes the tree search (and probes focus) before it can abort, so a reveal that resolves to nothing still destroys the user's search/focus context, which the existing selected-path reveal deliberately avoids.

Both are inline below with the smallest expected fix.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FilePreviewPanel.tsx Outdated
Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
@macroscopeapp

macroscopeappBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new interactive feature (navigable breadcrumbs) with significant new state management logic, and modifies a .macroscope/ configuration file. Both factors warrant human review.

You can customize Macroscope's approvability policy. Learn more.

Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the new breadcrumb reveal: the project-root crumb resolves its scroll/focus target from raw array position instead of the tree's visible projection, and clears selection with nothing to select. Directory/file crumbs and the text-left fix from the previous round look good.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx Outdated
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 94a2fd8. Configure here.

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx Outdated
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
Comment thread.macroscope/check-run-agents/ui-consistency.md Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two issues in the new breadcrumb reveal path, both around the project-root ("") reveal and the new suppression gate. See inline comments.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx Outdated
Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding in the new selected-path suppression branch in FileBrowserPanel.tsx. The earlier root-reveal acknowledgement gap is resolved.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the reveal-state scoping in FileBrowserPanel. Everything else in this revision (the deselect before select() in the suppressed branch, the text-left crumb button, acknowledging an exhausted root-reveal retry) looks right.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(web): make file breadcrumbs navigable - #7145

Open
t3-code[bot] wants to merge 7 commits into
mainfrom
fix/clickable-file-breadcrumbs
Open

fix(web): make file breadcrumbs navigable#7145
t3-code[bot] wants to merge 7 commits into
mainfrom
fix/clickable-file-breadcrumbs

Conversation

@t3-code

@t3-codet3-codeBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

problem

The workspace file breadcrumbs looked navigable but were rendered as static text.

fix

  • render every project, directory, and file breadcrumb as an accessible button
  • open the file explorer when a breadcrumb is clicked
  • expand the path, select the clicked item, and scroll it into view
  • teach the UI consistency check to catch invisible selection in flattened tree rows

verification

  • vp run --filter @t3tools/web typecheck
  • vp run --filter @t3tools/web build
  • targeted vp lint on both changed components
  • 8 focused file tests
  • real-app browser checks covered project, file, normal directory, nested intermediate flattened-directory breadcrumbs, and project-root reveal while mounting a hidden explorer

before

static file breadcrumbs

after

clicking a breadcrumb reveals it in the file explorer

Created by GPT-5.6-sol in T3 Code via the Codex harness.

request provenance

Note

Make file breadcrumbs navigable in the file preview panel

  • Replaces non-interactive breadcrumb spans in FilePreviewPanel with clickable buttons that trigger a reveal in the file explorer, opening it if closed.
  • Clicking a breadcrumb crumb calls revealBreadcrumb, persists the explorer open state to local storage, and emits a reveal request with a unique id to FileBrowserPanel.
  • FileBrowserPanel handles the reveal by expanding ancestor directories, selecting the visible target (accounting for flattened single-child directory rows via visibleDirectoryTreePath), and center-scrolling it into view.
  • Project-root breadcrumb clicks scroll the file tree viewport to the top without changing the current selection.
  • Invalid or unavailable paths are acknowledged without mutation once entries finish loading.

Macroscope summarized 692234a.


Note

Medium Risk
Adds non-trivial tree selection/scroll coordination in the virtualized file browser; behavior is localized to file preview/explorer UX with dedicated tests noted in the PR.

Overview
File preview breadcrumbs are now interactive buttons that open the file explorer and request a one-shot tree reveal for the clicked project, directory, or file path.

FilePreviewPanel issues breadcrumbRevealPath / breadcrumbRevealId to FileBrowserPanel and clears the request after handling. FileBrowserPanel expands ancestors, resolves flattened directory rows via visibleDirectoryTreePath, selects the visible target, and scrolls it into view. Project-root reveals scroll the virtualized tree viewport to the top without refocusing the open file; a suppressed selectedPath sync keeps the current file selected without stealing focus or closing search.

The UI consistency agent doc adds guidance for path-driven tree actions and one-shot external reveal requests in virtualized trees.

Reviewed by Cursor Bugbot for commit 692234a. Bugbot is set up for automated code reviews on this repo. Configure here.

Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 16, 2026
Comment threadapps/web/src/components/files/FilePreviewPanel.tsx
@github-actions

github-actionsBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire12.6 KiB12.6 KiB−1 B (−0.0%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.3 KiB−7 B (−0.1%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.3 KiB+6 B (+0.1%)7.8 KiB
CodexLive turn WebSocket decoded51.8 KiB51.8 KiB0 B (0.0%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire12.6 KiB12.6 KiB−20 B (−0.2%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.3 KiB−6 B (−0.1%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.3 KiB−14 B (−0.2%)7.8 KiB
ClaudeLive turn WebSocket decoded52.7 KiB52.7 KiB0 B (0.0%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: d484735 · PR result: 692234a · Source CI: success

Scenario and decoded snapshot size

10 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.

  • Codex decoded thread snapshot: 99.9 KiB
  • Claude decoded thread snapshot: 100.6 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UI consistency review

Two findings on the new breadcrumb reveal affordance.

  1. FilePreviewPanel.tsx — the crumb was converted from <span> to a raw <button> without text-left, so the UA text-align: center now applies to a truncate max-w-40 label. Long path segments lose their leading characters instead of ellipsizing at the end.
  2. FileBrowserPanel.tsx — the breadcrumb reveal effect closes the tree search (and probes focus) before it can abort, so a reveal that resolves to nothing still destroys the user's search/focus context, which the existing selected-path reveal deliberately avoids.

Both are inline below with the smallest expected fix.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FilePreviewPanel.tsx Outdated
Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
@macroscopeapp

macroscopeappBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new interactive feature (navigable breadcrumbs) with significant new state management logic, and modifies a .macroscope/ configuration file. Both factors warrant human review.

You can customize Macroscope's approvability policy. Learn more.

Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the new breadcrumb reveal: the project-root crumb resolves its scroll/focus target from raw array position instead of the tree's visible projection, and clears selection with nothing to select. Directory/file crumbs and the text-left fix from the previous round look good.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx Outdated
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 94a2fd8. Configure here.

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx Outdated
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
Comment thread.macroscope/check-run-agents/ui-consistency.md Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two issues in the new breadcrumb reveal path, both around the project-root ("") reveal and the new suppression gate. See inline comments.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx Outdated
Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding in the new selected-path suppression branch in FileBrowserPanel.tsx. The earlier root-reveal acknowledgement gap is resolved.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the reveal-state scoping in FileBrowserPanel. Everything else in this revision (the deselect before select() in the suppressed branch, the text-left crumb button, acknowledging an exhausted root-reveal retry) looks right.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

fix(web): make file breadcrumbs navigable - #7145

Open
t3-code[bot] wants to merge 7 commits into
mainfrom
fix/clickable-file-breadcrumbs
Open

fix(web): make file breadcrumbs navigable#7145
t3-code[bot] wants to merge 7 commits into
mainfrom
fix/clickable-file-breadcrumbs

Conversation

@t3-code

@t3-codet3-codeBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

problem

The workspace file breadcrumbs looked navigable but were rendered as static text.

fix

  • render every project, directory, and file breadcrumb as an accessible button
  • open the file explorer when a breadcrumb is clicked
  • expand the path, select the clicked item, and scroll it into view
  • teach the UI consistency check to catch invisible selection in flattened tree rows

verification

  • vp run --filter @t3tools/web typecheck
  • vp run --filter @t3tools/web build
  • targeted vp lint on both changed components
  • 8 focused file tests
  • real-app browser checks covered project, file, normal directory, nested intermediate flattened-directory breadcrumbs, and project-root reveal while mounting a hidden explorer

before

static file breadcrumbs

after

clicking a breadcrumb reveals it in the file explorer

Created by GPT-5.6-sol in T3 Code via the Codex harness.

request provenance

Note

Make file breadcrumbs navigable in the file preview panel

  • Replaces non-interactive breadcrumb spans in FilePreviewPanel with clickable buttons that trigger a reveal in the file explorer, opening it if closed.
  • Clicking a breadcrumb crumb calls revealBreadcrumb, persists the explorer open state to local storage, and emits a reveal request with a unique id to FileBrowserPanel.
  • FileBrowserPanel handles the reveal by expanding ancestor directories, selecting the visible target (accounting for flattened single-child directory rows via visibleDirectoryTreePath), and center-scrolling it into view.
  • Project-root breadcrumb clicks scroll the file tree viewport to the top without changing the current selection.
  • Invalid or unavailable paths are acknowledged without mutation once entries finish loading.

Macroscope summarized 692234a.


Note

Medium Risk
Adds non-trivial tree selection/scroll coordination in the virtualized file browser; behavior is localized to file preview/explorer UX with dedicated tests noted in the PR.

Overview
File preview breadcrumbs are now interactive buttons that open the file explorer and request a one-shot tree reveal for the clicked project, directory, or file path.

FilePreviewPanel issues breadcrumbRevealPath / breadcrumbRevealId to FileBrowserPanel and clears the request after handling. FileBrowserPanel expands ancestors, resolves flattened directory rows via visibleDirectoryTreePath, selects the visible target, and scrolls it into view. Project-root reveals scroll the virtualized tree viewport to the top without refocusing the open file; a suppressed selectedPath sync keeps the current file selected without stealing focus or closing search.

The UI consistency agent doc adds guidance for path-driven tree actions and one-shot external reveal requests in virtualized trees.

Reviewed by Cursor Bugbot for commit 692234a. Bugbot is set up for automated code reviews on this repo. Configure here.

Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 16, 2026
Comment threadapps/web/src/components/files/FilePreviewPanel.tsx
@github-actions

github-actionsBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire12.6 KiB12.6 KiB−1 B (−0.0%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.3 KiB−7 B (−0.1%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.3 KiB+6 B (+0.1%)7.8 KiB
CodexLive turn WebSocket decoded51.8 KiB51.8 KiB0 B (0.0%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire12.6 KiB12.6 KiB−20 B (−0.2%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.3 KiB−6 B (−0.1%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.3 KiB−14 B (−0.2%)7.8 KiB
ClaudeLive turn WebSocket decoded52.7 KiB52.7 KiB0 B (0.0%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: d484735 · PR result: 692234a · Source CI: success

Scenario and decoded snapshot size

10 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.

  • Codex decoded thread snapshot: 99.9 KiB
  • Claude decoded thread snapshot: 100.6 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UI consistency review

Two findings on the new breadcrumb reveal affordance.

  1. FilePreviewPanel.tsx — the crumb was converted from <span> to a raw <button> without text-left, so the UA text-align: center now applies to a truncate max-w-40 label. Long path segments lose their leading characters instead of ellipsizing at the end.
  2. FileBrowserPanel.tsx — the breadcrumb reveal effect closes the tree search (and probes focus) before it can abort, so a reveal that resolves to nothing still destroys the user's search/focus context, which the existing selected-path reveal deliberately avoids.

Both are inline below with the smallest expected fix.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FilePreviewPanel.tsx Outdated
Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
@macroscopeapp

macroscopeappBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new interactive feature (navigable breadcrumbs) with significant new state management logic, and modifies a .macroscope/ configuration file. Both factors warrant human review.

You can customize Macroscope's approvability policy. Learn more.

Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the new breadcrumb reveal: the project-root crumb resolves its scroll/focus target from raw array position instead of the tree's visible projection, and clears selection with nothing to select. Directory/file crumbs and the text-left fix from the previous round look good.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx Outdated
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 94a2fd8. Configure here.

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx Outdated
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
Comment thread.macroscope/check-run-agents/ui-consistency.md Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two issues in the new breadcrumb reveal path, both around the project-root ("") reveal and the new suppression gate. See inline comments.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx Outdated
Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding in the new selected-path suppression branch in FileBrowserPanel.tsx. The earlier root-reveal acknowledgement gap is resolved.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the reveal-state scoping in FileBrowserPanel. Everything else in this revision (the deselect before select() in the suppressed branch, the text-left crumb button, acknowledging an exhausted root-reveal retry) looks right.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(web): make file breadcrumbs navigable - #7145

Open
t3-code[bot] wants to merge 7 commits into
mainfrom
fix/clickable-file-breadcrumbs
Open

fix(web): make file breadcrumbs navigable#7145
t3-code[bot] wants to merge 7 commits into
mainfrom
fix/clickable-file-breadcrumbs

Conversation

@t3-code

@t3-codet3-codeBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

problem

The workspace file breadcrumbs looked navigable but were rendered as static text.

fix

  • render every project, directory, and file breadcrumb as an accessible button
  • open the file explorer when a breadcrumb is clicked
  • expand the path, select the clicked item, and scroll it into view
  • teach the UI consistency check to catch invisible selection in flattened tree rows

verification

  • vp run --filter @t3tools/web typecheck
  • vp run --filter @t3tools/web build
  • targeted vp lint on both changed components
  • 8 focused file tests
  • real-app browser checks covered project, file, normal directory, nested intermediate flattened-directory breadcrumbs, and project-root reveal while mounting a hidden explorer

before

static file breadcrumbs

after

clicking a breadcrumb reveals it in the file explorer

Created by GPT-5.6-sol in T3 Code via the Codex harness.

request provenance

Note

Make file breadcrumbs navigable in the file preview panel

  • Replaces non-interactive breadcrumb spans in FilePreviewPanel with clickable buttons that trigger a reveal in the file explorer, opening it if closed.
  • Clicking a breadcrumb crumb calls revealBreadcrumb, persists the explorer open state to local storage, and emits a reveal request with a unique id to FileBrowserPanel.
  • FileBrowserPanel handles the reveal by expanding ancestor directories, selecting the visible target (accounting for flattened single-child directory rows via visibleDirectoryTreePath), and center-scrolling it into view.
  • Project-root breadcrumb clicks scroll the file tree viewport to the top without changing the current selection.
  • Invalid or unavailable paths are acknowledged without mutation once entries finish loading.

Macroscope summarized 692234a.


Note

Medium Risk
Adds non-trivial tree selection/scroll coordination in the virtualized file browser; behavior is localized to file preview/explorer UX with dedicated tests noted in the PR.

Overview
File preview breadcrumbs are now interactive buttons that open the file explorer and request a one-shot tree reveal for the clicked project, directory, or file path.

FilePreviewPanel issues breadcrumbRevealPath / breadcrumbRevealId to FileBrowserPanel and clears the request after handling. FileBrowserPanel expands ancestors, resolves flattened directory rows via visibleDirectoryTreePath, selects the visible target, and scrolls it into view. Project-root reveals scroll the virtualized tree viewport to the top without refocusing the open file; a suppressed selectedPath sync keeps the current file selected without stealing focus or closing search.

The UI consistency agent doc adds guidance for path-driven tree actions and one-shot external reveal requests in virtualized trees.

Reviewed by Cursor Bugbot for commit 692234a. Bugbot is set up for automated code reviews on this repo. Configure here.

Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 16, 2026
Comment threadapps/web/src/components/files/FilePreviewPanel.tsx
@github-actions

github-actionsBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire12.6 KiB12.6 KiB−1 B (−0.0%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.3 KiB−7 B (−0.1%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.3 KiB+6 B (+0.1%)7.8 KiB
CodexLive turn WebSocket decoded51.8 KiB51.8 KiB0 B (0.0%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire12.6 KiB12.6 KiB−20 B (−0.2%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.3 KiB−6 B (−0.1%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.3 KiB−14 B (−0.2%)7.8 KiB
ClaudeLive turn WebSocket decoded52.7 KiB52.7 KiB0 B (0.0%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: d484735 · PR result: 692234a · Source CI: success

Scenario and decoded snapshot size

10 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.

  • Codex decoded thread snapshot: 99.9 KiB
  • Claude decoded thread snapshot: 100.6 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UI consistency review

Two findings on the new breadcrumb reveal affordance.

  1. FilePreviewPanel.tsx — the crumb was converted from <span> to a raw <button> without text-left, so the UA text-align: center now applies to a truncate max-w-40 label. Long path segments lose their leading characters instead of ellipsizing at the end.
  2. FileBrowserPanel.tsx — the breadcrumb reveal effect closes the tree search (and probes focus) before it can abort, so a reveal that resolves to nothing still destroys the user's search/focus context, which the existing selected-path reveal deliberately avoids.

Both are inline below with the smallest expected fix.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FilePreviewPanel.tsx Outdated
Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
@macroscopeapp

macroscopeappBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new interactive feature (navigable breadcrumbs) with significant new state management logic, and modifies a .macroscope/ configuration file. Both factors warrant human review.

You can customize Macroscope's approvability policy. Learn more.

Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the new breadcrumb reveal: the project-root crumb resolves its scroll/focus target from raw array position instead of the tree's visible projection, and clears selection with nothing to select. Directory/file crumbs and the text-left fix from the previous round look good.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx Outdated
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 94a2fd8. Configure here.

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx Outdated
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
Comment thread.macroscope/check-run-agents/ui-consistency.md Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two issues in the new breadcrumb reveal path, both around the project-root ("") reveal and the new suppression gate. See inline comments.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx Outdated
Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding in the new selected-path suppression branch in FileBrowserPanel.tsx. The earlier root-reveal acknowledgement gap is resolved.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the reveal-state scoping in FileBrowserPanel. Everything else in this revision (the deselect before select() in the suppressed branch, the text-left crumb button, acknowledging an exhausted root-reveal retry) looks right.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

fix(web): make file breadcrumbs navigable - #7145

Open
t3-code[bot] wants to merge 7 commits into
mainfrom
fix/clickable-file-breadcrumbs
Open

fix(web): make file breadcrumbs navigable#7145
t3-code[bot] wants to merge 7 commits into
mainfrom
fix/clickable-file-breadcrumbs

Conversation

@t3-code

@t3-codet3-codeBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

problem

The workspace file breadcrumbs looked navigable but were rendered as static text.

fix

  • render every project, directory, and file breadcrumb as an accessible button
  • open the file explorer when a breadcrumb is clicked
  • expand the path, select the clicked item, and scroll it into view
  • teach the UI consistency check to catch invisible selection in flattened tree rows

verification

  • vp run --filter @t3tools/web typecheck
  • vp run --filter @t3tools/web build
  • targeted vp lint on both changed components
  • 8 focused file tests
  • real-app browser checks covered project, file, normal directory, nested intermediate flattened-directory breadcrumbs, and project-root reveal while mounting a hidden explorer

before

static file breadcrumbs

after

clicking a breadcrumb reveals it in the file explorer

Created by GPT-5.6-sol in T3 Code via the Codex harness.

request provenance

Note

Make file breadcrumbs navigable in the file preview panel

  • Replaces non-interactive breadcrumb spans in FilePreviewPanel with clickable buttons that trigger a reveal in the file explorer, opening it if closed.
  • Clicking a breadcrumb crumb calls revealBreadcrumb, persists the explorer open state to local storage, and emits a reveal request with a unique id to FileBrowserPanel.
  • FileBrowserPanel handles the reveal by expanding ancestor directories, selecting the visible target (accounting for flattened single-child directory rows via visibleDirectoryTreePath), and center-scrolling it into view.
  • Project-root breadcrumb clicks scroll the file tree viewport to the top without changing the current selection.
  • Invalid or unavailable paths are acknowledged without mutation once entries finish loading.

Macroscope summarized 692234a.


Note

Medium Risk
Adds non-trivial tree selection/scroll coordination in the virtualized file browser; behavior is localized to file preview/explorer UX with dedicated tests noted in the PR.

Overview
File preview breadcrumbs are now interactive buttons that open the file explorer and request a one-shot tree reveal for the clicked project, directory, or file path.

FilePreviewPanel issues breadcrumbRevealPath / breadcrumbRevealId to FileBrowserPanel and clears the request after handling. FileBrowserPanel expands ancestors, resolves flattened directory rows via visibleDirectoryTreePath, selects the visible target, and scrolls it into view. Project-root reveals scroll the virtualized tree viewport to the top without refocusing the open file; a suppressed selectedPath sync keeps the current file selected without stealing focus or closing search.

The UI consistency agent doc adds guidance for path-driven tree actions and one-shot external reveal requests in virtualized trees.

Reviewed by Cursor Bugbot for commit 692234a. Bugbot is set up for automated code reviews on this repo. Configure here.

Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 16, 2026
Comment threadapps/web/src/components/files/FilePreviewPanel.tsx
@github-actions

github-actionsBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire12.6 KiB12.6 KiB−1 B (−0.0%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.3 KiB−7 B (−0.1%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.3 KiB+6 B (+0.1%)7.8 KiB
CodexLive turn WebSocket decoded51.8 KiB51.8 KiB0 B (0.0%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire12.6 KiB12.6 KiB−20 B (−0.2%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.3 KiB−6 B (−0.1%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.3 KiB−14 B (−0.2%)7.8 KiB
ClaudeLive turn WebSocket decoded52.7 KiB52.7 KiB0 B (0.0%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: d484735 · PR result: 692234a · Source CI: success

Scenario and decoded snapshot size

10 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.

  • Codex decoded thread snapshot: 99.9 KiB
  • Claude decoded thread snapshot: 100.6 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UI consistency review

Two findings on the new breadcrumb reveal affordance.

  1. FilePreviewPanel.tsx — the crumb was converted from <span> to a raw <button> without text-left, so the UA text-align: center now applies to a truncate max-w-40 label. Long path segments lose their leading characters instead of ellipsizing at the end.
  2. FileBrowserPanel.tsx — the breadcrumb reveal effect closes the tree search (and probes focus) before it can abort, so a reveal that resolves to nothing still destroys the user's search/focus context, which the existing selected-path reveal deliberately avoids.

Both are inline below with the smallest expected fix.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FilePreviewPanel.tsx Outdated
Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
@macroscopeapp

macroscopeappBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new interactive feature (navigable breadcrumbs) with significant new state management logic, and modifies a .macroscope/ configuration file. Both factors warrant human review.

You can customize Macroscope's approvability policy. Learn more.

Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the new breadcrumb reveal: the project-root crumb resolves its scroll/focus target from raw array position instead of the tree's visible projection, and clears selection with nothing to select. Directory/file crumbs and the text-left fix from the previous round look good.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx Outdated
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 94a2fd8. Configure here.

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx Outdated
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
Comment thread.macroscope/check-run-agents/ui-consistency.md Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two issues in the new breadcrumb reveal path, both around the project-root ("") reveal and the new suppression gate. See inline comments.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx Outdated
Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding in the new selected-path suppression branch in FileBrowserPanel.tsx. The earlier root-reveal acknowledgement gap is resolved.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the reveal-state scoping in FileBrowserPanel. Everything else in this revision (the deselect before select() in the suppressed branch, the text-left crumb button, acknowledging an exhausted root-reveal retry) looks right.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

fix(web): make file breadcrumbs navigable - #7145

Open
t3-code[bot] wants to merge 7 commits into
mainfrom
fix/clickable-file-breadcrumbs
Open

fix(web): make file breadcrumbs navigable#7145
t3-code[bot] wants to merge 7 commits into
mainfrom
fix/clickable-file-breadcrumbs

Conversation

@t3-code

@t3-codet3-codeBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

problem

The workspace file breadcrumbs looked navigable but were rendered as static text.

fix

  • render every project, directory, and file breadcrumb as an accessible button
  • open the file explorer when a breadcrumb is clicked
  • expand the path, select the clicked item, and scroll it into view
  • teach the UI consistency check to catch invisible selection in flattened tree rows

verification

  • vp run --filter @t3tools/web typecheck
  • vp run --filter @t3tools/web build
  • targeted vp lint on both changed components
  • 8 focused file tests
  • real-app browser checks covered project, file, normal directory, nested intermediate flattened-directory breadcrumbs, and project-root reveal while mounting a hidden explorer

before

static file breadcrumbs

after

clicking a breadcrumb reveals it in the file explorer

Created by GPT-5.6-sol in T3 Code via the Codex harness.

request provenance

Note

Make file breadcrumbs navigable in the file preview panel

  • Replaces non-interactive breadcrumb spans in FilePreviewPanel with clickable buttons that trigger a reveal in the file explorer, opening it if closed.
  • Clicking a breadcrumb crumb calls revealBreadcrumb, persists the explorer open state to local storage, and emits a reveal request with a unique id to FileBrowserPanel.
  • FileBrowserPanel handles the reveal by expanding ancestor directories, selecting the visible target (accounting for flattened single-child directory rows via visibleDirectoryTreePath), and center-scrolling it into view.
  • Project-root breadcrumb clicks scroll the file tree viewport to the top without changing the current selection.
  • Invalid or unavailable paths are acknowledged without mutation once entries finish loading.

Macroscope summarized 692234a.


Note

Medium Risk
Adds non-trivial tree selection/scroll coordination in the virtualized file browser; behavior is localized to file preview/explorer UX with dedicated tests noted in the PR.

Overview
File preview breadcrumbs are now interactive buttons that open the file explorer and request a one-shot tree reveal for the clicked project, directory, or file path.

FilePreviewPanel issues breadcrumbRevealPath / breadcrumbRevealId to FileBrowserPanel and clears the request after handling. FileBrowserPanel expands ancestors, resolves flattened directory rows via visibleDirectoryTreePath, selects the visible target, and scrolls it into view. Project-root reveals scroll the virtualized tree viewport to the top without refocusing the open file; a suppressed selectedPath sync keeps the current file selected without stealing focus or closing search.

The UI consistency agent doc adds guidance for path-driven tree actions and one-shot external reveal requests in virtualized trees.

Reviewed by Cursor Bugbot for commit 692234a. Bugbot is set up for automated code reviews on this repo. Configure here.

Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:L 100-499 changed lines (additions + deletions). labels Aug 16, 2026
Comment threadapps/web/src/components/files/FilePreviewPanel.tsx
@github-actions

github-actionsBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

ProviderMetricMain baselineThis PRImpactPR ceiling
CodexTotal thread wire12.6 KiB12.6 KiB−1 B (−0.0%)15.1 KiB
CodexThread snapshot wire6.3 KiB6.3 KiB−7 B (−0.1%)7.3 KiB
CodexLive turn WebSocket wire6.3 KiB6.3 KiB+6 B (+0.1%)7.8 KiB
CodexLive turn WebSocket decoded51.8 KiB51.8 KiB0 B (0.0%)66.4 KiB
CodexLive turn messages16160 (0.0%)21
ClaudeTotal thread wire12.6 KiB12.6 KiB−20 B (−0.2%)15.1 KiB
ClaudeThread snapshot wire6.3 KiB6.3 KiB−6 B (−0.1%)7.3 KiB
ClaudeLive turn WebSocket wire6.3 KiB6.3 KiB−14 B (−0.2%)7.8 KiB
ClaudeLive turn WebSocket decoded52.7 KiB52.7 KiB0 B (0.0%)66.4 KiB
ClaudeLive turn messages16160 (0.0%)21

Baseline: d484735 · PR result: 692234a · Source CI: success

Scenario and decoded snapshot size

10 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.

  • Codex decoded thread snapshot: 99.9 KiB
  • Claude decoded thread snapshot: 100.6 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

UI consistency review

Two findings on the new breadcrumb reveal affordance.

  1. FilePreviewPanel.tsx — the crumb was converted from <span> to a raw <button> without text-left, so the UA text-align: center now applies to a truncate max-w-40 label. Long path segments lose their leading characters instead of ellipsizing at the end.
  2. FileBrowserPanel.tsx — the breadcrumb reveal effect closes the tree search (and probes focus) before it can abort, so a reveal that resolves to nothing still destroys the user's search/focus context, which the existing selected-path reveal deliberately avoids.

Both are inline below with the smallest expected fix.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FilePreviewPanel.tsx Outdated
Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
@macroscopeapp

macroscopeappBot commented Aug 16, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Needs human review

This PR introduces a new interactive feature (navigable breadcrumbs) with significant new state management logic, and modifies a .macroscope/ configuration file. Both factors warrant human review.

You can customize Macroscope's approvability policy. Learn more.

Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the new breadcrumb reveal: the project-root crumb resolves its scroll/focus target from raw array position instead of the tree's visible projection, and clears selection with nothing to select. Directory/file crumbs and the text-left fix from the previous round look good.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx Outdated
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@cursorcursorBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 94a2fd8. Configure here.

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx Outdated
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
Comment thread.macroscope/check-run-agents/ui-consistency.md Outdated

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Two issues in the new breadcrumb reveal path, both around the project-root ("") reveal and the new suppression gate. See inline comments.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx Outdated
Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding in the new selected-path suppression branch in FileBrowserPanel.tsx. The earlier root-reveal acknowledgement gap is resolved.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>

@macroscopeappmacroscopeappBot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One finding on the reveal-state scoping in FileBrowserPanel. Everything else in this revision (the deselect before select() in the suppressed branch, the text-left crumb button, acknowledging an exhausted root-reveal retry) looks right.

Posted via Macroscope — UI Consistency

Comment threadapps/web/src/components/files/FileBrowserPanel.tsx
Co-authored-by: Exotic <118054752+extoci@users.noreply.github.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L100-499 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants