Skip to content

Commit 41bfbcc

Browse files
cristinamadureira353-svg沐梵尼
authored andcommitted
Add OpenFilm MiniApp
Run OpenFilm inside MiniMax Code with the desktop interface: the Studio editor plus the desktop chat column and local agents, by serving the desktop page and bridging window.openfilmNative over HTTP, reusing the desktop app's own Node handlers (chat, local agents, skills, roster). - desktopMode with web-Studio fallback when the OpenFilm clone/shell build is unavailable - project switcher, desktop-app launcher, concurrent-boot lock, dispose that closes agents, SSE streams and only our own Studio - state under context.dataDir; no secrets in pages or logs - README (en/zh-CN), LICENSE, root README rows Validated: npm run check (this package OK, 0 errors 0 warnings); 32-check acceptance covering boot, tree, desktop IPC, roster, SSE, web fallback, missing shell, concurrent boot and dispose.
1 parent 62773d1 commit 41bfbcc

18 files changed

Lines changed: 2338 additions & 0 deletions

File tree

‎README.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ The MiniMax Code Agent communicates through the host MCP client. Business reques
5757

5858
| MiniApp | What it does | Author |
5959
| --- | --- | --- |
60+
| [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) |
6061
| [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) |
6162
| [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) |
6263
| [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) |

‎README.zh-CN.md‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ MiniMax Code Agent 通过宿主 MCP 客户端与 MiniApp 协作。业务请求
5757

