Initial TrueGrowth source import
This commit is contained in:
31
openspec/changes/refactor-toolbox-plugin-runtime/proposal.md
Normal file
31
openspec/changes/refactor-toolbox-plugin-runtime/proposal.md
Normal 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/**/*`
|
||||
@@ -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** 用户可通过工具栏恢复播放器工具
|
||||
@@ -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 工具一样打开、最小化和嵌入画布
|
||||
14
openspec/changes/refactor-toolbox-plugin-runtime/tasks.md
Normal file
14
openspec/changes/refactor-toolbox-plugin-runtime/tasks.md
Normal 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 补充关键测试
|
||||
Reference in New Issue
Block a user