- 任务右键菜单:实现打开输出目录(inputs/outputs/.cache 结构)、
复制资源链接、重新编辑、再次生成、拉取结果、重新下载、收藏、删除记录
- 主进程下载:通过 Electron net 模块绕过 CORS,支持 CDN 媒体文件下载
- sharp 缩略图:替换 nativeImage,支持 4K/8K+ 大尺寸素材的流式处理
- IPC 精简:40+ 冗余通道 → 15 个分组通道,移除未使用的 preload 桥接方法
- 任务存储:新增收藏字段、schema 迁移、task-store 持久化
- 清理废弃模块:canvas-ipc / updater / request / pricing
refactor: IPC/Preload/Services 模块化拆分 — 单一职责 + 向后兼容
主要变更:
- shared/constants/ipc-channels.ts → ipc/ 模块 (base/storage/canvas/updater)
- electron/preload.ts → preload/ 模块 (base/safe-storage/file-storage/canvas)
- electron/main/ipc/canvas-ipc.ts → canvas/ 模块 (types/walk/sidecar/mime/thumbnail)
- electron/main/ipc/storage-ipc.ts → 提取 utils/ (path/download/thumbnail)
- electron/main/updater.ts → updater/ 模块 (provider/platform-updaters)
- src/services/request.ts → request/ 模块 (token/interceptors/methods)
- src/shared/utils/pricing.ts → pricing/ 模块 (types/helpers/format/calculate/fields)
- src/modules/home/center/views/ModelInputForm.tsx → 提取 utils + DependentFormItem
架构优化:
- 所有拆分均保持向后兼容(旧导入路径仍可用)
- TypeScript 编译通过 ✓
- 每个模块单一职责,平均 ~130 行
46 lines
2.0 KiB
TypeScript
46 lines
2.0 KiB
TypeScript
// ============================================================
|
||
// IPC 通道常量 — 无限画布相关通道
|
||
// ============================================================
|
||
|
||
/** 主进程 → 渲染进程 — 画布 */
|
||
export const MAIN_TO_RENDERER_CANVAS = {
|
||
/** 画布窗口准备就绪 */
|
||
CANVAS_READY: 'canvas:ready',
|
||
/** 画布扫描进度 */
|
||
CANVAS_SCAN_PROGRESS: 'canvas:scan-progress',
|
||
} as const;
|
||
|
||
/** 渲染进程 → 主进程 — 画布 */
|
||
export const RENDERER_TO_MAIN_CANVAS = {
|
||
/** 画布:打开无限画布窗口 */
|
||
OPEN_CANVAS_WINDOW: 'canvas:open-window',
|
||
} as const;
|
||
|
||
/** 双向通信通道 — 画布 */
|
||
export const BIDIRECTIONAL_CANVAS = {
|
||
/** 画布:扫描目录 */
|
||
CANVAS_SCAN_DIRECTORY: 'canvas:scan-directory',
|
||
/** 画布:扫描项目(接收 projectPath,主进程内部完成 buildScanRoots + walkDirectory) */
|
||
CANVAS_SCAN_PROJECT: 'canvas:scan-project',
|
||
/** 画布:读取 sidecar 元数据 */
|
||
CANVAS_READ_SIDECAR: 'canvas:read-sidecar',
|
||
/** 画布:写入 sidecar 元数据 */
|
||
CANVAS_WRITE_SIDECAR: 'canvas:write-sidecar',
|
||
/** 画布:生成缩略图 */
|
||
CANVAS_GENERATE_THUMBNAIL: 'canvas:generate-thumbnail',
|
||
/** 画布:复制文件(导入) */
|
||
CANVAS_COPY_FILE: 'canvas:copy-file',
|
||
/** 画布:获取原生图片尺寸 */
|
||
CANVAS_GET_IMAGE_SIZE: 'canvas:get-image-size',
|
||
/** 画布:列出目录下的子文件夹(非递归,排除隐藏) */
|
||
CANVAS_LIST_SUBDIRS: 'canvas:list-subdirs',
|
||
/** 画布:扫描阶段文件(单个 episode/shot/stage 组合) */
|
||
CANVAS_SCAN_STAGE_FILES: 'canvas:scan-stage-files',
|
||
/** 画布:扫描资产文件(深度递归扫描 assets/ 目录) */
|
||
CANVAS_SCAN_ASSET_FILES: 'canvas:scan-asset-files',
|
||
/** 画布:创建目录 */
|
||
CANVAS_CREATE_DIRECTORY: 'canvas:create-directory',
|
||
/** 画布:启动原生文件拖拽(拖放媒体文件到外部应用) */
|
||
CANVAS_START_DRAG: 'canvas:start-drag',
|
||
} as const;
|