13 Commits

Author SHA1 Message Date
a5ebfd8b74 修复: PropsPanel.vue 残缺 defineEmits 导致 Vue SFC 编译失败
- 删除 'const emit = defineEmits' 错误行(无泛型参数且未调用)
- PropsPanel 不 emit 事件,直接调 store.xxx
- 修复变量名 CHART_TYPES 拼写
- 简化 vite.config.ts 用 mode 参数区分 Web/桌面模式
- npm run dev → mode=web,端口8080; tauri:dev → mode=default,端口5173
2026-07-12 22:55:06 +08:00
9e0a808635 新增: 桌面能力——AI 代理 + 文件系统(B5)
- ai_proxy: Rust reqwest 代理 AI 请求(彻底解决 CORS 问题)
- ai_proxy_stream: SSE 流式代理,通过 app.emit("ai-delta") 实时推送
- write_file/read_file: 文件读写命令(替代对话框)
- 前端 bridge.ts 新增 listen() 函数(接收 Rust 事件推送)
- 前后端零错误编译,40 测试通过
2026-07-12 22:43:56 +08:00
a1ac91c1ec 新增: Tauri IPC 命令 + useStore 统一接口(B4)
- commands.rs: exec_op/undo/redo/can_undo/can_redo/get_deck/set_navigation/save_file
  Rust AppState 持有 deck + 历史栈,所有写操作通过 Op Log
- bridge.ts: 安全 Tauri IPC 调用层(动态 import,Web 模式 mock)
- useStore.ts: 统一 store 接口,检测 __TAURI__ 环境
  Web 模式直接调 TS store;Tauri 模式走 invoke
- 50 个测试全部通过,前后端编译零错误
2026-07-12 22:41:10 +08:00
fc605b1a94 新增: Rust AI 引擎——prompt/规范化/SSE 解析(B3)
- ai.rs: 完整 Prompt 模板翻译(SYS_BASE/SYS_GENERATE/SYS_POLISH/SYS_CHAT)
- norm_style/norm_element/norm_slide/norm_slides: 数据规范化纯函数
- try_parse_json: AI 回复中提取 JSON(兼容 json 代码块标记)
- split_chat_reply: 按 %%PPT_JSON%% 分隔自然语言与操作
- 8 个单元测试: 样式规范化/元素解析/幻灯片解析/JSON提取/chat分隔/颜色校验/图表类型
- 40 个测试全部通过
2026-07-12 22:37:40 +08:00
664ca9c65c 新增: Rust Op reducer + 逆操作计算(B2)
- op.rs: 纯函数 apply_op(deck,op) → new_deck,覆盖全部 11 种 Op 类型
- invert_op(deck,op) → 逆 Op,支持完整的 undo 链路
- 所有 reducer 不 mutate 输入,返回新 deck
- 8 个单元测试: add_slide/del_slide/set_theme/update_element/del_element/
  move_slide/undo_update/undo_add_slide/replace_deck_undo
- ElementStyle 加 rename_all=camelCase 匹配 JS 协议
- 32 个测试全部通过(B1:23 + B2:9)
2026-07-12 22:33:41 +08:00
1430e9e061 新增: Rust 数据模型 + 颜色纯函数 + ts-rs 类型同步(B1)
- model.rs: 全部数据结构(Deck/Slide/Element/Style/Theme/AiCfg/LibItem/PageTemplate/ChatMessage/Op/RichSegment)
  所有结构体 derive Serialize/Deserialize/TS,自动生成 TS 类型到 bindings/types.ts
- color.rs: 颜色解析纯函数(resolve_color/resolve_bg/is_dark_bg/shade/hex_to_rgb)
  对应 store.ts 的颜色逻辑,23 个单元测试全部通过
