Skip to content

feat(minimax-pet): bundle the MMX octopus girl pet (0.5.11) - #115

Merged
MyPrototypeWhat merged 4 commits into
MiniMax-AI:mainfrom
antianqi:feat/mmx-octopus-bundled-pet
Nov 9, 2026
Merged

MyPrototypeWhat merged 4 commits into
MiniMax-AI:mainfrom
antianqi:feat/mmx-octopus-bundled-pet

Conversation

@antianqi

@antianqi antianqi commented Nov 8, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Adds an optional bundled pet to MiniMax Pet: MMX 章鱼娘 (mmx-octopus), an original chibi octopus girl — orange hair, a white vest, a brown plaid skirt, eight tentacles. Bumps the plugin to 0.5.11.

  • New atlas: miniapp/client/pets/mmx-octopus/{pet.json,spritesheet.png}, v1, 1536 × 1872, with the nine animation rows (idle, running right/left, waving, jumping, failed, waiting, working, review) and 57 cells.
  • v1, not v2. The atlas has no look directions, because this character is not produced from layered art. The packaged specification allows a nine-row v1 atlas when the look poses are unavailable, and the player already treats a v1 pet accordingly (supportsLook is false for it).
  • No runtime code changes. The bundled catalog already scans miniapp/client/pets/. The id mmx-octopus sorts after minimax-original and minimax-tako and before octopus-girl-v2, so the mint robot stays the default pet for fresh profiles.
  • Source first, then npm run package and copied into plugins/minimax-ai/minimax-pet. npm run check:package reports an exact byte match (40 files).
  • Docs: ARTWORK.md, PROVENANCE.md, README.md and README.zh-CN.md describe how the atlas was made and its license.

How the artwork was made

The character sheets and the action clips were produced in 2026-11 with a locally hosted open-weight image and video diffusion model driven from ComfyUI. Each clip was rendered at 736 × 1280. A local pipeline extracted the frames, cut the subject out of the background with a local segmentation model, and assembled the exact 1536 × 1872 v1 grid: 6/8/8/4/5/8/6/6/6 frames per row, with the unused trailing cells of the shorter rows left fully transparent. Generation is not deterministic, so the PNG itself is the source — there is no generate:art equivalent.

Every frame is scaled to one shared standing height. The foot baseline of a row is the lowest foot among that row's selected frames, so grounded frames sit on one baseline while airborne frames keep their relative lift.

Row mapping

Each row was checked against the bundled minimax-original atlas, which is the reference for what these nine states look like in this player: a mirrored pair of running rows, one arm raised for waving, arms up for jumping, an unhappy face for failed, and near-still poses for waiting, running and review. The rows map as follows.

Row State Source clip Frames Pose
0 idle idle-01 6 Standing, breathing and blinking
1 running-right move-03 8 Right-facing profile run cycle
2 running-left move-03 8 Left-facing profile run cycle
3 waving click-01 4 Greeting with both hands raised
4 jumping drag-01 5 Arms up, takeoff, apex, landing
5 failed click-03 8 Head down, arms crossed, sulking
6 waiting think-01 6 Standing, hand at the chin, attentive
7 running work-01 6 Standing, hands clasped, focused on the task
8 review cele-01 6 Hands clasped, pleased with the result

Both running rows come from one continuous 360-degree run clip: the right-facing and the left-facing profile halves of that turn. The waiting, running and review rows are near-still poses, like the bundled default pet's rows, which carry the meaning in the pose rather than in large movement. The failed row is a sulking reaction; the source footage contains no literal failure gesture. The working row keeps a full-body standing pose: the footage that types on a keyboard also contains the keyboard, and the footage that bends over the desk is a close-up that breaks the shared scale.

Tests

  • dev/pet-art-validation.test.mjs: the shipped mmx-octopus atlas passes the packaged Skill validator — ok: true, v1, 1536 × 1872, 57 frames, no warnings.
  • dev/smoke-api.mjs: /api/pets lists all four bundled pets in id order with minimax-original first, each with its own declared atlas version (the robot and the two v2 octopus girls are v2; mmx-octopus is v1). Every bundled pet.json and spritesheet is served as a PNG in its declared version, and the MMX octopus files are served with their exact packaged bytes.

Verification

  • node --test dev/*.test.mjs (source, Node v24.18.0, Linux): 257/257 pass.
  • node dev/smoke-api.mjs: 70/70 pass.
  • npm run check:package: exact byte match, 40 files.
  • Root npm run check: 87/87 tests pass.
  • The nine rows were reviewed frame by frame against the bundled default pet's rows, and the shared scale, foot baseline, cell edges and per-row motion were reviewed visually. The validator cannot judge any of that.
  • The atlas was copied into a local install of the bundled minimax-pet plugin and selected in its own UI on Windows, where it lists as "MMX 章鱼娘 v1 内置 使用中". That is a local plugin install, not a released client build.

On Windows these two suites cannot run at all, before or after this change: dev/smoke-api.mjs imports resolve(packageRoot, …) as a filesystem path (Node rejects a c: URL scheme on Windows), and dev/pet-art-validation.test.mjs spawns the CLI with script.pathname, which carries a leading / on Windows and therefore resolves to C:\C:\…. Both failures were reproduced identically on clean origin/main, so they are pre-existing and unrelated to this change; the numbers above come from Linux, where the repository CI runs.

Not verified

  • Installing this exact build in a released MiniMax Code client and selecting the bundled pet from the gallery.
  • Windows GUI.
  • The look directions: this pet ships v1 and therefore has none.

License and provenance

The character and artwork are contributed by antianqi under the MIT License; see ARTWORK.md. No third-party pet spritesheet was copied, and the source videos are not shipped.

Adds an optional bundled pet to MiniMax Pet: MMX 章鱼娘 (mmx-octopus), the original chibi octopus girl of 绿川椒餐饮 (the MMX brand).

New atlas: miniapp/client/pets/mmx-octopus/{pet.json,spritesheet.png}, v1, 1536 x 1872 with the nine animation rows and 57 cells. No look directions, because the character is not produced from layered art; the packaged specification allows a nine-row v1 atlas and the player already handles a v1 pet.

The atlas was generated from locally hosted diffusion model clips: extract frames, cut the subject out, scale every frame to one shared standing height and foot baseline, assemble the exact grid. Generation is not deterministic, so the PNG itself is the source.

Docs describe how the atlas was made and its license. Character and artwork contributed by antianqi (绿川椒餐饮 / MMX) under the MIT License.
… semantics

The first atlas reused footage that did not perform the requested action: the running-left row was a near-static arms-open pose, the failed row read as celebration, and the waiting row lost the legs in the source video. Rows are now selected per state from the 360-degree run clip, a clean bounce clip, a sulking clip and a thinking clip, and every row keeps one shared foot baseline. Validator: ok, version 1, 1536x1872, 57 frames, no warnings. Linux node --test 257/257, smoke 70/70.
…acter scale

The working row had been cut from a close-up of the source clip, which made the head about 19% wider than every other row. It now uses the full-body standing window of the same clip, whose head width matches the idle row within 1%. Validator: ok, version 1, 1536x1872, 57 frames, no warnings.
The pet metadata and the artwork, provenance and Chinese README notes now credit the individual contributor only. No brand name is shipped.
@MyPrototypeWhat
MyPrototypeWhat merged commit b8eaad5 into MiniMax-AI:main Nov 9, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants