feat: 实现模块1 - TUI基础框架 (bubbletea)

This commit is contained in:
2026-04-06 05:07:36 +08:00
parent b71f76c8b3
commit 1787464f52
7 changed files with 312 additions and 17 deletions

View File

@@ -379,4 +379,67 @@ if oldestStr.Valid {
**关联文档**:
- [changelog.md#0.5.1](changelog.md#051)
- [memory.md#本地缓存实现经验](memory.md#本地缓存实现经验)
- [memory.md#本地缓存实现经验](memory.md#本地缓存实现经验)
---
### [2026-04-06 10:00] 版本 0.6.0 - TUI界面模块拆分计划
**原因**: 当前TUI目录(tui/components、tui/theme)已创建但完全为空,需要从零实现终端交互界面
**分析**:
- 采用分模块逐步实现策略减少Token消耗和上下文负担
- 每次只实现一个模块,完成后再进入下一个
- 讨论内容仅保存到taolun.md/changelog.md/memory.md不新增md文件
**解决方案 - TUI模块拆分**:
| 步骤 | 模块 | 内容 | 预计工作量 |
|------|------|------|-----------|
| 1 | TUI框架搭建 | 选择库(bubbletea)、基础App结构、运行循环 | 小 |
| 2 | 输入组件 | 文本输入框、光标、基础编辑 | 中 |
| 3 | 翻译显示区 | 结果展示、格式化、滚动 | 中 |
| 4 | 状态栏/主题 | 底部状态栏、语言选择、主题配色 | 小 |
| 5 | 快捷键系统 | 退出、清空、切换语言等 | 小 |
| 6 | 集成翻译 | 对接现有Translator、加载动画 | 中 |
**技术选型**:
- 优先使用 `charmbracelet/bubbletea` (Elm架构、Go生态最流行)
- 配合 `charmbracelet/lipgloss` 实现样式和主题
- 配合 `charmbracelet/bubbles/textinput` 实现输入框
**当前状态**: ✅ 模块1已完成模块2待实现
**关联文档**:
- [changelog.md#0.6.0](changelog.md#060)
---
### [2026-04-06 10:30] 版本 0.6.0 - 模块1: TUI框架搭建 (已完成)
**原因**: 实现TUI界面的第一步建立基础框架结构
**分析**:
- 需要创建基本的App结构和model
- 需要支持config和translator的注入
- 需要修复main.go中版本检查顺序问题
**解决方案**:
1. 创建 `internal/tui/app.go` 基础文件
2. 定义model结构体包含config和translator字段
3. 实现Init/Update/View三个基本方法
4. 添加bubbletea、bubbles、lipgloss依赖
5. 修复main.go中--version在interactive之前检查
**技术实现**:
```go
type model struct {
config *config.Config
translator *translator.Translator
}
func NewApp(cfg *config.Config, t *translator.Translator) *tea.Program {
return tea.NewProgram(model{...})
}
```
**下一步**: 实现模块2: 输入组件
**关联文档**:
- [changelog.md#0.6.0](changelog.md#060)