Add the Last downloaded column to a remote artifact table

What does this MR do and why?

This MR gives the artifact table a kind dimension, so a remote repository's table shows what a cache can actually tell you and nothing it cannot.

  • A Last downloaded column on every format, dating the last pull of the cached copy. A null renders blank, not a zero date.
  • No Versions column on any remote format. No remote artifact read supplies a count to render in one.
  • Remote rows are not links, permanently. Artifact Registry serves the version list for hosted repositories alone, so the page a row would open does not exist for a cache. This is not a sequencing gap waiting on a later slice.
  • Hosted tables are unchanged — the name link and the Versions column both survive, and there is a regression case per format asserting it.

The columns run over the local Apollo layer, so typedefs.graphql declares the field on the three element types and mock_artifacts.js seeds both set and null values. That is what makes the blank cell observable in a browser before the server field lands.

References

Work item: gitlab-org#22453

Merge order

Depends on !251268 (merged) (the remote header upstream URL), which this branch is stacked on and which this MR targets. GitLab retargets this to master automatically once !251268 (merged) merges.

Screenshots or screen recordings

Not captured in this MR. The states are exercised by the Storybook stories the change updates — RemoteRepository (Maven) and the new RemoteContainerRepository, which pairs a dated row with a never-pulled one so the blank cell reads against a populated one.

How to set up and validate locally

  1. Enable the feature flag in the rails console:

    Feature.enable(:artifact_registry_ui)
  2. Visit an organization's Artifact Registry and open a remote repository's detail page.

  3. The table shows Package (maven, npm) or Image (docker, oci), plus Last downloaded. There is no Versions column.

  4. Every third artifact has never been pulled: its Last downloaded cell is empty rather than showing an epoch date.

  5. Click a row's name — nothing happens, and it does not render as a link.

  6. Open a hosted repository and confirm the name still links to the version list and the npm Versions column is still there.

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.

Behind the artifact_registry_ui feature flag, which is disabled, so there is no changelog entry.

Related to gitlab-org#22453

Edited by Rahul Chanila

Merge request reports

Loading
Loading