Skip to content

Commit 9ff24fc

Browse files
committed
docs: document the Update All fixes and release 1.6.1
README covers the shared updates terminal, cancellation, and a troubleshooting entry for an update stuck on a prompt. AGENTS.md records why anything awaiting a terminal command needs a close-listener escape hatch, that buildAgentGroups is now the single grouping source, and that integration tests must not assume an ordering for window.terminals. Bumps package.json, package-lock.json, and CITATION.cff to 1.6.1.
1 parent 30d04de commit 9ff24fc

6 files changed

Lines changed: 66 additions & 13 deletions

File tree

AGENTS.md

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,16 @@ This split is why some files under `src/` have unit tests and others don't:
6060
When adding logic, prefer putting anything that doesn't strictly need the `vscode` API into a pure
6161
module so it's covered by the fast unit suite — the integration suite is comparatively expensive.
6262

63+
`buildAgentGroups` (`agent-view.ts`) is the single source of grouping for **both** the sidebar tree
64+
(group nodes) and the quick pick (separators). It used to be duplicated as a near-identical
65+
`buildAgentSections`, and the two silently drifted; keep the one function and let each surface render
66+
it, so the picker and the tree can't disagree about what belongs where.
67+
68+
Integration tests must not assume an ordering for `vscode.window.terminals`. Asserting on
69+
"the last terminal" is flaky — `superCli.restartSession` deliberately overlaps two terminals, and the
70+
array is not ordered for a test's convenience. Find terminals by name/identity instead, and prefer
71+
`waitForCondition`'s lazy message form to report the actual open terminals when a wait times out.
72+
6373
### `metadata.test.js` guards `package.json`
6474

6575
Many of its assertions are exact `deepEqual` checks against `package.json`'s `contributes` block
@@ -94,13 +104,24 @@ Treat that as a narrow, bounded, already-reviewed exception, not a precedent for
94104

95105
The shell-integration path in `executeCommandWithOptionalShellIntegration` (`terminal.ts`) falls back
96106
to `terminal.sendText` after a 3-second timeout when shell integration doesn't attach in time. sendText
97-
itself has no completion signal at all — callers that need to resolve regardless (`updateAgent`, so a
98-
bulk update never blocks forever on one agent) pass the function's `onFallback` callback and treat
99-
"we sent it" as done. `executeCommandWithOptionalShellIntegration` is exported only so
100-
`test/integration/suite/index.js` can force this branch deterministically, by launching it against a
101-
`cmd.exe` terminal — VS Code's own docs confirm cmd.exe doesn't support shell integration, unlike a
102-
real interactive shell where the fallback would be a timing race. It has no other caller outside
103-
`terminal.ts`; don't remove the export as unused without checking that test first.
107+
itself has no completion signal at all, so callers that must resolve regardless pass the function's
108+
`onFallback` callback and treat "we sent it" as done. `executeCommandWithOptionalShellIntegration` is
109+
exported only so `test/integration/suite/index.js` can force this branch deterministically, by
110+
launching it against a `cmd.exe` terminal — VS Code's own docs confirm cmd.exe doesn't support shell
111+
integration, unlike a real interactive shell where the fallback would be a timing race. It has no
112+
other caller outside `terminal.ts`; don't remove the export as unused without checking that test first.
113+
114+
### Anything awaiting a terminal command must have a non-shell-integration way out
115+
116+
`runAgentUpdate` (`terminal.ts`) resolves on three independent signals: the shell-integration end
117+
event, the `onFallback` path above, and `vscode.window.onDidCloseTerminal`. That third one is not
118+
redundant. Once shell integration attaches, `startExecution` clears the fallback timer, so the *only*
119+
remaining signal is an end event — and a command that never exits (an interactive prompt, a stalled
120+
download) never produces one. Without the close listener the promise stayed pending forever, which is
121+
exactly how `superCli.updateAllAgents` once stranded itself behind a non-cancellable progress
122+
notification (fixed in 1.6.1, regression-tested in the integration suite). Any future code that
123+
`await`s a terminal command needs the same escape hatch, plus a cancellable progress if it loops.
124+
When adding one, verify the test fails without the fix — a test for a hang passes trivially otherwise.
104125

105126
### Renaming or retyping a setting: migrate additively, never clear the old key
106127

