Show user avatars in picker rows#559
Conversation
roborev: Combined Review (
|
Reviewer and assignee editors were falling back to initials even though the surrounding detail view already knows the provider host used for synced profile images. Reusing that host keeps the picker aligned with repo summary avatars while preserving initials for manual or unknown users. Validation: cd frontend && node ../node_modules/vite-plus/bin/vp test run --project unit src/lib/components/detail/UserPicker.test.ts src/lib/components/detail/UserListEditor.test.ts; node node_modules/vite-plus/bin/vp run frontend-package-check; node node_modules/vite-plus/bin/vp fmt --check frontend packages/ui '!frontend/dist/**' '!packages/ui/src/api/generated/**' '!frontend/test-results/**' '!packages/ui/test-results/**' --no-error-on-unmatched-pattern --threads=1 Generated with Codex Co-authored-by: Codex <codex@openai.com>
Profile images in the user picker can still fail at browser load time for accounts that do not expose a provider image or whose generated URL is not fetchable. Leaving the broken image in place made bot and service accounts harder to scan than the original initials fallback. Track failed avatar loads per username and return those rows to the existing initials presentation. Loaded user photos remain unchanged, and manual or unknown users still use initials immediately. Validation: cd frontend && node ../node_modules/vite-plus/bin/vp test run --project unit src/lib/components/detail/UserPicker.test.ts src/lib/components/detail/UserListEditor.test.ts; node node_modules/vite-plus/bin/vp run frontend-package-check; node node_modules/vite-plus/bin/vp run frontend-check; cd frontend && ../node_modules/.bin/svelte-check --tsconfig ./tsconfig.json --fail-on-warnings; node node_modules/vite-plus/bin/vp fmt --check frontend packages/ui '!frontend/dist/**' '!packages/ui/src/api/generated/**' '!frontend/test-results/**' '!packages/ui/test-results/**' --no-error-on-unmatched-pattern --threads=1; git diff --check. Live dev-ephemeral picker inspection showed failed roborev/renovate/github-advanced-security avatar URLs rendering initials while valid user images remained images. Note: svelte-mcp autofixer exited 1 with no output twice, so svelte-check via frontend-package-check was used for Svelte validation. Generated with Codex Co-authored-by: Codex <codex@openai.com>
User pickers were synthesizing GitHub-style avatar URLs from host and login for every provider. That breaks provider-collision and non-GitHub routes because a GitLab, Gitea, or Forgejo username is not guaranteed to resolve through https://{host}/{login}.png.
Until the API carries real provider avatar URLs, keep synthesized image URLs on GitHub routes only and let other providers use the existing initials fallback instead of issuing known-wrong image requests.
Validation: red/green Playwright coverage for the Gitea provider-collision picker fallback.
Generated with Codex
Co-authored-by: Codex <codex@openai.com>
GitLab client-go retries 429 and 5xx responses by default, which made httptest fixtures spend seconds in retry backoff and left CI-sensitive transient-error assertions dependent on the upstream retry loop. Keep production retries unchanged, but let GitLab tests opt out through the local test helper so fake upstream responses are observed exactly once and error propagation tests stay deterministic. Validation: go test ./internal/platform/gitlab -shuffle=on; patched PR merge checkout: go test ./internal/platform/gitlab -run TestClientListOpenMergeRequestsPropagatesTransientForkHeadRepoLookupFailures -shuffle=1781917566125672115; patched PR merge checkout: go test ./internal/platform/gitlab -shuffle=1781917566125672115. Full local gotestsum was attempted against the PR merge checkout; GitLab passed, but current main has separate macOS PTY/tmux local failures not present in the failing CI job. Generated with Codex Co-authored-by: Codex <codex@openai.com>
17747b4 to
3c7d13a
Compare
roborev: Review Unavailable (
|

Screenshot:
generated by a clanker