@lobehub/lobehub 2.0.0-next.304 → 2.0.0-next.305

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.
Files changed (55) hide show
  1. package/.github/workflows/manual-build-desktop.yml +11 -1
  2. package/CHANGELOG.md +25 -0
  3. package/apps/desktop/.i18nrc.js +3 -3
  4. package/apps/desktop/electron.vite.config.ts +0 -2
  5. package/apps/desktop/resources/locales/ar/dialog.json +5 -1
  6. package/apps/desktop/resources/locales/ar/menu.json +16 -0
  7. package/apps/desktop/resources/locales/bg-BG/dialog.json +5 -1
  8. package/apps/desktop/resources/locales/bg-BG/menu.json +16 -0
  9. package/apps/desktop/resources/locales/de-DE/dialog.json +5 -1
  10. package/apps/desktop/resources/locales/de-DE/menu.json +16 -0
  11. package/apps/desktop/resources/locales/en/common.json +26 -0
  12. package/apps/desktop/resources/locales/en/dialog.json +27 -0
  13. package/apps/desktop/resources/locales/en/menu.json +73 -0
  14. package/apps/desktop/resources/locales/es-ES/dialog.json +5 -1
  15. package/apps/desktop/resources/locales/es-ES/menu.json +16 -0
  16. package/apps/desktop/resources/locales/fa-IR/dialog.json +5 -1
  17. package/apps/desktop/resources/locales/fa-IR/menu.json +16 -0
  18. package/apps/desktop/resources/locales/fr-FR/dialog.json +5 -1
  19. package/apps/desktop/resources/locales/fr-FR/menu.json +16 -0
  20. package/apps/desktop/resources/locales/it-IT/dialog.json +5 -1
  21. package/apps/desktop/resources/locales/it-IT/menu.json +16 -0
  22. package/apps/desktop/resources/locales/ja-JP/dialog.json +5 -1
  23. package/apps/desktop/resources/locales/ja-JP/menu.json +16 -0
  24. package/apps/desktop/resources/locales/ko-KR/dialog.json +5 -1
  25. package/apps/desktop/resources/locales/ko-KR/menu.json +16 -0
  26. package/apps/desktop/resources/locales/nl-NL/dialog.json +5 -1
  27. package/apps/desktop/resources/locales/nl-NL/menu.json +16 -0
  28. package/apps/desktop/resources/locales/pl-PL/dialog.json +5 -1
  29. package/apps/desktop/resources/locales/pl-PL/menu.json +16 -0
  30. package/apps/desktop/resources/locales/pt-BR/dialog.json +5 -1
  31. package/apps/desktop/resources/locales/pt-BR/menu.json +16 -0
  32. package/apps/desktop/resources/locales/ru-RU/dialog.json +5 -1
  33. package/apps/desktop/resources/locales/ru-RU/menu.json +16 -0
  34. package/apps/desktop/resources/locales/tr-TR/dialog.json +5 -1
  35. package/apps/desktop/resources/locales/tr-TR/menu.json +16 -0
  36. package/apps/desktop/resources/locales/vi-VN/dialog.json +5 -1
  37. package/apps/desktop/resources/locales/vi-VN/menu.json +16 -0
  38. package/apps/desktop/resources/locales/zh-TW/dialog.json +5 -1
  39. package/apps/desktop/resources/locales/zh-TW/menu.json +16 -0
  40. package/apps/desktop/scripts/update-test/README.md +15 -0
  41. package/apps/desktop/src/main/core/infrastructure/BackendProxyProtocolManager.ts +7 -6
  42. package/apps/desktop/src/main/core/infrastructure/UpdaterManager.ts +38 -5
  43. package/apps/desktop/src/main/utils/logger.ts +2 -2
  44. package/changelog/v1.json +5 -0
  45. package/locales/en-US/auth.json +5 -0
  46. package/locales/zh-CN/auth.json +5 -0
  47. package/package.json +6 -5
  48. package/packages/builtin-tool-agent-builder/src/ExecutionRuntime/index.ts +362 -30
  49. package/packages/builtin-tool-agent-builder/src/client/Intervention/InstallPlugin.tsx +28 -4
  50. package/scripts/electronWorkflow/buildDesktopChannel.ts +135 -0
  51. package/src/app/[variants]/(main)/_layout/index.tsx +2 -0
  52. package/src/features/DesktopNavigationBridge/index.tsx +0 -9
  53. package/src/features/Electron/AuthRequiredModal/index.tsx +151 -0
  54. package/src/locales/default/auth.ts +6 -0
  55. package/src/utils/errorResponse.ts +21 -1
@@ -11,6 +11,10 @@
11
11
  "error.detail": "작업 중 오류가 발생했습니다. 나중에 다시 시도해 주세요.",
12
12
  "error.message": "오류 발생",
13
13
  "error.title": "오류",
14
+ "fullDiskAccess.message": "LobeHub는 파일을 읽고 지식 기반 기능을 활성화하기 위해 전체 디스크 접근 권한이 필요합니다. 시스템 설정에서 접근 권한을 부여해 주세요.",
15
+ "fullDiskAccess.openSettings": "설정 열기",
16
+ "fullDiskAccess.skip": "나중에",
17
+ "fullDiskAccess.title": "전체 디스크 접근 권한 필요",
14
18
  "update.downloadAndInstall": "다운로드 및 설치",
