407 lines
13 KiB
Markdown
407 lines
13 KiB
Markdown
# 变更日志 (changelog.md)
|
||
|
||
> 本文档记录所有版本变更,包含功能、修复和讨论链接。
|
||
|
||
## 使用说明
|
||
- 版本号格式:`主版本.次版本.修订版本`(如 `0.0.1`)
|
||
- 第三位为00-99,超过99时增加第二位
|
||
- 每个版本包含指向讨论记录的链接
|
||
|
||
## 未来架构想法
|
||
- [ ] 支持流式翻译输出
|
||
- [x] 添加本地缓存减少API调用 ✅ 已完成
|
||
- [ ] 实现插件系统支持自定义厂商
|
||
- [ ] 支持批量翻译文件
|
||
- [ ] 添加Web界面(可选)
|
||
|
||
## 待实现
|
||
- [ ] 实现硅基流动厂商
|
||
- [ ] 实现火山引擎厂商
|
||
- [ ] 实现国家超算厂商
|
||
- [ ] 实现Qwen厂商
|
||
- [ ] 实现OpenAI兼容厂商
|
||
- [ ] 配置文件热重载
|
||
- [ ] 翻译历史记录
|
||
|
||
## 当前正实现
|
||
- [x] TUI界面模块拆分计划 ✅ 已制定
|
||
- [x] 模块1: TUI框架搭建 ✅ 已完成
|
||
- [x] 模块2: 输入组件 ✅ 已完成
|
||
- [x] 模块3: 翻译显示区 ✅ 已完成
|
||
- [x] 模块4: 状态栏/主题 ✅ 已完成
|
||
- [x] 模块5: 快捷键系统 ✅ 已完成
|
||
- [x] 模块6: 集成翻译 ✅ 已完成
|
||
|
||
## TUI界面实现计划 (v0.6.0) - 全部完成!
|
||
| 步骤 | 模块 | 内容 | 状态 |
|
||
|------|------|------|------|
|
||
| 1 | TUI框架搭建 | bubbletea基础App结构、运行循环 | ✅ 已完成 |
|
||
| 2 | 输入组件 | 文本输入框,光标、基础编辑 | ✅ 已完成 |
|
||
| 3 | 翻译显示区 | 结果展示、格式化、滚动 | ✅ 已完成 |
|
||
| 4 | 状态栏/主题 | 底部状态栏、语言选择、主题配色 | ✅ 已完成 |
|
||
| 5 | 快捷键系统 | 退出、清空、切换语言等 | ✅ 已完成 |
|
||
| 6 | 集成翻译 | 对接现有Translator、加载动画 | ✅ 已完成 |
|
||
|
||
## TUI界面改进计划 (v0.7.0)
|
||
| 步骤 | 模块 | 内容 | 状态 |
|
||
|------|------|------|------|
|
||
| 7 | 多行输入 | textarea组件替换textinput | ✅ 已完成 |
|
||
| 8 | 弹出框组件 | 通用modal组件 | ⏳ 待实现 |
|
||
| 9 | 斜杠命令菜单 | / 触发命令选择器,模糊匹配 | ⏳ 待实现 |
|
||
| 10 | 翻译结果滚动 | viewport组件支持长文本 | ⏳ 待实现 |
|
||
| 11 | 复制功能 | clipboard集成 | ⏳ 待实现 |
|
||
| 12 | 状态栏扩展 | 显示耗时、token用量 | ⏳ 待实现 |
|
||
|
||
## 待修复BUG
|
||
- 无
|
||
|
||
## 版本历史
|
||
|
||
### 0.7.0 (2026-04-06) - TUI界面改进
|
||
**类型**: 功能版本
|
||
**状态**: 开发中
|
||
|
||
**改进内容**:
|
||
- ✅ 模块7: 多行输入 - textarea组件替换textinput
|
||
- ⏳ 模块8: 弹出框组件 - 通用modal
|
||
- ⏳ 模块9: 斜杠命令菜单 - / 命令选择器
|
||
- ⏳ 模块10: 翻译结果滚动 - viewport
|
||
- ⏳ 模块11: 复制功能 - clipboard
|
||
- ⏳ 模块12: 状态栏扩展 - 耗时/token
|
||
|
||
**讨论记录**:
|
||
- [TUI界面改进计划](taolun.md#2026-04-06-1400-版本-070---tui界面改进计划)
|
||
|
||
**下一步**:
|
||
- 实现模块8: 弹出框组件
|
||
|
||
---
|
||
|
||
### 0.6.0 (2026-04-06) - TUI交互界面
|
||
**类型**: 功能版本
|
||
**状态**: 已完成
|
||
|
||
**变更内容**:
|
||
- ✅ 模块1: TUI框架搭建 - 添加bubbletea依赖,实现基础App结构
|
||
- ✅ 模块2: 输入组件 - textinput组件、基础输入处理
|
||
- ✅ 模块3: 翻译显示区 - 结果显示区域、样式定义
|
||
- ✅ 模块4: 状态栏/主题 - 底部状态栏、语言显示、配色完善
|
||
- ✅ 模块5: 快捷键系统 - Ctrl+L清空、Ctrl+T切换语言
|
||
- ✅ 模块6: 集成翻译 - Enter触发翻译、异步执行、加载状态、错误处理
|
||
|
||
**技术实现**:
|
||
- 使用 `github.com/charmbracelet/bubbletea` v1.3.10
|
||
- 使用 `github.com/charmbracelet/bubbles` (textinput组件)
|
||
- 使用 `github.com/charmbracelet/lipgloss` v1.1.0
|
||
- 基础model结构: config、translator字段
|
||
|
||
**讨论记录**:
|
||
- [TUI界面模块拆分计划](taolun.md#2026-04-06-1000-版本-060---tui界面模块拆分计划)
|
||
|
||
**下一步**:
|
||
- 实现模块7: 多行输入
|
||
|
||
---
|
||
|
||
### 0.5.0 (2026-03-29) - 本地缓存功能
|
||
**类型**: 功能版本
|
||
**状态**: 已发布
|
||
|
||
**变更内容**:
|
||
- ✅ 添加本地缓存模块 (internal/cache/)
|
||
- ✅ 实现SQLite缓存存储层,支持高效查询和存储
|
||
- ✅ 实现缓存键生成策略(基于原文+语言对的SHA256哈希)
|
||
- ✅ 修改Translator类集成缓存功能,先查缓存再调用API
|
||
- ✅ 添加缓存配置到Config结构,支持自定义缓存参数
|
||
- ✅ 实现缓存管理命令:cache clear, cache stats, cache cleanup
|
||
- ✅ 添加组合缓存清理策略(数量限制+时间过期)
|
||
- ✅ 更新配置文件模板,添加缓存配置示例
|
||
- ✅ 更新帮助文档,添加缓存相关命令说明
|
||
|
||
**技术实现**:
|
||
- 使用 `github.com/mattn/go-sqlite3` 作为SQLite驱动
|
||
- 实现缓存接口 (Cache interface),支持多种存储后端
|
||
- 缓存表包含完整字段:原文、译文、语言对、模型、Prompt、用量统计
|
||
- 自动清理过期缓存和超出数量限制的缓存
|
||
- 异步保存缓存,不阻塞翻译结果返回
|
||
|
||
**使用示例**:
|
||
```bash
|
||
# 基本翻译(自动使用缓存)
|
||
yoyo "Hello world"
|
||
yoyo "Hello world" # 第二次调用将从缓存返回
|
||
|
||
# 缓存管理命令
|
||
yoyo cache clear # 清空翻译缓存
|
||
yoyo cache stats # 查看缓存统计信息
|
||
yoyo cache cleanup # 清理过期缓存
|
||
```
|
||
|
||
**配置示例**:
|
||
```yaml
|
||
cache:
|
||
enabled: true # 是否启用缓存
|
||
max_records: 10000 # 最大缓存记录数
|
||
expire_days: 30 # 缓存过期天数
|
||
db_path: "~/.config/yoyo/cache.db" # 缓存数据库文件路径
|
||
```
|
||
|
||
**讨论记录**:
|
||
- [本地缓存功能设计](taolun.md#2026-03-29-1500-版本-050-本地缓存功能设计)
|
||
|
||
**下一步**:
|
||
- 完善缓存功能测试
|
||
- 添加缓存命中率统计
|
||
- 实现按语言清理缓存功能
|
||
- 优化缓存性能
|
||
|
||
---
|
||
|
||
### 0.5.1 (2026-03-29) - 缓存功能修复
|
||
**类型**: 修复版本
|
||
**状态**: 已发布
|
||
|
||
**变更内容**:
|
||
- ✅ 修复缓存清空命令中的VACUUM事务错误
|
||
- ✅ 修复缓存统计中的NULL值处理错误
|
||
- ✅ 修复缓存过期清理策略,支持expire_days=0时清理所有记录
|
||
- ✅ 添加缓存模块单元测试
|
||
- ✅ 更新版本号到v0.5.1
|
||
|
||
**修复问题**:
|
||
- 缓存清空命令执行时出现"cannot VACUUM from within a transaction"错误
|
||
- 缓存统计查询在空表时出现NULL值转换错误
|
||
- 缓存过期清理策略在expire_days=0时不工作
|
||
|
||
**测试结果**:
|
||
- 所有缓存模块测试通过
|
||
- 缓存命令功能正常
|
||
- 缓存集成功能正常
|
||
|
||
**下一步**:
|
||
- 完善缓存功能测试
|
||
- 添加缓存命中率统计
|
||
- 实现按语言清理缓存功能
|
||
- 优化缓存性能
|
||
|
||
---
|
||
|
||
### 0.4.0 (2026-03-29) - 管道符功能
|
||
**类型**: 功能版本
|
||
**状态**: 已发布
|
||
|
||
**变更内容**:
|
||
- ✅ 添加管道符支持,允许与其他命令行工具联合使用
|
||
- ✅ 实现管道输入检测 (isPipeInput函数)
|
||
- ✅ 实现从标准输入读取 (readFromStdin函数)
|
||
- ✅ 添加 --quiet 和 -q 参数控制统计信息输出
|
||
- ✅ 更新帮助文档,添加管道使用示例
|
||
- ✅ 修复 content/filter.go 中的正则表达式错误
|
||
- ✅ 更新版本号到 v0.3.0
|
||
|
||
**使用示例**:
|
||
```bash
|
||
# 管道翻译文件
|
||
cat file.txt | yoyo
|
||
cat file.txt | yoyo --lang=en
|
||
|
||
# 管道翻译命令输出
|
||
echo "Hello world" | yoyo --lang=cn
|
||
|
||
# 静默模式,只输出翻译结果
|
||
echo "Hello world" | yoyo -q
|
||
|
||
# 与其他命令组合使用
|
||
cat file.txt | yoyo | grep "关键词"
|
||
yoyo "Hello" | wc -l
|
||
```
|
||
|
||
**讨论记录**:
|
||
- [管道符功能设计](taolun.md#管道符功能设计)
|
||
|
||
**下一步**:
|
||
- 实现更多厂商(火山引擎、国家超算、Qwen、OpenAI兼容)
|
||
- 添加配置文件路径查找机制
|
||
- 实现配置文件迁移工具
|
||
- 完善错误处理和用户体验
|
||
|
||
### 0.3.0 (2026-03-29) - 内容过滤与代码处理
|
||
**类型**: 功能版本
|
||
**状态**: 已发布
|
||
|
||
**变更内容**:
|
||
- ✅ 添加内容过滤模块 (internal/content/)
|
||
- ✅ 实现基础字符过滤(移除控制字符、规范化换行符、截断超长符号)
|
||
- ✅ 实现代码块和行内代码识别
|
||
- ✅ 实现代码注释智能识别(支持 JS/TS/Java/Python/Go/HTML 等 30+ 语言)
|
||
- ✅ 添加 go-enry 依赖实现编程语言智能检测
|
||
- ✅ 添加 SkipKeywords 配置项,默认保留 TODO/FIXME/HACK 等关键词不翻译
|
||
- ✅ 集成内容处理到 Translator 模块
|
||
|
||
**新增文件**:
|
||
- `internal/content/content.go` - 模块入口
|
||
- `internal/content/filter.go` - 基础字符过滤
|
||
- `internal/content/parser.go` - 内容解析器和语言检测
|
||
|
||
**配置更新**:
|
||
- `configs/config.yaml` 新增 `skip_keywords` 配置项
|
||
- 支持用户自定义不翻译的关键词列表
|
||
|
||
**使用示例**:
|
||
```bash
|
||
# 翻译包含代码的文档,自动识别代码和注释
|
||
yoyo "这是一个文档 ```js // TODO: fix this ```"
|
||
# 代码块保持不变,只翻译注释中的词汇
|
||
# TODO: 修复这个
|
||
```
|
||
|
||
**讨论记录**:
|
||
- [内容过滤与代码处理设计](taolun.md#内容过滤与代码处理设计)
|
||
|
||
**下一步**:
|
||
- 实现更多厂商(火山引擎、国家超算、Qwen、OpenAI兼容)
|
||
- 添加配置文件路径查找机制
|
||
- 实现配置文件迁移工具
|
||
- 完善错误处理和用户体验
|
||
|
||
### 0.2.0 (2026-03-29) - 语言支持和配置向导
|
||
**类型**: 功能版本
|
||
**状态**: 开发中
|
||
|
||
**变更内容**:
|
||
- ✅ 添加语言代码智能解析模块 (internal/lang)
|
||
- ✅ 支持 `--lang` 参数指定目标语言
|
||
- ✅ 支持多种语言代码格式(标准BCP47、别名、中文名称)
|
||
- ✅ 实现 onboard 交互式配置向导
|
||
- ✅ 更新配置结构添加语言字段
|
||
- ✅ 添加 survey 库依赖用于交互式界面
|
||
- ✅ 改进CLI命令行接口
|
||
- ✅ 添加语言模块单元测试
|
||
|
||
**新增文件**:
|
||
- `internal/lang/lang.go` - 语言代码解析模块
|
||
- `internal/lang/lang_test.go` - 语言模块测试
|
||
- `internal/onboard/onboard.go` - 配置向导实现
|
||
|
||
**支持的语言代码**:
|
||
- 标准格式: zh-CN, zh-TW, en-US, en-GB, ja, ko, es, fr, de 等
|
||
- 简短别名: cn(中文), en(英文), jp(日文), kr(韩文) 等
|
||
- 中文名称: chinese(中文), english(英文), japanese(日文) 等
|
||
|
||
**使用示例**:
|
||
```bash
|
||
# 基本翻译
|
||
yoyo "Hello world"
|
||
yoyo --lang=cn "Hello world"
|
||
yoyo --lang=en "你好世界"
|
||
yoyo --lang=zh-TW "Hello world"
|
||
|
||
# 配置向导
|
||
yoyo onboard
|
||
yoyo onboard --force
|
||
```
|
||
|
||
**讨论记录**:
|
||
- [语言代码解析设计](taolun.md#语言代码解析设计)
|
||
- [onboard配置向导](taolun.md#onboard配置向导)
|
||
|
||
**下一步**:
|
||
- 实现更多厂商(火山引擎、国家超算、Qwen、OpenAI兼容)
|
||
- 添加配置文件路径查找机制
|
||
- 实现配置文件迁移工具
|
||
- 完善错误处理和用户体验
|
||
|
||
### 0.0.3 (2026-03-29) - 环境变量加载修复
|
||
**类型**: 修复版本
|
||
**状态**: 开发中
|
||
|
||
**变更内容**:
|
||
- ✅ 修复环境变量加载问题
|
||
- ✅ 添加godotenv依赖
|
||
- ✅ 更新memory.md记录踩坑经验
|
||
- ✅ 测试CLI基本功能
|
||
|
||
**讨论记录**:
|
||
- [环境变量加载修复](taolun.md#2026-03-29-0000-版本-003-环境变量加载修复)
|
||
|
||
**下一步**:
|
||
- 实现更多厂商
|
||
- 添加更多测试
|
||
- 完善错误处理
|
||
|
||
### 0.0.2 (2026-03-28) - 核心架构实现
|
||
**类型**: 功能版本
|
||
**状态**: 开发中
|
||
|
||
**变更内容**:
|
||
- ✅ 实现Config配置类(internal/config/config.go)
|
||
- ✅ 实现Provider接口和工厂模式(internal/provider/)
|
||
- ✅ 实现硅基流动厂商(internal/provider/siliconflow.go)
|
||
- ✅ 实现Translator核心翻译类(internal/translator/)
|
||
- ✅ 实现Prompt管理器(internal/translator/prompt.go)
|
||
- ✅ 创建CLI入口点(cmd/yoyo/main.go)
|
||
- ✅ 添加配置文件模板(configs/config.yaml)
|
||
- ✅ 添加单元测试(internal/config/config_test.go)
|
||
- ✅ 初始化Git仓库和版本标签
|
||
|
||
**讨论记录**:
|
||
- [实现核心架构](taolun.md#2026-03-28-2350-版本-002-实现核心架构)
|
||
|
||
**下一步**:
|
||
- 实现其他厂商(火山引擎、国家超算、Qwen、OpenAI兼容)
|
||
- 添加更多测试
|
||
- 实现批量翻译功能
|
||
- 添加翻译历史记录
|
||
- 实现配置文件热重载
|
||
|
||
### 0.0.1 (2026-03-28) - 项目初始化
|
||
**类型**: 初始化版本
|
||
**状态**: 开发中
|
||
|
||
**变更内容**:
|
||
- ✅ 确定技术栈为Go语言
|
||
- ✅ 设计OOP架构(Config、Provider、Translator)
|
||
- ✅ 制定开发规范(taolun.md、changelog.md、memory.md、why.md)
|
||
- ✅ 确定分支策略(main、dev)
|
||
- ✅ 设计项目结构
|
||
- ✅ 创建项目初衷文档(why.md)
|
||
|
||
**讨论记录**:
|
||
- [确定技术栈](taolun.md#2026-03-28-2230-版本-001-确定技术栈)
|
||
- [设计OOP架构](taolun.md#2026-03-28-2300-版本-001-设计oop架构)
|
||
- [制定开发规范](taolun.md#2026-03-28-2330-版本-001-制定开发规范)
|
||
- [创建项目初衷文档](taolun.md#2026-03-28-2345-版本-001-创建项目初衷文档)
|
||
|
||
**下一步**:
|
||
- 创建项目目录结构
|
||
- 初始化Go模块
|
||
- 实现Config类
|
||
- 实现Provider接口
|
||
- 用户填写why.md内容
|
||
|
||
---
|
||
|
||
## 版本号管理规则
|
||
|
||
### 版本号格式
|
||
`主版本.次版本.修订版本`(例如:`1.2.3`)
|
||
|
||
### 更新规则
|
||
1. **主版本**(第一位):重大架构变更、不兼容更新
|
||
2. **次版本**(第二位):新功能、重要特性
|
||
3. **修订版本**(第三位):小修复、优化(00-99)
|
||
|
||
### 更新流程
|
||
1. 完成开发并测试
|
||
2. 更新changelog.md
|
||
3. 更新taolun.md(如有讨论)
|
||
4. 更新memory.md(如有新知识)
|
||
5. 更新版本号
|
||
6. 提交到dev分支
|
||
7. 测试通过后合并到main
|
||
8. 创建版本标签:`git tag v0.0.1`
|
||
|
||
### 示例版本递增
|
||
- `0.0.1` → `0.0.2`:小修复
|
||
- `0.0.99` → `0.1.0`:新功能(修订版本溢出)
|
||
- `1.2.3` → `2.0.0`:重大架构变更 |