Display icon/badge alongside container registry tags that point to manifest lists/indexes
Context
Part of Improve container registry multi-architecture i... (&11952).
"Atomic" (not an official term, but helps describing them) container images are individual, self-contained units that include everything needed to run a container, namely a manifest (think of it as a recipe with all individual pieces of data that make up an image) the filesystem layers and configuration metadata. They are straightforward and suitable for a specific environment/platform.
In contrast, manifest lists (or indexes) are collections of references to multiple container images, each optimized for different platforms or architectures (like Windows, Linux, ARM, etc.). This allows a single container reference to dynamically point to the appropriate image based on the user's platform, making it easier to support diverse environments with a single reference.
Right now, we don't have any visual distinction between manifest lists/indexes (less common) and "atomic" manifests (most common) when listing tags in the UI. Images based on manifest lists/indexes (e.g., multi-architecture images) have a distinct set of attributes, which we aim to expose in #408873 and #369852. Therefore, giving users a visual clue into what images have these distinctive attributes is beneficial for discoverability purposes.
This enhancement will allow users to quickly identify whether an image is an "atomic" image or a multi-platform manifest list/index at a glance, improving clarity and discoverability.
Task
Using the below screenshot from https://gitlab.com/jdrpereira/multi-arch/container_registry/1245177...
... and knowing that tag 1.0.0
points to a manifest list/index, we should probably add some unique icon/badge alongside the name (?) of these tags so that it's easy for users to spot the ones that are regular images or lists/indexes (among which multi-arch images are the most common). Something like this:
Implementation
On the frontend, it's possible to know that a tag points to a list/index if its media_type
(part of the updated Rails API response that will come out of #411387 (closed), which in turn is mapped from the List Repository Tags
response from the registry) is one of application/vnd.docker.distribution.manifest.list.v2+json
(Docker) or application/vnd.oci.image.index.v1+json
(OCI).
Ideally we'd avoid using a text badge with List
or Index
, as we have two possible terms for the same thing. So a generic icon instead of a text badge would be ideal IMO.