Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ The MiniMax Code Agent communicates through the host MCP client. Business reques

| MiniApp | What it does | Author |
| --- | --- | --- |
| [OpenFilm](plugins/cristinamadureira353-svg/openfilm/) | Run OpenFilm inside MiniMax Code with the desktop interface: Studio editor, chat column and local agents, with a web-Studio fallback | [最爱双皮奶](https://github.com/cristinamadureira353-svg) |
| [Dynamic Workflow Console](plugins/stevenjj33/workflow-console/) | Run and supervise MiniMax Code dynamic workflows from one page: live status, a stage-and-dependency flow graph, per-node output, approval and control, templates, and report export | [stevenjj33](https://github.com/stevenjj33) |
| [MiniMax Photo](plugins/webguhui/minimax-photo/) | Layered image editing with an in-app AI assistant, local recovery and programmatic editing tools | [WebGuHui](https://github.com/WebGuHui) |
| [MiniMax Video](plugins/webguhui/minimax-video/) | Local video editing with captions, a host Agent assistant, reviewable timeline edits, and MP4/MP3 export | [WebGuHui](https://github.com/WebGuHui) |
Expand Down
1 change: 1 addition & 0 deletions README.zh-CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ MiniMax Code Agent 通过宿主 MCP 客户端与 MiniApp 协作。业务请求

| MiniApp | 功能 | 作者 |
| --- | --- | --- |
| [OpenFilm](plugins/cristinamadureira353-svg/openfilm/) | 把 OpenFilm 装进 MiniMax Code:桌面版界面(Studio 编辑器 + 聊天栏 + 本地 agent),桌面模式不可用时回落网页版 | [最爱双皮奶](https://github.com/cristinamadureira353-svg) |
| [动态工作流控制台](plugins/stevenjj33/workflow-console/README.zh-CN.md) | 在一个页面里运行并盯住 MiniMax Code 动态工作流:实时状态、按阶段与依赖画出的流程图、节点输出、审核与控制、模板与报告导出 | [stevenjj33](https://github.com/stevenjj33) |
| [MiniMax Photo](plugins/webguhui/minimax-photo/) | 图层图片编辑、应用内 AI 助手、本地恢复与程序化编辑工具 | [WebGuHui](https://github.com/WebGuHui) |
| [MiniMax Video](plugins/webguhui/minimax-video/) | 本地视频剪辑、字幕、宿主 Agent 助手、可预览的时间线修改与 MP4/MP3 导出 | [WebGuHui](https://github.com/WebGuHui) |
Expand Down
11 changes: 11 additions & 0 deletions plugins/cristinamadureira353-svg/openfilm/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# 自己机器上的覆盖配置(个人路径、个人偏好),不进仓库
miniapp.config.local.json

# 依赖与系统垃圾
node_modules/
.DS_Store
*.log

# 运行时的东西(token、锁、缓存)不该进包
panel-token
starting.lock
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"schemaVersion": 1,
"name": "openfilm",
"displayName": "OpenFilm",
"version": "1.0.0",
"description": "OpenFilm 本体装进 MiniMax Code:整个面板就是 OpenFilm 的完整界面(Studio 的编辑器 + 右边的聊天栏 + 本地 agent),没有额外的壳。跑的是 GitHub 官方仓库当前最新的发布版(npx openfilm@0.2.5),连正式版项目库 ~/Movies/OpenFilm/Projects。",
"author": "cristinamadureira353-svg",
"icon": "icon.png",
"category": "Productivity",
"exampleQueries": [
"打开 OpenFilm 面板",
"在 OpenFilm 里看未命名那个项目",
"切到未命名 3 那个项目"
],
"apps": [],
"mcpServers": [],
"skills": [
"skills/openfilm/SKILL.md"
],
"hooks": []
}
21 changes: 21 additions & 0 deletions plugins/cristinamadureira353-svg/openfilm/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2026 cristinamadureira353-svg

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
20 changes: 20 additions & 0 deletions plugins/cristinamadureira353-svg/openfilm/NOTICE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# 原作者与出处 / Original project and credit

**OpenFilm 是原作者的开源项目,原仓库:[openfilm/openfilm](https://github.com/openfilm/openfilm)。**

OpenFilm 是原作者开源的作品,其源代码、界面与许可证均见原仓库:
https://github.com/openfilm/openfilm (许可证见该仓库的 `LICENSE` 等文件)。

**本仓库(openfilm-miniapp)只是将 OpenFilm 打包为 MiniMax Code 中的 MiniApp,方便在 MiniMax Code 里直接使用。**

**本仓库的打包与公开分享已获得 OpenFilm 原作者本人授权(2026-10-24,由本仓库所有者确认)。**

- 本仓库不是 OpenFilm 官方仓库,也不隶属于原作者团队;上述打包与分享已获原作者本人授权。
- 本仓库不包含 OpenFilm 的源代码;运行时通过 `npx openfilm` 与用户本地的 OpenFilm 克隆来驱动它。
- 打包过程中没有修改 OpenFilm 本身的行为;OpenFilm 的商标与名称归其权利人所有。

---

**OpenFilm is an open-source project by its authors: [openfilm/openfilm](https://github.com/openfilm/openfilm).**

This repository only packages OpenFilm as a MiniApp for MiniMax Code. It is not the OpenFilm project and is not affiliated with its authors. **The original author has authorized this packaging and public sharing (confirmed by the repository owner on 2026-10-24).** No OpenFilm source code is vendored here; OpenFilm is driven at runtime via `npx openfilm` and the user's local clone. OpenFilm's own license and notices apply to OpenFilm itself.
98 changes: 98 additions & 0 deletions plugins/cristinamadureira353-svg/openfilm/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
# OpenFilm MiniApp

English | [简体中文](README.zh-CN.md)

> **原作者 / Original project: [openfilm/openfilm](https://github.com/openfilm/openfilm).** OpenFilm is an open-source project by its authors.
> **This repository only packages OpenFilm as a MiniApp for MiniMax Code** — it is not the OpenFilm project, is not affiliated with its authors, and contains no OpenFilm source code. **The original author has authorized this packaging and public sharing.** See [NOTICE.md](NOTICE.md).

Run **OpenFilm inside MiniMax Code** — the desktop app's interface (the Studio editor **with the chat column and local agents**), not just the web Studio.

The panel is the OpenFilm desktop page itself. The native bridge the desktop app normally gets from Electron (`window.openfilmNative`) is replaced with an HTTP one, and the desktop app's own main-process handlers (chat, local agents, skills, agent roster) are reused as plain Node modules. So the chat, the agent menu and Settings → Agents behave like the desktop app, because they *are* the desktop app's code.

## What you get

- The full OpenFilm editor: media pool, viewer, inspector, timeline, export.
- The desktop chat column: conversation history, composer, agent menu, local agent turns.
- Settings → Agents with the real roster (Codex, Claude Code, MiniMax Code, BYOK, …).
- Opens your most recent OpenFilm project on launch; switching projects happens inside OpenFilm itself (no extra chrome of our own).
- An agent-callable endpoint (`POST /miniapp/open-desktop`) that launches/activates the installed OpenFilm desktop app.
- A pure web-Studio fallback when the desktop mode is unavailable.

## Requirements

- MiniMax Code **3.1.2 or newer** on macOS (the Host's loopback credential guards the panel's port).
- Node.js 22+ and `npx` (the panel starts OpenFilm with `npx -y openfilm@0.2.5`).
- **Desktop mode only:** a local clone of [openfilm/openfilm](https://github.com/openfilm/openfilm) and one shell build. `@openfilm/desktop` is not published to npm, so the desktop handlers can only come from the repository.

```sh
git clone https://github.com/openfilm/openfilm.git ~/Developer/openfilm
cd ~/Developer/openfilm && pnpm install
pnpm --filter @openfilm/desktop build:shell
```

Without the repository the panel still works — it falls back to the plain web Studio (no chat column).

## Install

Copy this whole plugin directory (including the hidden `.minimax-plugin/` directory) into your MiniMax Code plugins directory, e.g. `~/.minimax/plugins/openfilm/`, restart MiniMax Code, then ask the Agent to "打开 OpenFilm 面板".

The manifest must end up at `~/.minimax/plugins/openfilm/.minimax-plugin/plugin.json`.

## Configuration

Edit `miniapp.config.json` in the plugin directory. Put machine-specific overrides in `miniapp.config.local.json` (gitignored, never committed).

| Key | Default | Meaning |
|---|---|---|
| `openfilmBin` / `openfilmArgs` | `npx` / `["-y","openfilm@0.2.5"]` | Which OpenFilm to start. |
| `flavor` | `release` | Which project list to show: `release` (`~/.openfilm`, `~/Movies/OpenFilm/Projects`) or `dev` (`~/.openfilm-dev`). |
| `desktopMode` | `true` | Desktop interface + chat + local agents. `false` = plain web Studio. |
| `openfilmRepo` | `~/Developer/openfilm` | Where the OpenFilm clone is (also `OPENFILM_REPO` env). Needed for desktop mode. |
| `shellDist` | `<repo>/apps/desktop/shell/dist` | The built desktop page. |
| `desktopApp` | auto-detected | The app the `POST /miniapp/open-desktop` endpoint launches. `[{ "path": "…", "args": ["…"] }]`; auto-detects `/Applications/OpenFilm.app` and dev runtimes in the clone. |
| `studioHome` / `studioPort` | `context.dataDir/openfilm-studio` / `4823` | The panel's own Studio home/port. Change them for isolated tests. |

## Data & access

- Starts `openfilm open` (via `npx`) on `127.0.0.1`, with its own `OPENFILM_HOME` (`openfilm-studio/` under the Host-assigned `context.dataDir`). Your desktop app's own Studio home is never taken over.
- State (Studio home, preferences, caches, logs, BYOK master key) is stored in that `context.dataDir` directory only.
- Reads (never writes) `studio.json` and each project's `.film/id` under the selected OpenFilm home to list projects.
- Reads/writes project data through OpenFilm's own API and desktop handlers (chat records under `.film/`, agent sessions in project folders), exactly as the desktop app does.
- Network: `npx` downloads OpenFilm on first run; agents you invoke use their own accounts/network as usual.

## Security

- **Loopback authentication is done by the Host.** Since MiniMax Code 3.1.2 the Host installs a per-run credential check on every `node:http` server in the MiniApp process: requests without the credential — including direct local connections and WebSocket upgrades — get `401` before reaching this package. This package therefore implements no token logic of its own.
- **No secrets in pages, client JavaScript, logs, or error responses.** The Studio key stays in the Node process and is only attached when proxying `/api/*` to Studio. Nothing is injected into the served HTML.
- **State lives in `context.dataDir`** (`openfilm-studio/` under it), owned by the Host. Nothing durable is written into the plugin directory.
- BYOK keys saved through the panel are sealed with AES-256-GCM using a local `0600` master key in that state directory (the desktop app uses the OS keychain instead; the two do not share key storage).

The panel can drive local agents in project folders — install it only if you trust it, and review what you let an agent do.

## Limitations

- The Electron window itself cannot be embedded in a MiniApp; this runs the desktop *interface* with an HTTP native bridge.
- Native file/folder pickers and screen capture return `null` (no native dialogs in a browser).
- Desktop mode needs the OpenFilm clone + shell build (see Requirements).
- Tested on macOS only. Windows/Linux are untested (some code paths use `open`, `pbcopy`, `ps`).

## Tested environment

- MiniMax Code desktop 3.1.2+ on macOS (Apple Silicon), Node 22, OpenFilm 0.2.5.
- Desktop page renders with chat column and real conversation history; project switching works.
- `chat:load` returns real sessions; agent roster lists 11 agents; Codex ACP probe starts a session; Claude Code correctly reports not-installed.
- Acceptance script: 37 checks covering boot, tree, desktop IPC, roster, SSE, web fallback, missing-shell error, concurrent boot (one Studio only), dispose with open SSE streams, and the preview path (film page proxied, editor origin rewritten, bridge allowed same-origin, media served).

Run the acceptance yourself:

```sh
node test/accept-miniapp.mjs # SKIP_PROBE=1 to skip the Codex ACP probe
```

It uses temporary homes and ports 4900–4903 and cleans up after itself; it never touches your running panel or writes your projects. Desktop-mode checks need the OpenFilm clone + shell build (see Requirements). After installing, also open the panel once and check Settings → Agents.

## License

MIT — see [LICENSE](LICENSE).

OpenFilm is by the authors of [openfilm/openfilm](https://github.com/openfilm/openfilm); this package only drives it at runtime and contains no OpenFilm source code. See [NOTICE.md](NOTICE.md) for the full attribution.
Loading
Loading