Windows 用户请下载 .exe 文件,macOS 用户请下载 .dmg 文件
Windows 用户如果在启动时遇到了报错,请尝试安装 WebView2 运行时
- 前端:React 18 + TypeScript + Zustand +
@xyflow/react+ TailwindCSS - 桌面容器:Tauri 2
- 后端:Rust 命令接口
- 数据存储:SQLite(
rusqlite,WAL) - i18n:
react-i18next+i18next
- Node.js 20+
- npm 10+
- Rust stable(含 Cargo)
- Tauri 平台依赖(Windows/macOS)
安装与平台准备可参考:
npm install仅前端开发:
npm run devTauri 联调(推荐):
npm run tauri dev# TypeScript 类型检查
npx tsc --noEmit
# Rust 快速检查
cd src-tauri && cargo check
# 前端构建检查
npm run build
# Tauri 构建桌面应用
npm run tauri build本项目支持一条命令完成版本联动、触发 GitHub Actions 构建并发布 Release。
# patch 递增(例如 0.1.0 -> 0.1.1),并写入本次更新说明
npm run release -- patch "修复导出节点在大图下崩溃;优化启动速度"
# 或指定版本号
npm run release -- 0.2.0 "新增分镜批量裁剪工具"命令会自动执行:
- 同步版本号到
package.json、src-tauri/Cargo.toml、src-tauri/tauri.conf.json - 提交版本变更并创建带说明的 tag(如
v0.2.0) - 推送分支和 tag,触发
.github/workflows/build.yml - 由 Action 构建 Windows/macOS 安装包并发布到 GitHub Releases(说明显示为 tag 注释)
src/
features/canvas/ # 画布主流程(节点、工具、模型、UI)
stores/ # 全局状态与自动持久化策略
commands/ # 前端到 Tauri 命令桥接
i18n/ # 国际化入口与语言包
src-tauri/src/
commands/ # Rust 侧命令实现(含 project_state)
lib.rs # Tauri 命令注册入口
docs/development-guides/ # 开发与扩展文档
- 分层数据流:
UI -> Store -> Application Service -> Command/API -> Persistence - 节点注册单一真相源:
src/features/canvas/domain/nodeRegistry.ts - 工具体系分层:
tools/types.ts、tools/builtInTools.ts、ui/tool-editors/*、application/toolProcessor.ts - 持久化双通道:
- 项目快照:
upsert_project_record - 视口快照:
update_project_viewport_record
- 项目快照:
- 在
src/features/canvas/models/image/<provider>/新增模型文件 - 声明
displayName、providerId、分辨率/比例、默认参数 - 实现请求映射函数
resolveRequest
- 在
src/features/canvas/tools/types.ts声明能力 - 在
src/features/canvas/tools/builtInTools.ts注册 - 在
src/features/canvas/ui/tool-editors/新增编辑器 - 在
src/features/canvas/application/toolProcessor.ts接入执行
- 在
src/features/canvas/domain/canvasNodes.ts增加类型与数据结构 - 在
src/features/canvas/domain/nodeRegistry.ts注册默认数据与连线能力 - 在
src/features/canvas/nodes/index.ts注册渲染组件
详细指南:
- 自动持久化由
projectStore驱动,不需要手动保存 - SQLite 文件位于 Tauri
app_data_dir/projects.db projects表核心字段:nodes_json、edges_json、viewport_json、history_json、node_count- 图片字段通过
imagePool + __img_ref__去重编码
- 入口:
src/i18n/index.ts - 语言包:
src/i18n/locales/zh.json、src/i18n/locales/en.json - 代码中使用
useTranslation()+t('key.path'),避免硬编码文案
