diff --git a/src/extension_shield/api/main.py b/src/extension_shield/api/main.py index 3ebbc4c..50da945 100644 --- a/src/extension_shield/api/main.py +++ b/src/extension_shield/api/main.py @@ -4035,8 +4035,13 @@ def _persisted_icon_response() -> Optional[Response]: # Check icons object in manifest manifest_icons = manifest.get("icons", {}) if manifest_icons: - # Get the largest icon - largest_size = max(manifest_icons.keys(), key=lambda x: int(x)) + # Get the largest icon - only consider numeric keys (e.g. "128", "64") + # Some extensions use non-numeric keys like "48x48" which would cause ValueError + # isinstance guard handles edge cases where manifest was parsed outside of json.load + numeric_keys = [k for k in manifest_icons.keys() if isinstance(k, str) and k.isdigit()] + if not numeric_keys: + raise ValueError(f"No numeric icon size keys found in manifest: {list(manifest_icons.keys())}") + largest_size = max(numeric_keys, key=lambda x: int(x)) icon_rel_path = manifest_icons[largest_size] manifest_icon_path = os.path.join(extracted_path, icon_rel_path)