15
19
  "update.downloadComplete": "다운로드 완료",
16
20
  "update.downloadCompleteMessage": "업데이트 패키지가 다운로드 완료되었습니다. 지금 설치하시겠습니까?",
@@ -20,4 +24,4 @@
20
24
  "update.newVersion": "새 버전 발견",
21
25
  "update.newVersionAvailable": "새 버전 발견: {{version}}",
22
26
  "update.skipThisVersion": "이 버전 건너뛰기"
23
- }
27
+ }
@@ -3,10 +3,24 @@
3
3
  "dev.devPanel": "개발자 패널",
4
4
  "dev.devTools": "개발자 도구",
5
5
  "dev.forceReload": "강제 새로 고침",
6
+ "dev.openSettingsFile": "설정 파일 열기",
6
7
  "dev.openStore": "저장 파일 열기",
8
+ "dev.openUpdaterCacheDir": "업데이터 캐시 열기",
9
+ "dev.openUserDataDir": "사용자 데이터 열기",
10
+ "dev.permissions.accessibility.request": "접근성 권한 요청",
11
+ "dev.permissions.fullDisk.open": "전체 디스크 접근 설정 열기",
12
+ "dev.permissions.fullDisk.request": "전체 디스크 접근 권한 요청",
13
+ "dev.permissions.microphone.request": "마이크 권한 요청",
14
+ "dev.permissions.notification.request": "알림 권한 요청",
15
+ "dev.permissions.screen.request": "화면 녹화 권한 요청",
16
+ "dev.permissions.title": "권한",
7
17
  "dev.refreshMenu": "메뉴 새로 고침",
8
18
  "dev.reload": "새로 고침",
19
+ "dev.simulateAutoDownload": "자동 다운로드 시뮬레이션 (3초)",
20
+ "dev.simulateDownloadComplete": "다운로드 완료 시뮬레이션",
21
+ "dev.simulateDownloadProgress": "다운로드 진행 시뮬레이션",
9
22
  "dev.title": "개발",
23
+ "dev.updaterSimulation": "업데이터 시뮬레이션",
10
24
  "edit.copy": "복사",
11
25
  "edit.cut": "잘라내기",
12
26
  "edit.delete": "삭제",
@@ -23,6 +37,8 @@
23
37
  "file.title": "파일",
24
38
  "help.about": "정보",
25
39
  "help.githubRepo": "GitHub 저장소",
40
+ "help.openConfigDir": "설정 디렉터리 열기",
41
+ "help.openLogsDir": "로그 디렉터리 열기",
26
42
  "help.reportIssue": "문제 보고",
27
43
  "help.title": "도움말",
28
44
  "help.visitWebsite": "웹사이트 방문",
@@ -11,6 +11,10 @@
11
11
  "error.detail": "Er is een fout opgetreden tijdens de operatie, probeer het later opnieuw",
12
12
  "error.message": "Er is een fout opgetreden",
13
13
  "error.title": "Fout",
14
+ "fullDiskAccess.message": "LobeHub heeft volledige schijf toegang nodig om bestanden te lezen en functies van de kennisbank mogelijk te maken. Geef toegang via de Systeeminstellingen.",
15
+ "fullDiskAccess.openSettings": "Instellingen openen",
16
+ "fullDiskAccess.skip": "Later",
17
+ "fullDiskAccess.title": "Volledige schijf toegang vereist",
14
18
  "update.downloadAndInstall": "Downloaden en installeren",
15
19
  "update.downloadComplete": "Download voltooid",
16
20
  "update.downloadCompleteMessage": "Het updatepakket is gedownload, wilt u het nu installeren?",
@@ -20,4 +24,4 @@
20
24
  "update.newVersion": "Nieuwe versie gevonden",
21
25
  "update.newVersionAvailable": "Nieuwe versie beschikbaar: {{version}}",
22
26
  "update.skipThisVersion": "Deze versie overslaan"
23
- }
27
+ }
@@ -3,10 +3,24 @@
3
3
  "dev.devPanel": "Ontwikkelaarspaneel",
4
4
  "dev.devTools": "Ontwikkelaarstools",
5
5
  "dev.forceReload": "Forceer herladen",
6
+ "dev.openSettingsFile": "Instellingenbestand openen",
6
7
  "dev.openStore": "Open opslagbestand",
8
+ "dev.openUpdaterCacheDir": "Updater-cache openen",
9
+ "dev.openUserDataDir": "Gebruikersgegevens openen",
10
+ "dev.permissions.accessibility.request": "Toegankelijkheidsmachtiging aanvragen",
11
+ "dev.permissions.fullDisk.open": "Instellingen voor volledige schijf toegang openen",
12
+ "dev.permissions.fullDisk.request": "Machtiging voor volledige schijf toegang aanvragen",
13
+ "dev.permissions.microphone.request": "Microfoonmachtiging aanvragen",
14
+ "dev.permissions.notification.request": "Machtiging voor meldingen aanvragen",
15
+ "dev.permissions.screen.request": "Machtiging voor schermopname aanvragen",
16
+ "dev.permissions.title": "Machtigingen",
7
17
  "dev.refreshMenu": "Menu verversen",
8
18
  "dev.reload": "Herladen",
