command-code 1.83.0 → 1.85.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,25 @@
1
1
  # command-code
2
2
 
3
+ ## 1.85.0
4
+
5
+ ### Minor Changes
6
+
7
+ - feat: add Beam 1.0 free model
8
+ - feat: add MiniMax M3.1 Flash, plus a limited-time free variant
9
+
10
+ ### Patch Changes
11
+
12
+ - feat: install the IDE extension from the VS Code Marketplace and Open VSX, falling back to the bundled VSIX
13
+ - feat: support VSCodium in `/ide` and IDE extension auto-install
14
+ - fix: time to first token now stops at the first token instead of the stream start
15
+
16
+ ## 1.84.0
17
+
18
+ ### Minor Changes
19
+
20
+ - feat: Add `/statusline` to customize what shows on the line under the input
21
+ - feat: Add opt-in Context used and Context remaining items to `/statusline`, updated after every model request
22
+
3
23
  ## 1.83.0
4
24
 
5
25
  ### Minor Changes
@@ -122,6 +122,7 @@ Every built-in command, grouped by area. Aliases are shown in parentheses on the
122
122
  | `/config [query]` | Search and change settings |
123
123
  | `/theme [dark\|light\|auto]` | Switch themes; `auto` matches your terminal background |
124
124
  | `/status` | Show comprehensive environment status |
125
+ | `/statusline [off\|on\|reset]` | Configure Command Code's statusline UI (terminal only) |
125
126
  | `/changelog [all]` | See what's new in Command Code (`all` for the full history) |
126
127
  | `/learn` | Open the Command Code learn hub in your browser |
127
128
  | `/update` | Update Command Code to the latest version |
@@ -153,6 +154,7 @@ Most commands are **blocked mid-turn** - mode flips, session switches, model cha
153
154
  - `/session-file` - read-only session facts
154
155
  - `/copy` - clipboard only
155
156
  - `/todos` (also `ctrl+x`) - edits local todo state, most useful mid-turn while a plan is being driven (needs the `todos` mod enabled)
157
+ - `/statusline off`, `/statusline on`, `/statusline reset` - a local display preference (bare `/statusline` opens its editor once the turn ends)
156
158
  - `/exit` / `/quit` - always available
157
159
  - `/goal clear` - stops the goal loop; the current step finishes, then the loop stops. Setting a **new** goal mid-turn is refused with a busy notice.
158
160
 
