project menu: a failed owner avatar is retried after a minute, not kept for the run
Leo-ask: ask-0ab93f41d1
Leo, on the composer's project and machine menus (2026-10-28): "For these left two dropdowns, we want to make it not cover the, you know, not open upwards ... why are there so many default icons? ... it's just not cohesive."
What base already does since the ask:
- The menus open away from the chat (#27956,
sideAwayFromChat). - The project menu has one icon column and one text inset (#28590), worktrees fold under their repo (#28747), each remote machine has its own colored computer (#31108), and the environment menu shows This Mac and Cloud, one line each (#28999, #29891).
This PR fixes the remaining "default icons" case. In Leo's screenshot, cmux and cmuxterm-hq (manaflow-ai repos) show the plain folder while leo-workspace shows its owner's avatar. AgentPaneOwnerAvatars kept a failed fetch as nil for the whole app run. So one miss (offline at launch, the 5 s timeout) left every repository of that owner on the folder until relaunch. Now a failure is kept for 60 s (retryAfter), and the next menu open asks again. The page already re-asks on an empty answer (projectIcon.ts).
Regression test: AgentPaneProjectRepoTests/aFailedAvatarIsFetchedAgainAfterAMinute (committed first in 328dc055574, red on old code: the second fetch never happens).
Observed / Not run
- Ran: the prepush gate (no new violations). Checked that
https://github.com/manaflow-ai.png?size=64answers 302 ā 200 image/png, so the org's avatar URL works. - Not run: the Swift suite red/green. This lane VM has no fleet key for
cmux-ci run; the PR's CI runs it. Leo's Mac wasn't reachable from here, so the cause of the folder icons in his screenshot is inferred from the code, not read from his caches.
Changelog
Fixed: project menu icons come back after a failed avatar fetch instead of staying on the folder until relaunch.
Agent session: agent session
š¤ Generated with Claude Code
![View with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/view-with-codesmith-dark-v3-3x.png)
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Failed owner avatar fetches in the project menu are retried after a minute instead of keeping the default folder icon for the rest of the app run. Before, one miss (for example, offline at launch or the 5-second timeout) left every repository of that owner on the plain folder until relaunch; now the next menu open at least 60 seconds later asks for the avatar again.