19
+ "dev.simulateAutoDownload": "Automatisch downloaden simuleren (3s)",
20
+ "dev.simulateDownloadComplete": "Download voltooid simuleren",
21
+ "dev.simulateDownloadProgress": "Downloadvoortgang simuleren",
9
22
  "dev.title": "Ontwikkeling",
23
+ "dev.updaterSimulation": "Updater-simulatie",
10
24
  "edit.copy": "Kopiëren",
11
25
  "edit.cut": "Knippen",
12
26
  "edit.delete": "Verwijderen",
@@ -23,6 +37,8 @@
23
37
  "file.title": "Bestand",
24
38
  "help.about": "Over",
25
39
  "help.githubRepo": "GitHub-repo",
40
+ "help.openConfigDir": "Configuratiemap openen",
41
+ "help.openLogsDir": "Logmap openen",
26
42
  "help.reportIssue": "Probleem melden",
27
43
  "help.title": "Hulp",
28
44
  "help.visitWebsite": "Bezoek de website",
@@ -11,6 +11,10 @@
11
11
  "error.detail": "Wystąpił błąd podczas operacji, spróbuj ponownie później",
12
12
  "error.message": "Wystąpił błąd",
13
13
  "error.title": "Błąd",
14
+ "fullDiskAccess.message": "LobeHub wymaga pełnego dostępu do dysku, aby odczytywać pliki i umożliwić funkcje bazy wiedzy. Proszę przyznać dostęp w ustawieniach systemowych.",
15
+ "fullDiskAccess.openSettings": "Otwórz ustawienia",
16
+ "fullDiskAccess.skip": "Później",
17
+ "fullDiskAccess.title": "Wymagany pełny dostęp do dysku",
14
18
  "update.downloadAndInstall": "Pobierz i zainstaluj",
15
19
  "update.downloadComplete": "Pobieranie zakończone",
16
20
  "update.downloadCompleteMessage": "Pakiet aktualizacji został pobrany, czy chcesz go teraz zainstalować?",
@@ -20,4 +24,4 @@
20
24
  "update.newVersion": "Nowa wersja dostępna",
21
25
  "update.newVersionAvailable": "Znaleziono nową wersję: {{version}}",
22
26
  "update.skipThisVersion": "Pomiń tę wersję"
23
- }
27
+ }
@@ -3,10 +3,24 @@
3
3
  "dev.devPanel": "Panel dewelopera",
4
4
  "dev.devTools": "Narzędzia dewelopera",
5
5
  "dev.forceReload": "Wymuś ponowne załadowanie",
6
+ "dev.openSettingsFile": "Otwórz plik ustawień",
6
7
  "dev.openStore": "Otwórz plik magazynu",
8
+ "dev.openUpdaterCacheDir": "Otwórz pamięć podręczną aktualizatora",
9
+ "dev.openUserDataDir": "Otwórz dane użytkownika",
10
+ "dev.permissions.accessibility.request": "Poproś o uprawnienia dostępu",
11
+ "dev.permissions.fullDisk.open": "Otwórz ustawienia pełnego dostępu do dysku",
12
+ "dev.permissions.fullDisk.request": "Poproś o pełny dostęp do dysku",
13
+ "dev.permissions.microphone.request": "Poproś o dostęp do mikrofonu",
14
+ "dev.permissions.notification.request": "Poproś o pozwolenie na powiadomienia",
15
+ "dev.permissions.screen.request": "Poproś o pozwolenie na nagrywanie ekranu",
16
+ "dev.permissions.title": "Uprawnienia",
7
17
  "dev.refreshMenu": "Odśwież menu",
8
18
  "dev.reload": "Przeładuj",
19
+ "dev.simulateAutoDownload": "Symuluj automatyczne pobieranie (3s)",
20
+ "dev.simulateDownloadComplete": "Symuluj zakończenie pobierania",
21
+ "dev.simulateDownloadProgress": "Symuluj postęp pobierania",
9
22
  "dev.title": "Rozwój",
23
+ "dev.updaterSimulation": "Symulacja aktualizatora",
10
24
  "edit.copy": "Kopiuj",
11
25
  "edit.cut": "Wytnij",
12
26
  "edit.delete": "Usuń",
@@ -23,6 +37,8 @@
23
37
  "file.title": "Plik",
24
38
  "help.about": "O",
25
39
  "help.githubRepo": "Repozytorium GitHub",
40
+ "help.openConfigDir": "Otwórz katalog konfiguracji",
41
+ "help.openLogsDir": "Otwórz katalog logów",
26
42
  "help.reportIssue": "Zgłoś problem",
27
43
  "help.title": "Pomoc",
28
44
  "help.visitWebsite": "Odwiedź stronę internetową",
@@ -11,6 +11,10 @@
11
11
  "error.detail": "Ocorreu um erro durante a operação, por favor tente novamente mais tarde",
12
12
  "error.message": "Ocorreu um erro",
13
13
  "error.title": "Erro",
14
+ "fullDiskAccess.message": "O LobeHub precisa de Acesso Completo ao Disco para ler arquivos e ativar os recursos da base de conhecimento. Por favor, conceda acesso nas Configurações do Sistema.",
15
+ "fullDiskAccess.openSettings": "Abrir Configurações",
16
+ "fullDiskAccess.skip": "Depois",
17
+ "fullDiskAccess.title": "Acesso Completo ao Disco Necessário",
14
18
  "update.downloadAndInstall": "Baixar e instalar",
15
19
  "update.downloadComplete": "Download completo",
