You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Problem -- After tabs, panes, drag relocation, and pane controls are stable, researchers still need contextual navigation to a sibling file without returning to the Sidebar. The final feature must not introduce a second file-rendering or tab-routing path, and the complete workspace needs one release-grade browser gate.
Approach -- Add a per-pane breadcrumb under the inner tab strip. It resolves an active file's project-relative path and requests Sidebar-visible children through a bounded extension bridge. Selecting a sibling or folder entry routes through the same unique-path open(path, paneId) action used by Sidebar and Chat. This issue also owns the final end-to-end certification across #942 through #945.
Scope -- in: project-relative breadcrumb paths, a request-correlated and workspace-root-bounded visible-children bridge, sibling/folder dropdowns, explicit target-pane routing, loading/error/retry states, and final browser certification. Out: raw arbitrary-path directory access, a second file renderer, draft/scroll/focus ownership, workspace canvas persistence, keyboard-only pane management, and changes to Sidebar single/double-click semantics.
Assumptions -- #942 through #945 are green. Breadcrumb navigation reads layout state and requests visible children; it never creates, destroys, hydrates, or otherwise manages a renderer. The existing extension-side bridge work is re-evaluated against this contract before reuse.
Acceptance Criteria
Every non-empty leaf pane shows a breadcrumb for its active file beneath that leaf's tab strip.
A file inside a known project root shows a project-relative path. A file outside a known root falls back to its final path segments without fabricating a project relationship.
Selecting a breadcrumb segment opens a dropdown of Sidebar-visible children for that exact project-relative directory.
The visible-children bridge accepts only a current workspace-project root plus a traversal-safe relative directory, applies the Sidebar's .git and live files.exclude policy, and returns correlated success or error results.
Selecting a sibling file calls the same unique-path open(path, paneId) route as every other Preview entry point. An already-open path focuses its existing renderer and pane instead of creating a duplicate.
Selecting a folder drills into that folder's visible children without changing the active renderer or workspace layout until a file is selected.
Loading, rejection, and retry states preserve the active renderer and workspace layout. A bridge failure does not clear tabs, panes, or renderer hosts.
A breadcrumb open honors the target pane that owns the breadcrumb, rather than silently routing to another focused pane.
The eight-tab cap is respected when breadcrumb navigation requests a new file; the user sees the same explicit close-a-tab affordance as Sidebar or Chat opens.
Final Playwright coverage proves the complete path: baseline Markdown typing/scroll/save, two retained inner tabs, outer-tab retention, drag relocation with full prospective-pane preview, per-pane controls, breadcrumb sibling navigation, dirty close, and outer-tab DnD non-interference.
The full browser suite runs with provisioned Chromium locally and in CI before another Preview workspace Dev Host build is vendored.
Key Decisions
Breadcrumbs are a navigation client, not a renderer. They discover candidate paths and invoke the established workspace open action. They do not own file content, draft state, scroll state, selection, or a separate preview lifecycle.
Sidebar visibility is authoritative. The app cannot directly reuse the Sidebar webview's tree, so the extension bridge supplies the same filtered child set. Raw SDK directory listing is insufficient because it cannot guarantee the Sidebar's live filtering policy or workspace-root boundary.
Certification is a release gate, not a best-effort smoke test. The prior regression escaped because browser interaction was absent. This issue closes only with repeatable Chromium evidence for every earlier ownership invariant.
Testing Decisions
Add browser coverage for:
project-relative and fallback breadcrumb rendering;
sibling open, folder drill-in, loading, error, and retry;
root-boundary and traversal rejection in extension-host tests;
target-pane routing and no-duplicate behavior when the target file is already open;
the complete cross-slice interaction sequence described in the acceptance criteria.
The final suite must assert real renderer identity and focus/scroll behavior, not only workspace metadata. It is run after each prior slice and serves as the final vendoring gate.
Constraints And Invariants
The bridge enumerates only workspace-project children that the Sidebar would expose.
Breadcrumbs never bypass the eight-tab cap or the unique-path invariant.
No breadcrumb operation stores draft text, restores document scroll, controls CodeMirror, or changes the renderer pool's lifecycle.
This issue does not weaken prior browser assertions to make the final path pass.
Important
Problem -- After tabs, panes, drag relocation, and pane controls are stable, researchers still need contextual navigation to a sibling file without returning to the Sidebar. The final feature must not introduce a second file-rendering or tab-routing path, and the complete workspace needs one release-grade browser gate.
Approach -- Add a per-pane breadcrumb under the inner tab strip. It resolves an active file's project-relative path and requests Sidebar-visible children through a bounded extension bridge. Selecting a sibling or folder entry routes through the same unique-path
open(path, paneId)action used by Sidebar and Chat. This issue also owns the final end-to-end certification across #942 through #945.Scope -- in: project-relative breadcrumb paths, a request-correlated and workspace-root-bounded visible-children bridge, sibling/folder dropdowns, explicit target-pane routing, loading/error/retry states, and final browser certification. Out: raw arbitrary-path directory access, a second file renderer, draft/scroll/focus ownership, workspace canvas persistence, keyboard-only pane management, and changes to Sidebar single/double-click semantics.
Assumptions -- #942 through #945 are green. Breadcrumb navigation reads layout state and requests visible children; it never creates, destroys, hydrates, or otherwise manages a renderer. The existing extension-side bridge work is re-evaluated against this contract before reuse.
Acceptance Criteria
.gitand livefiles.excludepolicy, and returns correlated success or error results.open(path, paneId)route as every other Preview entry point. An already-open path focuses its existing renderer and pane instead of creating a duplicate.Key Decisions
Breadcrumbs are a navigation client, not a renderer. They discover candidate paths and invoke the established workspace open action. They do not own file content, draft state, scroll state, selection, or a separate preview lifecycle.
Sidebar visibility is authoritative. The app cannot directly reuse the Sidebar webview's tree, so the extension bridge supplies the same filtered child set. Raw SDK directory listing is insufficient because it cannot guarantee the Sidebar's live filtering policy or workspace-root boundary.
Certification is a release gate, not a best-effort smoke test. The prior regression escaped because browser interaction was absent. This issue closes only with repeatable Chromium evidence for every earlier ownership invariant.
Testing Decisions
Add browser coverage for:
The final suite must assert real renderer identity and focus/scroll behavior, not only workspace metadata. It is run after each prior slice and serves as the final vendoring gate.
Constraints And Invariants
Source
Part of #940 and ADR 0013. Blocked by #942, #943, #944, and #945. Replaces this issue's former pane-control plan; controls are owned by #945.