9 Commits

Author SHA1 Message Date
Warren
86984295bf Fix WebDAV PUT timeout: disable versioning for user WebDAV
Root cause: save_index() serializes entire 31KB db to JSON and writes to disk for every PUT operation (synchronous blocking call).

Fix: Disabled versioning for user WebDAV by changing line 2547 from Some(versioning.clone()) to None.

Performance improvement:
- Before: 2+ minutes timeout
- After: 10-27 milliseconds
- Speedup: 12000x faster

Tested: 31B, 100KB, 1MB files all upload successfully in <30ms
2026-06-30 04:56:37 +08:00
Warren
257ffcb716 Web GUI Phase 1-5 complete: WebClient + WebAdmin + Virtual Folders + Quota + ACL
- WebClient UI: 文件树/列表显示 + 5种风格切换 + 视图切换
- WebAdmin UI: Dashboard/Users/Shares/Monitor 整合管理
- Virtual Folders UI: CRUD管理 + 跨backend路径映射
- Quota Management UI: Space/File quota配置 + 实时usage监控
- ACL 权限管理 UI: NFSv4/SMB ACL显示 + Permission check + ACE编辑功能

新增代码:~1947行
新增 Vue Components:5个(WebClient/WebAdmin/VirtualFolders/Quota/ACL)
新增 Rust Commands:3个(virtual_folders/quota/acl)

修复问题:
- Tauri v2 参数名修复(snake_case)
- Element Plus icons 名称修复
- Tauri API 导入路径修复(@tauri-apps/api/core)
- 前端环境检测(避免浏览器调用 Tauri API)

覆盖率:
- WebClient: 100%(SFTPGo WebClient功能)
- WebAdmin: 80%(缺少完整Monitor)
- Virtual Folders: 100%
- Quota: 100%
- ACL: 100%(完整 ACE 编辑功能)
2026-06-25 16:40:53 +08:00
Warren
0efaddaffc Implement Dashboard with system stats (Phase 11 P1)
Some checks failed
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
Dashboard Features:
- Dashboard.vue: System overview UI
- System stats: CPU, Memory, Disk usage
- Service status: SMB/SFTP/WebDAV/Backup
- Recent activity log

Tauri Commands:
- get_system_stats: CPU/Memory/Disk stats (macOS + Linux)
- get_all_services_status: Service status list
- get_recent_activity: Activity log

Platform Support:
- macOS: top + vm_stat + df commands
- Linux: /proc/stat + /proc/meminfo + df

UI Components:
- CPU usage progress bar (color-coded)
- Memory usage progress bar
- Disk usage progress bar
- Service status table
- Quick actions buttons
- Recent activity table

Router:
- Added /dashboard route

Home.vue:
- Added Dashboard card (first card)

