Burada CodeShellManager proqramının 11 may 2026 tarixindən bəri buraxılan 6 versiyası var; son versiya: 0.9.0. Hər versiya naşirin öz quraşdırma faylına aparır.
| Versiya | Tarix | Ölçü | Fayllar |
|---|---|---|---|
| 0.9.0Son versiya | 30 sentyabr 2026 | — | 64 bit MSI Versiya qeydləriWhat's Changed
- Bump the nuget group with 2 updates by @dependabot[bot] in #139
- fix(terminal): report the measured size, so a new pane isn't stuck at 80x24 by @mortenaslo in #141
- feat(sessions): restart a session without losing it by @mortenaslo in #140
- fix(terminal): promote the options token only once its metrics are measured by @mortenaslo in #143
- fix(sidebar): sleeping sessions obey the group filter by @mortenaslo in #142
- fix(terminal): don't let onResize force a size report by @AThraen in #145
- feat(sessions): show a bulk restart running, and let it be stopped by @AThraen in #144
Full Changelog: v0.8.0...v0.9.0 |
| 0.8.0 | 8 sentyabr 2026 | — | 64 bit MSI Versiya qeydləri⚠️ Security — please upgrade from v0.7.0
v0.8.0 fixes a command-injection vulnerability present in v0.7.0.
When a session's working folder was inside WSL, CodeShellManager ran git through
wsl.exe … -- git …. The -- form passes the command line to the distro's default login
shell, so shell metacharacters in values CSM did not control were executed rather than
treated as text.
Two ways to reach it:
- Opening a hostile repository. Git branch names legally contain $, `, (, ),
;, & and |. Creating a worktree from such a branch executed its contents inside the
distro. Reproduced end to end: a branch named evil$(id > /tmp/PWNED)x created the file.
- A directory name. The git status poll runs on a timer with no user action, so a folder
named proj$(…) was enough.
Also fixed in the same class: the ssh remote folder, host and user fields — all read from
state.json, which ImportExportService will load from any file you open — could inject
extra ssh options. -oProxyCommand= runs locally, so that one didn't even need a
remote host.
And dropped files: a drag payload could contain a newline, and a newline written to a
terminal is Enter. A single drop could run a command with no keystroke.
Every git and ssh command line is now built as an argument array rather than by string
concatenation, and wsl.exe is invoked with -e, never --. If you are on v0.7.0, upgrade.
Typing no longer freezes with many sessions
If you run a lot of sessions, typing could stop echoing for seconds and then arrive all at
once. Traced at 47 sessions: the UI thread was blocked 42 times, worst case 28.5 seconds.
The cause was not terminal output, which is what everyone assumed. git was being launched
on the UI thread — roughly 94 process creations every 10 seconds. And it was nearly all
overhead: git --version, which touches no repository at all, costs 42ms against
git branch --show-current at 41ms. The work was free; the process launching was the bill.
- The git pipeline now runs off the UI thread entirely
- A .git watcher replaces most polling — branch changes appear faster than before, not slower
- Sessions you are not looking at back off from 10s to 120s
- Sidebar rows repaint once per change instead of three times per poll
WSL sessions
First-class WSL sessions alongside Local and SSH. Pick a distro, optionally a user and a
working folder, and CSM launches a shell inside it with the same session management, git
status, run commands and worktree support as a local session.
Shell integration (OSC 9001)
Programs running in a CSM terminal can push state to the UI:
printf '\e]9001;color=#a6e3a1;git-branch=feat/foo;git-dirty=1;title=my-repo\e\\'
Sets the session accent colour, the sidebar git label and the session title. Full integrator
reference with bash, PowerShell, Python, Node, Rust and Go snippets in
docs/shell-integration.md.
All values are treated as untrusted — length-capped, control characters stripped.
Startup and shutdown you can actually see
- A determinate restore bar with a 7 / 25 counter, because a 25-session restore takes ~131s
and an indeterminate spinner reads the same at session 2 as at session 22
- The shutdown overlay is now visible. It was being composited behind every terminal pane
— WebView2 is an HwndHost, and native child windows draw on top of WPF regardless of
ZIndex. All you saw was a stray line between panes
- Sessions are named and ticked off as they close, and force-disposed ones are marked, not
hidden
Also
- Edit any session's configuration after creation — folder, command, appearance, SSH and WSL
fields — through the same dialog used to create it
- state.json is written atomically with a backup, and recovers from it
- Clicking or typing in a pane makes it the active session
- Shutdown no longer force-disposes healthy sessions; the budget was sized from idle sessions
and busy ones need 2.3–4.7s each
Under the hood
- The solution builds at zero warnings for the first time
- 597 unit tests, up from 314 — and CI now actually runs them, which it |
| 0.7.0 | 6 sentyabr 2026 | — | 64 bit MSI Versiya qeydləriReliability release. Your sessions survive a crash, your terminals stop fighting each other for focus, and closing the app actually waits for your agents to shut down cleanly. Plus you can now reconfigure a session instead of recreating it.
Highlights
Edit any session's configuration — working folder, command, SSH target, appearance. Reachable from the ⚙ on the terminal toolbar, the sidebar right-click menu, and on a sleeping session (which reconfigures it without waking it). The session keeps its id, group, run commands and sidebar position. You're asked before anything restarts, and a Claude session resumes its conversation rather than starting fresh. Thanks @mortenaslo.
Click or type in a pane to make it active. Previously only the sidebar could change the active session, so clicking straight into a terminal left the highlight — and the output priority — on the wrong pane.
state.json is now written atomically, with a backup and recovery. It's rewritten on ~33 different actions, so an interrupted write used to be a realistic way to lose your whole workspace: the truncated file loaded as empty, silently, and the next save overwrote it. Now it swaps a temp file into place, keeps a .bak, falls back to it on a bad read, and logs rather than starting empty in silence.
Shutdown waits properly. Closing with many live agents used to kill most of them without waiting, because a handful of already-dead panes consumed the whole time budget. Now sessions that already exited are recognised immediately, the budget is sized from real measurements, and the overlay stays up while it works.
Faster, quieter startup — the fixed per-session launch delay is gone from several paths, and a thread-pool thread is no longer parked for the lifetime of every terminal.
Fixes
- One SQLite connection was shared by the search index and every session's output writer with no synchronisation, corrupting it during restore. That's serialised now — and the mysterious shutdown NullReferenceException we'd been swallowing stopped appearing with it.
- Post-run URLs are restricted to http/https. They fire automatically on success with no confirmation, and ShellExecute would otherwise launch a local executable or protocol handler.
- --resume honours CLAUDE_CONFIG_DIR.
- Sessions launched through a wrapper prefer PowerShell 7, so your PS7 profile functions resolve.
- A malformed colour scheme in an imported settings file no longer stops a session from starting.
- Binaries report the correct File version — this was fixed in v0.6.0 and is verified again here.
Known issues
- On restore, the input line can be drawn one character into the placeholder text (#116). Cosmetic, and resizing the window or changing layout corrects every pane.
- Restoring many sessions is still slow — roughly 5s each on a loaded machine, dominated by WebView2 creation and agent startup rather than anything the app is waiting on (#82).
Install
winget install UmageAI.CodeShellManager
Or grab the MSI or portable ZIP below. Chocolatey is not updated for this release yet.
What's Changed
- ci(release): auto-sync winget fork and document the real release process by @AThraen in #90
- fix(terminal): make the pane you click or type in the active session by @AThraen in #93
- fix(state): write state.json atomically with a backup and recover from it by @AThraen in #94
- fix(pty): prefer pwsh.exe over powershell.exe in BuildCmdLine wrapper by @AThraen in #68
- refactor(pwsh): one PowerShell locator instead of two disagreeing ones by @AThraen in #95
- perf(startup): gate Claude launches on the config file settling, not a flat 2s by @AThraen in #96
- fix(terminal): don't let mouse movement steal focus or repaint every pane by @AThraen in #99
- Bump the nuget group with 3 updates by @dependabot[bot] in #97
- fix(pty): always fire Exited so a failed DuplicateHandle can't stall shutdown by @AThraen in #100
- perf(shutdown): bound total shutdown time and log per-session timings by @AThraen in #101
- fix(terminal): prom |
| 0.6.0 | 19 avqust 2026 | — | 64 bit MSI Versiya qeydləriMulti-session quality-of-life release: undo an accidental close, fit nine terminals on screen, and give run commands a real shell. Plus a noticeably snappier terminal under load.
Highlights
Recently closed sessions — Ctrl+Shift+T reopens the session you just closed, browser-style. The New Session dialog also lists the last 10 closed sessions for one-click revival. Reopened sessions get a fresh id, so you can close and reopen the same one repeatedly.
> ⚠️ Ctrl+Shift+T used to duplicate the active session. Duplicate has moved to Ctrl+Alt+T.
3×3 grid layout — nine panes for when four isn't enough. Persists across restarts like the other layouts.
Run commands grew up
- PowerShell mode — per-command toggle between a bare process and a PowerShell host. Use it when your command needs pipes, redirection, $env: or cmdlets. Runs via pwsh where available, falling back to powershell.exe.
- Post-run URL — optionally open a URL in your browser when a command exits 0. npm run dev → http://localhost:5173, no alt-tab.
- Output no longer leaks ConPTY's [?9001h bootstrap escape into the drawer.
Launch & shutdown spinners — starting sessions show Starting <cmd>… (or Connecting to <host>… over SSH) until the shell's first output, with an 8-second fallback so a silent command never locks the pane. Closing the window now shows a shutdown overlay instead of freezing.
Faster typing under load — chatty background sessions used to flood the shared UI queue and make the foreground terminal's keystrokes lag behind. Output is now coalesced into a single scheduled post, so the keystroke path stays clear no matter how noisy the other panes are.
Fixes
- --resume now honours CLAUDE_CONFIG_DIR. If you'd set it, resume was reading session ids from a stale ~/.claude and failing with "No conversation found with session ID".
- Fixed a Win32 race where a session's exit could be reported before the child process had actually exited.
- Post-run URLs are now restricted to http/https. They fire automatically with no confirmation, and ShellExecute would otherwise launch a local executable or protocol handler — see #87.
- Updated Microsoft.Data.Sqlite to clear a high-severity advisory (GHSA-2m69-gcr7-jv3q) in a transitive dependency.
- Binaries now report the correct File version. Every release through v0.5.0 stamped 0.3.4.0 regardless of the actual version.
Upgrading
Drop-in over v0.5.0 — your state.json loads unchanged, and the new per-command fields default to previous behaviour. Verified against a real 40-session profile.
Install
winget install UmageAI.CodeShellManager
# or
choco install codeshellmanager
Or grab the MSI or portable ZIP below.
What's Changed
- feat(release): publish to Chocolatey on release by @AThraen in #49
- fix(chocolatey): pass community verification (log path + PNG icon) by @AThraen in #61
- feat(bundle): low-hanging fruit + tests, refactor, docs by @AThraen in #63
- docs: spinner design spec + doc refresh by @AThraen in #64
- fix(claude): honor CLAUDE_CONFIG_DIR when resolving the resume session id by @AThraen in #85
- perf(terminal): coalesce PTY output posts and unblock the keystroke path by @AThraen in #83
- chore(release): clear NU1903 advisory and silence CS8123 warnings by @AThraen in #86
- fix(run): only ShellExecute http/https post-run URLs by @AThraen in #87
- chore(deps): bump the actions group across 1 directory with 3 updates by @dependabot[bot] in #80
- chore(release): set version to 0.6.0 and unpin FileVersion by @AThraen in #89
Full Changelog: v0.5.0...v0.6.0 |
| 0.5.0 | 15 may 2026 | — | 64 bit MSI Versiya qeydləriWhat's Changed
- feat: session groups + per-branch worktrees by @mortenaslo in #28
- feat: per-session run commands + sidebar action-icon cleanup by @AThraen in #34
- Stagger Claude restart + show restore loading indicators by @mortenaslo in #37
- Scope grid + remember layout per group (closes #30) by @mortenaslo in #35
- feat: terminal trace setting + shutdown/restore stability fixes by @AThraen in #36
- feat(sidebar): group bulk actions, empty-area quick menu, sort by @mortenaslo in #40
- docs: add winget install instructions and badge by @AThraen in #17
- chore: open-source community health files by @AThraen in #43
- fix(shutdown): defer reclose via Dispatcher so OnClosing yields first by @AThraen in #47
- Bump the nuget group with 6 updates by @dependabot[bot] in #45
- chore(deps): bump the actions group with 4 updates by @dependabot[bot] in #44
- chore(deps): align unit test framework with UITests by @AThraen in #48
New Contributors
- @dependabot[bot] made their first contribution in #45
Full Changelog: v0.4.2...v0.5.0 |
| 0.4.2 | 11 may 2026 | — | 64 bit MSI |