fix: stabilize workspace tabs and worktree status updates#21
Merged
liam-russell merged 12 commits intomainfrom May 8, 2026
Merged
fix: stabilize workspace tabs and worktree status updates#21liam-russell merged 12 commits intomainfrom
liam-russell merged 12 commits intomainfrom
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
This PR addresses several workspace UX regressions by tightening tab gating/rendering rules, stabilizing worktree-status badge updates during deletion, and keeping History/graph data fresh when Git refs change outside the app’s direct operations (e.g. from terminal actions).
Changes:
- Add a
git-refs-changedwatcher event and wire the workspace page to refresh graph/refs when refs change externally. - Disable the Changes tab when no managed worktree is selected, while keeping History and Terminal available at workspace scope.
- Reduce transient/stale Changes badge/status flashes during worktree deletion by ignoring delete-target watcher refreshes and clearing cached counts immediately.
Reviewed changes
Copilot reviewed 8 out of 8 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| tests/worktree-create-sort.test.ts | Adds unit coverage around ref ranking / preferred source ref selection used for worktree creation. |
| src/routes/workspace/+page.svelte | Tab gating/rendering fixes; deletion-time status stabilization; refresh workspace data on git refs change; default remote branch preference for create-source selection. |
| src/lib/sproutgit.ts | Extends RefsResult with defaultRemoteBranch and adds onGitRefsChanged event listener wrapper. |
| src/lib/components/TerminalContainer.svelte | Tweaks auto-spawn behavior to avoid creating a blank default terminal session when a hook launch request exists at mount time. |
| src-tauri/src/watcher.rs | Detects .git ref/HEAD-related changes and emits a new git-refs-changed event; adds unit tests for path matching. |
| src-tauri/src/git/operations.rs | Adds discovery of default remote branch via git symbolic-ref and returns it in RefsResult. |
| src-tauri/src/git/helpers.rs | Registers new GitAction::SymbolicRef (test-only ALL list + label mapping). |
| e2e/specs/daily-workflow.spec.ts | Updates workspace-scope tab expectations and relaxes terminal panel count assertion. |
…igate Windows handle-release latency On Windows CI, background threads (wait-threads for non-interactive hook terminals, stream readers) can hold file handles for 50-500ms after process termination. This causes EBUSY failures when the fixture's post-test cleanup tries to delete test directories. Changes: - E2E fixture cleanup: Add 500ms grace period after process shutdown to allow all background threads to naturally exit and release file handles - Terminal manager: Track non-interactive terminals (spawned via std::process::Command) in a separate set, and ensure wait-threads remove them from tracking when done - This approach relies on OS-level handle release + explicit thread synchronization rather than trying to forcibly kill child processes owned by wait-thread closures This complements the architectural fix from commit a7786dd (reset-before-launch) and should eliminate the remaining EBUSY failures on Windows CI.
…indows
Increase handle-release latency tolerance:
- Fixture cleanup grace period: 500ms → 2000ms
- Allows background threads (wait-threads, stream readers) more time to
cleanly exit and release file handles after process termination
- resetTestDirs pre-cleanup delay: +200ms on Windows only
- Additional buffer before cleanup attempts rmSync, catching any residual
OS file-system cache lock contention
This complements the architectural fix (reset-before-launch) and non-interactive
terminal tracking. Combined, these changes provide multi-layered handle-release
tolerance: 2s post-shutdown grace period + 200ms pre-cleanup delay + existing
45-retry exponential backoff with quarantine fallback.
The previously failing 'auto-closes terminal session...' test now passes locally.
…ktree handles Root cause: processManager.stop() calls TerminateProcess() on the Tauri parent process only. On Windows, child processes spawned by Tauri (PowerShell hook terminals) are NOT in the same Job Object and are NOT killed automatically — they become orphaned with their CWD still pointing into worktree directories. This caused deterministic EBUSY on rmSync in the next test's resetTestDirs() even after multiple seconds of grace period. Fix: before stop(), extract the process PID and run `taskkill /F /T /PID` to kill the full process tree (parent + all descendants). taskkill /F /T is synchronous, so by the time it returns, all child PowerShell processes have been terminated and their CWD handles released. Also reverts the 2s→500ms grace period (the extra 1.5s was compensating for orphaned children that are now killed explicitly) and removes the 200ms Atomics.wait() in resetTestDirs() that was added for the same reason.
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
This PR fixes three workspace regressions around worktree deletion, no-worktree Changes behavior, and tab rendering.
Validation
vite v8.0.10 building ssr environment for production...
�[2K
transforming...✓ 3806 modules transformed.
rendering chunks...
vite v8.0.10 building client environment for production...
�[2K
transforming...✓ 3850 modules transformed.
rendering chunks...
computing gzip size...
.svelte-kit/output/client/_app/version.json 0.02 kB │ gzip: 0.04 kB
.svelte-kit/output/client/_app/immutable/assets/plus-jakarta-sans-vietnamese-400-normal.Cg2kxhWu.woff2 4.09 kB
.svelte-kit/output/client/_app/immutable/assets/space-grotesk-vietnamese-700-normal.DMty7AZE.woff2 4.20 kB
.svelte-kit/output/client/_app/immutable/assets/plus-jakarta-sans-vietnamese-700-normal.CV6qDkkj.woff2 4.26 kB
.svelte-kit/output/client/_app/immutable/assets/plus-jakarta-sans-vietnamese-500-normal.DiU8zqi-.woff2 4.28 kB
.svelte-kit/output/client/_app/immutable/assets/space-grotesk-vietnamese-400-normal.B7xT_GF5.woff2 4.29 kB
.svelte-kit/output/client/app/immutable/assets/space-grotesk-vietnamese-500-normal.BmEvtly.woff2 4.32 kB
.svelte-kit/output/client/_app/immutable/assets/fira-code-symbols2-500-normal.DwsgbIjQ.woff 5.36 kB
.svelte-kit/output/client/_app/immutable/assets/fira-code-greek-ext-400-normal.DR7mBgIM.woff2 5.36 kB
.svelte-kit/output/client/_app/immutable/assets/fira-code-symbols2-400-normal._QEZCEwe.woff 5.37 kB
.svelte-kit/output/client/_app/immutable/assets/fira-code-greek-ext-500-normal.BO3iq16n.woff2 5.45 kB
.svelte-kit/output/client/_app/immutable/assets/space-grotesk-vietnamese-700-normal.Duxec5Rn.woff 5.58 kB
.svelte-kit/output/client/_app/immutable/assets/plus-jakarta-sans-vietnamese-400-normal.B8TCSmUq.woff 5.59 kB
.svelte-kit/output/client/_app/immutable/assets/space-grotesk-vietnamese-500-normal.BTqKIpxg.woff 5.71 kB
.svelte-kit/output/client/_app/immutable/assets/space-grotesk-vietnamese-400-normal.BIWiOVfw.woff 5.72 kB
.svelte-kit/output/client/_app/immutable/assets/plus-jakarta-sans-vietnamese-700-normal.BCh_uG_5.woff 5.77 kB
.svelte-kit/output/client/_app/immutable/assets/plus-jakarta-sans-vietnamese-500-normal.CvE5C8T-.woff 5.78 kB
.svelte-kit/output/client/_app/immutable/assets/fira-code-cyrillic-400-normal.UC0NFL4U.woff2 6.67 kB
.svelte-kit/output/client/_app/immutable/assets/fira-code-cyrillic-500-normal.CX35h3Mg.woff2 6.68 kB
.svelte-kit/output/client/_app/immutable/assets/fira-code-greek-ext-400-normal.DSPUheWg.woff 7.22 kB
.svelte-kit/output/client/_app/immutable/assets/fira-code-greek-ext-500-normal.CMiNLXER.woff 7.28 kB
.svelte-kit/output/client/_app/immutable/assets/fira-code-greek-500-normal.CVO0IRNt.woff2 7.81 kB
.svelte-kit/output/client/_app/immutable/assets/fira-code-greek-400-normal.B2Gh_Y8s.woff2 7.83 kB
.svelte-kit/output/client/_app/immutable/assets/fira-code-latin-ext-500-normal.Crd9e_oI.woff2 7.84 kB
.svelte-kit/output/client/_app/immutable/assets/fira-code-latin-ext-400-normal.KSMg0QLl.woff2 7.86 kB
.svelte-kit/output/client/_app/immutable/assets/fira-code-cyrillic-400-normal.dc1q3VD7.woff 8.45 kB
.svelte-kit/output/client/_app/immutable/assets/fira-code-cyrillic-500-normal.Bu7VCL72.woff 8.47 kB
.svelte-kit/output/client/_app/immutable/assets/fira-code-greek-400-normal.DobhaxvF.woff 9.99 kB
.svelte-kit/output/client/_app/immutable/assets/fira-code-greek-500-normal.DEXIWiey.woff 9.99 kB
.svelte-kit/output/client/_app/immutable/assets/plus-jakarta-sans-latin-ext-400-normal.D127hM_v.woff2 10.59 kB
.svelte-kit/output/client/_app/immutable/assets/fira-code-latin-ext-400-normal.DG73JjOf.woff 10.61 kB
.svelte-kit/output/client/_app/immutable/assets/fira-code-latin-ext-500-normal.CaANqXjI.woff 10.65 kB
.svelte-kit/output/client/_app/immutable/assets/plus-jakarta-sans-latin-ext-500-normal.9VZagAe1.woff2 10.86 kB
.svelte-kit/output/client/_app/immutable/assets/plus-jakarta-sans-latin-ext-700-normal.BajbvANd.woff2 11.00 kB
.svelte-kit/output/client/_app/immutable/assets/plus-jakarta-sans-latin-400-normal.Dhut76fR.woff2 11.81 kB
.svelte-kit/output/client/_app/immutable/assets/fira-code-cyrillic-ext-400-normal.txZ9Fk_1.woff2 11.96 kB
.svelte-kit/output/client/_app/immutable/assets/space-grotesk-latin-ext-700-normal.BQnZhY3m.woff2 11.99 kB
.svelte-kit/output/client/_app/immutable/assets/fira-code-cyrillic-ext-500-normal.CYRspHgm.woff2 12.00 kB
.svelte-kit/output/client/_app/immutable/assets/plus-jakarta-sans-latin-700-normal.CfpNZvy6.woff2 12.24 kB
.svelte-kit/output/client/_app/immutable/assets/space-grotesk-latin-ext-400-normal.CfP_5XZW.woff2 12.25 kB
.svelte-kit/output/client/_app/immutable/assets/space-grotesk-latin-ext-500-normal.DUe3BAxM.woff2 12.27 kB
.svelte-kit/output/client/_app/immutable/assets/plus-jakarta-sans-latin-500-normal.Bf-nb4oT.woff2 12.31 kB
.svelte-kit/output/client/_app/immutable/assets/space-grotesk-latin-700-normal.RjhwGPKo.woff2 12.84 kB
.svelte-kit/output/client/_app/immutable/assets/space-grotesk-latin-500-normal.lFbtlQH6.woff2 13.31 kB
.svelte-kit/output/client/_app/immutable/assets/space-grotesk-latin-400-normal.CJ-V5oYT.woff2 13.38 kB
.svelte-kit/output/client/_app/immutable/assets/fira-code-cyrillic-ext-400-normal.Buh61xzB.woff 15.10 kB
.svelte-kit/output/client/_app/immutable/assets/fira-code-cyrillic-ext-500-normal.CwtLmSFD.woff 15.10 kB
.svelte-kit/output/client/_app/immutable/assets/plus-jakarta-sans-latin-ext-400-normal.2ppkqaOR.woff 15.31 kB
.svelte-kit/output/client/_app/immutable/assets/plus-jakarta-sans-latin-ext-700-normal.8-d-IyIQ.woff 15.61 kB
.svelte-kit/output/client/_app/immutable/assets/plus-jakarta-sans-latin-ext-500-normal.CqEEAICU.woff 15.62 kB
.svelte-kit/output/client/_app/immutable/assets/plus-jakarta-sans-latin-400-normal.BDKaGhyp.woff 15.72 kB
.svelte-kit/output/client/_app/immutable/assets/plus-jakarta-sans-latin-500-normal.DYtqi0QS.woff 16.12 kB
.svelte-kit/output/client/_app/immutable/assets/plus-jakarta-sans-latin-700-normal.DqEcQeE5.woff 16.13 kB
.svelte-kit/output/client/_app/immutable/assets/space-grotesk-latin-700-normal.CwsQ-cCU.woff 16.41 kB
.svelte-kit/output/client/_app/immutable/assets/space-grotesk-latin-ext-700-normal.HVCqSBdx.woff 16.46 kB
.svelte-kit/output/client/_app/immutable/assets/space-grotesk-latin-ext-400-normal.DRPE3kg4.woff 16.78 kB
.svelte-kit/output/client/_app/immutable/assets/space-grotesk-latin-ext-500-normal.3dgZTiw9.woff 16.78 kB
.svelte-kit/output/client/_app/immutable/assets/space-grotesk-latin-500-normal.CNSSEhBt.woff 16.98 kB
.svelte-kit/output/client/_app/immutable/assets/space-grotesk-latin-400-normal.BnQMeOim.woff 17.00 kB
.svelte-kit/output/client/_app/immutable/assets/fira-code-latin-400-normal.DGosTW8U.woff2 23.31 kB
.svelte-kit/output/client/_app/immutable/assets/fira-code-latin-500-normal.B6gioGu8.woff2 23.31 kB
.svelte-kit/output/client/_app/immutable/assets/fira-code-latin-500-normal.aMLC2AMm.woff 29.83 kB
.svelte-kit/output/client/_app/immutable/assets/fira-code-latin-400-normal.C-QZfXAs.woff 29.83 kB
.svelte-kit/output/client/.vite/manifest.json 36.74 kB │ gzip: 2.89 kB
.svelte-kit/output/client/_app/immutable/assets/UpdateBadge.CYVmOCOS.css 0.06 kB │ gzip: 0.08 kB
.svelte-kit/output/client/_app/immutable/assets/4.BrP-ENHg.css 3.93 kB │ gzip: 1.01 kB
.svelte-kit/output/client/_app/immutable/assets/0.CBdeGM4j.css 89.23 kB │ gzip: 25.74 kB
.svelte-kit/output/client/_app/immutable/chunks/D1hYfEew.js 0.06 kB │ gzip: 0.08 kB
.svelte-kit/output/client/_app/immutable/entry/start.DQRX5yM3.js 0.08 kB │ gzip: 0.09 kB
.svelte-kit/output/client/_app/immutable/chunks/BKU1Z8oa.js 0.10 kB │ gzip: 0.12 kB
.svelte-kit/output/client/_app/immutable/chunks/DZqv_dC7.js 0.23 kB │ gzip: 0.20 kB
.svelte-kit/output/client/_app/immutable/chunks/CFhxshun.js 0.27 kB │ gzip: 0.19 kB
.svelte-kit/output/client/_app/immutable/chunks/Gi20Rd3C.js 0.48 kB │ gzip: 0.34 kB
.svelte-kit/output/client/_app/immutable/nodes/1.Bnhx2U0m.js 0.54 kB │ gzip: 0.36 kB
.svelte-kit/output/client/_app/immutable/chunks/CdmGSNqM.js 0.57 kB │ gzip: 0.35 kB
.svelte-kit/output/client/_app/immutable/chunks/ARvTIDYN.js 0.69 kB │ gzip: 0.42 kB
.svelte-kit/output/client/_app/immutable/chunks/CnFzBFvx.js 1.01 kB │ gzip: 0.49 kB
.svelte-kit/output/client/_app/immutable/chunks/CXAW0ldX.js 1.21 kB │ gzip: 0.50 kB
.svelte-kit/output/client/_app/immutable/chunks/DVi4YMIG.js 1.30 kB │ gzip: 0.61 kB
.svelte-kit/output/client/_app/immutable/chunks/IiNz5THe.js 1.87 kB │ gzip: 0.79 kB
.svelte-kit/output/client/_app/immutable/chunks/Be5pNONu.js 2.38 kB │ gzip: 1.16 kB
.svelte-kit/output/client/_app/immutable/entry/app.Bc6lEgZD.js 3.36 kB │ gzip: 1.47 kB
.svelte-kit/output/client/_app/immutable/chunks/BAniY7mZ.js 4.99 kB │ gzip: 2.04 kB
.svelte-kit/output/client/_app/immutable/nodes/0.CI53D-y0.js 5.23 kB │ gzip: 2.35 kB
.svelte-kit/output/client/_app/immutable/chunks/BHgRwiBj.js 5.50 kB │ gzip: 2.60 kB
.svelte-kit/output/client/_app/immutable/chunks/DgXlYFrw.js 6.68 kB │ gzip: 2.82 kB
.svelte-kit/output/client/_app/immutable/chunks/BaA4BHMv.js 13.17 kB │ gzip: 3.20 kB
.svelte-kit/output/client/_app/immutable/chunks/B3htG9fg.js 26.24 kB │ gzip: 10.21 kB
.svelte-kit/output/client/_app/immutable/nodes/3.Psb5xMDf.js 27.48 kB │ gzip: 7.77 kB
.svelte-kit/output/client/_app/immutable/nodes/2.D8-UKiMR.js 32.61 kB │ gzip: 8.69 kB
.svelte-kit/output/client/_app/immutable/chunks/T7YVBIGk.js 59.10 kB │ gzip: 22.66 kB
.svelte-kit/output/client/_app/immutable/nodes/4.BvOUc-IU.js 220.10 kB │ gzip: 65.67 kB
.svelte-kit/output/client/_app/immutable/chunks/DX3O5aBN.js 340.34 kB │ gzip: 86.29 kB
✓ built in 1.92s
computing gzip size...
.svelte-kit/output/server/_app/immutable/assets/plus-jakarta-sans-vietnamese-400-normal.Cg2kxhWu.woff2 4.09 kB
.svelte-kit/output/server/_app/immutable/assets/space-grotesk-vietnamese-700-normal.DMty7AZE.woff2 4.20 kB
.svelte-kit/output/server/_app/immutable/assets/plus-jakarta-sans-vietnamese-700-normal.CV6qDkkj.woff2 4.26 kB
.svelte-kit/output/server/_app/immutable/assets/plus-jakarta-sans-vietnamese-500-normal.DiU8zqi-.woff2 4.28 kB
.svelte-kit/output/server/_app/immutable/assets/space-grotesk-vietnamese-400-normal.B7xT_GF5.woff2 4.29 kB
.svelte-kit/output/server/app/immutable/assets/space-grotesk-vietnamese-500-normal.BmEvtly.woff2 4.32 kB
.svelte-kit/output/server/_app/immutable/assets/fira-code-symbols2-500-normal.DwsgbIjQ.woff 5.36 kB
.svelte-kit/output/server/_app/immutable/assets/fira-code-greek-ext-400-normal.DR7mBgIM.woff2 5.36 kB
.svelte-kit/output/server/_app/immutable/assets/fira-code-symbols2-400-normal._QEZCEwe.woff 5.37 kB
.svelte-kit/output/server/_app/immutable/assets/fira-code-greek-ext-500-normal.BO3iq16n.woff2 5.45 kB
.svelte-kit/output/server/_app/immutable/assets/space-grotesk-vietnamese-700-normal.Duxec5Rn.woff 5.58 kB
.svelte-kit/output/server/_app/immutable/assets/plus-jakarta-sans-vietnamese-400-normal.B8TCSmUq.woff 5.59 kB
.svelte-kit/output/server/_app/immutable/assets/space-grotesk-vietnamese-500-normal.BTqKIpxg.woff 5.71 kB
.svelte-kit/output/server/_app/immutable/assets/space-grotesk-vietnamese-400-normal.BIWiOVfw.woff 5.72 kB
.svelte-kit/output/server/_app/immutable/assets/plus-jakarta-sans-vietnamese-700-normal.BCh_uG_5.woff 5.77 kB
.svelte-kit/output/server/_app/immutable/assets/plus-jakarta-sans-vietnamese-500-normal.CvE5C8T-.woff 5.78 kB
.svelte-kit/output/server/_app/immutable/assets/fira-code-cyrillic-400-normal.UC0NFL4U.woff2 6.67 kB
.svelte-kit/output/server/_app/immutable/assets/fira-code-cyrillic-500-normal.CX35h3Mg.woff2 6.68 kB
.svelte-kit/output/server/_app/immutable/assets/fira-code-greek-ext-400-normal.DSPUheWg.woff 7.22 kB
.svelte-kit/output/server/_app/immutable/assets/fira-code-greek-ext-500-normal.CMiNLXER.woff 7.28 kB
.svelte-kit/output/server/_app/immutable/assets/fira-code-greek-500-normal.CVO0IRNt.woff2 7.81 kB
.svelte-kit/output/server/_app/immutable/assets/fira-code-greek-400-normal.B2Gh_Y8s.woff2 7.83 kB
.svelte-kit/output/server/_app/immutable/assets/fira-code-latin-ext-500-normal.Crd9e_oI.woff2 7.84 kB
.svelte-kit/output/server/_app/immutable/assets/fira-code-latin-ext-400-normal.KSMg0QLl.woff2 7.86 kB
.svelte-kit/output/server/_app/immutable/assets/fira-code-cyrillic-400-normal.dc1q3VD7.woff 8.45 kB
.svelte-kit/output/server/_app/immutable/assets/fira-code-cyrillic-500-normal.Bu7VCL72.woff 8.47 kB
.svelte-kit/output/server/_app/immutable/assets/fira-code-greek-400-normal.DobhaxvF.woff 9.99 kB
.svelte-kit/output/server/_app/immutable/assets/fira-code-greek-500-normal.DEXIWiey.woff 9.99 kB
.svelte-kit/output/server/_app/immutable/assets/plus-jakarta-sans-latin-ext-400-normal.D127hM_v.woff2 10.59 kB
.svelte-kit/output/server/_app/immutable/assets/fira-code-latin-ext-400-normal.DG73JjOf.woff 10.61 kB
.svelte-kit/output/server/_app/immutable/assets/fira-code-latin-ext-500-normal.CaANqXjI.woff 10.65 kB
.svelte-kit/output/server/_app/immutable/assets/plus-jakarta-sans-latin-ext-500-normal.9VZagAe1.woff2 10.86 kB
.svelte-kit/output/server/_app/immutable/assets/plus-jakarta-sans-latin-ext-700-normal.BajbvANd.woff2 11.00 kB
.svelte-kit/output/server/_app/immutable/assets/plus-jakarta-sans-latin-400-normal.Dhut76fR.woff2 11.81 kB
.svelte-kit/output/server/_app/immutable/assets/fira-code-cyrillic-ext-400-normal.txZ9Fk_1.woff2 11.96 kB
.svelte-kit/output/server/_app/immutable/assets/space-grotesk-latin-ext-700-normal.BQnZhY3m.woff2 11.99 kB
.svelte-kit/output/server/_app/immutable/assets/fira-code-cyrillic-ext-500-normal.CYRspHgm.woff2 12.00 kB
.svelte-kit/output/server/_app/immutable/assets/plus-jakarta-sans-latin-700-normal.CfpNZvy6.woff2 12.24 kB
.svelte-kit/output/server/_app/immutable/assets/space-grotesk-latin-ext-400-normal.CfP_5XZW.woff2 12.25 kB
.svelte-kit/output/server/_app/immutable/assets/space-grotesk-latin-ext-500-normal.DUe3BAxM.woff2 12.27 kB
.svelte-kit/output/server/_app/immutable/assets/plus-jakarta-sans-latin-500-normal.Bf-nb4oT.woff2 12.31 kB
.svelte-kit/output/server/_app/immutable/assets/space-grotesk-latin-700-normal.RjhwGPKo.woff2 12.84 kB
.svelte-kit/output/server/_app/immutable/assets/space-grotesk-latin-500-normal.lFbtlQH6.woff2 13.31 kB
.svelte-kit/output/server/_app/immutable/assets/space-grotesk-latin-400-normal.CJ-V5oYT.woff2 13.38 kB
.svelte-kit/output/server/_app/immutable/assets/fira-code-cyrillic-ext-400-normal.Buh61xzB.woff 15.10 kB
.svelte-kit/output/server/_app/immutable/assets/fira-code-cyrillic-ext-500-normal.CwtLmSFD.woff 15.10 kB
.svelte-kit/output/server/_app/immutable/assets/plus-jakarta-sans-latin-ext-400-normal.2ppkqaOR.woff 15.31 kB
.svelte-kit/output/server/_app/immutable/assets/plus-jakarta-sans-latin-ext-700-normal.8-d-IyIQ.woff 15.61 kB
.svelte-kit/output/server/_app/immutable/assets/plus-jakarta-sans-latin-ext-500-normal.CqEEAICU.woff 15.62 kB
.svelte-kit/output/server/_app/immutable/assets/plus-jakarta-sans-latin-400-normal.BDKaGhyp.woff 15.72 kB
.svelte-kit/output/server/_app/immutable/assets/plus-jakarta-sans-latin-500-normal.DYtqi0QS.woff 16.12 kB
.svelte-kit/output/server/_app/immutable/assets/plus-jakarta-sans-latin-700-normal.DqEcQeE5.woff 16.13 kB
.svelte-kit/output/server/_app/immutable/assets/space-grotesk-latin-700-normal.CwsQ-cCU.woff 16.41 kB
.svelte-kit/output/server/_app/immutable/assets/space-grotesk-latin-ext-700-normal.HVCqSBdx.woff 16.46 kB
.svelte-kit/output/server/_app/immutable/assets/space-grotesk-latin-ext-400-normal.DRPE3kg4.woff 16.78 kB
.svelte-kit/output/server/_app/immutable/assets/space-grotesk-latin-ext-500-normal.3dgZTiw9.woff 16.78 kB
.svelte-kit/output/server/_app/immutable/assets/space-grotesk-latin-500-normal.CNSSEhBt.woff 16.98 kB
.svelte-kit/output/server/_app/immutable/assets/space-grotesk-latin-400-normal.BnQMeOim.woff 17.00 kB
.svelte-kit/output/server/_app/immutable/assets/fira-code-latin-400-normal.DGosTW8U.woff2 23.31 kB
.svelte-kit/output/server/_app/immutable/assets/fira-code-latin-500-normal.B6gioGu8.woff2 23.31 kB
.svelte-kit/output/server/_app/immutable/assets/fira-code-latin-500-normal.aMLC2AMm.woff 29.83 kB
.svelte-kit/output/server/_app/immutable/assets/fira-code-latin-400-normal.C-QZfXAs.woff 29.83 kB
.svelte-kit/output/server/.vite/manifest.json 33.42 kB │ gzip: 2.37 kB
.svelte-kit/output/server/_app/immutable/assets/UpdateBadge.CYVmOCOS.css 0.06 kB │ gzip: 0.08 kB
.svelte-kit/output/server/_app/immutable/assets/_page.BmfB5bmM.css 3.52 kB │ gzip: 0.96 kB
.svelte-kit/output/server/_app/immutable/assets/_layout.Dta3sihx.css 88.82 kB │ gzip: 25.66 kB
.svelte-kit/output/server/entries/pages/_layout.ts.js 0.07 kB │ gzip: 0.09 kB
.svelte-kit/output/server/entries/pages/_error.svelte.js 0.40 kB │ gzip: 0.27 kB
.svelte-kit/output/server/internal.js 0.41 kB │ gzip: 0.20 kB
.svelte-kit/output/server/chunks/git-branch.js 1.74 kB │ gzip: 1.02 kB
.svelte-kit/output/server/chunks/Autocomplete.js 4.41 kB │ gzip: 2.10 kB
.svelte-kit/output/server/entries/pages/_layout.svelte.js 4.77 kB │ gzip: 1.95 kB
.svelte-kit/output/server/chunks/sproutgit.js 5.24 kB │ gzip: 1.88 kB
.svelte-kit/output/server/chunks/exports.js 12.23 kB │ gzip: 3.62 kB
.svelte-kit/output/server/chunks/UpdateBadge.js 15.97 kB │ gzip: 4.02 kB
.svelte-kit/output/server/entries/pages/_page.svelte.js 22.93 kB │ gzip: 5.66 kB
.svelte-kit/output/server/chunks/internal.js 23.84 kB │ gzip: 7.39 kB
.svelte-kit/output/server/chunks/shared.js 24.31 kB │ gzip: 6.52 kB
.svelte-kit/output/server/entries/pages/settings/_page.svelte.js 26.80 kB │ gzip: 6.25 kB
.svelte-kit/output/server/chunks/utils.js 30.36 kB │ gzip: 8.67 kB
.svelte-kit/output/server/remote-entry.js 46.83 kB │ gzip: 9.58 kB
.svelte-kit/output/server/chunks/navigation.js 49.77 kB │ gzip: 14.59 kB
.svelte-kit/output/server/index.js 138.62 kB │ gzip: 35.32 kB
.svelte-kit/output/server/entries/pages/workspace/_page.svelte.js 147.43 kB │ gzip: 31.98 kB
.svelte-kit/output/server/chunks/environment.js 150.00 kB │ gzip: 38.90 kB
✓ built in 4.29s
Run npm run preview to preview your production build locally.
Running 7 tests using 1 worker
✓ 1 e2e/specs/daily-workflow.spec.ts:213:3 › Daily developer workflow › sets up two feature worktrees from a fresh repo (2.3s)
✓ 2 e2e/specs/daily-workflow.spec.ts:272:3 › Daily developer workflow › creates a worktree from release branch without inheriting upstream (1.1s)
✓ 3 e2e/specs/daily-workflow.spec.ts:311:3 › Daily developer workflow › commits changes on each worktree without affecting the other (2.3s)
✓ 4 e2e/specs/daily-workflow.spec.ts:444:3 › Daily developer workflow › deletes a merged bugfix worktree and leaves the ongoing feature intact (7.1s)
✓ 5 e2e/specs/daily-workflow.spec.ts:535:3 › Daily developer workflow › runs an after-create hook and records the run in sqlite (1.1s)
✓ 6 e2e/specs/daily-workflow.spec.ts:607:3 › Daily developer workflow › shows terminal tab at workspace scope before any managed worktree exists (990ms)
✓ 7 e2e/specs/daily-workflow.spec.ts:645:3 › Daily developer workflow › runs multiple terminal hooks after create and opens named terminal sessions (1.3s)
7 passed (1.6m)
To open last HTML report run:
�[36m�[39m
�[36m pnpm exec playwright show-report test-results/playwright-report�[39m
�[36m�[39m
Release Notes
This release fixes workspace tab behavior so terminal and history views stay consistent, and removes misleading temporary change counts when deleting worktrees.