Initial TrueGrowth source import
This commit is contained in:
@@ -0,0 +1,18 @@
|
||||
# Change: add tool window multi instance
|
||||
|
||||
## Why
|
||||
当前工具弹窗运行时以 `toolId` 作为唯一窗口键,同一个工具只能打开一个弹窗实例,无法像桌面窗口一样并行处理多个任务。视频生成等高时延工具需要多开并发工作,因此需要将工具窗体能力升级为多实例模型。
|
||||
|
||||
## What Changes
|
||||
- 将工具窗口状态从“按工具”升级为“按实例”,为每个弹窗引入稳定的 `instanceId`
|
||||
- 在工具栏工具图标右键菜单增加“新窗口打开”,并让同工具的多个实例各自显示为独立图标
|
||||
- 为内部工具组件注入实例上下文,允许工具按实例更新尺寸、最小化、关闭等窗口行为
|
||||
- 对仍依赖单例 `toolId` 的内部工具保留兼容行为,未适配前不开放多实例入口
|
||||
|
||||
## Impact
|
||||
- Affected specs: `toolbox-plugin-runtime`, `toolbox`
|
||||
- Affected code:
|
||||
- `packages/drawnix/src/services/tool-window-service.ts`
|
||||
- `packages/drawnix/src/components/toolbox-drawer/ToolWinBoxManager.tsx`
|
||||
- `packages/drawnix/src/components/toolbar/minimized-tools-bar/MinimizedToolsBar.tsx`
|
||||
- `packages/drawnix/src/components/toolbar/toolbar-context-menu.tsx`
|
||||
@@ -0,0 +1,25 @@
|
||||
## MODIFIED Requirements
|
||||
|
||||
### Requirement: iframe 与内部工具必须共享统一运行时协议
|
||||
系统 SHALL 允许 `iframe` 工具和内部 React 工具通过同一工具定义模型被打开、最小化和嵌入画布,并允许被标记为支持多实例的工具同时打开多个独立窗口实例。
|
||||
|
||||
#### Scenario: 打开内部工具
|
||||
- **WHEN** 用户从工具箱打开内部工具
|
||||
- **THEN** 系统根据注册中心解析对应内部组件
|
||||
|
||||
#### Scenario: 打开 iframe 工具
|
||||
- **WHEN** 用户从工具箱打开 URL 工具
|
||||
- **THEN** 系统根据工具定义渲染 iframe
|
||||
|
||||
#### Scenario: 多实例工具新开窗口
|
||||
- **GIVEN** 某工具被标记为支持多实例
|
||||
- **WHEN** 用户从工具栏图标右键选择“新窗口打开”
|
||||
- **THEN** 系统为该工具创建新的窗口实例
|
||||
- **AND** 新旧实例各自维护独立的位置、尺寸和最小化状态
|
||||
- **AND** 工具栏分别显示对应实例图标
|
||||
|
||||
#### Scenario: 单实例工具保持兼容
|
||||
- **GIVEN** 某工具尚未标记为支持多实例
|
||||
- **WHEN** 用户通过已有入口再次打开该工具
|
||||
- **THEN** 系统继续复用或聚焦现有窗口行为
|
||||
- **AND** 不暴露可点击的“新窗口打开”入口
|
||||
@@ -0,0 +1,25 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: 工具栏必须展示同工具的多个窗口实例
|
||||
系统 SHALL 在左侧工具栏中将同一工具的多个已打开或最小化实例显示为多个独立图标,并在图标上提供实例序号标识。
|
||||
|
||||
#### Scenario: 多个实例并列显示
|
||||
- **GIVEN** 用户已为同一个工具打开两个窗口实例
|
||||
- **WHEN** 左侧工具栏渲染工具实例
|
||||
- **THEN** 工具栏显示两个独立图标
|
||||
- **AND** 两个图标使用相同工具图标并带有不同的实例序号角标
|
||||
|
||||
#### Scenario: 常驻工具无实例时回退为启动图标
|
||||
- **GIVEN** 某工具被常驻到工具栏且当前没有打开实例
|
||||
- **WHEN** 左侧工具栏渲染该工具
|
||||
- **THEN** 工具栏仅显示一个关闭态启动图标
|
||||
- **AND** 用户点击该图标时系统新建一个窗口实例
|
||||
|
||||
### Requirement: 工具栏右键菜单必须支持新窗口打开
|
||||
系统 SHALL 在支持多实例的工具图标右键菜单中提供“新窗口打开”操作,用于从当前工具直接新建窗口实例。
|
||||
|
||||
#### Scenario: 从工具图标右键新开实例
|
||||
- **GIVEN** 某工具支持多实例并已在工具栏显示
|
||||
- **WHEN** 用户右键该工具图标并选择“新窗口打开”
|
||||
- **THEN** 系统新建一个该工具的窗口实例
|
||||
- **AND** 新实例默认以级联偏移方式打开,避免与已有实例完全重叠
|
||||
@@ -0,0 +1,6 @@
|
||||
## 1. Implementation
|
||||
- [x] 1.1 为工具窗口服务和类型系统引入 `instanceId`、实例序号和 launcher/instance 图标语义
|
||||
- [x] 1.2 更新 WinBox 管理器与最小化工具栏,按实例渲染窗口、激活顺序和最小化目标
|
||||
- [x] 1.3 在工具栏右键菜单增加“新窗口打开”,并接入可多实例工具白名单
|
||||
- [x] 1.4 为内部工具组件注入实例上下文,适配至少一个现有内部工具的实例级窗口控制
|
||||
- [x] 1.5 补充针对性测试或校验,确认常驻、最小化、恢复、关闭与多实例共存行为
|
||||
Reference in New Issue
Block a user