Initial TrueGrowth source import

This commit is contained in:
2026-07-07 09:36:36 +08:00
commit 3b6781d695
2283 changed files with 691996 additions and 0 deletions

View File

@@ -0,0 +1,31 @@
# Change: 工具箱插件化运行时与音乐播放器工具
## Why
当前工具箱把内置工具定义、内部组件映射、iframe 工具配置散落在多个全局文件中:
- 工具定义依赖 `built-in-tools.ts`
- 内部 React 工具依赖 `InternalToolComponents.tsx`
- 画布嵌入和弹窗打开各自做分支判断
这使得每增加一个工具,都需要同步修改多处中心化映射,难以满足“每个工具一个独立目录、像插件一样集成”的目标。
同时,仓库虽然已有画布音频节点与全局音频播放服务,但缺少一个面向素材库音频选择、后台播放和与播放控件联动的独立播放器工具。
## What Changes
- 引入统一的工具插件注册中心,收敛内置工具清单与内部组件解析
- 将内置工具重构为“每个工具一个目录”的 manifest/entry 结构
- 保留 URL 工具能力,但将其视为 `iframe` 类型工具插件
- 新增音乐播放器工具,可直接浏览素材库音频并驱动全局播放会话
- 让播放器工具与现有播放控件共享同一播放状态,并支持互相切换
## Impact
- Affected code:
- `packages/drawnix/src/constants/built-in-tools.ts`
- `packages/drawnix/src/services/toolbox-service.ts`
- `packages/drawnix/src/components/toolbox-drawer/*`
- `packages/drawnix/src/components/tool-element/*`
- `packages/drawnix/src/components/audio-node-element/*`
- `packages/drawnix/src/tools/**/*`

View File

@@ -0,0 +1,30 @@
## ADDED Requirements
### Requirement: 系统必须提供音乐播放器工具
系统 SHALL 提供一个可从工具箱打开的音乐播放器工具,用于浏览素材库中的音频并发起播放。
#### Scenario: 从素材库音频播放
- **WHEN** 用户在播放器工具中点击某个音频素材
- **THEN** 系统开始播放该音频
- **AND** 当前播放状态同步到全局播放会话
### Requirement: 播放器工具必须与播放控件联动
系统 SHALL 让播放器工具与现有播放控件共享同一播放状态,并支持互相切换。
#### Scenario: 从播放控件切换到播放器工具
- **WHEN** 用户在播放控件中点击“打开播放器”
- **THEN** 系统打开音乐播放器工具
- **AND** 当前播放曲目与进度保持不变
#### Scenario: 从播放器工具切回播放控件
- **WHEN** 用户在播放器工具中点击“切回播放控件”
- **THEN** 系统最小化播放器工具
- **AND** 音频继续后台播放
### Requirement: 播放器工具最小化后必须继续播放
系统 SHALL 在播放器工具最小化到工具栏后保留当前播放会话。
#### Scenario: 最小化后台播放
- **WHEN** 用户最小化播放器工具
- **THEN** 当前音频继续播放
- **AND** 用户可通过工具栏恢复播放器工具

View File

@@ -0,0 +1,27 @@
## ADDED Requirements
### Requirement: 工具箱必须支持插件式工具注册
系统 SHALL 通过统一注册中心加载内置工具,并允许每个工具以独立目录形式提供 manifest 与运行时入口。
#### Scenario: 加载内置工具
- **WHEN** 应用初始化工具箱
- **THEN** 系统从注册中心返回可用工具列表
- **AND** 每个工具定义都来自其独立目录导出的 manifest
### Requirement: iframe 与内部工具必须共享统一运行时协议
系统 SHALL 允许 `iframe` 工具和内部 React 工具通过同一工具定义模型被打开、最小化和嵌入画布。
#### Scenario: 打开内部工具
- **WHEN** 用户从工具箱打开内部工具
- **THEN** 系统根据注册中心解析对应内部组件
#### Scenario: 打开 iframe 工具
- **WHEN** 用户从工具箱打开 URL 工具
- **THEN** 系统根据工具定义渲染 iframe
### Requirement: 自定义 URL 工具必须兼容插件运行时
系统 SHALL 保留自定义 URL 工具能力,并将其作为 iframe 型工具纳入统一工具运行时。
#### Scenario: 添加自定义 URL 工具
- **WHEN** 用户保存自定义工具
- **THEN** 工具箱可像其他 iframe 工具一样打开、最小化和嵌入画布

View File

@@ -0,0 +1,14 @@
## 1. 工具插件运行时
- [x] 1.1 建立工具注册中心与插件目录结构
- [x] 1.2 将现有内置工具迁移为单目录 manifest
- [x] 1.3 让工具箱、弹窗和画布嵌入统一走注册中心
## 2. 音乐播放器工具
- [x] 2.1 新增播放器工具插件并接入素材库音频
- [x] 2.2 复用全局播放服务实现队列、播放、暂停和音量
- [x] 2.3 支持最小化到工具栏后后台播放
## 3. 播放控件联动
- [x] 3.1 在播放控件中提供切换到播放器工具的入口
- [x] 3.2 在播放器工具中提供切回播放控件的入口
- [ ] 3.3 补充关键测试