feat: Update CoreML device support and server controls
- Replace 'mps' with 'coreml' as the identifier for Apple CoreML Execution Provider across the codebase. - Remove Apple chip generation checks and ensure CoreML is available on all macOS arm64 devices. - Adjust ONNX Runtime session creation to use default CoreML configurations without forcing 'MLProgram'. - Implement support for MoGe-2 to utilize CoreML with static input shape requirements. - Enhance server panel to display restart and stop controls consistently across running states, including 'BUSY'. - Update UI tests to verify new behavior for server controls and cached model display. - Bump blendjob dependency version to 0.1.16 in packaging tests and configurations.
This commit is contained in:
@@ -0,0 +1,2 @@
|
||||
schema: spec-driven
|
||||
created: 2026-09-01
|
||||
@@ -0,0 +1,40 @@
|
||||
## Context
|
||||
|
||||
`ServerPanel.draw()` 目前把 `READY` 与 `BUSY` 都显示为 Running,但只在 `READY` 分支创建重启和停止按钮。Cached 模型名称则通过逗号拼接到单个 Label,模型较多时会形成过长的一行。
|
||||
|
||||
BlendJob 当前以 `READY` 表示等待任务、以 `BUSY` 表示执行任务;二者都是 Server 已运行的子状态。此次调整只改变 Blender 面板布局,不改变状态协议或生命周期 Operator。
|
||||
|
||||
## Goals / Non-Goals
|
||||
|
||||
**Goals:**
|
||||
|
||||
- 统一 Running 判定,使所有运行中子状态共享重启和停止按钮。
|
||||
- 保留各子状态原有的状态文本和图标。
|
||||
- Cached 包含多个模型时,将模型名称逐项分行显示。
|
||||
- 用 UI 测试锁定状态与布局行为。
|
||||
|
||||
**Non-Goals:**
|
||||
|
||||
- 不改变 Server 启动、重启、停止或任务取消语义。
|
||||
- 不新增 Server 状态、API 或依赖。
|
||||
- 不改变模型缓存的内容、顺序或清理行为。
|
||||
|
||||
## Decisions
|
||||
|
||||
### 统一复用 Running 判定
|
||||
|
||||
在读取 `server_status()` 后,以同一个 Running 判定驱动状态标签、生命周期按钮和 Cached 区域。当前 Running 状态集合为 `READY` 与 `BUSY`:`READY` 表示运行并等待,`BUSY` 表示运行并处理任务。
|
||||
|
||||
相比在 `READY` 与 `BUSY` 分支分别创建按钮,集中判定可避免后续运行中展示再次分叉。非 Running 状态继续沿用现有 Start 或状态提示分支。
|
||||
|
||||
### Cached 多项使用纵向列表
|
||||
|
||||
无缓存和单个缓存模型保留紧凑的一行展示;两个及以上缓存模型使用纵向布局,每个模型名称占一行,并保留同一区域的清理按钮。
|
||||
|
||||
相比在 Label 文本中插入换行,使用 Blender Layout 的独立 Label 能稳定参与面板布局,也便于测试每个模型项。
|
||||
|
||||
## Risks / Trade-offs
|
||||
|
||||
- [Busy 时停止或重启会中断当前任务] → 这是用户主动触发的既有生命周期行为;本变更只恢复入口,不改变 Operator 语义。
|
||||
- [多个模型使面板变高] → 仅在确有多个缓存模型时展开,并以可读性优先。
|
||||
- [状态分支与按钮分支再次偏离] → 使用同一个 Running 判定,并覆盖 `READY`、`BUSY` 与非 Running 状态测试。
|
||||
@@ -0,0 +1,27 @@
|
||||
## Why
|
||||
|
||||
Server 处于 Busy 时仍然是 Running,但当前面板会隐藏重启和停止按钮,导致用户在任务执行期间无法直接管理 Server 生命周期。Running 的控制入口应保持一致,不应受 Busy、等待或其他运行中子状态影响。
|
||||
|
||||
## What Changes
|
||||
|
||||
- Server 只要处于 Running,就显示重启和停止按钮。
|
||||
- Busy、等待及其他运行中子状态继续显示各自的状态信息,但不再隐藏生命周期控制按钮。
|
||||
- Cached 列表包含多个模型时,每个模型换行显示,避免单行内容过长。
|
||||
- 补充 UI 测试,覆盖运行中状态的按钮可见性与 Cached 列表布局。
|
||||
|
||||
## Capabilities
|
||||
|
||||
### New Capabilities
|
||||
|
||||
- `server-lifecycle-controls`: 规定 Server 在所有 Running 子状态下提供一致的重启与停止入口。
|
||||
- `server-cache-display`: 规定 Server 面板中 Cached 模型列表的分行展示行为。
|
||||
|
||||
### Modified Capabilities
|
||||
|
||||
无。
|
||||
|
||||
## Impact
|
||||
|
||||
- `src/anyimage/panel.py` 中 Server 状态与控制按钮的展示逻辑。
|
||||
- Blender Add-on UI 测试。
|
||||
- 不改变 Server API、状态协议或依赖。
|
||||
@@ -0,0 +1,16 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Cached model list layout
|
||||
Server 面板 SHALL 显示所有 Cached 模型名称,并 SHALL 在存在多个模型时让每个模型名称占据独立的视觉行。
|
||||
|
||||
#### Scenario: Multiple models are cached
|
||||
- **WHEN** Server 为 Running 且 Cached 列表包含两个或更多模型
|
||||
- **THEN** 面板逐行显示每个模型名称,并保留缓存清理按钮
|
||||
|
||||
#### Scenario: One model is cached
|
||||
- **WHEN** Server 为 Running 且 Cached 列表只包含一个模型
|
||||
- **THEN** 面板在一行内显示 `Cached` 与该模型名称,并保留缓存清理按钮
|
||||
|
||||
#### Scenario: No model is cached
|
||||
- **WHEN** Server 为 Running 且 Cached 列表为空
|
||||
- **THEN** 面板显示 `Cached: None`,并保留缓存清理按钮
|
||||
@@ -0,0 +1,16 @@
|
||||
## ADDED Requirements
|
||||
|
||||
### Requirement: Running Server lifecycle controls
|
||||
Server 面板 SHALL 在 Server 的每个 Running 子状态下显示重启和停止控制,并 SHALL 保留该子状态对应的状态文本与图标。
|
||||
|
||||
#### Scenario: Server is running and waiting
|
||||
- **WHEN** Server 状态为 `READY`
|
||||
- **THEN** 面板显示 Running 状态、重启按钮和停止按钮
|
||||
|
||||
#### Scenario: Server is running and busy
|
||||
- **WHEN** Server 状态为 `BUSY`
|
||||
- **THEN** 面板显示 Running (Busy) 状态、重启按钮和停止按钮
|
||||
|
||||
#### Scenario: Server is not running
|
||||
- **WHEN** Server 状态不是 Running 子状态
|
||||
- **THEN** 面板不显示 Running 状态的重启和停止按钮,并沿用该状态对应的现有控制或提示
|
||||
10
openspec/changes/show-server-controls-while-running/tasks.md
Normal file
10
openspec/changes/show-server-controls-while-running/tasks.md
Normal file
@@ -0,0 +1,10 @@
|
||||
## 1. Server Panel 布局
|
||||
|
||||
- [x] 1.1 统一 `READY` 与 `BUSY` 的 Running 判定,让状态标签、重启按钮、停止按钮和 Cached 区域复用同一分支
|
||||
- [x] 1.2 调整 Cached 模型布局:空列表和单模型保持单行,多个模型使用逐项纵向 Label,并保留清理按钮
|
||||
|
||||
## 2. UI 行为验证
|
||||
|
||||
- [x] 2.1 补充 Server Panel 测试,验证 `READY` 与 `BUSY` 都显示重启和停止按钮,非 Running 状态不显示这些按钮
|
||||
- [x] 2.2 补充 Cached 列表测试,验证零个、一个和多个模型的文本、分行与清理按钮
|
||||
- [x] 2.3 运行相关测试与完整测试套件,确认 Server Panel 和既有 Add-on 行为通过
|
||||
Reference in New Issue
Block a user