feat(FR-70): display private tag in Environment page for private images#6227
feat(FR-70): display private tag in Environment page for private images#6227
Conversation
How to use the Graphite Merge QueueAdd either label to this PR to merge it via the merge queue:
You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has required the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. This stack of pull requests is managed by Graphite. Learn more about stacking. |
Coverage report for
|
St.❔ |
Category | Percentage | Covered / Total |
|---|---|---|---|
| 🔴 | Statements | 8.12% (+0% 🔼) |
1403/17278 |
| 🔴 | Branches | 7.32% (+0% 🔼) |
883/12068 |
| 🔴 | Functions | 5.34% (+0% 🔼) |
258/4833 |
| 🔴 | Lines | 7.82% (+0% 🔼) |
1316/16832 |
Show new covered files 🐣
St.❔ |
File | Statements | Branches | Functions | Lines |
|---|---|---|---|---|---|
| 🔴 | helper/image.ts | 0% | 0% | 0% | 0% |
Test suite run success
773 tests passing in 36 suites.
Report generated by 🧪jest coverage report action from 0561e78
ad11295 to
0561e78
Compare
There was a problem hiding this comment.
Pull request overview
Adds a visual indicator in the Environment page image list to help admins identify images that are marked as private (via ai.backend.features containing private), addressing the confusion where such images can be installed but not selectable in “new session” flows.
Changes:
- Display a red “Private” tag in the Environment page image list status column when an image is labeled as private.
- Add
environment.Privatei18n string across all supported (21) locale JSON files.
Reviewed changes
Copilot reviewed 24 out of 24 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| react/src/components/ImageList.tsx | Adds private-image detection and renders a red “Private” tag next to Installed/Installing status tags. |
| resources/i18n/en.json | Adds environment.Private translation. |
| resources/i18n/de.json | Adds environment.Private translation. |
| resources/i18n/el.json | Adds environment.Private translation. |
| resources/i18n/es.json | Adds environment.Private translation. |
| resources/i18n/fi.json | Adds environment.Private translation. |
| resources/i18n/fr.json | Adds environment.Private translation. |
| resources/i18n/id.json | Adds environment.Private translation. |
| resources/i18n/it.json | Adds environment.Private translation. |
| resources/i18n/ja.json | Adds environment.Private translation. |
| resources/i18n/ko.json | Adds environment.Private translation. |
| resources/i18n/mn.json | Adds environment.Private translation. |
| resources/i18n/ms.json | Adds environment.Private translation. |
| resources/i18n/pl.json | Adds environment.Private translation. |
| resources/i18n/pt-BR.json | Adds environment.Private translation. |
| resources/i18n/pt.json | Adds environment.Private translation. |
| resources/i18n/ru.json | Adds environment.Private translation. |
| resources/i18n/th.json | Adds environment.Private translation. |
| resources/i18n/tr.json | Adds environment.Private translation. |
| resources/i18n/vi.json | Adds environment.Private translation. |
| resources/i18n/zh-CN.json | Adds environment.Private translation. |
| resources/i18n/zh-TW.json | Adds environment.Private translation. |
Comments suppressed due to low confidence (1)
react/src/components/ImageList.tsx:55
isPrivateImage()duplicates the same private-image detection logic already defined inImageEnvironmentSelectFormItems.tsx. To avoid future drift (e.g., if the label parsing rules change), consider extracting this into a shared helper (e.g., inreact/src/helperor a smallimageLabelsutility) and reusing it from both components.
const ImageList: React.FC<{ style?: React.CSSProperties }> = ({ style }) => {
'use memo';
const { t } = useTranslation();
const [selectedRows, setSelectedRows] = useState<EnvironmentImage[]>([]);
const [, { tagAlias }] = useBackendAIImageMetaData();
const { token } = theme.useToken();

Resolves #2221(FR-70)
Summary
Tagcomponent) next to the status column in the Environment page's image list for images that have theai.backend.featureslabel containingprivateisPrivateImageutility toreact/src/helper/image.ts(previously duplicated inImageEnvironmentSelectFormItems.tsx)environment.Privatei18n key to all 21 language filesScreenshots
Before (Environment page — no Private tag visible)
After
Private images will display a red "Private" tag next to the status badge in the Status column.
Test plan
ai.backend.features: privatelabel show a red "Private" tag🤖 Generated with Claude Code