`;
}
diff --git a/web_interface/templates/v3/partials/plugin_config.html b/web_interface/templates/v3/partials/plugin_config.html
index 5a8bd851..d5033a86 100644
--- a/web_interface/templates/v3/partials/plugin_config.html
+++ b/web_interface/templates/v3/partials/plugin_config.html
@@ -153,15 +153,105 @@
{% else %}
- {# Regular array input (comma-separated) #}
- {% set array_value = value if value is not none else (prop.default if prop.default is defined else []) %}
-
-
Separate multiple values with commas
+ {# Check if it's an array of objects (like custom_feeds) - use simple table interface #}
+ {% set items_schema = prop.get('items') or {} %}
+ {% set is_array_of_objects = items_schema.get('type') == 'object' and items_schema.get('properties') %}
+ {% if is_array_of_objects %}
+ {# Simple table-based interface for custom feeds #}
+ {% set item_properties = items_schema.get('properties', {}) %}
+ {% set max_items = prop.get('maxItems', 50) %}
+ {% set array_value = value if value is not none and value is iterable and value is not string else (prop.default if prop.default is defined and prop.default is iterable and prop.default is not string else []) %}
+
+
+
+
+
+
Name
+
URL
+
Logo
+
Enabled
+
Actions
+
+
+
+ {% for item in array_value %}
+ {% set item_index = loop.index0 %}
+
+
+
+
+
+
+
+
+ {% set logo_value = item.get('logo') or {} %}
+ {% set logo_path = logo_value.get('path', '') %}
+
+
+
+ {% if logo_path %}
+
+
+
+ {% else %}
+ No logo
+ {% endif %}
+
+
+
+
+
+
+
+
+
+ {% endfor %}
+
+
+
+
+ {% else %}
+ {# Regular array input (comma-separated) #}
+ {% set array_value = value if value is not none else (prop.default if prop.default is defined else []) %}
+
+