Parcourir la source

Cache default app logos locally and avoid unnecessary favicon requests.

Bundle icons for the built-in app list so startup tiles render instantly, and skip remote favicon fetches whenever a matching asset icon already exists.

Made-with: Cursor
huzaifahayat12 il y a 3 mois
Parent
commit
0115dba891
66 fichiers modifiés avec 689 ajouts et 14 suppressions
  1. 21 0
      google_apps/Assets.xcassets/icon_chrome_remote_desktop.imageset/Contents.json
  2. BIN
      google_apps/Assets.xcassets/icon_chrome_remote_desktop.imageset/icon_chrome_remote_desktop.png
  3. 21 0
      google_apps/Assets.xcassets/icon_chrome_web_store.imageset/Contents.json
  4. BIN
      google_apps/Assets.xcassets/icon_chrome_web_store.imageset/icon_chrome_web_store.png
  5. 21 0
      google_apps/Assets.xcassets/icon_gemini.imageset/Contents.json
  6. BIN
      google_apps/Assets.xcassets/icon_gemini.imageset/icon_gemini.png
  7. 11 11
      google_apps/Assets.xcassets/icon_gmail.imageset/Contents.json
  8. 21 0
      google_apps/Assets.xcassets/icon_google_ads.imageset/Contents.json
  9. BIN
      google_apps/Assets.xcassets/icon_google_ads.imageset/icon_google_ads.png
  10. 21 0
      google_apps/Assets.xcassets/icon_google_arts_culture.imageset/Contents.json
  11. BIN
      google_apps/Assets.xcassets/icon_google_arts_culture.imageset/icon_google_arts_culture.png
  12. 21 0
      google_apps/Assets.xcassets/icon_google_blogger.imageset/Contents.json
  13. BIN
      google_apps/Assets.xcassets/icon_google_blogger.imageset/icon_google_blogger.png
  14. 21 0
      google_apps/Assets.xcassets/icon_google_books.imageset/Contents.json
  15. BIN
      google_apps/Assets.xcassets/icon_google_books.imageset/icon_google_books.png
  16. 21 0
      google_apps/Assets.xcassets/icon_google_calendar.imageset/Contents.json
  17. BIN
      google_apps/Assets.xcassets/icon_google_calendar.imageset/icon_google_calendar.png
  18. 21 0
      google_apps/Assets.xcassets/icon_google_chat.imageset/Contents.json
  19. BIN
      google_apps/Assets.xcassets/icon_google_chat.imageset/icon_google_chat.png
  20. 21 0
      google_apps/Assets.xcassets/icon_google_classroom.imageset/Contents.json
  21. BIN
      google_apps/Assets.xcassets/icon_google_classroom.imageset/icon_google_classroom.png
  22. 21 0
      google_apps/Assets.xcassets/icon_google_contacts.imageset/Contents.json
  23. BIN
      google_apps/Assets.xcassets/icon_google_contacts.imageset/icon_google_contacts.png
  24. 21 0
      google_apps/Assets.xcassets/icon_google_docs.imageset/Contents.json
  25. BIN
      google_apps/Assets.xcassets/icon_google_docs.imageset/icon_google_docs.png
  26. 21 0
      google_apps/Assets.xcassets/icon_google_drive.imageset/Contents.json
  27. BIN
      google_apps/Assets.xcassets/icon_google_drive.imageset/icon_google_drive.png
  28. 21 0
      google_apps/Assets.xcassets/icon_google_earth.imageset/Contents.json
  29. BIN
      google_apps/Assets.xcassets/icon_google_earth.imageset/icon_google_earth.png
  30. 21 0
      google_apps/Assets.xcassets/icon_google_fi.imageset/Contents.json
  31. BIN
      google_apps/Assets.xcassets/icon_google_fi.imageset/icon_google_fi.png
  32. 21 0
      google_apps/Assets.xcassets/icon_google_finance.imageset/Contents.json
  33. BIN
      google_apps/Assets.xcassets/icon_google_finance.imageset/icon_google_finance.png
  34. 21 0
      google_apps/Assets.xcassets/icon_google_forms.imageset/Contents.json
  35. BIN
      google_apps/Assets.xcassets/icon_google_forms.imageset/icon_google_forms.png
  36. 21 0
      google_apps/Assets.xcassets/icon_google_jamboard.imageset/Contents.json
  37. BIN
      google_apps/Assets.xcassets/icon_google_jamboard.imageset/icon_google_jamboard.png
  38. 21 0
      google_apps/Assets.xcassets/icon_google_keep.imageset/Contents.json
  39. BIN
      google_apps/Assets.xcassets/icon_google_keep.imageset/icon_google_keep.png
  40. 21 0
      google_apps/Assets.xcassets/icon_google_maps.imageset/Contents.json
  41. BIN
      google_apps/Assets.xcassets/icon_google_maps.imageset/icon_google_maps.png
  42. 21 0
      google_apps/Assets.xcassets/icon_google_meet.imageset/Contents.json
  43. BIN
      google_apps/Assets.xcassets/icon_google_meet.imageset/icon_google_meet.png
  44. 21 0
      google_apps/Assets.xcassets/icon_google_news.imageset/Contents.json
  45. BIN
      google_apps/Assets.xcassets/icon_google_news.imageset/icon_google_news.png
  46. 21 0
      google_apps/Assets.xcassets/icon_google_photos.imageset/Contents.json
  47. BIN
      google_apps/Assets.xcassets/icon_google_photos.imageset/icon_google_photos.png
  48. 21 0
      google_apps/Assets.xcassets/icon_google_play.imageset/Contents.json
  49. BIN
      google_apps/Assets.xcassets/icon_google_play.imageset/icon_google_play.png
  50. 21 0
      google_apps/Assets.xcassets/icon_google_search.imageset/Contents.json
  51. BIN
      google_apps/Assets.xcassets/icon_google_search.imageset/icon_google_search.png
  52. 21 0
      google_apps/Assets.xcassets/icon_google_sheets.imageset/Contents.json
  53. BIN
      google_apps/Assets.xcassets/icon_google_sheets.imageset/icon_google_sheets.png
  54. 21 0
      google_apps/Assets.xcassets/icon_google_shopping.imageset/Contents.json
  55. BIN
      google_apps/Assets.xcassets/icon_google_shopping.imageset/icon_google_shopping.png
  56. 21 0
      google_apps/Assets.xcassets/icon_google_slides.imageset/Contents.json
  57. BIN
      google_apps/Assets.xcassets/icon_google_slides.imageset/icon_google_slides.png
  58. 21 0
      google_apps/Assets.xcassets/icon_google_translate.imageset/Contents.json
  59. BIN
      google_apps/Assets.xcassets/icon_google_translate.imageset/icon_google_translate.png
  60. 21 0
      google_apps/Assets.xcassets/icon_google_travel.imageset/Contents.json
  61. BIN
      google_apps/Assets.xcassets/icon_google_travel.imageset/icon_google_travel.png
  62. 21 0
      google_apps/Assets.xcassets/icon_google_voice.imageset/Contents.json
  63. BIN
      google_apps/Assets.xcassets/icon_google_voice.imageset/icon_google_voice.png
  64. 21 0
      google_apps/Assets.xcassets/icon_youtube.imageset/Contents.json
  65. BIN
      google_apps/Assets.xcassets/icon_youtube.imageset/icon_youtube.png
  66. 6 3
      google_apps/WebSiteFaviconView.swift

