# 版本更新说明

## v5.6.9（2026-06-19）

### 💬 评论导出稳定性修复

- **分段保存进度**：评论导出过程新增 `.partial.json` 检查点文件，长评论任务中断后可保留已导出的部分结果。
- **自动刷新保护**：导出期间临时锁住页面 15 分钟自动刷新，减少任务被页面重置打断的概率。
- **误报修复**：后端已导出成功时，不再因为前端状态刷新异常弹出 `获取评论列表失败<Failed to fetch>`。
- **成功提示增强**：导出完成后会显示一级评论数、回复数与合计条数，便于直接核对结果。
- **版本展示同步**：同步更新启动横幅、README、版本说明、About 页面与 Windows 文件版本信息。

---

## v5.6.8（2026-06-05）

### 🔗 分享链接解析与导入

- **分享详情恢复**：修复 `/api/channels/shared_feed/profile`，分享链接现在可以再次获取到视频详情。
- **控制台直接导入**：批量下载页新增“分享链接下载”，解析后可直接加入下载列表。
- **双通道解析**：支持自动、视频号页面、Cookie/Worker 纯后端三种解析模式。
- **后端状态可见**：设置接口补充 `sharedFeedBackendEnabled` 与 `sharedFeedBackendType`，页面可直接提示是否已配置。
- **短链回退补齐**：页面接口未稳定返回 `dynamicExportId` 时，自动回退到短链 ID。
- **版本展示同步**：同步更新启动横幅、版本说明和 Windows 文件版本信息。

---

## v5.6.7（2026-05-29）

### 🛡️ 批量下载稳定性修复

- **下载链路加固**：批量下载改为先写临时文件，再完成解密校验后落成最终文件。
- **不可播放问题收敛**：修复部分视频在批量下载后无法播放的情况，重点处理异常中断和解密失败恢复。
- **真实暂停恢复**：批量任务暂停与恢复改为真实调用 Gopeed 任务级 `Pause` / `Continue`。
- **并发一致性提升**：优化并发下载时的状态同步与文件收尾逻辑，减少恢复后状态错乱。
- **版本展示同步**：同步更新启动横幅、版本说明和 Windows 文件版本信息。

---

## v5.6.6（2026-05-26）

### 🧭 配置回显与命名链路整理

- **模板占位符补齐**：`download_filename_template` 文档补齐 `{size}` 占位符，和当前代码支持一致。
- **批量链路命名对齐**：批量下载、下载队列、队列转批量下载统一透传命名元数据，减少文件名差异。
- **设置说明修正**：`GET /api/settings` 与控制台设置页明确 `downloadFilenameTemplate`、`radarEnabled` 为配置回显。
- **雷达开关收敛**：对标雷达默认关闭，以 `config.yaml` 中的 `radar_enabled` 为准，修改后需重启程序生效。
- **日志提示修正**：启动阶段的日志初始化提示改为安全格式化输出，避免日志路径中的 `%` 被误解析。

---

## v5.6.5（2026-05-15）

### 🎯 原始视频、评论导出与命名策略更新

- **完善原始视频下载**：原始视频下载完善，修复获取不到原始视频链接的问题。
- **优化评论导出**：新增评论列表api，支持获取视频评论列表和回复分页。
- **下载命名优化**：下载文件名默认不再附带视频 ID，同标题文件自动追加序号避免覆盖。
- **下载命名模板**：新增 `download_filename_template` 配置，支持 `{date} {datetime} {author} {title} {duration} {video_id} {size}` 占位符。
- **雷达配置收敛**：对标雷达默认关闭，当前以 `config.yaml` 中的 `radar_enabled` 为准，控制台仅展示状态。
- **依赖补充**：补充 `SunnyNet v1.0.3` 到项目 `pkg` 模块，便于后续开发和构建。

---

## v5.6.2（2026-04-26）

### 🧹 清理与交付整理

- **搜索页清理**：移除已关闭的视频号搜索页面相关代码和说明文档
- **API 搜索保留**：保留后端与控制台搜索接口能力，不影响现有搜索调用
- **仓库提交调整**：放开 `web/` 目录提交限制，允许站点资源进入版本管理

---

## v5.1.0（2025-11-29）

### 🚀 性能优化

#### 1. 批量下载并发支持
- **并发下载**：支持多个视频同时下载（默认2个并发，可配置）
- **Worker Pool**：使用 goroutine 池管理下载任务
- **配置项**：`DownloadConcurrency` 控制并发数

