Implements empty state for remote repositories
What does this MR do and why?
A remote repository has no publish action. It fills only after its first pull from its upstream. The shared illustrated empty state offers publish steps, so it no longer fits a remote repository with no cached artifacts.
This MR keeps the artifact table visible for an empty remote repository, instead of switching to the illustrated empty state. The table shows its column headers and a single centered message row: "No packages have been cached yet." for Maven and npm repositories, or "No images have been cached yet." for Docker and OCI repositories. A hosted repository's empty state does not change.
The sidebar artifact counter on a remote repository now reads "Packages cached" / "Images cached" (and the singular form, "Package cached" / "Image cached"), instead of "Packages" / "Images". This counter reflects copies pulled from the upstream, not artifacts the repository owns, so the wording needed to match.
The trigger for the new empty state is the artifact connection's first page, not
the buffered artifactsCount field on the repository row. The sidebar stats
block already hides itself on an empty list through the existing hideStats
prop, so that block needed no change.
This MR implements Step 9 of the linked issue only. Step 4, which moves the setup instructions entry point out of the kebab menu into a header button, follows in a separate MR.
The entire change sits behind the default-off artifact_registry_ui feature flag.
References
- Issue: #627312 (closed)
- Parent epic: gitlab-org#22453
Screenshots or screen recordings
| Before | After (remote repositories) |
|---|---|
| Same as hosted | ![]() |
![]() |
|
![]() |
Screenshots are pending. The change sits behind the default-off artifact_registry_ui feature flag.
How to set up and validate locally
- Enable the
artifact_registry_uifeature flag. - Open the Artifact Registry repository list for an organization.
- Open a remote repository that has cached no artifacts.
- Confirm the artifact table shows its column headers and the "No packages have been cached yet." or "No images have been cached yet." message row, instead of the illustrated empty state.
- Confirm the sidebar counter reads "Packages cached" or "Images cached" (or the singular form when the count is 1).
- Open a hosted repository with no artifacts and confirm its empty state is unchanged.
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.
Notes on the checklist:
- No changelog entry: the feature flag
artifact_registry_uistays default off. - Jest specs added for
artifacts_section,artifacts_table, andrepository_sidebar, plus a newmockEmptyPackagePagefixture. - No documentation change: the Artifact Registry UI is not yet documented.
- No database, security, or migration surface: this is a frontend-only Vue change.
- Strings use
s__andn__for externalization;locale/gitlab.potis regenerated with the three new strings.


