Skip to content

Commit 17fbb0c

Browse files
committed
Stack Mistral role fix on SiliconFlow
2 parents 8a792c5 + 72a237c commit 17fbb0c

14 files changed

Lines changed: 227 additions & 11 deletions

File tree

‎.github/ISSUE_TEMPLATE/01-bug-report.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: Bug report
22
description: Report a reproducible problem with the Desktop app, CLI, or source build.
33
title: "[Bug]: "
4-
labels: ["bug"]
4+
labels: ["bug", "needs-triage"]
55
body:
66
- type: markdown
77
attributes:

‎.github/ISSUE_TEMPLATE/02-feature-request.yml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
name: Feature request
22
description: Suggest an improvement to the Desktop app, CLI, or source distribution.
33
title: "[Feature]: "
4-
labels: ["enhancement"]
4+
labels: ["enhancement", "needs-triage"]
55
body:
66
- type: dropdown
77
id: product
Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,21 @@
1-
name: Usage question
2-
description: Ask about the Desktop app, CLI, or building from source.
1+
name: Usage or repository policy question
2+
description: Ask about the Desktop app, CLI, source builds, or contribution policy.
33
title: "[Question]: "
4-
labels: ["question"]
4+
labels: ["question", "needs-triage"]
55
body:
66
- type: dropdown
77
id: product
88
attributes:
99
label: Product or interface
10+
description: Leave blank if unsure or asking about repository policy.
1011
options:
1112
- Desktop app
1213
- CLI - interactive TUI
1314
- CLI - headless
1415
- CLI - ACP
1516
- Source build or repository tooling
1617
validations:
17-
required: true
18+
required: false
1819
- type: textarea
1920
id: question
2021
attributes:
@@ -25,18 +26,19 @@ body:
2526
id: platform
2627
attributes:
2728
label: Platform
29+
description: Leave blank if unknown or not applicable.
2830
options:
2931
- macOS
3032
- Windows
3133
- Linux
3234
- WSL
3335
- Multiple platforms
3436
validations:
35-
required: true
37+
required: false
3638
- type: textarea
3739
id: context
3840
attributes:
39-
label: Version and what you have tried
40-
description: Include documentation you followed and relevant redacted output. Do not include keys or account data.
41+
label: Version or policy context
42+
description: For usage questions, include your version and what you tried. For policy questions, link the relevant policy. Do not include keys or account data.
4143
validations:
4244
required: true

‎.github/ISSUE_TEMPLATE/config.yml‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
blank_issues_enabled: false
22
contact_links:
3+
- name: Contribution policy
4+
url: https://github.com/MiniMax-AI/minimax-code/blob/main/CONTRIBUTING.md
5+
about: Everyone may report issues and suggest improvements. Pull requests are accepted only from repository collaborators; external PRs are not accepted.
36
- name: CLI quick start and troubleshooting
47
url: https://agent.minimax.io/docs/cli/quick-start
58
about: Installation, account regions, first tasks, and links to troubleshooting.

‎.github/ISSUE_TEMPLATE/docs.yml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
name: Documentation issue
22
description: Report missing, incorrect, or unclear documentation.
33
title: "[Docs] "
4+
labels: ["documentation", "needs-triage"]
45
body:
56
- type: input
67
id: location

‎README.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ mcode
9898

