|
|
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 |
|