@lobehub/lobehub 2.0.0-next.37 → 2.0.0-next.38

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,39 @@
2
2
 
3
3
  # Changelog
4
4
 
5
+ ## [Version 2.0.0-next.38](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.37...v2.0.0-next.38)
6
+
7
+ <sup>Released on **2025-11-08**</sup>
8
+
9
+ #### 🐛 Bug Fixes
10
+
11
+ - **TokenUsage**: Prevent animation when toggling between token and credit display.
12
+
13
+ #### 💄 Styles
14
+
15
+ - **misc**: Update i18n.
16
+
17
+ <br/>
18
+
19
+ <details>
20
+ <summary><kbd>Improvements and Fixes</kbd></summary>
21
+
22
+ #### What's fixed
23
+
24
+ - **TokenUsage**: Prevent animation when toggling between token and credit display, closes [#10098](https://github.com/lobehub/lobe-chat/issues/10098) ([f20a910](https://github.com/lobehub/lobe-chat/commit/f20a910))
25
+
26
+ #### Styles
27
+
28
+ - **misc**: Update i18n, closes [#10100](https://github.com/lobehub/lobe-chat/issues/10100) ([deb6b5e](https://github.com/lobehub/lobe-chat/commit/deb6b5e))
29
+
30
+ </details>
31
+
32
+ <div align="right">
33
+
34
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
35
+
36
+ </div>
37
+
5
38
  ## [Version 2.0.0-next.37](https://github.com/lobehub/lobe-chat/compare/v2.0.0-next.36...v2.0.0-next.37)
6
39
 
7
40
  <sup>Released on **2025-11-07**</sup>
package/changelog/v1.json CHANGED
@@ -1,4 +1,13 @@
1
1
  [
2
+ {
3
+ "children": {
4
+ "improvements": [
5
+ "Update i18n."
6
+ ]
7
+ },
8
+ "date": "2025-11-08",
9
+ "version": "2.0.0-next.38"
10
+ },
2
11
  {
3
12
  "children": {
4
13
  "fixes": [
@@ -199,6 +199,12 @@
199
199
  "all": "الكل",
200
200
  "list": {
201
201
  "disabled": "غير مفعل",
202
+ "disabledActions": {
203
+ "sort": "طريقة الترتيب",
204
+ "sortAlphabetical": "ترتيب أبجديًا",
205
+ "sortAlphabeticalDesc": "ترتيب أبجدي عكسي",
206
+ "sortDefault": "الترتيب الافتراضي"
207
+ },
202
208
  "enabled": "مفعل"
203
209
  },
204
210
  "notFound": "لم يتم العثور على نتائج البحث",
@@ -391,7 +397,13 @@
391
397
  "addNew": "إضافة نموذج",
392
398
  "disabled": "غير مفعل",
393
399
  "disabledActions": {
394
- "showMore": "عرض الكل"
400
+ "showMore": "عرض الكل",
401
+ "sort": "طريقة الترتيب",
402
+ "sortAlphabetical": "ترتيب أبجديًا",
403
+ "sortAlphabeticalDesc": "ترتيب أبجدي عكسي",
404
+ "sortDefault": "الترتيب الافتراضي",
405
+ "sortReleasedAt": "ترتيب حسب أقدم تاريخ إصدار",
406
+ "sortReleasedAtDesc": "ترتيب حسب أحدث تاريخ إصدار"
395
407
  },
396
408
  "empty": {
397
409
  "desc": "يرجى إنشاء نموذج مخصص أو سحب نموذج للبدء في الاستخدام",
@@ -199,6 +199,12 @@
199
199
  "all": "Всички",
200
200
  "list": {
201
201
  "disabled": "Неактивиран",
202
+ "disabledActions": {
203
+ "sort": "Сортиране",
204
+ "sortAlphabetical": "Сортиране по азбучен ред",
205
+ "sortAlphabeticalDesc": "Сортиране по обратен азбучен ред",
206
+ "sortDefault": "Сортиране по подразбиране"
207
+ },
202
208
  "enabled": "Активиран"
203
209
  },
204
210
  "notFound": "Не са намерени резултати от търсенето",
@@ -391,7 +397,13 @@
391
397
  "addNew": "Добавяне на модел",
392
398
  "disabled": "Неактивен",
393
399
  "disabledActions": {
394
- "showMore": "Покажи всичко"
400
+ "showMore": "Покажи всичко",
401
+ "sort": "Сортиране",
402
+ "sortAlphabetical": "Сортиране по азбучен ред",
403
+ "sortAlphabeticalDesc": "Сортиране по обратен азбучен ред",
404
+ "sortDefault": "Сортиране по подразбиране",
405
+ "sortReleasedAt": "Сортиране по най-ранна дата на публикуване",
406
+ "sortReleasedAtDesc": "Сортиране по най-нова дата на публикуване"
395
407
  },
396
408
  "empty": {
397
409
  "desc": "Моля, създайте персонализиран модел или изтеглете модел, за да започнете да го използвате",
@@ -199,6 +199,12 @@
199
199
  "all": "Alle",
200
200
  "list": {
201
201
  "disabled": "Nicht aktiviert",
202
+ "disabledActions": {
203
+ "sort": "Sortieroptionen",
204
+ "sortAlphabetical": "Alphabetisch sortieren",
205
+ "sortAlphabeticalDesc": "In umgekehrter alphabetischer Reihenfolge sortieren",
206
+ "sortDefault": "Standard-Sortierung"
207
+ },
202
208
  "enabled": "Aktiviert"
203
209
  },
204
210
  "notFound": "Keine Suchergebnisse gefunden",
@@ -391,7 +397,13 @@
391
397
  "addNew": "Modell hinzufügen",
392
398
  "disabled": "Nicht aktiviert",
393
399
  "disabledActions": {
394
- "showMore": "Alle anzeigen"
400
+ "showMore": "Alle anzeigen",
401
+ "sort": "Sortieroptionen",
402
+ "sortAlphabetical": "Alphabetisch sortieren",
403
+ "sortAlphabeticalDesc": "In umgekehrter alphabetischer Reihenfolge sortieren",
404
+ "sortDefault": "Standard-Sortierung",
405
+ "sortReleasedAt": "Nach frühestem Veröffentlichungsdatum sortieren",
406
+ "sortReleasedAtDesc": "Nach neuestem Veröffentlichungsdatum sortieren"
395
407
  },
396
408
  "empty": {
397
409
  "desc": "Bitte erstellen Sie ein benutzerdefiniertes Modell oder ziehen Sie ein Modell, um zu beginnen.",
@@ -199,6 +199,12 @@
199
199
  "all": "All",
200
200
  "list": {
201
201
  "disabled": "Disabled",
202
+ "disabledActions": {
203
+ "sort": "Sort By",
204
+ "sortAlphabetical": "Sort Alphabetically",
205
+ "sortAlphabeticalDesc": "Sort by Reverse Alphabetical Order",
206
+ "sortDefault": "Default Sort"
207
+ },
202
208
  "enabled": "Enabled"
203
209
  },
204
210
  "notFound": "No search results found",
@@ -391,7 +397,13 @@
391
397
  "addNew": "Add Model",
392
398
  "disabled": "Disabled",
393
399
  "disabledActions": {
394
- "showMore": "Show All"
400
+ "showMore": "Show All",
401
+ "sort": "Sort By",
402
+ "sortAlphabetical": "Sort Alphabetically",
403
+ "sortAlphabeticalDesc": "Sort by Reverse Alphabetical Order",
404
+ "sortDefault": "Default Sort",
405
+ "sortReleasedAt": "Sort by Earliest Release Date",
406
+ "sortReleasedAtDesc": "Sort by Latest Release Date"
395
407
  },
396
408
  "empty": {
397
409
  "desc": "Please create a custom model or pull a model to get started.",
@@ -199,6 +199,12 @@
199
199
  "all": "Todo",
200
200
  "list": {
201
201
  "disabled": "No habilitado",
202
+ "disabledActions": {
203
+ "sort": "Ordenar por",
204
+ "sortAlphabetical": "Orden alfabético",
205
+ "sortAlphabeticalDesc": "Orden alfabético descendente",
206
+ "sortDefault": "Orden predeterminado"
207
+ },
202
208
  "enabled": "Habilitado"
203
209
  },
204
210
  "notFound": "No se encontraron resultados de búsqueda",
@@ -391,7 +397,13 @@
391
397
  "addNew": "Agregar modelo",
392
398
  "disabled": "No habilitado",
393
399
  "disabledActions": {
394
- "showMore": "Mostrar todo"
400
+ "showMore": "Mostrar todo",
401
+ "sort": "Ordenar por",
402
+ "sortAlphabetical": "Orden alfabético",
403
+ "sortAlphabeticalDesc": "Orden alfabético descendente",
404
+ "sortDefault": "Orden predeterminado",
405
+ "sortReleasedAt": "Ordenar por fecha de lanzamiento más antigua",
406
+ "sortReleasedAtDesc": "Ordenar por fecha de lanzamiento más reciente"
395
407
  },
396
408
  "empty": {
397
409
  "desc": "Por favor, crea un modelo personalizado o importa un modelo para comenzar a usarlo.",
@@ -199,6 +199,12 @@
199
199
  "all": "همه",
200
200
  "list": {
201
201
  "disabled": "غیرفعال",
202
+ "disabledActions": {
203
+ "sort": "نحوه مرتب‌سازی",
204
+ "sortAlphabetical": "مرتب‌سازی الفبایی",
205
+ "sortAlphabeticalDesc": "مرتب‌سازی الفبایی معکوس",
206
+ "sortDefault": "مرتب‌سازی پیش‌فرض"
207
+ },
202
208
  "enabled": "فعال"
203
209
  },
204
210
  "notFound": "نتیجه‌ای برای جستجو پیدا نشد",
@@ -391,7 +397,13 @@
391
397
  "addNew": "مدل جدید اضافه کنید",
392
398
  "disabled": "غیرفعال",
393
399
  "disabledActions": {
394
- "showMore": "نمایش همه"
400
+ "showMore": "نمایش همه",
401
+ "sort": "نحوه مرتب‌سازی",
402
+ "sortAlphabetical": "مرتب‌سازی الفبایی",
403
+ "sortAlphabeticalDesc": "مرتب‌سازی الفبایی معکوس",
404
+ "sortDefault": "مرتب‌سازی پیش‌فرض",
405
+ "sortReleasedAt": "مرتب‌سازی بر اساس تاریخ انتشار قدیمی‌تر",
406
+ "sortReleasedAtDesc": "مرتب‌سازی بر اساس جدیدترین تاریخ انتشار"
395
407
  },
396
408
  "empty": {
397
409
  "desc": "لطفاً یک مدل سفارشی ایجاد کنید یا پس از بارگذاری مدل‌ها، شروع به استفاده کنید",
@@ -199,6 +199,12 @@
199
199
  "all": "Tout",
200
200
  "list": {
201
201
  "disabled": "Non activé",
202
+ "disabledActions": {
203
+ "sort": "Méthode de tri",
204
+ "sortAlphabetical": "Trier par ordre alphabétique",
205
+ "sortAlphabeticalDesc": "Trier par ordre alphabétique décroissant",
206
+ "sortDefault": "Tri par défaut"
207
+ },
202
208
  "enabled": "Activé"
203
209
  },
204
210
  "notFound": "Aucun résultat trouvé",
@@ -391,7 +397,13 @@
391
397
  "addNew": "Ajouter un modèle",
392
398
  "disabled": "Non activé",
393
399
  "disabledActions": {
394
- "showMore": "Afficher tout"
400
+ "showMore": "Afficher tout",
401
+ "sort": "Méthode de tri",
402
+ "sortAlphabetical": "Trier par ordre alphabétique",
403
+ "sortAlphabeticalDesc": "Trier par ordre alphabétique décroissant",
404
+ "sortDefault": "Tri par défaut",
405
+ "sortReleasedAt": "Trier par date de sortie la plus ancienne",
406
+ "sortReleasedAtDesc": "Trier par date de sortie la plus récente"
395
407
  },
396
408
  "empty": {
397
409
  "desc": "Veuillez créer un modèle personnalisé ou importer un modèle pour commencer à l'utiliser.",
@@ -199,6 +199,12 @@
199
199
  "all": "Tutti",
200
200
  "list": {
201
201
  "disabled": "Non attivato",
202
+ "disabledActions": {
203
+ "sort": "Ordina per",
204
+ "sortAlphabetical": "Ordina alfabeticamente",
205
+ "sortAlphabeticalDesc": "Ordina in ordine alfabetico inverso",
206
+ "sortDefault": "Ordinamento predefinito"
207
+ },
202
208
  "enabled": "Attivato"
203
209
  },
204
210
  "notFound": "Nessun risultato trovato",
@@ -391,7 +397,13 @@
391
397
  "addNew": "Aggiungi modello",
392
398
  "disabled": "Non attivato",
393
399
  "disabledActions": {
394
- "showMore": "Mostra tutto"
400
+ "showMore": "Mostra tutto",
401
+ "sort": "Ordina per",
402
+ "sortAlphabetical": "Ordina alfabeticamente",
403
+ "sortAlphabeticalDesc": "Ordina in ordine alfabetico inverso",
404
+ "sortDefault": "Ordinamento predefinito",
405
+ "sortReleasedAt": "Ordina per data di rilascio (più vecchi prima)",
406
+ "sortReleasedAtDesc": "Ordina per data di rilascio (più recenti prima)"
395
407
  },
396
408
  "empty": {
397
409
  "desc": "Si prega di creare un modello personalizzato o di importare un modello per iniziare a utilizzarlo",
@@ -199,6 +199,12 @@
199
199
  "all": "すべて",
200
200
  "list": {
201
201
  "disabled": "未使用",
202
+ "disabledActions": {
203
+ "sort": "並び替え方法",
204
+ "sortAlphabetical": "アルファベット順に並び替え",
205
+ "sortAlphabeticalDesc": "アルファベット逆順に並び替え",
206
+ "sortDefault": "デフォルトの並び順"
207
+ },
202
208
  "enabled": "使用中"
203
209
  },
204
210
  "notFound": "検索結果が見つかりません",
@@ -391,7 +397,13 @@
391
397
  "addNew": "モデルを追加",
392
398
  "disabled": "無効",
393
399
  "disabledActions": {
394
- "showMore": "すべて表示"
400
+ "showMore": "すべて表示",
401
+ "sort": "並び替え方法",
402
+ "sortAlphabetical": "アルファベット順に並び替え",
403
+ "sortAlphabeticalDesc": "アルファベット逆順に並び替え",
404
+ "sortDefault": "デフォルトの並び順",
405
+ "sortReleasedAt": "公開日が早い順に並び替え",
406
+ "sortReleasedAtDesc": "公開日が新しい順に並び替え"
395
407
  },
396
408
  "empty": {
397
409
  "desc": "カスタムモデルを作成するか、モデルを取得してから使用を開始してください",
@@ -199,6 +199,12 @@
199
199
  "all": "전체",
200
200
  "list": {
201
201
  "disabled": "비활성화됨",
202
+ "disabledActions": {
203
+ "sort": "정렬 방식",
204
+ "sortAlphabetical": "가나다순 정렬",
205
+ "sortAlphabeticalDesc": "가나다역순 정렬",
206
+ "sortDefault": "기본 정렬"
207
+ },
202
208
  "enabled": "활성화됨"
203
209
  },
204
210
  "notFound": "검색 결과가 없습니다",
@@ -391,7 +397,13 @@
391
397
  "addNew": "모델 추가",
392
398
  "disabled": "비활성화됨",
393
399
  "disabledActions": {
394
- "showMore": "모두 보기"
400
+ "showMore": "모두 보기",
401
+ "sort": "정렬 방식",
402
+ "sortAlphabetical": "가나다순 정렬",
403
+ "sortAlphabeticalDesc": "가나다역순 정렬",
404
+ "sortDefault": "기본 정렬",
405
+ "sortReleasedAt": "최초 출시일 순 정렬",
406
+ "sortReleasedAtDesc": "최신 출시일 순 정렬"
395
407
  },
396
408
  "empty": {
397
409
  "desc": "사용자 정의 모델을 생성하거나 모델을 가져온 후 사용을 시작해 보세요",
@@ -199,6 +199,12 @@
199
199
  "all": "Alles",
200
200
  "list": {
201
201
  "disabled": "Niet ingeschakeld",
202
+ "disabledActions": {
203
+ "sort": "Sorteervolgorde",
204
+ "sortAlphabetical": "Alfabetisch sorteren",
205
+ "sortAlphabeticalDesc": "Omgekeerd alfabetisch sorteren",
206
+ "sortDefault": "Standaard sortering"
207
+ },
202
208
  "enabled": "Ingeschakeld"
203
209
  },
204
210
  "notFound": "Geen zoekresultaten gevonden",
@@ -391,7 +397,13 @@
391
397
  "addNew": "Model toevoegen",
392
398
  "disabled": "Niet ingeschakeld",
393
399
  "disabledActions": {
394
- "showMore": "Toon alles"
400
+ "showMore": "Toon alles",
401
+ "sort": "Sorteervolgorde",
402
+ "sortAlphabetical": "Alfabetisch sorteren",
403
+ "sortAlphabeticalDesc": "Omgekeerd alfabetisch sorteren",
404
+ "sortDefault": "Standaard sortering",
405
+ "sortReleasedAt": "Sorteren op oudste publicatiedatum",
406
+ "sortReleasedAtDesc": "Sorteren op nieuwste publicatiedatum"
395
407
  },
396
408
  "empty": {
397
409
  "desc": "Maak een aangepast model of haal een model op om te beginnen met gebruiken.",
@@ -199,6 +199,12 @@
199
199
  "all": "Wszystko",
200
200
  "list": {
201
201
  "disabled": "Nieaktywny",
202
+ "disabledActions": {
203
+ "sort": "Sposób sortowania",
204
+ "sortAlphabetical": "Sortuj alfabetycznie",
205
+ "sortAlphabeticalDesc": "Sortuj w odwrotnej kolejności alfabetycznej",
206
+ "sortDefault": "Sortowanie domyślne"
207
+ },
202
208
  "enabled": "Aktywny"
203
209
  },
204
210
  "notFound": "Nie znaleziono wyników wyszukiwania",
@@ -391,7 +397,13 @@
391
397
  "addNew": "Dodaj model",
392
398
  "disabled": "Nieaktywne",
393
399
  "disabledActions": {
394
- "showMore": "Pokaż więcej"
400
+ "showMore": "Pokaż więcej",
401
+ "sort": "Sposób sortowania",
402
+ "sortAlphabetical": "Sortuj alfabetycznie",
403
+ "sortAlphabeticalDesc": "Sortuj w odwrotnej kolejności alfabetycznej",
404
+ "sortDefault": "Sortowanie domyślne",
405
+ "sortReleasedAt": "Sortuj według najwcześniejszej daty publikacji",
406
+ "sortReleasedAtDesc": "Sortuj według najnowszej daty publikacji"
395
407
  },
396
408
  "empty": {
397
409
  "desc": "Proszę utworzyć model niestandardowy lub pobrać model, aby rozpocząć korzystanie.",
@@ -199,6 +199,12 @@
199
199
  "all": "Todos",
200
200
  "list": {
201
201
  "disabled": "Desativado",
202
+ "disabledActions": {
203
+ "sort": "Ordenar por",
204
+ "sortAlphabetical": "Ordenar alfabeticamente",
205
+ "sortAlphabeticalDesc": "Ordenar em ordem alfabética reversa",
206
+ "sortDefault": "Ordem padrão"
207
+ },
202
208
  "enabled": "Ativado"
203
209
  },
204
210
  "notFound": "Nenhum resultado encontrado",
@@ -391,7 +397,13 @@
391
397
  "addNew": "Adicionar Modelo",
392
398
  "disabled": "Não habilitado",
393
399
  "disabledActions": {
394
- "showMore": "Mostrar tudo"
400
+ "showMore": "Mostrar tudo",
401
+ "sort": "Ordenar por",
402
+ "sortAlphabetical": "Ordenar alfabeticamente",
403
+ "sortAlphabeticalDesc": "Ordenar em ordem alfabética reversa",
404
+ "sortDefault": "Ordem padrão",
405
+ "sortReleasedAt": "Ordenar por data de lançamento mais antiga",
406
+ "sortReleasedAtDesc": "Ordenar por data de lançamento mais recente"
395
407
  },
396
408
  "empty": {
397
409
  "desc": "Por favor, crie um modelo personalizado ou importe um modelo para começar a usar.",
@@ -199,6 +199,12 @@
199
199
  "all": "Все",
200
200
  "list": {
201
201
  "disabled": "Не активирован",
202
+ "disabledActions": {
203
+ "sort": "Сортировка",
204
+ "sortAlphabetical": "Сортировать по алфавиту",
205
+ "sortAlphabeticalDesc": "Сортировать в обратном алфавитном порядке",
206
+ "sortDefault": "Сортировка по умолчанию"
207
+ },
202
208
  "enabled": "Активирован"
203
209
  },
204
210
  "notFound": "Результаты поиска не найдены",
@@ -391,7 +397,13 @@
391
397
  "addNew": "Добавить модель",
392
398
  "disabled": "Не активирован",
393
399
  "disabledActions": {
394
- "showMore": "Показать все"
400
+ "showMore": "Показать все",
401
+ "sort": "Сортировка",
402
+ "sortAlphabetical": "Сортировать по алфавиту",
403
+ "sortAlphabeticalDesc": "Сортировать в обратном алфавитном порядке",
404
+ "sortDefault": "Сортировка по умолчанию",
405
+ "sortReleasedAt": "Сортировать по дате первого выпуска",
406
+ "sortReleasedAtDesc": "Сортировать по дате последнего выпуска"
395
407
  },
396
408
  "empty": {
397
409
  "desc": "Пожалуйста, создайте пользовательскую модель или загрузите модель, чтобы начать использовать.",
@@ -199,6 +199,12 @@
199
199
  "all": "Tümü",
200
200
  "list": {
201
201
  "disabled": "Devre Dışı",
202
+ "disabledActions": {
203
+ "sort": "Sıralama Yöntemi",
204
+ "sortAlphabetical": "Alfabetik Sırala",
205
+ "sortAlphabeticalDesc": "Alfabetik Ters Sırala",
206
+ "sortDefault": "Varsayılan Sıralama"
207
+ },
202
208
  "enabled": "Aktif"
203
209
  },
204
210
  "notFound": "Arama sonuçları bulunamadı",
@@ -391,7 +397,13 @@
391
397
  "addNew": "Model Ekle",
392
398
  "disabled": "Devre dışı",
393
399
  "disabledActions": {
394
- "showMore": "Hepsini Göster"
400
+ "showMore": "Hepsini Göster",
401
+ "sort": "Sıralama Yöntemi",
402
+ "sortAlphabetical": "Alfabetik Sırala",
403
+ "sortAlphabeticalDesc": "Alfabetik Ters Sırala",
404
+ "sortDefault": "Varsayılan Sıralama",
405
+ "sortReleasedAt": "En Eski Yayın Tarihine Göre Sırala",
406
+ "sortReleasedAtDesc": "En Yeni Yayın Tarihine Göre Sırala"
395
407
  },
396
408
  "empty": {
397
409
  "desc": "Lütfen özel bir model oluşturun veya kullanmaya başlamadan önce bir model çekin",
@@ -199,6 +199,12 @@
199
199
  "all": "Tất cả",
200
200
  "list": {
201
201
  "disabled": "Chưa kích hoạt",
202
+ "disabledActions": {
203
+ "sort": "Cách sắp xếp",
204
+ "sortAlphabetical": "Sắp xếp theo chữ cái",
205
+ "sortAlphabeticalDesc": "Sắp xếp theo chữ cái (Z-A)",
206
+ "sortDefault": "Sắp xếp mặc định"
207
+ },
202
208
  "enabled": "Đã kích hoạt"
203
209
  },
204
210
  "notFound": "Không tìm thấy kết quả tìm kiếm",
@@ -391,7 +397,13 @@
391
397
  "addNew": "Thêm mô hình",
392
398
  "disabled": "Chưa được kích hoạt",
393
399
  "disabledActions": {
394
- "showMore": "Hiển thị tất cả"
400
+ "showMore": "Hiển thị tất cả",
401
+ "sort": "Cách sắp xếp",
402
+ "sortAlphabetical": "Sắp xếp theo chữ cái",
403
+ "sortAlphabeticalDesc": "Sắp xếp theo chữ cái (Z-A)",
404
+ "sortDefault": "Sắp xếp mặc định",
405
+ "sortReleasedAt": "Sắp xếp theo ngày phát hành sớm nhất",
406
+ "sortReleasedAtDesc": "Sắp xếp theo ngày phát hành mới nhất"
395
407
  },
396
408
  "empty": {
397
409
  "desc": "Vui lòng tạo mô hình tùy chỉnh hoặc kéo mô hình để bắt đầu sử dụng",
@@ -199,6 +199,12 @@
199
199
  "all": "全部",
200
200
  "list": {
201
201
  "disabled": "未启用",
202
+ "disabledActions": {
203
+ "sort": "排序方式",
204
+ "sortAlphabetical": "按字母排序",
205
+ "sortAlphabeticalDesc": "按字母倒序排序",
206
+ "sortDefault": "默认排序"
207
+ },
202
208
  "enabled": "已启用"
203
209
  },
204
210
  "notFound": "未找到搜索结果",
@@ -391,7 +397,13 @@
391
397
  "addNew": "添加模型",
392
398
  "disabled": "未启用",
393
399
  "disabledActions": {
394
- "showMore": "显示全部"
400
+ "showMore": "显示全部",
401
+ "sort": "排序方式",
402
+ "sortAlphabetical": "按字母排序",
403
+ "sortAlphabeticalDesc": "按字母倒序排序",
404
+ "sortDefault": "默认排序",
405
+ "sortReleasedAt": "按最早发布时间排序",
406
+ "sortReleasedAtDesc": "按最新发布时间排序"
395
407
  },
396
408
  "empty": {
397
409
  "desc": "请创建自定义模型或拉取模型后开始使用吧",
@@ -199,6 +199,12 @@
199
199
  "all": "全部",
200
200
  "list": {
201
201
  "disabled": "未啟用",
202
+ "disabledActions": {
203
+ "sort": "排序方式",
204
+ "sortAlphabetical": "按字母排序",
205
+ "sortAlphabeticalDesc": "按字母倒序排序",
206
+ "sortDefault": "預設排序"
207
+ },
202
208
  "enabled": "已啟用"
203
209
  },
204
210
  "notFound": "未找到搜索結果",
@@ -391,7 +397,13 @@
391
397
  "addNew": "新增模型",
392
398
  "disabled": "未啟用",
393
399
  "disabledActions": {
394
- "showMore": "顯示全部"
400
+ "showMore": "顯示全部",
401
+ "sort": "排序方式",
402
+ "sortAlphabetical": "按字母排序",
403
+ "sortAlphabeticalDesc": "按字母倒序排序",
404
+ "sortDefault": "預設排序",
405
+ "sortReleasedAt": "按最早發布時間排序",
406
+ "sortReleasedAtDesc": "按最新發布時間排序"
395
407
  },
396
408
  "empty": {
397
409
  "desc": "請創建自定義模型或拉取模型後開始使用吧",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lobehub/lobehub",
3
- "version": "2.0.0-next.37",
3
+ "version": "2.0.0-next.38",
4
4
  "description": "LobeHub - an open-source,comprehensive AI Agent framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.",
5
5
  "keywords": [
6
6
  "framework",
@@ -56,7 +56,7 @@ export const browserless: CrawlImpl = async (url, { filterOptions }) => {
56
56
  if (
57
57
  !!result.content &&
58
58
  result.title &&
59
- // Just a moment... 说明被 CF 拦截了
59
+ // "Just a moment..." indicates being blocked by CloudFlare
60
60
  result.title.trim() !== 'Just a moment...'
61
61
  ) {
62
62
  return {
@@ -6,25 +6,25 @@ import { htmlToMarkdown } from '../utils/htmlToMarkdown';
6
6
  import { DEFAULT_TIMEOUT, withTimeout } from '../utils/withTimeout';
7
7
 
8
8
  const mixinHeaders = {
9
- // 接受的内容类型
9
+ // Accepted content types
10
10
  'Accept':
11
11
  'text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
12
- // 接受的编码方式
12
+ // Accepted encoding methods
13
13
  'Accept-Encoding': 'gzip, deflate, br',
14
- // 接受的语言
14
+ // Accepted languages
15
15
  'Accept-Language': 'en-US,en;q=0.9,zh;q=0.8',
16
- // 缓存控制
16
+ // Cache control
17
17
  'Cache-Control': 'max-age=0',
18
- // 连接类型
18
+ // Connection type
19
19
  'Connection': 'keep-alive',
20
- // 表明请求来自哪个站点
20
+ // Indicates which site the request is from
21
21
  'Referer': 'https://www.google.com/',
22
- // 升级不安全请求
22
+ // Upgrade insecure requests
23
23
  'Upgrade-Insecure-Requests': '1',
24
- // 模拟真实浏览器的 User-Agent
24
+ // Simulate real browser User-Agent
25
25
  'User-Agent':
26
26
  'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/121.0.0.0 Safari/537.36',
27
- // 防止跨站请求伪造
27
+ // Prevent cross-site request forgery
28
28
  'sec-ch-ua': '"Google Chrome";v="121", "Not A(Brand";v="99", "Chromium";v="121"',
29
29
  'sec-ch-ua-mobile': '?0',
30
30
  'sec-ch-ua-platform': '"Windows"',
@@ -19,8 +19,8 @@ export class Crawler {
19
19
  }
20
20
 
21
21
  /**
22
- * 爬取网页内容
23
- * @param options 爬取选项
22
+ * Crawl webpage content
23
+ * @param options Crawl options
24
24
  */
25
25
  async crawl({
26
26
  url,
@@ -31,14 +31,14 @@ export class Crawler {
31
31
  impls?: CrawlImplType[];
32
32
  url: string;
33
33
  }): Promise<CrawlUniformResult> {
34
- // 应用URL规则
34
+ // Apply URL rules
35
35
  const {
36
36
  transformedUrl,
37
37
  filterOptions: ruleFilterOptions,
38
38
  impls: ruleImpls,
39
39
  } = applyUrlRules(url, crawUrlRules);
40
40
 
41
- // 合并用户提供的过滤选项和规则中的过滤选项,用户选项优先
41
+ // Merge user-provided filter options and rule filter options, user options take priority
42
42
  const mergedFilterOptions = {
43
43
  ...ruleFilterOptions,
44
44
  ...userFilterOptions,
@@ -53,7 +53,7 @@ export class Crawler {
53
53
  ? (userImpls.filter((impl) => Object.keys(crawlImpls).includes(impl)) as CrawlImplType[])
54
54
  : systemImpls;
55
55
 
56
- // 按照内置的实现顺序依次尝试
56
+ // Try each implementation in the built-in order
57
57
  for (const impl of finalImpls) {
58
58
  try {
59
59
  const res = await crawlImpls[impl](transformedUrl, { filterOptions: mergedFilterOptions });
@@ -1,32 +1,32 @@
1
1
  import { CrawlUrlRule } from './type';
2
2
 
3
3
  export const crawUrlRules: CrawlUrlRule[] = [
4
- // 搜狗微信链接,使用 search1api
4
+ // Sogou WeChat links, use search1api
5
5
  {
6
6
  impls: ['search1api'],
7
7
  urlPattern: 'https://weixin.sogou.com/link(.*)',
8
8
  },
9
- // 搜狗链接,使用 search1api
9
+ // Sogou links, use search1api
10
10
  {
11
11
  impls: ['search1api'],
12
12
  urlPattern: 'https://sogou.com/link(.*)',
13
13
  },
14
- // YouTube 链接,使用 search1api,格式化 markdown,且可以返回字幕内容
14
+ // YouTube links, use search1api, formatted as markdown, can return subtitle content
15
15
  {
16
16
  impls: ['search1api'],
17
17
  urlPattern: 'https://www.youtube.com/watch(.*)',
18
18
  },
19
- // Reddit 链接,使用 search1api,格式化 markdown,包含标题、作者、互动数量、具体评论内容等
19
+ // Reddit links, use search1api, formatted as markdown, includes title, author, interaction count, specific comment content, etc.
20
20
  {
21
21
  impls: ['search1api'],
22
22
  urlPattern: 'https://www.reddit.com/r/(.*)/comments/(.*)',
23
23
  },
24
- // 微信公众号有爬虫防护,优先使用 search1apijina 作为兜底(目前 jina 爬取会被风控)
24
+ // WeChat official accounts have crawler protection, use search1api first, jina as fallback (currently jina crawling may be blocked)
25
25
  {
26
26
  impls: ['search1api', 'jina'],
27
27
  urlPattern: 'https://mp.weixin.qq.com(.*)',
28
28
  },
29
- // github 源码解析
29
+ // GitHub source code parsing
30
30
  {
31
31
  filterOptions: {
32
32
  enableReadability: false,
@@ -43,7 +43,7 @@ export const crawUrlRules: CrawlUrlRule[] = [
43
43
  // GitHub discussion
44
44
  urlPattern: 'https://github.com/(.*)/discussions/(.*)',
45
45
  },
46
- // 所有 PDF 都用 jina
46
+ // All PDFs use jina
47
47
  {
48
48
  impls: ['jina'],
49
49
  urlPattern: 'https://(.*).pdf',
@@ -53,7 +53,7 @@ export const crawUrlRules: CrawlUrlRule[] = [
53
53
  impls: ['jina'],
54
54
  urlPattern: 'https://arxiv.org/pdf/(.*)',
55
55
  },
56
- // 知乎有爬虫防护,使用 jina
56
+ // Zhihu has crawler protection, use jina
57
57
  {
58
58
  impls: ['jina'],
59
59
  urlPattern: 'https://zhuanlan.zhihu.com(.*)',
@@ -63,7 +63,7 @@ export const crawUrlRules: CrawlUrlRule[] = [
63
63
  urlPattern: 'https://zhihu.com(.*)',
64
64
  },
65
65
  {
66
- // Medium 文章转换为 Scribe.rip
66
+ // Convert Medium articles to Scribe.rip
67
67
  urlPattern: 'https://medium.com/(.*)',
68
68
  urlTransform: 'https://scribe.rip/$1',
69
69
  },
@@ -74,10 +74,10 @@ export const crawUrlRules: CrawlUrlRule[] = [
74
74
  impls: ['jina', 'browserless'],
75
75
  urlPattern: 'https://(twitter.com|x.com)/(.*)',
76
76
  },
77
- // 体育数据网站规则
77
+ // Sports data website rules
78
78
  {
79
79
  filterOptions: {
80
- // 对体育数据表格禁用 Readability 并且转换为纯文本
80
+ // Disable Readability for sports data tables and convert to plain text
81
81
  enableReadability: false,
82
82
  pureText: true,
83
83
  },
@@ -94,13 +94,13 @@ export const crawUrlRules: CrawlUrlRule[] = [
94
94
  impls: ['jina'],
95
95
  urlPattern: 'https://cvpr.thecvf.com(.*)',
96
96
  },
97
- // 飞书用 jina
97
+ // Feishu use jina
98
98
  // https://github.com/lobehub/lobe-chat/issues/6879
99
99
  {
100
100
  impls: ['jina'],
101
101
  urlPattern: 'https://(.*).feishu.cn/(.*)',
102
102
  },
103
- // 小红书存在爬虫防护,使用 Search1API Jina (备用)
103
+ // Xiaohongshu has crawler protection, use Search1API or Jina (fallback)
104
104
  {
105
105
  impls: ['search1api', 'jina'],
106
106
  urlPattern: 'https://(.*).xiaohongshu.com/(.*)',
@@ -9,14 +9,14 @@ export const applyUrlRules = (
9
9
  transformedUrl: string;
10
10
  } => {
11
11
  for (const rule of urlRules) {
12
- // 转换为正则表达式
12
+ // Convert to regular expression
13
13
  const regex = new RegExp(rule.urlPattern);
14
14
  const match = url.match(regex);
15
15
 
16
16
  if (match) {
17
17
  if (rule.urlTransform) {
18
- // 如果有转换规则,进行 URL 转换
19
- // 替换 $1, $2 等占位符为捕获组内容
18
+ // If there is a transformation rule, perform URL transformation
19
+ // Replace placeholders like $1, $2 with capture group content
20
20
  const transformedUrl = rule.urlTransform.replaceAll(
21
21
  /\$(\d+)/g,
22
22
  (_, index) => match[parseInt(index)] || '',
@@ -28,7 +28,7 @@ export const applyUrlRules = (
28
28
  transformedUrl,
29
29
  };
30
30
  } else {
31
- // 没有转换规则但匹配了模式,只返回过滤选项
31
+ // No transformation rule but pattern matched, only return filter options
32
32
  return {
33
33
  filterOptions: rule.filterOptions,
34
34
  impls: rule.impls,
@@ -38,6 +38,6 @@ export const applyUrlRules = (
38
38
  }
39
39
  }
40
40
 
41
- // 没有匹配任何规则,返回原始 URL
41
+ // No rule matched, return original URL
42
42
  return { transformedUrl: url };
43
43
  };
@@ -217,6 +217,9 @@ const TokenDetail = memo<TokenDetailProps>(({ meta, model, provider }) => {
217
217
  <Icon icon={isShowCredit ? BadgeCent : CoinsIcon} />
218
218
  <AnimatedNumber
219
219
  formatter={(value) => (formatShortenNumber(value) as string).toLowerCase?.()}
220
+ // Force remount when switching between token/credit to prevent unwanted animation
221
+ // See: https://github.com/lobehub/lobe-chat/pull/10098
222
+ key={isShowCredit ? 'credit' : 'token'}
220
223
  value={totalCount}
221
224
  />
222
225
  </Center>