5858
| MiniApp | 功能 | 作者 |
5959
| --- | --- | --- |
60+
| [OpenFilm](plugins/cristinamadureira353-svg/openfilm/) | 把 OpenFilm 装进 MiniMax Code:桌面版界面(Studio 编辑器 + 聊天栏 + 本地 agent),桌面模式不可用时回落网页版 | [最爱双皮奶](https://github.com/cristinamadureira353-svg) |
6061
| [动态工作流控制台](plugins/stevenjj33/workflow-console/README.zh-CN.md) | 在一个页面里运行并盯住 MiniMax Code 动态工作流:实时状态、按阶段与依赖画出的流程图、节点输出、审核与控制、模板与报告导出 | [stevenjj33](https://github.com/stevenjj33) |
6162
| [MiniMax Photo](plugins/webguhui/minimax-photo/) | 图层图片编辑、应用内 AI 助手、本地恢复与程序化编辑工具 | [WebGuHui](https://github.com/WebGuHui) |
6263
| [MiniMax Video](plugins/webguhui/minimax-video/) | 本地视频剪辑、字幕、宿主 Agent 助手、可预览的时间线修改与 MP4/MP3 导出 | [WebGuHui](https://github.com/WebGuHui) |
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# 自己机器上的覆盖配置(个人路径、个人偏好),不进仓库
2+
miniapp.config.local.json
3+
4+
# 依赖与系统垃圾
5+
node_modules/
6+
.DS_Store
7+
*.log
8+
9+
# 运行时的东西(token、锁、缓存)不该进包
10+
panel-token
11+
starting.lock
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
{
2+
"schemaVersion": 1,
3+
"name": "openfilm",
4+
"displayName": "OpenFilm",
5+
"version": "1.0.0",
6+
"description": "OpenFilm 本体装进 MiniMax Code:整个面板就是 OpenFilm 的完整界面(Studio 的编辑器 + 右边的聊天栏 + 本地 agent),没有额外的壳。跑的是 GitHub 官方仓库当前最新的发布版(npx openfilm@0.2.5),连正式版项目库 ~/Movies/OpenFilm/Projects。",
7+
"author": "cristinamadureira353-svg",
8+
"icon": "icon.png",
9+
"category": "Productivity",
10+
"exampleQueries": [
11+
"打开 OpenFilm 面板",
12+
"在 OpenFilm 里看未命名那个项目",
13+
"切到未命名 3 那个项目"
14+
],
15+
"apps": [],
16+
"mcpServers": [],
17+
"skills": [
18+
"skills/openfilm/SKILL.md"
19+
],
20+
"hooks": []
21+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 cristinamadureira353-svg
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
# 原作者与出处 / Original project and credit
2+
3+
**OpenFilm 的原作者是 [openfilm/openfilm](https://github.com/openfilm/openfilm)。**
4+
5+
OpenFilm 是原作者的作品,其源代码、界面与许可证均见原仓库:
6+
https://github.com/openfilm/openfilm (许可证见该仓库的 `LICENSE` 等文件)。
7+
8+
**本仓库(openfilm-miniapp)只是将 OpenFilm 打包为 MiniMax Code 中的 MiniApp,方便在 MiniMax Code 里直接使用。**
9+
10+
**本仓库的打包与公开分享已获得 OpenFilm 原作者本人授权(2026-10-24,由本仓库所有者确认)。**
11+
12+
- 本仓库不是 OpenFilm 官方仓库,也不隶属于原作者团队;上述打包与分享已获原作者本人授权。
13+
- 本仓库不包含 OpenFilm 的源代码;运行时通过 `npx openfilm` 与用户本地的 OpenFilm 克隆来驱动它。
14+
- 打包过程中没有修改 OpenFilm 本身的行为;OpenFilm 的商标与名称归其权利人所有。
15+
16+
---
17+
18+
**OpenFilm is by the authors of [openfilm/openfilm](https://github.com/openfilm/openfilm).**
19+
20+
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.
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
# OpenFilm MiniApp
2+
3+
English | [简体中文](README.zh-CN.md)
4+
5+
> **原作者 / Original project: [openfilm/openfilm](https://github.com/openfilm/openfilm).** OpenFilm is by its authors.
6+
> **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).
7+
8+
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.
9+
10+
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.
11+
12+
## What you get
13+
14+
- The full OpenFilm editor: media pool, viewer, inspector, timeline, export.
15+
- The desktop chat column: conversation history, composer, agent menu, local agent turns.
16+
- Settings → Agents with the real roster (Codex, Claude Code, MiniMax Code, BYOK, …).
17+
- Opens your most recent OpenFilm project on launch; switching projects happens inside OpenFilm itself (no extra chrome of our own).
18+
- An agent-callable endpoint (`POST /miniapp/open-desktop`) that launches/activates the installed OpenFilm desktop app.
19+
- A pure web-Studio fallback when the desktop mode is unavailable.
20+
21+
## Requirements
22+
23+
- MiniMax Code **3.1.2 or newer** on macOS (the Host's loopback credential guards the panel's port).
24+
- Node.js 22+ and `npx` (the panel starts OpenFilm with `npx -y openfilm@0.2.5`).
25+
- **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.
26+
27+
```sh
28+
git clone https://github.com/openfilm/openfilm.git ~/Developer/openfilm
29+
cd ~/Developer/openfilm && pnpm install
30+
pnpm --filter @openfilm/desktop build:shell
31+
```
32+
33+
Without the repository the panel still works — it falls back to the plain web Studio (no chat column).
34+
35+
## Install
36+
37+
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 面板".
38+
39+
The manifest must end up at `~/.minimax/plugins/openfilm/.minimax-plugin/plugin.json`.
40+
41+
## Configuration
42+
43+
Edit `miniapp.config.json` in the plugin directory. Put machine-specific overrides in `miniapp.config.local.json` (gitignored, never committed).
44+
45+
| Key | Default | Meaning |
46+
|---|---|---|
47+
| `openfilmBin` / `openfilmArgs` | `npx` / `["-y","openfilm@0.2.5"]` | Which OpenFilm to start. |
48+
| `flavor` | `release` | Which project list to show: `release` (`~/.openfilm`, `~/Movies/OpenFilm/Projects`) or `dev` (`~/.openfilm-dev`). |
49+
| `desktopMode` | `true` | Desktop interface + chat + local agents. `false` = plain web Studio. |
50+
| `openfilmRepo` | `~/Developer/openfilm` | Where the OpenFilm clone is (also `OPENFILM_REPO` env). Needed for desktop mode. |
51+
| `shellDist` | `<repo>/apps/desktop/shell/dist` | The built desktop page. |
52+
| `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. |
53+
| `studioHome` / `studioPort` | `context.dataDir/openfilm-studio` / `4823` | The panel's own Studio home/port. Change them for isolated tests. |
54+
55+
## Data & access
56+
57+
- 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.
58+
- State (Studio home, preferences, caches, logs, BYOK master key) is stored in that `context.dataDir` directory only.
59+
- Reads (never writes) `studio.json` and each project's `.film/id` under the selected OpenFilm home to list projects.
60+
- 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.
61+
- Network: `npx` downloads OpenFilm on first run; agents you invoke use their own accounts/network as usual.
62+
63+
## Security
64+
65+
- **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.
66+
- **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.
67+
- **State lives in `context.dataDir`** (`openfilm-studio/` under it), owned by the Host. Nothing durable is written into the plugin directory.
68+
- 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).
69+
70+
The panel can drive local agents in project folders — install it only if you trust it, and review what you let an agent do.
71+
72+
## Limitations
73+
74+
- The Electron window itself cannot be embedded in a MiniApp; this runs the desktop *interface* with an HTTP native bridge.
75+
- Native file/folder pickers and screen capture return `null` (no native dialogs in a browser).
76+
- Desktop mode needs the OpenFilm clone + shell build (see Requirements).
77+
- Tested on macOS only. Windows/Linux are untested (some code paths use `open`, `pbcopy`, `ps`).
78+
79+
## Tested environment
80+
81+
- MiniMax Code desktop 3.1.2+ on macOS (Apple Silicon), Node 22, OpenFilm 0.2.5.
82+
- Desktop page renders with chat column and real conversation history; project switching works.
83+
- `chat:load` returns real sessions; agent roster lists 11 agents; Codex ACP probe starts a session; Claude Code correctly reports not-installed.
84+
- 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).
85+
86+
Run the acceptance yourself:
87+
88+
```sh
89+
node test/accept-miniapp.mjs # SKIP_PROBE=1 to skip the Codex ACP probe
90+
```
91+
92+
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.
93+
94+
## License
95+
96+
MIT — see [LICENSE](LICENSE).
97+
98+
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.
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
# OpenFilm MiniApp
2+
3+
[English](README.md) | 简体中文
4+
5+
> **原作者:[openfilm/openfilm](https://github.com/openfilm/openfilm)。** OpenFilm 是原作者的作品。
6+
> **本仓库只是把 OpenFilm 打包成 MiniMax Code 里的 MiniApp,方便使用** —— 不是 OpenFilm 官方仓库,不隶属于原作者团队,也不包含 OpenFilm 源代码。**本仓库的打包与公开分享已获得原作者本人授权(2026-10-24,由本仓库所有者确认)。**完整署名见 [NOTICE.md](NOTICE.md)。
7+
8+
把 **OpenFilm 装进 MiniMax Code** —— 跑的是**桌面版的界面**(Studio 编辑器 + 右边那栏聊天 + 本地 agent),不是只有网页版 Studio。
9+
10+
面板里那一页就是 OpenFilm 桌面 app 自己的页面。桌面 app 本来从 Electron 拿到的原生桥(`window.openfilmNative`)被换成走 HTTP 的一份;桌面 app 主进程里的那些 handler(聊天、本地 agent、技能、agent 名单)作为纯 Node 模块原样复用。所以聊天、agent 菜单、设置 → 智能体的行为跟桌面版一致 —— 因为它们就是桌面版的代码。
11+
12+
## 有什么
13+
14+
- 完整的 OpenFilm 编辑器:素材库、预览、检视器、时间线、导出。
15+
- 桌面版那栏聊天:会话历史、输入框、agent 菜单、本地 agent 跑的回合。
16+
- 设置 → 智能体是真正的名单(Codex、Claude Code、MiniMax Code、自有密钥……)。
17+
- 打开时进你最近的 OpenFilm 项目;之后换项目在 OpenFilm 里面做(面板不加自己的顶栏)。
18+
- 一个 Agent 可调用的接口(`POST /miniapp/open-desktop`):叫起/激活你装着的 OpenFilm 桌面 app。
19+
- 桌面模式用不了时,自动回落到纯网页版 Studio。
20+
21+
## 前提
22+
23+
- macOS 上的 MiniMax Code **3.1.2 或更新**(Host 的 loopback 凭据守着面板的端口)。
24+
- Node.js 22+ 和 `npx`(面板用 `npx -y openfilm@0.2.5` 起 OpenFilm)。
25+
- **只有桌面模式需要**:本地克隆 [openfilm/openfilm](https://github.com/openfilm/openfilm),并构建一次桌面版页面。`@openfilm/desktop` 没发布到 npm,所以这些模块只能从仓库来。
26+
27+
```sh
28+
git clone https://github.com/openfilm/openfilm.git ~/Developer/openfilm
29+
cd ~/Developer/openfilm && pnpm install
30+
pnpm --filter @openfilm/desktop build:shell
31+
```
32+
33+
没有仓库也能用 —— 面板会回落到纯网页版 Studio(没有聊天栏)。
34+
35+
## 安装
36+
37+
把整个插件目录(包括隐藏的 `.minimax-plugin/`)复制到 MiniMax Code 的插件目录,例如 `~/.minimax/plugins/openfilm/`,重启 MiniMax Code,然后对 Agent 说「打开 OpenFilm 面板」。
38+
39+
manifest 最后要在:`~/.minimax/plugins/openfilm/.minimax-plugin/plugin.json`。
40+
41+
## 配置
42+
43+
改插件目录里的 `miniapp.config.json`。自己机器上的覆盖写 `miniapp.config.local.json`(已被 gitignore,不要提交)。
44+
45+
| 键 | 默认 | 含义 |
46+
|---|---|---|
47+
| `openfilmBin` / `openfilmArgs` | `npx` / `["-y","openfilm@0.2.5"]` | 起哪个 OpenFilm。 |
48+
| `flavor` | `release` | 列哪套项目:`release`(`~/.openfilm`、`~/Movies/OpenFilm/Projects`)或 `dev`(`~/.openfilm-dev`)。 |
49+
| `desktopMode` | `true` | 桌面版界面 + 聊天 + 本地 agent。`false` = 纯网页版。 |
50+
| `openfilmRepo` | `~/Developer/openfilm` | OpenFilm 仓库在哪(也可用环境变量 `OPENFILM_REPO`)。桌面模式必须要。 |
51+
| `shellDist` | `<仓库>/apps/desktop/shell/dist` | 构建出来的桌面版页面。 |
52+
| `desktopApp` | 自动找 | `POST /miniapp/open-desktop` 这个接口开哪个 app。`[{ "path": "…", "args": ["…"] }]`;自动找 `/Applications/OpenFilm.app` 和仓库里的 Dev 版。 |
53+
| `studioHome` / `studioPort` | `context.dataDir/openfilm-studio` / `4823` | 面板自己那份 Studio 的 home 和端口,测试时改成临时值。 |
54+
55+
## 数据与访问
56+
57+
- 在 `127.0.0.1` 上用 `npx` 起 `openfilm open`,`OPENFILM_HOME` 是面板自己的(Host 给的 `context.dataDir` 下的 `openfilm-studio/`),不抢你桌面 app 的 Studio home。
58+
- 状态(Studio home、偏好、缓存、日志、BYOK 主密钥)只放在那个 `context.dataDir` 目录里。
59+
- 只读选中那套 OpenFilm home 里的 `studio.json` 和各项目的 `.film/id`,用来列项目。
60+
- 项目数据通过 OpenFilm 自己的 API 和桌面 handler 读写(`.film/` 下的聊天记录、项目目录里的 agent 会话),跟桌面 app 一样。
61+
- 网络:第一次跑 `npx` 会下载 OpenFilm;你调用的 agent 用它们自己的账号和网络。
62+
63+
## 安全
64+
65+
- **loopback 鉴权由 Host 做**。MiniMax Code 3.1.2 起,Host 在 MiniApp 进程里的每个 `node:http` 服务上都装了每次运行一个凭据的检查:没凭据的请求 —— 包括本机直连和 WebSocket —— 在到这个包之前就 401。所以这个包自己不造 token。
66+
- **页面、客户端 JS、日志、错误响应里都不放密钥**。Studio 的 key 只留在 Node 进程里,只在转发 `/api/*` 时带上;伺服出去的 HTML 里不注入任何密钥。
67+
- **状态放在 `context.dataDir`**(它下面的 `openfilm-studio/`),由 Host 所有;插件目录里不写任何运行时数据。
68+
- 在面板里保存的自有密钥(BYOK)用本机 `0600` 主密钥做 AES-256-GCM 封存(桌面 app 用的是系统钥匙串;两边的密钥存储不共享)。
69+
70+
这个面板能在项目目录里驱动本地 agent —— 只在你信任它的情况下安装,Agent 要做什么也由你把关。
71+
72+
## 限制
73+
74+
- MiniApp 嵌不了 Electron 窗口本身;这里跑的是桌面版的**界面** + HTTP 原生桥。
75+
- 原生文件/目录选择框和截屏返回 `null`(浏览器里没有原生对话框)。
76+
- 桌面模式需要 OpenFilm 仓库 + 构建(见前提)。
77+
- 只在 macOS 测过;Windows/Linux 未测(有些地方用了 `open`、`pbcopy`、`ps`)。
78+
79+
## 测试环境
80+
81+
- macOS(Apple Silicon)上的 MiniMax Code 桌面版 3.1.2+,Node 22,OpenFilm 0.2.5。
82+
- 桌面版页面带聊天栏和真实会话历史渲染正常,切项目正常。
83+
- `chat:load` 返回真实会话;agent 名单 11 个;Codex ACP 探测能起会话;Claude Code 如实报未安装。
84+
- 验收脚本 37 项:启动、项目列表、桌面 IPC、名单、SSE、网页降级、缺构建报错、并发只起一个 Studio、SSE 开着时 dispose 不挂,以及预览链路(影片页代理、EDITOR 改写、同源放开、素材可读)。
85+
86+
自己跑一遍验收:
87+
88+
```sh
89+
node test/accept-miniapp.mjs # 不想跑 Codex ACP 探测就 SKIP_PROBE=1
90+
```
91+
92+
全部实例用临时 home 和端口(4900–4903),跑完自己收掉;不碰你正在用的面板,也不写你的项目。桌面模式的检查需要 OpenFilm 仓库 + 构建(见前提)。装好后也开一次面板,看看设置 → 智能体。
93+
94+
## 许可
95+
96+
MIT,见 [LICENSE](LICENSE)。
97+
98+
OpenFilm 是 [openfilm/openfilm](https://github.com/openfilm/openfilm) 的作品;这个包只在运行时驱动它,不包含 OpenFilm 的源代码。完整署名见 [NOTICE.md](NOTICE.md)。
1.54 KB
Loading

0 commit comments

Comments
 (0)