16
20
  "update.downloadCompleteMessage": "O pacote de atualização foi baixado com sucesso, deseja instalá-lo agora?",
@@ -20,4 +24,4 @@
20
24
  "update.newVersion": "Nova versão disponível",
21
25
  "update.newVersionAvailable": "Nova versão encontrada: {{version}}",
22
26
  "update.skipThisVersion": "Ignorar esta versão"
23
- }
27
+ }
@@ -3,10 +3,24 @@
3
3
  "dev.devPanel": "Painel do Desenvolvedor",
4
4
  "dev.devTools": "Ferramentas do Desenvolvedor",
5
5
  "dev.forceReload": "Recarregar Forçadamente",
6
+ "dev.openSettingsFile": "Abrir arquivo de configurações",
6
7
  "dev.openStore": "Abrir arquivo de armazenamento",
8
+ "dev.openUpdaterCacheDir": "Abrir cache do atualizador",
9
+ "dev.openUserDataDir": "Abrir dados do usuário",
10
+ "dev.permissions.accessibility.request": "Solicitar permissão de acessibilidade",
11
+ "dev.permissions.fullDisk.open": "Abrir configurações de acesso total ao disco",
12
+ "dev.permissions.fullDisk.request": "Solicitar permissão de acesso total ao disco",
13
+ "dev.permissions.microphone.request": "Solicitar permissão para microfone",
14
+ "dev.permissions.notification.request": "Solicitar permissão para notificações",
15
+ "dev.permissions.screen.request": "Solicitar permissão para gravação de tela",
16
+ "dev.permissions.title": "Permissões",
7
17
  "dev.refreshMenu": "Atualizar menu",
8
18
  "dev.reload": "Recarregar",
19
+ "dev.simulateAutoDownload": "Simular download automático (3s)",
20
+ "dev.simulateDownloadComplete": "Simular download concluído",
21
+ "dev.simulateDownloadProgress": "Simular progresso do download",
9
22
  "dev.title": "Desenvolvimento",
23
+ "dev.updaterSimulation": "Simulação do atualizador",
10
24
  "edit.copy": "Copiar",
11
25
  "edit.cut": "Cortar",
12
26
  "edit.delete": "Excluir",
@@ -23,6 +37,8 @@
23
37
  "file.title": "Arquivo",
24
38
  "help.about": "Sobre",
25
39
  "help.githubRepo": "Repositório do GitHub",
40
+ "help.openConfigDir": "Abrir diretório de configuração",
41
+ "help.openLogsDir": "Abrir diretório de logs",
26
42
  "help.reportIssue": "Reportar Problema",
27
43
  "help.title": "Ajuda",
28
44
  "help.visitWebsite": "Visitar o Site",
@@ -11,6 +11,10 @@
11
11
  "error.detail": "Произошла ошибка во время операции, пожалуйста, попробуйте позже",
12
12
  "error.message": "Произошла ошибка",
13
13
  "error.title": "Ошибка",
14
+ "fullDiskAccess.message": "LobeHub требует полный доступ к диску для чтения файлов и активации функций базы знаний. Пожалуйста, предоставьте доступ в системных настройках.",
15
+ "fullDiskAccess.openSettings": "Открыть настройки",
16
+ "fullDiskAccess.skip": "Позже",
17
+ "fullDiskAccess.title": "Требуется полный доступ к диску",
14
18
  "update.downloadAndInstall": "Скачать и установить",
15
19
  "update.downloadComplete": "Скачивание завершено",
16
20
  "update.downloadCompleteMessage": "Обновление загружено, хотите установить сейчас?",
@@ -20,4 +24,4 @@
20
24
  "update.newVersion": "Обнаружена новая версия",
21
25
  "update.newVersionAvailable": "Обнаружена новая версия: {{version}}",
22
26
  "update.skipThisVersion": "Пропустить эту версию"
23
- }
27
+ }
@@ -3,10 +3,24 @@
3
3
  "dev.devPanel": "Панель разработчика",
4
4
  "dev.devTools": "Инструменты разработчика",
5
5
  "dev.forceReload": "Принудительная перезагрузка",
6
+ "dev.openSettingsFile": "Открыть файл настроек",
6
7
  "dev.openStore": "Открыть файл хранилища",
8
+ "dev.openUpdaterCacheDir": "Открыть кэш обновлений",
9
+ "dev.openUserDataDir": "Открыть данные пользователя",
10
+ "dev.permissions.accessibility.request": "Запросить разрешение на доступность",
11
+ "dev.permissions.fullDisk.open": "Открыть настройки полного доступа к диску",
12
+ "dev.permissions.fullDisk.request": "Запросить разрешение на полный доступ к диску",
13
+ "dev.permissions.microphone.request": "Запросить разрешение на использование микрофона",
14
+ "dev.permissions.notification.request": "Запросить разрешение на уведомления",
15
+ "dev.permissions.screen.request": "Запросить разрешение на запись экрана",
16
+ "dev.permissions.title": "Разрешения",
7
17
  "dev.refreshMenu": "Обновить меню",
8
18
  "dev.reload": "Перезагрузить",
19
+ "dev.simulateAutoDownload": "Симуляция автозагрузки (3 с)",
20
+ "dev.simulateDownloadComplete": "Симуляция завершения загрузки",
21
+ "dev.simulateDownloadProgress": "Симуляция прогресса загрузки",
9
22
  "dev.title": "Разработка",
