Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
68 commits
Select commit Hold shift + click to select a range
4198174
fix: remove forced branching from bash guidance (#358)
AdhereZ Sep 25, 2026
258adde
feat: sync reviewed 0.5.5 runtime improvements (#367)
hetaoBackend Sep 27, 2026
a30a898
docs: publish feedback and private security contact channels (#360)
hetaoBackend Sep 27, 2026
0f6ad52
fix(tui): distinguish Bash recaps and import models during onboarding…
hetaoBackend Sep 27, 2026
51ac3b2
fix: measure token speed over model generation time (#373)
hetaoBackend Sep 28, 2026
836580e
chore: bump version to 0.5.6 (#374)
hetaoBackend Sep 28, 2026
0b7403c
feat(config): add M3.1 Flash Preview to the fallback catalog (#375)
hetaoBackend Sep 28, 2026
2aed5ca
chore: bump version to 0.5.7 (#377)
hetaoBackend Sep 28, 2026
3ba8169
fix(tui): display hook system messages without adding model context (…
amszuidas Sep 28, 2026
c7935eb
fix(tui): anchor restored sessions above inherited terminal history (…
hetaoBackend Sep 28, 2026
ec4a611
fix(tui): keep slow terminal output off the input loop (#379)
hetaoBackend Sep 28, 2026
e3d7855
chore: bump version to 0.5.8 (#380)
hetaoBackend Sep 28, 2026
c593d3d
feat: cascade explicit session stops to owned background work (#381)
hetaoBackend Sep 28, 2026
68284bb
fix: query structured Windows source volume properties (#383)
hetaoBackend Sep 28, 2026
4fdf523
feat(examples): add Pocket Pet demo and refresh README onboarding (#385)
hetaoBackend Sep 29, 2026
67a5c2a
fix(tui): dismiss stale terminal errors when a new turn starts (#388)
hetaoBackend Sep 29, 2026
9b9c07b
fix(tui): preserve native scrollback during automatic updates (#389)
hetaoBackend Sep 29, 2026
1e136bf
fix(tui): stabilize native history and diff overlay frames (#390)
hetaoBackend Sep 29, 2026
5f3240b
test: pin the srt-macos probe PATH and scale the BYOK serial timeout …
hetaoBackend Sep 29, 2026
d8a32b6
feat: sync MiniMax Code 0.5.9 runtime and TUI changes (#398)
hetaoBackend Sep 29, 2026
c8a39a5
chore: release MiniMax Code 0.5.9 (#399)
hetaoBackend Sep 30, 2026
3d369f5
Revert #390 and #389 to restore TUI scrollback baseline (#396)
hetaoBackend Sep 30, 2026
5683465
fix(tui): sync 0.5.10 prompt and run recovery fixes (#410)
hetaoBackend Sep 30, 2026
e77c763
chore: release MiniMax Code 0.5.10 (#411)
hetaoBackend Sep 30, 2026
8f114d9
fix: include hidden thinking in TPS timing (#413)
SaladDay Oct 1, 2026
bf3916f
fix: omit empty tools from OpenAI compaction requests (#199)
hetaoBackend Oct 1, 2026
c08148e
fix(tui): keep regular-mode history stable during live runs (#416)
hetaoBackend Oct 1, 2026
9150441
feat: sync and release MiniMax Code 0.6.0 (#421)
hetaoBackend Oct 1, 2026
ef2f43d
feat: sync and release MiniMax Code 0.6.1 (#422)
hetaoBackend Oct 1, 2026
564e916
fix(tui): keep side-session Esc and main run timer consistent (#423)
hetaoBackend Oct 2, 2026
7ea1c8c
chore(deps-dev): bump the tooling-minor-patch group across 1 director…
dependabot[bot] Oct 4, 2026
f07e6ef
fix(agent-core): bound hung model requests with first-event and idle …
hetaoBackend Oct 4, 2026
56221c1
fix(tui): defer rebuild after output-driven layout shrink (#429)
hetaoBackend Oct 4, 2026
1852771
fix(agent-core): cap images per request and recover sessions over the…
hetaoBackend Oct 5, 2026
4401b0e
Add opt-in lightweight context mode (#436)
hetaoBackend Oct 6, 2026
f7483f5
feat: add launch-scoped system prompt overrides and fix Ask/Plan turn…
hetaoBackend Oct 8, 2026
71b18b7
Fix locale-dependent capability tests (#443)
hetaoBackend Oct 8, 2026
56d2369
fix(cron): accept week unit in cron once --after durations (#435)
hetaoBackend Oct 8, 2026
a5b56b7
fix(tui): defer rebuild when scrollback rows change without input (#434)
hetaoBackend Oct 8, 2026
8348311
fix(tui): exclude buffered bursts from the output rate at turn start …
hetaoBackend Oct 8, 2026
553b19e
chore: release MiniMax Code 0.6.4 (#447)
hetaoBackend Oct 9, 2026
b26f634
chore: release MiniMax Code 0.6.5 (#458)
hetaoBackend Oct 9, 2026
f466590
fix(tui): keep npm-prefix updates on the Node pinned by the receipt (…
yujiachen-y Oct 9, 2026
c172cf9
fix: schedule exec timeouts above the Node timer limit in chunks (#448)
yujiachen-y Oct 9, 2026
810b11d
chore: record upstream a5b56b7 as already absorbed
cursoragent Oct 9, 2026
fccc7e6
merge: upstream c172cf9 (#454 output rate, #448 exec timeout chunks)
cursoragent Oct 9, 2026
7682398
fix: keep --effort on the MiniMax API-key request (#461)
hetaoBackend Oct 9, 2026
8e93b19
perf(runtime): trim per-turn reminders (budget thresholds, minute tim…
hetaoBackend Oct 9, 2026
5b4e0a4
fix: stop retrying oversized requests and recover with one forced com…
hetaoBackend Oct 9, 2026
c460f08
fix(runtime): restore session ID after compaction and drop forced ove…
hetaoBackend Oct 9, 2026
ebfdc00
fix(tui): support SOCKS5 proxies and stop ALL_PROXY from crashing sta…
amszuidas Oct 9, 2026
1ae5575
Merge commit 'ebfdc00a09b2209cf2201dc17316a8156285a942' into merge/up…
hermes-agent Oct 9, 2026
cee0791
fix: update Codex catalog client version to 0.162.0 (#477)
yujiachen-y Oct 11, 2026
dc1315d
fix: update Codex catalog client version to 0.162.0 (#477)
yujiachen-y Oct 11, 2026
e798b46
feat(tui): report program status with OSC 7501 (#471)
yujiachen-y Oct 13, 2026
ed4ec3d
feat(tui): report program status with OSC 7501 (#471)
yujiachen-y Oct 13, 2026
851b583
docs: correct stale source and npm version references to 0.6.3 / 0.6.…
hetaoBackend Oct 15, 2026
bb62c64
docs(plugins): publish Plugin V1 format contract, schemas and a depen…
hetaoBackend Oct 15, 2026
9a93560
feat: support Google BYOK providers through Pi (#492)
SaladDay Oct 15, 2026
5a91916
Merge commit '9a93560' into merge/upstream-c172cf9
hermes-agent Oct 15, 2026
ad0b84b
test(tui): drop stale upstream MCode title assertion after fork-ident…
hermes-agent Oct 15, 2026
a79348f
feat: add contextManagement.compactionTriggerAt to lower the auto-com…
yujiachen-y Oct 19, 2026
c21e88e
feat(config): promote M3.1 Flash to the default delivered model (#509)
hetaoBackend Oct 19, 2026
c93fe82
Merge commit 'c21e88ef88b1688546fdd579614a54c04626e67b' into merge/up…
hermes-agent Oct 19, 2026
5821f7c
docs(tui): add missing changelog entries for 0.5.0-0.6.5 (#511)
hetaoBackend Oct 20, 2026
ab767bd
Merge commit '5821f7c' into merge/upstream-c172cf9
hermes-agent Oct 20, 2026
da22f11
fix(skills): don't wipe shared .builtin-skills; add @minimax-ai/code-…
SaladDay Oct 21, 2026
5b7cdec
Merge commit 'da22f11' into merge/upstream-c172cf9
hermes-agent Oct 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions .github/workflows/cli-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -179,3 +179,45 @@ jobs:
GH_REPO: ${{ github.repository }}
MCODE_RELEASE_DIRECTORY: ${{ runner.temp }}/package
MCODE_RELEASE_REPORTS: ${{ runner.temp }}/reports
# Publishes the single-bin ACP launcher (@minimax-ai/code-acp) in lockstep
# with @minimax-ai/code, which the ACP registry runs via `npx ... acp`.
# Opt-in: set repo variable MCODE_ACP_PUBLISH=true and secret NPM_TOKEN.
publish-acp:
needs: [build, publish]
if: github.event_name == 'push' && vars.MCODE_ACP_PUBLISH == 'true'
permissions:
contents: read
id-token: write
runs-on: ubuntu-latest
timeout-minutes: 30
env:
VERSION: ${{ needs.build.outputs.version }}
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7
with:
persist-credentials: false
- uses: actions/setup-node@820762786026740c76f36085b0efc47a31fe5020 # v7.0.0
with:
node-version: '24'
registry-url: 'https://registry.npmjs.org'
package-manager-cache: false
- name: Wait for @minimax-ai/code at this version on npm
shell: bash
run: |
for _ in $(seq 1 80); do
npm view "@minimax-ai/code@$VERSION" version >/dev/null 2>&1 && exit 0
sleep 20
done
echo "@minimax-ai/code@$VERSION not on npm after waiting" >&2; exit 1
- name: Stamp and publish @minimax-ai/code-acp
working-directory: packages/code-acp
shell: bash
run: |
if npm view "@minimax-ai/code-acp@$VERSION" version >/dev/null 2>&1; then
echo "already published"; exit 0
fi
npm pkg set version="$VERSION" "dependencies.@minimax-ai/code=$VERSION"
tag=latest; [[ "$VERSION" == *-* ]] && tag=next
npm publish --access public --provenance --tag "$tag"
env:
NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
87 changes: 87 additions & 0 deletions docs/community/groups.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# Community groups

This document defines the three community layers, what each layer is for, and the rule for moving
between them. It is public so that joining a group is a predictable decision rather than a guess.

## Layers

| Layer | Who can join | What belongs there | What does not |
| --- | --- | --- | --- |
| Newcomer | Anyone with the group QR code or the Discord link | Install, configuration, first-run usage, frequently asked questions | Unreleased features, internal roadmap, internal test builds |
| Advanced | Anyone who has opened at least one issue, or who is invited | Architecture discussion, PR intentions, performance findings, design proposals | Internal roadmap, unreleased features |
| Insider | Invitation only, after signing the external-disclosure rule | Test builds, unreleased features, early feedback | Screenshots of accounts, session identifiers, or unreleased versions |

The three layers are rules first and separate groups second. A new group with fewer than 50 active
members is not created; the rule applies to the existing group until the volume justifies a split.

## The one entry point

Every layer carries the same pinned card, pointing at the same three places:

1. **Report an issue** — `https://github.com/MiniMax-AI/minimax-code/issues/new/choose`
2. **Claim a task** — the `good first issue` label:
`https://github.com/MiniMax-AI/minimax-code/labels/good%20first%20issue`
3. **See the on-call rota and the weekly replay** — [Community on-call](oncall.md)

Feedback posted in chat without an issue number is not tracked. If a chat report is not converted into
an issue within 24 hours, the on-call owner raises it on the reporter's behalf.

## Moving between layers

- **Newcomer → Advanced**: automatic, as soon as the member opens an issue or is invited. There is no
application and no approval.
- **Advanced → Insider**: invitation only. The invite includes the external-disclosure rule below, and
the rule is acknowledged before any test build is shared.
- **Insider → public**: content returns to a public layer only through the formal release notes. Chat
history is never the source for external material.

## External-disclosure rule for the Insider layer

Acknowledged by every Insider member before receiving a test build.

1. Test builds, unreleased feature names, and internal version numbers stay in the Insider layer. They
are not posted to a public group, a public issue, a screenshot, a blog post, or a video.
2. Account identifiers, session identifiers, tokens, and customer project content are never shared in
any layer. Use synthetic files and dedicated test accounts.
3. External material about a feature comes from the release notes for a released version, not from a
chat log. If a screenshot is needed for a public post, it must be regenerated from a released
build.
4. A leak is reported to the release coordinator immediately, and the affected material is withdrawn
as soon as it is identified. Reporting a leak is never held against the reporter.

## What a layer may be used for

| Activity | Newcomer | Advanced | Insider |
| --- | --- | --- | --- |
| Install and configuration help | Yes | Yes | Yes |
| Bug report and question answering | Yes | Yes | Yes |
| Weekly feedback replay | Yes | Yes | Yes |
| AMA session (biweekly) | Yes | Yes | Yes |
| Showcase wall submission | Yes | Yes | Yes |
| Architecture and design discussion | No | Yes | Yes |
| Pull request review participation | No | On invitation | Yes |
| Test build distribution | No | No | Yes |

## Showcase wall

Showcases are collected in `docs/showcase/` and mirrored to a GitHub Discussions category.

- **Threshold:** a showcase must be runnable — a repository, or a prompt that reproduces it, plus the
verification command. Screenshots alone are not accepted.
- **Every showcase produces a task.** Each accepted showcase must yield at least one
`good first issue` task, by extracting the step a newcomer could do independently. This is the point
of the wall: a showcase that produces no task brings in visitors who find nothing to do.
- **Low bar by design:** the entry requirement is "post a prompt that runs". A showcase is not a
product pitch.

## AMA sessions

Biweekly, 30 minutes: 20 minutes of product questions, 10 minutes walking through live issues.

- **Agenda comes from the queue.** Every question discussed is drawn from the current
`needs-triage` queue or a contribution request. The host does not choose topics independently.
- **Recording and minutes** are archived to the Discussions `AMA` category, with the issue numbers
discussed listed in the minutes.
- **Failure condition:** if three consecutive sessions draw fewer than 30% of registrants, the format
changes to a smaller closed-door session over live issues instead of a public AMA. Adding more
sessions is not the response.
156 changes: 156 additions & 0 deletions docs/community/oncall.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,156 @@
# Community on-call and issue SLA

This document defines who watches the community channels, what counts as a response, and how
feedback is replayed back to reporters. It is a public commitment: anyone reading it should be able
to predict when they will hear back.

## Scope

The community on-call covers two surfaces:

| Surface | Meaning | Owner |
| --- | --- | --- |
| Community chat (Chinese Feishu group, Discord) | User questions, feedback, event coordination | On-call A |
| GitHub issues (`MiniMax-AI/minimax-code`) | Bug reports, feature requests, contribution requests | On-call B |

These are two different roles and they are staffed by two different people. A single person holding
both roles cannot cover the 18:00–20:00 window, so that window is explicitly not covered by either
role.

## Rotation

| Role | Window | Timezone | Coverage |
| --- | --- | --- | --- |
| On-call A | Weekdays 10:00–18:00 | Asia/Shanghai | Community chat |
| On-call B | Daily 09:00, 20:00–23:00, and weekends | Asia/Shanghai | GitHub issues |
| Uncovered | 18:00–20:00 weekdays | — | Neither role; escalate to the release coordinator |

The rotation is published in the community chat as a pinned card. It is replaced every two weeks.

## Response SLA

**Every open issue must receive a triage action within 48 hours of being opened.** A triage action is
one of the following, and one of them counts:

- applying a type and product label;
- asking the reporter for the specific missing information (`needs-info`);
- linking a duplicate to its original issue;
- recording a next step in a comment, including a decision to decline with a reason.

A triage action is not a promise to fix or to ship in a release. Classification alone does not commit
the project to a delivery date, and this distinction is stated in every response so reporters know
what they are getting.

Anything that has been open for more than 48 hours without any of the above is a SLA breach and is
listed in the weekly feedback replay.

## Label hygiene

- An issue must not stay on `needs-triage` after it is closed. When closing an issue, remove
`needs-triage` in the same action.
- `needs-triage` counts only open issues. Reporting a `needs-triage` ratio that includes closed
issues overstates the backlog; the canonical number is `is:issue is:open label:needs-triage`.
- When an issue is closed as `duplicate` or `wontfix`, the reason is stated in a comment, per the
triage policy in [Maintainers](../maintainers.md).

## Contribution requests

A request for repository access is a request for a decision, and a decision must be communicated.
Even when the answer is "no", the answer is sent.

- Tag contribution requests with `contribution-request` so the funnel from request to decision is
measurable.
- Respond within 48 hours with one of: approved, declined with a reason, or already completed
internally.
- **When the underlying task is completed internally first, the requester is told explicitly and their
fork and branch are still declared valid.** If the internal fix missed anything, the requester is
invited to open a fork PR. Silently closing a contribution request because the work was done
elsewhere is treated as a SLA breach, not as resolution.
- Submission of a fork PR does not require collaborator access. Access is a convenience for
maintainers, not a precondition for contributing.

## Weekly feedback replay

Every Friday, the on-call owner posts a single message to the community chat summarising the week:

- every issue that received a triage action, with its number and what the action was;
- every issue that was asked for more information, and what is still needed;
- every issue that was closed, and why;
- every open issue that has breached the 48-hour SLA, listed by number.

The replay links issue numbers directly. It exists so that a reporter can see what happened to their
report without having to ask, and it is the mechanism that keeps feedback from being silently dropped.

## Reply templates

### Triage response

```
Thanks for the report — received and triaged.

Triage action: <label / needs-info / duplicate / next step recorded>, removed from `needs-triage`.

What we need from you to take this further:
1. <specific question>
2. <specific question>

We will reply within 48 hours. This triage action is not a commitment to a release date.
```

### Contribution request — already completed internally

```
Thanks for the patch and for following the contribution route. Sorry for the long silence on this
thread; that was our failure, not yours.

The task you prepared for (#<n>) was completed internally by #<n> and #<n>, so that specific task is no
longer open.

Your fork and branch are still valid. If you spot anything the internal fix missed or got wrong,
please open a fork PR — no collaborator access is required to submit a fork PR, and we review it
within 48 hours. The same applies to any other change you have prepared.

If you would like to pick up a scoped task, the `good first issue` label is the canonical list:
<label url> — items there are expected to be independently completable, with
`pnpm verify --profile docs` as the verification command for documentation tasks.
```

The two sentences that matter here are the second and third paragraphs. Reporting that the work was
done elsewhere, and then stating that the requester's work is still valid, is what keeps a second
applicant from being treated the same way. Never write "the task is already done, please resubmit".

### Contribution request — approved

```
Approved. You now have the requested access.

The change is expected to be scoped in an issue first, then submitted as a PR from your fork.
Please run the verification command for the profile that covers your change
(`pnpm verify --profile docs` for documentation) and paste the real command output into the PR
description. Review target is 48 hours; if you have not heard back by then, ping the on-call owner.
```

### Security-relevant report

```
Thank you for the detailed report. This is treated as a safety-priority report and escalated for a
code-level review.

Please do not post further exploit detail in this public thread. If the reproduction involves a
pattern that could affect other users, open a private report per SECURITY.md and reference this issue
number.

We will reply within 48 hours.
```

## Reporting

The on-call owner reports these numbers weekly to the community chat and to the project maintainers:

| Metric | Definition |
| --- | --- |
| 48h triage coverage | share of issues opened in the week that received a triage action within 48 hours |
| Open `needs-triage` | open issues still carrying `needs-triage` (open scope only) |
| SLA breaches | issues open for more than 48 hours with no triage action |
| Zero-reply issues | open issues with no comment at all |
| Contribution request resolution time | hours from request to a communicated decision |
11 changes: 11 additions & 0 deletions docs/examples.md
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,17 @@ The provider is stored with no `apiKey` and no `authMode`, and every request to

Providers created by `kcode 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.

Google-compatible endpoints use Pi's native Google adapter. Add the model manually with a base URL ending at the API version (not `/models`):

```bash
mcode provider add --name "OpenCode Go Gemini" \
--base-url https://opencode.ai/inference/go/v1 \
--api-format google-generative-ai --model gemini-4-argon-contributor \
--api-key-env OPENCODE_API_KEY --use
```

Google requests use `x-goog-api-key`. Model requests, tool calls and thinking parameters are handled by Pi.

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`:

```yaml
Expand Down
10 changes: 5 additions & 5 deletions docs/open-source-status.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
# Source status

The current source target is **TUI 0.4.12**. This repository contains the terminal TUI, headless CLI, ACP implementation, and the public distribution tooling around them.
The current source target is **TUI 0.6.3**. This repository contains the terminal TUI, headless CLI, ACP implementation, and the public distribution tooling around them.

## Version and evidence baseline

| Concern | Current value | Source of truth |
| --- | --- | --- |
| TUI capability version | 0.4.12 | `packages/tui/package.json` |
| Root workspace version | 0.4.12, aligned with the TUI | Root `package.json` |
| Published npm observation | `@minimax-ai/code@0.4.12`; npm `latest` was 0.4.12 on 2026-09-18 | Public npm registry |
| TUI capability version | 0.6.3 | `packages/tui/package.json` |
| Root workspace version | 0.6.3, aligned with the TUI | Root `package.json` |
| Published npm observation | `@minimax-ai/code@0.6.9`; npm `latest` was 0.6.9 on 2026-10-13 | Public npm registry |
| Shared-source baseline | `9b9885e42a3cf1a3df1cfa52a46e4fdb034cfcee` | `release/extraction.json` |
| Embedded mcode-tools | 0.0.4, extracted from public `@minimax-ai/code@0.3.11` | `scripts/lib/mcode-tools-artifact.mjs` |
| Historical live-service acceptance and demo | TUI 0.3.11, recorded 2026-09-11 | `docs/verification.md`, `docs/release-audit.md`, `docs/assets/tui-demo.png` |

The product, TUI, and root workspace use the same 0.4.12 version. The embedded tool has its own version. Workspace and local-build manifests remain `private: true` to prevent accidental npm publication. Matching version strings do not prove that this source tree reproduces the published npm tarball.
The product, TUI, and root workspace use the same 0.6.3 version. The embedded tool has its own version. Workspace and local-build manifests remain `private: true` to prevent accidental npm publication. Matching version strings do not prove that this source tree reproduces the published npm tarball.

## Source boundary

Expand Down
Loading
Loading