Move Files to the left rail and file tabs into the file view - #58
Merged
Conversation
… 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>
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
Contributor
There was a problem hiding this comment.
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-stripfrom.terminal-areainto.file-view, and updated.file-viewgrid rows accordingly. - Updated tests to reflect the new dock panel set and the updated
.file-viewlayout.
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; | ||
| } |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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 | Filestablist, 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.File tabs move into the file view
#tab-stripwas 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, andrefreshTabsneeded no changes.PANELSdrops"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 run— 1448 passed, 11 skipped, 4 failed.pnpm typecheck— clean.Three failures are the known environmental baseline on this machine (pnpm version pin; GNU
statshadowing BSDstat); 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;
--verifyonly 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