diff --git a/crates/fff-mcp/src/output.rs b/crates/fff-mcp/src/output.rs index 21ba7ecc..e9265a58 100644 --- a/crates/fff-mcp/src/output.rs +++ b/crates/fff-mcp/src/output.rs @@ -21,9 +21,11 @@ fn frecency_word(score: i32) -> Option<&'static str> { } pub fn file_suffix(git_status: Option, frecency_score: i32) -> String { + // `clean` is the default state of nearly every file: annotating it burns + // context without adding signal. Only exceptional git state is surfaced. match ( frecency_word(frecency_score), - format_git_status_opt(git_status), + format_git_status_opt(git_status).filter(|status| *status != "clean"), ) { (Some(f), Some(g)) => format!(" - {f} git:{g}"), (Some(f), None) => format!(" - {f}"), @@ -545,6 +547,27 @@ fn collect_file_preview<'a>( mod tests { use super::*; + #[test] + fn suffix_omits_clean_git_status() { + assert_eq!(file_suffix(None, 0), ""); + assert_eq!(file_suffix(Some(git2::Status::CURRENT), 0), ""); + assert_eq!(file_suffix(Some(git2::Status::empty()), 0), ""); + assert_eq!(file_suffix(None, 120), " - hot"); + } + + #[test] + fn suffix_keeps_dirty_git_status() { + assert_eq!( + file_suffix(Some(git2::Status::WT_MODIFIED), 0), + " git:modified" + ); + assert_eq!(file_suffix(Some(git2::Status::WT_NEW), 0), " git:untracked"); + assert_eq!( + file_suffix(Some(git2::Status::INDEX_MODIFIED), 60), + " - warm git:staged_modified" + ); + } + #[test] fn trunc_strips_trailing_whitespace() { // Leading whitespace is now stripped by core's trim_whitespace option.