[BUG] Pending managed-file status omits filenames containing spaces or Chinese characters
What version of eigent are you using?
Reproduced on v1.0.4, commit 6bb55842f73766f7b219aa5ef5bcf5965f3acdaa. The same parser is still present on current main bde88812dde35f3c29acf50756e7da4a46c663ba (checked September 14).
System information
macOS 26.5.2, Python 3.11.15, Git 2.50.1. Reproduced using the backend services and temporary Git repositories.
Problem description
After checkpointing my report.md or 报告.md, subsequent edits are missing from ContentRepositoryService.status(...).pending_managed_paths.
- Initialize a repository through
ContentRepositoryService.bootstrap. - Create
my report.mdand checkpoint it throughContentRepositoryService.checkpoint. - Change its contents and call
ContentRepositoryService.status.
Expected: pending_managed_paths == ("my report.md",).
Actual: pending_managed_paths == (), although Git reports the modification. The same happens with 报告.md.
log
The same nine real-Git regression cases were run against upstream and the proposed fix:
Upstream 6bb5584: 8 failed, 1 passed, 12 deselected
Proposed fix 3061388: 9 passed, 12 deselected
Patched service reproduction:
Edited 'my report.md': pending managed paths = ('my report.md',)
Edited '报告.md': pending managed paths = ('报告.md',)The patch and draft are AI-assisted. I reviewed the code and reran the verification locally: both service reproductions succeeded and all nine regression cases passed.
Additional context
GitBackend.path_status uses newline-delimited porcelain output and retains Git's quoted filename representation. Its keys therefore fail to match the actual managed paths.
The prepared fix uses git status --porcelain=v1 -z, explicit UTF-8 decoding, and consumes the extra source record for renames/copies. It changes one production file and adds parser and service regression tests.
Would this focused fix be welcome? I would like to confirm the scope before opening a PR.
Source: eigent-ai/eigent