feat(claxedo): colored dot indicators in workspace bar#13638
Closed
kyashrathore wants to merge 21 commits into
Closed
feat(claxedo): colored dot indicators in workspace bar#13638kyashrathore wants to merge 21 commits into
kyashrathore wants to merge 21 commits into
Conversation
The sharedTerminalCache used params.dir (URL parameter) as workspace key, causing cross-SDK contamination when multiple TerminalProviders (route-level and per-DirectoryScope) shared entries with different SDK directories. This made terminal POST use the project root directory while WebSocket connect used the correct worktree directory, resulting in "Session not found" (1008). Fix: use base64Encode(sdk.directory) instead of params.dir so each TerminalProvider scopes to its own SDK's directory. Also includes: - Workspace creation: loading state, wait for bootstrap before navigating - ClaxedoLayout: eager sync init, stale URL session ID cleanup - Workspace bar: popover manager replacing hold-to-delete - Stale worktree cleanup for orphaned sidebar entries - PTY: mkdir cwd for new worktrees, session retention after exit - Server: improved error logging - Agent hooks: atomic file writes via temp file - Xterm: fix dispose order (renderer before xterm) - Desktop build: disable updater/signing without credentials - Dev-local: --print-logs flag, tauri config merge order fix Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The xterm WebGL renderer showed garbled text when clicking the original terminal pane after a split. Root cause: focusing a pane only updated state (focusInTab) without dispatching opencode:terminal-fit, so xterm never ran fit()+refresh() to repaint with correct dimensions. Three fixes applied: - Dispatch opencode:terminal-fit on pane focus (onPointerDown) - FlatPaneRenderer: use <For> with stable leaf IDs instead of recursive <Show keyed> tree, preventing terminal remount on split - Font-nudge on significant (>20%) container width change in ResizeObserver, not just 0→visible transitions - Wire terminalResizeSuspended flag in drag handlers - Dispatch terminal-fit on workspace-level split toggle Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… route dir handleNewTerminal was reading activeWorkspaceId() from the URL, which stays stale after workspace-bar switches. Now GroupPanel resolves dir from wt.default() and handleNewTerminal navigates before requestCreate so the route-level TerminalProvider's sdk.directory matches pendingDir. handleNewSession now finds the group whose worktree.default matches workspaceDir instead of always using topTabs, so sidebar-triggered sessions land in the correct split panel. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Tab bar now scrolls the active tab into view when it changes (e.g., new tab created off-screen). Adds data-tab-id attribute on SortableTab and a createEffect that calls scrollIntoView on activeId change. Worktree color indicators switched from border-b to inset box-shadow so they render inside the element box and aren't clipped by overflow-hidden on parent containers (was invisible on web, visible on desktop Tauri). Dark mode worktree colors updated to brighter variants with full palette coverage (teal, amber, indigo added). Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…-metrics test Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…orMap type Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…panels Two bugs in split panel session creation: 1. Empty secondary panel auto-created a session on any click because the "ensure active tab" effect fired when topTabs.activeId() was null. Fix: return a "__split_empty__" sentinel from topTabs.activeId() when the focused group is empty and in split mode, so the guard holds. 2. The "+" button created sessions in the wrong group when both panels shared the same worktree — groups().find() always returned the first match (primary). Fix: split.groups() now returns the focused group first so find() naturally prefers it. Added split.orderedGroups() for rendering and keyboard navigation that need creation order. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add compact prompt dock for review panel overlay - Fix Windows crash: path separator mismatch in override resolver plugin - Fix all URL.pathname → fileURLToPath() across vite configs and scripts - Replace icon-button diff style toggles with RadioGroup - Fix session panel visibility for new/empty sessions Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The eventFetch condition only used platform.fetch for HTTP non-loopback, skipping HTTPS entirely. On cloud (HTTPS), this meant the SSE connection had no auth headers, causing perpetual "event stream error" failures. Changed condition from `http: && !loopback` to just `!loopback` so platform.fetch (which carries JWT on web, handles CORS on desktop) is used for all non-loopback connections regardless of protocol. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… messages on review close Move compact floating prompt from inside per-tab containers to the review area root so it renders regardless of file tree tab or active tab state. Add reactive guard that restores panelMode when the review panel closes while messages are hidden, preventing an empty layout. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The local setup wizard dialog is no longer needed. shouldShowLocalSetup now always returns false, preventing the dialog from ever appearing. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
On Windows, `path.join()` produces backslash paths (`C:\Users\...`) while Vite's alias system uses forward slashes (`C:/Users/...`). Rollup treats these as different modules, causing SolidJS contexts to be duplicated in the bundle. This results in the runtime error: "Server context must be used within a context provider" Changes: - Normalize override paths in `overrideMap` using `normalizePath()` to prevent duplicate module bundling on Windows (critical fix — also affects CI release builds on windows-latest) - Replace `new URL(import.meta.url).pathname` with `import.meta.dir` in build scripts (the former produces `/C:/Users/...` on Windows which breaks `path.resolve`) - Add GNU Rust toolchain detection and sidecar mapping for local development with `x86_64-pc-windows-gnu` - Copy sidecar binary to both GNU and MSVC target names on Windows to handle Tauri bundler target mismatch - Support `--skip-sidecar` flag to skip sidecar build AND bundling Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
fix: Windows build support — path normalization and GNU toolchain
- Disable onboarding/local-setup dialog - Compact prompt visible on all review tabs, auto-restore messages on review close - Windows build support — path normalization and GNU toolchain - Use platform.fetch for SSE event stream on non-loopback URLs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ace bar Makes it immediately obvious which tabs belong to which workspace by showing a small colored dot before each workspace name, matching the worktree color used for tab group bottom borders. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Contributor
|
Thanks for your contribution! This PR doesn't have a linked issue. All PRs must reference an existing issue. Please:
See CONTRIBUTING.md for details. |
Contributor
Author
|
Opened on wrong repo by mistake, closing. |
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.
Summary
DARK_WORKTREE_COLORSandbrightenWorktreeColor()to module scope for reuseTest plan
🤖 Generated with Claude Code