-
以手动保存/回滚为核心
- 绝大多数玩家只需要“备份 + 回滚”,分支仅在明确需要时手动创建与切换。
- 所有危险操作(回滚/切换/创建路线)必须显式确认。
-
稳定性优先
- 保存前执行存档稳定性检测,避免保存到未完成写入的存档。
- 提供“强制保存”通道,允许用户在确有需要时跳过检测。
-
取消自动化分支与自动保存
- 暂不实现自动分支检测与自动保存触发逻辑。
- UI 仅展示配置占位信息,不触发后台保存任务。
routes: 对应Git2Core::list_routes(),仅用于手动切换/创建。history:Git2Core::get_history()的结果,用于回滚选择。status:Git2Core::get_status()输出,用于脏工作区判断与提示。recovery_routes: 仅在恢复模式使用的“丢弃快照”路线列表。focus: 当前操作焦点(路线列表或历史列表)。confirm: 统一的确认弹窗,支持“保存/丢弃/取消”等多选项。
┌───────────────────────────────────────────────────────────┐
│ Header: 路径 / 当前路线 / 提示 │
├───────────────┬───────────────────────────────────────────┤
│ Routes Panel │ History Panel │
│ (40%) │ (60% 上半区) │
├───────────────┼───────────────────────────────────────────┤
│ Status Panel │ 右侧状态与脏文件详情 │
└───────────────┴───────────────────────────────────────────┘
说明:以下为规划行为,具体实现会分阶段落地。
| 键 | 行为(规划) |
|---|---|
q |
退出 TUI |
r |
强制刷新数据 |
Tab |
切换焦点(路线 ↔ 历史) |
↑ / k |
焦点面板上移 |
↓ / j |
焦点面板下移 |
PageUp |
历史列表快速上移 |
PageDown |
历史列表快速下移 |
s |
稳定保存(执行存档稳定性检测) |
S |
强制保存(跳过稳定性检测) |
m |
修改最新存档描述(仅 HEAD) |
l |
回滚选中存档(仅当前路线可回滚;需输入新路线名;脏工作区弹出“保存/丢弃/取消”) |
L |
强制回滚(仅当前路线可回滚;需输入新路线名;显式确认后丢弃更改) |
c |
创建路线(要求工作区干净) |
C |
创建并切换路线(要求工作区干净) |
n |
重命名选中路线 |
x |
切换路线(要求工作区干净) |
X |
强制切换路线(显式确认后丢弃更改) |
R |
进入恢复模式(仅显示“丢弃快照”路线) |
d |
丢弃当前未保存更改(硬重置 + 清理未跟踪文件,需确认;并记录丢弃快照) |
- “保存/丢弃/取消”的确认弹窗只在脏工作区触发。
- 任何会覆盖工作区的动作都必须二次确认。
- 所有成功/失败信息统一进入通知区。
- 回滚永远在新路线执行,避免原路线历史被覆盖。
- 在 Routes 中浏览非当前路线时,History 仅预览最新提交且不显示选中光标;Status 显示“非当前路线”提示并锁定回滚操作。
- 丢弃操作会创建“丢弃快照”,仅在恢复模式列表中可见。
- 稳定性检测可配置:例如稳定窗口时长、最大重试次数。
- 安全回滚提示:显示目标存档的时间与标签,减少误操作。
- 标签快捷键:支持快速为当前存档打标(规划中)。