liquidliang
8dfcf4a351
docs: 更新工具函数规则 - 添加新模块和避免不必要包装
...
- 更新 @aitu/utils 可用函数列表(blob、device、format、indexeddb)
- 添加"避免不必要的函数包装/别名"规则
- 优化规则 15 描述:禁止二次导出或不必要的包装
2026-02-04 11:19:20 +08:00
liquidliang
5c86d02b79
docs: 添加编码规则 - 降级路径功能一致性
...
降级到主线程直接调用 API 时,必须保持与 SW 模式相同的功能行为,
特别是 LLM API 日志记录,否则调试工具会漏掉这些调用。
2026-02-04 10:30:55 +08:00
liquid
3d844c4250
docs: 添加 LLM 响应格式兼容性和工作流状态同步规则
...
- LLM 响应格式兼容性:支持多种 AI 返回格式
- 工作流状态同步:使用轮询 IndexedDB 替代 SW 事件依赖
2026-02-04 09:18:09 +08:00
liquidliang
10f953f73c
docs: 添加编码规则 - IndexedDB 直接读取和 RPC 超时处理
...
- 主线程直接读取 IndexedDB 优于 RPC:避免 postMessage 限制
- RPC 超时与重连策略:合理超时 + 自动重连重试
2026-02-03 20:42:27 +08:00
liquidliang
ebb412d1c3
docs: 添加同步数据格式一致性规则
...
- CLAUDE.md: 添加第19条 SW 规则摘要
- CODING_RULES.md: 添加详细示例和数据格式参考表
修复调试面板中多处使用错误数据格式的问题:
- tasks.json 结构是 { completedTasks: Task[] } 不是数组
- 画板文件是 board_{id}.json 不是 .drawnix
2026-02-03 17:21:27 +08:00
liquid
97332dc7f1
docs: 添加同步模块日志规范
...
- 更新 CLAUDE.md 规则6,同步模块使用统一日志服务
- 在 CODING_RULES.md 添加详细的同步模块日志规范
- 包含正确/错误示例和 API 说明
2026-02-03 09:07:45 +08:00
liquid
27064a500e
feat(sync): 任务队列同步下载远程数据时双向合并
...
- 修改 applySyncData 中的任务合并逻辑,基于 ID 去重
- 使用 updatedAt 时间戳判断保留更新的版本
- 合并完成后自动上传任务数据到远程,确保双向同步
- 添加编码规则:同步数据双向合并
2026-02-02 07:49:49 +08:00
liquidliang
8ecc8e7571
docs: 添加 CSS 变量优先级和弹出菜单截断规则
...
- CLAUDE.md: 更新 createPortal 规则说明,新增组件内颜色使用规范
- CODING_RULES.md: 添加详细的 TDesign CSS 变量优先级问题说明
- CODING_RULES.md: 添加弹出菜单被 overflow 截断的解决方案
2026-02-01 22:19:02 +08:00
liquid
8a95524814
docs: 添加数据安全保护编码规则
...
- CLAUDE.md: 添加摘要规则 #16 数据安全保护
- CODING_RULES.md: 新增"数据安全规范"章节
- 破坏性操作前必须进行安全检查
- 不可逆操作需要用户输入确认文字
- 使用软删除(Tombstone)支持数据恢复
2026-02-01 15:06:19 +08:00
liquid
da0c37e11c
docs: 添加 SW 任务持久化规则和敏感 ID 脱敏说明
...
- CLAUDE.md: 新增规则14 - 任务数据必须通过 RPC 持久化到 SW
- CLAUDE.md: 规则7 补充 maskId 函数用于敏感 ID 脱敏
- CODING_RULES.md: 添加详细示例说明主线程任务数据持久化流程
2026-02-01 09:53:55 +08:00
liquid
fbfd0f1329
docs: 添加 SW 重发 Tool Request 延迟规则
...
问题:页面刷新后 SW claim 工作流时立即重发 pending tool request,
但主线程的 registerToolRequestHandler 可能还没准备好,导致请求失败。
解决:重发时延迟 500ms,等待主线程 handler 准备好。
2026-01-31 21:38:18 +08:00
liquid and Claude
d27939f80b
feat(sw): 改进工作流恢复机制和错误处理
...
- 修复工作流恢复时 UI 与 SW 状态不一致导致的错误失败状态
- 保持 AWAITING_CLIENT 错误处理链完整,避免错误属性丢失
- 重构 channel-manager 和 workflow-executor
- 添加崩溃恢复对话框组件
- 拆分 sw-channel 类型定义到独立文件
- 更新文档规则:工作流恢复状态不一致、错误处理链保持完整
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2026-01-31 20:53:06 +08:00
liquid
a91afda0f4
docs: 更新 postmessage-duplex 规则 (v1.1.0)
...
- 更新通信模式:broadcast/onBroadcast 用于单向通知
- 更新初始化:enableGlobalRouting 自动管理 channel
- 新增客户端配置:autoReconnect 处理 SW 更新
- 新增任务队列双服务同步规则
2026-01-31 14:09:20 +08:00
liquid and Claude
50c94058af
feat: move ai_analyze to SW and improve debug panel logging
...
- Move ai_analyze tool execution to Service Worker to avoid postMessage
timeouts; system prompt built in app layer and passed to SW
- Add full response JSON display for LLM API logs (fetch on expand)
- Improve PostMessage logging: use source labels (应用页面/SW) instead
of direction, filter debug panel messages, support request-response linking
- Add waitForStorageRestore() to ensure RPC handlers return complete data
- Remove syncTasksToClients() in favor of paginated RPC queries
- Better VideoGenerationFailedError detection for business failures
- Clean up debug console.log statements
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2026-01-31 09:12:07 +08:00
liquid
597181ebca
docs: 添加 postmessage-duplex 消息大小限制规则
...
- CLAUDE.md: 添加规则 12 - RPC 响应不超过 1MB,需后端分页+精简数据
- CODING_RULES.md: 添加详细规则和示例
- postmessage-duplex RPC 消息大小限制
- 分页查询必须在服务端过滤
2026-01-31 00:05:21 +08:00
liquid
cac87cf458
docs: 添加 postmessage-duplex publish 模式规则
...
- CLAUDE.md: 新增规则 #11 - publish 模式下 ret 可能是 undefined,isReady 返回数字
- CODING_RULES.md: 新增错误示例 4-6,包含 ret 检查、isReady 检查、响应格式解析
2026-01-30 22:11:53 +08:00
liquidliang
cacf6b43e5
docs: 添加 postmessage-duplex 库使用规范
...
- CLAUDE.md: 新增 SW 规则第 10 条摘要
- CODING_RULES.md: 详细规则包含 3 个错误/正确示例
- subscribe 回调需从 response.data 提取数据
- handler 必须返回响应避免发送方超时
- 客户端需先发 SW_CHANNEL_CONNECT 让 SW 创建 channel
2026-01-30 19:27:59 +08:00
liquidliang
a4ca6ca6ee
refactor: rename project from Aitu to Opentu
...
- Updated project references across various files to reflect the new name "Opentu" instead of "Aitu".
- Adjusted ESLint configuration, documentation, and user manuals to ensure consistency with the rebranding.
- Removed outdated README backup file.
This change marks a significant rebranding effort to align the project identity with its new vision.
2026-01-29 11:24:47 +08:00
liquidliang
6abdcad300
docs: 添加工具函数组织规则
...
- CLAUDE.md: 新增第 15 条规则,禁止在业务包中二次导出通用函数
- CODING_RULES.md: 添加详细的错误/正确示例和 @aitu/utils 函数列表
2026-01-29 10:46:41 +08:00
gongchengtu
a69c57a5b6
feat(workspace): 添加重命名验证功能,禁止同级重名
...
## 🎯 问题修复
修复项目管理中重命名时允许重复名称的问题,参考主流应用最佳实践。
## ✨ 核心功能
### 验证规则
1. **空名称检查** - 拒绝空字符串和纯空格
2. **长度限制** - 名称不能超过 100 个字符
3. **同级重名检查** - 同一文件夹内的画板/文件夹不能重名
4. **跨文件夹允许** - 不同文件夹内可以有同名项目
5. **类型区分** - 文件夹和画板可以同名(不同类型)
### 实现细节
**新增类型**:
- `ValidationError` - 验证错误类
**更新方法**:
- `workspace-service.ts`:
- `validateBoardName()` - 画板名称验证
- `validateFolderName()` - 文件夹名称验证
- `renameBoard()` - 添加验证逻辑
- `renameFolder()` - 添加验证逻辑
**UI 优化**:
- `ProjectDrawer.tsx`:
- 友好的错误提示(MessagePlugin.warning)
- 验证失败时保持编辑状态
- 自动 trim 空格
## 📊 验证逻辑
```
同级禁止重名:
├── 文件夹A/
│ ├── 📄 设计稿 ✅
│ └── 📄 设计稿 ❌ 禁止
└── 文件夹B/
└── 📄 设计稿 ✅ (不同文件夹,允许)
```
## 🧪 测试
新增完整测试套件:
- 空名称验证
- 长度限制验证
- 同级重名验证
- 跨文件夹同名允许
- 自动 trim 空格
- 类型区分验证
## 📚 文档
- `docs/RENAME_VALIDATION_ANALYSIS.md` - 详细分析文档(617 行)
- 主流应用对比分析
- 方案选择与理由
- 实施步骤与测试用例
## 🎨 用户体验
**Before**:
- ❌ 允许完全重复的名称
- ❌ 用户无法区分同名项目
**After**:
- ✅ 清晰的错误提示
- ✅ 保持编辑状态让用户修改
- ✅ 符合文件系统习惯
## 🔗 相关文件
- `packages/drawnix/src/services/workspace-service.ts`
- `packages/drawnix/src/components/project-drawer/ProjectDrawer.tsx`
- `packages/drawnix/src/types/workspace.types.ts`
- `packages/drawnix/src/services/__tests__/workspace-rename-validation.spec.ts`
2026-01-27 16:07:53 +08:00
gongchengtu
1c3fa39f3c
feat(manual): 完成 AI 输入栏和 ChatDrawer 完整测试体系
...
🎉 项目里程碑:100% Manual 测试覆盖达成!
## 📊 完整成果
新增功能测试(9 个):
- ✅ AI 输入栏基础交互(输入/聚焦/展开/清空)
- ✅ 模型选择器(下拉/浏览/健康状态/选择)
- ✅ 参数配置(尺寸/数量/平铺展示)
- ✅ 多模态内容选择(上传/素材库/预览/移除)
- ✅ ChatDrawer 基础交互(打开/新建/列表/调整宽度)
- ✅ 会话管理(新建/重命名/切换/删除)
- ✅ 智能提示面板(历史/预设/置顶/使用)
- ✅ 灵感面板(空画布/推荐/分类/选择)
- ✅ AI 工作流(输入→配置→发送→执行→结果)
生成的 GIF(9 个):
- 📹 总大小:9.8 MB
- ⏱️ 总时长:~149 秒
- 🎨 品牌色统一(#F39C12、#E91E63)
- ✨ 视觉效果完整(点击圆圈、快捷键提示)
新增代码(+1246 行):
- ✅ gif-recordings.manual.spec.ts +575 行(9 个测试)
- ✅ 9 个 DSL 配置文件
- ✅ MANUAL_TEST_ANALYSIS.md(671 行分析文档)
## 🎯 覆盖度达成
- 静态截图:100% (21/21)
- 测试代码:100% (13/13)
- DSL 配置:100% (20/20)
- 已生成 GIF:100% (13/13)
- **总进度:100%** 🎊
## 💡 技术亮点
1. **完整的 AI 交互流程**:从输入到生成的全链路测试
2. **多模态内容支持**:上传、素材库、画布选择
3. **智能提示系统**:历史记录、预设、灵感面板
4. **对话管理完整**:会话创建、切换、管理
5. **工作流可视化**:实时状态、步骤展示
## 🎨 视觉质量
- ✅ 橙色渐变提示气泡(品牌色)
- ✅ 红色点击效果圆圈
- ✅ 流畅的动画过渡
- ✅ 所有 13 个 GIF 视觉统一
## 🔗 相关文档
- docs/MANUAL_TEST_ANALYSIS.md - 详细测试分析(671 行)
- apps/web-e2e/src/manual-gen/gifs/*.json - DSL 配置
注:GIF 文件(18MB)已生成但未提交(gitignore)
2026-01-27 15:06:52 +08:00
liquid
c571cb77d4
docs(claude): 添加新规则 - 工作区初始化自动选择画板
2026-01-27 00:29:58 +08:00
liquidliang
f7c1cded31
chore: update deployment scripts and versioning logic; bump version to 0.5.58
2026-01-26 11:54:07 +08:00
liquid and Claude
ebca700560
fix(batch-generation): 修复批量生成只执行第一个任务的问题
...
批量生成时(通过 AIInputBar 指定数量 n),之前只会执行 1 个任务,其余被跳过为"重复"。
修复包括:
- 跳过 batchId 存在时的重复检测逻辑
- 在工作流转换和执行时正确传递批量参数 (batchId, batchIndex, batchTotal)
- 添加跨层数据转换的编码规则文档
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2026-01-26 00:13:03 +08:00
liquid and Claude
a6172119cd
feat(ui): 统一媒体预览组件并优化缩略图展示
...
- DialogTaskList 改用 UnifiedMediaViewer 替代自定义 Dialog 预览
- 删除 TaskQueuePanel 未使用的 PreviewContent 组件
- 生成结果缩略图改为 object-fit: contain 完整展示
- 图片上传组件添加 hover 大图预览功能
- 更新 CLAUDE.md 和 CODING_RULES.md 添加相关 UI 规范
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2026-01-25 15:37:59 +08:00
liquid
a20c4a4685
docs: 添加 Slate-React Leaf DOM 结构稳定性规则
...
- CLAUDE.md: 新增 React 规则第 10 条摘要
- CODING_RULES.md: 添加详细规则和代码示例
问题背景:在 Slate-React 的 Leaf 组件中,根据样式条件动态
切换 HTML 标签(<u>/<s>)和 CSS 实现方式会导致 DOM 结构
变化,引发 "Cannot resolve a DOM node from Slate node" 错误
2026-01-25 13:13:39 +08:00
liquid
fe13ef85e5
docs: 添加编码规则 - Clipper 布尔运算结果处理
...
添加关于 clipper-lib 布尔运算结果中外环和孔洞识别的规则:
- 不要依赖面积符号判断(坐标系不同会导致符号不一致)
- 应该用面积大小判断:最大的是外环,其他是孔洞
2026-01-25 13:04:47 +08:00
liquid
6f891ea637
docs: 添加编码规则 - useCallback 定义顺序
...
新增规则:useCallback 定义必须在引用它的 useEffect 之前,
否则会触发 TDZ (暂时性死区) 错误。
2026-01-24 23:52:33 +08:00
liquid
2bd5909824
Merge branch 'new-e2e' into develop
2026-01-24 23:38:34 +08:00
liquid
c714761174
docs(claude): 添加新规则 - 日志记录应反映实际发送的数据
2026-01-24 23:37:30 +08:00
liquid and Claude
4daff777fe
feat(e2e): 添加用户手册生成系统和 E2E 测试增强
...
- 新增截图标注工具,支持高亮、圆圈、箭头等标注
- 新增 MDX 用户手册源文件和 HTML 生成脚本
- 新增 GIF 录制功能,支持视频转 GIF 和键盘提示
- 为组件添加 data-testid 属性以支持 E2E 定位
- 更新 smoke/visual 测试,修复 tooltip 拦截问题
- 新增 E2E 测试规范到 CODING_RULES.md
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2026-01-24 23:13:30 +08:00
liquid
247676f7de
chore: bump version to 0.5.45
2026-01-23 23:51:45 +08:00
liquid
db199405de
docs: 添加编码规则 - 模式切换状态同步
2026-01-23 22:48:21 +08:00
liquidliang
2ca7cc9d83
docs: 精简 CLAUDE.md 并补充编码规则
...
- 将 CLAUDE.md 从 356 行精简到 237 行(限制 300 行)
- 移动详细示例到 docs/CODING_RULES.md:
- 外部 API 调用频率控制
- 无效配置下的数据不应被持久化或执行
- 同名模块的全局状态隔离问题
- 新增规则:坐标变换场景的一致性处理
- 翻转状态下的鼠标交互方向调整
- 翻转状态下的 cursor 样式动态计算
2026-01-23 18:05:51 +08:00
liquidliang
53d0900a3c
docs: 添加共享模块设计规则
...
- 清理 CLAUDE.md 中重复的规则 8-10
- 添加规则 11:共享模块设计(*-core.ts 命名规范)
- 在 CODING_RULES.md 添加详细示例(TrimMode 配置模式)
2026-01-23 15:42:53 +08:00
liquidliang
27dedeac5a
docs: 添加编码规则 - 布局抖动、结构化数据与图标验证
2026-01-23 12:36:23 +08:00
liquidliang
33aa2ed122
refactor(sw-debug): 模块化重构调试面板
...
- 将 app.js (4865行) 拆分为 21 个独立模块
- 新增模块: state, common, toast, backup, analysis-mode, theme-settings,
llmapi-logs, memory-logs, export-modal, fetch-logs, indexeddb
- 排除 sw-debug 目录从预缓存清单,避免影响主应用性能
- 更换分析模式图标为文档图标(原为搜索图标易混淆)
- 添加预缓存配置规范到编码规则文档
2026-01-23 10:44:58 +08:00
liquid and Claude
bbfeaaac91
fix(popup-toolbar): 修复多选元素时填充色图标显示异常
...
- 修复内联 style undefined 覆盖 CSS 类导致杂色图标不显示的问题
- 修复 BackgroundColorIcon 作为函数传递导致 React 警告
- 填充色杂色样式改用环形渐变,与线条杂色表示一致
- 添加相关编码规则到文档
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2026-01-23 00:13:35 +08:00
liquid
dceb83a517
docs: 添加 SW 枚举值小写规则
...
Service Worker 内部枚举使用小写值(completed、image、video),
读取 SW 数据进行过滤时必须使用相同大小写,否则匹配失败但无报错。
2026-01-22 23:58:54 +08:00
liquid
1076cb2411
feat(ui): 统一 Tooltip 样式并美化模型健康状态信号展示
...
- 统一全站 Tooltip 为白底样式 (theme="light"),并优化层级 (zIndex)
- 将模型健康状态由圆点改为 3 格信号塔设计,根据错误率 (errorRate) 自动调整格数与颜色
- 在模型下拉选择器触发按钮上增加实时健康状态展示
- 更新 CLAUDE.md 和 CODING_RULES.md,添加 Tooltip 规范与量化表意设计准则
2026-01-22 22:38:58 +08:00
liquid
f110657f6d
feat(toolbar): 初始化时自动滚动显示 AI 按钮
...
当屏幕高度不足时,AI 图片/视频生成按钮可能不可见。
添加初始化时检测并自动滚动的逻辑,确保重要功能可被发现。
- 为工具栏按钮添加 data-button-id 属性便于定位
- 使用 ref 标志确保只执行一次,避免死循环
- 添加相关编码规则文档 (错误 19)
2026-01-22 22:14:44 +08:00
liquidliang
c0e63d0c8c
docs(rules): 添加 Blob MIME 类型获取和 Shift 连选防文本选中规则
2026-01-22 18:45:07 +08:00
liquidliang
1d8c77ca43
docs: 添加 UI 交互规范 - 可点击容器、筛选联动、全局配色
...
新增三条 UI 交互规则:
- 可点击容器模式:使用 pointer-events: none + 父容器 onClick 扩大交互区域
- 筛选与选中状态联动:选中计数和操作都基于筛选后的结果
- 全局组件配色统一:在 tdesign-theme.scss 中集中覆盖第三方组件样式
2026-01-22 14:38:40 +08:00
liquidliang and Claude
98b400f29b
docs: 添加强制重绘 void 前缀规则
...
记录使用 void element.offsetHeight 触发强制重绘的最佳实践
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude <noreply@anthropic.com >
2026-01-22 11:13:29 +08:00
liquidliang
14925fba38
docs: 添加 TDesign Dropdown popupProps 透传规则
...
记录 TDesign Dropdown 组件的 onVisibleChange 需要通过 popupProps 透传的使用规范
2026-01-22 10:55:14 +08:00
liquidliang
dfef8c1a9b
docs: 更新项目文档,修正在线应用链接并优化 CLAUDE.md 结构
...
- 将在线应用链接从 aitu.tu-zi.com 更新为 opentu.ai
- 在 README.md 和 README_en.md 中同步更新在线体验链接
- 优化 CLAUDE.md 文档结构,确保核心规则精简且易于理解
- 更新文档分层策略,明确 CLAUDE.md 和详细文档的内容分配
2026-01-22 10:19:39 +08:00
liquidliang
70fddff1fa
docs(claude): 添加项目概念文档和维护规则
...
- 创建 docs/CONCEPTS.md 作为项目核心术语和概念的权威定义
- 包含 40+ 核心术语的中英文对照和定义
- 涵盖画布层、AI生成、工作流、素材库等核心概念
- 在 CLAUDE.md 中添加概念文档维护规则
- 在相关文档章节添加 CONCEPTS.md 链接
2026-01-22 10:04:23 +08:00
liquidliang
91799c9abd
chore: bump version to 0.5.17
2026-01-20 13:06:28 +08:00
liquid
c126ed5ea2
chore: bump version to 0.5.15
2026-01-20 09:07:22 +08:00
liquid
345b0a9a1c
chore: update project references from aitu.chat to opentu.ai
...
- Changed all instances of the old project website URL to the new domain opentu.ai in documentation, metadata, and configuration files.
- Updated the homepage link in package.json and various HTML files to reflect the new branding.
- Adjusted sitemap and robots.txt to point to the new domain for better SEO and accessibility.
2026-01-20 00:14:43 +08:00