mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-21 21:03:56 +00:00
fix(coding-agent): footer git branch not updating after external branch switches
Git uses atomic writes (temp file + rename) which changes the inode. fs.watch on a file stops working after the inode changes. Now watches the directory containing HEAD and filters for HEAD changes.
This commit is contained in:
parent
e4f1c0bb4d
commit
c997305685
2 changed files with 11 additions and 3 deletions
|
|
@ -23,6 +23,7 @@
|
||||||
|
|
||||||
- Session picker respects custom keybindings when using `--resume` ([#633](https://github.com/badlogic/pi-mono/pull/633) by [@aos](https://github.com/aos))
|
- Session picker respects custom keybindings when using `--resume` ([#633](https://github.com/badlogic/pi-mono/pull/633) by [@aos](https://github.com/aos))
|
||||||
- Custom footer extensions now see model changes: `ctx.model` is now a getter that returns the current model instead of a snapshot from when the context was created ([#634](https://github.com/badlogic/pi-mono/pull/634) by [@ogulcancelik](https://github.com/ogulcancelik))
|
- Custom footer extensions now see model changes: `ctx.model` is now a getter that returns the current model instead of a snapshot from when the context was created ([#634](https://github.com/badlogic/pi-mono/pull/634) by [@ogulcancelik](https://github.com/ogulcancelik))
|
||||||
|
- Footer git branch not updating after external branch switches. Git uses atomic writes (temp file + rename), which changes the inode and breaks `fs.watch` on the file. Now watches the directory instead.
|
||||||
- Extension loading errors are now displayed to the user instead of being silently ignored ([#639](https://github.com/badlogic/pi-mono/pull/639) by [@aliou](https://github.com/aliou))
|
- Extension loading errors are now displayed to the user instead of being silently ignored ([#639](https://github.com/badlogic/pi-mono/pull/639) by [@aliou](https://github.com/aliou))
|
||||||
|
|
||||||
## [0.42.5] - 2026-01-11
|
## [0.42.5] - 2026-01-11
|
||||||
|
|
|
||||||
|
|
@ -103,10 +103,17 @@ export class FooterDataProvider {
|
||||||
const gitHeadPath = findGitHeadPath();
|
const gitHeadPath = findGitHeadPath();
|
||||||
if (!gitHeadPath) return;
|
if (!gitHeadPath) return;
|
||||||
|
|
||||||
|
// Watch the directory containing HEAD, not HEAD itself.
|
||||||
|
// Git uses atomic writes (write temp, rename over HEAD), which changes the inode.
|
||||||
|
// fs.watch on a file stops working after the inode changes.
|
||||||
|
const gitDir = dirname(gitHeadPath);
|
||||||
|
|
||||||
try {
|
try {
|
||||||
this.gitWatcher = watch(gitHeadPath, () => {
|
this.gitWatcher = watch(gitDir, (_eventType, filename) => {
|
||||||
|
if (filename === "HEAD") {
|
||||||
this.cachedBranch = undefined;
|
this.cachedBranch = undefined;
|
||||||
for (const cb of this.branchChangeCallbacks) cb();
|
for (const cb of this.branchChangeCallbacks) cb();
|
||||||
|
}
|
||||||
});
|
});
|
||||||
} catch {
|
} catch {
|
||||||
// Silently fail if we can't watch
|
// Silently fail if we can't watch
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue