feat: 修复配置路径BUG并迁移onboard到huh
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:
2026-04-07 23:51:33 +08:00
parent 21e4710829
commit c0156a88d6
7 changed files with 326 additions and 232 deletions

View File

@@ -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)