fix(providers): Sort merged plugin providers alphabetically with other pinned last

linuztx committed Mar 12, 2026 at 08:34 UTC c0b8526ba94fbce963b881ce4c412a04d5270919
1 file changed +6 -1
helpers/providers.py
+6 -1
@@ -72,13 +72,18 @@ class ProviderManager:
72 # Overwrite matching keys, append new ones
73 merged[p_type].update(providers)
74
75 - # Convert merged {type: {id: config}} to normalised list format
75 + # Convert merged {type: {id: config}} to normalised list format,
76 + # sorted by name with "other" always last.
77 normalised: Dict[str, List[Dict[str, str]]] = {}
78 for p_type, providers in merged.items():
79 items: List[Dict[str, str]] = []
80 for pid, cfg in providers.items():
81 entry = {"id": pid, **cfg}
82 items.append(entry)
83 + items.sort(key=lambda p: (
84 + p.get("id") == "other", # False (0) first, True (1) last
85 + (p.get("name") or p.get("id") or "").lower(),
86 + ))
87 normalised[p_type] = items
88
89 # Save raw