Skip to content

[Bug]:تصویر زمینه بعد از آپدیت در حالت آفلاین سیاه می‌ماند (+ کش‌نشدن آیکون بوکمارک‌ها و باقی‌ماندن کش‌های قدیمی) #407

Description

@pooooooriya

🤔 Is there an existing issue for this?

  • I have searched the existing issues

📝 Discription

🐛 توضیح مشکل
بعد از آپدیت اکستنشن به نسخه‌ی جدید، اگر کاربر آفلاین باشد، صفحه‌ی New Tab به‌جای نمایش تصویر زمینه سیاه نشان داده می‌شود — حتی وقتی فایل تصویر در Cache Storage موجود است. به‌محض اینکه کاربر یک تصویر زمینه انتخاب کند، مشکل برطرف می‌شود و دیگر (حتی آفلاین) تکرار نمی‌شود.

♻️ مراحل بازتولید
روی نسخه‌ی قبلی یک تصویر زمینه‌ی ریموت (عکس/گیف/ویدیو) فعال داشته باش.
اکستنشن به نسخه‌ی جدید آپدیت شود.
اینترنت را قطع کن (آفلاین).
یک تب جدید باز کن → صفحه سیاه است.
حالا یک تصویر زمینه انتخاب کن → درست نمایش داده می‌شود و دیگر تکرار نمی‌شود.
✅ رفتار مورد انتظار
تصویر زمینه از روی کش (آفلاین) نمایش داده شود، بدون نیاز به انتخاب دستی.

❌ رفتار فعلی
صفحه سیاه می‌ماند تا وقتی کاربر دستی یک تصویر زمینه انتخاب کند.

🔍 علت فنی
دو مسئله دست‌به‌دست هم می‌دهند:

کش والپیپر ورژن‌دار است و موقع آپدیت پاک می‌شود — purgeStaleCaches() کش نسخه‌ی قبلی را حذف می‌کند، پس بلافاصله بعد از آپدیت کش خالی است و در حالت آفلاین قابل پر شدن نیست.
درخواستِ ناموفقِ background-image هیچ‌وقت دوباره تلاش نمی‌شود — مرورگر برای background-image رویداد خطا نمی‌دهد و URLی که یک‌بار fail شده را دوباره درخواست نمی‌کند. پس حتی وقتی کش بعداً پر شود، صفحه سیاه می‌ماند تا زمانی که applyWallpaper دوباره اجرا شود (که فقط با انتخاب دستی رخ می‌دهد).
این مشکل روی عکس، گیف و ویدیوی ریموت وجود دارد. عکس/ویدیوی کاستوم (که به‌صورت data URL ذخیره می‌شوند) درگیر نیستند چون به شبکه/کش وابسته نیستند.

🧩 موارد مرتبط که حین بررسی پیدا شد
آیکون بوکمارک‌ها کش نمی‌شوند: آیکون‌ها از سرویس favicon گوگل (www.google.com/s2/favicons که به *.gstatic.com/faviconV2 ری‌دایرکت می‌شود) گرفته می‌شوند، ولی هیچ روت کشی این origin را پوشش نمی‌دهد؛ در نتیجه هر بار از شبکه لود می‌شوند و آفلاین کار نمی‌کنند.
کش‌های قدیمی یتیم پاک نمی‌شوند: سه کش از نسخه‌های قدیمیِ Workbox (images-cache-v1، cross-origin-cache-v1، widgetify-api-cache-v1) در لیست LEGACY_CACHES نبودند، پس purgeStaleCaches() هیچ‌وقت حذفشان نمی‌کند و برای همیشه روی نصب‌های آپدیت‌شده باقی می‌مانند. (این باگ کروم نیست، لیست ناقص بود.)

Other

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions