imeepos
c7f9c9f4bb
feat: 为MaterialCard添加缩略图功能并优化UI展示
...
- 为Material数据模型添加thumbnail_path字段
- 实现get_material_thumbnail_base64 API命令支持Material缩略图生成
- 创建MaterialThumbnail组件,支持懒加载和缓存机制
- 重新设计MaterialCard布局,使用缩略图替换文件类型图标
- 精简MaterialCard信息展示,将详细信息移到可折叠区域
- 优化按钮布局,使界面更加紧凑
- 简化切分片段显示方式,提升用户体验
- 修复数据库DateTime解析问题,支持SQLite和RFC3339两种格式
- 添加数据库迁移支持thumbnail_path字段
- 遵循promptx/tauri-desktop-app-expert开发规范
2025-07-16 00:25:08 +08:00
imeepos
b06cae86f9
fix: 修复缩略图生成失败问题
...
- 增强FFmpeg缩略图生成的错误处理和详细日志
- 实现缩略图生成的重试机制,包括多种时间戳策略
- 添加缩略图生成前的预检查机制
- 优化FFmpeg命令参数,提高兼容性和成功率
- 添加单元测试验证修复效果
修复内容:
1. 增强日志记录,包括FFmpeg命令和输出信息
2. 实现重试机制:原时间戳失败时尝试0秒、中间时间点等
3. 预检查视频文件有效性、时间戳合理性、输出目录可写性
4. 优化FFmpeg参数:添加hide_banner、loglevel、update等选项
5. 在material_commands中使用新的重试机制
解决了FFmpeg执行完成但缩略图文件不存在的问题
2025-07-15 23:29:51 +08:00
imeepos
8c742bf262
feat: 创建统一的缩略图获取接口,使用视频实际尺寸
...
新增get_segment_thumbnail_base64接口:
- 根据segmentId统一获取缩略图base64数据URL
- 智能检查:数据库路径 -> 文件存在性 -> 自动重新生成
- 完整的错误处理和文件验证机制
使用视频实际尺寸生成缩略图:
- 添加get_video_info方法获取视频元数据
- 保持原始宽高比,最大宽度160像素
- 支持音频流信息解析和完整的VideoMetadata结构
代码优化:
- 简化前端缩略图加载逻辑,统一使用新接口
- 移除重复的generateSegmentThumbnail函数
- 清理不必要的参数传递和依赖项
功能特点:
- 自动检测文件丢失并重新生成
- 使用视频原始尺寸保持最佳显示效果
- 统一的错误处理和缓存机制
- 减少代码重复,提高维护性
现在缩略图生成更加智能和高效,能够自动处理文件丢失的情况,并使用视频的实际尺寸生成最佳质量的缩略图。
2025-07-15 22:49:53 +08:00
imeepos
44f3f40705
fix: 修复缩略图显示权限问题,使用base64数据URL
...
解决asset.localhost访问权限问题:
- 添加read_thumbnail_as_data_url命令读取文件并转换为base64数据URL
- 避免使用convertFileSrc的asset.localhost协议访问问题
- 添加base64依赖支持文件编码
优化缩略图加载:
- 使用数据URL直接在img标签中显示缩略图
- 正确处理Windows长路径前缀 \\\\?\\
- 统一错误处理和降级机制
技术改进:
- 移除不再使用的convertFileSrc导入
- 添加详细的控制台日志便于调试
- 确保跨平台文件路径兼容性
现在缩略图可以正确显示,不会因为权限问题导致加载失败。
2025-07-15 22:38:22 +08:00
imeepos
723575ba7e
fix: 修复Windows长路径前缀问题
...
路径处理优化:
- 去掉Windows长路径前缀 \\\\?\\ 避免文件URL转换错误
- 在convertFileSrc之前清理路径格式
- 确保缩略图URL在所有平台上正确显示
修复内容:
- 数据库读取的缩略图路径处理
- 新生成缩略图的路径处理
- 统一使用convertFileSrc确保跨平台兼容性
现在缩略图可以正确显示,不会因为Windows长路径前缀导致加载失败。
2025-07-15 22:26:27 +08:00
imeepos
4d61fb69f3
fix: 修复缩略图生成功能
...
解决编译问题:
- 修复async函数中跨await点持有MutexGuard的Send trait问题
- 添加get_segment_by_id_sync同步方法避免锁生命周期冲突
- 修复Path类型推断问题
优化FFmpeg缩略图生成:
- 添加-pix_fmt yuvj420p参数解决色彩空间问题
- 添加-q:v 2参数提升图片质量
- 添加-f image2参数明确指定输出格式
- 解决MJPEG编码器参数错误问题
功能特点:
- 使用视频首帧生成缩略图
- 缩略图路径保存到数据库
- 智能缓存机制避免重复生成
- 优雅的错误处理和降级
现在缩略图生成功能可以正常工作,用户可以在MaterialSegmentView中看到实际的视频预览图。
2025-07-15 22:20:46 +08:00
imeepos
70e4acb2c2
feat: 为MaterialSegmentView添加视频片段缩略图显示功能
2025-07-15 22:02:59 +08:00
imeepos
0898b4b9e2
feat: 为MaterialSegmentView添加视频片段缩略图显示功能
...
缩略图显示功能:
- 使用视频首帧生成缩略图:取片段开始时间作为缩略图时间戳
- 智能缓存机制:避免重复生成相同片段的缩略图
- 异步加载:缩略图生成不阻塞界面渲染
- 优雅降级:生成失败时显示默认视频图标
ThumbnailDisplay组件:
- 独立的缩略图显示组件,职责单一
- 加载状态指示:显示旋转动画表示正在生成缩略图
- 错误处理:图片加载失败时自动回退到默认图标
- 响应式设计:160x120像素缩略图,适配卡片布局
技术实现:
- 利用现有generate_video_thumbnail命令生成缩略图
- Map缓存机制:segmentId -> thumbnailUrl映射
- file://协议:本地文件访问支持
- useEffect钩子:组件挂载时自动加载缩略图
用户体验优化:
- 视觉丰富:片段卡片显示实际视频内容预览
- 快速识别:用户可以通过缩略图快速识别视频内容
- 性能优化:缓存机制避免重复生成
- 加载反馈:清楚的加载状态提示
功能特点:
- 首帧缩略图:使用片段开始时间的首帧作为预览
- 自动生成:无需手动操作,自动为每个片段生成缩略图
- 内存缓存:同一会话中避免重复生成
- 错误恢复:生成失败时显示默认图标,不影响其他功能
现在MaterialSegmentView提供了更加直观的视觉体验:
1. 每个片段卡片显示实际的视频首帧缩略图
2. 用户可以快速预览视频内容
3. 加载过程有清楚的视觉反馈
4. 生成失败时有优雅的降级处理
2025-07-15 22:01:41 +08:00
imeepos
10177d2501
feat: 为MaterialSegmentView添加视频片段播放功能
...
视频播放功能:
- 为Eye按钮添加点击播放功能:点击后播放对应的视频片段
- 传递片段参数:文件路径、开始时间、结束时间
- 悬停效果优化:按钮颜色从灰色变为蓝色
- 工具提示:显示'播放视频片段'提示文字
后端播放命令:
- 新增play_video_segment命令:支持播放指定时间段的视频
- 跨平台播放器支持:
* Windows: 使用cmd /C start启动默认播放器
* macOS: 使用open命令启动默认播放器
* Linux: 使用xdg-open启动默认播放器
- 文件存在性检查:播放前验证视频文件是否存在
- 完善错误处理:播放失败时给出详细错误信息
系统集成:
- 命令注册:在lib.rs中正确注册play_video_segment命令
- 日志记录:记录播放操作的成功/失败状态
- 参数传递:支持文件路径和时间参数传递
用户体验:
- 一键播放:点击Eye按钮直接播放视频片段
- 系统默认播放器:使用用户熟悉的播放器应用
- 即时反馈:点击后立即启动播放器
- 视觉提示:按钮状态清楚表达可点击性
功能特点:
- 智能播放:虽然后端接收时间参数,但使用系统默认播放器播放完整视频
- 跨平台兼容:Windows/macOS/Linux都能正常工作
- 错误恢复:文件不存在或播放器启动失败时有相应提示
- 性能优化:异步播放,不阻塞界面操作
现在用户可以:
1. 点击任意片段的Eye按钮播放对应视频
2. 使用系统默认播放器观看视频内容
3. 享受跨平台一致的播放体验
4. 在播放失败时获得清楚的错误提示
注:当前实现使用系统默认播放器播放完整视频文件,未来可以考虑集成支持时间段播放的专业播放器。
2025-07-15 21:57:58 +08:00
imeepos
91eb22aaa9
feat: 优化MaterialSegmentView文件显示和添加打开目录功能
...
文件显示优化:
- 提取文件名显示:从完整路径中提取文件名,避免显示过长的路径
- 处理Windows长路径格式:正确处理\\\\?\\前缀的长路径
- 简洁的文件名展示:只显示文件名而不是完整路径
打开目录功能:
- 添加FolderOpen图标按钮:每个片段卡片都有打开目录按钮
- 跨平台支持:Windows使用explorer /select,macOS使用open -R,Linux使用xdg-open
- 智能路径处理:自动检测文件/目录并使用合适的打开方式
- 错误处理:完善的错误处理和日志记录
后端命令实现:
- 新增open_file_directory命令:支持打开文件所在目录
- 注册到invoke_handler:在lib.rs中正确注册新命令
- 系统集成:使用系统默认的文件管理器打开目录
UI/UX改进:
- 文件名+按钮布局:文件名和打开按钮在同一行显示
- 悬停效果:按钮有hover状态,提供良好的交互反馈
- 工具提示:按钮有'打开文件所在目录'的提示文字
- 图标设计:使用FolderOpen图标,直观表达功能
功能特点:
- 一键打开:点击按钮直接在文件管理器中打开文件所在目录
- 文件定位:Windows下会自动选中对应文件
- 路径兼容:支持各种路径格式,包括长路径
- 安全检查:文件不存在时会给出错误提示
现在用户可以:
1. 看到简洁的文件名而不是冗长的完整路径
2. 点击文件夹图标快速打开文件所在目录
3. 在文件管理器中直接定位到对应文件
4. 享受跨平台一致的用户体验
2025-07-15 21:52:58 +08:00
imeepos
30a4cfc23f
feat: 优化MaterialSegmentView筛选条件布局为单行显示
...
布局优化:
- AI分类筛选改为单行显示:'AI分类:' + 选项按钮
- 模特筛选改为单行显示:'模特:' + 选项按钮
- 使用flex布局,标签和选项在同一行
- 标签部分使用flex-shrink-0防止收缩
视觉改进:
- 标签文字添加冒号,更清晰的层次结构
- 保持原有的颜色主题:AI分类(蓝色),模特(绿色)
- 选项按钮保持原有的样式和交互效果
- 数量显示保持在按钮内的小徽章中
响应式设计:
- flex-wrap确保选项按钮在小屏幕上能够换行
- gap-4提供合适的间距
- 保持良好的移动端体验
用户体验提升:
- 更紧凑的布局,节省垂直空间
- 清晰的标签指示,用户一眼就能看到筛选维度
- 保持所有原有功能:点击筛选、数量显示、状态管理
- 筛选逻辑完全不变,只是视觉布局优化
现在筛选条件显示为:
- AI分类:全部(44) 全身(20) 半身(15) 其他(9)
- 模特:全部(44) 杨明明(44)
这种单行布局更加简洁明了,符合用户的使用习惯。
2025-07-15 21:46:45 +08:00
imeepos
6610695177
fix: 修复MaterialSegmentView数据结构不匹配问题,实现完整的多条件筛选功能
...
修复数据结构不匹配:
- 发现前端期望字段(classification_info, model_info, material_info)与后端实际返回字段(classification, model, material_name, material_type)不匹配
- 更新前端SegmentWithDetails接口定义,与后端MaterialSegmentView数据结构保持一致
- 修复所有过滤逻辑中的字段引用:classification_info -> classification, model_info -> model
- 修复渲染卡片中的字段引用:material_info.name -> material_name
完善多条件筛选功能:
- 修复分类过滤逻辑:使用segment.classification?.category进行筛选
- 修复模特过滤逻辑:使用segment.model?.name进行筛选
- 修复搜索过滤逻辑:使用segment.material_name进行搜索
- 修复标签信息显示:正确显示classification和model信息
验证数据流通:
- 后端正常返回44个片段详情
- 按分类聚合:3个分类组
- 按模特聚合:1个模特组
- 统计信息:总片段数44
- 前端成功接收并处理数据
解决的问题:
- 统计信息有数据但下方列表没数据的问题已解决
- 前后端数据结构现在完全匹配
- 多条件筛选功能正常工作
- AI分类和模特筛选都能正确过滤数据
- 搜索功能与筛选条件正确组合
功能验证:
- 后端API调用正常(get_project_segment_view)
- 数据结构匹配,字段映射正确
- 多条件筛选逻辑工作正常
- 卡片渲染显示正确信息
- 搜索和筛选组合功能正常
- 应用构建和运行成功
现在MaterialSegmentView组件完全正常工作,用户可以:
1. 看到完整的片段统计信息
2. 在下方列表中看到所有片段数据
3. 使用AI分类筛选功能
4. 使用模特筛选功能
5. 使用组合筛选(AI分类 AND 模特)
6. 使用搜索功能与筛选条件组合
2025-07-15 21:44:34 +08:00
imeepos
60cd01c1ec
feat: 重构MaterialSegmentView为多条件筛选系统 - 移除标签页设计
...
核心功能重构:
- 移除标签页(tab)设计,改为同时显示AI分类和模特的筛选条件
- 实现组合筛选:AI分类 AND 模特的多条件检索
- 支持类似'AI分类:全身 and 模特:杨明明'的筛选组合
多条件筛选系统:
- AI分类筛选:独立的筛选区域,显示所有分类选项及数量
- 模特筛选:独立的筛选区域,显示所有模特选项及数量
- 组合筛选:两个条件可以同时生效,实现精确筛选
- 当前筛选条件显示:实时显示已选择的筛选条件
UI/UX优化:
- 分区设计:AI分类和模特各自独立的筛选区域
- 视觉区分:AI分类使用蓝色主题,模特使用绿色主题
- 筛选状态显示:当有筛选条件时显示当前筛选状态栏
- 清除功能:一键清除所有筛选条件
- Card卡片风格:片段展示保持卡片设计
数据处理优化:
- 智能过滤:先获取所有片段,再依次应用分类和模特过滤
- 组合逻辑:支持分类 AND 模特的组合筛选
- 搜索集成:搜索功能与筛选条件无缝结合
- 实时更新:筛选条件变化时立即更新结果
技术实现:
- 移除activeTab状态,简化组件逻辑
- 优化过滤算法,支持多条件组合
- 保持useMemo性能优化
- 完善的错误处理和加载状态
交互体验:
- 直观的筛选界面:用户可以清楚看到所有可用的筛选选项
- 即时反馈:点击筛选条件立即看到结果变化
- 状态提示:当前筛选条件清晰显示,支持快速清除
- 空状态处理:没有匹配结果时的友好提示
功能特点:
- 支持单一条件筛选:只选择AI分类或只选择模特
- 支持组合条件筛选:同时选择AI分类和模特
- 支持搜索+筛选:搜索词与筛选条件组合使用
- 支持快速重置:一键清除所有筛选条件
这个重构完全满足了用户的新需求:
1. 移除了标签页设计
2. 实现了AI分类和模特的同时筛选
3. 支持组合筛选条件(AI分类 AND 模特)
4. 提供了清晰的筛选状态显示和管理
2025-07-15 21:36:33 +08:00
imeepos
e1e4b9d67a
feat: 重构MaterialSegmentView为多条件检索标签页风格
...
核心功能重构:
- 将MaterialSegmentView改为多条件检索的标签页风格
- 实现AI分类和模特两个主要检索维度
- 移除折叠/展开功能,改为直接平铺Card卡片风格
标签页检索系统:
- AI分类标签页:显示所有分类选项及对应数量
- 模特标签页:显示所有模特选项及对应数量
- 全部选项:显示总片段数量
- 动态数量显示:每个选项显示对应的片段数量
UI/UX优化:
- Card卡片风格:每个片段使用独立卡片展示
- 缩略图显示:支持视频缩略图预览
- 标签信息:显示分类、模特、置信度等信息
- 操作按钮:查看、编辑、删除等快捷操作
- 搜索功能:支持按片段名称、分类、模特搜索
数据展示优化:
- 时长格式化:MM:SS格式显示时间
- 置信度显示:百分比形式显示AI分类置信度
- 状态标签:不同颜色区分分类和模特信息
- 响应式布局:适配不同屏幕尺寸
技术实现:
- 使用get_project_segment_view API获取数据
- useMemo优化性能,避免不必要的重新计算
- TypeScript类型安全,完整的接口定义
- 错误处理和加载状态管理
交互体验:
- 标签页切换:平滑的标签页切换动画
- 过滤选择:点击标签即可过滤对应内容
- 实时搜索:输入即时过滤结果
- 空状态处理:友好的空数据提示
性能优化:
- 智能过滤:基于选中标签和搜索词的组合过滤
- 数据缓存:避免重复API调用
- 组件优化:使用React hooks优化渲染性能
这个重构完全满足了用户的需求:
1. 检索风格改为标签页
2. AI分类和模特维度,显示全部/具体选项+数量
3. 内容直接平铺Card卡片风格,无折叠/展开
4. 合理规划内容布局,美观易用
2025-07-15 21:28:51 +08:00
imeepos
49bc9211d6
feat: 重构MaterialSegmentView为多条件检索标签页风格
...
核心功能重构:
- 将MaterialSegmentView改为多条件检索的标签页风格
- 实现AI分类和模特两个主要检索维度
- 移除折叠/展开功能,改为直接平铺Card卡片风格
标签页检索系统:
- AI分类标签页:显示所有分类选项及对应数量
- 模特标签页:显示所有模特选项及对应数量
- 全部选项:显示总片段数量
- 动态数量显示:每个选项显示对应的片段数量
UI/UX优化:
- Card卡片风格:每个片段使用独立卡片展示
- 缩略图显示:支持视频缩略图预览
- 标签信息:显示分类、模特、置信度等信息
- 操作按钮:查看、编辑、删除等快捷操作
- 搜索功能:支持按片段名称、分类、模特搜索
数据展示优化:
- 时长格式化:MM:SS格式显示时间
- 置信度显示:百分比形式显示AI分类置信度
- 状态标签:不同颜色区分分类和模特信息
- 响应式布局:适配不同屏幕尺寸
技术实现:
- 使用get_project_segment_view API获取数据
- useMemo优化性能,避免不必要的重新计算
- TypeScript类型安全,完整的接口定义
- 错误处理和加载状态管理
交互体验:
- 标签页切换:平滑的标签页切换动画
- 过滤选择:点击标签即可过滤对应内容
- 实时搜索:输入即时过滤结果
- 空状态处理:友好的空数据提示
性能优化:
- 智能过滤:基于选中标签和搜索词的组合过滤
- 数据缓存:避免重复API调用
- 组件优化:使用React hooks优化渲染性能
这个重构完全满足了用户的需求:
1. 检索风格改为标签页
2. AI分类和模特维度,显示全部/具体选项+数量
3. 内容直接平铺Card卡片风格,无折叠/展开
4. 合理规划内容布局,美观易用
2025-07-15 21:26:53 +08:00
imeepos
19a05f4e8a
fix
2025-07-15 21:23:54 +08:00
imeepos
f67c6357e1
fix: 重构项目详情页面
2025-07-15 21:20:00 +08:00
imeepos
05c9694063
fix: Resolve all runtime errors and complete project details optimization
...
Fixed Critical Runtime Errors:
- Resolved React infinite loop caused by useCallback dependency issues
- Fixed MaterialSegmentStats null pointer exceptions with proper null checks
- Replaced non-existent get_material_segment_stats command with get_project_segment_view
- Added comprehensive error handling and loading states
Enhanced Project Details Page:
- Successfully added 'Project Overview' tab as default selection
- Consolidated all statistics into overview tab (project stats, segment stats, AI progress)
- Moved project information display to overview with formatted timestamps
- Optimized scrolling behavior with fixed height containers (calc(100vh-16rem))
Improved Data Integration:
- Integrated MaterialSegmentStats component with proper viewMode configuration
- Used existing get_project_segment_view command to fetch segment statistics
- Added proper TypeScript type handling for segment view data
- Implemented fallback data structure for error scenarios
UI/UX Enhancements:
- Added consistent padding across all tab content areas
- Implemented loading skeleton states for segment statistics
- Enhanced visual hierarchy with proper section headings
- Optimized tab content scrolling to prevent external scrollbars
Technical Improvements:
- Added useCallback for loadSegmentStats to prevent dependency loops
- Proper null checking in MaterialSegmentStats component
- Enhanced error handling with meaningful fallback states
- Maintained hot reload functionality throughout development
Current Status:
- All runtime errors resolved
- Project overview tab displays comprehensive project information
- Smooth scrolling within tab content areas
- Hot reload working correctly
- No TypeScript compilation errors
- Backend data integration functioning properly
The project details page now provides a unified overview experience with all statistics and information consolidated in a single, easily accessible location.
2025-07-15 21:09:00 +08:00
imeepos
d5335d7803
feat: Optimize project details page layout and information display
...
Enhanced Tab Structure:
- Added new 'Project Overview' tab as default selection
- Reorganized tab navigation with Brain icon for overview
- Improved tab content scrolling with fixed height containers
Consolidated Statistics Display:
- Moved all project statistics to Overview tab (materials, videos, audio, images, AI queue)
- Integrated MaterialSegmentStats for comprehensive segment analytics
- Added AI classification progress tracking in overview
- Consolidated project information display with creation/update times
Improved Layout & Scrolling:
- Fixed scrolling behavior - removed external scrollbars
- Set tab content height to calc(100vh-16rem) for optimal viewport usage
- Added consistent padding (p-4 md:p-6) across all tab content areas
- Optimized content organization for better information hierarchy
Technical Improvements:
- Added loadSegmentStats function with proper error handling
- Integrated MaterialSegmentStats component with ByClassification view mode
- Updated dependency arrays for proper data loading
- Enhanced project information display with formatted timestamps
User Experience Benefits:
- Single overview tab provides complete project status at a glance
- Improved navigation with logical information grouping
- Better scrolling performance with contained scroll areas
- Consistent visual hierarchy across all tabs
- Reduced information fragmentation across multiple views
The project details page now provides a more organized and efficient way to view all project-related information, with the overview tab serving as a comprehensive dashboard for project status, statistics, and progress tracking.
2025-07-15 21:02:41 +08:00
imeepos
a6f9e82c65
fix: Resolve TypeScript build errors and clean up unused imports
...
Fixed Build Issues:
- Removed unused imports in ProjectList, ModelList, ProjectForm, DataTable, CardGrid
- Fixed variant type mismatches in TableAction and GridAction interfaces
- Replaced InteractiveTextarea with standard textarea in ProjectForm
- Updated EmptyState usage to use correct component props
- Removed unused ModelCardSkeleton component definition
Code Cleanup:
- Cleaned up unused Search, Filter, MoreHorizontal, Eye, Edit, Trash2 imports
- Removed unused filters state in DataTable
- Removed unused actions parameter in CardGrid
- Simplified ProjectForm description field implementation
- Fixed EmptyProjectList usage in ProjectList
Build Status:
- All TypeScript errors resolved
- Hot reload working correctly
- Development server running smoothly on port 5174
- No more compilation warnings or errors
The application now builds successfully with all UI/UX enhancements intact.
2025-07-15 20:50:54 +08:00
imeepos
496b26cdeb
feat: Complete final UI/UX optimization phase - Visual hierarchy, mobile experience, and accessibility
...
Enhanced Visual Hierarchy System:
- Implemented comprehensive typography scale (display, heading, body, caption levels)
- Created semantic color system with emphasis levels (high, medium, low, disabled)
- Established consistent spacing scale (xs to 3xl) for margins, gaps, and padding
- Added shadow hierarchy (subtle to dramatic) for depth perception
- Implemented border and border-radius systems for visual consistency
Advanced Visual Effects:
- Added gradient backgrounds for primary, secondary, success, warning, error, info
- Implemented glass-morphism effects with backdrop blur
- Created glow effects for interactive elements
- Added status indicators with online/busy/away/offline states
- Built progress bars with animated stripes
- Designed badge system with semantic colors
- Created elegant dividers with gradient effects
Mobile-First Responsive Design:
- Implemented 44px minimum touch targets for accessibility
- Optimized button and input sizes for mobile devices
- Created mobile-specific navigation patterns
- Added touch-friendly modal and card layouts
- Implemented responsive table design with mobile card view
- Added swipe gesture support with scroll snap
- Optimized typography scaling for different screen sizes
Comprehensive Accessibility Features:
- Added keyboard navigation support with focus-visible indicators
- Implemented skip links for screen readers
- Created ARIA state management (expanded, selected, disabled, invalid)
- Added high contrast mode support
- Implemented focus trap for modals
- Added live regions for dynamic content announcements
- Created screen reader only content classes
Performance Optimizations:
- Added GPU acceleration for smooth animations
- Implemented content visibility for better rendering
- Created lazy loading patterns for images
- Added virtual scrolling support
- Implemented memory-efficient rendering with containment
- Added font loading optimizations (swap, block, optional)
- Created debounced animations to prevent jank
Utility Class System:
- Built comprehensive layout utilities (flex-center, flex-between, grid-center)
- Added text utilities (ellipsis, line-clamp, emphasis levels)
- Created visibility utilities (visible-on-hover, visible-on-focus)
- Implemented state utilities (loading, error, success, warning)
- Added spacing and sizing utilities for rapid development
Cross-Device Compatibility:
- Mobile devices: Touch-optimized interactions with haptic feedback
- Tablets: Balanced layout with appropriate sizing
- Desktop: Enhanced hover states and keyboard navigation
- Large screens: Optimized layouts with increased content density
- High contrast displays: Enhanced visibility and readability
- Reduced motion preferences: Respectful animation handling
This comprehensive update establishes a robust design system that provides:
- Consistent visual language across all components
- Excellent accessibility for users with disabilities
- Smooth performance on all device types
- Professional mobile experience
- Future-proof scalability for new features
The application now meets modern web standards for design, accessibility, and performance.
2025-07-15 20:42:41 +08:00
imeepos
1b7f7b44a8
feat: Complete comprehensive UI/UX enhancement phase
...
Enhanced Interactive Components:
- Created InteractiveButton with ripple effects, haptic feedback, and multiple variants
- Developed InteractiveInput and InteractiveTextarea with real-time validation and status indicators
- Added FloatingActionButton for quick actions with elegant tooltips
- Implemented comprehensive micro-interactions and animations
Advanced Loading & Skeleton States:
- Enhanced SkeletonLoader with multiple variants (model, material, template, table-row)
- Added specialized skeleton components (ModelCardSkeleton, MaterialCardSkeleton, etc.)
- Created EnhancedLoadingState with progress indicators and operation tracking
- Implemented BatchOperationLoading for complex workflows
Optimized Form Experience:
- Upgraded ProjectForm with new interactive components
- Added real-time validation feedback and error animations
- Implemented smart input states (success, error, loading)
- Enhanced user feedback with visual and haptic responses
Perfected Empty States:
- Redesigned EmptyState with multiple variants and illustrations
- Created specialized empty state components (EmptyProjectList, EmptyModelList, etc.)
- Added contextual tips and guidance for better user onboarding
- Implemented error states and recovery actions
Advanced Data Display:
- Built comprehensive DataTable with search, sort, filter, and pagination
- Created flexible CardGrid with view switching and bulk operations
- Added row selection, bulk actions, and advanced filtering
- Implemented responsive layouts and mobile optimization
Rich Animation System:
- Added 20+ new micro-interaction animations
- Implemented button press, success pulse, error shake effects
- Created smooth slide-in animations for all directions
- Added loading dots, heartbeat, and bounce-in animations
Key Features:
- Ripple effects on button clicks with haptic feedback
- Real-time form validation with animated error states
- Contextual empty states with actionable guidance
- Advanced data tables with full CRUD operations
- Responsive card grids with multiple view modes
- Comprehensive loading states for better perceived performance
All components now provide rich visual feedback, smooth animations, and professional user experience that matches modern design standards.
2025-07-15 20:38:34 +08:00
imeepos
134deb80fb
feat: Optimize UI layout with fixed navigation and scrollable content
...
Layout Optimization:
- Fixed navigation bar at the top with sticky positioning
- Main content area now properly scrollable with flex layout
- Improved overall page structure for better UX
Scrolling Enhancements:
- Added custom scrollbar styling for better visual appeal
- Implemented smooth scrolling behavior across the application
- Optimized scroll areas in ProjectDetails, TemplateManagement, AiClassificationSettings, and ModelList
- Added proper overflow handling for long content lists
Visual Improvements:
- Beautiful custom scrollbars with hover effects
- Proper height constraints for content areas (calc(100vh-16rem))
- Enhanced scrolling experience with backdrop blur effects
- Added scroll indicators and shadow effects for better UX
Responsive Design:
- Mobile-optimized scrolling behavior
- Proper touch scrolling on mobile devices
- Adaptive content heights for different screen sizes
- Maintained accessibility with reduced motion support
Technical Improvements:
- Fixed JSX syntax errors in TemplateManagement and ModelList
- Improved component structure for better maintainability
- Added comprehensive CSS classes for scroll management
- Enhanced performance with optimized overflow handling
All pages now provide a smooth, professional scrolling experience while keeping the navigation always accessible.
2025-07-15 20:18:28 +08:00
imeepos
887f5de793
feat: Complete Modal and Tab UI/UX optimization
...
Enhanced Modal Components:
- Optimized DeleteConfirmDialog with beautiful gradients and improved layout
- Enhanced MaterialEditDialog with modern design and better information hierarchy
- Improved TemplateDetailModal with elegant header and refined tab navigation
- Enhanced AiClassificationFormDialog with modern styling
Unified Tab System:
- Created reusable TabNavigation component with multiple variants (default, pills, underline)
- Implemented consistent tab design across ProjectDetails and other pages
- Added support for icons, counts, and disabled states in tabs
- Improved accessibility and keyboard navigation
Advanced Animations:
- Added comprehensive modal animations (fade-in, scale-in, slide-in)
- Enhanced backdrop blur effects and smooth transitions
- Implemented proper enter/exit animations for better UX
- Added reduced motion support for accessibility
Responsive Design:
- Optimized modal layouts for mobile, tablet, and desktop
- Improved touch-friendly interactions for mobile devices
- Enhanced modal sizing and positioning across screen sizes
- Added proper scrolling and overflow handling
Interaction Improvements:
- Enhanced ESC key support for modal closing
- Improved backdrop click handling
- Better focus management and keyboard navigation
- Consistent button styling and hover effects
All modal and tab components now follow unified design language while maintaining full functionality.
2025-07-15 20:09:54 +08:00
imeepos
5d86a6411f
feat: Complete UI/UX optimization v0.1.21 - Final enhancements
...
- Enhanced TemplateManagement page with beautiful header and improved layout
- Optimized TemplateCard with gradient backgrounds and refined visual effects
- Improved empty state design with elegant icons and better messaging
- Enhanced pagination component with modern styling
- Added comprehensive responsive design optimizations for mobile and tablet
- Implemented touch-friendly interactions for mobile devices
- Added support for different screen orientations and pointer types
- Enhanced animations with device-specific optimizations
- Improved accessibility with proper touch target sizes
- Added dark mode support and high-resolution display optimizations
- Completed comprehensive design system with reusable components
- All pages now follow consistent visual design language
2025-07-15 19:52:31 +08:00
imeepos
19903303ae
feat: UI/UX optimization v0.1.21 - Enhanced visual design and user experience
...
- Unified color system with modern blue theme
- Enhanced ProjectCard with beautiful gradients and hover effects
- Improved Navigation with modern logo and enhanced link styles
- Optimized ProjectDetails page with elegant header and statistics cards
- Enhanced ModelCard and ModelList with refined visual effects
- Improved AiClassificationSettings with beautiful page header
- Optimized TemplateManagement with modern design elements
- Added comprehensive design system with reusable component styles
- Enhanced animations and transitions for smoother interactions
- Improved responsive design for better mobile and tablet experience
- Added support for dark mode and high-resolution displays
- Maintained existing functionality while improving visual appeal
2025-07-15 19:45:02 +08:00
imeepos
fed5cdd73d
fix: UI 样式优化
2025-07-15 19:42:39 +08:00
imeepos
888675dbf1
fix: 修复 素材列表 tag项目不触发数据更新
2025-07-15 19:06:29 +08:00
imeepos
bc5d9d1054
fix: 修复素材查询
2025-07-15 19:00:58 +08:00
imeepos
0ea1b2cd38
fix: 添加只读链接 读写分离
2025-07-15 18:51:09 +08:00
imeepos
8d8e98188d
fix: 添加连接池功能
2025-07-15 18:43:22 +08:00
imeepos
86eeb90fb8
fix: 使用非阻塞锁获取
2025-07-15 18:20:00 +08:00
imeepos
6dcbd4a6e1
fix: 数据库链接 锁问题
2025-07-15 18:10:54 +08:00
imeepos
67ce7104e3
fix: 将所有仓库统一使用 database: Arc<Database> 方式
2025-07-15 17:45:08 +08:00
imeepos
54630ea2ff
fix: 修复数据库链接锁问题
2025-07-15 17:11:44 +08:00
imeepos
590e254fe1
feat: 添加项目详情/素材管理的MaterialSegment聚合视图功能
...
- 新增MaterialSegment聚合视图,支持按AI分类和模特聚合展示
- 实现后端MaterialSegmentViewService和相关API命令
- 创建前端React组件:MaterialSegmentView、MaterialSegmentGroup、MaterialSegmentCard等
- 添加MaterialSegment详细信息模态框和批量操作对话框
- 实现搜索、筛选、排序、分页功能
- 集成虚拟滚动和性能优化
- 在ProjectDetails页面添加片段管理选项卡
- 遵循promptx开发规范和UI/UX设计标准
2025-07-15 16:49:08 +08:00
imeepos
bab1dfc5fd
feat: 实现素材匹配功能 v0.1.19
...
- 新增素材匹配服务 (MaterialMatchingService)
- 支持AI分类匹配、随机匹配等规则
- 实现模特限制逻辑(每个模特素材只能使用一次)
- 时长匹配优化(相差越小越好)
- 详细的匹配统计和失败原因分析
- 新增Tauri API命令
- execute_material_matching: 执行素材匹配
- get_project_material_stats_for_matching: 获取项目素材统计
- validate_template_binding_for_matching: 验证模板绑定
- 新增前端组件和服务
- MaterialMatchingResultDialog: 匹配结果对话框
- MaterialMatchingService: 前端服务层
- 完整的TypeScript类型定义
- UI集成
- 在模板绑定列表添加匹配素材按钮
- 集成到项目详情页面
- 支持完整的匹配流程和结果展示
- 核心匹配规则
- 只使用已AI分类的MaterialSegment
- 每个素材只能使用一次
- 模特限制:优先同一模特,失败后尝试其他模特
- 视频时长必须大于模板需求,相差越小匹配度越高
- 测试覆盖
- 后端服务单元测试
- 覆盖正常匹配、失败场景、边界情况
2025-07-15 14:56:10 +08:00
imeepos
96b420e149
fix: 优化素材绑定页面UI布局和代码格式
...
- 清理多余的空行,优化代码格式
- 调整模特选择下拉框位置,移到批量操作区域
- 改善筛选区域的布局结构
- 保持UI组件的逻辑分组和视觉一致性
2025-07-15 14:24:28 +08:00
imeepos
37cf8bb75a
feat: 为素材绑定页面添加项目筛选功能
...
- 添加项目筛选下拉框,支持按项目过滤素材
- 集成useProjectStore获取项目列表
- 修改loadMaterials函数支持项目ID筛选参数
- 在搜索条件变化时包含项目筛选条件
- 优化筛选UI布局,项目筛选位于绑定状态筛选之前
- 支持全部项目和特定项目的素材筛选功能
2025-07-15 14:23:26 +08:00
imeepos
7c40da1b83
fix: 修复素材绑定页面显示暂无素材的问题
...
- 添加get_all_materials后端命令获取所有项目的素材
- 在MaterialRepository中实现get_all方法
- 在MaterialService中添加get_all_materials方法
- 修改MaterialModelBindingService的getMaterialsByFilter方法,在没有指定项目时获取所有素材而不是返回空数组
- 确保素材绑定页面能正确显示所有素材数据,与统计信息保持一致
- 支持在全局素材列表上应用绑定状态和搜索过滤
2025-07-15 14:18:48 +08:00
imeepos
de446b6410
fix: 修复项目详情页面模板绑定和素材绑定页面的搜索功能
...
- 修复项目详情页面模板绑定搜索功能:使用过滤后的绑定详情而不是原始数据
- 修复素材绑定页面搜索功能:添加useEffect监听搜索条件变化并重新加载数据
- 修复素材绑定页面统计功能:实现全局模特绑定统计API和前端调用
- 优化MaterialModelBindingService的getMaterialsByFilter方法,正确处理多重过滤条件
- 添加后端get_global_model_binding_stats命令和相关仓库方法
- 确保搜索和统计功能在所有相关页面正常工作
2025-07-15 14:10:29 +08:00
imeepos
03f410601a
fix: 模板绑定批量删除后自动刷新列表
...
- 在ProjectDetails页面中修改批量删除回调,删除成功后自动重新获取模板绑定列表
- 简化store中batchDeleteBindings的实现,移除复杂的本地状态更新逻辑
- 确保批量删除操作完成后UI显示最新的数据状态
- 保持与单个删除操作一致的刷新机制
- 删除操作完成后清空选中状态,提升用户体验
2025-07-15 13:55:10 +08:00
imeepos
a1ccde6b89
fix: 修复get_model_by_id死锁问题和批量删除模板功能
...
- 修复ModelService中get_model_by_id使用get_basic_by_id避免数据库死锁
- 解决MaterialCard组件中关联模特一直加载中的问题
- 修复ProjectTemplateBindingList中executeDelete函数的异步处理
- 在get_model_by_id命令中添加详细的调试日志
- 在MaterialCard中添加组件卸载时的状态清理机制
- 在批量删除服务中添加调试日志追踪问题
- 解决页面切换时loading状态不清除的问题
2025-07-15 13:49:43 +08:00
imeepos
ba34481052
fix: 修复MaterialCard中get_model命令未找到的错误
...
- 将MaterialCard组件中的'get_model'命令调用修改为'get_model_by_id'
- 确保前端调用的命令名称与后端注册的命令名称一致
- 解决'Command get_model not found'错误
- 修复素材卡片中获取关联模特信息失败的问题
2025-07-15 13:44:07 +08:00
imeepos
cc46115a26
fix: 修复素材导入时model_id为空的问题并添加调试日志
...
- 修复异步导入函数process_single_file_with_full_logic未使用model_id参数的问题
- 更新函数签名以正确传递model_id参数
- 在素材创建时使用Material::new_with_model而不是Material::new
- 在前端、Store层、后端各个环节添加详细的调试日志
- 确保model_id在整个导入流程中正确传递和使用
- 解决素材导入时选择模特但数据库中model_id为null的问题
2025-07-15 13:40:47 +08:00
imeepos
7e9190dd02
fix: 修复项目模板绑定priority列类型错误
...
- 修复project_template_binding_repository中priority列的类型不一致问题
- 将priority和is_active字段的存储从字符串改为整数类型
- 修复create、update和query操作中的类型转换错误
- 解决'Invalid column type Integer at index: 5, name: priority'错误
- 确保数据库schema与代码中的类型处理保持一致
2025-07-15 13:31:48 +08:00
imeepos
259ff992ae
fix: 修复素材导入时model_id为null的数据库问题
...
- 在materials表初始创建时添加model_id列,避免依赖迁移
- 在初始索引创建中添加model_id索引
- 添加调试日志跟踪model_id在导入过程中的传递
- 确保素材导入时选择的模特ID能正确保存到数据库
- 解决素材导入+选择模特后数据库结果model_id=null的问题
2025-07-15 13:28:47 +08:00
imeepos
5686af3199
fix: 修复MaterialEditDialog中list_models命令不存在的错误
...
- 将MaterialEditDialog.tsx中的'list_models'调用改为'get_all_models'
- 确保前端调用的命令名称与后端注册的命令名称一致
- 解决'Command list_models not found'错误
2025-07-15 13:24:37 +08:00
imeepos
0b9a90771a
fix: 修复CustomSelect组件null值警告
...
- 修复ProjectTemplateBindingList中activeFilter为null时传递给select元素的问题
- 更新getActiveFilterOptions函数,将null值改为空字符串
- 改进CustomSelect组件的类型定义和null值处理
- 添加safeValue转换确保select元素接收有效的字符串值
- 解决React警告:'value prop on select should not be null'
2025-07-15 13:21:30 +08:00
imeepos
8f1355ba16
fix: 修复数据库查询NULL值错误和Tauri命令参数命名问题
...
- 修复video_classification_repository中get_classification_stats函数的NULL值处理
- 将SUM()查询结果从直接获取i32改为Option<i32>并提供默认值0
- 修复get_templates_by_project等命令的参数命名,使用camelCase以匹配前端调用
- 解决'Invalid column type Null at index: 1, name: pending'错误
- 解决'invalid args projectId for command get_templates_by_project'错误
2025-07-15 13:18:04 +08:00
imeepos
9aa2cdd49f
feat: 添加素材删除和重新处理功能
...
- 在MaterialCard组件中添加删除按钮,使用DeleteConfirmDialog替代window.confirm
- 在MaterialCard组件中添加重新处理按钮,当素材状态为Pending时显示
- 在ProjectDetails页面中添加删除和重新处理的处理函数
- 遵循Tauri开发规范和前端开发规范
- 实现了统一的删除确认对话框UI交互
2025-07-15 13:12:01 +08:00
imeepos
3f90013a47
feat: 完善素材导入模特绑定功能并添加测试
...
- 添加测试验证 CreateMaterialRequest 的 model_id 字段
- 添加测试验证 Material::new_with_model 方法
- 更新测试导入以包含新的 model_id 字段
- 确保数据结构和方法的正确性
2025-07-15 13:03:49 +08:00
imeepos
ee7a1f6a1a
fix: remote 导入动画
2025-07-15 12:59:45 +08:00
imeepos
6f888295bb
feat: 添加素材导入时的模特绑定功能
...
- 在 CreateMaterialRequest 中添加 model_id 字段
- 更新 Material 实体添加 new_with_model 方法支持创建时绑定模特
- 修改 MaterialService 和 AsyncMaterialService 支持导入时模特绑定
- 在 MaterialImportDialog 中添加模特选择下拉框
- 支持在导入素材时可选择绑定到特定模特
- 遵循 Tauri 开发规范的组件设计和业务逻辑分层
2025-07-15 12:59:27 +08:00
imeepos
730402aba0
feat: 实现项目-模板绑定和素材-模特绑定管理功能
...
新功能:
- 项目-模板绑定管理系统
- 支持主要/次要模板绑定类型
- 绑定优先级和状态管理
- 批量绑定操作
- 绑定关系的CRUD操作
- 素材-模特绑定管理系统
- 素材与模特的关联管理
- 批量绑定/解绑操作
- 绑定统计和分析
- 素材编辑对话框
架构改进:
- 新增项目-模板绑定数据模型和仓库层
- 新增素材-模特绑定业务服务层
- 完善的API命令层实现
- 响应式前端界面设计
用户体验优化:
- 统一的通知系统
- 增强的加载状态组件
- 流畅的交互动画
- 优雅的确认对话框
测试覆盖:
- 单元测试和集成测试
- 业务逻辑验证
- API接口测试
技术栈:
- 后端: Rust + Tauri + SQLite
- 前端: React + TypeScript + TailwindCSS
- 状态管理: Zustand
- 测试: Vitest + Rust测试框架
配置更新:
- 更新数据库迁移脚本
- 完善测试配置
- 优化构建流程
2025-07-15 12:50:30 +08:00
imeepos
9f222b562d
feat: 模板详情弹框UI/UX全面优化
...
视觉设计优化:
- 重新设计信息架构,按重要性分层展示
- 优化颜色系统,减少视觉噪音
- 统一间距和字体层次,提升可读性
- 使用渐变背景和卡片设计增强视觉层次
交互体验改进:
- 实现渐进披露,核心信息优先展示
- 添加可折叠区域,减少信息密度
- 优化状态指示器,更清晰的文件状态展示
- 改进匹配规则编辑器的位置和样式
响应式适配:
- 移动端友好的布局设计
- 自适应网格系统
- 触摸友好的交互元素
- 优化小屏幕下的信息展示
信息架构重构:
- 概览页:核心信息卡片 + 可折叠技术详情
- 素材页:主要信息 + 可展开详细信息
- 轨道页:轨道概览 + 片段详情 + 可展开属性
遵循frontend-developer规范,提升用户体验
2025-07-15 10:33:05 +08:00
imeepos
73c2187757
feat: 添加[随机匹配]选项到TemplateSegment匹配规则
...
- 在Rust后端SegmentMatchingRule枚举中添加RandomMatch变体
- 更新TypeScript前端类型定义和SegmentMatchingRuleHelper工具函数
- 修改SegmentMatchingRuleEditor组件支持随机匹配选项
- 添加绿色样式标识随机匹配规则
- 添加完整的单元测试覆盖新功能
遵循promptx/tauri-desktop-app-expert开发规范
2025-07-15 10:19:06 +08:00
imeepos
05d29832b0
feat: 实现模板片段匹配规则功能并修复数据库迁移问题
...
新功能:
- 为TrackSegment添加匹配规则字段,支持固定素材和AI分类两种规则
- 实现SegmentMatchingRuleEditor组件,支持在模板详情页面编辑片段匹配规则
- 添加update_segment_matching_rule和get_segment_matching_rule API接口
- 扩展前端类型定义和服务函数以支持匹配规则操作
修复:
- 修复数据库迁移逻辑导致每次重启清空素材和轨道数据的问题
- 为模板表和轨道片段表迁移添加条件检查,只在必要时执行
- 修正matching_rule字段的默认值格式,匹配Rust枚举序列化格式
- 完善轨道片段表重建时的字段迁移逻辑
技术改进:
- 数据库schema更新,添加matching_rule列到track_segments表
- 优化数据库迁移性能,避免不必要的表重建操作
- 增强错误处理和日志输出,便于问题排查
文件变更:
- 后端: template_service.rs, template.rs, database.rs, template_commands.rs, lib.rs
- 前端: SegmentMatchingRuleEditor.tsx, TemplateDetailModal.tsx, templateStore.ts, template.ts
2025-07-15 09:43:04 +08:00
imeepos
be8c032158
fix: 时间显示精度问题
2025-07-15 09:08:37 +08:00
imeepos
0a0c281ef6
fix: 模板导入bug
2025-07-15 08:55:22 +08:00
imeepos
14d90b2254
fix: 模板移除project关联
2025-07-15 08:42:36 +08:00
imeepos
595d2f75fd
fix: 修复模板导入的bug
2025-07-14 23:14:45 +08:00
imeepos
49c5b1a033
fix: 统一按钮样式
2025-07-14 22:12:39 +08:00
imeepos
2d88274c3a
fix: 修复模板导入功能的关键问题
...
修复问题:
- 修复数据库状态格式不一致导致的列表显示错误
- 修复单个导入完成后统计信息显示为0的问题
- 修复日期时间解析错误导致的panic问题
- 修复所有unwrap()调用导致的潜在崩溃
技术改进:
- 统一使用Debug格式保存和查询import_status
- 改进日期解析支持多种格式(RFC3339和SQLite格式)
- 优化进度监控逻辑,保留最后有效统计数据
- 完善错误处理,避免锁中毒和解析错误
功能完善:
- 模板导入完成后正确显示'已完成'状态
- 统计信息准确显示成功/失败数量
- 进度监控稳定运行,无无限轮询问题
2025-07-14 21:50:29 +08:00
imeepos
939efd70d4
feat: 完善模板导入功能
...
新增功能:
- 添加详细的模板导入日志系统
- 实现全局进度存储机制
- 完善模板状态管理
修复问题:
- 修复进度监控无限轮询问题
- 修复模板列表状态显示不正确问题
- 修复所有unwrap()导致的panic错误
- 修复外键约束失败问题
改进:
- 优化素材上传逻辑,只上传视频/音频/图片
- 上传失败时自动跳过而不是中断导入
- 缺失文件时继续导入而不是失败
- 改进错误处理机制
2025-07-14 21:34:07 +08:00
imeepos
3786c4f54f
chore: 发布版本 0.1.9
...
- 完成项目一键AI分类功能开发
- 更新版本号到 0.1.9
- 更新 TODO.md 标记任务完成状态
2025-07-14 18:35:59 +08:00
imeepos
a3a75973aa
fix: build error
2025-07-14 18:32:58 +08:00
imeepos
a204c07dc2
fix: 移除项目设置按钮
2025-07-14 18:30:11 +08:00
imeepos
eeeef4ead4
feat: 实现项目一键AI分类功能
...
- 添加ProjectBatchClassificationRequest和ProjectBatchClassificationResponse数据模型
- 在VideoClassificationService中实现create_project_batch_classification_tasks方法
- 添加start_project_batch_classification Tauri命令接口
- 在前端添加startProjectBatchClassification方法和相关类型定义
- 在项目详情页面添加一键AI分类按钮和队列状态监控
- 支持批量处理项目下所有符合条件的视频素材
- 集成现有的AI分类队列系统,确保兼容性
2025-07-14 18:26:03 +08:00
imeepos
5d8e2df8d0
fix: build error
2025-07-14 16:58:31 +08:00
imeepos
708075f17e
fix: 智能视频分类 测试完成
2025-07-14 16:51:33 +08:00
imeepos
c3c0bb8c08
fix: 修复下拉选择问题
2025-07-14 16:45:28 +08:00
imeepos
719cc3782a
fix: 进度条问题
2025-07-14 16:37:23 +08:00
imeepos
293c1e29c7
fix: 修复进度条问题
2025-07-14 16:36:11 +08:00
imeepos
29e77c2b6f
修改队列处理逻辑,添加自动停止机制
2025-07-14 16:33:11 +08:00
imeepos
bb240833a4
fix: 修复片段路径更新时的数据库表名错误
...
问题修复:
- 修复update_segment_file_path方法中错误的表名
- 将'video_segments'改为正确的'material_segments'
- 移除不存在的updated_at字段更新
问题分析:
- 数据库中只有material_segments表,没有video_segments表
- material_segments表结构只包含created_at,没有updated_at字段
- 这导致AI分类后文件移动成功但片段路径更新失败
修复效果:
- AI分类完成后能正确更新片段的file_path
- 数据库中的片段记录将指向新的分类目录
- 消除'no such table: video_segments'错误
数据一致性:
- 确保文件移动和数据库更新的一致性
- 片段路径始终反映文件的真实位置
- 避免数据库记录与实际文件位置不符的问题
2025-07-14 16:21:08 +08:00
imeepos
48ad00cfcd
fix: 修复日期格式问题
2025-07-14 16:10:05 +08:00
imeepos
4cb264cc32
fix: 修复分类文件 移动到其他位置后 数据库对应字段未更新的bug
2025-07-14 16:02:57 +08:00
imeepos
7a9ac750ae
fix: 修复前端队列控制按钮功能
...
问题修复:
- 修复暂停/恢复/停止按钮无法正常工作的问题
- 添加详细的调试日志来诊断按钮操作
- 优化按钮的启用/禁用逻辑和视觉反馈
技术改进:
- 在队列操作后添加延迟确保后端状态更新
- 修复refreshQueueStatus方法的返回值类型
- 改进按钮状态判断逻辑,支持更多队列状态
用户体验提升:
- 添加状态指示器显示当前队列状态
- 改进按钮的禁用状态样式
- 提供更清晰的按钮提示文本
状态管理优化:
- 确保队列控制操作后正确刷新状态
- 添加操作中的加载状态指示
- 改进错误处理和日志输出
任务恢复机制:
- 添加recover_stuck_tasks功能恢复卡住的任务
- 在队列启动时自动恢复处理中状态的任务
- 解决应用意外关闭导致任务永久卡住的问题
2025-07-14 15:52:28 +08:00
imeepos
0c7eeb9905
移除无用日志
2025-07-14 15:27:24 +08:00
imeepos
94bff3f785
fix: 修复前端队列统计数据不准确的问题
2025-07-14 15:21:48 +08:00
imeepos
2732be6df4
fix: 修复前端队列统计数据不准确的问题
...
问题修复:
- 修复get_pending_tasks查询条件,使用正确的JSON序列化格式
- 修复get_classification_stats中的状态查询条件
- 添加详细的调试日志来诊断状态序列化问题
技术改进:
- 使用参数化查询避免SQL注入风险
- 正确处理TaskStatus枚举的JSON序列化
- 统一状态查询的格式和逻辑
数据一致性:
- 前端显示的队列统计现在基于真实的任务状态
- 消除了前后端数据不同步的问题
- 确保任务查询和统计查询使用相同的状态格式
调试信息:
- 添加状态序列化结果的日志输出
- 便于诊断和验证修复效果
2025-07-14 15:19:40 +08:00
imeepos
fbdd1bf1ea
fix: 修复MaterialRepository中get_project_by_id方法的占位符实现
...
问题修复:
- 修复MaterialRepository.get_project_by_id总是返回None的问题
- 实现正确的项目查询逻辑,直接从projects表查询
- 解决AI分类后文件移动失败的根本原因
技术实现:
- 在MaterialRepository中添加完整的项目查询实现
- 正确处理数据库查询和错误处理
- 支持项目不存在时返回None而不是错误
问题解决:
- 现在AI分类完成后可以正确找到项目信息
- 文件移动到assets/分类目录功能将正常工作
- 消除了'项目不存在'的错误信息
2025-07-14 15:06:15 +08:00
imeepos
7210c15ffd
fix: 修复AI分类后文件移动失败的问题
...
问题修复:
- 添加详细的调试日志来诊断文件移动失败的原因
- 修复项目ID不匹配导致的文件移动失败问题
- 增强项目ID验证和错误处理逻辑
技术改进:
- 在创建分类任务时验证项目ID匹配性
- 在移动文件时添加详细的调试信息
- 支持项目ID不匹配时的自动修复逻辑
问题诊断:
- 发现素材的project_id与请求的project_id不匹配
- 添加了项目存在性验证
- 提供了更清晰的错误信息和日志输出
2025-07-14 15:00:41 +08:00
imeepos
483ea64413
fix: 修复AI视频分类进度数据不一致问题
2025-07-14 14:53:54 +08:00
imeepos
943a22a85e
fix: 修复AI视频分类进度数据不一致问题
...
问题修复:
- 修复分类统计与队列进度数据不匹配的问题
- 添加项目特定的队列状态查询接口
- 确保AI视频分类进度显示当前项目的准确数据
技术改进:
- 添加get_project_classification_queue_status命令
- 在VideoClassificationQueue中添加get_project_stats方法
- 前端组件现在使用项目特定的队列状态
数据一致性:
- 队列统计现在基于项目过滤
- 分类统计和任务进度数据保持一致
- 避免了跨项目数据混淆的问题
2025-07-14 14:52:15 +08:00
imeepos
b1fdcaac6b
feat: 添加项目特定的AI视频分类任务进度显示
...
功能改进:
- 添加get_project_classification_task_progress命令
- VideoClassificationProgress组件现在只显示当前项目的任务
- 优化任务进度获取逻辑,支持按项目过滤
技术实现:
- 后端添加项目任务进度查询接口
- 前端store支持按项目获取任务进度
- 使用useCallback优化组件性能
用户体验提升:
- 项目详情页面只显示相关任务,避免混淆
- 更精确的进度统计和状态显示
- 更好的数据隔离和组织
2025-07-14 14:41:16 +08:00
imeepos
4b26c0406c
feat: 优化项目详情页布局为上下布局
...
布局优化:
- 从左右布局改为上下布局,提升用户体验
- 统计信息移至顶部,采用卡片式设计
- 选项卡导航采用现代化设计风格
响应式设计:
- 统计卡片支持2-4列自适应布局
- 选项卡在小屏幕上显示简化文本
- 操作按钮在移动端仅显示图标
- 素材网格支持1-5列响应式布局
用户体验提升:
- 更好的信息层次结构
- 更高效的空间利用
- 移动端友好的交互设计
- 符合现代UI设计规范
遵循promptx/frontend-developer开发规范,确保:
- 移动优先的响应式设计
- 良好的可访问性支持
- 一致的设计语言
- 优秀的性能表现
2025-07-14 14:26:16 +08:00
imeepos
4b3b00bcfc
fix: 修复编译错误和警告
...
编译错误修复:
- 修复gemini_service.rs中response borrow错误
- 在使用response.text()前保存status值
警告清理:
- 移除未使用的导入: std::collections::HashMap, uuid::Uuid, tokio::sync::Mutex
- 修复未使用变量警告: 添加下划线前缀
- 移除不必要的mut关键字
编译状态:
- 所有编译错误已修复
- 仅保留1个合理的dead_code警告
- 代码质量显著提升
现在代码可以正常编译运行,准备测试AI分类功能。
2025-07-14 13:45:12 +08:00
imeepos
da5bb8e43d
feat: 支持多区域配置的Cloudflare Gateway URL
...
多区域支持:
- 将region改为regions字符串数组
- 支持多个区域: us-central1, us-east1, europe-west1
- 使用第一个区域作为默认区域
- 添加区域选择的详细日志
Cloudflare Gateway URL格式:
- 完整的URL构建逻辑
- 格式: https://gateway.ai.cloudflare.com/v1/{project_id}/{gateway_id}/google-vertex-ai/v1/projects/{google_project_id}/locations/{region}/publishers/google/models
- 支持动态区域切换
配置参数:
- cloudflare_project_id: 67720b647ff2b55cf37ba3ef9e677083
- cloudflare_gateway_id: bowong-dev
- google_project_id: gen-lang-client-0413414134
- regions: [us-central1, us-east1, europe-west1]
日志增强:
- 显示构建的完整Gateway URL
- 显示当前使用的区域
- 显示所有可用区域列表
现在支持标准的Cloudflare Gateway多区域配置。
2025-07-14 13:33:15 +08:00
imeepos
37e75785da
feat: 添加超详细的HTTP请求日志系统
2025-07-14 13:28:29 +08:00
imeepos
e626521ac2
feat: 添加超详细的HTTP请求日志系统
...
详细日志增强:
- HTTP请求URL和超时配置
- 完整的请求头信息 (Authorization脱敏显示)
- 请求体大小和内容预览
- HTTP响应状态码和原因短语
- 完整的响应头信息
- 响应体大小和内容预览
重试机制日志:
- 每次尝试的详细时间统计
- 失败原因的具体记录
- 重试等待过程的状态显示
- 成功/失败的明确标识
错误分析支持:
- JSON解析错误的详细信息
- 错误响应的完整内容
- 候选结果数量统计
- 内容预览和截断显示
调试友好:
- 分步骤的详细日志
- 时间戳和耗时统计
- 敏感信息的安全处理
- 结构化的日志输出
现在可以完整分析API调用的每个环节!
2025-07-14 13:27:04 +08:00
imeepos
ea2c72ea05
fix: 修正Gemini API端点格式
...
API端点修复:
- 修正为正确的格式: base_url/model_name:generateContent
- 修改前: base_url/google/vertex-ai:generateContent
- 修改后: base_url/gemini-2.5-flash:generateContent
具体变更:
- 简化gateway_url为base_url
- 在生成URL时添加model_name
- 符合Python参考代码的端点格式
预期效果:
- 正确的API调用地址
- 与Cloudflare Gateway兼容
- 支持不同模型的动态切换
现在API端点应该是正确的格式了。
2025-07-14 13:22:20 +08:00
imeepos
62cd15fe82
feat: 重构Gemini API调用实现
...
重构改进:
- 参考Python demo.py实现重写Gemini API调用
- 添加完整的配置参数支持 (model_name, max_retries, retry_delay等)
- 实现Cloudflare Gateway兼容的API端点格式
- 添加完整的重试机制和错误处理
API端点修正:
- 修改为正确的generateContent端点格式
- 支持gemini-2.5-flash等模型配置
- 优化请求头和认证方式
- 改进超时和重试策略
配置增强:
- 支持自定义temperature和max_tokens
- 可配置重试次数和延迟时间
- 更好的客户端配置管理
- 详细的日志和错误信息
代码结构:
- 分离请求发送和响应解析逻辑
- 更清晰的错误处理流程
- 符合Rust最佳实践的异步处理
这个重构应该能解决API调用的兼容性问题。
2025-07-14 13:15:39 +08:00
imeepos
5d17966c43
fix: 修复Gemini上传响应解析错误
...
问题修复:
- 修复UploadResponse结构体缺少urn字段的问题
- 支持Google Cloud Storage标准响应格式
- 优先使用urn字段作为文件URI
- 添加name字段作为备用URI构建方案
根据日志分析:
- API返回的是GCS标准格式,包含urn而非file_uri
- 响应示例: gs://dy-media-storage/video-analysis/filename.mp4
- 解决了'missing field file_uri'错误
修复效果:
- 支持多种URI格式的解析
- 提供更好的错误处理和日志
- 确保视频上传流程的完整性
现在应该能正确解析上传响应并继续AI分析流程。
2025-07-14 13:10:00 +08:00
imeepos
b0ea168db8
feat: 添加详细的AI分类日志系统
...
日志增强:
- Gemini API访问令牌获取详细日志
- 视频上传过程完整日志记录
- AI内容分析请求和响应日志
- 视频分类服务处理流程日志
- 任务队列处理状态详细跟踪
日志内容:
- URL请求地址和参数
- HTTP状态码和响应头
- 请求和响应体内容
- 处理耗时统计
- 错误详细信息和堆栈
问题诊断:
- 便于分析404 Not Found错误原因
- 跟踪API调用完整流程
- 监控性能瓶颈
- 调试响应解析问题
这些日志将帮助快速定位和解决AI分类功能的问题。
2025-07-14 13:06:35 +08:00
imeepos
a743bedd98
fix: 彻底修复数据库重复初始化问题
...
问题修复:
- 使用全局静态OnceLock确保数据库单例模式
- 移除AppState中的重复数据库初始化逻辑
- 确保整个应用生命周期只有一个数据库实例
验证结果:
- 测试确认数据库初始化日志只出现一次
- 解决了启动时循环输出的问题
- 提升了应用启动性能
这个修复彻底解决了数据库重复初始化导致的日志循环输出问题。
2025-07-14 13:00:54 +08:00
imeepos
849dc8317c
fix: 修复数据库重复初始化问题
...
问题修复:
- 修复AppState.get_database()方法重复创建数据库实例的问题
- 使用OnceLock确保数据库单例模式
- 修复video_classification_commands中重复调用get_database()的问题
技术改进:
- 避免数据库循环初始化导致的日志重复输出
- 提升应用启动性能
- 确保数据库连接的一致性
这个修复解决了启动时数据库初始化日志循环输出的问题。
2025-07-14 12:56:30 +08:00
imeepos
b8dfaf8af8
feat: 实现AI视频分类功能
...
新功能:
- 集成Google Gemini API进行视频智能分类
- 实现任务队列系统支持批量处理
- 添加实时进度显示和状态管理
- 自动文件整理到分类文件夹
架构改进:
- 遵循Tauri开发规范的分层架构设计
- 完整的数据模型和仓库层实现
- 异步任务处理和错误处理机制
- 类型安全的前后端通信接口
用户界面:
- MaterialCard组件添加AI分类按钮
- VideoClassificationProgress进度显示组件
- 优美的动画效果和响应式设计
- 符合前端开发规范的UI/UX优化
数据库扩展:
- 新增video_classification_records表
- 新增video_classification_tasks表
- 完整的索引优化和外键约束
技术实现:
- Rust后端服务层完整实现
- React/TypeScript前端状态管理
- Zustand状态存储和API封装
- 完善的错误处理和用户提示
文档:
- 完整的功能文档和API说明
- 架构设计和使用流程说明
- 开发规范遵循情况说明
Closes #AI视频分类功能开发
2025-07-14 12:52:30 +08:00
imeepos
c9882aad18
feat: 优化AI分类设置界面设计
...
- 根据promptx/frontend-developer规范优化UI设计
- 精致化卡片布局,减小元素尺寸
- 优化按钮组设计,添加hover动画效果
- 改进表单对话框样式,提升用户体验
- 修复数据库布尔值类型问题
- 优化分类排序移动功能
2025-07-14 12:02:10 +08:00
imeepos
ca63da30ff
feat: 实现AI分类设置功能 (v0.1.7)
...
新增功能:
- AI分类CRUD操作 (创建、读取、更新、删除)
- 实时提示词预览功能
- 分类排序和状态管理
- 完整的表单验证和错误处理
后端架构:
- 数据层: AiClassification模型和仓储
- 业务层: AiClassificationService业务逻辑
- 表示层: 10个Tauri命令接口
- 数据库: ai_classifications表和索引
前端架构:
- 类型系统: 完整的TypeScript类型定义
- 服务层: AiClassificationService API封装
- 组件层: 5个专用组件 (主页面、表单、预览、删除确认、实时预览)
- 路由集成: /ai-classification-settings
质量保证:
- 52个单元测试 (100%通过)
- TypeScript和Rust编译无错误
- 遵循promptx开发规范
核心特性:
- 支持分类名称和提示词定义
- 实时生成完整AI分类提示词
- 拖拽排序和批量操作
- 优雅的用户界面和交互体验
2025-07-14 11:39:44 +08:00
imeepos
a5072d4c0f
fix: 修复TypeScript编译错误
...
- 移除未使用的导入 StarIconSolid
- 移除未使用的导入 useMemo
- 确保构建过程顺利完成
2025-07-14 10:55:22 +08:00
imeepos
173eb8a7ed
chore: 发布 v0.1.6 版本
...
版本更新:
- 更新版本号到 0.1.6
- 添加详细的发布说明文档
版本亮点:
- 完整的模特管理系统
- 全面的UI/UX优化
- 现代化的设计系统
- 性能和稳定性提升
新增功能:
- 模特CRUD操作和照片管理
- 高级搜索和筛选功能
- 双视图模式和收藏功能
- 响应式设计和动画效果
技术改进:
- 分层架构和模块化设计
- 类型安全和错误处理
- 数据库优化和性能提升
- 组件复用和代码规范
2025-07-14 10:50:17 +08:00
imeepos
6b21a389c0
feat: 优化模特管理界面UI/UX设计
...
界面精致化优化:
- 优化模特卡片尺寸,宽高比调整为4:5,更加紧凑
- 精致化按钮设计,统一尺寸规范和间距
- 优化搜索框和筛选器,提升视觉精致度
- 修复下拉选择组件图标间距问题
组件优化:
- ModelCard: 减少内边距,优化文字和图标尺寸
- ModelList: 精致化头部工具栏和按钮设计
- ModelSearch: 重新设计搜索框和筛选器布局
- 创建CustomSelect组件,解决原生select样式问题
用户体验提升:
- 修复筛选按钮功能,添加展开/收起动画
- 优化网格布局,支持更多列显示
- 提高信息密度,在相同空间显示更多内容
- 统一设计语言,建立完整的设计系统
响应式优化:
- 优化移动端显示效果
- 在大屏幕上支持5列布局
- 改进触摸目标尺寸和间距
技术改进:
- 建立统一的设计令牌系统
- 优化CSS动画和过渡效果
- 改进组件可维护性和复用性
- 遵循前端开发规范和视觉设计标准
2025-07-14 10:45:08 +08:00
imeepos
7a2d045be3
fix: 修复模特管理功能的数据库死锁问题
...
- 修复删除操作死锁:移除不必要的存在性检查
- 修复更新操作死锁:创建get_basic_by_id方法避免嵌套锁
- 优化get_all方法:分步执行避免嵌套数据库连接
- 添加详细的调试日志便于问题排查
- 确保前端在操作成功后正确刷新列表
解决的问题:
- 删除模特时卡住不响应
- 编辑模特时卡住不响应
- 数据库连接嵌套锁导致的死锁
技术改进:
- 分离基本信息查询和照片加载逻辑
- 优化数据库连接管理
- 增强错误处理和日志记录
2025-07-14 10:10:35 +08:00
imeepos
5cf1f8bfca
feat: 实现模特管理功能
...
- 新增模特数据模型和数据库表结构
- 实现模特的完整CRUD操作
- 添加模特照片管理功能
- 实现素材与模特关联功能
- 创建模特管理前端界面
- 集成到主应用导航和路由
- 修复数据库连接死锁问题
功能特性:
- 模特基本信息管理(姓名、艺名、性别、年龄等)
- 照片管理和封面设置
- 标签系统
- 状态管理(活跃、不活跃、退役、暂停)
- 评分系统
- 搜索和过滤功能
- 素材关联功能
2025-07-14 01:39:14 +08:00
imeepos
af2897d314
chore: bump version to 0.1.5
...
- 更新package.json版本号到0.1.5
- 更新Cargo.toml版本号到0.1.5
- 更新tauri.conf.json版本号到0.1.5
- 准备发布0.1.5版本
2025-07-14 00:30:09 +08:00
imeepos
c366261008
feat: UI美化和UX改进 v0.1.5
...
- 优化设计系统和主题配置
- 增强Tailwind配置,添加更丰富的色彩系统
- 新增多种动画效果和过渡动画
- 改进字体系统和间距设置
- 添加阴影变体和渐变效果
- 改进项目列表页面UI/UX
- 重新设计页面头部,添加渐变背景和统计信息
- 优化项目卡片布局和响应式设计
- 增强加载和错误状态的视觉效果
- 添加交错动画效果
- 优化项目卡片组件
- 重新设计卡片布局,添加背景装饰
- 改进统计信息展示,使用渐变背景和徽章
- 增强悬停效果和交互反馈
- 优化菜单和按钮设计
- 改进表单和模态框体验
- 重新设计模态框头部和布局
- 增强表单字段的视觉设计和验证反馈
- 添加加载状态和成功状态指示
- 改进按钮样式和交互效果
- 增强加载状态和反馈机制
- 重新设计EmptyState组件,添加装饰效果
- 增强LoadingSpinner,支持多种动画样式
- 改进ErrorMessage组件,支持多种消息类型
- 新增SkeletonLoader组件用于骨架屏加载
- 添加微交互和动画效果
- 新增AnimatedButton组件,支持涟漪效果
- 创建PageTransition组件用于页面过渡
- 添加多种动画工具组件
- 增强按钮和卡片的微交互效果
- 优化响应式设计和移动端体验
- 改进容器布局和间距设置
- 优化移动端的触摸体验
- 确保所有组件在不同屏幕尺寸下的完美适配
遵循前端开发规范,提升界面美观性和用户体验
2025-07-14 00:23:58 +08:00
imeepos
ae854ef871
fix: 完善前端事件处理逻辑
...
- 移除handleStartImport中的手动完成状态设置
- 完全依赖事件监听器处理导入完成状态
- 优化日志输出和错误处理
- 确保异步导入流程的一致性
2025-07-14 00:00:39 +08:00
imeepos
44b4084eb9
fix: 修复异步导入业务逻辑和loading状态
...
问题修复:
1. 异步导入没有调用完整业务逻辑 - 只创建了Material记录,没有处理元数据、场景检测、视频切分
2. 导入动画一闪而逝 - 缺少实际的处理时间
3. 后台无素材处理日志 - 简化版本跳过了所有业务处理
解决方案:
1. 替换简化处理函数为完整业务逻辑处理
2. 调用MaterialService的完整处理流程
3. 添加详细的处理日志和进度事件
4. 添加适当延迟确保用户看到loading动画
5. 修复前端事件处理逻辑
技术改进:
- process_single_file_with_full_logic: 完整的素材处理流程
- 元数据提取、场景检测、视频切分全流程
- 详细的tracing日志输出
- 实时进度事件发送
- 正确的错误处理和状态更新
2025-07-13 23:57:56 +08:00
imeepos
91062ccf4c
feat: 优化前端loading状态和用户体验
...
- 新增MaterialCardSkeleton骨架屏组件
- 优化MaterialImportDialog的进度显示
- 添加详细的导入进度动画和状态指示器
- 改进项目统计信息的loading状态
- 新增LoadingState通用加载组件
- 优化按钮状态和禁用逻辑
- 改进空状态显示和交互
UI/UX改进:
1. 骨架屏loading:替换简单spinner为详细骨架屏
2. 进度指示器:添加阶段指示器和动画效果
3. 状态反馈:实时显示当前处理文件和进度
4. 按钮状态:导入过程中禁用相关按钮
5. 视觉优化:添加图标、颜色和动画效果
2025-07-13 23:51:39 +08:00
imeepos
73f542af40
feat: 实现异步导入处理和批量导入功能
...
- 新增异步素材导入服务 (AsyncMaterialService)
- 实现实时进度反馈和事件驱动架构
- 添加批量文件夹选择和扫描功能
- 更新导入对话框支持文件夹批量导入
- 优化用户体验,避免UI阻塞
Features:
1. 异步导入处理:支持实时进度更新,不阻塞UI
2. 批量导入:支持文件夹选择和递归扫描
3. 事件驱动:使用Tauri事件系统进行进度通信
4. 文件类型过滤:支持按扩展名过滤文件
5. 改进的用户界面:新增批量导入配置步骤
遵循promptx/tauri-desktop-app-expert开发规范
2025-07-13 23:32:54 +08:00
imeepos
3553ba3c06
chore: 发布 v0.1.3 补丁版本
...
- 更新版本号到 0.1.3
- 更新 CHANGELOG.md 记录 hotfix 修复内容
- 修复了 Windows 上 FFmpeg 命令行闪现问题
2025-07-13 23:09:57 +08:00
imeepos
464a0ce708
hotfix: 修复 Windows 上 FFmpeg/FFprobe 命令行闪现问题
...
问题修复:
- 修复了 Windows 平台上执行 FFmpeg 和 FFprobe 时命令行窗口闪现的问题
- 使用 CREATE_NO_WINDOW 标志隐藏控制台窗口,改善用户体验
技术实现:
- 添加 Windows 特定的 CommandExt 导入
- 创建 create_hidden_command() 辅助函数
- 替换所有 FFmpeg/FFprobe 命令调用使用隐藏控制台模式
影响范围:
- FFmpeg 可用性检查
- 视频/音频元数据提取
- 场景检测功能
- 视频切分操作
- 缩略图生成
- 版本信息获取
测试状态:
- Rust 编译通过
- 前端构建成功
- 应用启动正常
- 功能完整性保持
用户体验:
- 消除了命令行窗口闪现
- 保持所有功能正常工作
- 不影响性能和错误处理
2025-07-13 23:06:22 +08:00
imeepos
7af9f68e1a
chore: 更新版本号到 0.1.2 并添加 CHANGELOG
...
- 更新 tauri.conf.json 版本号到 0.1.2
- 更新 Cargo.toml 版本号到 0.1.2
- 更新 package.json 版本号到 0.1.2
- 添加详细的 CHANGELOG.md 记录版本变更
- 准备发布 0.1.2 版本
2025-07-13 22:49:39 +08:00
imeepos
39b517dcd8
feat: 实现Tauri开发规范立即改进项目
2025-07-13 22:46:20 +08:00
imeepos
c2e7b2c70f
feat: 大幅增强ProjectCard - 添加统计信息和打开文件夹功能
...
功能增强:
为首页项目列表中的ProjectCard添加了丰富的统计信息展示和便捷的文件夹操作功能,
让用户能够快速了解项目状态并方便地访问项目文件。
新增功能:
1. 项目统计信息展示:
- 自动加载项目素材统计数据
- 显示素材总数和总文件大小
- 按类型分类显示(视频、音频、图片、其他)
- 使用颜色编码区分不同文件类型
2. 打开文件夹功能:
- 底部按钮栏新增文件夹图标按钮
- 下拉菜单中添加'打开文件夹'选项
- 支持Windows长路径格式处理
- 双重备用机制确保兼容性
3. 加载状态优化:
- 统计信息加载时显示加载状态
- 静默处理加载失败,不影响卡片显示
- 优雅的动画效果
技术实现:
1. 统计数据获取:
- 使用get_project_material_stats命令
- React hooks管理状态
- useEffect自动加载数据
2. 文件夹操作:
- 集成@tauri-apps/plugin-opener
- 路径标准化处理
- 错误处理和用户提示
3. UI设计:
- 统计信息卡片式展示
- 图标+数字的直观显示
- 响应式布局适配
4. 数据格式化:
- formatFileSize函数处理文件大小
- 智能单位转换(B/KB/MB/GB/TB)
视觉效果:
项目统计信息一目了然
文件类型分布清晰展示
便捷的文件夹访问按钮
加载状态友好提示
颜色编码增强可读性
用户体验:
- 快速了解项目规模和内容
- 一键打开项目文件夹
- 直观的文件类型分布
- 流畅的交互体验
现在首页的项目卡片功能更加完善,用户可以快速了解项目状态并便捷地进行文件管理!
2025-07-13 22:26:18 +08:00
imeepos
822bbd8b64
feat: 大幅增强MaterialCard显示信息
2025-07-13 22:20:36 +08:00
imeepos
d36475ff35
feat: 大幅增强MaterialCard显示信息 - 添加丰富的统计信息
...
功能增强:
为素材列表的MaterialCard添加了更多详细的统计信息,
让用户能够更全面地了解每个素材的详细情况。
新增信息展示:
1. 基本信息:
- 文件大小(格式化显示,如 MB/GB)
- 创建时间(本地化日期格式)
2. 视频元数据(蓝色主题):
- 视频时长(mm:ss格式)
- 分辨率(宽高)
- 比特率(自动单位转换)
- 帧率(fps)
- 编解码器
- 音频信息(如果有)
3. 音频元数据(绿色主题):
- 音频时长
- 比特率
- 采样率
- 音频编解码器
4. 图片元数据(紫色主题):
- 图片分辨率
- 图片格式
- DPI信息(如果有)
5. 处理统计信息(灰色主题):
- 场景检测结果(场景数量)
- 切分片段数量
- 处理状态
技术实现:
1. 辅助函数:
- formatTime: 时间格式化(秒转mm:ss)
- formatFileSize: 文件大小格式化
- formatBitrate: 比特率格式化
- formatResolution: 分辨率格式化
- formatDate: 日期本地化格式化
2. 响应式布局:
- 使用Grid布局优化信息展示
- 不同类型元数据使用不同颜色主题
- 图标+文字的直观展示方式
3. 条件渲染:
- 根据素材类型显示对应的元数据
- 智能检测元数据存在性
- 优雅处理缺失信息
用户体验提升:
一目了然的素材详细信息
颜色编码的信息分类
直观的图标标识
格式化的数据展示
响应式的布局设计
现在用户可以在素材列表中快速了解每个文件的详细技术参数和处理状态!
2025-07-13 22:20:01 +08:00
imeepos
4a377be983
fix: 实现MaterialCard中的打开文件位置功能
...
问题分析:
MaterialCard组件中的openFileLocation函数只是打印路径,
没有实际实现打开文件位置的功能,导致点击分片文件无响应。
修复内容:
1. 实现openFileLocation函数:
- 使用revealItemInDir在文件管理器中显示并选中文件
- 添加路径标准化处理,移除Windows长路径前缀
- 提供备用方案:如果revealItemInDir失败,尝试openPath打开目录
2. 错误处理优化:
- 双重备用机制确保功能可用性
- 用户友好的错误提示
- 详细的调试日志
3. TypeScript类型修复:
- 添加MaterialSegment类型导入到materialStore
- 在MaterialState接口中添加getMaterialSegments方法定义
- 清理未使用的导入项
4. 技术实现:
` ypescript
// 主要方法:在文件管理器中显示文件
await revealItemInDir(normalizedPath);
// 备用方法:打开文件所在目录
await openPath(normalizedDirPath);
`
功能特点:
点击分片文件的外链图标可以打开文件位置
自动处理Windows长路径格式
双重备用机制确保兼容性
用户友好的错误处理
现在用户可以方便地通过点击分片列表中的外链图标来打开文件位置了!
2025-07-13 22:12:15 +08:00
imeepos
ee40fe31cf
fix: 修复视频切分路径问题 - 解决FFmpeg路径处理错误
...
问题分析:
1. Windows长路径格式问题:\\?\前缀导致FFmpeg无法处理输出路径
2. 中文路径问题:'待分类'中文目录名可能导致FFmpeg处理失败
3. FFmpeg错误:Error opening output file Invalid argument
修复方案:
1. 路径标准化处理:
- 检测并移除Windows长路径前缀(\\?\)
- 确保传递给FFmpeg的路径是标准格式
2. 目录名优化:
- 将'待分类'目录改为'pending'避免中文路径问题
- 保持功能不变,提高兼容性
3. 双重路径处理:
- 项目路径标准化:移除\\?\前缀
- 输出路径标准化:确保FFmpeg可以正确处理
技术细节:
- 项目路径处理:project.path去除\\?\前缀
- 输出目录:项目目录/pending/素材名_segments
- 路径标准化:确保所有路径都是FFmpeg兼容格式
- 详细日志:便于调试路径处理过程
测试验证:
解决FFmpeg路径处理错误
避免中文路径兼容性问题
保持原有功能逻辑不变
支持Windows长路径格式
现在视频切分应该可以正常工作,文件会输出到项目的pending目录中!
2025-07-13 22:07:11 +08:00
imeepos
2a88d0dc29
feat: 视频切分文件输出到项目待分类目录
...
需求分析:
用户希望二次切片后的视频文件存放到当前项目目录下的'待分类'目录中,
而不是存放在原视频文件旁边,以便更好地组织项目文件结构。
实现方案:
1. 修改输出路径逻辑:
- 原路径:原视频文件目录/视频名_segments/
- 新路径:项目目录/待分类/视频名_segments/
2. 目录结构设计:
项目根目录/
待分类/
视频1_segments/
视频1_001.mp4
视频1_002.mp4
...
视频2_segments/
视频2_001.mp4
...
其他项目文件...
3. 技术实现:
- 添加get_project_for_material方法获取项目信息
- 自动创建'待分类'目录
- 路径标准化处理确保跨平台兼容性
- 详细的日志输出便于调试
4. 优势:
统一的项目文件组织结构
便于后续的文件分类和管理
避免原始文件目录混乱
支持多个视频的切分结果集中管理
现在所有切分后的视频片段都会整齐地存放在项目的待分类目录中!
2025-07-13 22:03:58 +08:00
imeepos
6978b8bbfd
fix: 修复项目详情页打开文件夹功能
...
问题分析:
1. 权限问题:Tauri opener插件缺少必要的权限配置
2. 路径格式问题:Windows长路径格式(\\?\前缀)导致opener插件无法处理
修复方案:
1. 权限配置修复:
- 在capabilities/default.json中添加opener:allow-open-path权限
- 添加opener:allow-reveal-item-in-dir权限
- 同时添加fs和dialog相关权限以支持完整功能
2. 路径处理优化:
- 检测并移除Windows长路径前缀(\\?\)
- 添加备用方案:如果openPath失败,尝试revealItemInDir
- 增加错误处理和用户友好的提示信息
- 添加调试日志便于问题排查
技术细节:
- openPath: 直接打开文件夹
- revealItemInDir: 在文件管理器中显示文件夹
- 路径标准化处理确保跨平台兼容性
现在项目详情页的打开文件夹功能应该可以正常工作了!
2025-07-13 22:00:30 +08:00
imeepos
27353e352f
fix: 修复场景检测后不进行切分的问题
...
问题分析:
场景检测成功识别出44个场景,但是没有进行切分。
原因是needs_segmentation方法只检查视频总时长是否超过最大时长限制。
当视频总时长(170.86秒)小于默认限制(300秒)时,即使有场景检测结果也不会切分。
修复方案:
修改切分条件判断逻辑:
- 原逻辑:只有当视频总时长 > 最大时长限制时才切分
- 新逻辑:满足以下任一条件即切分:
1. 视频总时长 > 最大时长限制
2. 是视频文件且有场景检测结果
这样确保:
有场景检测结果的视频一定会进行分镜头切分
超长视频即使没有场景检测也会按时长切分
保持原有的时长限制功能
现在有场景检测结果的视频都会正确进行分镜头+二次切分处理!
2025-07-13 21:53:31 +08:00
imeepos
faeafa41cb
fix: 修复场景切分逻辑 - 正确实现分镜头+二次切分
...
问题分析:
用户发现了关键问题:当前逻辑错误地将场景检测结果按最大时长合并,
违背了场景检测的目的。
错误逻辑:
场景检测 根据最大时长限制合并场景 切分视频
正确逻辑:
场景检测 按场景切分视频(分镜头) 对超长分镜头二次切分
修复内容:
1. 重构segment_video函数:
- 第一步:create_segments_from_scenes_direct - 直接按场景创建分镜头
- 第二步:apply_duration_limit - 对超长分镜头进行二次切分
2. 新增函数:
- create_segments_from_scenes_direct: 每个场景作为一个片段
- apply_duration_limit: 对超长片段按时长限制切分
3. 保持向后兼容:
- 保留原create_segments_from_scenes函数
- 内部使用新的两步法实现
4. 详细日志输出:
- 分镜头切分过程追踪
- 二次切分决策和结果
- 最终片段统计
测试结果:
44个场景正确识别
每个场景作为独立分镜头
超长分镜头自动二次切分
保持场景完整性的同时满足时长限制
现在视频切分逻辑完全正确:先按场景分镜头,再按时长二次切分!
2025-07-13 21:50:47 +08:00
imeepos
e6e9532061
fix: 修复最大片段时长限制功能
...
问题分析:
- 场景检测结果没有正确转换为SceneSegment结构
- create_segments_from_scenes函数逻辑有误
- 缺少对超长片段的二次切分处理
- 没有添加最后一个场景片段
解决方案:
1. 完善场景检测结果转换:
- 正确获取视频总时长
- 根据场景切换点创建完整的场景片段
- 添加最后一个场景片段
- 详细的场景信息日志输出
2. 重构切分逻辑:
- 修复create_segments_from_scenes算法
- 根据场景边界智能合并片段
- 对超长片段进行二次切分处理
- 添加create_fixed_segments_range辅助函数
3. 增强调试信息:
- 详细的切分过程日志
- 片段时长验证和报告
- 二次切分过程追踪
测试结果:
最大时长限制正确生效(2秒限制)
场景检测识别5个场景
智能切分生成30个片段
所有片段都符合时长限制
使用精确模式避免画面问题
现在视频切分功能完全按照最大片段时长配置工作,既尊重场景边界又确保片段不会过长!
2025-07-13 21:25:40 +08:00
imeepos
864d1b42a9
fix: 修复视频切分前几秒无画面问题
...
问题分析:
- 原因:使用 -c copy 流复制模式在非关键帧位置切分
- 症状:切分后的视频前几秒显示黑屏或无画面
解决方案:
1. 新增三种切分模式:
- Fast: 快速模式(流复制,速度快但可能有画面问题)
- Accurate: 精确模式(重新编码,确保画面完整)
- Smart: 智能模式(关键帧对齐 + 快速切分)
2. 精确模式技术改进:
- 使用 libx264 重新编码视频
- 使用 aac 重新编码音频
- 添加 -preset fast 提高编码速度
- 设置 -crf 23 保证质量
- 添加 -movflags +faststart 优化播放
3. 智能模式特性:
- 自动获取视频关键帧信息
- 将切分点调整到最近的关键帧
- 结合快速切分提高效率
4. 新增调试功能:
- test_video_split 命令测试不同切分模式
- 详细的切分日志输出
- 模式选择和参数配置
默认配置:
- 使用 Accurate 模式确保画面完整
- 可通过配置切换到其他模式
现在切分的视频应该不会再有前几秒无画面的问题!
2025-07-13 21:17:48 +08:00
imeepos
704e6d8fff
feat: 添加视频切分片段查看功能
...
新增功能:
1. MaterialCard组件 - 增强的素材卡片
- 显示素材基本信息和状态
- 支持展开查看切分片段详情
- 片段时间格式化显示
- 文件位置快速访问
2. get_material_segments命令
- 获取指定素材的所有切分片段
- 返回完整的片段信息包括文件路径
3. 前端store集成
- getMaterialSegments方法
- 错误处理和加载状态
4. 用户界面改进
- 状态颜色编码(完成/处理中/失败/等待)
- 可折叠的片段列表
- 时间格式化显示(分:秒)
- 片段索引和时长信息
视频切分结果保存位置:
- 文件系统: 原视频路径_segments/原视频名_001.mp4
- 数据库: material_segments表存储片段元信息
- 前端: 通过MaterialCard组件可视化查看
现在用户可以:
查看每个素材的切分状态
展开查看具体的切分片段
了解每个片段的时间范围和文件位置
快速访问切分后的文件
2025-07-13 21:12:01 +08:00
imeepos
44e9100f56
feat: 大幅改进FFmpeg场景检测功能
...
主要改进:
1. 重构场景检测算法,使用多种检测方法:
- FFmpeg scene滤镜 + showinfo
- ffprobe帧分析(I帧检测)
- 智能时间间隔备用方案
2. 智能备用场景检测:
- 根据视频时长自动调整切分间隔
- 短视频(2分钟内): 30秒间隔
- 中等视频(10分钟内): 60秒间隔
- 长视频: 120秒间隔
- 低阈值时增加额外切点
3. 完善的错误处理和降级策略:
- 多种方法级联尝试
- 详细的调试日志输出
- 确保即使FFmpeg命令失败也能提供合理的场景切点
4. 新增替代检测方法:
- 基于I帧(关键帧)的场景检测
- 最小场景时长限制避免过度切分
技术特点:
- 多重保障确保场景检测不会完全失败
- 智能算法根据视频特征调整策略
- 详细日志便于调试和优化
- 向后兼容,不影响现有功能
现在场景检测应该能够正常工作,即使在FFmpeg配置有问题的情况下也能提供合理的切分建议。
2025-07-13 21:07:30 +08:00
imeepos
dbcd98118c
feat: 修复FFmpeg场景检测功能并添加调试工具
...
主要修复:
- 重构场景检测算法,使用正确的FFmpeg命令
- 添加备用的简单场景检测方法
- 改进FFmpeg可用性检查,同时检查ffmpeg和ffprobe
- 添加详细的FFmpeg状态信息获取功能
新增功能:
- FFmpegDebugPanel调试面板组件
- test_scene_detection测试命令用于调试
- get_ffmpeg_status命令获取详细状态
- 项目详情页面添加调试工具选项卡
技术改进:
- 更可靠的场景检测实现,支持降级到时间间隔方法
- 完善的错误处理和日志记录
- 用户友好的调试界面
- 实时测试和诊断工具
这个版本应该能够正确处理场景检测,即使在FFmpeg配置有问题的情况下也能提供备用方案。
2025-07-13 21:04:46 +08:00
imeepos
954c8a6a1c
fix: 清理调试日志并添加自动处理测试
...
- 移除多余的调试日志,保留必要的错误日志
- 添加test_material_import_with_auto_process测试验证修复
- 确保素材状态正确从Pending更新到Completed
- 测试通过,确认修复有效
修复总结:
素材导入时自动处理功能已启用
状态正确更新:Pending Processing Completed
添加了完整的测试覆盖
错误处理和日志记录完善
2025-07-13 20:55:16 +08:00
imeepos
db1e08ff86
fix: 修复素材状态一直是Pending的问题
...
- 在素材导入时启用自动处理逻辑
- 添加auto_process配置选项到MaterialProcessingConfig
- 在process_single_file中调用process_material进行实际处理
- 添加详细的调试日志跟踪处理流程
- 确保素材状态正确从Pending更新到Processing再到Completed
修复内容:
1. 移除process_single_file中的TODO注释,实现实际处理逻辑
2. 根据auto_process配置决定是否自动处理素材
3. 处理成功后返回更新后的素材对象
4. 添加错误处理和状态跟踪日志
2025-07-13 20:53:05 +08:00
imeepos
036488e13b
fix: 完善前端组件和类型定义
...
- 添加素材导入对话框组件
- 实现项目详情页面完整功能
- 添加素材状态管理store
- 完善TypeScript类型定义
- 更新项目列表路由导航
2025-07-13 20:49:04 +08:00
imeepos
fdb87bf64e
feat: 实现项目详情页面和素材导入功能
...
- 添加项目详情页面路由和组件
- 实现素材数据模型和数据库表结构
- 集成FFmpeg进行视频元数据提取和场景检测
- 实现视频自动切分功能(基于场景检测和时长限制)
- 开发素材导入UI界面和进度显示
- 添加素材管理相关的Tauri命令
- 完善错误处理和性能优化
- 添加单元测试覆盖核心功能
主要功能:
- 项目详情页面展示项目信息和素材统计
- 素材导入支持多种格式(视频、音频、图片、文档)
- MD5重复检测避免重复导入
- FFmpeg集成提取视频/音频元数据
- 智能场景检测和视频切分
- 二次切分处理超长视频片段
- 响应式UI设计和用户友好的导入流程
2025-07-13 20:45:05 +08:00
imeepos
fe7543ed43
release: MixVideo Desktop v0.1.1
...
Release 0.1.1 - 项目管理功能完整版
新功能:
- 完整的项目管理系统(创建、查看、编辑、删除)
- 项目路径选择和验证功能
- 无效项目记录自动清理功能
- 性能监控和事件总线系统
问题修复:
- 修复项目数据持久化问题
- 修复 UNIQUE 约束冲突错误
- 修复应用启动时卡住的问题
- 修复 TypeScript 构建错误
架构完善:
- 遵循 Tauri 开发规范的四层架构设计
- 集成性能监控系统
- 实现事件驱动架构
- 完善错误处理和用户反馈
UI/UX 改进:
- 简洁大方的项目卡片设计
- 流畅的动画效果和交互反馈
- 完整的加载状态和错误提示
- 响应式布局适配
构建产物:
- MixVideo Desktop_0.1.1_x64_en-US.msi
- MixVideo Desktop_0.1.1_x64-setup.exe
技术栈:
- 后端: Rust + Tauri + SQLite + 四层架构
- 前端: React + TypeScript + Tailwind CSS + Zustand
- 测试: Rust 单元测试 + Vitest 前端测试
- 工具: pnpm 包管理 + 类型安全保证
2025-07-13 19:44:48 +08:00
imeepos
7537342b43
fix: 修复 TypeScript 测试配置类型错误
...
修复内容:
- 修复 IntersectionObserver mock 缺少必需属性的类型错误
- 修复 localStorage mock 缺少 length 和 key 属性的类型错误
- 添加正确的类型断言确保测试环境兼容性
构建准备:
- 解决构建过程中的 TypeScript 编译错误
- 确保生产构建能够正常完成
- 为 release 0.1.1 做好准备
2025-07-13 19:40:14 +08:00
imeepos
2f7ed4ae99
fix: 修复 UNIQUE 约束冲突和应用架构完善
...
问题修复:
- 修复项目路径 UNIQUE 约束冲突导致的创建失败问题
- 修复应用启动时数据库清理导致的卡住问题
- 修复编译错误和类型安全问题
架构完善:
- 完善四层架构设计,符合 Tauri 开发规范
- 添加性能监控系统,支持启动时间、内存、CPU 监控
- 添加事件总线系统,实现事件驱动架构
- 增强应用状态管理,集成性能监控和事件系统
技术优化:
- 优化数据库 PRAGMA 配置,提高数据可靠性
- 改进项目创建逻辑,自动处理路径冲突
- 添加手动清理功能,用户可主动清理无效记录
- 完善错误处理和用户反馈机制
新增功能:
- 项目路径冲突自动处理
- 无效项目记录清理功能
- 性能监控报告生成
- 事件驱动的组件通信
UI 改进:
- 在项目列表添加清理按钮
- 优化按钮布局和用户交互
- 增强加载状态和错误提示
质量保证:
- 遵循 Tauri 开发规范的安全第一原则
- 实现类型安全的错误处理
- 添加详细的调试日志和状态监控
- 确保数据库操作的事务安全性
性能优化:
- 优化数据库连接和查询性能
- 实现性能指标监控和报告
- 添加启动时间和响应时间监控
- 符合 Tauri 性能标准要求
2025-07-13 19:33:51 +08:00
imeepos
7b11ed04bd
fix: 修复项目数据持久化问题
...
问题修复:
- 修复软件重新打开后项目数据丢失的问题
- 修复 is_active 字段数据类型不一致导致的查询问题
- 修复数据库事务提交和数据持久化问题
技术修复:
- 改进数据库连接配置,使用 DELETE 模式确保数据立即写入
- 修复 is_active 字段的布尔值存储和读取逻辑
- 添加数据库迁移机制,自动修复历史数据
- 增强数据库路径管理,确保数据存储在正确位置
数据库优化:
- 使用事务确保数据一致性
- 添加数据验证和错误处理
- 优化数据库 PRAGMA 设置提高可靠性
- 支持多种数据类型的兼容性读取
测试验证:
- 验证项目创建后数据正确保存
- 验证应用重启后数据正确加载
- 验证数据库迁移正确执行
- 确保所有现有项目数据完整性
2025-07-13 19:04:11 +08:00
imeepos
42c5dcef8e
feat: 实现项目管理功能 v0.1.1
...
新功能:
- 项目创建:支持项目名称和本地路径绑定
- 项目列表:简洁大方的卡片式布局展示
- 项目编辑:支持项目信息修改
- 项目删除:支持项目软删除
- 路径选择:集成系统文件夹选择对话框
- 路径验证:实时验证项目路径有效性
架构设计:
- 遵循 Tauri 开发规范的四层架构设计
- 基础设施层:数据库管理、文件系统操作
- 数据访问层:项目仓库模式、SQLite 集成
- 业务逻辑层:项目服务、数据验证
- 表示层:Tauri 命令、前端组件
UI/UX:
- 使用 Tailwind CSS 实现简洁大方的设计风格
- 响应式布局适配不同屏幕尺寸
- 流畅的动画效果和交互反馈
- 完整的错误处理和用户提示
技术栈:
- 后端:Rust + Tauri + SQLite + 四层架构
- 前端:React + TypeScript + Tailwind CSS + Zustand
- 测试:Rust 单元测试 + Vitest 前端测试
- 工具:pnpm 包管理 + 类型安全保证
质量保证:
- Rust 单元测试覆盖核心业务逻辑
- 前端组件测试覆盖主要 UI 组件
- TypeScript 严格模式确保类型安全
- 遵循开发规范的代码质量标准
核心特性:
- 项目管理:创建、查看、编辑、删除项目
- 路径管理:自动验证、绝对路径转换
- 数据持久化:SQLite 本地数据库存储
- 状态管理:Zustand 响应式状态管理
- 错误处理:完整的错误捕获和用户反馈
2025-07-13 18:46:58 +08:00
imeepos
1a5fcf6485
Initial commit: MixVideo Desktop v0.1.0
...
Features:
- Cross-platform Tauri desktop application
- React + TypeScript + Vite frontend
- Rust backend with Tauri 2.0
- Multi-package management (PNPM + Cargo workspaces)
- GitHub Actions CI/CD pipeline
- Modern project structure and configuration
Build artifacts:
- Windows MSI and NSIS installers
- Cross-platform executable
- Automated release workflow
Tech stack:
- Frontend: React 18 + TypeScript + Vite
- Backend: Rust + Tauri 2.0
- Package management: PNPM Workspace + Cargo Workspace
- CI/CD: GitHub Actions
2025-07-13 17:57:52 +08:00