Skip to content

Latest commit

 

History

History
78 lines (63 loc) · 4.85 KB

File metadata and controls

78 lines (63 loc) · 4.85 KB

Gitsave TUI 设计草案

设计目标

  1. 以手动保存/回滚为核心

    • 绝大多数玩家只需要“备份 + 回滚”,分支仅在明确需要时手动创建与切换。
    • 所有危险操作(回滚/切换/创建路线)必须显式确认。
  2. 稳定性优先

    • 保存前执行存档稳定性检测,避免保存到未完成写入的存档。
    • 提供“强制保存”通道,允许用户在确有需要时跳过检测。
  3. 取消自动化分支与自动保存

    • 暂不实现自动分支检测与自动保存触发逻辑。
    • 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 显示“非当前路线”提示并锁定回滚操作。
  • 丢弃操作会创建“丢弃快照”,仅在恢复模式列表中可见。

后续扩展

  1. 稳定性检测可配置:例如稳定窗口时长、最大重试次数。
  2. 安全回滚提示:显示目标存档的时间与标签,减少误操作。
  3. 标签快捷键:支持快速为当前存档打标(规划中)。