Skip to content

Commit 26af36c

Browse files
feat: fix slash command availability in Zed by addressing race condition
1 parent fc5973e commit 26af36c

1 file changed

Lines changed: 27 additions & 11 deletions

File tree

CHANGELOG.md

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,43 @@ Versioning: [Semantic Versioning](https://semver.org/).
66

77
For releases before v1.3.35, see [GitHub Releases](https://github.com/VladoIvankovic/Codeep/releases).
88

9+
## [1.3.41] — 2026-05-10
10+
11+
### Fixed
12+
- **Slash commands (`/`) still showed "Available commands: none" in Zed
13+
after v1.3.40.** The earlier patch (removing the spec-extension
14+
`session_info_update` notification and re-emitting commands on every
15+
prompt) was insufficient — the actual root cause is a **race in Zed**:
16+
it processes `AvailableCommandsUpdated` events synchronously and silently
17+
drops them if the session's `thread_view` isn't registered yet. Codeep
18+
was sending the notification ~1 ms after the `session/new` response —
19+
well inside Zed's setup window — so the agent's command list never
20+
reached the slash autocomplete and `/help` was rejected as unsupported.
21+
Confirmed by reading Zed source (`crates/agent_ui` + `crates/agent`)
22+
and reproduced via the new `CODEEP_ACP_DEBUG` log. Codeep now sends
23+
`available_commands_update` with a configurable delay (200 ms by
24+
default, override via `CODEEP_ACP_COMMANDS_DELAY_MS`) on `session/new`,
25+
`session/load`, and `session/resume` — well outside the race window.
26+
927
## [1.3.40] — 2026-05-10
1028

1129
### Fixed
12-
- **Slash commands (`/`) showed "Available commands: none" in Zed.** Root
13-
cause was a race in Zed: it processes `AvailableCommandsUpdated` events
14-
synchronously and silently drops them if the session's `thread_view` isn't
15-
registered yet. Codeep was sending the notification ~1 ms after the
16-
`session/new` response — well inside Zed's setup window — so the agent's
17-
command list never reached the slash autocomplete and `/help` was rejected
18-
as unsupported. Codeep now sends `available_commands_update` with a
19-
configurable delay (200 ms by default, override via
20-
`CODEEP_ACP_COMMANDS_DELAY_MS`) and re-emits it on `session/load`,
21-
`session/resume`, and at the start of every `session/prompt` turn for
22-
resilience against any future client-side race.
30+
- **First attempt at fixing slash commands in Zed.** Removed a
31+
`session_info_update` notification that was emitted between the
32+
`session/new` response and `available_commands_update`, on the suspicion
33+
that it was poisoning Zed's deserializer. Turned out the variant was
34+
actually spec-valid (`SessionInfoUpdate` exists in `agent-client-protocol`
35+
v0.11+) and the real fix needed was in v1.3.41. Also added the
36+
resilience pass: `available_commands_update` is re-emitted at the start
37+
of every `session/prompt` turn.
2338

2439
### Added
2540
- **`CODEEP_ACP_DEBUG` env var** for ACP debugging — when set, every inbound
2641
and outbound JSON-RPC frame is appended to
2742
`~/.cache/codeep/acp-debug.log` (override path via
2843
`CODEEP_ACP_DEBUG_FILE`). Writes go to a file rather than stderr because
2944
most ACP clients (Zed included) don't pipe agent stderr anywhere readable.
45+
This is what let us confirm the v1.3.41 fix.
3046

3147
## [1.3.39] — 2026-05-06
3248

0 commit comments

Comments
 (0)