Skip to content

Commit ef2f43d

Browse files
authored
feat: sync and release MiniMax Code 0.6.1 (#422)
Allow /doctor and /feedback in a /btw side conversation so a failed side response can be diagnosed or reported without leaving it. Neither command mutates the parent or side Session. /quit stays blocked in the side view, because leaving from there aborts only the side Turn and skips side Session cleanup. Bump the root and TUI source versions to 0.6.1.
1 parent 9150441 commit ef2f43d

7 files changed

Lines changed: 63 additions & 2 deletions

File tree

‎docs/tui-capabilities.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,8 @@ remain hidden from `/sessions` and `/resume`.
257257
When a side-conversation model request fails and can be retried, run `/retry`
258258
in the side view to resend the side conversation's last message without
259259
returning to the main view.
260+
`/doctor` and `/feedback` also work in the side view, so a failed side response
261+
can be diagnosed or reported without leaving it. `/quit` stays unavailable there.
260262

261263
Creation and activation failures record a bounded, redacted cause chain in the
262264
local `session.side.failed` diagnostic event. Feedback uploads still apply the

‎package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "minimax-code",
3-
"version": "0.6.0",
3+
"version": "0.6.1",
44
"private": true,
55
"type": "module",
66
"description": "Standalone MiniMax Code TUI with managed accounts, BYOK models, cloud tools, plugins and ACP.",

‎packages/tui/package.json‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@minimax/code",
3-
"version": "0.6.0",
3+
"version": "0.6.1",
44
"private": true,
55
"description": "Minimax Code CLI and TUI product entry.",
66
"type": "module",

‎packages/tui/src/tui/commands/catalog.ts‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ export interface TuiCommandContext {
3737
* conversation" command; it mirrors the Ctrl+/ toggle, not a close.
3838
* `/retry` stays available because it only resends the side Session's own
3939
* failed message, and a failed side response tells the user to run it.
40+
* `/doctor` and `/feedback` stay available so a failed side response can be
41+
* diagnosed and reported where it happened; neither mutates either Session.
4042
*/
4143
export const SIDE_MODE_COMMANDS = new Set([
4244
'help',
@@ -49,6 +51,8 @@ export const SIDE_MODE_COMMANDS = new Set([
4951
'copy',
5052
'parent',
5153
'retry',
54+
'doctor',
55+
'feedback',
5256
]);
5357

5458
export interface TuiCommand {
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
import { describe, expect, it, vi } from "vitest";
2+
import {
3+
createTuiCommandCatalog,
4+
type TuiCommandContext,
5+
} from "../../../../src/tui/commands/catalog.js";
6+
7+
describe("MiniMax Code TUI command catalog in side conversations", () => {
8+
const sideContext: TuiCommandContext = {
9+
hasSession: true,
10+
hasParentSession: true,
11+
managedTokenPresent: true,
12+
queueEnabled: true,
13+
hasLiveRun: false,
14+
hasPendingInteraction: false,
15+
queuedCount: 0,
16+
canRetry: false,
17+
sideMode: true,
18+
};
19+
20+
it("lets a side conversation run diagnostics and send feedback in place", async () => {
21+
const doctorHandler = vi.fn();
22+
const feedbackHandler = vi.fn();
23+
const quitHandler = vi.fn();
24+
const catalog = createTuiCommandCatalog(
25+
[],
26+
{ doctor: doctorHandler, feedback: feedbackHandler, quit: quitHandler },
27+
() => sideContext,
28+
);
29+
30+
await expect(catalog.dispatch("/doctor")).resolves.toMatchObject({ status: "handled" });
31+
await expect(catalog.dispatch("/feedback side reply failed")).resolves.toMatchObject({
32+
status: "handled",
33+
});
34+
expect(doctorHandler).toHaveBeenCalledOnce();
35+
expect(feedbackHandler).toHaveBeenCalledOnce();
36+
37+
// /quit stays blocked: leaving from the side view would abort only the
38+
// side Turn and skip side cleanup, unlike quitting from the main view.
39+
await expect(catalog.dispatch("/quit")).resolves.toMatchObject({ status: "unavailable" });
40+
expect(quitHandler).not.toHaveBeenCalled();
41+
});
42+
43+
it("keeps commands that mutate Sessions unavailable in a side conversation", async () => {
44+
const sessionsHandler = vi.fn();
45+
const catalog = createTuiCommandCatalog([], { sessions: sessionsHandler }, () => sideContext);
46+
47+
await expect(catalog.dispatch("/sessions")).resolves.toMatchObject({
48+
status: "unavailable",
49+
reason: expect.stringContaining("unavailable in side conversations"),
50+
});
51+
expect(sessionsHandler).not.toHaveBeenCalled();
52+
});
53+
});

‎release/public-source.json‎

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

‎test/vitest-suites.json‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -117,6 +117,7 @@
117117
"packages/local-runtime-v2/test/unit/compat/v1/runtime.test.ts",
118118
"packages/tui/test/unit/runtime-product-access.test.ts",
119119
"packages/tui/test/unit/tui-app.test.ts",
120+
"packages/tui/test/unit/tui/commands/catalog.test.ts",
120121
"packages/tui/test/unit/tui-goal-banner.test.ts",
121122
"packages/tui/test/unit/tui-model-picker.test.ts",
122123
"packages/tui/test/unit/tui/controller/interaction/input-flow.test.ts",

0 commit comments

Comments
 (0)