#### 2. 断点续传
- **Range 请求**：支持 HTTP Range 请求，中断后可继续下载
- **临时文件**：下载中断后保留 .tmp 文件，下次自动续传
- **配置项**：`DownloadResumeEnabled` 开关（默认开启）
- **注意**：加密视频不支持断点续传

#### 3. 智能重试机制
- **指数退避**：重试延迟 2s → 4s → 8s...（指数增长）
- **随机抖动**：添加 0-1s 随机延迟，避免重试风暴
- **可配置**：`DownloadRetryCount` 控制重试次数
- **超时控制**：`DownloadTimeout` 控制单文件超时（默认10分钟）

#### 4. 取消时立即中断
- **Context 取消**：使用 context.CancelFunc 实现立即中断
- **资源清理**：取消后自动清理正在下载的临时文件

### ⚡ 前端优化

#### 1. Payload 大小优化
- **问题**：之前每个视频携带 128KB 解密数组，50个视频 = 9MB payload
- **解决**：只传 key（几十字节），后端自己生成解密数组
- **效果**：payload 大小从 ~170KB/视频 降到 ~1KB/视频

#### 2. 后端解密支持
- **Isaac64 算法**：Go 实现的 Isaac64 伪随机数生成器
- **自动解密**：后端从 key 生成 128KB 解密数组
- **兼容性**：同时支持 key（新）和 decryptorPrefix（旧）两种方式

#### 3. Web 控制台优化
- **移除 WASM**：不再需要前端加载 WASM 解密库
- **即时提交**：数据格式转换瞬间完成
- **简化流程**：直接传 key，后端处理解密

### 🔧 新增配置项

| 配置项 | 类型 | 默认值 | 说明 |
|--------|------|--------|------|
| `DownloadConcurrency` | int | 5 | 批量下载并发数 |
| `DownloadRetryCount` | int | 3 | 下载重试次数 |
| `DownloadResumeEnabled` | bool | true | 断点续传开关 |
| `DownloadTimeout` | Duration | 30min | 单文件下载超时 |

### 📊 性能对比

| 指标 | v5.0.0 | v5.1.0 | 提升 |
|------|--------|--------|------|
| 50视频 payload | 9 MB | ~50 KB | 180x |
| 构建 payload | 2-3秒 | 瞬间 | - |
| 下载速度 | 串行 | 2并发 | 2x |
| 中断恢复 | 重新下载 | 断点续传 | - |

### 🐛 问题修复

- **修复**：大量视频批量下载时 payload 过大导致请求卡住
- **修复**：取消下载后当前任务仍继续下载的问题
- **修复**：重试延迟固定导致的重试风暴问题

---

## v5.0.0（2025-11-23）

### 🎉 重大更新

这是一个重要的里程碑版本，标志着项目从日期版本号（v20251108）迁移到语义化版本号（v5.0.0）。

### ✨ 新增功能

#### 1. 批量下载系统
- **完整的批量下载功能**：支持一次下载多个视频
- **多种数据格式**：支持批量下载格式和账户导出格式
- **自动格式转换**：智能识别并转换数据格式
- **重试机制**：网络问题自动重试（最多3次）
- **进度监控**：实时显示下载进度和状态

#### 2. 加密视频支持
- **XOR 解密算法**：支持加密视频自动解密
- **WASM 集成**：自动加载微信 WASM 解密库
- **密钥自动处理**：自动处理 key 字段，生成 decryptorPrefix
- **完整视频保存**：解密后保存为可播放的 MP4 文件

#### 3. Web 控制台
- **微信风格界面**：简洁清爽的微信绿色主题
- **实时进度显示**：显示总任务数、已完成、失败、进行中
- **实时日志**：500条日志缓存，颜色区分不同类型
- **操作按钮**：开始、取消、导出失败清单、清空日志
- **响应式布局**：适配桌面和移动端

#### 4. 错误处理和恢复
- **Context 超时控制**：10分钟超时，避免长时间卡住
- **递增延迟重试**：2s、4s、6s 递增延迟策略
- **失败清单导出**：导出失败任务 JSON，便于重新下载
- **详细错误信息**：记录失败原因，便于排查

### 📚 文档完善

#### 1. 用户文档
- **批量下载使用指南**：完整的功能说明和使用方法
- **Web 控制台使用指南**：详细的界面说明和操作指南
- **快速开始指南**：5分钟快速上手

