Related user story
#45414
Task
Display the adobe_plugins source on the Software page and host details with the Type name "Plugin (Adobe)", a new Adobe-plugin icon, and a live "Vulnerabilities" column — matching the Figma wireframe. The frontend identifies an Adobe plugin purely by source === "adobe_plugins", the same way it distinguishes jetbrains_plugins or chrome_extensions.
This can start from the spec/API contract before the backend merges — the source string (adobe_plugins) and the Type label ("Plugin (Adobe)") are fixed.
Type display name
Add adobe_plugins to SOURCE_TYPE_CONVERSION in frontend/interfaces/software.ts (after go_binaries at software.ts:303):
adobe_plugins: "Plugin (Adobe)",
This alone extends the SoftwareSource union (software.ts:306) and makes formatSoftwareType (software.ts:395) resolve the Type column across every table that uses it (Software inventory, versions, host details, device software). The label is flat — do not append an extension_for / host-application suffix (confirmed with product).
Adobe-plugin icon
The SVG asset is supplied by product (see open question on the parent story). Once received:
- Create
frontend/pages/SoftwarePage/components/icons/AdobePlugin.tsx — a 32×32 viewBox SVG React component, following the pattern of Extension.tsx (use uniqueId(...) for any clip-path/mask IDs).
- Import it in
frontend/pages/SoftwarePage/components/icons/index.ts.
- Register it in
SOFTWARE_SOURCE_TO_ICON_MAP (icons/index.ts:2097), keyed on the source:
adobe_plugins: AdobePlugin,
getMatchedSoftwareIcon({ name, source }) (icons/index.ts) will then resolve the icon for adobe_plugins rows. Until the asset arrives, a placeholder is acceptable so the rest of the work can proceed.
Note: <SoftwareIcon> must receive the raw name, never display_name (per .claude/rules/fleet-frontend.md), or admin renames break icon matching.
Keep the Vulnerabilities column live
Do not add adobe_plugins to NO_VERSION_OR_HOST_DATA_SOURCES (software.ts:348) and do not add it to the "Not supported" branch in SoftwareInventoryTableConfig.tsx:165-171 (which handles iOS/iPadOS/tgz_packages). Adobe plugins have version + host data and support the vuln column, so the default rendering (VulnerabilitiesCell, showing "N vulnerabilities" or a single CVE) applies. Per the Figma, keep the existing (non-link, tooltip-with-CVEs) cell behavior.
Tests
Update frontend/interfaces/software.tests.ts: add "adobe_plugins" to the hardcoded allSourceTypes array (~software.tests.ts:269) and a case asserting formatSoftwareType returns "Plugin (Adobe)" for source: "adobe_plugins".
Condition of satisfaction
- Type column: a software row with
source: "adobe_plugins" renders Type "Plugin (Adobe)" on the Software page, software version details, and host details Software card.
- Icon: the Adobe-plugin icon renders in the Name cell for
adobe_plugins rows (placeholder acceptable until the product asset lands; final asset wired before merge).
- Vulnerabilities column: renders the live "N vulnerabilities" cell (not "Not supported"), and host count renders normally —
adobe_plugins is absent from NO_VERSION_OR_HOST_DATA_SOURCES and the "Not supported" branch.
- Type safety:
SoftwareSource includes adobe_plugins; yarn tsc / lint pass.
- Tests:
yarn test passes, including the new formatSoftwareType assertion and the updated allSourceTypes loop.
Related user story
#45414
Task
Display the
adobe_pluginssource on the Software page and host details with the Type name "Plugin (Adobe)", a new Adobe-plugin icon, and a live "Vulnerabilities" column — matching the Figma wireframe. The frontend identifies an Adobe plugin purely bysource === "adobe_plugins", the same way it distinguishesjetbrains_pluginsorchrome_extensions.This can start from the spec/API contract before the backend merges — the source string (
adobe_plugins) and the Type label ("Plugin (Adobe)") are fixed.Type display name
Add
adobe_pluginstoSOURCE_TYPE_CONVERSIONinfrontend/interfaces/software.ts(aftergo_binariesatsoftware.ts:303):This alone extends the
SoftwareSourceunion (software.ts:306) and makesformatSoftwareType(software.ts:395) resolve the Type column across every table that uses it (Software inventory, versions, host details, device software). The label is flat — do not append anextension_for/ host-application suffix (confirmed with product).Adobe-plugin icon
The SVG asset is supplied by product (see open question on the parent story). Once received:
frontend/pages/SoftwarePage/components/icons/AdobePlugin.tsx— a 32×32viewBoxSVG React component, following the pattern ofExtension.tsx(useuniqueId(...)for any clip-path/mask IDs).frontend/pages/SoftwarePage/components/icons/index.ts.SOFTWARE_SOURCE_TO_ICON_MAP(icons/index.ts:2097), keyed on the source:getMatchedSoftwareIcon({ name, source })(icons/index.ts) will then resolve the icon foradobe_pluginsrows. Until the asset arrives, a placeholder is acceptable so the rest of the work can proceed.Note:
<SoftwareIcon>must receive the rawname, neverdisplay_name(per.claude/rules/fleet-frontend.md), or admin renames break icon matching.Keep the Vulnerabilities column live
Do not add
adobe_pluginstoNO_VERSION_OR_HOST_DATA_SOURCES(software.ts:348) and do not add it to the "Not supported" branch inSoftwareInventoryTableConfig.tsx:165-171(which handles iOS/iPadOS/tgz_packages). Adobe plugins have version + host data and support the vuln column, so the default rendering (VulnerabilitiesCell, showing "N vulnerabilities" or a single CVE) applies. Per the Figma, keep the existing (non-link, tooltip-with-CVEs) cell behavior.Tests
Update
frontend/interfaces/software.tests.ts: add"adobe_plugins"to the hardcodedallSourceTypesarray (~software.tests.ts:269) and a case assertingformatSoftwareTypereturns"Plugin (Adobe)"forsource: "adobe_plugins".Condition of satisfaction
source: "adobe_plugins"renders Type "Plugin (Adobe)" on the Software page, software version details, and host details Software card.adobe_pluginsrows (placeholder acceptable until the product asset lands; final asset wired before merge).adobe_pluginsis absent fromNO_VERSION_OR_HOST_DATA_SOURCESand the "Not supported" branch.SoftwareSourceincludesadobe_plugins;yarn tsc/ lint pass.yarn testpasses, including the newformatSoftwareTypeassertion and the updatedallSourceTypesloop.