23
+ "dev.updaterSimulation": "Симуляция обновления",
10
24
  "edit.copy": "Копировать",
11
25
  "edit.cut": "Вырезать",
12
26
  "edit.delete": "Удалить",
@@ -23,6 +37,8 @@
23
37
  "file.title": "Файл",
24
38
  "help.about": "О программе",
25
39
  "help.githubRepo": "Репозиторий GitHub",
40
+ "help.openConfigDir": "Открыть каталог конфигурации",
41
+ "help.openLogsDir": "Открыть каталог журналов",
26
42
  "help.reportIssue": "Сообщить о проблеме",
27
43
  "help.title": "Помощь",
28
44
  "help.visitWebsite": "Посетить сайт",
@@ -11,6 +11,10 @@
11
11
  "error.detail": "İşlem sırasında bir hata oluştu, lütfen daha sonra tekrar deneyin",
12
12
  "error.message": "Hata oluştu",
13
13
  "error.title": "Hata",
14
+ "fullDiskAccess.message": "LobeHub, dosyaları okuyabilmek ve bilgi tabanı özelliklerini etkinleştirebilmek için Tam Disk Erişimi gerektirir. Lütfen Sistem Ayarları'ndan erişim izni verin.",
15
+ "fullDiskAccess.openSettings": "Ayarları Aç",
16
+ "fullDiskAccess.skip": "Daha Sonra",
17
+ "fullDiskAccess.title": "Tam Disk Erişimi Gerekiyor",
14
18
  "update.downloadAndInstall": "İndir ve Yükle",
15
19
  "update.downloadComplete": "İndirme tamamlandı",
16
20
  "update.downloadCompleteMessage": "Güncelleme paketi indirildi, hemen yüklemek ister misiniz?",
@@ -20,4 +24,4 @@
20
24
  "update.newVersion": "Yeni sürüm bulundu",
21
25
  "update.newVersionAvailable": "Yeni sürüm bulundu: {{version}}",
22
26
  "update.skipThisVersion": "Bu sürümü atla"
23
- }
27
+ }
@@ -3,10 +3,24 @@
3
3
  "dev.devPanel": "Geliştirici Paneli",
4
4
  "dev.devTools": "Geliştirici Araçları",
5
5
  "dev.forceReload": "Zorla Yenile",
6
+ "dev.openSettingsFile": "Ayarlar Dosyasını Aç",
6
7
  "dev.openStore": "Depolama dosyasını aç",
8
+ "dev.openUpdaterCacheDir": "Güncelleyici Önbelleğini Aç",
9
+ "dev.openUserDataDir": "Kullanıcı Verilerini Aç",
10
+ "dev.permissions.accessibility.request": "Erişilebilirlik İzni İste",
11
+ "dev.permissions.fullDisk.open": "Tam Disk Erişimi Ayarlarını Aç",
12
+ "dev.permissions.fullDisk.request": "Tam Disk Erişimi İzni İste",
13
+ "dev.permissions.microphone.request": "Mikrofon İzni İste",
14
+ "dev.permissions.notification.request": "Bildirim İzni İste",
15
+ "dev.permissions.screen.request": "Ekran Kaydı İzni İste",
16
+ "dev.permissions.title": "İzinler",
7
17
  "dev.refreshMenu": "Menüyü yenile",
8
18
  "dev.reload": "Yenile",
19
+ "dev.simulateAutoDownload": "Otomatik İndirmeyi Simüle Et (3s)",
20
+ "dev.simulateDownloadComplete": "İndirme Tamamlanmasını Simüle Et",
21
+ "dev.simulateDownloadProgress": "İndirme İlerlemesini Simüle Et",
9
22
  "dev.title": "Geliştir",
23
+ "dev.updaterSimulation": "Güncelleyici Simülasyonu",
10
24
  "edit.copy": "Kopyala",
11
25
  "edit.cut": "Kes",
12
26
  "edit.delete": "Sil",
@@ -23,6 +37,8 @@
23
37
  "file.title": "Dosya",
24
38
  "help.about": "Hakkında",
25
39
  "help.githubRepo": "GitHub Deposu",
40
+ "help.openConfigDir": "Yapılandırma Dizini Aç",
41
+ "help.openLogsDir": "Kayıtlar Dizini Aç",
26
42
  "help.reportIssue": "Sorun Bildir",
27
43
  "help.title": "Yardım",
28
44
  "help.visitWebsite": "Resmi Web Sitesini Ziyaret Et",
@@ -11,6 +11,10 @@
11
11
  "error.detail": "Đã xảy ra lỗi trong quá trình thực hiện, vui lòng thử lại sau",
12
12
  "error.message": "Đã xảy ra lỗi",
13
13
  "error.title": "Lỗi",
14
+ "fullDiskAccess.message": "LobeHub cần quyền truy cập toàn bộ đĩa để đọc tệp và kích hoạt các tính năng cơ sở tri thức. Vui lòng cấp quyền truy cập trong Cài đặt Hệ thống.",
15
+ "fullDiskAccess.openSettings": "Mở Cài đặt",
16
+ "fullDiskAccess.skip": "Để sau",
17
+ "fullDiskAccess.title": "Yêu cầu quyền truy cập toàn bộ đĩa",
14
18
  "update.downloadAndInstall": "Tải xuống và cài đặt",