- lib.rs: 新增 app_info IPC 命令
- ts-rs 自动生成的 bindings/types.ts 与手写 types.ts 类型一致
2026-07-12 18:20:49 +08:00
b9a388b570 新增: Tauri 2.0 桌面版脚手架(B0)
- src-tauri/ 完整项目结构: Cargo.toml / build.rs / tauri.conf.json
- Rust 入口 lib.rs: ping IPC 命令验证双向通信
- 应用图标生成(SVG → ico/icns/png 多尺寸)
- Tauri 窗口配置: 1280×800, 最小 900×600, 可缩放
- package.json 新增 tauri / tauri:dev / tauri:build 脚本
- vite.config.ts 环境检测: Tauri 模式端口 5173, Web 模式 8080
- @tauri-apps/cli + @tauri-apps/api 依赖安装
- cargo check 编译通过,前端构建不受影响
- 桌面版与 Web 版共享同一套前端代码
2026-07-12 15:11:35 +08:00
056dc58318 新增: 导出 JSON + 导入 JSON + 打印/PDF 导出(P4)
- 工具栏新增三个按钮: 导出 JSON / 导入 JSON / 打印 PDF
- 导出 JSON: Blob 下载 store.exportJSON()
- 导入 JSON: 文件选择 + FileReader → store.importJSON()
- 打印 PDF: window.print() + @media print CSS,逐页 page-break
- 打印时隐藏编辑器/HUD/工具栏,只保留幻灯片内容
- 零新依赖(PDF 走浏览器原生打印)
2026-07-12 15:02:27 +08:00
9ec6173b10 新增: Backend 持久化抽象层 + LocalBackend 实现(P3)
- 定义 Backend 接口: deck/文库/会话/模板/主题/配置的读写
- LocalBackend 实现(localStorage,Web版当前模式)
- getBackend()/setBackend() 管理活动后端实例
- store 内部 localStorage 调用暂不变(LocalBackend 是其包装)
- B2 迁移时统一改为 getBackend().xxx(),B4 实现 TauriBackend
- 为桌面版(Rust 文件系统)和云端版(HTTP API)预留接口
2026-07-12 15:00:41 +08:00
2f9c545503 重构: Op Log 数据模型,为协同预留基础(P2)
- 新增 op.ts: Op 类型定义 + 纯函数 reducer(applyOp) + 逆操作计算(invertOp)
- 支持的 Op 类型: add_slide/del_slide/move_slide/replace_slide/set_slide_bg/
  add_element/update_element/del_element/move_element_z/set_theme/replace_deck
- undo/redo 从快照栈改为 Op 回滚(forward/backward 双向 Op)
- store 所有写操作内部改为 execOp,对外接口完全不变(88 处调用零改动)
- update_element 保留连续操作合并(拖滑块/连续输入不膨胀历史)
- 每个 Op 带 clientId + timestamp,为未来协同预留
- replace_deck 作为特殊 Op 进 undo 历史
2026-07-12 14:59:05 +08:00
9933a1711a 重构: 清理技术债 + 数据健壮性增强(P0+P1)
- 删除 inline.ts(方案A遗留死代码,已被 richtext.ts 替代)
- 删除 ElementStyle.rich 字段(segments 方案后无用)
- 删除 PropsPanel 未使用的 CHART_TYPE_MAP
- 删除 editor.css 旧 class 兼容样式(.el-card-title 等)
- 生成整套/重置时自动备份当前 deck 到 .bak(防误覆盖)
- 新增 recoverBackup() 方法(可恢复上一次被覆盖的 deck)
- 旧版本数据不再直接丢弃,改为 migrateDeck() 补字段升级
- chart 元素自动补 chartType:'bar' 默认值
2026-07-12 13:28:04 +08:00
e45df2f269 更新: 忽略 tsconfig.tsbuildinfo 构建缓存文件 2026-07-12 13:12:32 +08:00
cfeabf2d37 新增: u-ppt Vue 3 在线演示工具初始版本
- 核心架构: Vue 3 + Vite + TypeScript,零运行时依赖(仅 Vue)
- 编辑器: 幻灯片增删排序、元素拖拽八向缩放、双击编辑、12 种元素类型
  (标题/正文/列表/数据/金句/图片/形状/图表/卡片/表格/代码/公式)
- 图表: 8 种 SVG 自绘(柱状/条形/折线/面积/饼图/环形/雷达/进度)
- 富文本: 结构化 segments(加粗/斜体/颜色/高亮/上下标/代码/链接)
- AI 能力: 对话编辑、生成整套、润色本页、大纲→逐页生成、一键美化、AI 配图
- 会话绑定: 每份 PPT 独立会话,切换 PPT 自动切换对话历史
- 模板系统: 7 个内置版式 + 用户自存模板
- 演示模式: 全屏播放、键盘/鼠标/滚轮导航、入场动画
- 持久化: localStorage 存 deck/文库/会话/模板/配置
- 支持多服务商: 智谱/DeepSeek/通义/Kimi/豆包/OpenAI/Anthropic/Gemini/Groq/Ollama
2026-07-12 13:12:09 +08:00