fix: report 'no_git_repo' instead of 'clean' when not in git (#125)

status/doctor JSON now reports git_state:'no_git_repo' when
project_root is None, instead of the misleading 'clean' which
implied a git repo was present with zero changes.

Generated with https://github.com/Yeachan-Heo/gajae-code
Co-authored-by: Gajae Code <dev@gajae-code.com>
This commit is contained in:
bellman
2026-06-05 05:34:56 +09:00
parent b8f066347b
commit e84f7c8034

View File

@@ -4268,7 +4268,14 @@ fn check_workspace_health(context: &StatusContext) -> DiagnosticCheck {
"Git branch {}", "Git branch {}",
context.git_branch.as_deref().unwrap_or("unknown") context.git_branch.as_deref().unwrap_or("unknown")
), ),
format!("Git state {}", context.git_summary.headline()), format!(
"Git state {}",
if context.project_root.is_some() {
context.git_summary.headline()
} else {
"no git repo".to_string()
}
),
format!("Changed files {}", context.git_summary.changed_files), format!("Changed files {}", context.git_summary.changed_files),
format!( format!(
"Memory files {} · config files loaded {}/{}", "Memory files {} · config files loaded {}/{}",
@@ -4305,7 +4312,11 @@ fn check_workspace_health(context: &StatusContext) -> DiagnosticCheck {
("git_branch".to_string(), json!(context.git_branch)), ("git_branch".to_string(), json!(context.git_branch)),
( (
"git_state".to_string(), "git_state".to_string(),
json!(context.git_summary.headline()), json!(if context.project_root.is_some() {
context.git_summary.headline()
} else {
"no_git_repo".to_string()
}),
), ),
( (
"changed_files".to_string(), "changed_files".to_string(),
@@ -9407,7 +9418,7 @@ fn status_json_value(
"cwd": context.cwd, "cwd": context.cwd,
"project_root": context.project_root, "project_root": context.project_root,
"git_branch": context.git_branch, "git_branch": context.git_branch,
"git_state": context.git_summary.headline(), "git_state": if context.project_root.is_some() { context.git_summary.headline() } else { "no_git_repo".to_string() },
// #408: changed_files counts ALL non-clean files (staged + unstaged + untracked + conflicted) // #408: changed_files counts ALL non-clean files (staged + unstaged + untracked + conflicted)
"changed_files": context.git_summary.changed_files, "changed_files": context.git_summary.changed_files,
"is_clean": context.git_summary.changed_files == 0, "is_clean": context.git_summary.changed_files == 0,
@@ -9654,7 +9665,11 @@ fn format_status_report(
.as_ref() .as_ref()
.map_or_else(|| "unknown".to_string(), |path| path.display().to_string()), .map_or_else(|| "unknown".to_string(), |path| path.display().to_string()),
context.git_branch.as_deref().unwrap_or("unknown"), context.git_branch.as_deref().unwrap_or("unknown"),
context.git_summary.headline(), if context.project_root.is_some() {
context.git_summary.headline()
} else {
"no_git_repo".to_string()
},
context.git_summary.changed_files, context.git_summary.changed_files,
context.git_summary.staged_files, context.git_summary.staged_files,
context.git_summary.unstaged_files, context.git_summary.unstaged_files,