15
19
  "update.downloadComplete": "Tải xuống hoàn tất",
16
20
  "update.downloadCompleteMessage": "Gói cập nhật đã tải xuống hoàn tất, có muốn cài đặt ngay không?",
@@ -20,4 +24,4 @@
20
24
  "update.newVersion": "Phát hiện phiên bản mới",
21
25
  "update.newVersionAvailable": "Phát hiện phiên bản mới: {{version}}",
22
26
  "update.skipThisVersion": "Bỏ qua phiên bản này"
23
- }
27
+ }
@@ -3,10 +3,24 @@
3
3
  "dev.devPanel": "Bảng điều khiển nhà phát triển",
4
4
  "dev.devTools": "Công cụ phát triển",
5
5
  "dev.forceReload": "Tải lại cưỡng bức",
6
+ "dev.openSettingsFile": "Mở Tệp Cài Đặt",
6
7
  "dev.openStore": "Mở tệp lưu trữ",
8
+ "dev.openUpdaterCacheDir": "Mở Bộ Nhớ Đệm Cập Nhật",
9
+ "dev.openUserDataDir": "Mở Thư Mục Dữ Liệu Người Dùng",
10
+ "dev.permissions.accessibility.request": "Yêu Cầu Quyền Truy Cập Trợ Năng",
11
+ "dev.permissions.fullDisk.open": "Mở Cài Đặt Truy Cập Ổ Đĩa Toàn Bộ",
12
+ "dev.permissions.fullDisk.request": "Yêu Cầu Quyền Truy Cập Ổ Đĩa Toàn Bộ",
13
+ "dev.permissions.microphone.request": "Yêu Cầu Quyền Sử Dụng Micro",
14
+ "dev.permissions.notification.request": "Yêu Cầu Quyền Thông Báo",
15
+ "dev.permissions.screen.request": "Yêu Cầu Quyền Ghi Màn Hình",
16
+ "dev.permissions.title": "Quyền Truy Cập",
7
17
  "dev.refreshMenu": "Làm mới menu",
8
18
  "dev.reload": "Tải lại",
19
+ "dev.simulateAutoDownload": "Mô Phỏng Tải Tự Động (3 giây)",
20
+ "dev.simulateDownloadComplete": "Mô Phỏng Hoàn Thành Tải",
21
+ "dev.simulateDownloadProgress": "Mô Phỏng Tiến Trình Tải",
9
22
  "dev.title": "Phát triển",
23
+ "dev.updaterSimulation": "Mô Phỏng Trình Cập Nhật",
10
24
  "edit.copy": "Sao chép",
11
25
  "edit.cut": "Cắt",
12
26
  "edit.delete": "Xóa",
@@ -23,6 +37,8 @@
23
37
  "file.title": "Tập tin",
24
38
  "help.about": "Về",
25
39
  "help.githubRepo": "Kho lưu trữ GitHub",
40
+ "help.openConfigDir": "Mở Thư Mục Cấu Hình",
41
+ "help.openLogsDir": "Mở Thư Mục Nhật Ký",
26
42
  "help.reportIssue": "Báo cáo sự cố",
27
43
  "help.title": "Trợ giúp",
28
44
  "help.visitWebsite": "Truy cập trang web",
@@ -11,6 +11,10 @@
11
11
  "error.detail": "操作過程中發生錯誤,請稍後重試",
12
12
  "error.message": "發生錯誤",
13
13
  "error.title": "錯誤",
14
+ "fullDiskAccess.message": "LobeHub 需要完整磁碟存取權限以讀取檔案並啟用知識庫功能。請在系統設定中授予存取權限。",
15
+ "fullDiskAccess.openSettings": "開啟設定",
16
+ "fullDiskAccess.skip": "稍後",
17
+ "fullDiskAccess.title": "需要完整磁碟存取權限",
14
18
  "update.downloadAndInstall": "下載並安裝",
15
19
  "update.downloadComplete": "下載完成",
16
20
  "update.downloadCompleteMessage": "更新包已下載完成,是否立即安裝?",
@@ -20,4 +24,4 @@
20
24
  "update.newVersion": "發現新版本",
21
25
  "update.newVersionAvailable": "發現新版本: {{version}}",
22
26
  "update.skipThisVersion": "跳過此版本"
23
- }
27
+ }
@@ -3,10 +3,24 @@
3
3
  "dev.devPanel": "開發者面板",
4
4
  "dev.devTools": "開發者工具",
5
5
  "dev.forceReload": "強制重新載入",
6
+ "dev.openSettingsFile": "開啟設定檔案",
6
7
  "dev.openStore": "打開儲存檔案",
8
+ "dev.openUpdaterCacheDir": "開啟更新快取資料夾",
9
+ "dev.openUserDataDir": "開啟使用者資料夾",
10
+ "dev.permissions.accessibility.request": "請求輔助功能權限",
11
+ "dev.permissions.fullDisk.open": "開啟完整磁碟存取設定",
12
+ "dev.permissions.fullDisk.request": "請求完整磁碟存取權限",
13
+ "dev.permissions.microphone.request": "請求麥克風權限",
14
+ "dev.permissions.notification.request": "請求通知權限",
15
+ "dev.permissions.screen.request": "請求螢幕錄製權限",
16
+ "dev.permissions.title": "權限",
7
17
  "dev.refreshMenu": "刷新選單",
