feat: 修复配置路径BUG并迁移onboard到huh
All checks were successful
Release / build (push) Successful in 12m14s
All checks were successful
Release / build (push) Successful in 12m14s
- 新增路径解析工具 internal/config/path.go - 配置查找优先级: --config > ~/.config/yoyo/config.yaml > ./configs/config.yaml - onboard配置保存到 ~/.config/yoyo/config.yaml (符合XDG规范) - .env文件从 ~/.config/yoyo/.env 加载 - onboard使用huh替代survey库,更现代的交互体验 - 添加Ctrl+C取消支持,打印'你已取消本次配置' - 保存前增加确认步骤 - 版本号 v0.5.1 -> v1.1.0
This commit is contained in:
39
taolun.md
39
taolun.md
@@ -794,4 +794,41 @@ ta.SetHeight(5) // 固定高度,不动态调整
|
||||
- 遵循语义化版本:主版本.次版本.修订版本
|
||||
- beta版使用 `-beta` 后缀
|
||||
|
||||
**关联版本**: [changelog.md#1.0.0-beta](changelog.md#100-beta-2026-04-07)
|
||||
**关联版本**: [changelog.md#1.0.0-beta](changelog.md#100-beta-2026-04-07)
|
||||
|
||||
---
|
||||
|
||||
### [2026-04-07] 版本 1.1.0 - 配置路径修复和huh迁移
|
||||
|
||||
**原因**:
|
||||
1. 管道模式下(如 `cd /docs && cat readme.md | yoyo`)找不到配置文件
|
||||
2. onboard配置保存到错误的相对路径
|
||||
3. 希望用 `charmbracelet/huh` 替代 `survey` 获得更好的UX
|
||||
|
||||
**分析**:
|
||||
- 所有配置路径硬编码为 `configs/config.yaml`(相对CWD)
|
||||
- 从不同目录运行程序时路径解析失败
|
||||
- survey库API较老,huh提供更现代的表单体验
|
||||
|
||||
**解决方案**:
|
||||
1. 新增 `internal/config/path.go` 路径解析工具
|
||||
2. 配置查找优先级:`--config` > `~/.config/yoyo/config.yaml` > `./configs/config.yaml`
|
||||
3. onboard保存到 `~/.config/yoyo/config.yaml`
|
||||
4. .env从 `~/.config/yoyo/.env` 加载
|
||||
5. onboard使用huh重写:Form+Group模式,链式API,泛型支持
|
||||
|
||||
**技术细节**:
|
||||
```go
|
||||
// 路径解析
|
||||
config.ResolveConfigPath(userPath) // 智能查找配置
|
||||
config.GetUserConfigPath() // ~/.config/yoyo/config.yaml
|
||||
config.GetUserEnvPath() // ~/.config/yoyo/.env
|
||||
```
|
||||
|
||||
**huh迁移要点**:
|
||||
- `survey.Select` → `huh.NewSelect[string]().Options(huh.NewOption(...)...)`
|
||||
- `survey.Input` → `huh.NewInput().Value(&var).Validate(fn)`
|
||||
- `survey.Confirm` → `huh.NewConfirm().Affirmative("是").Negative("否")`
|
||||
- 分步表单 → `huh.NewForm(huh.NewGroup(...), huh.NewGroup(...))`
|
||||
|
||||
**关联版本**: [changelog.md#1.1.0](changelog.md#110-2026-04-07)
|
||||
Reference in New Issue
Block a user