Repository navigation
feat(desktop): separate Git review empty and error states #5940
Description
English
Problem
Opening the Desktop Changes tab for a task in a valid non-Git directory shows a red “The current task directory is not a Git repository” error with Retry. Retrying cannot make that directory a repository. This is common for newly installed, projectless use, and remains possible after fixing default task directories.
The panel is intentionally Git-only. A valid non-Git workspace is an expected capability state; an unavailable workspace and a failed Git read require different actions.
Desired outcome
- For a valid non-Git directory, show a neutral explanation that Changes requires a Git repository, display the current task directory, and provide an explicit next action.
- For a missing or inaccessible workspace, show recovery guidance. Any recovery action must target the current task through the existing supported authority. If only creating a new task is available, label that action clearly.
- For a Git read failure, retain actionable error details and Retry against the current task. Retrying after recovery should refresh its actual workspace.
- Keep “no differences” distinct from non-Git, workspace-unavailable, and Git-read-failed states.
- Make action targets explicit: current-task recovery, new task, and application default selection must not be presented as interchangeable.
Alternatives or workarounds
Select a Git repository and create a task there, or inspect Git from the terminal. Paseo and Synara distinguish non-Git states from failures; OpenCode offers Git setup guidance; Reasonix separates task changes from Git availability. These inform the interaction, without requiring a non-Git diff implementation.
Existing work and scope
Merged PR #2610 made the Changes panel Git-authoritative and removed its non-Git fallback. This issue preserves that scope and adjusts unavailable-state interaction. Issue #5119 / merged PR #5120 cover comparison-base selection, not these states.
Open issue #5551 already tracks a recovery picker that opens a new task instead of repairing an unavailable imported session. Reuse that current-task recovery work; this issue owns the Changes-tab entry point and accurate action wording, not a second relocation mechanism.
Automatic Git initialization, non-Git task snapshots, and default-directory allocation are outside this issue.
Acceptance criteria
- A valid non-Git task directory shows neutral guidance without a misleading Retry action.
- Workspace unavailable, Git read failed, and repository with no differences each have distinct copy and actions.
- Directory guidance shows the current task's workspace rather than the application default.
- Current-task recovery preserves the task identity and supported relocation safeguards; new-task actions are explicitly labeled.
- Git failures can be retried and recovery refreshes the correct task; failures are not silently converted to empty results.
- The four states have focused UI verification, including a projectless packaged-app scenario and an existing task whose directory becomes unavailable.
中文
问题
在有效的非 Git 目录中运行任务,打开 Desktop「变更」tab 会看到红色“当前任务目录不是 Git 仓库”错误及重试按钮。重试无法让该目录变成仓库。新装后未选择项目时常见这个问题;修复默认任务目录后,这种情况仍可能出现。
该面板按设计只提供 Git 功能。有效的非 Git 工作区属于正常的功能不可用状态;工作区不可用和 Git 读取失败需要不同的处理操作。
期望结果
- 对有效的非 Git 目录,以中性提示说明「变更」需要 Git 仓库,显示当前任务目录,并提供明确的下一步操作。
- 对丢失或无法访问的工作区,提供恢复引导。恢复操作必须通过现有受支持机制作用于当前任务;如果只能新建任务,应明确标注。
- 对 Git 读取失败,保留可用于处理的错误信息及针对当前任务的重试。恢复后重试应刷新该任务实际绑定的工作区。
- “没有差异”与非 Git、工作区不可用、Git 读取失败分别呈现。
- 明确操作对象:恢复当前任务、新建任务和选择应用默认项目不能作为等价操作呈现。
替代方案或变通
选择 Git 仓库并在其中新建任务,或在终端检查 Git。Paseo 和 Synara 区分非 Git 状态与失败;OpenCode 提供 Git 设置引导;Reasonix 将任务变更与 Git 可用性分开。这些用于参考交互,不要求实现非 Git 差异功能。
已有工作与范围
已合并的 PR #2610 将「变更」面板改为以 Git 为依据,并移除了非 Git 降级。本 issue 保留其范围,调整不可用状态的交互。Issue #5119 / 已合并 PR #5120 处理比较基线选择,不处理这些状态。
开放中的 issue #5551 已跟踪工作区恢复选择器打开新任务、未修复不可用导入会话的问题。复用这项当前任务恢复工作;本 issue 负责「变更」tab 的入口与准确操作文案,不建立第二套迁移机制。
自动初始化 Git、非 Git 任务快照和默认目录分配不在本 issue 范围内。
验收标准
- 有效的非 Git 任务目录显示中性引导,不提供会误导用户的重试操作。
- 工作区不可用、Git 读取失败、仓库没有差异分别具有不同文案和操作。
- 目录引导显示当前任务的工作区,而不是应用默认目录。
- 当前任务恢复保留任务身份及受支持迁移的安全检查;新建任务操作明确标注。
- Git 失败可以重试,恢复后刷新正确任务;失败不被静默转为空结果。
- 针对四种状态完成界面验证,包括安装包无项目场景,以及已有任务目录变得不可用的场景。
Activity
[-]fix(desktop): separate Git review empty and error states[/-][+]feat(desktop): separate Git review empty and error states[/+]ggbdpq commentedon Oct 4, 2026
take
github-actions commentedon Oct 4, 2026
Issue #5940 is already assigned to Colafornia, so it was not reassigned.
feat(desktop): separate Git review empty and error states
feat(desktop): separate Git review empty and error states
feat(desktop): separate Git review empty and error states
feat(desktop): separate Git review empty and error states
fix(desktop): address Git review feedback
refactor(desktop): scope workspace recovery to the React tree
refactor(desktop): scope workspace recovery to the React tree
feat(desktop): separate Git review empty and error states (#5967)