land: bash-changed-files

Merged
AF
1d ago
+3932-18

Accepted agent delivery; branch-keyed search descriptor included.


Summary by cubic

Adds optional watcher-observed file change reports to bash commands. Set bash.changed_files to list or diff in your user config (default off); diff mode uses clean git before-images with bounded output, and a bounded watcher flush covers last-moment writes.

  • Projects can turn the feature off but cannot enable it.
  • Reports ride through foreground results and background completion notices, including new remote tasks, without changing shell arguments; restart replay registers without a capture.
  • Output is capped (40 files, 200 diff lines, 64 KB report); overflow and flush timeouts are disclosed rather than silently omitted.
  • Rendering is bounded by the caller's reply deadline, with Git root/HEAD discovery and status sharing one capture budget; exhaustion or expiry falls back from diffs to paths, watcher exclusions apply before journaling, and directory renames are reported as incomplete.
  • Diff reads use the no-follow, verified-read path from file.read_exact; denied or unverifiable files stay listed without content, and path rows reserve report space before diff content.
  • Git comparisons normalize changed paths and Git roots on comparison copies only, so native Windows spellings resolve without altering stored paths or read authorization.

RetriggerView in GreptileConfidence Score: 5/5

The PR appears safe to merge; no new blocking issue was found.

Summary

Adds optional watcher-based file reports to shell results and background completion notices.

  • Bash commands can return a report of project files changed while they run.
  • Changed-file reports travel with Bash replies and completion notices.
  • The file watcher confirms recent events before Bash reports its changes.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart LR
  A[User enables file reports] --> B[Capture Git state and watcher position]
  B --> C[Run shell command]
  C --> D[Wait briefly for watcher]
  D --> E[Build bounded path list]
  E --> F[Add permitted diffs within remaining budget]
  F --> G[Foreground result or background notice]

Reviews (5) · Last reviewed commit: "mason: reduce bounded Git capture startu..." · Reviewed by Greptile