feat: 无限画布 UI 重构 + 预览键盘控制 + 拖拽体验优化 (0.0.27)

- CanvasPage: AntD Layout 双栏布局 (Sider+Content),预览状态提升解耦 DOM
- CanvasSidebar (新): 项目/集数选择器 + 镜头搜索 + 列表 + 固定刷新按钮
- CategoryTabs (新): 双模式分类标签 (Assets/审核) + 数量徽标 + 媒体细分
- CanvasViewport: Ctrl/Cmd 拖拽平移 (pointerEvents:none 防误抓缩略图)
- CanvasViewport: previewActiveRef 双守卫阻止预览穿透缩放/拖拽
- MediaPreview: 键盘控制 Space 暂停/播放、<- -> 快退快进 ±0.5s
- electron/main.ts: local-media:// 协议 handler 转发 Range 头修复 seek
- StageTabs: 无限画布入口按钮 + 全局字号上调

Range seek 调试: 之前 net.fetch 未转发 Range 头 → 浏览器 seek 时
返回 200 全文件而非 206 Partial Content → currentTime 赋值无法定位
→ 播放位置回退到 0。修复: 提取 Range 头单向转发到 file:// handler。

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-06-24 19:26:08 +08:00
parent 48144ed784
commit b04b5a0390
17 changed files with 994 additions and 239 deletions

View File

@@ -1,6 +1,37 @@
# 更新日志
> 每次发版前修改此文件,`npm run build:win` 打包后会自动读取生成 update-info.json。
---
## 0.0.272026-06-24
**无限画布 UI 重构 + 预览键盘控制 + 拖拽体验优化**
### 无限画布
- **双栏布局重构**AntD LayoutSider + Content左侧导航 + 右侧画布,页面级别渲染预览组件解耦 DOM
- **CanvasSidebar**:项目/集数选择器 + 镜头搜索 + 镜头列表(滚动条 + 底部固定刷新按钮)+ 工作区切换
- **CategoryTabs 双模式**Assets 阶段 → 全部/角色/道具/场景/收藏;其他阶段 → 所有[阶段名]/收藏/待审核/通过/返修/已弃用
- **分类数量徽标**:每个标签显示数据计数,"收藏"标签额外显示媒体类型细分(视频/图片/音频)
- **Ctrl/Cmd + 拖拽平移**:替代 Space 键修饰,释放 Space 给媒体控制;`pointerEvents: none` 防止拖拽时误抓缩略图
- **画布锁**:预览打开时 `previewActiveRef` 双守卫阻止穿透缩放/拖拽
- **无限画布入口按钮**StageTabs 右侧按钮,调用 `OPEN_CANVAS_WINDOW` IPC
### 预览键盘控制
- **Space 暂停/播放**capture 阶段拦截 + `stopPropagation`,避免与原生 `<video controls>` 双重触发
- **← → 快退/快进**capture 阶段直接设置 `currentTime`,步长 ±0.5 秒
- **↑ ↓ 音量**:透传给原生 controls 处理
### 主进程
- **local-media:// Range 头转发**:协议 handler 只提取并转发 `Range` 请求头到 `net.fetch`,确保音视频 seek 返回正确的 206 Partial Content
### UI 调整
- 全局字号上调(侧栏、工具栏、标签、状态栏等)
- CanvasSidebar 滚动条定制 + 主题色适配
- ProjectSelector / EpisodeSelector 宽度自适应
---
## 0.0.262026-06-23