8
18
  "dev.reload": "重新載入",
19
+ "dev.simulateAutoDownload": "模擬自動下載(3秒)",
20
+ "dev.simulateDownloadComplete": "模擬下載完成",
21
+ "dev.simulateDownloadProgress": "模擬下載進度",
9
22
  "dev.title": "開發",
23
+ "dev.updaterSimulation": "更新模擬",
10
24
  "edit.copy": "複製",
11
25
  "edit.cut": "剪下",
12
26
  "edit.delete": "刪除",
@@ -23,6 +37,8 @@
23
37
  "file.title": "檔案",
24
38
  "help.about": "關於",
25
39
  "help.githubRepo": "GitHub 倉庫",
40
+ "help.openConfigDir": "開啟設定目錄",
41
+ "help.openLogsDir": "開啟日誌目錄",
26
42
  "help.reportIssue": "報告問題",
27
43
  "help.title": "幫助",
28
44
  "help.visitWebsite": "訪問網站",
@@ -45,6 +45,21 @@ bun run build
45
45
  bun run build-local
46
46
  ```
47
47
 
48
+ 如果需要模拟 CI 的渠道构建(Nightly / Beta / Stable),可以使用根目录脚本:
49
+
50
+ ```bash
51
+ # 回到仓库根目录
52
+ cd ../../..
53
+
54
+ # 指定渠道与版本号
55
+ npm run desktop:build-channel -- nightly 2.1.0-nightly.1
56
+ npm run desktop:build-channel -- beta 2.1.0-beta.1
57
+ npm run desktop:build-channel -- stable 2.1.0
58
+
59
+ # 保留 package.json 与 icon 变更
60
+ npm run desktop:build-channel -- stable 2.1.0 --keep-changes
61
+ ```
62
+
48
63
  ### 3. 生成更新文件
49
64
 
50
65
  ```bash