+ 21 - 0
google_apps/Assets.xcassets/icon_chrome_remote_desktop.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_chrome_remote_desktop.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_chrome_remote_desktop.imageset/icon_chrome_remote_desktop.png


+ 21 - 0
google_apps/Assets.xcassets/icon_chrome_web_store.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_chrome_web_store.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_chrome_web_store.imageset/icon_chrome_web_store.png


+ 21 - 0
google_apps/Assets.xcassets/icon_gemini.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_gemini.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_gemini.imageset/icon_gemini.png


+ 11 - 11
google_apps/Assets.xcassets/icon_gmail.imageset/Contents.json

@@ -1,21 +1,21 @@
 {
-  "images" : [
+  "images": [
     {
-      "filename" : "icon_gmail.png",
-      "idiom" : "universal",
-      "scale" : "1x"
+      "filename": "icon_gmail.png",
+      "idiom": "universal",
+      "scale": "1x"
     },
     {
-      "idiom" : "universal",
-      "scale" : "2x"
+      "idiom": "universal",
+      "scale": "2x"
     },
     {
-      "idiom" : "universal",
-      "scale" : "3x"
+      "idiom": "universal",
+      "scale": "3x"
     }
   ],
-  "info" : {
-    "author" : "xcode",
-    "version" : 1
+  "info": {
+    "author": "xcode",
+    "version": 1
   }
 }

+ 21 - 0
google_apps/Assets.xcassets/icon_google_ads.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_ads.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_ads.imageset/icon_google_ads.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_arts_culture.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_arts_culture.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_arts_culture.imageset/icon_google_arts_culture.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_blogger.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_blogger.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_blogger.imageset/icon_google_blogger.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_books.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_books.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_books.imageset/icon_google_books.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_calendar.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_calendar.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_calendar.imageset/icon_google_calendar.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_chat.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_chat.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_chat.imageset/icon_google_chat.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_classroom.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_classroom.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_classroom.imageset/icon_google_classroom.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_contacts.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_contacts.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_contacts.imageset/icon_google_contacts.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_docs.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_docs.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_docs.imageset/icon_google_docs.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_drive.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_drive.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_drive.imageset/icon_google_drive.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_earth.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_earth.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_earth.imageset/icon_google_earth.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_fi.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_fi.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_fi.imageset/icon_google_fi.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_finance.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_finance.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_finance.imageset/icon_google_finance.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_forms.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_forms.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_forms.imageset/icon_google_forms.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_jamboard.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_jamboard.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_jamboard.imageset/icon_google_jamboard.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_keep.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_keep.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_keep.imageset/icon_google_keep.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_maps.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_maps.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_maps.imageset/icon_google_maps.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_meet.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_meet.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_meet.imageset/icon_google_meet.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_news.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_news.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_news.imageset/icon_google_news.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_photos.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_photos.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_photos.imageset/icon_google_photos.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_play.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_play.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_play.imageset/icon_google_play.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_search.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_search.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_search.imageset/icon_google_search.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_sheets.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_sheets.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_sheets.imageset/icon_google_sheets.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_shopping.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_shopping.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_shopping.imageset/icon_google_shopping.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_slides.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_slides.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_slides.imageset/icon_google_slides.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_translate.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_translate.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_translate.imageset/icon_google_translate.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_travel.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_travel.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_travel.imageset/icon_google_travel.png


+ 21 - 0
google_apps/Assets.xcassets/icon_google_voice.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_google_voice.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_google_voice.imageset/icon_google_voice.png


+ 21 - 0
google_apps/Assets.xcassets/icon_youtube.imageset/Contents.json

@@ -0,0 +1,21 @@
+{
+  "images": [
+    {
+      "filename": "icon_youtube.png",
+      "idiom": "universal",
+      "scale": "1x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "2x"
+    },
+    {
+      "idiom": "universal",
+      "scale": "3x"
+    }
+  ],
+  "info": {
+    "author": "xcode",
+    "version": 1
+  }
+}

BIN
google_apps/Assets.xcassets/icon_youtube.imageset/icon_youtube.png


+ 6 - 3
google_apps/WebSiteFaviconView.swift

@@ -318,10 +318,13 @@ struct WebSiteFaviconView: View {
         .frame(width: size, height: size)
         .task(id: webURL.absoluteString) {
             remoteImage = nil
-            let img = await FaviconImageCache.shared.image(for: webURL)
-            await MainActor.run {
-                remoteImage = img
+            // If we have a bundled asset for this tile, prefer it and skip network fetches.
+            if !assetIconName.isEmpty, NSImage(named: assetIconName) != nil {
+                return
             }
+
+            let img = await FaviconImageCache.shared.image(for: webURL)
+            await MainActor.run { remoteImage = img }
         }
     }
 }