CHANGELOG.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,31 @@ All notable changes to this project are documented here. The format is based on
55

66
## [Unreleased]
77

8+
## [1.6.1] - 2026-07-26
9+
10+
### Fixed
11+
12+
- **Update All Agents could hang indefinitely.** An update command that never exits on its own (one
13+
waiting on an interactive prompt, or a stalled download) left the run stuck behind a progress
14+
notification that couldn't be cancelled, silently skipping every remaining agent. Each update now
15+
also settles when its terminal is closed, the progress notification is cancellable, and the run
16+
stops rather than firing the remaining commands into a terminal that is gone. Cancelling stops
17+
Super CLI from starting further updates; a command already running in the terminal is left alone
18+
for you to deal with, which is why the terminal stays open.
19+
20+
### Changed
21+
22+
- **Update All Agents now uses one shared `Super CLI: updates` terminal** instead of opening a
23+
separate terminal per agent, which previously left up to 14 terminals behind on a default install.
24+
An agent configured with its own `env` still gets a dedicated terminal, so its update keeps running
25+
exactly as configured.
26+
- The completion summary now reports failures and early stops, not just the success count.
27+
28+
### Internal
29+
30+
- Unified the sidebar tree and quick pick onto one `buildAgentGroups`, replacing two grouping
31+
functions that had become identical implementations of the same logic.
32+
833
## [1.6.0] - 2026-07-25
934

1035
### Added

CITATION.cff

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,5 @@ authors:
55
- family-names: Gasperini
66
given-names: Michael
77
url: "https://github.com/TheStreamCode/super-cli"
8-
version: "1.6.0"
8+
version: "1.6.1"
99
license: MIT

README.md

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,10 @@ defined explicitly for Windows, macOS, and Linux; WSL deliberately selects the L
9292
update`, `opencode upgrade`, `droid update`, `openclaw update`, `kimi upgrade`). CLIs that update themselves don't
9393
show one. With terminal shell integration available, Super CLI reports whether the update completed
9494
or failed and can bring the update terminal back into focus. **Super CLI: Update All Agents** in the
95-
sidebar toolbar runs every updatable agent's update in sequence, one at a time, skipping any agent
96-
currently believed to be missing from `PATH`.
95+
sidebar toolbar runs every updatable agent's update in sequence, one at a time, in a single shared
96+
**Super CLI: updates** terminal, skipping any agent currently believed to be missing from `PATH`. It
97+
is cancellable at any point, and closing the terminal stops the run — so an update waiting on an
98+
interactive prompt can never strand the rest.
9799
- **Official installation docs.** If a supported CLI isn't found, Super CLI opens that agent's verified
98100
official installation documentation in your browser. It never installs a CLI, runs an installer, or
99101
changes your shell profile.
@@ -201,6 +203,11 @@ settings.
201203
own — no active editor, and more than one folder open in a multi-root workspace. Press Escape to
202204
fall back to the first folder instead, same as every launch before this existed. Restarting a
203205
running session never asks — it reuses that session's original folder directly.
206+
- **Update All Agents seems stuck on one agent.** An update command that waits for input (a
207+
confirmation prompt, a credential) can't complete on its own. Cancel the progress notification, or
208+
close the **Super CLI: updates** terminal — either one ends the run and reports how far it got.
209+
Cancelling stops Super CLI from starting further updates; a command already running in the terminal
210+
keeps going, so check that terminal before closing it.
204211
- **I updated the extension but nothing changed.** Reload the window (**Developer: Reload Window**
205212
from the Command Palette) or restart your editor. Extension code loaded into a running window
206213
is not replaced until the window reloads, even after a newer version finishes installing.

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
"displayName": "Super CLI: Claude Code, Codex & AI Agent Launcher",
44
"description": "Launch Claude Code, Codex CLI, Copilot CLI, Google Antigravity, OpenCode, Kiro, OpenClaw, Qoder CLI and other AI coding agents from one VS Code sidebar.",
55
"publisher": "mikesoft",
6-
"version": "1.6.0",
6+
"version": "1.6.1",
77
"repository": {
88
"type": "git",
99
"url": "https://github.com/TheStreamCode/super-cli.git"

0 commit comments

Comments
 (0)