新增:文档体系重构+CHANGELOG补充+发布产物清理
This commit is contained in:
43
docs/03-模块文档/更新通知/README.md
Normal file
43
docs/03-模块文档/更新通知/README.md
Normal file
@@ -0,0 +1,43 @@
|
||||
# 更新通知模块文档
|
||||
|
||||
应用更新功能的完整设计文档。
|
||||
|
||||
## 📖 文档分类
|
||||
|
||||
### 设计文档
|
||||
- [update-notification-design.md](./update-notification-design.md) - 升级提示交互设计
|
||||
|
||||
### 实现文档
|
||||
- [update-notification-implementation.md](./update-notification-implementation.md) - 功能实现总结
|
||||
- [update-notification-usage.md](./update-notification-usage.md) - 使用指南
|
||||
- [update-notification-quickref.md](./update-notification-quickref.md) - 快速参考
|
||||
|
||||
### 优化文档
|
||||
- [update-notification-optimization.md](./update-notification-optimization.md) - 功能优化
|
||||
- [update-notification-visual-comparison.md](./update-notification-visual-comparison.md) - 视觉对比
|
||||
- [update-panel-improvements.md](./update-panel-improvements.md) - 更新面板改进
|
||||
|
||||
## 🎯 设计理念
|
||||
|
||||
### 核心价值
|
||||
将升级从"干扰"转变为"期待",创造专业、可信、流畅的更新体验。
|
||||
|
||||
### 设计原则
|
||||
1. **无感检测** - 后台静默检查,不打扰工作流
|
||||
2. **优雅提示** - 精美的弹窗设计,而非生硬的系统提示
|
||||
3. **透明反馈** - 清晰的进度展示,让用户掌控全局
|
||||
4. **安全信任** - 强调版本信息和安全性,建立信任
|
||||
|
||||
## ✅ 主要功能
|
||||
|
||||
- 自动检查更新(可配置)
|
||||
- 手动检查更新
|
||||
- 版本信息展示
|
||||
- 下载进度显示
|
||||
- 自动/手动安装
|
||||
|
||||
## 💡 快速导航
|
||||
|
||||
**设计理念**:[update-notification-design.md](./update-notification-design.md)
|
||||
**使用指南**:[update-notification-usage.md](./update-notification-usage.md)
|
||||
**快速参考**:[update-notification-quickref.md](./update-notification-quickref.md)
|
||||
490
docs/03-模块文档/更新通知/update-notification-design.md
Normal file
490
docs/03-模块文档/更新通知/update-notification-design.md
Normal file
@@ -0,0 +1,490 @@
|
||||
# 升级提示交互设计文档
|
||||
|
||||
## 设计理念
|
||||
|
||||
### 核心价值
|
||||
将升级从"干扰"转变为"期待",创造专业、可信、流畅的更新体验。
|
||||
|
||||
### 设计原则
|
||||
1. **无感检测** - 后台静默检查,不打扰工作流
|
||||
2. **优雅提示** - 精美的弹窗设计,而非生硬的系统提示
|
||||
3. **透明反馈** - 清晰的进度展示,让用户掌控全局
|
||||
4. **安全信任** - 强调版本信息和安全性,建立信任
|
||||
|
||||
---
|
||||
|
||||
## 交互流程
|
||||
|
||||
### 1. 自动检查更新(后台)
|
||||
|
||||
```
|
||||
应用启动
|
||||
↓
|
||||
等待 3 秒(避免阻塞启动)
|
||||
↓
|
||||
检查更新配置
|
||||
↓
|
||||
是否开启自动检查?
|
||||
├─ 否 → 跳过
|
||||
└─ 是 → 请求版本信息
|
||||
↓
|
||||
版本比较
|
||||
├─ 无更新 → 记录日志
|
||||
└─ 有更新 → 检查是否已跳过
|
||||
├─ 已跳过且非强制 → 跳过
|
||||
└─ 未跳过或强制更新 → 延迟 2 秒显示弹窗
|
||||
```
|
||||
|
||||
**关键点:**
|
||||
- ✅ 异步检查,不阻塞应用启动
|
||||
- ✅ 3 秒延迟,优先显示应用界面
|
||||
- ✅ 2 秒延迟显示弹窗,让用户先熟悉界面
|
||||
- ✅ 支持跳过非强制更新
|
||||
|
||||
### 2. 升级提示弹窗
|
||||
|
||||
#### 弹窗触发时机
|
||||
- **自动触发**:应用启动检测到新版本(延迟 5 秒)
|
||||
- **手动触发**:用户在"版本更新"面板点击"检查更新"
|
||||
|
||||
#### 弹窗状态
|
||||
|
||||
**状态 1:初始显示**
|
||||
```
|
||||
┌─────────────────────────────────────────────┐
|
||||
│ 🔍 发现新版本 v0.1.0 → v0.1.1 [✕] │
|
||||
├─────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ 📅 发布日期 2026-01-28 │
|
||||
│ 📁 文件大小 45.2 MB │
|
||||
│ │
|
||||
│ 📖 更新内容 │
|
||||
│ ┌─────────────────────────────────────────┐ │
|
||||
│ │ • 修复文件列表刷新问题 │ │
|
||||
│ │ • 优化启动性能 │ │
|
||||
│ │ • 新增暗色模式支持 │ │
|
||||
│ └─────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ [ 跳过此版本 ] [ 立即更新 ↓ ] │
|
||||
│ │
|
||||
│ ☐ 提醒我稍后更新(下次启动时提醒) │
|
||||
└─────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**状态 2:下载中**
|
||||
```
|
||||
┌─────────────────────────────────────────────┐
|
||||
│ 🔍 发现新版本 v0.1.0 → v0.1.1 [✕] │
|
||||
├─────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ 📥 下载中... │
|
||||
│ ████████████████░░░░░░░░ 65% │
|
||||
│ 28.5 MB / 45.2 MB 2.3 MB/s │
|
||||
│ │
|
||||
│ [ 跳过此版本 ] [ 准备中... ] │
|
||||
└─────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**状态 3:下载完成**
|
||||
```
|
||||
┌─────────────────────────────────────────────┐
|
||||
│ 🔍 发现新版本 v0.1.0 → v0.1.1 [✕] │
|
||||
├─────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ✅ 下载完成! │
|
||||
│ 文件已保存到: │
|
||||
│ C:\Users\xxx\.u-desk\downloads\update.exe │
|
||||
│ │
|
||||
│ [ ✓ 下载完成,点击安装 ] │
|
||||
└─────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
**状态 4:强制更新**
|
||||
```
|
||||
┌─────────────────────────────────────────────┐
|
||||
│ ⚠ 重要更新 v0.1.0 → v0.1.1 │
|
||||
├─────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ⚠️ 此版本包含重要的安全更新和修复, │
|
||||
│ 建议立即更新以继续使用 │
|
||||
│ │
|
||||
│ 📖 更新内容 │
|
||||
│ ┌─────────────────────────────────────────┐ │
|
||||
│ │ • 修复严重安全漏洞 │ │
|
||||
│ │ • 修复数据损坏问题 │ │
|
||||
│ └─────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ [ 立即更新 ↓ ] │
|
||||
└─────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 3. 用户操作流程
|
||||
|
||||
#### 立即更新流程
|
||||
```
|
||||
点击"立即更新"
|
||||
↓
|
||||
开始下载
|
||||
↓
|
||||
显示下载进度(实时更新)
|
||||
↓
|
||||
下载完成
|
||||
↓
|
||||
显示"点击安装"按钮
|
||||
↓
|
||||
点击"安装"
|
||||
↓
|
||||
确认对话框
|
||||
↓
|
||||
开始安装
|
||||
↓
|
||||
显示"安装中..."
|
||||
↓
|
||||
安装成功,延迟 2 秒重启应用
|
||||
```
|
||||
|
||||
#### 跳过流程
|
||||
```
|
||||
点击"跳过此版本"
|
||||
↓
|
||||
检查"提醒我稍后更新"
|
||||
├─ 选中 → 保存到 localStorage(skipped_version)
|
||||
└─ 未选中 → 清除 localStorage
|
||||
↓
|
||||
关闭弹窗
|
||||
↓
|
||||
下次启动时不再提示(除非是强制更新)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 视觉设计
|
||||
|
||||
### 配色方案
|
||||
|
||||
**主要颜色**
|
||||
- **主色调**:`#165dff` - 专业蓝,代表信任和稳定
|
||||
- **成功色**:`#00b42a` - 下载成功、安装完成
|
||||
- **警告色**:`#ff7d00` - 一般更新
|
||||
- **错误色**:`#f53f3f` - 强制更新、下载失败
|
||||
|
||||
**渐变效果**
|
||||
```css
|
||||
/* 版本徽章渐变 */
|
||||
background: linear-gradient(135deg, #165dff 0%, #4facfe 100%);
|
||||
|
||||
/* 强制更新徽章渐变 */
|
||||
background: linear-gradient(135deg, #f53f3f 0%, #ff7875 100%);
|
||||
|
||||
/* 弹窗头部渐变 */
|
||||
background: linear-gradient(135deg, #f0f5ff 0%, #ffffff 100%);
|
||||
```
|
||||
|
||||
### 字体设计
|
||||
|
||||
**显示字体**:系统默认(保持一致性)
|
||||
**代码字体**:`'Menlo', 'Monaco', 'Courier New', monospace`(更新日志)
|
||||
|
||||
**字号层级**
|
||||
```css
|
||||
版本徽章:15px / 600 /* 主要 CTA */
|
||||
标题:14px / 600 /* 区块标题 */
|
||||
正文:14px / 400 /* 内容文字 */
|
||||
辅助文字:12px / 400 /* 标签、提示 */
|
||||
小字:13px / 400 /* 代码、日志 */
|
||||
```
|
||||
|
||||
### 间距系统
|
||||
|
||||
```css
|
||||
弹窗内边距:24px
|
||||
卡片间距:20px
|
||||
区块间距:16px
|
||||
元素间距:12px
|
||||
小间距:8px
|
||||
```
|
||||
|
||||
### 圆角系统
|
||||
|
||||
```css
|
||||
弹窗:8px
|
||||
卡片/容器:12px
|
||||
按钮:8px
|
||||
信息图标:8px
|
||||
```
|
||||
|
||||
### 阴影系统
|
||||
|
||||
```css
|
||||
版本徽章:0 2px 8px rgba(22, 93, 255, 0.3)
|
||||
信息图标:0 2px 6px rgba(22, 93, 255, 0.2)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 动画设计
|
||||
|
||||
### 弹窗动画
|
||||
```css
|
||||
@keyframes modalFadeIn {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: scale(0.95) translateY(-20px);
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: scale(1) translateY(0);
|
||||
}
|
||||
}
|
||||
|
||||
/* 持续时间:0.3s */
|
||||
/* 缓动函数:ease-out */
|
||||
```
|
||||
|
||||
### 进度条动画
|
||||
```css
|
||||
@keyframes progressPulse {
|
||||
0%, 100% { opacity: 1; }
|
||||
50% { opacity: 0.8; }
|
||||
}
|
||||
|
||||
/* 持续时间:1.5s */
|
||||
/* 循环播放 */
|
||||
```
|
||||
|
||||
### 按钮交互
|
||||
- **Hover**:0.15s 背景色过渡
|
||||
- **Active**:轻微缩放(scale: 0.98)
|
||||
|
||||
---
|
||||
|
||||
## 组件结构
|
||||
|
||||
```
|
||||
UpdateNotification.vue
|
||||
├── 模板层(Template)
|
||||
│ ├── 弹窗容器(a-modal)
|
||||
│ ├── 标题栏(自定义)
|
||||
│ │ ├── 版本徽章(带图标)
|
||||
│ │ └── 版本对比(当前 → 最新)
|
||||
│ ├── 内容区域
|
||||
│ │ ├── 版本信息卡片
|
||||
│ │ │ ├── 发布日期
|
||||
│ │ │ └── 文件大小
|
||||
│ │ ├── 更新日志
|
||||
│ │ ├── 强制更新提示(条件显示)
|
||||
│ │ ├── 下载进度(条件显示)
|
||||
│ │ ├── 操作按钮
|
||||
│ │ └── 后台更新选项(条件显示)
|
||||
│
|
||||
├── 脚本层(Script)
|
||||
│ ├── Props(modelValue, updateInfo)
|
||||
│ ├── Emits(update:modelValue, download, install, skip)
|
||||
│ ├── 状态管理
|
||||
│ │ ├── 下载状态
|
||||
│ │ ├── 安装状态
|
||||
│ │ ├── 进度信息
|
||||
│ │ └── 用户选择
|
||||
│ ├── 方法
|
||||
│ │ ├── handleDownload()
|
||||
│ │ ├── handleInstall()
|
||||
│ │ ├── handleSkip()
|
||||
│ │ ├── 事件监听器(下载进度、完成)
|
||||
│ │ └── 工具方法(文件大小格式化等)
|
||||
│ └── 生命周期
|
||||
│ ├── onMounted(设置事件监听)
|
||||
│ └── onUnmounted(清理事件监听)
|
||||
│
|
||||
└── 样式层(Style)
|
||||
├── 弹窗样式
|
||||
├── 版本徽章
|
||||
├── 信息卡片
|
||||
├── 更新日志
|
||||
├── 进度条
|
||||
├── 按钮样式
|
||||
└── 动画效果
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 后端集成
|
||||
|
||||
### API 接口
|
||||
|
||||
```javascript
|
||||
// 检查更新
|
||||
await window.go.main.App.CheckUpdate()
|
||||
// 返回: { success: true, data: { has_update, current_version, latest_version, ... } }
|
||||
|
||||
// 下载更新
|
||||
await window.go.main.App.DownloadUpdate(downloadURL)
|
||||
// 返回: { success: true, data: { message: "下载已开始" } }
|
||||
|
||||
// 安装更新
|
||||
await window.go.main.App.InstallUpdate(filePath, autoRestart)
|
||||
// 返回: { success: true, data: { success: true, message: "安装成功" } }
|
||||
```
|
||||
|
||||
### 事件系统
|
||||
|
||||
```javascript
|
||||
// 监听下载进度
|
||||
window.runtime.EventsOn('download-progress', (event) => {
|
||||
const data = JSON.parse(event)
|
||||
// { progress: 65, speed: 2345678, downloaded: 28576892, total: 45234567 }
|
||||
})
|
||||
|
||||
// 监听下载完成
|
||||
window.runtime.EventsOn('download-complete', (event) => {
|
||||
const data = JSON.parse(event)
|
||||
// { success: true, file_path: "xxx", file_size: 45234567 }
|
||||
})
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 配置选项
|
||||
|
||||
### 用户可配置
|
||||
|
||||
在 **设置 → 版本更新** 中:
|
||||
- ✅ **自动检查更新**:开启/关闭
|
||||
- ✅ **检查间隔**:1-1440 分钟
|
||||
- 🔒 **检查地址**:只读(系统配置)
|
||||
|
||||
### 版本信息文件格式
|
||||
|
||||
```json
|
||||
{
|
||||
"version": "0.1.1",
|
||||
"download_url": "https://img.1216.top/u-desk/go-desk-0.1.1-windows-amd64.exe",
|
||||
"changelog": "• 修复文件列表刷新问题\n• 优化启动性能\n• 新增暗色模式支持",
|
||||
"force_update": false,
|
||||
"release_date": "2026-01-28",
|
||||
"file_size": 45234567
|
||||
}
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 边界情况处理
|
||||
|
||||
### 1. 网络错误
|
||||
```
|
||||
检查更新失败 → 记录日志,不显示弹窗
|
||||
下载失败 → 显示错误提示,允许重试
|
||||
```
|
||||
|
||||
### 2. 下载中断
|
||||
```
|
||||
支持断点续传
|
||||
下次下载从断点继续
|
||||
```
|
||||
|
||||
### 3. 安装失败
|
||||
```
|
||||
显示错误信息
|
||||
自动回滚到备份版本
|
||||
```
|
||||
|
||||
### 4. 用户跳过
|
||||
```
|
||||
非强制更新 → 允许跳过
|
||||
强制更新 → 不允许跳过(禁用关闭按钮)
|
||||
```
|
||||
|
||||
### 5. 版本回退
|
||||
```
|
||||
不主动提示降级
|
||||
如需降级,手动下载安装
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 可访问性
|
||||
|
||||
### 键盘导航
|
||||
- ✅ Tab 键:切换焦点
|
||||
- ✅ Enter 键:激活按钮
|
||||
- ✅ Esc 键:关闭弹窗(非强制更新)
|
||||
|
||||
### 屏幕阅读器
|
||||
- ✅ 语义化 HTML
|
||||
- ✅ ARIA 标签
|
||||
- ✅ 清晰的焦点指示器
|
||||
|
||||
### 对比度
|
||||
- ✅ 文字与背景对比度 ≥ 4.5:1
|
||||
- ✅ 重要信息使用高对比度颜色
|
||||
|
||||
---
|
||||
|
||||
## 性能优化
|
||||
|
||||
### 前端
|
||||
- ✅ 异步加载组件(按需)
|
||||
- ✅ 防抖处理(避免频繁更新)
|
||||
- ✅ 事件监听器及时清理
|
||||
|
||||
### 后端
|
||||
- ✅ 异步下载(不阻塞 UI)
|
||||
- ✅ 流式下载(支持大文件)
|
||||
- ✅ 断点续传(节省带宽)
|
||||
|
||||
---
|
||||
|
||||
## 测试要点
|
||||
|
||||
### 功能测试
|
||||
- ✅ 自动检查更新正常触发
|
||||
- ✅ 弹窗正确显示版本信息
|
||||
- ✅ 下载进度实时更新
|
||||
- ✅ 安装成功后重启
|
||||
- ✅ 跳过功能正常工作
|
||||
- ✅ 强制更新无法关闭
|
||||
|
||||
### 边界测试
|
||||
- ✅ 网络断开时的处理
|
||||
- ✅ 下载失败后的重试
|
||||
- ✅ 安装失败后的回滚
|
||||
- ✅ 跳过后不再提示
|
||||
- ✅ 强制更新必须安装
|
||||
|
||||
### UI 测试
|
||||
- ✅ 弹窗动画流畅
|
||||
- ✅ 进度条更新平滑
|
||||
- ✅ 按钮状态正确
|
||||
- ✅ 响应式布局正常
|
||||
|
||||
---
|
||||
|
||||
## 未来改进方向
|
||||
|
||||
### 短期(1-2 周)
|
||||
- [ ] 增量更新支持(仅下载差异包)
|
||||
- [ ] 更新历史记录
|
||||
- [ ] 更新统计(次数、节省时间)
|
||||
|
||||
### 中期(1-2 月)
|
||||
- [ ] 多渠道更新(稳定版、测试版)
|
||||
- [ ] 自动更新后台下载
|
||||
- [ ] 更新预约(定时更新)
|
||||
|
||||
### 长期(3-6 月)
|
||||
- [ ] 智能更新(根据使用习惯)
|
||||
- [ ] A/B 测试更新策略
|
||||
- [ ] 用户反馈收集
|
||||
|
||||
---
|
||||
|
||||
## 总结
|
||||
|
||||
这个升级提示系统设计遵循了现代 UX 最佳实践:
|
||||
|
||||
✨ **专业感** - 精美的视觉设计,建立用户信任
|
||||
🚀 **流畅感** - 细腻的动画过渡,提升体验
|
||||
🎯 **掌控感** - 清晰的进度反馈,用户有掌控权
|
||||
🔒 **安全感** - 强制更新保护,跳过选项灵活
|
||||
⚡ **高效感** - 后台检测,不干扰工作流
|
||||
|
||||
用户将从"被迫更新"的烦恼,转变为"期待更新"的积极体验。
|
||||
284
docs/03-模块文档/更新通知/update-notification-final-summary.md
Normal file
284
docs/03-模块文档/更新通知/update-notification-final-summary.md
Normal file
@@ -0,0 +1,284 @@
|
||||
# 升级提示优化完成总结
|
||||
|
||||
## ✅ 优化完成
|
||||
|
||||
已成功完成两项核心优化:
|
||||
|
||||
### 1. 下载完成后自动安装 ✅
|
||||
- ✅ 无需用户再次点击
|
||||
- ✅ 无确认对话框
|
||||
- ✅ 自动触发安装流程
|
||||
- ✅ 流畅的用户体验
|
||||
|
||||
### 2. 视觉设计平和化 ✅
|
||||
- ✅ 去掉渐变效果
|
||||
- ✅ 去掉阴影效果
|
||||
- ✅ 使用系统主题变量
|
||||
- ✅ 减小字体和间距
|
||||
- ✅ 简化动画效果
|
||||
- ✅ 更好地融入整体风格
|
||||
|
||||
---
|
||||
|
||||
## 📁 修改清单
|
||||
|
||||
### 代码文件
|
||||
- ✅ `frontend/src/components/UpdateNotification.vue`
|
||||
- 添加自动安装逻辑
|
||||
- 优化视觉样式
|
||||
- 删除不必要的组件和状态
|
||||
- 修改 500+ 行代码
|
||||
|
||||
### 文档文件
|
||||
- ✅ `docs/update-notification-optimization.md` - 详细优化说明
|
||||
- ✅ `docs/update-notification-visual-comparison.md` - 视觉对比文档
|
||||
|
||||
### 构建状态
|
||||
- ✅ 前端构建成功
|
||||
- ✅ 无错误、无警告
|
||||
- ✅ 可以立即使用
|
||||
|
||||
---
|
||||
|
||||
## 🎨 主要变化
|
||||
|
||||
### 功能层面
|
||||
```
|
||||
优化前:
|
||||
点击更新 → 下载 → 显示安装按钮 → 点击安装 → 确认对话框 → 安装
|
||||
|
||||
优化后:
|
||||
点击更新 → 下载 → 自动安装
|
||||
|
||||
减少:2 次点击 + 1 个确认框
|
||||
```
|
||||
|
||||
### 视觉层面
|
||||
```
|
||||
优化前:
|
||||
- 渐变背景、阴影效果
|
||||
- 鲜艳的颜色(#165dff, #f53f3f)
|
||||
- 大字体、大间距
|
||||
- 复杂的动画
|
||||
|
||||
优化后:
|
||||
- 纯色背景、细边框
|
||||
- 系统主题变量
|
||||
- 紧凑的布局
|
||||
- 简化的动画
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 💡 设计理念变化
|
||||
|
||||
### 从 → 到
|
||||
|
||||
| 维度 | 从(优化前) | 到(优化后) |
|
||||
|------|-------------|-------------|
|
||||
| **目标** | 吸引注意力 | 融入体验 |
|
||||
| **风格** | 醒目突出 | 简洁平和 |
|
||||
| **配色** | 硬编码渐变 | 系统主题变量 |
|
||||
| **交互** | 多步骤操作 | 一键完成 |
|
||||
| **感觉** | "看我看我" | "我在这里为你服务" |
|
||||
|
||||
---
|
||||
|
||||
## 📊 数据对比
|
||||
|
||||
### 视觉元素
|
||||
- 版本徽章:渐变 → 纯色 + 边框
|
||||
- 信息图标:40px → 32px
|
||||
- 卡片圆角:12px → 6px
|
||||
- 字体大小:14-15px → 12-14px
|
||||
- 间距:12-20px → 8-16px
|
||||
|
||||
### 交互流程
|
||||
- 操作步骤:3 次 → 1 次
|
||||
- 动画时长:0.3s → 0.2s
|
||||
- 确认对话框:有 → 无
|
||||
- 等待时间:较长 → 较短
|
||||
|
||||
---
|
||||
|
||||
## 🎯 核心价值
|
||||
|
||||
### 用户价值
|
||||
✅ **更流畅** - 一键更新,无需多次操作
|
||||
✅ **更协调** - 与整体风格一致
|
||||
✅ **更专业** - 简洁的设计语言
|
||||
✅ **更友好** - 自然的体验流程
|
||||
|
||||
### 产品价值
|
||||
✅ **品牌形象** - 专业、可信赖
|
||||
✅ **用户满意度** - 操作简便
|
||||
✅ **维护成本** - 使用系统变量
|
||||
✅ **扩展性** - 易于适配新主题
|
||||
|
||||
---
|
||||
|
||||
## 🚀 使用方式
|
||||
|
||||
### 立即使用
|
||||
```bash
|
||||
# 重新编译前端
|
||||
cd web
|
||||
npm run build
|
||||
|
||||
# 启动应用
|
||||
wails dev
|
||||
```
|
||||
|
||||
### 测试更新提示
|
||||
1. 确保版本信息文件中版本号 > 当前版本(0.1.0)
|
||||
2. 启动应用
|
||||
3. 等待 5 秒
|
||||
4. 查看更新提示弹窗
|
||||
|
||||
### 体验自动安装
|
||||
1. 点击"立即更新"
|
||||
2. 观察下载进度
|
||||
3. 下载完成后自动安装(无需点击)
|
||||
|
||||
---
|
||||
|
||||
## 📋 修改详细说明
|
||||
|
||||
### 删除的代码
|
||||
```javascript
|
||||
// 删除:下载完成状态
|
||||
const downloaded = ref(false)
|
||||
|
||||
// 删除:带确认框的安装函数
|
||||
const handleInstall = () => {
|
||||
Modal.confirm({...})
|
||||
}
|
||||
|
||||
// 删除:不必要的导入
|
||||
import { Modal } from '@arco-design/web-vue'
|
||||
import { IconCheckCircle } from '@arco-design/web-vue/es/icon'
|
||||
```
|
||||
|
||||
### 新增的代码
|
||||
```javascript
|
||||
// 新增:直接安装函数
|
||||
const handleInstallDirect = async () => {
|
||||
installing.value = true
|
||||
const result = await window.go.main.App.InstallUpdate(downloadedPath.value, true)
|
||||
// ...
|
||||
}
|
||||
|
||||
// 修改:下载完成自动安装
|
||||
const onDownloadComplete = (event) => {
|
||||
// ...
|
||||
setTimeout(() => {
|
||||
handleInstallDirect() // 自动触发
|
||||
}, 500)
|
||||
}
|
||||
```
|
||||
|
||||
### 优化的样式
|
||||
```css
|
||||
/* 修改前:渐变 + 阴影 */
|
||||
background: linear-gradient(135deg, #165dff 0%, #4facfe 100%);
|
||||
color: white;
|
||||
box-shadow: 0 2px 8px rgba(22, 93, 255, 0.3);
|
||||
|
||||
/* 修改后:纯色 + 边框 */
|
||||
background: var(--color-fill-2);
|
||||
color: var(--color-text-1);
|
||||
border: 1px solid var(--color-border-2);
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✨ 效果展示
|
||||
|
||||
### 视觉效果
|
||||
```
|
||||
┌──────────────────────────────────────────────┐
|
||||
│ 发现新版本 v0.1.0 → v0.1.2 [×] │ ← 简洁徽章
|
||||
├──────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ 📅 发布日期 2026-01-28 │ ← 小图标
|
||||
│ 📁 文件大小 45.2 MB │
|
||||
│ │
|
||||
│ 📖 更新内容 │
|
||||
│ ┌────────────────────────────────────────┐ │
|
||||
│ │ • 测试更新 │ │ ← 细边框
|
||||
│ │ • 新功能测试 │ │
|
||||
│ └────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ ████████████████░░░░░ 65% │ ← 进度条
|
||||
│ 28.5 MB / 45.2 MB 2.3 MB/s │
|
||||
│ │
|
||||
│ [ 跳过此版本 ] [ 立即更新 ] │ ← 紧凑按钮
|
||||
│ │
|
||||
│ ☐ 提醒我稍后更新 │
|
||||
└──────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 交互流程
|
||||
```
|
||||
1. 应用启动 → 5 秒后显示弹窗(如需更新)
|
||||
2. 点击"立即更新" → 开始下载
|
||||
3. 下载中 → 显示实时进度
|
||||
4. 下载完成 → 自动安装(延迟 0.5 秒)
|
||||
5. 安装成功 → 应用重启
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎓 设计启示
|
||||
|
||||
### 好的设计应该:
|
||||
1. **服务于功能** - 美观是手段,好用是目的
|
||||
2. **融入环境** - 与整体风格协调,而非突兀
|
||||
3. **简化流程** - 减少步骤,提升效率
|
||||
4. **尊重用户** - 不过度打扰,不强制交互
|
||||
|
||||
### 本次优化体现:
|
||||
- ✅ 从"视觉冲击"到"用户体验"
|
||||
- ✅ 从"复杂华丽"到"简洁专业"
|
||||
- ✅ 从"多步操作"到"一键完成"
|
||||
- ✅ 从"硬编码"到"系统变量"
|
||||
|
||||
---
|
||||
|
||||
## 📞 相关文档
|
||||
|
||||
### 设计文档
|
||||
- `docs/update-notification-design.md` - 完整设计文档
|
||||
- `docs/update-notification-optimization.md` - 优化详细说明
|
||||
- `docs/update-notification-visual-comparison.md` - 视觉对比
|
||||
- `docs/update-notification-implementation.md` - 实现总结
|
||||
- `docs/update-notification-usage.md` - 使用指南
|
||||
- `docs/update-notification-quickref.md` - 快速参考
|
||||
|
||||
---
|
||||
|
||||
## 🎉 总结
|
||||
|
||||
### 完成状态
|
||||
✅ **功能优化** - 下载完成后自动安装
|
||||
✅ **视觉优化** - 平和的设计风格
|
||||
✅ **代码优化** - 更简洁、更易维护
|
||||
✅ **文档完善** - 详细的说明文档
|
||||
✅ **构建成功** - 可以立即使用
|
||||
|
||||
### 核心价值
|
||||
> 将升级提示从"醒目的配角"优化为"融入整体的自然体验"
|
||||
|
||||
### 用户体验提升
|
||||
- 操作步骤:3 次点击 → 1 次点击
|
||||
- 视觉感受:醒目突出 → 简洁平和
|
||||
- 整体协调:⭐⭐⭐ → ⭐⭐⭐⭐⭐
|
||||
|
||||
### 产品形象提升
|
||||
- 更专业的设计语言
|
||||
- 更流畅的交互体验
|
||||
- 更好的品牌形象
|
||||
|
||||
---
|
||||
|
||||
**优化完成!可以投入使用!** 🎉
|
||||
400
docs/03-模块文档/更新通知/update-notification-implementation.md
Normal file
400
docs/03-模块文档/更新通知/update-notification-implementation.md
Normal file
@@ -0,0 +1,400 @@
|
||||
# 升级提示功能实现总结
|
||||
|
||||
## ✅ 已完成的工作
|
||||
|
||||
### 1. 前端组件开发
|
||||
|
||||
#### UpdateNotification.vue
|
||||
**文件路径:** `frontend/src/components/UpdateNotification.vue`
|
||||
|
||||
**功能特性:**
|
||||
- ✅ 精美的弹窗UI设计
|
||||
- ✅ 版本信息展示(当前版本 → 最新版本)
|
||||
- ✅ 发布日期和文件大小显示
|
||||
- ✅ 更新日志格式化展示
|
||||
- ✅ 下载进度实时显示(进度条 + 速度 + 文件大小)
|
||||
- ✅ 强制更新支持(不可关闭)
|
||||
- ✅ 灵活的跳过选项(支持稍后提醒)
|
||||
- ✅ 完整的状态管理(初始、下载中、下载完成、安装中)
|
||||
- ✅ 事件系统集成(监听下载进度和完成事件)
|
||||
|
||||
**UI亮点:**
|
||||
- 🎨 渐变色版本徽章(蓝色普通更新 / 红色强制更新)
|
||||
- 🎨 卡片式信息展示
|
||||
- 🎨 流畅的动画效果(淡入、缩放)
|
||||
- 🎨 响应式布局
|
||||
- 🎨 清晰的视觉层次
|
||||
|
||||
### 2. 应用集成
|
||||
|
||||
#### App.vue 修改
|
||||
**文件路径:** `frontend/src/App.vue`
|
||||
|
||||
**新增功能:**
|
||||
- ✅ 导入 UpdateNotification 组件
|
||||
- ✅ 应用启动后自动检查更新(延迟 3 秒)
|
||||
- ✅ 发现新版本后自动显示弹窗(延迟 5 秒总时长)
|
||||
- ✅ 跳过版本记忆功能(localStorage)
|
||||
- ✅ 完整的事件处理(安装、跳过)
|
||||
|
||||
**实现逻辑:**
|
||||
```javascript
|
||||
1. 应用启动
|
||||
2. 等待 3 秒(避免阻塞启动)
|
||||
3. 检查更新配置
|
||||
4. 如果开启自动检查:
|
||||
- 调用 CheckUpdate() API
|
||||
- 比较版本号
|
||||
- 检查是否已跳过
|
||||
- 如果有更新且未跳过 → 延迟 2 秒显示弹窗
|
||||
```
|
||||
|
||||
### 3. 后端支持
|
||||
|
||||
#### 已有的后端接口(无需修改)
|
||||
- ✅ `CheckUpdate()` - 检查更新
|
||||
- ✅ `DownloadUpdate()` - 下载更新包(支持进度事件)
|
||||
- ✅ `InstallUpdate()` - 安装更新
|
||||
- ✅ `GetUpdateConfig()` - 获取更新配置
|
||||
- ✅ `SetUpdateConfig()` - 保存更新配置
|
||||
|
||||
#### 事件系统
|
||||
- ✅ `download-progress` - 下载进度事件
|
||||
- ✅ `download-complete` - 下载完成事件
|
||||
|
||||
### 4. 文档
|
||||
|
||||
#### 设计文档
|
||||
**文件路径:** `docs/update-notification-design.md`
|
||||
|
||||
**包含内容:**
|
||||
- 设计理念和原则
|
||||
- 完整的交互流程图
|
||||
- 视觉设计规范(配色、字体、间距、圆角、阴影)
|
||||
- 动画设计细节
|
||||
- 组件结构说明
|
||||
- 后端集成指南
|
||||
- 配置选项说明
|
||||
- 版本信息文件格式
|
||||
- 边界情况处理
|
||||
- 可访问性考虑
|
||||
- 性能优化建议
|
||||
- 测试要点
|
||||
- 未来改进方向
|
||||
|
||||
#### 使用指南
|
||||
**文件路径:** `docs/update-notification-usage.md`
|
||||
|
||||
**包含内容:**
|
||||
- 功能概述
|
||||
- 主要特性列表
|
||||
- 详细使用流程
|
||||
- 配置选项说明
|
||||
- 手动检查更新方法
|
||||
- 常见问题解答(FAQ)
|
||||
- 技术实现说明
|
||||
- 最佳实践建议
|
||||
|
||||
### 5. 代码修复
|
||||
|
||||
#### app.go
|
||||
**文件路径:** `app.go:68`
|
||||
|
||||
**修改:**
|
||||
```go
|
||||
// 修改前:
|
||||
if updateAPI, err := api.NewUpdateAPI("https://img.1216.top/go-desk/last-version.json")
|
||||
|
||||
// 修改后:
|
||||
if updateAPI, err := api.NewUpdateAPI("https://img.1216.top/u-desk/last-version.json")
|
||||
```
|
||||
|
||||
**原因:** 确保使用正确的版本检查地址(u-desk 而非 go-desk)
|
||||
|
||||
#### UpdatePanel.vue
|
||||
**文件路径:** `frontend/src/components/UpdatePanel.vue`
|
||||
|
||||
**修改:**
|
||||
- 将"更新检查地址"字段设置为 `disabled`(只读)
|
||||
- 添加提示文字:"系统默认配置,不可修改"
|
||||
- 移除 `@change` 事件(不需要保存)
|
||||
|
||||
**原因:** 防止用户误改检查地址,导致无法更新
|
||||
|
||||
---
|
||||
|
||||
## 🎨 设计亮点
|
||||
|
||||
### 视觉设计
|
||||
1. **版本徽章**
|
||||
- 普通更新:蓝色渐变 `#165dff → #4facfe`
|
||||
- 强制更新:红色渐变 `#f53f3f → #ff7875`
|
||||
- 带图标和阴影,突出重要信息
|
||||
|
||||
2. **信息卡片**
|
||||
- 图标化信息展示(日历、文件)
|
||||
- 卡片式布局,清晰分组
|
||||
- 柔和的背景色和圆角
|
||||
|
||||
3. **进度条**
|
||||
- 实时进度更新
|
||||
- 显示下载速度和文件大小
|
||||
- 脉冲动画效果
|
||||
|
||||
4. **动画效果**
|
||||
- 弹窗淡入 + 缩放
|
||||
- 进度条脉冲动画
|
||||
- 按钮悬停效果
|
||||
|
||||
### 交互设计
|
||||
1. **非阻塞式检查**
|
||||
- 应用启动后 3 秒才检查(优先显示界面)
|
||||
- 弹窗延迟 5 秒显示(让用户先熟悉界面)
|
||||
|
||||
2. **灵活的控制**
|
||||
- 非强制更新可跳过
|
||||
- 支持稍后提醒选项
|
||||
- 记忆跳过的版本
|
||||
|
||||
3. **透明反馈**
|
||||
- 实时显示下载进度
|
||||
- 清晰的错误提示
|
||||
- 确认对话框防止误操作
|
||||
|
||||
---
|
||||
|
||||
## 📊 技术细节
|
||||
|
||||
### 组件通信
|
||||
```
|
||||
App.vue (父组件)
|
||||
↓ 提供数据
|
||||
UpdateNotification.vue (子组件)
|
||||
↓ 发出事件
|
||||
App.vue (父组件)
|
||||
↓ 调用后端 API
|
||||
Go Backend (后端)
|
||||
↓ 发出事件
|
||||
UpdateNotification.vue (子组件)
|
||||
```
|
||||
|
||||
### 数据流
|
||||
```
|
||||
用户启动应用
|
||||
↓
|
||||
App.vue: checkForUpdates()
|
||||
↓
|
||||
Go Backend: CheckUpdate()
|
||||
↓
|
||||
返回更新信息
|
||||
↓
|
||||
App.vue: 判断是否显示弹窗
|
||||
↓
|
||||
UpdateNotification.vue: 显示弹窗
|
||||
↓
|
||||
用户点击"立即更新"
|
||||
↓
|
||||
UpdateNotification.vue: handleDownload()
|
||||
↓
|
||||
Go Backend: DownloadUpdate()
|
||||
↓
|
||||
推送进度事件: download-progress
|
||||
↓
|
||||
UpdateNotification.vue: 更新进度条
|
||||
↓
|
||||
下载完成事件: download-complete
|
||||
↓
|
||||
UpdateNotification.vue: 显示"安装"按钮
|
||||
↓
|
||||
用户点击"安装"
|
||||
↓
|
||||
UpdateNotification.vue: emit('install')
|
||||
↓
|
||||
App.vue: handleUpdateInstall()
|
||||
↓
|
||||
Go Backend: InstallUpdate()
|
||||
↓
|
||||
应用重启
|
||||
```
|
||||
|
||||
### 状态管理
|
||||
```javascript
|
||||
// UpdateNotification.vue 的状态
|
||||
const visible = ref(false) // 弹窗显示状态
|
||||
const downloading = ref(false) // 下载中状态
|
||||
const downloaded = ref(false) // 下载完成状态
|
||||
const installing = ref(false) // 安装中状态
|
||||
const downloadProgress = ref(0) // 下载进度 (0-100)
|
||||
const remindLater = ref(false) // 稍后提醒选项
|
||||
const progressInfo = ref({ // 进度详情
|
||||
progress: 0,
|
||||
speed: 0,
|
||||
downloaded: 0,
|
||||
total: 0
|
||||
})
|
||||
|
||||
// App.vue 的状态
|
||||
const showUpdateNotification = ref(false) // 显示升级提示
|
||||
const updateInfo = ref(null) // 更新信息
|
||||
const checkedUpdate = ref(false) // 是否已检查
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🧪 测试要点
|
||||
|
||||
### 功能测试
|
||||
- [x] 应用启动自动检查更新
|
||||
- [x] 弹窗正确显示版本信息
|
||||
- [x] 下载按钮正常工作
|
||||
- [x] 下载进度实时更新
|
||||
- [x] 下载完成后显示安装按钮
|
||||
- [x] 安装成功后应用重启
|
||||
- [x] 跳过功能正常工作
|
||||
- [x] 强制更新无法关闭
|
||||
- [x] 前端构建成功
|
||||
|
||||
### UI 测试
|
||||
- [x] 弹窗动画流畅
|
||||
- [x] 版本徽章颜色正确
|
||||
- [x] 进度条更新平滑
|
||||
- [x] 按钮状态正确
|
||||
- [x] 响应式布局正常
|
||||
|
||||
### 边界测试(待测试)
|
||||
- [ ] 网络断开时的处理
|
||||
- [ ] 下载失败后的重试
|
||||
- [ ] 安装失败后的回滚
|
||||
- [ ] 跳过后不再提示
|
||||
- [ ] 强制更新必须安装
|
||||
|
||||
---
|
||||
|
||||
## 🚀 部署清单
|
||||
|
||||
### 前端
|
||||
- ✅ `UpdateNotification.vue` - 升级提示组件
|
||||
- ✅ `App.vue` - 集成自动检查逻辑
|
||||
- ✅ 前端构建成功
|
||||
|
||||
### 后端
|
||||
- ✅ 所有必要的API接口已存在
|
||||
- ✅ 事件系统已就绪
|
||||
- ✅ `app.go` 检查地址已修复
|
||||
|
||||
### 配置
|
||||
- ✅ 版本信息文件地址:`https://img.1216.top/u-desk/last-version.json`
|
||||
- ✅ 配置文件不可修改(前端限制)
|
||||
|
||||
### 文档
|
||||
- ✅ 设计文档:`docs/update-notification-design.md`
|
||||
- ✅ 使用指南:`docs/update-notification-usage.md`
|
||||
- ✅ 实现总结:`docs/update-notification-implementation.md`
|
||||
|
||||
---
|
||||
|
||||
## 📝 使用方法
|
||||
|
||||
### 1. 准备版本信息文件
|
||||
|
||||
在服务器上创建 `last-version.json`:
|
||||
```json
|
||||
{
|
||||
"version": "0.1.1",
|
||||
"download_url": "https://img.1216.top/u-desk/go-desk-0.1.1-windows-amd64.exe",
|
||||
"changelog": "• 修复文件列表刷新问题\n• 优化启动性能\n• 新增暗色模式支持",
|
||||
"force_update": false,
|
||||
"release_date": "2026-01-28",
|
||||
"file_size": 45234567
|
||||
}
|
||||
```
|
||||
|
||||
### 2. 编译应用
|
||||
|
||||
```bash
|
||||
wails build
|
||||
```
|
||||
|
||||
### 3. 测试
|
||||
|
||||
```bash
|
||||
# 启动应用
|
||||
wails dev
|
||||
|
||||
# 或运行编译后的应用
|
||||
./build/go-desk.exe
|
||||
```
|
||||
|
||||
应用启动后 5 秒会自动检查更新并显示弹窗。
|
||||
|
||||
### 4. 用户体验
|
||||
|
||||
1. **首次更新**:弹窗自动显示,用户可选择立即更新或跳过
|
||||
2. **跳过版本**:如果用户选择跳过且不勾选"稍后提醒",下次不再提示
|
||||
3. **强制更新**:无法跳过,必须安装
|
||||
4. **下载过程**:显示实时进度和速度
|
||||
5. **安装完成**:应用自动重启
|
||||
|
||||
---
|
||||
|
||||
## 🎯 成果总结
|
||||
|
||||
### 实现的功能
|
||||
✅ 自动检查更新(应用启动后 5 秒)
|
||||
✅ 精美的升级提示弹窗
|
||||
✅ 实时下载进度显示
|
||||
✅ 灵活的跳过机制
|
||||
✅ 强制更新支持
|
||||
✅ 完整的文档说明
|
||||
|
||||
### 用户体验提升
|
||||
✅ 从"被动打扰"到"主动期待"
|
||||
✅ 从"生硬提示"到"优雅体验"
|
||||
✅ 从"黑盒下载"到"透明反馈"
|
||||
✅ 从"强制升级"到"灵活选择"
|
||||
|
||||
### 技术质量
|
||||
✅ 模块化组件设计
|
||||
✅ 完整的状态管理
|
||||
✅ 事件驱动架构
|
||||
✅ 详细的文档说明
|
||||
✅ 专业的视觉设计
|
||||
|
||||
---
|
||||
|
||||
## 🔮 后续优化建议
|
||||
|
||||
### 短期(可选)
|
||||
1. **增量更新** - 仅下载差异文件,节省流量
|
||||
2. **更新历史** - 记录更新历史,查看已安装的版本
|
||||
3. **更新统计** - 统计更新次数、节省时间等
|
||||
|
||||
### 中期(可选)
|
||||
1. **后台下载** - 在用户不使用时自动下载
|
||||
2. **多渠道支持** - 稳定版、测试版、开发版
|
||||
3. **更新预约** - 定时更新,避免打扰工作
|
||||
|
||||
### 长期(可选)
|
||||
1. **智能更新** - 根据用户习惯选择更新时机
|
||||
2. **A/B 测试** - 测试不同的更新策略
|
||||
3. **用户反馈** - 收集用户对新版本的反馈
|
||||
|
||||
---
|
||||
|
||||
## ✨ 结语
|
||||
|
||||
升级提示系统已经完整实现,提供了专业、流畅、友好的更新体验。
|
||||
|
||||
**核心价值:**
|
||||
- 将升级从"干扰"转变为"期待"
|
||||
- 精美的 UI 设计,建立用户信任
|
||||
- 流畅的交互体验,提升产品质感
|
||||
- 灵活的控制选项,尊重用户选择
|
||||
|
||||
**用户反馈预期:**
|
||||
- "这个更新提示真漂亮!"
|
||||
- "下载速度显示很清晰"
|
||||
- "我喜欢可以稍后再更新的选项"
|
||||
- "强制更新保护得很到位"
|
||||
|
||||
享受专业级的更新体验!🎉
|
||||
376
docs/03-模块文档/更新通知/update-notification-optimization.md
Normal file
376
docs/03-模块文档/更新通知/update-notification-optimization.md
Normal file
@@ -0,0 +1,376 @@
|
||||
# 升级提示优化说明
|
||||
|
||||
## 优化内容
|
||||
|
||||
### 1. 下载完成后自动安装 ✅
|
||||
|
||||
**优化前:**
|
||||
- 下载完成后显示"下载完成,点击安装"按钮
|
||||
- 用户需要再次点击才能安装
|
||||
- 多余的确认对话框
|
||||
|
||||
**优化后:**
|
||||
- 下载完成后自动触发安装
|
||||
- 无需用户再次点击
|
||||
- 减少操作步骤,提升体验
|
||||
|
||||
**实现逻辑:**
|
||||
```javascript
|
||||
onDownloadComplete() {
|
||||
// 下载完成
|
||||
Message.success('下载完成,正在安装...')
|
||||
|
||||
// 延迟 0.5 秒后自动安装
|
||||
setTimeout(() => {
|
||||
handleInstallDirect() // 直接安装,无确认框
|
||||
}, 500)
|
||||
}
|
||||
```
|
||||
|
||||
**用户流程:**
|
||||
```
|
||||
点击"立即更新"
|
||||
↓
|
||||
下载中(显示进度)
|
||||
↓
|
||||
下载完成
|
||||
↓
|
||||
自动安装(无确认框)
|
||||
↓
|
||||
显示"正在安装,请稍候..."
|
||||
↓
|
||||
安装成功,应用重启
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### 2. 视觉设计平和化 ✅
|
||||
|
||||
#### 设计原则调整
|
||||
|
||||
**从**:吸引眼球、视觉冲击
|
||||
**到**:简洁平和、融入整体
|
||||
|
||||
#### 具体优化
|
||||
|
||||
##### 2.1 版本徽章
|
||||
**优化前:**
|
||||
- 渐变背景:`linear-gradient(135deg, #165dff 0%, #4facfe 100%)`
|
||||
- 白色文字
|
||||
- 阴影效果:`0 2px 8px rgba(22, 93, 255, 0.3)`
|
||||
- 圆角:8px
|
||||
|
||||
**优化后:**
|
||||
- 纯色背景:`var(--color-fill-2)`
|
||||
- 深色文字:`var(--color-text-1)`
|
||||
- 边框:`1px solid var(--color-border-2)`
|
||||
- 圆角:6px
|
||||
- 更小的内边距
|
||||
|
||||
**效果:** 更简洁,不再抢眼
|
||||
|
||||
##### 2.2 信息图标
|
||||
**优化前:**
|
||||
- 渐变背景:`linear-gradient(135deg, #165dff 0%, #4facfe 100%)`
|
||||
- 白色图标
|
||||
- 较大尺寸:40px × 40px
|
||||
- 阴影效果
|
||||
|
||||
**优化后:**
|
||||
- 纯色背景:`var(--color-fill-3)`
|
||||
- 深色图标:`var(--color-text-2)`
|
||||
- 较小尺寸:32px × 32px
|
||||
- 无阴影
|
||||
|
||||
**效果:** 更平和,不突出
|
||||
|
||||
##### 2.3 卡片设计
|
||||
**优化前:**
|
||||
- 无边框
|
||||
- 圆角:12px
|
||||
- 较大内边距:16px
|
||||
|
||||
**优化后:**
|
||||
- 细边框:`1px solid var(--color-border-1)`
|
||||
- 圆角:6px
|
||||
- 适中内边距:12px
|
||||
|
||||
**效果:** 更融入整体,不再突兀
|
||||
|
||||
##### 2.4 配色方案
|
||||
**优化前:**
|
||||
- 主色调:`#165dff`(亮蓝色)
|
||||
- 强调色:`#f53f3f`(红色)
|
||||
- 绿色:`#00b42a`(鲜艳)
|
||||
|
||||
**优化后:**
|
||||
- 使用主题变量:`var(--color-text-*)`、`var(--color-fill-*)`、`var(--color-border-*)`
|
||||
- 适配暗色/亮色主题
|
||||
- 更柔和的对比度
|
||||
|
||||
**效果:** 更好地融入系统主题
|
||||
|
||||
##### 2.5 字体大小
|
||||
**优化前:**
|
||||
- 版本徽章:15px / 600
|
||||
- 标题:14px / 600
|
||||
- 正文:14px / 400
|
||||
|
||||
**优化后:**
|
||||
- 版本徽章:14px / 500
|
||||
- 标题:13px / 500
|
||||
- 正文:12-13px / 400
|
||||
|
||||
**效果:** 更紧凑,不抢眼
|
||||
|
||||
##### 2.6 间距调整
|
||||
**优化前:**
|
||||
- 卡片间距:20px
|
||||
- 区块间距:16px
|
||||
- 元素间距:12px
|
||||
|
||||
**优化后:**
|
||||
- 卡片间距:16px
|
||||
- 区块间距:12px
|
||||
- 元素间距:8px
|
||||
|
||||
**效果:** 更紧凑,不浪费空间
|
||||
|
||||
##### 2.7 动画效果
|
||||
**优化前:**
|
||||
- 弹窗动画:0.3s + 缩放(0.95 → 1.0)
|
||||
- 进度条脉冲动画
|
||||
- 移动距离:-20px
|
||||
|
||||
**优化后:**
|
||||
- 弹窗动画:0.2s + 平移
|
||||
- 无脉冲动画
|
||||
- 移动距离:-10px
|
||||
|
||||
**效果:** 更快速、更微妙
|
||||
|
||||
##### 2.8 强制更新提示
|
||||
**优化前:**
|
||||
- 红色渐变背景
|
||||
- 白色文字
|
||||
- 强烈的视觉效果
|
||||
|
||||
**优化后:**
|
||||
- 淡红色背景:`var(--color-danger-light-1)`
|
||||
- 深红色文字:`var(--color-danger-6)`
|
||||
- 红色边框:`var(--color-danger-2)`
|
||||
|
||||
**效果:** 仍能识别,但不刺眼
|
||||
|
||||
---
|
||||
|
||||
## 视觉对比
|
||||
|
||||
### 优化前
|
||||
```
|
||||
┌─────────────────────────────────────────────┐
|
||||
│ 🔍 发现新版本 v0.1.0 → v0.1.2 [✕] │ ← 渐变背景
|
||||
├─────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ 📅 发布日期 2026-01-28 │ ← 大图标,渐变背景
|
||||
│ 📁 文件大小 45.2 MB │
|
||||
│ │
|
||||
│ 📖 更新内容 │
|
||||
│ ┌─────────────────────────────────────────┐ │
|
||||
│ │ • 测试更新 │ │ ← 蓝色左边框
|
||||
│ └─────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ [ 跳过此版本 ] [ 立即更新 ↓ ] │ ← 大按钮,圆角8px
|
||||
└─────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 优化后
|
||||
```
|
||||
┌─────────────────────────────────────────────┐
|
||||
│ 发现新版本 v0.1.0 → v0.1.2 [✕] │ ← 纯色背景,边框
|
||||
├─────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ 📅 发布日期 2026-01-28 │ ← 小图标,纯色背景
|
||||
│ 📁 文件大小 45.2 MB │
|
||||
│ │
|
||||
│ 📖 更新内容 │
|
||||
│ ┌─────────────────────────────────────────┐ │
|
||||
│ │ • 测试更新 │ │ ← 细边框
|
||||
│ └─────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ [ 跳过此版本 ] [ 立即更新 ] │ ← 紧凑按钮,圆角6px
|
||||
└─────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 设计理念变化
|
||||
|
||||
### 优化前:**视觉冲击**
|
||||
- 目标:吸引用户注意
|
||||
- 手段:强烈的对比、渐变、阴影
|
||||
- 风格:突出、醒目
|
||||
- 问题:与整体风格不协调
|
||||
|
||||
### 优化后:**平和融入**
|
||||
- 目标:融入整体设计
|
||||
- 手段:系统变量、边框、留白
|
||||
- 风格:简洁、平和
|
||||
- 效果:更协调、更专业
|
||||
|
||||
---
|
||||
|
||||
## 技术实现
|
||||
|
||||
### 样式系统
|
||||
```css
|
||||
/* 使用系统变量,适配主题 */
|
||||
background: var(--color-fill-2);
|
||||
color: var(--color-text-1);
|
||||
border: 1px solid var(--color-border-1);
|
||||
|
||||
/* 而非硬编码颜色 */
|
||||
background: linear-gradient(135deg, #165dff 0%, #4facfe 100%);
|
||||
color: white;
|
||||
```
|
||||
|
||||
### 响应式设计
|
||||
```css
|
||||
/* 使用 grid 自适应布局 */
|
||||
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
|
||||
|
||||
/* 而非固定尺寸 */
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
```
|
||||
|
||||
### 主题适配
|
||||
```css
|
||||
/* 自动适配亮色/暗色主题 */
|
||||
color: var(--color-text-1);
|
||||
background: var(--color-fill-1);
|
||||
|
||||
/* 而非固定颜色 */
|
||||
color: #333;
|
||||
background: #fff;
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 用户体验提升
|
||||
|
||||
### 1. 更流畅
|
||||
- ✅ 减少操作步骤(自动安装)
|
||||
- ✅ 更快的动画(0.2s → 0.3s)
|
||||
- ✅ 更短的等待(0.5s 延迟)
|
||||
|
||||
### 2. 更协调
|
||||
- ✅ 融入系统主题
|
||||
- ✅ 不抢眼的视觉
|
||||
- ✅ 适配暗色模式
|
||||
|
||||
### 3. 更专业
|
||||
- ✅ 简洁的设计
|
||||
- ✅ 合适的留白
|
||||
- ✅ 统一的风格
|
||||
|
||||
---
|
||||
|
||||
## 文件修改清单
|
||||
|
||||
### UpdateNotification.vue
|
||||
**修改内容:**
|
||||
- ✅ 移除"下载完成,点击安装"按钮
|
||||
- ✅ 添加自动安装逻辑(`handleInstallDirect`)
|
||||
- ✅ 移除确认对话框
|
||||
- ✅ 删除 `downloaded` 状态
|
||||
- ✅ 删除 `IconCheckCircle` 导入
|
||||
- ✅ 删除 `Modal` 导入
|
||||
|
||||
**样式优化:**
|
||||
- ✅ 版本徽章:去掉渐变、阴影,改用纯色 + 边框
|
||||
- ✅ 信息图标:减小尺寸,去掉渐变和阴影
|
||||
- ✅ 卡片设计:添加细边框,减小圆角
|
||||
- ✅ 配色方案:使用系统变量
|
||||
- ✅ 字体大小:全面减小 1-2px
|
||||
- ✅ 间距:全面减小 2-4px
|
||||
- ✅ 动画:简化效果,减少位移
|
||||
|
||||
---
|
||||
|
||||
## 测试要点
|
||||
|
||||
### 功能测试
|
||||
- [ ] 下载完成后自动安装
|
||||
- [ ] 安装成功后应用重启
|
||||
- [ ] 错误处理正常(下载失败、安装失败)
|
||||
|
||||
### 视觉测试
|
||||
- [ ] 亮色主题下显示正常
|
||||
- [ ] 暗色主题下显示正常
|
||||
- [ ] 与整体风格协调
|
||||
- [ ] 不再过于突出
|
||||
|
||||
### 交互测试
|
||||
- [ ] 动画流畅自然
|
||||
- [ ] 按钮状态正确
|
||||
- [ ] 进度显示准确
|
||||
|
||||
---
|
||||
|
||||
## 设计对比总结
|
||||
|
||||
| 维度 | 优化前 | 优化后 |
|
||||
|------|--------|--------|
|
||||
| **视觉风格** | 吸引眼球、视觉冲击 | 简洁平和、融入整体 |
|
||||
| **配色方案** | 硬编码渐变色 | 系统变量,适配主题 |
|
||||
| **阴影效果** | 多处阴影 | 无阴影 |
|
||||
| **圆角大小** | 8-12px | 6px |
|
||||
| **字体大小** | 14-15px | 12-14px |
|
||||
| **间距** | 12-20px | 8-16px |
|
||||
| **动画时长** | 0.3s | 0.2s |
|
||||
| **动画效果** | 缩放 + 平移 | 仅平移 |
|
||||
| **操作步骤** | 点击下载 → 点击安装 | 点击下载 → 自动安装 |
|
||||
| **确认对话框** | 有 | 无 |
|
||||
| **整体感觉** | 醒目、突出 | 简洁、专业 |
|
||||
|
||||
---
|
||||
|
||||
## 后续建议
|
||||
|
||||
### 短期(可选)
|
||||
1. 根据用户反馈微调细节
|
||||
2. 测试不同主题下的显示效果
|
||||
3. 确保暗色模式下可读性
|
||||
|
||||
### 中期(可选)
|
||||
1. 添加键盘快捷键支持
|
||||
2. 优化下载失败后的重试体验
|
||||
3. 添加安装失败后的降级方案
|
||||
|
||||
### 长期(可选)
|
||||
1. 提供多种主题选择
|
||||
2. 支持自定义提示样式
|
||||
3. A/B 测试不同设计
|
||||
|
||||
---
|
||||
|
||||
## 总结
|
||||
|
||||
本次优化实现了两个主要目标:
|
||||
|
||||
### 1. 功能优化:自动安装
|
||||
- ✅ 减少操作步骤
|
||||
- ✅ 提升用户体验
|
||||
- ✅ 更流畅的更新流程
|
||||
|
||||
### 2. 视觉优化:平和设计
|
||||
- ✅ 融入整体风格
|
||||
- ✅ 适配系统主题
|
||||
- ✅ 更专业的感觉
|
||||
|
||||
**核心理念变化:**
|
||||
> 从"吸引用户注意"到"融入用户体验"
|
||||
|
||||
升级提示不再是"抢戏"的配角,而是融入整体设计的有机组成部分。
|
||||
|
||||
用户获得的是**无缝、平和、专业**的更新体验。
|
||||
200
docs/03-模块文档/更新通知/update-notification-quickref.md
Normal file
200
docs/03-模块文档/更新通知/update-notification-quickref.md
Normal file
@@ -0,0 +1,200 @@
|
||||
# 升级提示功能 - 快速参考
|
||||
|
||||
## 🚀 快速开始
|
||||
|
||||
### 测试升级提示功能
|
||||
|
||||
1. **准备测试版本文件**
|
||||
|
||||
在服务器创建 `last-version.json`(版本号设置为比当前版本大):
|
||||
```json
|
||||
{
|
||||
"version": "0.1.2",
|
||||
"download_url": "https://example.com/update.exe",
|
||||
"changelog": "• 测试更新\n• 新功能测试",
|
||||
"force_update": false,
|
||||
"release_date": "2026-01-28"
|
||||
}
|
||||
```
|
||||
|
||||
2. **启动应用**
|
||||
|
||||
```bash
|
||||
wails dev
|
||||
```
|
||||
|
||||
3. **等待 5 秒**
|
||||
|
||||
应用启动后 5 秒会自动显示升级提示弹窗。
|
||||
|
||||
---
|
||||
|
||||
## 📁 文件清单
|
||||
|
||||
### 新增文件
|
||||
- `frontend/src/components/UpdateNotification.vue` - 升级提示组件
|
||||
- `docs/update-notification-design.md` - 设计文档
|
||||
- `docs/update-notification-usage.md` - 使用指南
|
||||
- `docs/update-notification-implementation.md` - 实现总结
|
||||
- `docs/update-notification-quickref.md` - 本文件
|
||||
|
||||
### 修改文件
|
||||
- `frontend/src/App.vue` - 集成自动检查逻辑
|
||||
- `app.go:68` - 修复检查地址(go-desk → u-desk)
|
||||
- `frontend/src/components/UpdatePanel.vue` - 地址字段设为只读
|
||||
|
||||
---
|
||||
|
||||
## 🎨 UI 预览
|
||||
|
||||
### 普通更新弹窗
|
||||
```
|
||||
┌─────────────────────────────────────────────┐
|
||||
│ 🔍 发现新版本 v0.1.0 → v0.1.2 [✕] │
|
||||
├─────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ 📅 发布日期 2026-01-28 │
|
||||
│ 📁 文件大小 45.2 MB │
|
||||
│ │
|
||||
│ 📖 更新内容 │
|
||||
│ ┌─────────────────────────────────────────┐ │
|
||||
│ │ • 测试更新 │ │
|
||||
│ │ • 新功能测试 │ │
|
||||
│ └─────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ [ 跳过此版本 ] [ 立即更新 ↓ ] │
|
||||
│ │
|
||||
│ ☐ 提醒我稍后更新(下次启动时提醒) │
|
||||
└─────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 强制更新弹窗
|
||||
```
|
||||
┌─────────────────────────────────────────────┐
|
||||
│ ⚠ 重要更新 v0.1.0 → v0.1.2 │
|
||||
├─────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ⚠️ 此版本包含重要的安全更新和修复 │
|
||||
│ │
|
||||
│ [ 立即更新 ↓ ] │
|
||||
└─────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 配置选项
|
||||
|
||||
### 版本信息文件格式
|
||||
|
||||
**地址:** `https://img.1216.top/u-desk/last-version.json`
|
||||
|
||||
**格式:**
|
||||
```json
|
||||
{
|
||||
"version": "0.1.1", // 版本号(x.y.z)
|
||||
"download_url": "https://...", // 下载地址
|
||||
"changelog": "更新日志", // 支持换行符 \n
|
||||
"force_update": false, // 是否强制更新
|
||||
"release_date": "2026-01-28", // 发布日期
|
||||
"file_size": 45234567 // 文件大小(字节,可选)
|
||||
}
|
||||
```
|
||||
|
||||
### 用户配置
|
||||
|
||||
在 **设置 → 版本更新** 中:
|
||||
- ✅ 自动检查更新 - 开启/关闭
|
||||
- ✅ 检查间隔 - 1-1440 分钟
|
||||
- 🔒 更新检查地址 - 只读
|
||||
|
||||
---
|
||||
|
||||
## 🎯 关键时间点
|
||||
|
||||
| 事件 | 时间 | 说明 |
|
||||
|------|------|------|
|
||||
| 应用启动 | 0s | 应用界面显示 |
|
||||
| 开始检查更新 | 3s | 后台异步检查 |
|
||||
| 显示弹窗 | 5s | 有更新时延迟显示 |
|
||||
| 下载进度更新 | 实时 | 每 0.3 秒更新 |
|
||||
| 下载完成 | - | 显示安装按钮 |
|
||||
| 安装重启 | 2s | 安装成功后延迟重启 |
|
||||
|
||||
---
|
||||
|
||||
## 📊 状态流转
|
||||
|
||||
```
|
||||
初始状态
|
||||
↓ 点击"立即更新"
|
||||
下载中(显示进度条)
|
||||
↓ 下载完成
|
||||
下载完成(显示"安装"按钮)
|
||||
↓ 点击"安装"
|
||||
安装中(显示加载动画)
|
||||
↓ 安装成功
|
||||
应用自动重启
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🐛 常见问题
|
||||
|
||||
### Q: 弹窗不显示?
|
||||
**A:**
|
||||
1. 检查是否已是最新版本
|
||||
2. 检查是否已跳过此版本
|
||||
3. 检查自动检查是否开启
|
||||
|
||||
### Q: 如何强制显示弹窗?
|
||||
**A:** 手动点击"设置 → 版本更新 → 检查更新"
|
||||
|
||||
### Q: 如何清除跳过记录?
|
||||
**A:**
|
||||
```javascript
|
||||
// 在浏览器控制台执行
|
||||
localStorage.removeItem('skipped_version')
|
||||
```
|
||||
|
||||
### Q: 下载失败怎么办?
|
||||
**A:** 系统支持断点续传,重新点击"立即更新"即可
|
||||
|
||||
---
|
||||
|
||||
## ✅ 测试清单
|
||||
|
||||
### 功能测试
|
||||
- [ ] 应用启动自动检查更新
|
||||
- [ ] 弹窗正确显示版本信息
|
||||
- [ ] 下载按钮正常工作
|
||||
- [ ] 下载进度实时更新
|
||||
- [ ] 下载完成显示安装按钮
|
||||
- [ ] 安装成功后应用重启
|
||||
- [ ] 跳过功能正常工作
|
||||
- [ ] 强制更新无法关闭
|
||||
|
||||
### UI 测试
|
||||
- [ ] 弹窗动画流畅
|
||||
- [ ] 版本徽章颜色正确
|
||||
- [ ] 进度条更新平滑
|
||||
- [ ] 按钮状态正确
|
||||
|
||||
---
|
||||
|
||||
## 📞 获取帮助
|
||||
|
||||
- **设计文档**:`docs/update-notification-design.md`
|
||||
- **使用指南**:`docs/update-notification-usage.md`
|
||||
- **实现总结**:`docs/update-notification-implementation.md`
|
||||
|
||||
---
|
||||
|
||||
## 🎉 完成状态
|
||||
|
||||
✅ **前端组件** - UpdateNotification.vue
|
||||
✅ **应用集成** - App.vue 自动检查
|
||||
✅ **后端接口** - 所有 API 已就绪
|
||||
✅ **文档完善** - 设计、使用、实现文档
|
||||
✅ **构建成功** - 前端构建无错误
|
||||
|
||||
**状态:✅ 已完成,可投入使用**
|
||||
344
docs/03-模块文档/更新通知/update-notification-ultra-minimal.md
Normal file
344
docs/03-模块文档/更新通知/update-notification-ultra-minimal.md
Normal file
@@ -0,0 +1,344 @@
|
||||
# 升级提示优化 - 最终版
|
||||
|
||||
## ✅ 优化完成
|
||||
|
||||
### 优化内容
|
||||
1. ✅ 去掉多余的标签("发布日期"、"文件大小"、"更新内容"、"重要提示")
|
||||
2. ✅ 简化信息展示(纯文字,一行显示)
|
||||
3. ✅ 优化日期格式(只显示日期,不显示时间)
|
||||
4. ✅ 简化强制更新提示(居中,淡色背景)
|
||||
|
||||
---
|
||||
|
||||
## 🎨 最终效果
|
||||
|
||||
### 普通更新弹窗
|
||||
|
||||
```
|
||||
┌──────────────────────────────────────────────┐
|
||||
│ 发现新版本 v0.1.0 → v0.1.1 [×] │
|
||||
├──────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ • 修复文件列表刷新问题 │
|
||||
│ • 优化启动性能 │
|
||||
│ • 新增暗色模式支持 │
|
||||
│ │
|
||||
│ 2026-01-28 · 45.2 MB │
|
||||
│ │
|
||||
│ ┌────────────────────────────────────────┐ │
|
||||
│ │ 立即更新 │ │
|
||||
│ └────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌─────────────────┐ ┌─────────────────┐ │
|
||||
│ │ 稍后更新 │ │ ☐ 下次提醒我 │ │
|
||||
│ └─────────────────┘ └─────────────────┘ │
|
||||
└──────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 强制更新弹窗
|
||||
|
||||
```
|
||||
┌──────────────────────────────────────────────┐
|
||||
│ ⚠ 重要更新 [×] │
|
||||
├──────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ • 修复严重安全漏洞 │
|
||||
│ • 修复数据损坏问题 │
|
||||
│ • 优化系统稳定性 │
|
||||
│ │
|
||||
│ 2026-01-28 · 45.2 MB │
|
||||
│ │
|
||||
│ ┌────────────────────────────────────────┐ │
|
||||
│ │ 此版本包含重要的安全更新和问题 │ │ ← 淡橙色背景
|
||||
│ │ 修复,为保障正常使用,请完成更新 │ │
|
||||
│ │ 后再继续。 │ │
|
||||
│ └────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌────────────────────────────────────────┐ │
|
||||
│ │ 立即更新 │ │
|
||||
│ └────────────────────────────────────────┘ │
|
||||
└──────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 优化对比
|
||||
|
||||
### 优化前
|
||||
```
|
||||
┌──────────────────────────────────────────────┐
|
||||
│ 发现新版本 v0.1.0 → v0.1.1 [×] │
|
||||
├──────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ 发布日期 2026-01-28 │ ← 带"发布日期"标签
|
||||
│ 文件大小 45.2 MB │ ← 带"文件大小"标签
|
||||
│ │
|
||||
│ 更新内容 │ ← 带"更新内容"标题
|
||||
│ • 修复文件列表刷新问题 │
|
||||
│ • 优化启动性能 │
|
||||
│ │
|
||||
│ ⚠️ 重要提示 │ ← 带"重要提示"标题
|
||||
│ 此版本包含重要的安全更新和问题修复, │ ← 带图标
|
||||
│ 为保障正常使用,请完成更新后再继续。 │
|
||||
│ │
|
||||
│ ┌────────────────────────────────────────┐ │
|
||||
│ │ 立即更新 │ │
|
||||
│ └────────────────────────────────────────┘ │
|
||||
└──────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
### 优化后
|
||||
```
|
||||
┌──────────────────────────────────────────────┐
|
||||
│ 发现新版本 v0.1.0 → v0.1.1 [×] │
|
||||
├──────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ • 修复文件列表刷新问题 │ ← 直接显示
|
||||
│ • 优化启动性能 │
|
||||
│ • 新增暗色模式支持 │
|
||||
│ │
|
||||
│ 2026-01-28 · 45.2 MB │ ← 无标签,一行
|
||||
│ │
|
||||
│ ┌────────────────────────────────────────┐ │
|
||||
│ │ 立即更新 │ │
|
||||
│ └────────────────────────────────────────┘ │
|
||||
│ │
|
||||
│ ┌─────────────────┐ ┌─────────────────┐ │
|
||||
│ │ 稍后更新 │ │ ☐ 下次提醒我 │ │
|
||||
│ └─────────────────┘ └─────────────────┘ │
|
||||
└──────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🔧 优化细节
|
||||
|
||||
### 1. 更新日志
|
||||
**优化前:**
|
||||
```vue
|
||||
<div class="changelog-title">更新内容</div>
|
||||
<div class="changelog-text">{{ changelog }}</div>
|
||||
```
|
||||
|
||||
**优化后:**
|
||||
```vue
|
||||
<div class="changelog-text">{{ changelog }}</div>
|
||||
```
|
||||
|
||||
**改进:** 去掉标题,直接显示内容
|
||||
|
||||
### 2. 版本信息
|
||||
**优化前:**
|
||||
```vue
|
||||
<div class="info-row">
|
||||
<span class="info-label">发布日期</span>
|
||||
<span class="info-value">{{ releaseDate }}</span>
|
||||
</div>
|
||||
<div class="info-row">
|
||||
<span class="info-label">文件大小</span>
|
||||
<span class="info-value">{{ formatFileSize(fileSize) }}</span>
|
||||
</div>
|
||||
```
|
||||
|
||||
**优化后:**
|
||||
```vue
|
||||
<div class="info-row">
|
||||
<span>{{ formatDate(releaseDate) }}</span>
|
||||
<span v-if="fileSize">{{ formatFileSize(fileSize) }}</span>
|
||||
</div>
|
||||
```
|
||||
|
||||
**改进:**
|
||||
- 去掉标签("发布日期"、"文件大小")
|
||||
- 一行显示,用 · 分隔
|
||||
- 日期格式化(去掉时间)
|
||||
|
||||
### 3. 强制更新提示
|
||||
**优化前:**
|
||||
```vue
|
||||
<div class="notice-header">
|
||||
<icon-exclamation-circle-fill />
|
||||
<span class="notice-title">重要提示</span>
|
||||
</div>
|
||||
<div class="notice-content">
|
||||
此版本包含重要的安全更新和问题修复...
|
||||
</div>
|
||||
```
|
||||
|
||||
**优化后:**
|
||||
```vue
|
||||
<div class="force-update-notice">
|
||||
此版本包含重要的安全更新和问题修复,为保障正常使用,请完成更新后再继续。
|
||||
</div>
|
||||
```
|
||||
|
||||
**改进:**
|
||||
- 去掉图标和标题
|
||||
- 去掉嵌套结构
|
||||
- 居中显示,淡色背景
|
||||
|
||||
### 4. 日期格式化
|
||||
**新增函数:**
|
||||
```javascript
|
||||
const formatDate = (dateStr) => {
|
||||
const date = new Date(dateStr)
|
||||
return date.toLocaleDateString('zh-CN', {
|
||||
year: 'numeric',
|
||||
month: '2-digit',
|
||||
day: '2-digit'
|
||||
}).replace(/\//g, '-')
|
||||
}
|
||||
```
|
||||
|
||||
**效果:**
|
||||
```
|
||||
输入:2026-01-28 18:45:00
|
||||
输出:2026-01-28
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📐 设计规范
|
||||
|
||||
### 信息层级
|
||||
```
|
||||
1. 更新日志(最重要)
|
||||
└> 大字号(13px),行高 1.8
|
||||
|
||||
2. 强制更新提示(次重要)
|
||||
└> 居中,淡色背景
|
||||
|
||||
3. 版本信息(辅助)
|
||||
└> 小字(12px),灰色,居中
|
||||
|
||||
4. 操作按钮(行动)
|
||||
└> 主题色,吸引点击
|
||||
```
|
||||
|
||||
### 对齐方式
|
||||
```
|
||||
更新日志:左对齐
|
||||
版本信息:居中
|
||||
强制更新:居中
|
||||
操作按钮:居中
|
||||
```
|
||||
|
||||
### 间距
|
||||
```
|
||||
更新日志 ↔ 版本信息:16px
|
||||
版本信息 ↔ 强制更新:16px
|
||||
强制更新 ↔ 按钮:16px
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 核心原则
|
||||
|
||||
### 极简主义
|
||||
> 去掉一切不必要的标签和装饰
|
||||
|
||||
### 信息优先
|
||||
1. **内容 > 标签** - 直接显示内容,不需要标签说明
|
||||
2. **数据 > 描述** - 数据本身就说明了含义
|
||||
3. **视觉 > 文字** - 用布局和排版代替文字说明
|
||||
|
||||
### 用户体验
|
||||
```
|
||||
优化前:
|
||||
发布日期 2026-01-28
|
||||
文件大小 45.2 MB
|
||||
|
||||
优化后:
|
||||
2026-01-28 · 45.2 MB
|
||||
|
||||
改进:
|
||||
- 少一行
|
||||
- 更简洁
|
||||
- 信息量相同
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🚀 使用方式
|
||||
|
||||
### 立即可用
|
||||
```bash
|
||||
# 前端已构建成功
|
||||
wails dev
|
||||
```
|
||||
|
||||
### 效果预览
|
||||
1. 应用启动后 5 秒自动检查更新
|
||||
2. 发现新版本显示弹窗
|
||||
3. 信息简洁明了:
|
||||
- 更新日志直接显示
|
||||
- 版本信息一行居中
|
||||
- 强制更新提示突出但不刺眼
|
||||
|
||||
---
|
||||
|
||||
## 📊 优化总结
|
||||
|
||||
| 元素 | 优化前 | 优化后 | 改进 |
|
||||
|------|--------|--------|------|
|
||||
| **标签数量** | 4 个 | 0 个 | ⬇️ 100% |
|
||||
| **信息行数** | 2 行 | 1 行 | ⬇️ 50% |
|
||||
| **文字层级** | 3 层 | 1 层 | ⬇️ 66% |
|
||||
| **日期格式** | YYYY-MM-DD HH:mm:ss | YYYY-MM-DD | ✅ 更简洁 |
|
||||
| **对齐方式** | 左对齐 | 居中 | ✅ 更平衡 |
|
||||
|
||||
---
|
||||
|
||||
## 💡 设计亮点
|
||||
|
||||
### 1. 无标签设计
|
||||
```
|
||||
优化前:
|
||||
发布日期:2026-01-28
|
||||
文件大小:45.2 MB
|
||||
|
||||
优化后:
|
||||
2026-01-28 · 45.2 MB
|
||||
|
||||
数据本身就说明了含义,不需要标签
|
||||
```
|
||||
|
||||
### 2. 一行显示
|
||||
```
|
||||
优化前:
|
||||
发布日期 2026-01-28
|
||||
文件大小 45.2 MB
|
||||
|
||||
优化后:
|
||||
2026-01-28 · 45.2 MB
|
||||
|
||||
节省空间,更紧凑
|
||||
```
|
||||
|
||||
### 3. 居中平衡
|
||||
```
|
||||
更新日志:左对齐(阅读友好)
|
||||
版本信息:居中(平衡美观)
|
||||
强制更新:居中(强调但不刺眼)
|
||||
操作按钮:居中(引导行动)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ✨ 最终效果
|
||||
|
||||
### 简约而不简单
|
||||
- ✅ 保留所有必要信息
|
||||
- ✅ 去掉所有多余标签
|
||||
- ✅ 优化排版和布局
|
||||
- ✅ 提升阅读体验
|
||||
|
||||
### 协调而统一
|
||||
- ✅ 与整体风格一致
|
||||
- ✅ 信息层级清晰
|
||||
- ✅ 视觉平衡美观
|
||||
- ✅ 交互流畅自然
|
||||
|
||||
---
|
||||
|
||||
**优化完成!极简、协调、实用!** ✨
|
||||
277
docs/03-模块文档/更新通知/update-notification-usage.md
Normal file
277
docs/03-模块文档/更新通知/update-notification-usage.md
Normal file
@@ -0,0 +1,277 @@
|
||||
# 升级提示功能使用指南
|
||||
|
||||
## 功能概述
|
||||
|
||||
新增的升级提示系统会在应用启动时自动检查更新,并在发现新版本时优雅地提示用户。整个体验流畅、专业,不打扰用户工作流。
|
||||
|
||||
## 主要特性
|
||||
|
||||
✅ **自动检测** - 应用启动后 5 秒自动检查更新
|
||||
✅ **优雅提示** - 精美的弹窗设计,清晰的版本信息
|
||||
✅ **实时进度** - 下载进度实时显示,包含速度和文件大小
|
||||
✅ **灵活跳过** - 支持跳过非强制更新,下次不再提示
|
||||
✅ **强制更新** - 重要安全更新强制安装,无法跳过
|
||||
✅ **断点续传** - 下载支持断点续传,节省流量
|
||||
✅ **安全安装** - 自动备份原程序,失败自动回滚
|
||||
|
||||
## 使用流程
|
||||
|
||||
### 1. 应用启动自动检查
|
||||
|
||||
```
|
||||
应用启动
|
||||
↓
|
||||
等待 3 秒(避免阻塞启动)
|
||||
↓
|
||||
后台检查更新
|
||||
↓
|
||||
发现新版本?
|
||||
├─ 是 → 延迟 2 秒显示升级提示弹窗
|
||||
└─ 否 → 不显示,正常使用应用
|
||||
```
|
||||
|
||||
### 2. 升级提示弹窗
|
||||
|
||||
当检测到新版本时,会显示精美的升级提示弹窗:
|
||||
|
||||
**弹窗包含:**
|
||||
- 📌 当前版本 → 最新版本对比
|
||||
- 📅 发布日期
|
||||
- 📁 文件大小
|
||||
- 📖 更新日志(版本更新内容)
|
||||
- 🎯 操作按钮(跳过/立即更新)
|
||||
- ⏰ 稍后提醒选项
|
||||
|
||||
**三种状态:**
|
||||
1. **初始状态** - 显示版本信息和更新日志
|
||||
2. **下载状态** - 显示下载进度和速度
|
||||
3. **完成状态** - 下载完成,提示点击安装
|
||||
|
||||
### 3. 用户选择
|
||||
|
||||
#### 选择 A:立即更新
|
||||
```
|
||||
点击"立即更新"
|
||||
↓
|
||||
开始下载(显示进度条)
|
||||
↓
|
||||
下载完成
|
||||
↓
|
||||
点击"安装"
|
||||
↓
|
||||
确认对话框
|
||||
↓
|
||||
自动重启应用
|
||||
```
|
||||
|
||||
#### 选择 B:跳过此版本
|
||||
```
|
||||
点击"跳过此版本"
|
||||
↓
|
||||
勾选"提醒我稍后更新"?
|
||||
├─ 是 → 下次启动继续提示
|
||||
└─ 否 → 记住选择,不再提示此版本
|
||||
↓
|
||||
关闭弹窗
|
||||
```
|
||||
|
||||
### 4. 强制更新
|
||||
|
||||
对于重要的安全更新,弹窗会:
|
||||
- 🔴 显示红色"重要更新"徽章
|
||||
- ⚠️ 显示强制更新警告信息
|
||||
- 🚫 禁用关闭按钮(无法跳过)
|
||||
- ✅ 只提供"立即更新"按钮
|
||||
|
||||
## 配置选项
|
||||
|
||||
### 在"设置 → 版本更新"中配置:
|
||||
|
||||
#### 自动检查更新
|
||||
- **开启** - 应用启动时自动检查(推荐)
|
||||
- **关闭** - 不自动检查,需要手动检查
|
||||
|
||||
#### 检查间隔
|
||||
- 范围:1-1440 分钟(1 分钟 - 24 小时)
|
||||
- 推荐设置:60 分钟(1 小时)
|
||||
- 说明:两次自动检查的最小间隔时间
|
||||
|
||||
#### 更新检查地址
|
||||
- 系统配置,不可修改
|
||||
- 当前地址:`https://img.1216.top/u-desk/last-version.json`
|
||||
|
||||
## 手动检查更新
|
||||
|
||||
如果关闭了自动检查,或者想立即检查:
|
||||
|
||||
1. 打开"设置"面板
|
||||
2. 切换到"版本更新"标签
|
||||
3. 点击"检查更新"按钮
|
||||
4. 查看更新结果
|
||||
|
||||
## 版本信息文件
|
||||
|
||||
升级系统会读取远程的版本信息文件:
|
||||
|
||||
**文件地址:** `https://img.1216.top/u-desk/last-version.json`
|
||||
|
||||
**文件格式:**
|
||||
```json
|
||||
{
|
||||
"version": "0.1.1",
|
||||
"download_url": "https://img.1216.top/u-desk/go-desk-0.1.1-windows-amd64.exe",
|
||||
"changelog": "• 修复文件列表刷新问题\n• 优化启动性能\n• 新增暗色模式支持",
|
||||
"force_update": false,
|
||||
"release_date": "2026-01-28",
|
||||
"file_size": 45234567
|
||||
}
|
||||
```
|
||||
|
||||
**字段说明:**
|
||||
- `version` - 最新版本号(格式:x.y.z)
|
||||
- `download_url` - 安装包下载地址
|
||||
- `changelog` - 更新日志(支持换行符 `\n`)
|
||||
- `force_update` - 是否强制更新(true/false)
|
||||
- `release_date` - 发布日期(格式:YYYY-MM-DD)
|
||||
- `file_size` - 文件大小(字节,可选)
|
||||
|
||||
## 下载和安装
|
||||
|
||||
### 下载特性
|
||||
- ✅ 支持断点续传(中断后可继续)
|
||||
- ✅ 实时显示下载进度
|
||||
- ✅ 显示下载速度和剩余时间
|
||||
- ✅ 下载完成后自动计算 MD5 和 SHA256 哈希
|
||||
|
||||
### 安装特性
|
||||
- ✅ 自动备份当前版本
|
||||
- ✅ 安装失败自动回滚
|
||||
- ✅ 安装成功自动重启
|
||||
- ✅ 支持 .exe 和 .zip 格式
|
||||
|
||||
### 文件存储位置
|
||||
- **配置文件**:`~/.u-desk/update_config.json`
|
||||
- **下载目录**:`~/.u-desk/downloads/`
|
||||
- **备份目录**:`~/.u-desk/backups/`
|
||||
|
||||
## 常见问题
|
||||
|
||||
### Q1: 为什么自动检查更新后没有弹窗?
|
||||
**A:** 可能原因:
|
||||
1. 已是最新版本(无更新)
|
||||
2. 此版本已选择"跳过"且未勾选"稍后提醒"
|
||||
3. 自动检查功能已关闭
|
||||
|
||||
**解决方法:**
|
||||
- 手动点击"检查更新"按钮
|
||||
- 检查配置中的"自动检查更新"开关
|
||||
|
||||
### Q2: 下载失败了怎么办?
|
||||
**A:**
|
||||
- 下载支持断点续传,可以点击重试
|
||||
- 系统会自动从断点继续下载
|
||||
- 如果多次失败,检查网络连接和下载地址
|
||||
|
||||
### Q3: 安装失败会怎样?
|
||||
**A:**
|
||||
- 系统会自动回滚到备份版本
|
||||
- 不会影响当前使用
|
||||
- 可以查看错误日志了解失败原因
|
||||
|
||||
### Q4: 如何恢复跳过的版本提示?
|
||||
**A:**
|
||||
方法 1:手动点击"检查更新"
|
||||
方法 2:清除浏览器 localStorage 中的 `skipped_version`
|
||||
|
||||
### Q5: 强制更新可以跳过吗?
|
||||
**A:**
|
||||
- 不可以。强制更新是为了修复严重的安全问题或数据损坏问题
|
||||
- 不安装强制更新可能会影响应用正常使用
|
||||
|
||||
### Q6: 下载中断后下次如何继续?
|
||||
**A:**
|
||||
- 系统会自动检测已下载的部分
|
||||
- 重新点击"立即更新"会从断点继续
|
||||
- 不会重复下载已完成的文件
|
||||
|
||||
## 技术实现
|
||||
|
||||
### 前端组件
|
||||
- **UpdateNotification.vue** - 升级提示弹窗组件
|
||||
- **App.vue** - 集成自动检查逻辑
|
||||
|
||||
### 后端接口
|
||||
- **CheckUpdate()** - 检查更新
|
||||
- **DownloadUpdate()** - 下载更新包
|
||||
- **InstallUpdate()** - 安装更新
|
||||
- **GetUpdateConfig()** - 获取更新配置
|
||||
- **SetUpdateConfig()** - 保存更新配置
|
||||
|
||||
### 事件系统
|
||||
- **download-progress** - 下载进度事件
|
||||
- **download-complete** - 下载完成事件
|
||||
|
||||
### 配置文件
|
||||
**~/.u-desk/update_config.json**
|
||||
```json
|
||||
{
|
||||
"current_version": "0.1.0",
|
||||
"last_check_time": "2026-01-28T18:51:00+08:00",
|
||||
"auto_check_enabled": true,
|
||||
"check_interval_minutes": 60,
|
||||
"check_url": "https://img.1216.top/u-desk/last-version.json"
|
||||
}
|
||||
```
|
||||
|
||||
## 最佳实践
|
||||
|
||||
### 对于用户
|
||||
1. ✅ 保持自动检查开启,及时获取更新
|
||||
2. ✅ 选择"稍后提醒"而非"跳过",避免错过重要更新
|
||||
3. ✅ 安装前保存当前工作,避免数据丢失
|
||||
4. ✅ 遇到强制更新立即安装,确保安全性
|
||||
|
||||
### 对于开发者
|
||||
1. ✅ 版本信息文件保持最新
|
||||
2. ✅ 更新日志清晰详细
|
||||
3. ✅ 重要更新标记为强制更新
|
||||
4. ✅ 测试安装包的完整性
|
||||
|
||||
## 更新日志设计建议
|
||||
|
||||
### 好的更新日志
|
||||
```
|
||||
• 修复文件列表刷新后顺序错乱的问题
|
||||
• 优化启动性能,加载时间减少 30%
|
||||
• 新增暗色模式支持
|
||||
• 修复 #123 问题:数据库连接失败
|
||||
|
||||
注意:此版本包含重要的安全修复,建议立即更新
|
||||
```
|
||||
|
||||
### 不好的更新日志
|
||||
```
|
||||
bug fixes
|
||||
performance improvements
|
||||
new features
|
||||
```
|
||||
|
||||
**建议:**
|
||||
- ✅ 列出具体的改动
|
||||
- ✅ 说明对用户的影响
|
||||
- ✅ 标注重要性和紧急性
|
||||
- ✅ 使用清晰的格式(项目符号)
|
||||
|
||||
---
|
||||
|
||||
## 总结
|
||||
|
||||
新的升级提示系统提供了专业、流畅、友好的更新体验:
|
||||
|
||||
🎯 **自动化** - 后台检查,无需人工干预
|
||||
💎 **精美设计** - 现代化的 UI,清晰的信息层次
|
||||
⚡ **高效流畅** - 断点续传,实时进度
|
||||
🔒 **安全可靠** - 备份回滚,哈希验证
|
||||
👍 **用户友好** - 灵活跳过,稍后提醒
|
||||
|
||||
享受无缝的更新体验!
|
||||
486
docs/03-模块文档/更新通知/update-notification-visual-comparison.md
Normal file
486
docs/03-模块文档/更新通知/update-notification-visual-comparison.md
Normal file
@@ -0,0 +1,486 @@
|
||||
# 升级提示优化 - 视觉对比
|
||||
|
||||
## 🎨 视觉元素对比
|
||||
|
||||
### 版本徽章
|
||||
|
||||
#### 优化前
|
||||
```
|
||||
┌──────────────────────────────────┐
|
||||
│ 🔍 发现新版本 │ ← 渐变蓝色背景
|
||||
│ 白色文字 │
|
||||
│ 圆角 8px │
|
||||
│ 阴影效果 │
|
||||
│ 内边距 8px × 16px │
|
||||
└──────────────────────────────────┘
|
||||
```
|
||||
|
||||
#### 优化后
|
||||
```
|
||||
┌──────────────────────────────────┐
|
||||
│ 发现新版本 │ ← 纯色背景
|
||||
│ 深色文字 │
|
||||
│ 圆角 6px │
|
||||
│ 细边框 │
|
||||
│ 内边距 6px × 12px │
|
||||
└──────────────────────────────────┘
|
||||
```
|
||||
|
||||
**关键变化:**
|
||||
- 去掉渐变 → 纯色背景
|
||||
- 去掉阴影 → 细边框
|
||||
- 白色文字 → 深色文字
|
||||
- 减小尺寸
|
||||
|
||||
---
|
||||
|
||||
### 信息卡片
|
||||
|
||||
#### 优化前
|
||||
```
|
||||
┌──────────────────────────────────┐
|
||||
│ 📅 │ ← 40×40px 图标
|
||||
│ 渐变蓝色背景 │
|
||||
│ 白色图标 │
|
||||
│ 阴影效果 │
|
||||
│ │
|
||||
│ 发布日期 2026-01-28 │
|
||||
└──────────────────────────────────┘
|
||||
```
|
||||
|
||||
#### 优化后
|
||||
```
|
||||
┌──────────────────────────────────┐
|
||||
│ 📅 │ ← 32×32px 图标
|
||||
│ 纯色背景 │
|
||||
│ 深色图标 │
|
||||
│ 无阴影 │
|
||||
│ │
|
||||
│ 发布日期 2026-01-28 │
|
||||
└──────────────────────────────────┘
|
||||
```
|
||||
|
||||
**关键变化:**
|
||||
- 图标尺寸:40px → 32px
|
||||
- 去掉渐变 → 纯色
|
||||
- 去掉阴影 → 扁平化
|
||||
|
||||
---
|
||||
|
||||
### 更新日志
|
||||
|
||||
#### 优化前
|
||||
```
|
||||
┌──────────────────────────────────┐
|
||||
│ 📖 更新内容 │ ← 蓝色图标
|
||||
│ │
|
||||
│ ┌──────────────────────────────┐ │
|
||||
│ │ • 测试更新 │ │ ← 左侧 3px 蓝色边框
|
||||
│ │ • 新功能测试 │ │
|
||||
│ │ │ │
|
||||
│ └──────────────────────────────┘ │
|
||||
└──────────────────────────────────┘
|
||||
```
|
||||
|
||||
#### 优化后
|
||||
```
|
||||
┌──────────────────────────────────┐
|
||||
│ 📖 更新内容 │ ← 深色图标
|
||||
│ │
|
||||
│ ┌──────────────────────────────┐ │
|
||||
│ │ • 测试更新 │ │ ← 细边框
|
||||
│ │ • 新功能测试 │ │
|
||||
│ │ │ │
|
||||
│ └──────────────────────────────┘ │
|
||||
└──────────────────────────────────┘
|
||||
```
|
||||
|
||||
**关键变化:**
|
||||
- 蓝色图标 → 深色图标
|
||||
- 粗左边框 → 细边框
|
||||
|
||||
---
|
||||
|
||||
### 操作按钮
|
||||
|
||||
#### 优化前
|
||||
```
|
||||
┌──────────────────────────────────┐
|
||||
│ │
|
||||
│ [ 跳过此版本 ] [ 立即更新 ↓ ] │ ← 大按钮
|
||||
│ ↑ │ 圆角 8px
|
||||
│ 蓝色渐变 │ 最小宽度 120px
|
||||
│ │
|
||||
└──────────────────────────────────┘
|
||||
```
|
||||
|
||||
#### 优化后
|
||||
```
|
||||
┌──────────────────────────────────┐
|
||||
│ │
|
||||
│ [ 跳过此版本 ] [ 立即更新 ] │ ← 紧凑按钮
|
||||
│ ↑ │ 圆角 6px
|
||||
│ 主题色 │ 最小宽度 100px
|
||||
│ │
|
||||
└──────────────────────────────────┘
|
||||
```
|
||||
|
||||
**关键变化:**
|
||||
- 去掉图标(节省空间)
|
||||
- 减小尺寸
|
||||
- 使用主题色
|
||||
|
||||
---
|
||||
|
||||
### 强制更新提示
|
||||
|
||||
#### 优化前
|
||||
```
|
||||
┌──────────────────────────────────┐
|
||||
│ ⚠ 重要更新 │ ← 红色渐变背景
|
||||
│ 白色文字 │
|
||||
│ 强烈阴影 │
|
||||
│ 非常醒目 │
|
||||
└──────────────────────────────────┘
|
||||
```
|
||||
|
||||
#### 优化后
|
||||
```
|
||||
┌──────────────────────────────────┐
|
||||
│ ⚠ 重要更新 │ ← 淡红色背景
|
||||
│ 深红色文字 │
|
||||
│ 红色边框 │
|
||||
│ 仍能识别 │
|
||||
└──────────────────────────────────┘
|
||||
```
|
||||
|
||||
**关键变化:**
|
||||
- 红色渐变 → 淡红色
|
||||
- 白色文字 → 深红色
|
||||
- 仍能识别重要性,但不刺眼
|
||||
|
||||
---
|
||||
|
||||
## 📐 尺寸对比
|
||||
|
||||
### 字体大小
|
||||
|
||||
| 元素 | 优化前 | 优化后 | 变化 |
|
||||
|------|--------|--------|------|
|
||||
| 版本徽章 | 15px | 14px | -1px |
|
||||
| 区块标题 | 14px | 13px | -1px |
|
||||
| 正文文字 | 14px | 13px | -1px |
|
||||
| 辅助文字 | 12px | 12px | 不变 |
|
||||
| 小字(代码) | 13px | 12px | -1px |
|
||||
|
||||
### 间距
|
||||
|
||||
| 位置 | 优化前 | 优化后 | 变化 |
|
||||
|------|--------|--------|------|
|
||||
| 弹窗内边距 | 24px | 20px | -4px |
|
||||
| 卡片间距 | 20px | 16px | -4px |
|
||||
| 区块间距 | 16px | 12px | -4px |
|
||||
| 元素间距 | 12px | 8px | -4px |
|
||||
| 小间距 | 8px | 6px | -2px |
|
||||
|
||||
### 圆角
|
||||
|
||||
| 元素 | 优化前 | 优化后 | 变化 |
|
||||
|------|--------|--------|------|
|
||||
| 版本徽章 | 8px | 6px | -2px |
|
||||
| 卡片 | 12px | 6px | -6px |
|
||||
| 按钮 | 8px | 6px | -2px |
|
||||
| 图标容器 | 8px | 6px | -2px |
|
||||
|
||||
---
|
||||
|
||||
## 🎨 配色对比
|
||||
|
||||
### 优化前(硬编码)
|
||||
|
||||
```css
|
||||
/* 版本徽章 */
|
||||
background: linear-gradient(135deg, #165dff 0%, #4facfe 100%);
|
||||
color: white;
|
||||
box-shadow: 0 2px 8px rgba(22, 93, 255, 0.3);
|
||||
|
||||
/* 信息图标 */
|
||||
background: linear-gradient(135deg, #165dff 0%, #4facfe 100%);
|
||||
color: white;
|
||||
box-shadow: 0 2px 6px rgba(22, 93, 255, 0.2);
|
||||
|
||||
/* 强制更新 */
|
||||
background: linear-gradient(135deg, #f53f3f 0%, #ff7875 100%);
|
||||
box-shadow: 0 2px 8px rgba(245, 63, 63, 0.3);
|
||||
|
||||
/* 速度文字 */
|
||||
color: #00b42a; /* 鲜艳绿色 */
|
||||
```
|
||||
|
||||
### 优化后(系统变量)
|
||||
|
||||
```css
|
||||
/* 版本徽章 */
|
||||
background: var(--color-fill-2);
|
||||
color: var(--color-text-1);
|
||||
border: 1px solid var(--color-border-2);
|
||||
|
||||
/* 信息图标 */
|
||||
background: var(--color-fill-3);
|
||||
color: var(--color-text-2);
|
||||
|
||||
/* 强制更新 */
|
||||
background: var(--color-danger-light-1);
|
||||
color: var(--color-danger-6);
|
||||
border-color: var(--color-danger-2);
|
||||
|
||||
/* 速度文字 */
|
||||
color: var(--color-text-2); /* 系统文字色 */
|
||||
```
|
||||
|
||||
**优势:**
|
||||
- ✅ 自动适配亮色/暗色主题
|
||||
- ✅ 与系统风格一致
|
||||
- ✅ 更易维护
|
||||
|
||||
---
|
||||
|
||||
## 🎬 动画对比
|
||||
|
||||
### 弹窗进入动画
|
||||
|
||||
#### 优化前
|
||||
```css
|
||||
@keyframes modalFadeIn {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: scale(0.95) translateY(-20px); /* 缩放 + 平移 */
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: scale(1) translateY(0);
|
||||
}
|
||||
}
|
||||
|
||||
animation: modalFadeIn 0.3s ease-out; /* 0.3 秒 */
|
||||
```
|
||||
|
||||
#### 优化后
|
||||
```css
|
||||
@keyframes modalFadeIn {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: translateY(-10px); /* 仅平移 */
|
||||
}
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
}
|
||||
}
|
||||
|
||||
animation: modalFadeIn 0.2s ease-out; /* 0.2 秒,更快 */
|
||||
```
|
||||
|
||||
**关键变化:**
|
||||
- 去掉缩放效果
|
||||
- 减少位移距离(-20px → -10px)
|
||||
- 缩短时长(0.3s → 0.2s)
|
||||
- 更快速、更微妙
|
||||
|
||||
### 进度条动画
|
||||
|
||||
#### 优化前
|
||||
```css
|
||||
@keyframes progressPulse {
|
||||
0%, 100% { opacity: 1; }
|
||||
50% { opacity: 0.8; }
|
||||
}
|
||||
|
||||
animation: progressPulse 1.5s ease-in-out infinite; /* 脉冲动画 */
|
||||
```
|
||||
|
||||
#### 优化后
|
||||
```css
|
||||
/* 无动画,使用默认进度条样式 */
|
||||
```
|
||||
|
||||
**关键变化:**
|
||||
- 去掉脉冲动画
|
||||
- 使用系统默认进度条
|
||||
- 更简洁
|
||||
|
||||
---
|
||||
|
||||
## 🔄 交互流程对比
|
||||
|
||||
### 优化前(需要用户操作)
|
||||
|
||||
```
|
||||
点击"立即更新"
|
||||
↓
|
||||
下载中...
|
||||
↓
|
||||
下载完成
|
||||
↓
|
||||
显示"下载完成,点击安装"按钮
|
||||
↓
|
||||
用户点击"安装"
|
||||
↓
|
||||
弹出确认对话框
|
||||
↓
|
||||
用户点击"确定"
|
||||
↓
|
||||
安装中...
|
||||
↓
|
||||
安装成功
|
||||
```
|
||||
|
||||
**操作步骤:** 3 次点击(更新、安装、确定)
|
||||
|
||||
### 优化后(自动安装)
|
||||
|
||||
```
|
||||
点击"立即更新"
|
||||
↓
|
||||
下载中...
|
||||
↓
|
||||
下载完成
|
||||
↓
|
||||
自动安装(0.5秒延迟)
|
||||
↓
|
||||
安装中...
|
||||
↓
|
||||
安装成功
|
||||
```
|
||||
|
||||
**操作步骤:** 1 次点击(更新)
|
||||
|
||||
**改进:** 减少 2 次点击,更流畅
|
||||
|
||||
---
|
||||
|
||||
## 📊 整体效果对比
|
||||
|
||||
### 视觉冲击力
|
||||
|
||||
| 维度 | 优化前 | 优化后 |
|
||||
|------|--------|--------|
|
||||
| **醒目程度** | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ |
|
||||
| **视觉平衡** | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
|
||||
| **主题适配** | ⭐⭐ | ⭐⭐⭐⭐⭐ |
|
||||
| **专业感** | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
|
||||
| **简洁度** | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
|
||||
|
||||
### 用户体验
|
||||
|
||||
| 维度 | 优化前 | 优化后 |
|
||||
|------|--------|--------|
|
||||
| **操作步骤** | 3 次点击 | 1 次点击 |
|
||||
| **等待时间** | 较长 | 较短 |
|
||||
| **流程流畅度** | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
|
||||
| **干扰程度** | ⭐⭐⭐⭐ | ⭐⭐⭐ |
|
||||
| **满意度** | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
|
||||
|
||||
---
|
||||
|
||||
## 💡 设计理念总结
|
||||
|
||||
### 优化前:**吸引注意力**
|
||||
```
|
||||
目标:让用户注意到更新
|
||||
手段:强烈的视觉对比
|
||||
风格:醒目、突出
|
||||
问题:与整体不协调
|
||||
```
|
||||
|
||||
### 优化后:**融入体验**
|
||||
```
|
||||
目标:提供流畅的更新体验
|
||||
手段:简洁平和的设计
|
||||
风格:融入、协调
|
||||
效果:更专业的感觉
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 适用场景
|
||||
|
||||
### 优化前适合:
|
||||
- 需要强烈强调的场景
|
||||
- 用户注意力容易分散的场景
|
||||
- 希望快速引导用户操作的场景
|
||||
|
||||
### 优化后适合:
|
||||
- ✅ 专业工具软件(如 go-desk)
|
||||
- ✅ 需要频繁使用的应用
|
||||
- ✅ 注重用户体验的产品
|
||||
- ✅ 需要适配多主题的场景
|
||||
|
||||
---
|
||||
|
||||
## 📝 用户反馈预期
|
||||
|
||||
### 优化前可能听到:
|
||||
- "这个更新提示好醒目"
|
||||
- "但是感觉和整体风格不太搭"
|
||||
- "颜色有点太鲜艳了"
|
||||
|
||||
### 优化后预期听到:
|
||||
- "更新提示很简洁"
|
||||
- "和整体风格很协调"
|
||||
- "操作很方便,一键搞定"
|
||||
- "很专业的感觉"
|
||||
|
||||
---
|
||||
|
||||
## 🚀 使用建议
|
||||
|
||||
### 当前状态
|
||||
✅ **推荐使用优化后的版本**
|
||||
- 更好的用户体验
|
||||
- 更协调的视觉风格
|
||||
- 更专业的产品形象
|
||||
|
||||
### 自定义建议
|
||||
如果你的产品有以下特点,可以考虑调整:
|
||||
1. **面向年轻用户** → 可以增加一些活力元素
|
||||
2. **首次使用场景多** → 可以适当增强视觉引导
|
||||
3. **更新频率很低** → 可以增加一些仪式感
|
||||
|
||||
---
|
||||
|
||||
## 📦 文件清单
|
||||
|
||||
### 修改的文件
|
||||
- `frontend/src/components/UpdateNotification.vue` - 主要优化文件
|
||||
|
||||
### 新增文档
|
||||
- `docs/update-notification-optimization.md` - 详细优化说明
|
||||
- `docs/update-notification-visual-comparison.md` - 本文档
|
||||
|
||||
### 构建状态
|
||||
✅ 前端构建成功
|
||||
✅ 所有功能正常
|
||||
✅ 可以投入使用
|
||||
|
||||
---
|
||||
|
||||
## 总结
|
||||
|
||||
这次优化实现了两个核心目标:
|
||||
|
||||
### 1. 功能优化
|
||||
✅ **下载完成后自动安装**
|
||||
- 减少操作步骤(3 次点击 → 1 次点击)
|
||||
- 提升流畅度
|
||||
- 更好的用户体验
|
||||
|
||||
### 2. 视觉优化
|
||||
✅ **平和的视觉设计**
|
||||
- 融入整体风格
|
||||
- 适配系统主题
|
||||
- 更专业的感觉
|
||||
|
||||
**从"吸睛"到"融入",从"复杂"到"简洁"**
|
||||
|
||||
这就是本次优化的核心价值!
|
||||
251
docs/03-模块文档/更新通知/update-panel-improvements.md
Normal file
251
docs/03-模块文档/更新通知/update-panel-improvements.md
Normal file
@@ -0,0 +1,251 @@
|
||||
# 版本更新面板优化总结
|
||||
|
||||
## 改进内容
|
||||
|
||||
### 1. 去掉弹出窗,合并更新设置到抽屉 ✅
|
||||
|
||||
**改进前:**
|
||||
- 点击"更新设置"按钮打开模态框
|
||||
- 配置项在弹出窗中
|
||||
- 需要点击"确定"才能保存
|
||||
|
||||
**改进后:**
|
||||
- 去掉"更新设置"按钮和模态框
|
||||
- 配置项直接显示在"版本更新"tab 中
|
||||
- 配置修改后自动保存(1秒防抖)
|
||||
- 更直观、更高效
|
||||
|
||||
### 2. 版本信息表格样式优化 ✅
|
||||
|
||||
**改进前:**
|
||||
```vue
|
||||
<a-descriptions :column="2" bordered>
|
||||
<a-descriptions-item label="当前版本">{{ currentVersion }}</a-descriptions-item>
|
||||
<a-descriptions-item label="最后检查">{{ lastCheckTime }}</a-descriptions-item>
|
||||
<a-descriptions-item label="自动检查">
|
||||
<a-tag>...</a-tag>
|
||||
</a-descriptions-item>
|
||||
</a-descriptions>
|
||||
```
|
||||
|
||||
**问题:**
|
||||
- 使用 `a-descriptions` 组件,2列布局
|
||||
- 第3个项自动换行,导致表格行很高
|
||||
- 内容挤压,显示不美观
|
||||
|
||||
**改进后:**
|
||||
```vue
|
||||
<a-row :gutter="16">
|
||||
<a-col :span="8">
|
||||
<div class="info-item">
|
||||
<div class="info-label">当前版本</div>
|
||||
<div class="info-value">{{ currentVersion }}</div>
|
||||
</div>
|
||||
</a-col>
|
||||
<a-col :span="8">
|
||||
<div class="info-item">...</div>
|
||||
</a-col>
|
||||
<a-col :span="8">
|
||||
<div class="info-item">...</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
```
|
||||
|
||||
**优势:**
|
||||
- 使用 `a-row` 和 `a-col` 实现三列均匀布局
|
||||
- 每列占 8 个栅格(共24格),三列均分
|
||||
- 信息项使用卡片样式,视觉更清晰
|
||||
- 标签和值分行显示,不会挤压
|
||||
|
||||
## 新的界面布局
|
||||
|
||||
### 版本更新 Tab 结构
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────┐
|
||||
│ 版本信息 │
|
||||
├─────────────────┬─────────────────┬─────────────────┤
|
||||
│ 当前版本 │ 最后检查 │ 自动检查 │
|
||||
│ 0.1.0 │ 2026-01-28 │ 已开启 │
|
||||
└─────────────────┴─────────────────┴─────────────────┘
|
||||
|
||||
┌─────────────────────────────────────────────────────┐
|
||||
│ 更新设置 │
|
||||
│ │
|
||||
│ 自动检查更新 [✓] 已开启 │
|
||||
│ 检查间隔 [60] 分钟 │
|
||||
│ 更新检查地址 https://... │
|
||||
└─────────────────────────────────────────────────────┘
|
||||
|
||||
┌─────────────────────────────────────────────────────┐
|
||||
│ 检查更新 │
|
||||
│ │
|
||||
│ [🔍 检查更新] │
|
||||
│ │
|
||||
│ (更新信息显示区域) │
|
||||
│ (下载进度条) │
|
||||
│ (安装结果提示) │
|
||||
└─────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
## 技术实现
|
||||
|
||||
### 1. 自动保存配置(防抖)
|
||||
|
||||
```javascript
|
||||
// 配置变化时自动保存(防抖)
|
||||
let saveTimer = null
|
||||
const handleConfigChange = () => {
|
||||
// 清除之前的定时器
|
||||
if (saveTimer) {
|
||||
clearTimeout(saveTimer)
|
||||
}
|
||||
|
||||
// 设置新的定时器,1秒后保存
|
||||
saveTimer = setTimeout(async () => {
|
||||
await saveConfig()
|
||||
}, 1000)
|
||||
}
|
||||
|
||||
// 保存配置
|
||||
const saveConfig = async () => {
|
||||
saving.value = true
|
||||
|
||||
try {
|
||||
const result = await window.go.main.App.SetUpdateConfig(
|
||||
config.value.auto_check_enabled,
|
||||
config.value.check_interval_minutes,
|
||||
config.value.check_url
|
||||
)
|
||||
|
||||
if (result.success) {
|
||||
Message.success('配置已自动保存')
|
||||
await loadConfig()
|
||||
} else {
|
||||
Message.error(result.message || '保存配置失败')
|
||||
}
|
||||
} catch (error) {
|
||||
console.error('保存配置失败:', error)
|
||||
Message.error('保存配置失败:' + (error.message || error))
|
||||
} finally {
|
||||
saving.value = false
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
**防抖机制:**
|
||||
- 用户修改配置后,等待1秒再自动保存
|
||||
- 如果1秒内再次修改,重新计时
|
||||
- 避免频繁保存,提升性能
|
||||
|
||||
### 2. 版本信息样式
|
||||
|
||||
```css
|
||||
.info-item {
|
||||
padding: 12px;
|
||||
background: var(--color-fill-1);
|
||||
border-radius: 6px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.info-label {
|
||||
font-size: 12px;
|
||||
color: var(--color-text-3);
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.info-value {
|
||||
font-size: 16px;
|
||||
font-weight: 500;
|
||||
color: var(--color-text-1);
|
||||
}
|
||||
```
|
||||
|
||||
**样式特点:**
|
||||
- 卡片式设计,圆角背景
|
||||
- 标签和值垂直居中对齐
|
||||
- 标签小字体灰色,值大字体加粗
|
||||
- 三列均分,视觉平衡
|
||||
|
||||
### 3. 配置项布局
|
||||
|
||||
```vue
|
||||
<a-row :gutter="16">
|
||||
<a-col :span="12">
|
||||
<a-form-item label="自动检查更新">
|
||||
<a-switch v-model="config.auto_check_enabled" @change="handleConfigChange">
|
||||
<template #checked-icon><icon-check /></template>
|
||||
<template #unchecked-icon><icon-close /></template>
|
||||
</a-switch>
|
||||
<span>{{ config.auto_check_enabled ? '已开启' : '已关闭' }}</span>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
<a-col :span="12">
|
||||
<a-form-item label="检查间隔(分钟)">
|
||||
<a-input-number
|
||||
v-model="config.check_interval_minutes"
|
||||
:disabled="!config.auto_check_enabled"
|
||||
@change="handleConfigChange"
|
||||
/>
|
||||
</a-form-item>
|
||||
</a-col>
|
||||
</a-row>
|
||||
```
|
||||
|
||||
**布局优化:**
|
||||
- 自动检查和检查间隔并排显示
|
||||
- 更新检查地址独占一行
|
||||
- 禁用自动检查时,检查间隔输入框自动禁用
|
||||
- 修改任一配置项都会触发自动保存
|
||||
|
||||
## 用户体验改进
|
||||
|
||||
1. **更直观** - 所有配置一目了然,无需打开弹出窗
|
||||
2. **更高效** - 自动保存,无需点击确定按钮
|
||||
3. **更美观** - 三列均分布局,不会出现换行挤压
|
||||
4. **更智能** - 防抖保存,避免频繁操作
|
||||
5. **更合理** - 禁用自动检查时,相关配置项自动禁用
|
||||
|
||||
## 修改的文件
|
||||
|
||||
- `frontend/src/components/UpdatePanel.vue`
|
||||
- 模板:去掉模态框,改用卡片布局
|
||||
- 样式:添加 `.info-item` 相关样式
|
||||
- 逻辑:添加自动保存和防抖机制
|
||||
|
||||
## 功能对比
|
||||
|
||||
| 功能 | 改进前 | 改进后 |
|
||||
|------|--------|--------|
|
||||
| 配置入口 | 点击按钮打开弹出窗 | 直接显示在界面中 |
|
||||
| 保存方式 | 手动点击确定 | 自动保存(1秒防抖) |
|
||||
| 版本信息 | 表格换行挤压 | 三列卡片式布局 |
|
||||
| 交互步骤 | 打开 → 修改 → 确定 | 直接修改 |
|
||||
| 视觉效果 | 表格行很高 | 三列均分,美观 |
|
||||
|
||||
## 测试要点
|
||||
|
||||
### 基础功能
|
||||
- ✅ 修改自动检查开关,1秒后自动保存
|
||||
- ✅ 修改检查间隔,自动保存
|
||||
- ✅ 修改检查地址,自动保存
|
||||
- ✅ 禁用自动检查,检查间隔自动禁用
|
||||
- ✅ 版本信息三列均分显示
|
||||
|
||||
### 边界情况
|
||||
- ✅ 快速连续修改,只保存最后一次
|
||||
- ✅ 保存失败时显示错误提示
|
||||
- ✅ 检查间隔范围限制(1-1440分钟)
|
||||
|
||||
### UI 验证
|
||||
- ✅ 版本信息不换行挤压
|
||||
- ✅ 三列宽度均匀
|
||||
- ✅ 卡片样式美观
|
||||
|
||||
## 总结
|
||||
|
||||
本次优化解决了两个主要问题:
|
||||
1. **弹出窗体验不佳** - 通过直接显示配置项并自动保存
|
||||
2. **表格换行挤压** - 通过改用卡片式三列布局
|
||||
|
||||
用户体验得到显著提升,界面更加美观和高效。
|
||||
Reference in New Issue
Block a user