@@ -163,13 +163,14 @@ export class BackendProxyProtocolManager {
163
163
  responseHeaders.set('Access-Control-Allow-Headers', '*');
164
164
  responseHeaders.set('X-Src-Url', rewrittenUrl);
165
165
 
166
- // Handle 401 Unauthorized: notify authorization required regardless of token presence
167
- // This covers cases where:
168
- // 1. No token exists
169
- // 2. Token has expired
170
- // 3. Token has been revoked server-side
166
+ // Handle 401 Unauthorized: only notify authorization required for real auth failures
167
+ // The server sets X-Auth-Required header for real authentication failures (e.g., token expired)
168
+ // Other 401 errors (e.g., invalid API keys) should not trigger re-authentication
171
169
  if (upstreamResponse.status === 401) {
172
- this.notifyAuthorizationRequired();
170
+ const authRequired = upstreamResponse.headers.get('X-Auth-Required') === 'true';
171
+ if (authRequired) {
172
+ this.notifyAuthorizationRequired();
173
+ }
173
174
  }
174
175
 
175
176
  return new Response(upstreamResponse.body, {
@@ -113,6 +113,26 @@ export class UpdaterManager {
113
113
 
114
114
  logger.info(`${manual ? 'Manually checking' : 'Auto checking'} for updates...`);
115
115
 
116
+ // Log detailed updater configuration for debugging
117
+ const inferredChannel =
118
+ autoUpdater.channel ||
119
+ (autoUpdater.currentVersion?.prerelease?.[0]
120
+ ? String(autoUpdater.currentVersion.prerelease[0])
121
+ : null);
122
+
123
+ logger.info('[Updater Config] Channel:', autoUpdater.channel);
124
+ logger.info('[Updater Config] inferredChannel:', inferredChannel);
125
+ logger.info('[Updater Config] allowPrerelease:', autoUpdater.allowPrerelease);
126
+ logger.info('[Updater Config] currentVersion:', autoUpdater.currentVersion?.version);
127
+ logger.info('[Updater Config] allowDowngrade:', autoUpdater.allowDowngrade);
128
+ logger.info('[Updater Config] autoDownload:', autoUpdater.autoDownload);
129
+ logger.info('[Updater Config] forceDevUpdateConfig:', autoUpdater.forceDevUpdateConfig);
130
+ logger.info('[Updater Config] Build channel from config:', channel);
131
+ logger.info('[Updater Config] isStableChannel:', isStableChannel);
132
+ logger.info('[Updater Config] UPDATE_SERVER_URL:', UPDATE_SERVER_URL || '(not set)');
133
+ logger.info('[Updater Config] usingFallbackProvider:', this.usingFallbackProvider);
134
+ logger.info('[Updater Config] GitHub config:', JSON.stringify(githubConfig));
135
+
116
136
  // If manual check, notify renderer process about check start
117
137
  if (manual) {
118
138
  this.mainWindow.broadcast('manualUpdateCheckStart');
@@ -322,7 +342,7 @@ export class UpdaterManager {
322
342
  /**
323
343
  * Configure update provider based on channel
324
344
  * - Stable channel + UPDATE_SERVER_URL: Use generic HTTP provider (S3) as primary, channel=stable
325
- * - Other channels (beta/nightly) or no S3: Use GitHub provider, channel=latest
345
+ * - Other channels (beta/nightly) or no S3: Use GitHub provider, channel unset (defaults to latest)
326
346
  *
327
347
  * Important: S3 has stable-mac.yml, GitHub has latest-mac.yml
328
348
  */
@@ -340,12 +360,15 @@ export class UpdaterManager {
340
360
  url: UPDATE_SERVER_URL,
341
361
  });
342
362
  } else {
343
- // Beta/nightly channels use GitHub, or fallback to GitHub if UPDATE_SERVER_URL not configured
344
- // GitHub releases have latest-mac.yml, so we use default channel (latest)
345
- autoUpdater.channel = 'latest';
363
+ // GitHub provider:
364
+ // - stable: use default latest-mac.yml (GitHub uploads latest* only)
365
+ // - beta/nightly: leave channel unset so prerelease matching uses tag (e.g. next)
346
366
  const reason = this.usingFallbackProvider ? '(fallback from S3)' : '';
347
367
  logger.info(`Configuring GitHub provider for ${channel} channel ${reason}`);
348
- logger.info(`Channel set to: latest (will look for latest-mac.yml)`);
368
+ if (autoUpdater.channel !== null) {
369
+ autoUpdater.channel = null;
370
+ }
371
+ logger.info('Channel left unset (defaults to latest-mac.yml for GitHub)');
349
372
 
350
373
  // For beta/nightly channels, we need prerelease versions
351
374
  const needPrerelease = channel !== 'stable';
@@ -406,6 +429,8 @@ export class UpdaterManager {
406
429
 
407
430
  autoUpdater.on('checking-for-update', () => {
408
431
  logger.info('[Updater] Checking for update...');
432
+ logger.info('[Updater] Current channel:', autoUpdater.channel);
433
+ logger.info('[Updater] Current allowPrerelease:', autoUpdater.allowPrerelease);
409
434
  });
410
435
 
411
436
  autoUpdater.on('update-available', (info) => {
@@ -437,6 +462,14 @@ export class UpdaterManager {
437
462
 
438
463
  autoUpdater.on('error', async (err) => {
439
464
  logger.error('Error in auto-updater:', err);
465
+ // Log configuration state when error occurs for debugging
466
+ logger.error('[Updater Error Context] Channel:', autoUpdater.channel);
467
+ logger.error('[Updater Error Context] allowPrerelease:', autoUpdater.allowPrerelease);
468
+ logger.error('[Updater Error Context] Build channel from config:', channel);
469
+ logger.error('[Updater Error Context] isStableChannel:', isStableChannel);
470
+ logger.error('[Updater Error Context] UPDATE_SERVER_URL:', UPDATE_SERVER_URL || '(not set)');
471
+ logger.error('[Updater Error Context] usingFallbackProvider:', this.usingFallbackProvider);
472
+ logger.error('[Updater Error Context] GitHub config:', JSON.stringify(githubConfig));
440
473
 
441
474
  // Try fallback to GitHub if S3 failed
442
475
  if (!this.usingFallbackProvider && isStableChannel && UPDATE_SERVER_URL) {
@@ -7,8 +7,8 @@ import { getDesktopEnv } from '@/env';
7
7
  electronLog.transports.file.level = 'info'; // Log info level and above in production
8
8
  electronLog.transports.console.level =
9
9
  getDesktopEnv().NODE_ENV === 'development'
10
- ? 'debug' // Show more logs in development
11
- : 'warn'; // Only show warnings and errors in production
10
+ ? 'debug' // 开发环境显示更多日志
11
+ : 'info'; // 生产环境显示 info 及以上级别
12
12
 
13
13
  // Create namespaced debugger
14
14
  export const createLogger = (namespace: string) => {
package/changelog/v1.json CHANGED
@@ -1,4 +1,9 @@
1
1
  [
2
+ {
3
+ "children": {},
4
+ "date": "2026-01-18",
5
+ "version": "2.0.0-next.305"
6
+ },
2
7
  {
3
8
  "children": {
4
9
  "improvements": [
@@ -28,6 +28,11 @@
28
28
  "apikey.list.columns.status": "Enabled Status",
29
29
  "apikey.list.title": "API Key List",
30
30
  "apikey.validation.required": "This field cannot be empty",
31
+ "authModal.description": "Your login session has expired. Please sign in again to continue using cloud sync features.",
32
+ "authModal.later": "Later",
33
+ "authModal.signIn": "Sign In Again",
34
+ "authModal.signingIn": "Signing in...",
35
+ "authModal.title": "Session Expired",
31
36
  "betterAuth.errors.confirmPasswordRequired": "Please confirm your password",
32
37
  "betterAuth.errors.emailExists": "This email is already registered. Please sign in instead",
33
38
  "betterAuth.errors.emailInvalid": "Please enter a valid email address or username",
@@ -28,6 +28,11 @@
28
28
  "apikey.list.columns.status": "启用状态",
29
29
  "apikey.list.title": "API Key 列表",
30
30
  "apikey.validation.required": "内容不得为空",
31
+ "authModal.description": "您的登录会话已过期,请重新登录以继续使用云同步功能。",
32
+ "authModal.later": "稍后",
33
+ "authModal.signIn": "重新登录",
34
+ "authModal.signingIn": "登录中...",
35
+ "authModal.title": "登录已过期",
31
36
  "betterAuth.errors.confirmPasswordRequired": "请确认密码",
32
37
  "betterAuth.errors.emailExists": "该邮箱已注册,请直接登录",
33
38
  "betterAuth.errors.emailInvalid": "请输入有效的邮箱地址或用户名",