#### 2. 开发文档
- **批量下载 API 文档**：完整的 API 接口说明
- **加密视频详细说明**：加密原理和使用方法
- **开发记录**：完整的开发历程和问题修复记录

#### 3. 文档结构优化
- **主目录简洁**：只保留核心用户文档
- **详细文档分离**：技术文档和开发记录移至 fix 目录
- **分类清晰**：用户文档和开发文档明确分离

### 🔧 技术改进

#### 1. 代码质量
- **模块化设计**：批量下载处理器独立模块
- **错误处理完善**：完整的错误处理和日志记录
- **代码规范**：遵循 Go 语言规范

#### 2. 性能优化
- **HTTP 连接池**：复用 HTTP 连接，提高性能
- **缓冲区优化**：32KB 缓冲区，平衡内存和性能
- **串行下载**：避免对服务器造成压力

#### 3. 安全性
- **授权验证**：支持 Token 授权
- **CORS 支持**：配置允许的请求来源
- **数据安全**：解密密钥在内存中处理

### 🐛 问题修复

#### 1. 文件句柄泄漏
- **问题**：重命名临时文件时失败
- **修复**：在重命名前显式关闭文件句柄

#### 2. 加密视频处理
- **问题**：无法正确解密加密视频
- **修复**：集成 WASM 库，自动处理密钥转换

#### 3. 网络中断恢复
- **问题**：下载中断后卡住
- **修复**：Context 超时控制 + 自动重试机制

#### 4. 用户体验优化
- **问题**：界面不够直观
- **修复**：实时日志 + 进度显示 + 微信风格

### 📊 统计数据

- **新增代码**：约 720 行（批量下载功能）
- **新增文档**：17 篇（用户文档 + 开发文档）
- **修复问题**：4 个主要问题
- **优化项目**：文档结构、代码质量、性能

### 🎯 使用场景

1. **批量备份**：一次性下载多个视频进行备份
2. **离线观看**：下载视频后离线观看
3. **内容整理**：按作者分类整理视频
4. **加密视频**：自动解密加密的视频

### 📝 升级说明

#### 从旧版本升级

1. **下载新版本**：从 GitHub Releases 下载 v5.0.0
2. **替换可执行文件**：替换旧的 wx_channel.exe
3. **保留配置**：配置文件和下载目录无需更改
4. **查看文档**：阅读新的批量下载使用指南

#### 配置变更

- **版本号格式**：从日期格式（20251108）改为语义化版本（5.0.0）
- **无需修改配置**：所有配置保持向后兼容

### 🔮 未来计划

#### 短期（v5.2.0）
- [ ] 下载速度限制
- [ ] 下载历史记录
- [ ] 下载队列管理

#### 中期（v5.3.0）
- [ ] 视频预览
- [ ] 批量操作优化
- [ ] 更多导出格式

#### 长期（v6.0.0）
- [ ] 分布式下载
- [ ] 云存储支持
- [ ] 视频转码
- [ ] 移动端支持

### 📞 获取帮助

- **文档**：查看 [docs/](../docs/) 目录下的完整文档
- **问题反馈**：通过 [GitHub Issues](https://github.com/nobiyou/wx_channel/issues) 反馈
- **讨论交流**：查看项目 README 中的联系方式

### 🙏 致谢

感谢所有用户的反馈和建议，帮助我们不断改进项目。

---

## 历史版本

### v20251108（2024-11-08）

- **UI/UX 优化**：状态信息栏、自定义确认对话框
- **批量下载**：支持前端和后端批量下载，支持选择下载
- **多格式导出**：支持 TXT、JSON、Markdown 格式
- **加密支持**：支持加密视频的前缀解密
- **日志系统**：默认开启，支持文件大小滚动
- **性能优化**：分片上传并发控制、CSV 去重优化

### 更早版本

更早版本的更新记录请查看 [GitHub Releases](https://github.com/nobiyou/wx_channel/releases)。

---

**版本号说明**：

从 v5.0.0 开始，项目采用语义化版本号（Semantic Versioning）：
- **主版本号**：重大更新，可能包含不兼容的 API 变更
- **次版本号**：新增功能，向后兼容
- **修订号**：问题修复，向后兼容
- **构建号**：构建版本，通常为 0

当前版本：**v5.6.9**

---

最后更新：2026-06-19