9999
Supported API formats: `openai-completions`, `openai-responses`, and `anthropic-messages`. See the [model examples](docs/examples.md#2-choose-your-own-model) for environment variable setup, connection checks, and model overrides for a single run.
100100

101+
Providers added this way are stored under `custom_provider` in the active profile's `config.yaml`; this is the supported path for third-party or self-hosted endpoints, while `minimax_api` stays reserved for the official MiniMax API. Relays that require `Authorization: Bearer` on an Anthropic-compatible endpoint can set custom headers in `config.yaml`; see [Third-party relays and custom auth headers](docs/examples.md#third-party-relays-and-custom-auth-headers).
102+
101103
</details>
102104

103105
### 3. Run your first task

‎README_ZH.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,8 @@ mcode
9898

9999
支持 `openai-completions`、`openai-responses` 和 `anthropic-messages`。连接测试、单次模型切换及环境变量设置见 [模型示例](docs/examples.md#2-choose-your-own-model)。
100100

101+
通过该命令添加的提供方保存在当前 profile `config.yaml` 的 `custom_provider` 下;第三方或自建端点一律走这条路径,`minimax_api` 保留给官方 MiniMax API。若中转端点只提供 Anthropic 兼容接口且要求 `Authorization: Bearer` 鉴权,可在 `config.yaml` 中为提供方配置自定义 headers;见[第三方中转与自定义鉴权头](docs/examples.md#third-party-relays-and-custom-auth-headers)。
102+
101103
</details>
102104

103105
### 3. 完成第一个任务

‎docs/examples.md‎

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,26 @@ pnpm mcode provider list --json
6666

6767
`--api-key-env` reads the current environment variable value and stores that value in the active profile's `config.yaml`; it does not save an environment-variable reference. The file still contains plaintext credentials. On POSIX systems, config writes and temporary copies use `0600`. When loading existing files, MCode removes group/other access while preserving the owner's permissions; already-private files such as `0400` or `0600` do not require a permission change. Loading fails if an unsafe main config cannot be restricted. Older migration backups are also checked, but inspection or repair failures produce a warning identifying the directory or backup that needs manual attention rather than preventing the main config from loading. Windows file modes do not provide equivalent ACL protection; restrict access to the profile directory using Windows permissions.
6868

69+
### Third-party relays and custom auth headers
70+
71+
Providers created by `mcode provider add` are stored under `custom_provider` in the active profile's `config.yaml`. That tree is the supported home for any endpoint other than the official MiniMax API; `minimax_api` is reserved for the official endpoint and keeps its fixed authentication scheme.
72+
73+
Authentication follows the API format: `openai-completions` and `openai-responses` send `Authorization: Bearer <key>`, and `anthropic-messages` sends the key as `x-api-key`. A relay that expects Bearer authentication on an OpenAI-compatible endpoint therefore needs no extra configuration. If a relay only exposes an Anthropic-compatible endpoint (`/v1/messages`) and requires Bearer authentication, add explicit headers to the provider entry in `config.yaml`:
74+
75+
```yaml
76+
custom_provider:
77+
my-relay:
78+
options:
79+
apiKey: sk-relay-key
80+
baseURL: https://relay.example.com
81+
headers:
82+
Authorization: Bearer sk-relay-key
83+
models:
84+
MiniMax-M2: {}
85+
```
86+
87+
`api` can be omitted and defaults to `anthropic-messages`. Configured headers are sent on both connection tests and conversation requests, and they are part of the connection-test fingerprint, so editing them retires a cached test verdict. The default `x-api-key` header is still sent alongside; the relay must tolerate rather than reject it. Header values are stored in plaintext like `apiKey` and are reported by name only in provider views. After editing the file, verify with `mcode provider list` and `mcode provider test <provider-id>`.
88+
6989
[Live acceptance](verification.md) separately verified MiniMax Token Plan and one configured BYOK provider. This is not a guarantee for every compatible service.
7090

7191
## 3. Search and image input

‎docs/installation.md‎

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,52 @@ To locate data safely:
6060

6161
For tests, explicitly set `MINIMAX_DATA_DIR` to a temporary directory to keep normal sessions separate. Use `$env:MINIMAX_DATA_DIR = 'C:\path\to\test-profile'` in PowerShell or `export MINIMAX_DATA_DIR=/path/to/test-profile` in a POSIX shell.
6262

63+
## macOS terminal shortcuts: Ghostty Option+M
64+
65+
In the composer, `Alt+M` (`Option+M` on macOS) cycles permission modes through Ask, Auto, and Full access. Its binding ID is `composer.cycle-permission`. `Shift+Tab` toggles **Plan mode**, a separate setting. You can also use `/permission` to choose a permission mode and `/permission status` to inspect it without an Option shortcut.
66+
67+
If `Option+M` inserts `µ` instead, the terminal is sending text rather than the expected Alt shortcut. MCode preserves literal `µ` as text; it cannot safely infer a permission change from that character. The terminal must forward the modifier, or you can choose another binding.
68+
69+
### Configure Ghostty's Option key
70+
71+
Ghostty's [`macos-option-as-alt`](https://ghostty.org/docs/config/reference#macos-option-as-alt) default is **keyboard-layout dependent** when unset, not always `false`. The current reference lists U.S. Standard and U.S. International as defaulting to `true`; other layouts default to `false`. Check the active macOS input source and the configuration loaded by your installed Ghostty version.
72+
73+
Set this in your Ghostty configuration to send both Option keys as Alt:
74+
75+
```ini
76+
macos-option-as-alt = true
77+
```
78+
79+
Use `left` or `right` instead of `true` to reserve only that Option key for shortcuts and retain Unicode composition on the other side. Use the configured side when testing `Option+M`.
80+
81+
Follow Ghostty's [configuration locations and precedence](https://ghostty.org/docs/config#file-location): macOS-specific files load after XDG files, and later settings can override earlier ones. Inspect the loaded setting from the same Ghostty installation, without `--default`:
82+
83+
```bash
84+
ghostty +show-config | awk '/^macos-option-as-alt[[:space:]]*=/'
85+
```
86+
87+
If `ghostty` is not on `PATH`, use the executable inside your installed app bundle, typically `/Applications/Ghostty.app/Contents/MacOS/ghostty`. An empty or omitted value is not proof of `false`; unset behavior depends on the layout. After editing, reload Ghostty's configuration from its menu (default `Cmd+Shift+,`) and open a new terminal. This is separate from MCode's `/reload` command.
88+
89+
### Keep Option for text and customize MCode instead
90+
91+
While idle, open `/hotkeys`, select `composer.cycle-permission`, press `Enter`, press `Ctrl+X`, then press `Enter` to save. `Ctrl+X` is unused by the current default MCode bindings; check any custom terminal or multiplexer bindings too. Do not choose `Ctrl+M`: terminals commonly encode it identically to `Enter`.
92+
93+
Alternatively, merge this entry into `<data-dir>/tui/keybindings.json`, preserving any existing entries:
94+
95+
```json
96+
{
97+
"composer.cycle-permission": "ctrl+x"
98+
}
99+
```
100+
101+
For the default profile this is `~/.minimax/tui/keybindings.json`; [profiles and data-directory overrides](#accounts-and-data) change the path. Create the `tui` directory if needed. After editing the file, run `/reload` while idle with no pending interaction or queued message, or restart MCode. This replaces `Alt+M`; use `["alt+m", "ctrl+x"]` as the value to retain both bindings. `/hotkeys` shows the effective binding.
102+
103+
### Verify the result
104+
105+
With an idle composer and no open picker or permission prompt, note `/permission status`, press the configured shortcut, and check the status again. The mode should advance without inserting text. Restore your intended permission mode through `/permission` afterward. Confirm that `Shift+Tab` still toggles Plan mode and that pasting `µ` still inserts text.
106+
107+
If it still fails, record `mcode --version`, Ghostty's version, active keyboard layout, which Option key you pressed, the setting above, the effective `/hotkeys` entry, and whether tmux or SSH is involved. Compare with a direct Ghostty session. MCode supports both legacy ESC-prefixed Alt input and extended keyboard reports; a shell's raw-key display alone does not establish what Ghostty sends after the TUI negotiates its keyboard protocol.
108+
63109
## Update or remove
64110

65111
Save your changes, fetch a reviewed revision with Git, then repeat the frozen install and build. A source installation does not automatically become an official npm installation.

‎docs/maintainers.md‎

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,29 @@
1111

1212
These are repository maintenance responsibilities, not an assertion that an account owns the product's copyright. Every PR that requires approval needs a reviewer other than the author, and security reports need a working private response path. Review maintainer additions and policy changes in a PR; do not silently grant repository access.
1313

14+
## Issue triage
15+
16+
Published source covers the standalone CLI (interactive TUI, headless and ACP). The issue tracker also collects Desktop app feedback; accepting those reports does not expand the published source scope.
17+
18+
Everyone may report bugs, request features, ask questions, and flag documentation problems. Code and documentation PRs are accepted only from repository collaborators. Opening an issue or having a proposal accepted does not grant collaborator access or permission to submit a PR. Do not use `good first issue` or `help wanted` while external PRs are closed.
19+
20+
Use these labels independently:
21+
22+
| Category | Labels and meaning |
23+
| --- | --- |
24+
| Type | `bug`: reported malfunction; `enhancement`: requested improvement; `documentation`: missing or incorrect docs; `question`: usage or project-policy question |
25+
| Product | `desktop`: Desktop app; `cli`: standalone mcode, including TUI, headless, ACP and its source builds/tooling |
26+
| Triage | `needs-triage`: awaiting maintainer assessment; `needs-info`: a maintainer has asked the reporter for specific missing information |
27+
28+
1. Start with [needs-triage](https://github.com/MiniMax-AI/minimax-code/issues?q=is%3Aissue+is%3Aopen+label%3Aneeds-triage) and [unlabelled issues](https://github.com/MiniMax-AI/minimax-code/issues?q=is%3Aissue+is%3Aopen+no%3Alabel). Templates add a type and `needs-triage`; reports created through other routes may need both added manually. A type label describes the report and does not confirm a defect or commit to implementation.
29+
2. Confirm one primary type and apply `desktop` or `cli` from the report. Product dropdowns stay in the body; maintainers apply product labels manually. Use both only when the report establishes that both are affected. Leave product labels unset for unclear reports or repository-policy questions. The existing `tui` label may supplement `cli` for interactive-terminal-specific issues; it does not cover headless or ACP.
30+
3. If information is missing, ask for the specific version, reproduction, or expected behavior, replace `needs-triage` with `needs-info`, and retain any known type/product labels. When the reporter replies, remove `needs-info` and reassess. Do not automatically close issues for inactivity.
31+
4. Once assessed, remove `needs-triage` and record the next step in a comment. Assign a collaborator when someone takes responsibility; classification alone does not promise a fix or release date. For duplicates, link the original issue before closing with `duplicate`. For declined requests, explain the reason before closing with `wontfix`.
32+
33+
Route security reports through [Security](../SECURITY.md). Do not ask for secrets or unredacted logs in public issues. Label setup is a separate repository operation: ensure the labels above exist before merging template changes, since forms cannot create missing labels. The Feishu workflow sends notifications only; it does not perform triage.
34+
35+
This small label set draws on the type and information-request handling in [VS Code's triage guide](https://github.com/microsoft/vscode/wiki/Issues-Triaging) and the `needs-triage`/`needs-info` states used by [Ruff](https://github.com/astral-sh/ruff/labels). Contribution eligibility follows this repository's policy.
36+
1437
## Review and merge
1538

1639
1. Repository collaborators open an issue for substantial scope or submit a focused feature-branch PR. Other users may open issues to discuss ideas and proposals. Security details follow the private reporting process.

0 commit comments

Comments
 (0)