a69d4ef700
The "Changes" panel was empty for multi-repo tasks because the agent's workspace path is the task root — a plain holder directory that holds one git worktree per repository as siblings. The workspace tracker tried to run git commands against that bare root and silently failed, so no git status updates ever reached the UI. The tracker now detects this at construction: when the configured workDir isn't itself a git repo, it falls back to the first immediate child directory that is. The user gets the primary repo's changes in the panel; cross-repo aggregation is a follow-up. - preferGitRepoChildIfRootIsBare scans os.ReadDir entries (skipping hidden / non-directory entries) and returns the first that has a valid git index. Logs an info line when the rewrite happens so it's visible in the agentctl log. - Repo-less tasks (e.g. quick chat) and single-repo tasks keep their previous behavior verbatim — the fallback only fires when the root itself fails resolveGitIndexPath. - Tests cover: fallback when the workdir is a multi-repo holder, no-fallback for a real git repo, no-fallback when no git child exists. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>