diff --git a/containers/libreportal/frontend/js/components/tasks/tasks-manager.js b/containers/libreportal/frontend/js/components/tasks/tasks-manager.js
index 86a6dd4..ee66658 100755
--- a/containers/libreportal/frontend/js/components/tasks/tasks-manager.js
+++ b/containers/libreportal/frontend/js/components/tasks/tasks-manager.js
@@ -1014,11 +1014,15 @@ class TasksManager {
Keeps the layout consistent across every row regardless of source. */
renderTaskIcons(task) {
const typeIcon = `${this.getTaskTypeIcon(task).icon}`;
- if (task.app) {
+ // `app: 'system'` is a category sentinel (config_update, system_update, …),
+ // not a real app slug, so it has no /icons/apps/system.svg — fall through
+ // to the LibrePortal-system branch so those tasks still get a logo.
+ const isSystemSentinel = task.app === 'system';
+ if (task.app && !isSystemSentinel) {
const appIconPath = this.getAppIconPath(task);
return `${typeIcon}
`;
}
- if (this.isLibrePortalSystemTask(task)) {
+ if (isSystemSentinel || this.isLibrePortalSystemTask(task)) {
return `${typeIcon}
`;
}
return typeIcon;