# Asset visuals

AssetManager can display a visual marker for each asset in lists and detail views.

## Display priority

The default `auto` mode uses the following order:

1. asset-specific image
2. category image
3. MeshCentral device icon (`mesh_icon`)
4. neutral placeholder

An administrator can override this per asset and explicitly select the asset image, category image, or MeshCentral icon. If the selected source is not available, no alternative source is forced; this makes manual overrides predictable.

## Category images

Categories can already store an uploaded image. In 0.5.5.54 this image is also used consistently as the category icon in the asset list and asset detail view. Category images are therefore the preferred way to represent asset types that MeshCentral does not cover, such as monitors, keyboards, headsets, mice, cameras, NAS systems, modems, firewalls, printers, switches, routers, keys, or RFID items.

## MeshCentral icons

MeshCentral reports its device icon as `node.icon`; AssetManager stores this in the `mesh_icon` system field. The field uses the normal MeshCentral mapping update policy (`fill empty`, `MeshCentral wins`, or `local wins`). Display source selection is independent from synchronization policy.

The bundled MeshCentral device icons are third-party assets and remain documented in `THIRD_PARTY_NOTICES.md`.

## Upload lifecycle and shared references

Uploaded asset/category images use unique UUID-based filenames. The original client filename is therefore never used as the storage key and cannot overwrite an existing upload.

Image removal and replacement only change the database reference. The physical upload is deliberately retained because duplicated categories or other records may still reference the same file. A future maintenance task may identify and remove upload files that are no longer referenced by any record.

## Standard image library

Version 0.5.5.60 adds a reusable standard image library for assets and categories.

- Persistent Docker host directory: `./data/uploads/library`
- Container directory: `/app/app/static/uploads/library`
- Public application path: `/static/uploads/library/`
- Supported formats: PNG, JPG/JPEG, WEBP and GIF
- Existing library images can be selected directly in the asset and category forms.
- A new image can be uploaded to the shared library from either form and is then reusable.
- Library images are referenced, not copied per asset/category.
- Removing or replacing an association never deletes the physical library file.
- Uploads never overwrite an existing file. If a name already exists, a numeric suffix is added (`switch-1.png`, `switch-2.png`, ...).
- Administrators may also place supported image files directly into the persistent host directory.

Orphaned or unused library images are intentionally retained. A later maintenance function can safely identify and remove unreferenced files.
