Skip to content

Move Files to the left rail and file tabs into the file view - #58

Merged
BunsDev merged 1 commit into
mainfrom
feat/files-left-rail
Aug 10, 2026
Merged

Move Files to the left rail and file tabs into the file view#58
BunsDev merged 1 commit into
mainfrom
feat/files-left-rail

Conversation

@BunsDev

@BunsDev BunsDev commented Aug 10, 2026

Copy link
Copy Markdown
Member

Two layout moves.

Files moves to the left rail

Files was a right-dock tab sharing space with Git and Web — an explorer parked on the wrong side of the window.

The left rail now carries a Sessions | Files tablist, and the file tree lives under it with its crumb and refresh control in a subbar. The tree renders lazily: switching to the tab is the only thing that touches the filesystem, so the sessions rail never pays for it. Files leaves the dock and its collapsed mini-rail button; Git and Web stay put.

┌─────────┬──────────────┬───────┐
│Sessions │              │ Git   │
│  Files  │    panes     │ Web   │
│─────────│              │       │
│ ▸ src/  │              │       │
└─────────┴──────────────┴───────┘

File tabs move into the file view

#tab-strip was a child of .terminal-area, sitting above both the pane canvas and the file view — so file tabs hovered over terminals in a workspace with no files open. It is now the first child of .file-view, which grows a fifth grid row for it.

Every element id survived both moves (file-tree, files-crumb, files-refresh, tab-strip), so the tree bindings, the refresh handler, and refreshTabs needed no changes.

PANELS drops "files". A layout stored on the old tab falls through to the browser default, which is already the behaviour for an unknown panel name.

Verification

  • npx vitest run1448 passed, 11 skipped, 4 failed.
  • pnpm typecheck — clean.

Three failures are the known environmental baseline on this machine (pnpm version pin; GNU stat shadowing BSD stat); the fourth, cleanTextInput.wrap.interactions, passes in isolation and is a known flake under parallel load. None touch this code.

Two tests were updated, both pinning things deliberately changed here: the dock panel list (now asserts Files left for the sidebar and that the tab strip sits inside the file view) and .file-view's grid row template.

Not verified

The rendered result has not been confirmed. Screenshots and window enumeration are blocked on this machine; --verify only proves the process is alive, and the suite reads source text rather than rendering the page. A prior worktree run in this same session booted to an error while still passing that liveness check, so treat the visual outcome here as unconfirmed until someone loads it.

Built in an isolated worktree off main, because the primary checkout carries another session's in-progress work in these same files.

🤖 Generated with Claude Code

… view

Files was a right-dock tab sharing space with Git and Web, while the file
tab strip sat at the top of the terminal area - above both the pane canvas
and the file view - so file tabs hovered over terminals that had no files
open.

The left rail gains a Sessions | Files tablist and the file tree moves
there, with its crumb and refresh in a subbar. The tree renders lazily:
switching to the tab is the only thing that touches the filesystem, so the
sessions rail does not pay for it. Files leaves the dock and its mini-rail
button; Git and Web stay.

The tab strip becomes the first child of .file-view, which grows a fifth
grid row for it. Every element id survived both moves, so the file tree
bindings, the refresh handler and refreshTabs are untouched.

PANELS drops "files". A layout stored on the old tab falls through to the
browser default, which is the existing behaviour for an unknown panel.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Copilot AI lite review requested due to automatic review settings August 10, 2026 14:01
@vercel

vercel Bot commented Aug 10, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
psyche-build-docs Ready Ready Preview Aug 10, 2026 2:01pm

Copilot AI 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.

Pull request overview

This PR adjusts the Tauri macOS workspace UI layout by moving the file explorer from the right dock into the left sidebar (as a Sessions/Files switcher) and relocating the file tab strip so it only appears within the file view.

Changes:

  • Moved the file tree UI from the right dock panel into the left sidebar under a new “Sessions | Files” switcher.
  • Moved #tab-strip from .terminal-area into .file-view, and updated .file-view grid rows accordingly.
  • Updated tests to reflect the new dock panel set and the updated .file-view layout.

Reviewed changes

Copilot reviewed 5 out of 5 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
native/macos/psyche-build-tauri/web/styles.css Adds sidebar switcher styles and updates .file-view grid rows for the tab strip move.
native/macos/psyche-build-tauri/web/main.js Removes files from right-dock panel plumbing; adds sidebar tab switching with lazy file tree rendering.
native/macos/psyche-build-tauri/web/index.html Moves file-tree markup into the left sidebar and relocates #tab-strip into .file-view; removes Files from the dock.
tests/tauriWorkspacePanels.test.ts Updates expectations for dock panels, sidebar files presence, and tab-strip placement.
tests/tauriWorkspaceEditorIntegration.test.ts Updates the CSS assertion for the new .file-view grid-template-rows.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment on lines +83 to +86
<div class="sidebar-tabs" role="tablist" aria-label="Sidebar sections">
<button class="sidebar-tab is-active" data-sidebar-tab="sessions" type="button" role="tab" aria-selected="true">Sessions</button>
<button class="sidebar-tab" data-sidebar-tab="files" type="button" role="tab" aria-selected="false">Files</button>
</div>
Comment on lines +2090 to +2104
function setSidebarTab(name) {
sidebarTab = name === "files" ? "files" : "sessions";
if (sessionListEl) sessionListEl.hidden = sidebarTab !== "sessions";
if (sidebarFilesEl) sidebarFilesEl.hidden = sidebarTab !== "files";
Array.prototype.forEach.call(
document.querySelectorAll("[data-sidebar-tab]"),
function (btn) {
var active = btn.dataset.sidebarTab === sidebarTab;
btn.classList.toggle("is-active", active);
btn.setAttribute("aria-selected", active ? "true" : "false");
}
);
if (sidebarTab === "files") renderFilesPanel();
return sidebarTab;
}
@BunsDev
BunsDev merged commit 2d1ceeb into main Aug 10, 2026
4 checks passed
@BunsDev
BunsDev deleted the feat/files-left-rail branch August 10, 2026 14:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants