From 752f8f7d5c1e37f6f3261a9be359ac63c57c552d Mon Sep 17 00:00:00 2001 From: akadotsh Date: Sat, 11 Apr 2026 14:37:16 +0530 Subject: [PATCH 1/4] fix: avoid showing "No README is available" while README is loading --- app/pages/package/[[org]]/[name].vue | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/app/pages/package/[[org]]/[name].vue b/app/pages/package/[[org]]/[name].vue index bc10db6210..a5c75765f9 100644 --- a/app/pages/package/[[org]]/[name].vue +++ b/app/pages/package/[[org]]/[name].vue @@ -46,7 +46,7 @@ if (import.meta.server) { } // Fetch README for specific version if requested, otherwise latest -const { data: readmeData } = useLazyFetch( +const { data: readmeData, status: readmeStatus } = useLazyFetch( () => { const base = `/api/registry/readme/${packageName.value}` const version = resolvedVersion.value @@ -1040,7 +1040,10 @@ const showSkeleton = shallowRef(false) -

+

{{ $t('package.readme.no_readme') }} Date: Mon, 13 Apr 2026 23:25:47 +0530 Subject: [PATCH 2/4] fix(package-readme): avoid premature empty state and add loading/error handling --- app/pages/package/[[org]]/[name].vue | 10 ++++++++++ i18n/locales/ar.json | 3 ++- i18n/locales/az-AZ.json | 3 ++- i18n/locales/bg-BG.json | 3 ++- i18n/locales/bn-IN.json | 3 ++- i18n/locales/cs-CZ.json | 3 ++- i18n/locales/de.json | 3 ++- i18n/locales/en.json | 3 ++- i18n/locales/es-419.json | 3 ++- i18n/locales/es.json | 3 ++- i18n/locales/fr-FR.json | 3 ++- i18n/locales/hi-IN.json | 3 ++- i18n/locales/hu-HU.json | 3 ++- i18n/locales/id-ID.json | 3 ++- i18n/locales/it-IT.json | 3 ++- i18n/locales/ja-JP.json | 3 ++- i18n/locales/kn-IN.json | 3 ++- i18n/locales/mr-IN.json | 3 ++- i18n/locales/nb-NO.json | 3 ++- i18n/locales/ne-NP.json | 3 ++- i18n/locales/pl-PL.json | 3 ++- i18n/locales/pt-BR.json | 3 ++- i18n/locales/ru-RU.json | 3 ++- i18n/locales/sr-Latn-RS.json | 3 ++- i18n/locales/ta-IN.json | 3 ++- i18n/locales/te-IN.json | 3 ++- i18n/locales/tr-TR.json | 3 ++- i18n/locales/uk-UA.json | 3 ++- i18n/locales/vi-VN.json | 3 ++- i18n/locales/zh-CN.json | 3 ++- i18n/locales/zh-TW.json | 3 ++- 31 files changed, 70 insertions(+), 30 deletions(-) diff --git a/app/pages/package/[[org]]/[name].vue b/app/pages/package/[[org]]/[name].vue index a5c75765f9..c0a28ed7ea 100644 --- a/app/pages/package/[[org]]/[name].vue +++ b/app/pages/package/[[org]]/[name].vue @@ -1040,6 +1040,16 @@ const showSkeleton = shallowRef(false) +

+

+

+ {{ $t('package.readme.error_loading') }} +

Date: Mon, 13 Apr 2026 23:29:14 +0530 Subject: [PATCH 3/4] chore(i18n): update schema for readme error_loading key --- i18n/schema.json | 3 +++ 1 file changed, 3 insertions(+) diff --git a/i18n/schema.json b/i18n/schema.json index b3ccd57f64..949fc687c9 100644 --- a/i18n/schema.json +++ b/i18n/schema.json @@ -1446,6 +1446,9 @@ }, "copy_as_markdown": { "type": "string" + }, + "error_loading": { + "type": "string" } }, "additionalProperties": false From c33aee2b7669f9df09813b9d99c93dd66f6a4b93 Mon Sep 17 00:00:00 2001 From: akadotsh Date: Wed, 15 Apr 2026 00:12:17 +0530 Subject: [PATCH 4/4] fix(readme): add loading/error states and clean up i18n --- i18n/locales/ar.json | 3 +-- i18n/locales/az-AZ.json | 3 +-- i18n/locales/bg-BG.json | 3 +-- i18n/locales/bn-IN.json | 3 +-- i18n/locales/cs-CZ.json | 3 +-- i18n/locales/de.json | 3 +-- i18n/locales/es-419.json | 3 +-- i18n/locales/es.json | 3 +-- i18n/locales/fr-FR.json | 3 +-- i18n/locales/hi-IN.json | 3 +-- i18n/locales/hu-HU.json | 3 +-- i18n/locales/id-ID.json | 3 +-- i18n/locales/it-IT.json | 3 +-- i18n/locales/ja-JP.json | 3 +-- i18n/locales/kn-IN.json | 3 +-- i18n/locales/mr-IN.json | 3 +-- i18n/locales/nb-NO.json | 3 +-- i18n/locales/ne-NP.json | 3 +-- i18n/locales/pl-PL.json | 3 +-- i18n/locales/pt-BR.json | 3 +-- i18n/locales/ru-RU.json | 3 +-- i18n/locales/sr-Latn-RS.json | 3 +-- i18n/locales/ta-IN.json | 3 +-- i18n/locales/te-IN.json | 3 +-- i18n/locales/tr-TR.json | 3 +-- i18n/locales/uk-UA.json | 3 +-- i18n/locales/vi-VN.json | 3 +-- i18n/locales/zh-CN.json | 3 +-- i18n/locales/zh-TW.json | 3 +-- 29 files changed, 29 insertions(+), 58 deletions(-) diff --git a/i18n/locales/ar.json b/i18n/locales/ar.json index 82427167e9..131d42deca 100644 --- a/i18n/locales/ar.json +++ b/i18n/locales/ar.json @@ -259,8 +259,7 @@ "warning": "تحذير", "caution": "تنبيه" }, - "copy_as_markdown": "نسخ README كـ Markdown", - "error_loading": "فشل تحميل تفاصيل ملف README" + "copy_as_markdown": "نسخ README كـ Markdown" }, "provenance_section": { "title": "إثبات المصدر", diff --git a/i18n/locales/az-AZ.json b/i18n/locales/az-AZ.json index 3575c22475..48856ad81b 100644 --- a/i18n/locales/az-AZ.json +++ b/i18n/locales/az-AZ.json @@ -324,8 +324,7 @@ "warning": "Xəbərdarlıq", "caution": "Diqqət" }, - "copy_as_markdown": "README-ni Markdown olaraq kopyala", - "error_loading": "README təfərrüatları yüklənə bilmədi" + "copy_as_markdown": "README-ni Markdown olaraq kopyala" }, "provenance_section": { "title": "Mənşə", diff --git a/i18n/locales/bg-BG.json b/i18n/locales/bg-BG.json index 1f2e993b7b..41053f59bb 100644 --- a/i18n/locales/bg-BG.json +++ b/i18n/locales/bg-BG.json @@ -287,8 +287,7 @@ "warning": "Предупреждение", "caution": "Внимание" }, - "copy_as_markdown": "Копиране на README като Markdown", - "error_loading": "Неуспешно зареждане на детайлите за README" + "copy_as_markdown": "Копиране на README като Markdown" }, "provenance_section": { "title": "Произход", diff --git a/i18n/locales/bn-IN.json b/i18n/locales/bn-IN.json index 20f9e17242..ff7cf7ee7f 100644 --- a/i18n/locales/bn-IN.json +++ b/i18n/locales/bn-IN.json @@ -207,8 +207,7 @@ "readme": { "title": "রিডমি", "no_readme": "README উপলব্ধ নেই।", - "callout": {}, - "error_loading": "README বিবরণ লোড করা যায়নি" + "callout": {} }, "provenance_section": {}, "security_downgrade": {}, diff --git a/i18n/locales/cs-CZ.json b/i18n/locales/cs-CZ.json index dfc3771396..2ca6c6e2fc 100644 --- a/i18n/locales/cs-CZ.json +++ b/i18n/locales/cs-CZ.json @@ -480,8 +480,7 @@ "warning": "Varování", "caution": "Upozornění" }, - "copy_as_markdown": "Zkopírovat ČTI MĚ jako Markdown", - "error_loading": "Nepodařilo se načíst podrobnosti README" + "copy_as_markdown": "Zkopírovat ČTI MĚ jako Markdown" }, "provenance_section": { "title": "Původ", diff --git a/i18n/locales/de.json b/i18n/locales/de.json index c1d1d86f08..42c71738f8 100644 --- a/i18n/locales/de.json +++ b/i18n/locales/de.json @@ -363,8 +363,7 @@ "warning": "Warnung", "caution": "Vorsicht" }, - "copy_as_markdown": "README als Markdown kopieren", - "error_loading": "Fehler beim Laden der README-Details" + "copy_as_markdown": "README als Markdown kopieren" }, "provenance_section": { "title": "Herkunftsnachweis", diff --git a/i18n/locales/es-419.json b/i18n/locales/es-419.json index 0981a846ce..aff49a7df8 100644 --- a/i18n/locales/es-419.json +++ b/i18n/locales/es-419.json @@ -47,8 +47,7 @@ }, "package": { "readme": { - "title": "Léame", - "error_loading": "Error al cargar los detalles del README" + "title": "Léame" }, "access": { "grant_button": "otorgar", diff --git a/i18n/locales/es.json b/i18n/locales/es.json index 5674de80f8..7955c16958 100644 --- a/i18n/locales/es.json +++ b/i18n/locales/es.json @@ -364,8 +364,7 @@ "warning": "Advertencia", "caution": "Precaución" }, - "copy_as_markdown": "Copiar README como Markdown", - "error_loading": "Error al cargar los detalles del README" + "copy_as_markdown": "Copiar README como Markdown" }, "provenance_section": { "title": "Procedencia", diff --git a/i18n/locales/fr-FR.json b/i18n/locales/fr-FR.json index d970c96e4c..b37ecd2bc5 100644 --- a/i18n/locales/fr-FR.json +++ b/i18n/locales/fr-FR.json @@ -478,8 +478,7 @@ "warning": "Avertissement", "caution": "Attention" }, - "copy_as_markdown": "Copier le README en markdown", - "error_loading": "Échec du chargement des détails du README" + "copy_as_markdown": "Copier le README en markdown" }, "provenance_section": { "title": "Provenance", diff --git a/i18n/locales/hi-IN.json b/i18n/locales/hi-IN.json index 823dd5f957..8091162535 100644 --- a/i18n/locales/hi-IN.json +++ b/i18n/locales/hi-IN.json @@ -349,8 +349,7 @@ "warning": "चेतावनी", "caution": "सावधानी" }, - "copy_as_markdown": "README को Markdown के रूप में कॉपी करें", - "error_loading": "README विवरण लोड नहीं हो सके" + "copy_as_markdown": "README को Markdown के रूप में कॉपी करें" }, "provenance_section": { "title": "प्रोवेनेंस", diff --git a/i18n/locales/hu-HU.json b/i18n/locales/hu-HU.json index c7d15dc3e3..0a0b19980c 100644 --- a/i18n/locales/hu-HU.json +++ b/i18n/locales/hu-HU.json @@ -287,8 +287,7 @@ "warning": "Figyelmeztetés", "caution": "Óvatosság" }, - "copy_as_markdown": "README másolása Markdownként", - "error_loading": "Nem sikerült betölteni a README részleteit" + "copy_as_markdown": "README másolása Markdownként" }, "provenance_section": { "title": "Eredet", diff --git a/i18n/locales/id-ID.json b/i18n/locales/id-ID.json index e646fb78fa..cfc0a7c451 100644 --- a/i18n/locales/id-ID.json +++ b/i18n/locales/id-ID.json @@ -364,8 +364,7 @@ "warning": "Peringatan", "caution": "Perhatian" }, - "copy_as_markdown": "Salin README sebagai Markdown", - "error_loading": "Gagal memuat detail README" + "copy_as_markdown": "Salin README sebagai Markdown" }, "provenance_section": { "title": "Provenans", diff --git a/i18n/locales/it-IT.json b/i18n/locales/it-IT.json index 84bd630351..8335afc24d 100644 --- a/i18n/locales/it-IT.json +++ b/i18n/locales/it-IT.json @@ -265,8 +265,7 @@ "warning": "Avvertenza", "caution": "Cautela" }, - "copy_as_markdown": "Copia README come Markdown", - "error_loading": "Imposible cargar los detalles del README" + "copy_as_markdown": "Copia README come Markdown" }, "provenance_section": { "title": "Provenienza", diff --git a/i18n/locales/ja-JP.json b/i18n/locales/ja-JP.json index 0e6bdb4168..2d21d1fb99 100644 --- a/i18n/locales/ja-JP.json +++ b/i18n/locales/ja-JP.json @@ -334,8 +334,7 @@ "warning": "警告", "caution": "注意" }, - "copy_as_markdown": "READMEをMarkdownとしてコピーする", - "error_loading": "READMEの詳細の読み込みに失敗しました" + "copy_as_markdown": "READMEをMarkdownとしてコピーする" }, "provenance_section": { "title": "Provenance", diff --git a/i18n/locales/kn-IN.json b/i18n/locales/kn-IN.json index 1347a60972..a78955fe25 100644 --- a/i18n/locales/kn-IN.json +++ b/i18n/locales/kn-IN.json @@ -208,8 +208,7 @@ "readme": { "title": "ರೀಡ್‌ಮಿ", "no_readme": "README ಲಭ್ಯವಿಲ್ಲ.", - "callout": {}, - "error_loading": "README ವಿವರಗಳನ್ನು ಲೋಡ್ ಮಾಡಲು ವಿಫಲವಾಗಿದೆ" + "callout": {} }, "provenance_section": {}, "security_downgrade": {}, diff --git a/i18n/locales/mr-IN.json b/i18n/locales/mr-IN.json index 8688c73c66..dd8ee3d746 100644 --- a/i18n/locales/mr-IN.json +++ b/i18n/locales/mr-IN.json @@ -333,8 +333,7 @@ "warning": "इशारा", "caution": "सावधान" }, - "copy_as_markdown": "README Markdown म्हणून कॉपी करा", - "error_loading": "README तपशील लोड करण्यात अयशस्वी" + "copy_as_markdown": "README Markdown म्हणून कॉपी करा" }, "provenance_section": { "title": "प्रोव्हनन्स", diff --git a/i18n/locales/nb-NO.json b/i18n/locales/nb-NO.json index f0767a5470..3e90970e59 100644 --- a/i18n/locales/nb-NO.json +++ b/i18n/locales/nb-NO.json @@ -480,8 +480,7 @@ "warning": "Advarsel", "caution": "Forsiktig" }, - "copy_as_markdown": "Kopier README som Markdown", - "error_loading": "Kunne ikke laste inn README-detaljer" + "copy_as_markdown": "Kopier README som Markdown" }, "provenance_section": { "title": "Opprinnelse", diff --git a/i18n/locales/ne-NP.json b/i18n/locales/ne-NP.json index 832e9e8077..0d16b488c4 100644 --- a/i18n/locales/ne-NP.json +++ b/i18n/locales/ne-NP.json @@ -194,8 +194,7 @@ "readme": { "title": "README", "no_readme": "README उपलब्ध छैन।", - "callout": {}, - "error_loading": "README विवरण लोड गर्न असफल" + "callout": {} }, "provenance_section": {}, "security_downgrade": {}, diff --git a/i18n/locales/pl-PL.json b/i18n/locales/pl-PL.json index 505b1bc5da..c2b59412df 100644 --- a/i18n/locales/pl-PL.json +++ b/i18n/locales/pl-PL.json @@ -334,8 +334,7 @@ "warning": "Uwaga", "caution": "Ostrożnie" }, - "copy_as_markdown": "Skopiuj README jako Markdown", - "error_loading": "Nie udało się załadować szczegółów README" + "copy_as_markdown": "Skopiuj README jako Markdown" }, "provenance_section": { "title": "Pochodzenie", diff --git a/i18n/locales/pt-BR.json b/i18n/locales/pt-BR.json index 6392259ce7..ff5a248825 100644 --- a/i18n/locales/pt-BR.json +++ b/i18n/locales/pt-BR.json @@ -337,8 +337,7 @@ "warning": "Aviso", "caution": "Cuidado" }, - "copy_as_markdown": "Copiar README como Markdown", - "error_loading": "Falha ao carregar detalhes do README" + "copy_as_markdown": "Copiar README como Markdown" }, "provenance_section": { "title": "Proveniência", diff --git a/i18n/locales/ru-RU.json b/i18n/locales/ru-RU.json index f5033f9f48..55f96fa0cc 100644 --- a/i18n/locales/ru-RU.json +++ b/i18n/locales/ru-RU.json @@ -480,8 +480,7 @@ "warning": "Предупреждение", "caution": "Внимание" }, - "copy_as_markdown": "Скопировать README как Markdown", - "error_loading": "Не удалось загрузить сведения README" + "copy_as_markdown": "Скопировать README как Markdown" }, "provenance_section": { "title": "Происхождение", diff --git a/i18n/locales/sr-Latn-RS.json b/i18n/locales/sr-Latn-RS.json index a0e841cc28..ee5f0cb0c3 100644 --- a/i18n/locales/sr-Latn-RS.json +++ b/i18n/locales/sr-Latn-RS.json @@ -364,8 +364,7 @@ "warning": "Upozorenje", "caution": "Oprez" }, - "copy_as_markdown": "Kopirajte README kao Markdown", - "error_loading": "Neuspešno učitavanje README detalja" + "copy_as_markdown": "Kopirajte README kao Markdown" }, "provenance_section": { "title": "Poreklo", diff --git a/i18n/locales/ta-IN.json b/i18n/locales/ta-IN.json index 66470c0cb5..96a41eb17d 100644 --- a/i18n/locales/ta-IN.json +++ b/i18n/locales/ta-IN.json @@ -256,8 +256,7 @@ "warning": "எச்சரிக்கை", "caution": "கவனம்" }, - "copy_as_markdown": "README-ஐ Markdown ஆக நகலெடு", - "error_loading": "README விவரங்களை ஏற்ற முடியவில்லை" + "copy_as_markdown": "README-ஐ Markdown ஆக நகலெடு" }, "provenance_section": { "title": "மூலநிலை", diff --git a/i18n/locales/te-IN.json b/i18n/locales/te-IN.json index 644f6022e5..ab580f63b4 100644 --- a/i18n/locales/te-IN.json +++ b/i18n/locales/te-IN.json @@ -208,8 +208,7 @@ "readme": { "title": "రీడ్మీ", "no_readme": "README అందుబాటులో లేదు.", - "callout": {}, - "error_loading": "README వివరాలను లోడ్ చేయడం విఫలమైంది" + "callout": {} }, "provenance_section": {}, "security_downgrade": {}, diff --git a/i18n/locales/tr-TR.json b/i18n/locales/tr-TR.json index 8cdb79344b..8d686950a3 100644 --- a/i18n/locales/tr-TR.json +++ b/i18n/locales/tr-TR.json @@ -324,8 +324,7 @@ "warning": "Uyarı", "caution": "Dikkat" }, - "copy_as_markdown": "README'yi Markdown olarak kopyala", - "error_loading": "README ayrıntıları yüklenemedi" + "copy_as_markdown": "README'yi Markdown olarak kopyala" }, "provenance_section": { "title": "Köken", diff --git a/i18n/locales/uk-UA.json b/i18n/locales/uk-UA.json index 0b44354a06..41417d1893 100644 --- a/i18n/locales/uk-UA.json +++ b/i18n/locales/uk-UA.json @@ -364,8 +364,7 @@ "warning": "Попередження", "caution": "Увага" }, - "copy_as_markdown": "Скопіювати файл README як Markdown", - "error_loading": "Не вдалося завантажити деталі README" + "copy_as_markdown": "Скопіювати файл README як Markdown" }, "provenance_section": { "title": "Походження", diff --git a/i18n/locales/vi-VN.json b/i18n/locales/vi-VN.json index f22e472e78..8eb5694da7 100644 --- a/i18n/locales/vi-VN.json +++ b/i18n/locales/vi-VN.json @@ -364,8 +364,7 @@ "warning": "Cảnh báo", "caution": "Thận trọng" }, - "copy_as_markdown": "Sao chép README dạng Markdown", - "error_loading": "Không thể tải chi tiết README" + "copy_as_markdown": "Sao chép README dạng Markdown" }, "provenance_section": { "title": "Provenance", diff --git a/i18n/locales/zh-CN.json b/i18n/locales/zh-CN.json index 035c867f37..4d3f405c1a 100644 --- a/i18n/locales/zh-CN.json +++ b/i18n/locales/zh-CN.json @@ -478,8 +478,7 @@ "warning": "警告", "caution": "当心" }, - "copy_as_markdown": "复制为 Markdown", - "error_loading": "加载 README 详情失败" + "copy_as_markdown": "复制为 Markdown" }, "provenance_section": { "title": "来源", diff --git a/i18n/locales/zh-TW.json b/i18n/locales/zh-TW.json index 4a045959fb..5ea5a9109c 100644 --- a/i18n/locales/zh-TW.json +++ b/i18n/locales/zh-TW.json @@ -477,8 +477,7 @@ "warning": "警告", "caution": "小心" }, - "copy_as_markdown": "複製 README 為 Markdown 格式", - "error_loading": "載入 README 詳情失敗" + "copy_as_markdown": "複製 README 為 Markdown 格式" }, "provenance_section": { "title": "來源",