You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Use the GitLab project avatar as the automatic project icon
#16426
A GitLab-hosted project with no icon file in the repository falls back to a monogram, even though GitLab stores an avatar for every project. Many repositories (mobile apps, services, libraries) have no web favicon, so that avatar is often the only artwork the project has.
Proposal
Add one last step to automatic icon detection: if no local icon resolves and the repository is on GitLab, use the avatar set on that GitLab project.
Precedence is unchanged. A chosen icon, t3.jsoniconPath, well-known files and declared icons all win. The avatar only replaces the monogram.
No new setup. The image is fetched with glab api projects/:fullpath/avatar (GitLab 16.9+), reusing the existing GitLab CLI integration, so private and self-hosted instances work wherever glab is signed in. glab is never run for other hosts.
Cheap. Results are cached in the state directory and rechecked daily; failures retry after ten minutes.
Server-only. Web, desktop and mobile get it through the existing project-favicon asset route.
On the point raised in #8745: an icon can already be set by hand, but that is manual work for every project. Teams on GitLab already maintain this artwork, and it is project-specific, so it is a better default than a monogram.
Before / after
Same checkout of gitlab-org/cli (no icon file in the repository), on main and on the branch:
Before
After
Implementation
A working implementation is on akkrat/t3code feat/gitlab-project-avatar-icon: a cached GitLabProjectAvatarResolver service, a GitLabCli.getProjectAvatar method, the final fallback step in ProjectFaviconResolver, and the asset route accepting the cache directory. It has focused tests and was checked end to end against gitlab.com.
I can open a PR if the direction and scope work for you, and can put it behind a setting if you prefer it opt-in.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Problem
A GitLab-hosted project with no icon file in the repository falls back to a monogram, even though GitLab stores an avatar for every project. Many repositories (mobile apps, services, libraries) have no web favicon, so that avatar is often the only artwork the project has.
Proposal
Add one last step to automatic icon detection: if no local icon resolves and the repository is on GitLab, use the avatar set on that GitLab project.
t3.jsoniconPath, well-known files and declared icons all win. The avatar only replaces the monogram.glab api projects/:fullpath/avatar(GitLab 16.9+), reusing the existing GitLab CLI integration, so private and self-hosted instances work whereverglabis signed in.glabis never run for other hosts.On the point raised in #8745: an icon can already be set by hand, but that is manual work for every project. Teams on GitLab already maintain this artwork, and it is project-specific, so it is a better default than a monogram.
Before / after
Same checkout of
gitlab-org/cli(no icon file in the repository), onmainand on the branch:Implementation
A working implementation is on akkrat/t3code
feat/gitlab-project-avatar-icon: a cachedGitLabProjectAvatarResolverservice, aGitLabCli.getProjectAvatarmethod, the final fallback step inProjectFaviconResolver, and the asset route accepting the cache directory. It has focused tests and was checked end to end against gitlab.com.I can open a PR if the direction and scope work for you, and can put it behind a setting if you prefer it opt-in.
Implemented with Claude Opus 5.5 in Claude Code.
All reactions