Build:  Tauri + markbase-core
Tests: 495 markbase-core + 201 smb-server
2026-06-24 06:10:02 +08:00
Warren
103bb66924 Implement Share Management UI (Phase 11 P0 #2)
Some checks failed
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
Share Management Features:
- Shares.vue: Complete share CRUD interface
- Tauri commands: 5 share endpoints
- In-memory share storage (lazy_static)

UI Components:
- Share list table (name, path, protocol, users, permissions)
- Create share dialog (name, path, protocol, users, permissions)
- Edit share dialog (path, protocol, users, permissions)
- Delete share confirmation
- Test connection button

Tauri Commands:
- list_shares: List all shares
- create_share: Create share + create directory if needed
- update_share: Update share config
- delete_share: Remove share from list
- test_share_connection: Test share path exists

Supported Protocols:
- SMB/CIFS (default)
- SFTP
- WebDAV
- S3

Router:
- Added /shares route

Home.vue:
- Added Share Management card

Build:  Tauri + markbase-core
Tests: 495 markbase-core + 201 smb-server
2026-06-24 05:16:24 +08:00
Warren
e07d17aee7 Implement User Management UI (Phase 11 P0 #1)
Some checks failed
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
User Management Features:
- Users.vue: Complete user CRUD interface
- Tauri commands: 5 auth user endpoints
- REST API: DataProvider trait extensions

UI Components:
- User list table (username, home_dir, status)
- Create user dialog (username, password, home_dir, status)
- Edit user dialog (password optional, home_dir, status)
- Delete user confirmation
- Reset password prompt

Tauri Commands (renamed to avoid conflict):
- list_auth_users: List all users from auth database
- create_auth_user: Create user with bcrypt password
- update_auth_user: Update user (optional password)
- delete_auth_user: Delete user
- reset_auth_password: Reset password

DataProvider Trait Extensions:
- list_users(): List all users
- create_user(): Create user with password
- update_user(): Update user (optional password)
- delete_user(): Delete user
- reset_password(): Reset password

Implementations:
- SqliteProvider: Full implementation (sftpgo_users table)
- PgProvider: Full implementation (users table)

Router:
- Added /users route

Home.vue:
- Added User Management card

Build:  Tauri + markbase-core
Tests: 495 markbase-core + 201 smb-server
2026-06-24 05:10:27 +08:00
Warren
90219a65ad Add Backup Management GUI (Phase 3-4)
Some checks failed
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
Web GUI Implementation:
- Backup.vue: Storage dashboard + Snapshot management + Scheduler config
- Router: Add /backup route
- Home.vue: Add Backup management card
- Tauri commands: 10 backup API endpoints

Features:
- Storage stats (total/used/free, dedup/compression ratios)
- Snapshot list with create/delete/restore actions
- Backup scheduler configuration (enabled, interval, max_snapshots)
- Run backup now button
- Send/Receive placeholders

Tauri Commands:
- get_storage_stats, list_snapshots
- create_snapshot, delete_snapshot, restore_snapshot
- get_backup_stats, get_backup_config, set_backup_config
- run_backup

Build: cargo build (Tauri)  5 warnings
Tests: 495 markbase-core + 201 smb-server = 696 total
2026-06-24 03:16:27 +08:00
Warren
ceadeef329 Phase 2.7.3完成:文件上传功能实现
Some checks failed
Test / test (push) Has been cancelled
Test / build (push) Has been cancelled
功能:
- Tauri dialog API集成(文件选择对话框)
- upload_file命令完整实现(文件复制 + 数据库注册)
- 上传按钮UI(带loading状态)
- 上传完成后自动刷新文件树

技术:
- 添加uuid依赖(UUID v4生成)
- Rust: std::fs文件复制 + rusqlite数据库注册
- Vue: @tauri-apps/api/dialog集成
- Vite: 修复dialog API外部化配置

状态:Phase 2完成100%
2026-06-13 16:09:58 +08:00
Warren
d7afd109b0 Phase 2.7完成:文件浏览模块完善(SQLite查询 + Tree展示)
Some checks failed
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
Phase 2.7.1成果:
- 实现SQLite数据库查询(file_registry/file_nodes表)
- get_tree():构建完整虚拟Tree结构
- list_files():列出文件节点
- search_files():文件名模糊搜索
- download_file():查询物理文件路径
- build_tree():递归构建Tree辅助函数

Phase 2.7.2成果:
- Element Plus Tree组件集成
- 双虚拟目录切换(中文/英文)
- 文件节点点击打开功能
- 文件大小格式化显示(KB/MB/GB)
- 文件夹/文件图标区分

技术实现:
- 添加rusqlite依赖到Cargo.toml
- 修复Tauri features配置
- Home.vue完整Tree展示UI
- 编译成功(8警告,0错误)

状态:Phase 2总进度98%完成
2026-06-13 15:53:21 +08:00
Warren
082eea1a86 Phase 2完成:Tauri管理工具开发 + Phase 1双虚拟目录实现
Some checks failed
Test / build (push) Has been cancelled
Test / test (push) Has been cancelled
Phase 1成果:
- 数据库准备:demo.sqlite(117文件,5.07GB)
- 双虚拟Tree:demo_library_zh + demo_library_en
- 文件分类映射:258个节点(自动分类)

Phase 2成果:
- Tauri项目初始化:完整项目结构
- 7个管理模块:安装/配置/诊断/管理/健康/监控/文件浏览
- 7个Rust Commands:完整后端逻辑(约3000行)
- 7个Vue页面:完整前端UI(约2000行)
- Vite build修复:Rolldown外部化配置成功
- 前端构建成功:dist目录生成

总体进度:90%完成(约5000行代码)
2026-06-13 14:34:45 +08:00