@@ -166,6 +168,130 @@ Most other commands - `/clear`, `/mode`, `/plan`, `/model`, `/compact`, `/worktr
166
168
 
167
169
  `/loop <interval> <task>` runs the task now and repeats it on a fixed cadence such as `5m`, `2h`, `1d`, or a trailing `every 2 hours`. `/loop <task>` runs it now and lets the agent pick each next delay, between one minute and one hour. Bare `/loop` runs the default maintenance task, which a `.commandcode/loop.md` file replaces. Esc cancels the conversation's loops. The [`/loop`](https://commandcode.ai/docs/loop) page has the normalization rules, `loop.md`, and resume behavior.
168
170
 
171
+ ### `/statusline` in detail
172
+
173
+ The status line is the row directly under the input. It stays visible while you type and steps aside only for the slash menu, the `@` file list, the slash hint, and a pending Ctrl+C exit:
174
+
175
+ ```text
176
+ > fix the parser
177
+ branch: main · mymod: ok
178
+ ? for shortcuts · PR #5329 · taste on
179
+ ```
180
+
181
+ Bare `/statusline` slash command opens the statusline editor. Select items from the list to add to the statusline. An item with nothing to show right now says why in brackets beside its label, for example `Git branch (not on a git branch)`, instead of showing a placeholder.
182
+
183
+ These items sit in the row, in the order you choose. Items marked *off* are unchecked by default:
184
+
185
+ | **Item** | **Shows** |
186
+ | ----------------- | ---------------------------------------------------------------------------------- |
187
+ | Model | This session's model (*off*) |
188
+ | Model + reasoning | The model and its reasoning level, e.g. `Opus 4.7 with high effort` (*off*) |
189
+ | Reasoning level | The reasoning level alone, e.g. `high effort` (*off*) |
190
+ | Context used | Context used against the model's full window, e.g. `ctx 46k/200k · 23%`; updated after every model request (*off*) |
191
+ | Context remaining | The rest of the full window, e.g. `77% left`, not the room before auto-compact (*off*) |
192
+ | Current directory | The working directory, e.g. `~/work/app` (*off*) |
193
+ | Git branch | The checked-out branch, e.g. `branch: main`; re-read after each turn (*off*) |
194
+ | Session name | The session's name, from `/rename` or the generated title (*off*) |
195
+ | Version | The Command Code version, e.g. `v1.77.0` (*off*) |
196
+ | Phase model | The planning or implementation model, while one is in charge; always at the right end of the row |
197
+
198
+ These items keep their own place under the input; you can only turn them on or off. All are on by default:
199
+
200
+ | **Item** | **Controls** |
201
+ | ----------------- | ---------------------------------------------------------------------------------- |
202
+ | Permission mode | The accept-edits and plan mode badges. Bypass and dont-ask always show |
203
+ | IDE context | The IDE file or selection and the IDE connection indicator |
204
+ | Pull request | The open or merged PR badge for this branch, as a link |
205
+ | Taste learning | `taste on` or `taste off` (`taste off (byok)` when a BYOK session skips learning) |
206
+ | Background tasks | Running shells and monitors; press `↓` to manage them |
207
+ | Shortcut hints | `? for shortcuts` and the paste hint. The stash badge shows whenever a prompt is stashed |
208
+
209
+ The Ctrl+C exit prompt, credit warnings, and update, share and taste notices always show.
210
+
211
+ | **Key** | **Action** |
212
+ | ------------------ | ---------------------------------------------------------- |
213
+ | `↑` / `↓` | Move between items |
214
+ | `Space` / `Enter` | Check or uncheck the focused item |
215
+ | `←` / `→` | Move the focused item left or right in the row (only row items move; Phase model stays at the right end) |
216
+ | `Esc` | Save your changes and close (just close if nothing changed; during a save, close at once; after another session's change, discard yours) |
217
+ | `Ctrl+C` | Close without saving |
218
+
219
+ Unchecked items keep their place, so checking one again puts it back where it was. Nothing changes under the input until Esc saves the layout. If the write fails, the editor stays open with your changes, and Esc tries again; if another session changed the layout while you were editing, it never overwrites it: Enter reloads the saved version, Esc discards your changes. Closing the editor gives you back the prompt you were writing.
220
+
221
+ Output from [mods](https://commandcode.ai/docs/mods) (`cmd.ui.setStatus`) always appears after the built-ins, and before the phase model at the right end, in the order the mods loaded. Unchecking every built-in still shows mod output; `/statusline off` is the way to hide the whole row.
222
+
223
+ #### Add your own items with mods
224
+
225
+ The editor lists only the built-in items. To show anything else in the row, such as a CI result, a ticket number or a count, use a [mod](https://commandcode.ai/docs/mods) that calls `cmd.ui.setStatus(text)`. Each mod gets one segment: a new call replaces its text, and `null` removes it. You don't need to write the mod yourself; describe what you want and Command Code builds it:
226
+
227
+ ```text copy filename="Prompt"
228
+ Build me a mod that shows how many files I've changed in this git repo in my status line, in yellow, and updates it after every turn. Show nothing when the tree is clean.
229
+ ```
230
+
231
+ Command Code writes something like this and saves it in `~/.commandcode/mods/changed-files.ts`, where it loads in every session:
232
+
233
+ ```ts copy filename="~/.commandcode/mods/changed-files.ts"
234
+ import type {ModApi} from '@commandcode/harness';
235
+
236
+ export default function (cmd: ModApi): void {
237
+ const refresh = async (): Promise<void> => {
238
+ const {stdout, code} = await cmd.exec({command: 'git', args: ['status', '--porcelain']});
239
+ const count = stdout.split('\n').filter(Boolean).length;
240
+ // null clears the segment: nothing shows on a clean tree or outside a repo.
241
+ cmd.ui.setStatus(code === 0 && count > 0 ? `\u001b[33m✎ ${count} changed\u001b[39m` : null);
242
+ };
243
+
244
+ cmd.hooks({onSessionStart: refresh});
245
+ cmd.on('turn_end', () => void refresh());
246
+ }
247
+ ```
248
+
249
+ The next session shows it in the row:
250
+
251
+ ```text
252
+ > fix the parser
253
+ ✎ 2 changed
254
+ ? for shortcuts · PR #5329 · taste on
255
+ ```
256
+
257
+ To try a mod without installing it, run `cmd --mod ./changed-files.ts`; after editing an installed one, run `/reload`. Mod text can use ANSI colors and OSC 8 links; other escape codes are removed. To hide mod output but keep the built-ins, set `legacy-mods` to `"enabled": false` in `config.json` (see below). The [UI surface](https://commandcode.ai/docs/mods#ui-surface) section of the mods page has the full `setStatus` contract.
258
+
259
+ | **Command** | **Effect** |
260
+ | -------------------- | --------------------------------------------------------------------------------- |
261
+ | `/statusline` | Open the editor |
262
+ | `/statusline off` | Hide the whole row, mod output included. Your selection is kept, and the on/off-only items above are unaffected |
263
+ | `/statusline on` | Show the row again with your saved selection, or the default one |
264
+ | `/statusline reset` | Forget your layout and go back to the default, in the order above |
265
+
266
+ Your items always get exactly one line under the input, in the order you set. When they don't fit your terminal, the line is cut with `…` at the edge rather than wrapping or reordering. The phase model sits at the right end of that line when it fits beside it, otherwise at the right end of the line below.
267
+
268
+ The layout is saved in `~/.commandcode/config.json` under `statusline`. You rarely need to edit it by hand:
269
+
270
+ ```json
271
+ {
272
+ "statusline": {
273
+ "version": 1,
274
+ "enabled": true,
275
+ "items": [
276
+ {"id": "model", "enabled": false},
277
+ {"id": "pull-request", "enabled": true},
278
+ {"id": "taste", "enabled": true},
279
+ {"id": "phase-model", "enabled": true},
280
+ {"id": "background-tasks", "enabled": true},
281
+ {"id": "git-branch", "enabled": true},
282
+ {"id": "permission-mode", "enabled": true},
283
+ {"id": "legacy-mods", "enabled": true}
284
+ ]
285
+ }
286
+ }
287
+ ```
288
+
289
+ `items` sets the order, except that `phase-model` always draws at the right end. `enabled: false` on an item unchecks it; `enabled: false` at the top level is `/statusline off`. An item missing from `items` is unchecked, except the on/off-only items (`permission-mode`, `ide`, `pull-request`, `taste`, `background-tasks`, `hints`), which stay on. Other ids: `model-reasoning`, `reasoning`, `context-used`, `context-remaining`, `cwd`, `session-name`, `version`. `legacy-mods` is where mod output goes; leave it out (or set `"items": []`) and mod output is hidden.
290
+
291
+ A layout saved by a newer version of Command Code is never overwritten: the row uses the default layout and the editor opens read-only, until you update or run `/statusline reset`. A `statusline` value that isn't valid is also left untouched and shown read-only; fix or remove the `statusline` key, or run `/statusline reset`. If `config.json` itself isn't valid JSON, nothing can save the layout, `/statusline reset` included, until you fix or remove that file.
292
+
293
+ The row doesn't watch the file. A hand edit, or a save from another Command Code window, shows up the next time you open `/statusline`, run `/statusline off`, `on` or `reset`, or restart.
294
+
169
295
  ### `/rc` in detail
170
296
 
171
297
  Bare `/rc` opens the picker: platform, setup, permission mode. `/rc default`, `/rc auto-accept` and `/rc yolo` connect straight into a mode. `/rc status` reports what is on, `/rc off` disconnects, and `/rc off clear` also deletes the bot's own messages. `/rc` is refused when the model asks for it and when it arrives from the chat, so the bot cannot change its own token or allowlist. See [`/rc`](https://commandcode.ai/docs/remote-control) for setup and what the chat can send.
@@ -12,8 +12,8 @@ The model catalog — every id `/model`, `--model`, `model:effort` shorthand, an
12
12
  | `deepseek/deepseek-v4-flash` | DeepSeek V4 Flash (latest) | 1M | off, high, max | $0.15/$0.6 · cache $0.003 | Go and above | fast hybrid-attention reasoning |
13
13
  | `deepseek/deepseek-v4-flash-vision-exp` | DeepSeek V4 Flash Vision (exp) | 1M | off, high, max | $0.15/$0.6 · cache $0.003 | Go and above | fast hybrid-attention reasoning with vision |
14
14
  | `deepseek/deepseek-v4-flash-fast` | DeepSeek V4 Flash Fast | 1M | low, high, max | $0.28/$0.56 · cache $0.07 | Go and above | low-latency V4 Flash deployment |
15
- | `deepseek/deepseek-v4.1-flash` | DeepSeek V4.1 Flash | 1M | off, low, high, max | $0.15/$0.6 · cache $0.003 | Go and above | V4.1 hybrid-attention reasoning with vision |
16
- | `deepseek/deepseek-v4.1-flash-fast` | DeepSeek V4.1 Flash Fast | 1M | off, low, high, max | $0.16/$0.58 · cache $0.016 | Go and above | High throughput V4.1 Flash |
15
+ | `deepseek/deepseek-v4.1-flash` | DeepSeek V4.1 Flash (latest) | 1M | off, low, high, max | $0.15/$0.6 · cache $0.003 | Go and above | V4.1 hybrid-attention reasoning with vision |
16
+ | `deepseek/deepseek-v4.1-flash-fast` | DeepSeek V4.1 Flash Fast (latest) | 1M | off, low, high, max | $0.16/$0.58 · cache $0.016 | Go and above | High throughput V4.1 Flash |
17
17
  | `moonshotai/Kimi-K3` | Kimi K3 | 1M | low, high, max | $3/$15 · cache $0.3 | Go and above | long-horizon coding & knowledge work with 1M context |
18
18
  | `moonshotai/Kimi-K2.7-Code` | Kimi K2.7 Code | 256K | — | $0.95/$4 · cache $0.19 | Go and above | improved long-horizon coding with vision |
19
19
  | `moonshotai/Kimi-K2.7-Code-Highspeed` | Kimi K2.7 Code HighSpeed | 262K | — | $1.9/$8 · cache $0.38 | Go and above | high-speed long-horizon coding with vision |
@@ -26,6 +26,8 @@ The model catalog — every id `/model`, `--model`, `model:effort` shorthand, an
26
26
  | `zai-org/GLM-5.2-Fast` | GLM-5.2 Fast | 1M | — | $3/$10.25 · cache $0.5 | Go and above | high-throughput GLM-5.2 with 1M context |
27
27
  | `zai-org/GLM-5.1` | GLM-5.1 | — | — | $1.4/$4.4 · cache $0.26 | Go and above | long-horizon autonomous coding agent |
28
28
  | `zai-org/GLM-5` | GLM-5 | 200K | — | $1/$3.2 · cache $0.2 | Go and above | multi-mode thinking & long-range planning |
29
+ | `minimax/minimax-m3.1-flash` | MiniMax M3.1 Flash | 1M | low, medium, high, xhigh, max | $0.15/$0.6 · cache $0.015 | Go and above | multimodal coding with tunable thinking depth |
30
+ | `minimax/minimax-m3.1-flash:free` | MiniMax M3.1 Flash | 1M | low, medium, high, xhigh, max | $0/$0 · cache $0 | Go and above | multimodal coding with tunable thinking depth |
29
31
  | `MiniMaxAI/MiniMax-M3` | MiniMax M3 | 1M | low, medium, high | $0.3/$1.2 · cache $0.06 | Go and above | frontier coding, agents & native multimodality |
30
32
  | `MiniMaxAI/MiniMax-M2.7` | MiniMax M2.7 | — | — | $0.3/$1.2 · cache $0.06 | Go and above | end-to-end software engineering agent |
31
33
  | `MiniMaxAI/MiniMax-M2.5` | MiniMax M2.5 | 200K | — | $0.3/$1.2 · cache $0.03 | Go and above | cross-platform full-stack agentic dev |
@@ -55,6 +57,7 @@ The model catalog — every id `/model`, `--model`, `model:effort` shorthand, an
55
57
  | `nvidia/nemotron-3.5-super-vl` | Nemotron 3.5 Super VL | 262K | low, medium, high | $0.2/$0.5 · cache $0.04 | Go and above | open vision-language model for coding and documents |
56
58
  | `thinkingmachines/inkling` | Inkling | 256K | — | $1/$4.05 · cache $0.17 | Go and above | multimodal MoE reasoning |
57
59
  | `thinkingmachines/inkling-small` | Inkling Small | 1M | — | $0.5/$1.2 · cache $0.1 | Go and above | lightweight MoE reasoning at lower cost and latency |
60
+ | `reflection/beam:free` | Beam 1.0 | 1.05M | low, medium, high, xhigh, max | $0/$0 · cache $0 | Go and above | reasoning model for coding and agentic workflows |
58
61
  | `poolside/laguna-s-2.1-free` | Laguna S 2.1 | 256K | — | $0/$0 · cache $0 | Go and above | open-weight agentic coding and long-horizon work |
59
62
  | `inclusionai/ling-3.1-flash` | Ling 3.1 Flash | 262K | low, medium, high | $0.3/$0.9 · cache $0.06 | Go and above | hybrid-reasoning MoE for coding & tool-using agents |
60
63
  | `mistral/mistral-large-4` | Mistral Large 4 | 524K | low, medium, high | $1.36/$4.18 · cache $0.14 | Go and above | frontier open-weight multimodal model for coding & analysis |
@@ -63,7 +66,6 @@ The model catalog — every id `/model`, `--model`, `model:effort` shorthand, an
63
66
  | Id (use EXACTLY this) | Name | Context | Efforts | $/1M in/out · cache read | Min plan | Best for |
64
67
  |---|---|---|---|---|---|---|
65
68
  | `stealth/glyph-cluster:free` | Glyph Cluster | 256K | low, medium, high, xhigh | $0/$0 · cache $0 | Go and above | stealth reasoning model in early access |
66
- | `stealth/cat-jam:free` | Cat Jam | 1.05M | low, medium, high, xhigh, max | $0/$0 · cache $0 | Go and above | stealth reasoning model for coding and agentic work |
67
69
  ## Anthropic
68
70
 
69
71
  | Id (use EXACTLY this) | Name | Context | Efforts | $/1M in/out · cache read | Min plan | Best for |
@@ -68,6 +68,7 @@
68
68
  - /pr-comments: Fetch all PR comments for current branch
69
69
  - /add-dir: Manage additional directory scope
70
70
  - /status: Show comprehensive environment status
71
+ - /statusline [off|on|reset]: Configure Command Code's statusline UI: pick and order the row under the input (model, reasoning, context used and remaining, phase model, directory, git branch, session name, version) and turn the mode badge, IDE context, PR, taste, background tasks and shortcut hints on or off; mod status follows. Terminal only
71
72
  - /usage: Display credits, plan, and usage metrics
72
73
  - /upgrade: Open billing page to upgrade your plan
73
74
  - /extra: Buy extra usage at API cost, zero markup
@@ -297,6 +298,8 @@ Valid model ids (the /model catalog — use these EXACT ids):
297
298
  - zai-org/GLM-5.2-Fast
298
299
  - zai-org/GLM-5.1
299
300
  - zai-org/GLM-5
301
+ - minimax/minimax-m3.1-flash
302
+ - minimax/minimax-m3.1-flash:free
300
303
  - MiniMaxAI/MiniMax-M3
301
304
  - MiniMaxAI/MiniMax-M2.7
302
305
  - MiniMaxAI/MiniMax-M2.5
@@ -335,7 +338,7 @@ Valid model ids (the /model catalog — use these EXACT ids):
335
338
  - thinkingmachines/inkling
336
339
  - thinkingmachines/inkling-small
337
340
  - stealth/glyph-cluster:free
338
- - stealth/cat-jam:free
341
+ - reflection/beam:free
339
342
  - poolside/laguna-s-2.1-free
340
343
  - inclusionai/ling-3.1-flash
341
344
  - meta/muse-spark-1.1
@@ -40,7 +40,7 @@ cmd.addCommand({
40
40
 
41
41
  ## Footer status segments
42
42
 
43
- `cmd.ui.setStatus(text | null)` - a persistent per-mod segment in the TUI footer (under the input panel). One segment per mod: a new call replaces the text, `null` (or whitespace-only text) clears it, and the returned `Disposable` clears it too - but only while it still owns the segment, so a stale handle disposing late can't wipe a newer status. Segments from multiple mods render on one row in load order, and a call from async code repaints on its own. Text is printed verbatim (style it with ansi), collapsed to a single line: newlines and tabs become spaces. Headless: stored, rendered nowhere.
43
+ `cmd.ui.setStatus(text | null)` - a persistent per-mod segment on the TUI's status row (under the input). One segment per mod: a new call replaces the text, `null` (or whitespace-only text) clears it, and the returned `Disposable` clears it too - but only while it still owns the segment, so a stale handle disposing late can't wipe a newer status. Segments from multiple mods render after the row's built-in items in load order, and a call from async code repaints on its own. Style text with ansi colors (SGR) and OSC 8 links; every other escape - cursor moves, screen clears, OSC titles and clipboard writes - is stripped, and newlines and tabs become spaces. Mod segments share the user's one status line, after the built-ins and before the right-pinned phase model; the line is cut with `…` at the terminal edge, so trailing segments can be cut off. `/statusline off` hides the whole row (`cmd.ui.capabilities.status` stays true). Headless: stored, rendered nowhere. For a complete example built by asking Command Code, see [Add your own items with mods](https://commandcode.ai/docs/reference/slash-commands#add-your-own-items-with-mods).
44
44
 
45
45
  ```ts
46
46
  cmd.hooks({