device-center 0.2.0-beta.7 → 0.2.0-beta.8

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/src/messages.js CHANGED
@@ -36,7 +36,7 @@ export const messages = {
36
36
  "language": "语言",
37
37
  "guide.title": "开始试用 · Device Center",
38
38
  "guide.open": "进入设备面板 ↗",
39
- "guide.badge": "开发预览 · 0.2.0-beta.7 · MIT",
39
+ "guide.badge": "开发预览 · 0.2.0-beta.8 · MIT",
40
40
  "guide.hero": "让你的 Agent 看见自己的闲置电脑。",
41
41
  "guide.lead": "查看设备资源、记住每台电脑的用途,并在单独授权后读取指定日志。把安装交给本机 Agent,从一台电脑开始。",
42
42
  "guide.platform": "macOS / Linux / Windows 11 候选 · Node.js 24+",
@@ -111,10 +111,10 @@ export const messages = {
111
111
  "login.submit": "登录",
112
112
  "login.unified": "使用 App Services/个人站的统一账号。",
113
113
  "login.link": "使用统一账号登录 ↗",
114
- "login.help": "已有登录会自动进入。需要登录时打开下方账号页,完成后回到这里继续。",
115
- "login.continue": "进入控制面",
114
+ "login.help": "正在检查登录状态。未登录时将打开登录与注册,完成后自动继续。",
115
+ "login.continue": "登录或注册",
116
116
  "login.return": "完成统一账号登录后,回到此页即可。",
117
- "login.first": "请先在统一账号页面完成邮箱或 Google 登录,再回到这里。",
117
+ "login.first": "登录尚未完成,请重试登录或注册。",
118
118
  "login.owner": "当前账号没有此个人面板的访问权限,请使用面板所有者的账号。",
119
119
  "login.rate": "尝试过于频繁,请一分钟后重试。",
120
120
  "login.unavailable": "账号服务暂时连接失败。请在这里重试,无需反复返回个人站。",
@@ -355,7 +355,7 @@ export const messages = {
355
355
  "panel.224": "复制给 Agent",
356
356
  "panel.225": "查看完整安装说明",
357
357
  "panel.226": "交给 Agent 的安装说明",
358
- "panel.227": "支持 macOS / Linux / Windows 11,需要 Node.js 24。说明固定使用 0.2.0-beta.7。本页只复制说明;安装由你交给的 Agent 在本机执行。",
358
+ "panel.227": "支持 macOS / Linux / Windows 11,需要 Node.js 24。说明固定使用 0.2.0-beta.8。本页只复制说明;安装由你交给的 Agent 在本机执行。",
359
359
  "panel.228": "已复制。粘贴给目标电脑上的 Agent;需要绑定时由你登录并核对。",
360
360
  "panel.229": "请手动复制已选中的安装说明。",
361
361
  "panel.230": "无法确认管理电脑",
@@ -875,7 +875,8 @@ export const messages = {
875
875
  "cli.inactive": "已失效",
876
876
  "cli.revoke": "撤销 CLI 授权",
877
877
  "cli.empty": "暂无 CLI 授权。请在管理电脑执行 device-center auth login --confirm。",
878
- "cli.missing": "请求已失效或结果未知。先在终端运行 auth status;需要时重新 auth login。"
878
+ "cli.missing": "请求已失效或结果未知。先在终端运行 auth status;需要时重新 auth login。",
879
+ "login.storage": "请允许本站会话存储后重试,以便登录后继续连接设备。"
879
880
  },
880
881
  "zh-TW": {
881
882
  "agent.setup.prompt": "請閱讀 {skill},依照 Skill 在目前電腦設定 Device Center:角色={role};方式={mode};控制台={origin};系統={os};CLI 固定 {version};本機連接埠 {port};{run}。完成安裝、重用檢查與此角色需要的連線並驗證結果;需要登入、綁定或授權時開啟頁面讓我確認,然後自動繼續,不要只提供命令。",
@@ -914,7 +915,7 @@ export const messages = {
914
915
  "language": "語言",
915
916
  "guide.title": "開始試用 · Device Center",
916
917
  "guide.open": "進入裝置面板 ↗",
917
- "guide.badge": "開發預覽 · 0.2.0-beta.7 · MIT",
918
+ "guide.badge": "開發預覽 · 0.2.0-beta.8 · MIT",
918
919
  "guide.hero": "讓你的 Agent 看見自己的閒置電腦。",
919
920
  "guide.lead": "查看裝置資源、記住每台電腦的用途,並在另外授權後讀取指定日誌。把安裝交給本機 Agent,從一台電腦開始。",
920
921
  "guide.platform": "macOS / Linux / Windows 11 候選 · Node.js 24+",
@@ -989,10 +990,10 @@ export const messages = {
989
990
  "login.submit": "登入",
990
991
  "login.unified": "使用 App Services/個人網站的統一帳號。",
991
992
  "login.link": "使用統一帳號登入 ↗",
992
- "login.help": "已登入時會自動進入。需要登入時開啟下方帳號頁,完成後回到這裡繼續。",
993
- "login.continue": "進入控制面",
993
+ "login.help": "正在確認登入狀態。未登入時將開啟登入與註冊,完成後自動繼續。",
994
+ "login.continue": "登入或註冊",
994
995
  "login.return": "完成統一帳號登入後,返回此頁即可。",
995
- "login.first": "請先在統一帳號頁面以信箱或 Google 登入,再返回此處。",
996
+ "login.first": "登入尚未完成,請重試登入或註冊。",
996
997
  "login.owner": "目前帳號沒有此個人面板的存取權限,請使用面板擁有者的帳號。",
997
998
  "login.rate": "嘗試過於頻繁,請一分鐘後再試。",
998
999
  "login.unavailable": "帳號服務暫時連線失敗。請在此重試,無需反覆返回個人站。",
@@ -1233,7 +1234,7 @@ export const messages = {
1233
1234
  "panel.224": "複製給 Agent",
1234
1235
  "panel.225": "查看完整安裝說明",
1235
1236
  "panel.226": "交給 Agent 的安裝說明",
1236
- "panel.227": "支持 macOS / Linux / Windows 11,需要 Node.js 24。說明固定使用 0.2.0-beta.7。本頁只複製說明;安裝由你交給的 Agent 在本機執行。",
1237
+ "panel.227": "支持 macOS / Linux / Windows 11,需要 Node.js 24。說明固定使用 0.2.0-beta.8。本頁只複製說明;安裝由你交給的 Agent 在本機執行。",
1237
1238
  "panel.228": "已複製。粘貼給目標電腦上的 Agent;需要綁定時由你登入並核對。",
1238
1239
  "panel.229": "請手動複製已選中的安裝說明。",
1239
1240
  "panel.230": "無法確認管理電腦",
@@ -1753,7 +1754,8 @@ export const messages = {
1753
1754
  "cli.inactive": "已失效",
1754
1755
  "cli.revoke": "撤銷 CLI 授權",
1755
1756
  "cli.empty": "尚無 CLI 授權。請執行 device-center auth login --confirm。",
1756
- "cli.missing": "請求已失效或結果未知。先執行 auth status,需要時重新 auth login。"
1757
+ "cli.missing": "請求已失效或結果未知。先執行 auth status,需要時重新 auth login。",
1758
+ "login.storage": "請允許本站工作階段儲存後重試,以便登入後繼續連接裝置。"
1757
1759
  },
1758
1760
  "en": {
1759
1761
  "agent.setup.prompt": "Read {skill} and follow its Skill to set up Device Center on this computer: role={role}; mode={mode}; control plane={origin}; OS={os}; pin CLI {version}; local port {port}; {run}. Inspect existing setup, install or reuse as appropriate, complete the selected role and verify actual results. Open owner login, binding and authorization pages for me to confirm, then continue automatically; execute the setup instead of only giving commands.",
@@ -1792,7 +1794,7 @@ export const messages = {
1792
1794
  "language": "Language",
1793
1795
  "guide.title": "Get started · Device Center",
1794
1796
  "guide.open": "Open device dashboard ↗",
1795
- "guide.badge": "Development preview · 0.2.0-beta.7 · MIT",
1797
+ "guide.badge": "Development preview · 0.2.0-beta.8 · MIT",
1796
1798
  "guide.hero": "Let your Agent see your spare computers.",
1797
1799
  "guide.lead": "View device resources and roles, and read specific logs after separate approval. Let your local Agent handle setup, starting with one computer.",
1798
1800
  "guide.platform": "macOS / Linux / Windows 11 candidate · Node.js 24+",
@@ -1867,10 +1869,10 @@ export const messages = {
1867
1869
  "login.submit": "Sign in",
1868
1870
  "login.unified": "Use your shared App Services / personal-site account.",
1869
1871
  "login.link": "Sign in with your shared account ↗",
1870
- "login.help": "Already signed in? You will enter automatically. Otherwise, open the account page below, sign in, and return here.",
1871
- "login.continue": "Enter dashboard",
1872
+ "login.help": "Checking your session. If needed, sign in or create an account; you will return automatically.",
1873
+ "login.continue": "Sign in or create account",
1872
1874
  "login.return": "Return to this page after signing in to your shared account.",
1873
- "login.first": "Sign in with email or Google on the account page first, then return here.",
1875
+ "login.first": "Sign-in is not complete. Please try signing in or creating an account again.",
1874
1876
  "login.owner": "This account cannot access this personal dashboard. Use the dashboard owner’s account.",
1875
1877
  "login.rate": "Too many attempts. Try again in one minute.",
1876
1878
  "login.unavailable": "The account service could not be reached. Retry here; you do not need to return to the personal site.",
@@ -2111,7 +2113,7 @@ export const messages = {
2111
2113
  "panel.224": "Copy for Agent",
2112
2114
  "panel.225": "View full setup instructions",
2113
2115
  "panel.226": "Instructions for your Agent",
2114
- "panel.227": "macOS / Linux / Windows 11 and Node.js 24 required. Instructions pin 0.2.0-beta.7. This page only copies; your chosen local Agent performs installation.",
2116
+ "panel.227": "macOS / Linux / Windows 11 and Node.js 24 required. Instructions pin 0.2.0-beta.8. This page only copies; your chosen local Agent performs installation.",
2115
2117
  "panel.228": "Copied. Paste into your target computer’s Agent. Sign in and verify binding yourself.",
2116
2118
  "panel.229": "Manually copy the selected setup instructions.",
2117
2119
  "panel.230": "Cannot confirm management computer",
@@ -2631,7 +2633,8 @@ export const messages = {
2631
2633
  "cli.inactive": "Inactive",
2632
2634
  "cli.revoke": "Revoke CLI access",
2633
2635
  "cli.empty": "No CLI grants. Run device-center auth login --confirm on your management computer.",
2634
- "cli.missing": "Request expired or outcome unknown. Run auth status first; use auth login again if needed."
2636
+ "cli.missing": "Request expired or outcome unknown. Run auth status first; use auth login again if needed.",
2637
+ "login.storage": "Allow session storage for this site, then retry so device connection can resume after sign-in."
2635
2638
  },
2636
2639
  "ja": {
2637
2640
  "agent.setup.prompt": "{skill} を読み、Skill に従ってこのパソコンで Device Center を設定してください。役割={role}、方式={mode}、管理画面={origin}、OS={os}、CLI は {version} に固定、ローカルポート {port}、{run}。既存設定を確認してインストールまたは再利用し、役割に必要な接続と実際の結果を検証してください。ログイン・連携・権限承認のページは私が確認できるよう開き、その後自動で続けてください。コマンドの提示だけで終わらないでください。",
@@ -2670,7 +2673,7 @@ export const messages = {
2670
2673
  "language": "言語",
2671
2674
  "guide.title": "はじめる · Device Center",
2672
2675
  "guide.open": "デバイス画面へ ↗",
2673
- "guide.badge": "開発プレビュー · 0.2.0-beta.7 · MIT",
2676
+ "guide.badge": "開発プレビュー · 0.2.0-beta.8 · MIT",
2674
2677
  "guide.hero": "手元の空きパソコンを、Agent のリソースに。",
2675
2678
  "guide.lead": "リソースと各パソコンの用途を確認し、個別の許可を得て指定ログを読み取ります。まずは1台から、ローカルの Agent にセットアップを任せられます。",
2676
2679
  "guide.platform": "macOS / Linux / Windows 11 開発候補 · Node.js 24+",
@@ -2745,10 +2748,10 @@ export const messages = {
2745
2748
  "login.submit": "ログイン",
2746
2749
  "login.unified": "App Services/個人サイト共通のアカウントを使います。",
2747
2750
  "login.link": "共通アカウントでログイン ↗",
2748
- "login.help": "ログイン済みの場合は自動で進みます。必要な場合は下のアカウントページでログインし、ここに戻ってください。",
2749
- "login.continue": "管理画面へ進む",
2751
+ "login.help": "ログイン状態を確認しています。必要な場合はログインまたは登録へ進み、完了後に自動で戻ります。",
2752
+ "login.continue": "ログイン・新規登録",
2750
2753
  "login.return": "共通アカウントへのログイン後、このページに戻ってください。",
2751
- "login.first": "先にアカウントページでメールまたは Google でログインしてから、ここに戻ってください。",
2754
+ "login.first": "ログインが完了していません。ログインまたは登録を再試行してください。",
2752
2755
  "login.owner": "この個人用画面へのアクセス権がありません。所有者のアカウントを使ってください。",
2753
2756
  "login.rate": "試行回数が多すぎます。1分後に再試行してください。",
2754
2757
  "login.unavailable": "アカウントサービスに接続できません。ここで再試行してください。個人サイトに戻る必要はありません。",
@@ -2989,7 +2992,7 @@ export const messages = {
2989
2992
  "panel.224": "Agent 用にコピー",
2990
2993
  "panel.225": "インストール手順を表示",
2991
2994
  "panel.226": "Agent に渡すインストール手順",
2992
- "panel.227": "macOS / Linux / Windows 11 と Node.js 24 に対応。固定バージョン 0.2.0-beta.7 を使用します。この画面は手順のコピーのみで、渡した Agent がローカルでインストールします。",
2995
+ "panel.227": "macOS / Linux / Windows 11 と Node.js 24 に対応。固定バージョン 0.2.0-beta.8 を使用します。この画面は手順のコピーのみで、渡した Agent がローカルでインストールします。",
2993
2996
  "panel.228": "コピーしました。対象コンピューターの Agent に貼り付け、必要な登録は本人がログインして確認してください。",
2994
2997
  "panel.229": "選択された手順を手動でコピーしてください。",
2995
2998
  "panel.230": "管理コンピューターを確認できません",
@@ -3509,7 +3512,8 @@ export const messages = {
3509
3512
  "cli.inactive": "無効",
3510
3513
  "cli.revoke": "CLI 権限を取り消す",
3511
3514
  "cli.empty": "CLI 権限はありません。管理端末で device-center auth login --confirm を実行してください。",
3512
- "cli.missing": "要求が失効したか結果が不明です。まず auth status を実行し、必要なら auth login を再実行します。"
3515
+ "cli.missing": "要求が失効したか結果が不明です。まず auth status を実行し、必要なら auth login を再実行します。",
3516
+ "login.storage": "ログイン後に接続を再開するため、このサイトのセッションストレージを許可して再試行してください。"
3513
3517
  },
3514
3518
  "ko": {
3515
3519
  "agent.setup.prompt": "{skill}을 읽고 Skill에 따라 현재 컴퓨터에 Device Center를 설정하세요. 역할={role}; 방식={mode}; 제어판={origin}; OS={os}; CLI 버전 {version}; 로컬 포트 {port}; {run}. 기존 설정을 확인하고 설치 또는 재사용하여 해당 역할의 연결과 실제 결과를 검증하세요. 로그인, 연결, 권한 승인이 필요하면 제가 확인할 페이지를 열고 자동으로 계속하세요. 명령만 안내하고 끝내지 마세요.",
@@ -3548,7 +3552,7 @@ export const messages = {
3548
3552
  "language": "언어",
3549
3553
  "guide.title": "시작하기 · Device Center",
3550
3554
  "guide.open": "기기 대시보드 열기 ↗",
3551
- "guide.badge": "개발 미리보기 · 0.2.0-beta.7 · MIT",
3555
+ "guide.badge": "개발 미리보기 · 0.2.0-beta.8 · MIT",
3552
3556
  "guide.hero": "사용하지 않는 컴퓨터를 Agent에 연결하세요.",
3553
3557
  "guide.lead": "기기 리소스와 용도를 확인하고 별도 승인 후 지정된 로그를 읽을 수 있습니다. 로컬 Agent에 설치를 맡기고 컴퓨터 한 대부터 시작하세요.",
3554
3558
  "guide.platform": "macOS / Linux / Windows 11 후보 · Node.js 24+",
@@ -3623,10 +3627,10 @@ export const messages = {
3623
3627
  "login.submit": "로그인",
3624
3628
  "login.unified": "App Services / 개인 사이트의 통합 계정을 사용합니다.",
3625
3629
  "login.link": "통합 계정으로 로그인 ↗",
3626
- "login.help": "이미 로그인한 경우 자동으로 이동합니다. 필요한 경우 아래 계정 페이지에서 로그인한 뒤 여기로 돌아오세요.",
3627
- "login.continue": "관리 화면 열기",
3630
+ "login.help": "로그인 상태를 확인합니다. 필요한 경우 로그인 또는 가입으로 이동하며 완료 후 자동으로 돌아옵니다.",
3631
+ "login.continue": "로그인 또는 가입",
3628
3632
  "login.return": "통합 계정 로그인을 마친 뒤 이 페이지로 돌아오세요.",
3629
- "login.first": "먼저 계정 페이지에서 이메일 또는 Google로 로그인한 다음 돌아오세요.",
3633
+ "login.first": "로그인이 완료되지 않았습니다. 로그인 또는 가입을 다시 시도하세요.",
3630
3634
  "login.owner": "현재 계정은 이 개인 대시보드에 접근할 수 없습니다. 소유자 계정을 사용하세요.",
3631
3635
  "login.rate": "시도가 너무 많습니다. 1분 후 다시 시도하세요.",
3632
3636
  "login.unavailable": "계정 서비스에 연결하지 못했습니다. 여기에서 다시 시도하세요. 개인 사이트로 돌아갈 필요는 없습니다.",
@@ -3867,7 +3871,7 @@ export const messages = {
3867
3871
  "panel.224": "Agent용 복사",
3868
3872
  "panel.225": "전체 설치 안내 보기",
3869
3873
  "panel.226": "Agent에게 전달할 설치 안내",
3870
- "panel.227": "macOS / Linux / Windows 11, Node.js 24 지원. 고정 버전 0.2.0-beta.7를 사용합니다. 이 페이지는 안내만 복사하며 전달받은 Agent가 로컬에서 설치합니다.",
3874
+ "panel.227": "macOS / Linux / Windows 11, Node.js 24 지원. 고정 버전 0.2.0-beta.8를 사용합니다. 이 페이지는 안내만 복사하며 전달받은 Agent가 로컬에서 설치합니다.",
3871
3875
  "panel.228": "복사했습니다. 대상 컴퓨터의 Agent에게 붙여 넣고 연결이 필요하면 본인이 로그인하여 확인하세요.",
3872
3876
  "panel.229": "선택된 설치 안내를 수동 복사하세요.",
3873
3877
  "panel.230": "관리 컴퓨터 확인 불가",
@@ -4387,7 +4391,8 @@ export const messages = {
4387
4391
  "cli.inactive": "만료됨",
4388
4392
  "cli.revoke": "CLI 권한 취소",
4389
4393
  "cli.empty": "CLI 권한이 없습니다. 관리 컴퓨터에서 device-center auth login --confirm을 실행하세요.",
4390
- "cli.missing": "요청이 만료되었거나 결과를 알 수 없습니다. auth status를 먼저 확인하고 필요하면 auth login을 다시 실행하세요."
4394
+ "cli.missing": "요청이 만료되었거나 결과를 알 수 없습니다. auth status를 먼저 확인하고 필요하면 auth login을 다시 실행하세요.",
4395
+ "login.storage": "로그인 후 기기 연결을 계속하려면 이 사이트의 세션 저장소를 허용하고 다시 시도하세요."
4391
4396
  },
4392
4397
  "es": {
4393
4398
  "agent.setup.prompt": "Lee {skill} y sigue su Skill para configurar Device Center en este equipo: rol={role}; modo={mode}; panel={origin}; SO={os}; CLI fija {version}; puerto local {port}; {run}. Revisa la configuración existente, instala o reutiliza, completa el rol y verifica resultados reales. Abre las páginas de inicio de sesión, vinculación y autorización para que yo confirme y continúa automáticamente; no te limites a dar comandos.",
@@ -4426,7 +4431,7 @@ export const messages = {
4426
4431
  "language": "Idioma",
4427
4432
  "guide.title": "Primeros pasos · Device Center",
4428
4433
  "guide.open": "Abrir panel de dispositivos ↗",
4429
- "guide.badge": "Vista previa de desarrollo · 0.2.0-beta.7 · MIT",
4434
+ "guide.badge": "Vista previa de desarrollo · 0.2.0-beta.8 · MIT",
4430
4435
  "guide.hero": "Conecta tus equipos disponibles a tu Agent.",
4431
4436
  "guide.lead": "Consulta los recursos y el uso de cada equipo, y lee registros específicos con autorización aparte. Deja la instalación a tu Agent local y empieza con un equipo.",
4432
4437
  "guide.platform": "macOS / Linux / candidato Windows 11 · Node.js 24+",
@@ -4501,10 +4506,10 @@ export const messages = {
4501
4506
  "login.submit": "Iniciar sesión",
4502
4507
  "login.unified": "Usa tu cuenta compartida de App Services / sitio personal.",
4503
4508
  "login.link": "Acceder con cuenta compartida ↗",
4504
- "login.help": "Si ya iniciaste sesión, entrarás automáticamente. Si no, abre la página de cuenta de abajo, accede y vuelve aquí.",
4505
- "login.continue": "Entrar al panel",
4509
+ "login.help": "Comprobando la sesión. Si hace falta, inicia sesión o crea una cuenta; volverás automáticamente.",
4510
+ "login.continue": "Iniciar sesión o registrarse",
4506
4511
  "login.return": "Vuelve a esta página tras acceder a tu cuenta compartida.",
4507
- "login.first": "Primero accede con correo o Google en la página de cuentas y vuelve aquí.",
4512
+ "login.first": "El acceso no se ha completado. Intenta iniciar sesión o registrarte de nuevo.",
4508
4513
  "login.owner": "Esta cuenta no puede acceder al panel personal. Usa la cuenta de su propietario.",
4509
4514
  "login.rate": "Demasiados intentos. Reinténtalo en un minuto.",
4510
4515
  "login.unavailable": "No se pudo conectar con el servicio de cuentas. Reintenta aquí; no necesitas volver al sitio personal.",
@@ -4745,7 +4750,7 @@ export const messages = {
4745
4750
  "panel.224": "Copiar para el Agent",
4746
4751
  "panel.225": "Ver instrucciones completas",
4747
4752
  "panel.226": "Instrucciones de instalación para el Agent",
4748
- "panel.227": "macOS / Linux / Windows 11 con Node.js 24. Usa la versión fija 0.2.0-beta.7. Aquí solo copias instrucciones; el Agent las ejecuta localmente.",
4753
+ "panel.227": "macOS / Linux / Windows 11 con Node.js 24. Usa la versión fija 0.2.0-beta.8. Aquí solo copias instrucciones; el Agent las ejecuta localmente.",
4749
4754
  "panel.228": "Copiado. Pégalo en el Agent del destino; inicia sesión y verifica personalmente si necesita vincularse.",
4750
4755
  "panel.229": "Copia manualmente las instrucciones seleccionadas.",
4751
4756
  "panel.230": "No se puede confirmar el administrador",
@@ -5265,7 +5270,8 @@ export const messages = {
5265
5270
  "cli.inactive": "Inactivo",
5266
5271
  "cli.revoke": "Revocar acceso CLI",
5267
5272
  "cli.empty": "Sin permisos CLI. Ejecuta device-center auth login --confirm en tu equipo.",
5268
- "cli.missing": "Solicitud caducada o resultado desconocido. Ejecuta auth status y, si hace falta, auth login de nuevo."
5273
+ "cli.missing": "Solicitud caducada o resultado desconocido. Ejecuta auth status y, si hace falta, auth login de nuevo.",
5274
+ "login.storage": "Permite el almacenamiento de sesión de este sitio para continuar la conexión tras acceder."
5269
5275
  },
5270
5276
  "fr": {
5271
5277
  "agent.setup.prompt": "Lis {skill} et suis son Skill pour configurer Device Center sur cet ordinateur : rôle={role} ; mode={mode} ; panneau={origin} ; OS={os} ; CLI fixée à {version} ; port local {port} ; {run}. Vérifie l’installation existante, installe ou réutilise, réalise le rôle choisi et contrôle les résultats réels. Ouvre les pages de connexion, liaison et autorisation pour que je confirme, puis continue automatiquement ; ne fournis pas seulement des commandes.",
@@ -5304,7 +5310,7 @@ export const messages = {
5304
5310
  "language": "Langue",
5305
5311
  "guide.title": "Bien démarrer · Device Center",
5306
5312
  "guide.open": "Ouvrir le tableau de bord ↗",
5307
- "guide.badge": "Aperçu de développement · 0.2.0-beta.7 · MIT",
5313
+ "guide.badge": "Aperçu de développement · 0.2.0-beta.8 · MIT",
5308
5314
  "guide.hero": "Donnez à votre Agent accès à vos ordinateurs disponibles.",
5309
5315
  "guide.lead": "Consultez les ressources et le rôle de chaque ordinateur, puis lisez des journaux précis après une autorisation distincte. Confiez l’installation à votre Agent local et commencez avec un ordinateur.",
5310
5316
  "guide.platform": "macOS / Linux / candidat Windows 11 · Node.js 24+",
@@ -5379,10 +5385,10 @@ export const messages = {
5379
5385
  "login.submit": "Se connecter",
5380
5386
  "login.unified": "Utilisez votre compte commun App Services / site personnel.",
5381
5387
  "login.link": "Connexion avec le compte commun ↗",
5382
- "login.help": "Si vous êtes connecté, le panneau s’ouvre automatiquement. Sinon, ouvrez la page de compte ci-dessous, connectez-vous et revenez ici.",
5383
- "login.continue": "Ouvrir le panneau",
5388
+ "login.help": "Vérification de la session. Si nécessaire, connectez-vous ou créez un compte ; le retour est automatique.",
5389
+ "login.continue": "Se connecter ou créer un compte",
5384
5390
  "login.return": "Revenez sur cette page après vous être connecté à votre compte commun.",
5385
- "login.first": "Connectez-vous d’abord par e-mail ou Google sur la page de compte, puis revenez ici.",
5391
+ "login.first": "La connexion est incomplète. Réessayez de vous connecter ou de créer un compte.",
5386
5392
  "login.owner": "Ce compte ne peut pas accéder à ce tableau de bord personnel. Utilisez le compte du propriétaire.",
5387
5393
  "login.rate": "Trop de tentatives. Réessayez dans une minute.",
5388
5394
  "login.unavailable": "Le service de compte est inaccessible. Réessayez ici sans retourner sur le site personnel.",
@@ -5623,7 +5629,7 @@ export const messages = {
5623
5629
  "panel.224": "Copier pour l’Agent",
5624
5630
  "panel.225": "Voir toutes les instructions",
5625
5631
  "panel.226": "Instructions d’installation pour l’Agent",
5626
- "panel.227": "macOS / Linux / Windows 11 avec Node.js 24. Version fixe 0.2.0-beta.7. Cette page copie les instructions ; l’Agent les exécute localement.",
5632
+ "panel.227": "macOS / Linux / Windows 11 avec Node.js 24. Version fixe 0.2.0-beta.8. Cette page copie les instructions ; l’Agent les exécute localement.",
5627
5633
  "panel.228": "Copié. Collez dans l’Agent cible ; connectez-vous et vérifiez personnellement toute liaison nécessaire.",
5628
5634
  "panel.229": "Copiez manuellement les instructions sélectionnées.",
5629
5635
  "panel.230": "Ordinateur de gestion non confirmé",
@@ -6143,7 +6149,8 @@ export const messages = {
6143
6149
  "cli.inactive": "Inactif",
6144
6150
  "cli.revoke": "Révoquer l’accès CLI",
6145
6151
  "cli.empty": "Aucun accès CLI. Exécutez device-center auth login --confirm sur votre ordinateur.",
6146
- "cli.missing": "Demande expirée ou résultat inconnu. Vérifiez auth status, puis relancez auth login si nécessaire."
6152
+ "cli.missing": "Demande expirée ou résultat inconnu. Vérifiez auth status, puis relancez auth login si nécessaire.",
6153
+ "login.storage": "Autorisez le stockage de session pour ce site afin de reprendre la connexion de l’appareil."
6147
6154
  },
6148
6155
  "de": {
6149
6156
  "agent.setup.prompt": "Lies {skill} und richte Device Center nach dem Skill auf diesem Computer ein: Rolle={role}; Modus={mode}; Verwaltung={origin}; OS={os}; CLI fest {version}; lokaler Port {port}; {run}. Prüfe vorhandene Einstellungen, installiere oder verwende sie erneut und verifiziere echte Ergebnisse. Öffne Anmeldung, Kopplung und Berechtigungsseiten für meine Bestätigung und fahre danach automatisch fort; gib nicht nur Befehle aus.",
@@ -6182,7 +6189,7 @@ export const messages = {
6182
6189
  "language": "Sprache",
6183
6190
  "guide.title": "Erste Schritte · Device Center",
6184
6191
  "guide.open": "Geräteübersicht öffnen ↗",
6185
- "guide.badge": "Entwicklungsvorschau · 0.2.0-beta.7 · MIT",
6192
+ "guide.badge": "Entwicklungsvorschau · 0.2.0-beta.8 · MIT",
6186
6193
  "guide.hero": "Mache deine freien Rechner für deinen Agent sichtbar.",
6187
6194
  "guide.lead": "Sieh dir Ressourcen und Einsatzzwecke an und lies bestimmte Protokolle nach gesonderter Freigabe. Lass deinen lokalen Agent die Einrichtung übernehmen und starte mit einem Rechner.",
6188
6195
  "guide.platform": "macOS / Linux / Windows-11-Kandidat · Node.js 24+",
@@ -6257,10 +6264,10 @@ export const messages = {
6257
6264
  "login.submit": "Anmelden",
6258
6265
  "login.unified": "Verwende dein gemeinsames App-Services-/Persönliche-Website-Konto.",
6259
6266
  "login.link": "Mit gemeinsamem Konto anmelden ↗",
6260
- "login.help": "Wenn du angemeldet bist, gelangst du automatisch weiter. Öffne sonst unten die Kontoseite, melde dich an und kehre hierher zurück.",
6261
- "login.continue": "Übersicht öffnen",
6267
+ "login.help": "Die Sitzung wird geprüft. Melde dich bei Bedarf an oder erstelle ein Konto; du kehrst automatisch zurück.",
6268
+ "login.continue": "Anmelden oder registrieren",
6262
6269
  "login.return": "Kehre nach der Anmeldung mit deinem gemeinsamen Konto hierher zurück.",
6263
- "login.first": "Melde dich zuerst auf der Kontoseite per E-Mail oder Google an und kehre dann zurück.",
6270
+ "login.first": "Die Anmeldung ist nicht abgeschlossen. Versuche es erneut.",
6264
6271
  "login.owner": "Dieses Konto hat keinen Zugriff auf die persönliche Übersicht. Verwende das Konto des Eigentümers.",
6265
6272
  "login.rate": "Zu viele Versuche. Bitte in einer Minute erneut versuchen.",
6266
6273
  "login.unavailable": "Der Kontodienst ist nicht erreichbar. Versuche es hier erneut; du musst nicht zur persönlichen Website zurückkehren.",
@@ -6501,7 +6508,7 @@ export const messages = {
6501
6508
  "panel.224": "Für Agent kopieren",
6502
6509
  "panel.225": "Vollständige Anleitung anzeigen",
6503
6510
  "panel.226": "Installationsanleitung für den Agent",
6504
- "panel.227": "macOS / Linux / Windows 11 mit Node.js 24. Feste Version 0.2.0-beta.7. Diese Seite kopiert nur Anweisungen; der Agent führt sie lokal aus.",
6511
+ "panel.227": "macOS / Linux / Windows 11 mit Node.js 24. Feste Version 0.2.0-beta.8. Diese Seite kopiert nur Anweisungen; der Agent führt sie lokal aus.",
6505
6512
  "panel.228": "Kopiert. Beim Ziel-Agent einfügen; nötige Verknüpfung persönlich anmelden und prüfen.",
6506
6513
  "panel.229": "Ausgewählte Anleitung manuell kopieren.",
6507
6514
  "panel.230": "Verwaltungscomputer nicht bestätigt",
@@ -7021,7 +7028,8 @@ export const messages = {
7021
7028
  "cli.inactive": "Inaktiv",
7022
7029
  "cli.revoke": "CLI-Zugriff widerrufen",
7023
7030
  "cli.empty": "Keine CLI-Freigabe. Führe device-center auth login --confirm aus.",
7024
- "cli.missing": "Anfrage abgelaufen oder Ergebnis unbekannt. Prüfe auth status und starte bei Bedarf auth login erneut."
7031
+ "cli.missing": "Anfrage abgelaufen oder Ergebnis unbekannt. Prüfe auth status und starte bei Bedarf auth login erneut.",
7032
+ "login.storage": "Erlaube den Sitzungsspeicher dieser Website, damit die Geräteverbindung nach der Anmeldung fortgesetzt wird."
7025
7033
  },
7026
7034
  "pt-BR": {
7027
7035
  "agent.setup.prompt": "Leia {skill} e siga o Skill para configurar Device Center neste computador: função={role}; modo={mode}; painel={origin}; SO={os}; CLI fixa {version}; porta local {port}; {run}. Verifique a configuração existente, instale ou reutilize, complete a função e confirme resultados reais. Abra as páginas de login, vinculação e autorização para eu confirmar e continue automaticamente; não forneça apenas comandos.",
@@ -7060,7 +7068,7 @@ export const messages = {
7060
7068
  "language": "Idioma",
7061
7069
  "guide.title": "Começar · Device Center",
7062
7070
  "guide.open": "Abrir painel de dispositivos ↗",
7063
- "guide.badge": "Prévia de desenvolvimento · 0.2.0-beta.7 · MIT",
7071
+ "guide.badge": "Prévia de desenvolvimento · 0.2.0-beta.8 · MIT",
7064
7072
  "guide.hero": "Conecte seus computadores disponíveis ao seu Agent.",
7065
7073
  "guide.lead": "Veja os recursos e a finalidade de cada computador e leia logs específicos após autorização separada. Deixe a instalação com seu Agent local e comece com um computador.",
7066
7074
  "guide.platform": "macOS / Linux / candidato Windows 11 · Node.js 24+",
@@ -7135,10 +7143,10 @@ export const messages = {
7135
7143
  "login.submit": "Entrar",
7136
7144
  "login.unified": "Use sua conta unificada do App Services / site pessoal.",
7137
7145
  "login.link": "Entrar com a conta unificada ↗",
7138
- "login.help": "Se você já entrou, o painel abre automaticamente. Caso contrário, abra a página de conta abaixo, entre e volte aqui.",
7139
- "login.continue": "Abrir painel",
7146
+ "login.help": "Verificando a sessão. Se necessário, entre ou crie uma conta; você voltará automaticamente.",
7147
+ "login.continue": "Entrar ou criar conta",
7140
7148
  "login.return": "Volte a esta página após entrar na conta unificada.",
7141
- "login.first": "Primeiro entre com e-mail ou Google na página da conta e depois volte aqui.",
7149
+ "login.first": "O login não foi concluído. Tente entrar ou criar uma conta novamente.",
7142
7150
  "login.owner": "Esta conta não pode acessar este painel pessoal. Use a conta do proprietário.",
7143
7151
  "login.rate": "Muitas tentativas. Tente novamente em um minuto.",
7144
7152
  "login.unavailable": "Não foi possível acessar o serviço de contas. Tente novamente aqui; não é preciso voltar ao site pessoal.",
@@ -7379,7 +7387,7 @@ export const messages = {
7379
7387
  "panel.224": "Copiar para o Agent",
7380
7388
  "panel.225": "Ver instruções completas",
7381
7389
  "panel.226": "Instruções de instalação para o Agent",
7382
- "panel.227": "macOS / Linux / Windows 11 com Node.js 24. Versão fixa 0.2.0-beta.7. A página só copia instruções; o Agent executa localmente.",
7390
+ "panel.227": "macOS / Linux / Windows 11 com Node.js 24. Versão fixa 0.2.0-beta.8. A página só copia instruções; o Agent executa localmente.",
7383
7391
  "panel.228": "Copiado. Cole no Agent de destino; faça login e confira pessoalmente qualquer vínculo necessário.",
7384
7392
  "panel.229": "Copie manualmente as instruções selecionadas.",
7385
7393
  "panel.230": "Administrador não confirmado",
@@ -7899,7 +7907,8 @@ export const messages = {
7899
7907
  "cli.inactive": "Inativo",
7900
7908
  "cli.revoke": "Revogar acesso CLI",
7901
7909
  "cli.empty": "Sem permissões CLI. Execute device-center auth login --confirm no seu computador.",
7902
- "cli.missing": "Solicitação expirada ou resultado desconhecido. Execute auth status e, se necessário, auth login novamente."
7910
+ "cli.missing": "Solicitação expirada ou resultado desconhecido. Execute auth status e, se necessário, auth login novamente.",
7911
+ "login.storage": "Permita o armazenamento de sessão deste site para continuar a conexão após entrar."
7903
7912
  }
7904
7913
  };
7905
7914
 
@@ -7931,3 +7940,150 @@ const installerKeys = Object.keys(installerEnglish);
7931
7940
  for (const [locale, catalog] of Object.entries(messages)) {
7932
7941
  Object.assign(catalog, installerEnglish, Object.fromEntries((installerTranslations[locale] ?? []).map((value, index) => [installerKeys[index], value])));
7933
7942
  }
7943
+
7944
+ // Unified installation guidance and interrupted-pairing recovery, in all supported locales.
7945
+ const recoveryEnglish = {
7946
+ "guide.method.package": "Download installer (recommended)",
7947
+ "guide.package.macosApp": "Mount the DMG and open Install Device Center.app. Confirm each step in Terminal.",
7948
+ "guide.package.unsigned": "Official beta download; no platform code signature. Verify the HTTPS source and SHA-256. Target-device acceptance may still be pending.",
7949
+ "guide.package.archHelp.windows": "On the target PC: Settings → System → About → System type. Most Intel/AMD PCs use x64; Windows on ARM uses ARM64.",
7950
+ "guide.package.archHelp.macos": "On the target Mac: Apple menu → About This Mac. Apple chips use Apple Silicon; Intel processors use Intel.",
7951
+ "guide.package.archHelp.linux": "On the target machine run uname -m: x86_64 uses x64; aarch64 uses ARM64. Requires glibc, not Alpine/musl.",
7952
+ "guide.package.step1": "Download the package for the target computer and open its installer.",
7953
+ "guide.package.step2": "Choose official hosting, this computer only, or an existing self-hosted service once, in the installer.",
7954
+ "guide.package.step3": "For official hosting, sign in or register, then compare the full device fingerprint and approve once.",
7955
+ "guide.package.step4": "Wait for the first resource report. If interrupted, reopen the installer to continue; keep the existing identity.",
7956
+ "guide.package.confirmations": "Your usage mode is chosen in the installer. Downloading does not install, sign in or bind a device.",
7957
+ "pair.checkResult": "Check approval result",
7958
+ "pair.retryTitle": "The connection was interrupted",
7959
+ "pair.retryBody": "Your application is kept in this tab. Restore the network and retry this step; no reinstall or repeated approval is needed.",
7960
+ "pair.retry": "Retry this step",
7961
+ "pair.resumeBody": "This request has expired or is unavailable. If you have already approved it, check the device panel first. Otherwise finish signing in, then reopen the installer on the target computer to continue. Your installation and identity are kept.",
7962
+ "pair.resumeCommand": "Continue connecting without reinstalling",
7963
+ "pair.targetTerminal": "Run this on the target computer (default port 5174; use your original port if different). If this browser is on another operating system, reopen that computer’s installer instead."
7964
+ };
7965
+ const recoveryLocales = {
7966
+ "zh-CN": {
7967
+ "guide.method.package": "下载安装包(推荐)",
7968
+ "guide.package.macosApp": "挂载 DMG 后双击 Install Device Center.app,在终端向导中逐步确认。",
7969
+ "guide.package.unsigned": "官方 beta 下载,尚无平台代码签名。请核对 HTTPS 来源与 SHA-256;部分目标设备仍待实机验收。",
7970
+ "guide.package.archHelp.windows": "在目标电脑打开「设置 → 系统 → 系统信息」,查看系统类型。Intel/AMD 电脑通常选 x64;Windows on ARM 选 ARM64。",
7971
+ "guide.package.archHelp.macos": "在目标 Mac 打开「苹果菜单 → 关于本机」。Apple 芯片选 Apple Silicon,Intel 处理器选 Intel。",
7972
+ "guide.package.archHelp.linux": "在目标电脑执行 uname -m:x86_64 选 x64,aarch64 选 ARM64。需要 glibc,不支持 Alpine/musl。",
7973
+ "guide.package.step1": "下载目标电脑对应的安装包,解压或挂载后打开安装入口。",
7974
+ "guide.package.step2": "只在安装器中选择一次:官方托管、仅此电脑,或已有自建服务。",
7975
+ "guide.package.step3": "官方模式自动打开登录或注册;核对完整设备指纹后批准一次。",
7976
+ "guide.package.step4": "等待首次资源回报。中断后重开安装器继续,保留原来的身份与绑定。",
7977
+ "guide.package.confirmations": "使用模式在安装向导中确认。下载不会执行安装、登录或绑定。",
7978
+ "pair.checkResult": "检查批准结果",
7979
+ "pair.retryTitle": "连接暂时中断",
7980
+ "pair.retryBody": "本次申请仍保留在当前标签页。网络恢复后重试这一步,无需重新安装或重复批准。",
7981
+ "pair.retry": "重试这一步",
7982
+ "pair.resumeBody": "申请已过期或不可用。如果已经批准,请先查看设备面板;否则完成登录后,在目标电脑重新打开安装器继续连接。程序和身份已保留,无需重装。",
7983
+ "pair.resumeCommand": "继续连接,无需重装",
7984
+ "pair.targetTerminal": "在目标电脑终端运行(默认端口 5174,如之前改过,请沿用原端口)。若当前浏览器与目标电脑系统不同,请直接重开目标电脑的安装器。"
7985
+ },
7986
+ "zh-TW": {
7987
+ "guide.method.package": "下載安裝包(推薦)",
7988
+ "guide.package.macosApp": "掛載 DMG 後按兩下 Install Device Center.app,在終端精靈逐步確認。",
7989
+ "guide.package.unsigned": "官方 beta 下載,尚無平台程式碼簽章。請核對 HTTPS 來源與 SHA-256;部分目標裝置仍待實機驗收。",
7990
+ "guide.package.archHelp.windows": "在目標電腦開啟「設定 → 系統 → 關於」,查看系統類型。Intel/AMD 電腦通常選 x64;Windows on ARM 選 ARM64。",
7991
+ "guide.package.archHelp.macos": "在目標 Mac 開啟「蘋果選單 → 關於這台 Mac」。Apple 晶片選 Apple Silicon,Intel 處理器選 Intel。",
7992
+ "guide.package.archHelp.linux": "在目標電腦執行 uname -m:x86_64 選 x64,aarch64 選 ARM64。需要 glibc,不支援 Alpine/musl。",
7993
+ "guide.package.step1": "下載目標電腦對應的安裝包,解壓或掛載後開啟安裝入口。",
7994
+ "guide.package.step2": "只在安裝精靈選擇一次:官方託管、僅此電腦,或既有自建服務。",
7995
+ "guide.package.step3": "官方模式自動開啟登入或註冊;核對完整裝置指紋後核准一次。",
7996
+ "guide.package.step4": "等待首次資源回報。中斷後重開安裝精靈繼續,保留原來的身分與綁定。",
7997
+ "guide.package.confirmations": "使用模式在安裝精靈確認。下載不會執行安裝、登入或綁定。",
7998
+ "pair.checkResult": "檢查核准結果",
7999
+ "pair.retryTitle": "連線暫時中斷",
8000
+ "pair.retryBody": "本次申請仍保留在目前分頁。網路恢復後重試此步驟,無需重新安裝或重複核准。",
8001
+ "pair.retry": "重試此步驟",
8002
+ "pair.resumeBody": "申請已過期或無法使用。如果已核准,請先查看裝置面板;否則完成登入後,在目標電腦重開安裝精靈繼續。程式與身分已保留,無需重裝。",
8003
+ "pair.resumeCommand": "繼續連線,無需重裝",
8004
+ "pair.targetTerminal": "在目標電腦終端執行(預設連接埠 5174,若曾修改請沿用原值)。若瀏覽器與目標電腦系統不同,請重開該電腦的安裝精靈。"
8005
+ }
8006
+ };
8007
+
8008
+ const recoveryTranslations = {
8009
+ ja: [
8010
+ 'インストーラー(推奨)','DMG をマウントし、Install Device Center.app を開いて端末で各手順を確認します。','公式 beta 配布です。プラットフォーム署名はありません。HTTPS の配布元と SHA-256 を確認してください。一部の実機検証は未完了です。',
8011
+ '対象 PC の「設定 → システム → バージョン情報」でシステムの種類を確認します。Intel/AMD は通常 x64、Windows on ARM は ARM64 です。','対象 Mac の「Apple メニュー → この Mac について」で確認します。Apple チップは Apple Silicon、Intel は Intel を選びます。','対象機で uname -m を実行します。x86_64 は x64、aarch64 は ARM64 です。glibc が必要で、Alpine/musl は非対応です。',
8012
+ '対象機に合うパッケージを取得し、インストーラーを開きます。','公式、対象機のみ、既存の自前サービスをインストーラーで一度選びます。','公式モードではログインまたは登録後、完全なデバイス指紋を照合して一度承認します。','初回のリソース報告を待ちます。中断時はインストーラーを開き直します。既存の識別情報と紐付けは保持されます。','利用モードはインストーラーで確認します。ダウンロードだけではインストール、ログイン、紐付けは行いません。',
8013
+ '承認結果を確認','接続が一時的に中断しました','申請はこのタブに保持されています。通信が復旧したらこの手順を再試行してください。再インストールや再承認は不要です。','この手順を再試行','申請が期限切れか利用できません。承認済みなら先にデバイス画面を確認してください。それ以外はログイン後、対象機でインストーラーを開き直してください。プログラムと識別情報は保持されます。','再インストールせず接続を続ける','対象機の端末で実行します。標準ポートは 5174 です。変更済みなら元の値を使います。ブラウザーと対象機の OS が異なる場合は対象機のインストーラーを開き直してください。'
8014
+ ],
8015
+ ko: [
8016
+ '설치 패키지 다운로드 (권장)','DMG를 마운트하고 Install Device Center.app을 연 뒤 터미널에서 각 단계를 확인하세요.','공식 beta 배포이며 플랫폼 코드 서명은 없습니다. HTTPS 출처와 SHA-256을 확인하세요. 일부 대상 장치의 실기 검증은 아직 남아 있습니다.',
8017
+ '대상 PC의 설정 → 시스템 → 정보에서 시스템 종류를 확인하세요. Intel/AMD는 보통 x64, Windows on ARM은 ARM64입니다.','대상 Mac의 Apple 메뉴 → 이 Mac에 관하여에서 확인하세요. Apple 칩은 Apple Silicon, Intel 프로세서는 Intel을 선택하세요.','대상 장치에서 uname -m을 실행하세요. x86_64는 x64, aarch64는 ARM64입니다. glibc가 필요하며 Alpine/musl은 지원하지 않습니다.',
8018
+ '대상 컴퓨터에 맞는 패키지를 다운로드하고 설치 프로그램을 여세요.','설치 프로그램에서 공식 호스팅, 이 컴퓨터만 또는 기존 자체 서비스를 한 번 선택하세요.','공식 모드에서는 로그인 또는 가입 후 전체 장치 지문을 비교하고 한 번 승인하세요.','첫 리소스 보고를 기다리세요. 중단되면 설치 프로그램을 다시 여세요. 기존 신원과 연결은 유지됩니다.','사용 모드는 설치 프로그램에서 확인합니다. 다운로드만으로 설치, 로그인 또는 연결하지 않습니다.',
8019
+ '승인 결과 확인','연결이 일시 중단되었습니다','신청은 현재 탭에 보관되어 있습니다. 네트워크 복구 후 이 단계를 다시 시도하세요. 재설치나 반복 승인은 필요 없습니다.','이 단계 다시 시도','신청이 만료되었거나 사용할 수 없습니다. 이미 승인했다면 장치 패널을 먼저 확인하세요. 그렇지 않으면 로그인 후 대상 컴퓨터에서 설치 프로그램을 다시 여세요. 프로그램과 신원은 유지됩니다.','재설치 없이 연결 계속','대상 컴퓨터의 터미널에서 실행하세요. 기본 포트는 5174이며 변경했다면 기존 값을 쓰세요. 브라우저와 대상 OS가 다르면 대상 컴퓨터의 설치 프로그램을 다시 여세요.'
8020
+ ],
8021
+ es: [
8022
+ 'Descargar instalador (recomendado)','Monte el DMG, abra Install Device Center.app y confirme cada paso en la terminal.','Descarga beta oficial, sin firma de código de plataforma. Verifique el origen HTTPS y SHA-256. Faltan algunas pruebas en dispositivos físicos.',
8023
+ 'En el PC de destino: Configuración → Sistema → Acerca de → Tipo de sistema. Intel/AMD suele usar x64; Windows on ARM usa ARM64.','En el Mac de destino: menú Apple → Acerca de este Mac. Los chips Apple usan Apple Silicon; los procesadores Intel usan Intel.','En el equipo de destino ejecute uname -m: x86_64 usa x64; aarch64 usa ARM64. Requiere glibc, no Alpine/musl.',
8024
+ 'Descargue el paquete para el equipo de destino y abra el instalador.','Elija una vez en el instalador: alojamiento oficial, solo este equipo o un servicio propio existente.','En modo oficial, inicie sesión o regístrese, compare la huella completa y apruebe una vez.','Espere el primer informe de recursos. Si se interrumpe, vuelva a abrir el instalador; se conservan la identidad y el vínculo.','El modo se confirma en el instalador. Descargar no instala, inicia sesión ni vincula dispositivos.',
8025
+ 'Comprobar aprobación','La conexión se interrumpió','La solicitud sigue en esta pestaña. Restablezca la red y reintente este paso; no necesita reinstalar ni repetir la aprobación.','Reintentar este paso','La solicitud caducó o no está disponible. Si ya la aprobó, revise primero el panel. Si no, termine de iniciar sesión y abra de nuevo el instalador en el equipo de destino. Se conservan el programa y la identidad.','Continuar sin reinstalar','Ejecute en el equipo de destino. El puerto predeterminado es 5174; si lo cambió, conserve el original. Si el navegador usa otro sistema, abra el instalador del equipo de destino.'
8026
+ ],
8027
+ fr: [
8028
+ 'Télécharger le programme (recommandé)','Montez le DMG, ouvrez Install Device Center.app et confirmez chaque étape dans le terminal.','Téléchargement beta officiel, sans signature de code de plateforme. Vérifiez la source HTTPS et SHA-256. Certains essais sur appareils restent à effectuer.',
8029
+ 'Sur le PC cible : Paramètres → Système → Informations système → Type du système. Intel/AMD utilise généralement x64 ; Windows on ARM utilise ARM64.','Sur le Mac cible : menu Apple → À propos de ce Mac. Choisissez Apple Silicon pour une puce Apple, Intel pour un processeur Intel.','Sur la machine cible, lancez uname -m : x86_64 utilise x64 ; aarch64 utilise ARM64. glibc requis, Alpine/musl non pris en charge.',
8030
+ 'Téléchargez le paquet pour la machine cible et ouvrez le programme d’installation.','Choisissez une fois dans le programme : hébergement officiel, cette machine seule ou un service auto-hébergé existant.','En mode officiel, connectez-vous ou inscrivez-vous, comparez l’empreinte complète puis approuvez une fois.','Attendez le premier rapport de ressources. En cas d’interruption, rouvrez le programme ; l’identité et l’association sont conservées.','Le mode est confirmé dans le programme. Le téléchargement seul n’installe rien et ne connecte ni compte ni appareil.',
8031
+ 'Vérifier l’approbation','La connexion a été interrompue','La demande reste dans cet onglet. Rétablissez le réseau et réessayez cette étape ; aucune réinstallation ni nouvelle approbation nécessaire.','Réessayer cette étape','La demande a expiré ou est indisponible. Si vous avez approuvé, consultez d’abord le panneau. Sinon, terminez la connexion et rouvrez le programme sur la machine cible. Le programme et l’identité sont conservés.','Continuer sans réinstaller','Exécutez sur la machine cible. Port par défaut : 5174 ; conservez votre ancien port si vous l’avez modifié. Si le navigateur utilise un autre système, rouvrez le programme sur la machine cible.'
8032
+ ],
8033
+ de: [
8034
+ 'Installationspaket laden (empfohlen)','DMG einbinden, Install Device Center.app öffnen und jeden Schritt im Terminal bestätigen.','Offizieller Beta-Download ohne Plattform-Codesignatur. HTTPS-Quelle und SHA-256 prüfen. Einige Tests auf Zielgeräten stehen noch aus.',
8035
+ 'Auf dem Ziel-PC: Einstellungen → System → Info → Systemtyp. Intel/AMD verwendet meist x64; Windows on ARM verwendet ARM64.','Auf dem Ziel-Mac: Apple-Menü → Über diesen Mac. Apple-Chips verwenden Apple Silicon, Intel-Prozessoren Intel.','Auf dem Zielgerät uname -m ausführen: x86_64 verwendet x64, aarch64 ARM64. glibc erforderlich; Alpine/musl wird nicht unterstützt.',
8036
+ 'Paket für den Zielcomputer laden und den Installer öffnen.','Im Installer einmal wählen: offizielles Hosting, nur dieser Computer oder ein vorhandener eigener Dienst.','Bei offiziellem Hosting anmelden oder registrieren, den vollständigen Gerätefingerabdruck vergleichen und einmal genehmigen.','Den ersten Ressourcenbericht abwarten. Bei Unterbrechung den Installer erneut öffnen; Identität und Bindung bleiben erhalten.','Den Modus im Installer bestätigen. Der Download installiert nichts und meldet weder Konto noch Gerät an.',
8037
+ 'Genehmigung prüfen','Die Verbindung wurde unterbrochen','Der Antrag bleibt in diesem Tab. Netzwerk wiederherstellen und diesen Schritt erneut versuchen; keine Neuinstallation oder erneute Genehmigung erforderlich.','Schritt erneut versuchen','Der Antrag ist abgelaufen oder nicht verfügbar. Nach einer Genehmigung zuerst die Geräteübersicht prüfen. Andernfalls die Anmeldung abschließen und den Installer auf dem Zielcomputer erneut öffnen. Programm und Identität bleiben erhalten.','Ohne Neuinstallation fortsetzen','Auf dem Zielcomputer ausführen. Standardport: 5174; einen zuvor geänderten Port beibehalten. Nutzt der Browser ein anderes System, den Installer auf dem Zielcomputer erneut öffnen.'
8038
+ ],
8039
+ 'pt-BR': [
8040
+ 'Baixar instalador (recomendado)','Monte o DMG, abra Install Device Center.app e confirme cada etapa no terminal.','Download beta oficial, sem assinatura de código da plataforma. Verifique a origem HTTPS e SHA-256. Alguns testes em dispositivos físicos ainda estão pendentes.',
8041
+ 'No PC de destino: Configurações → Sistema → Sobre → Tipo de sistema. Intel/AMD normalmente usa x64; Windows on ARM usa ARM64.','No Mac de destino: menu Apple → Sobre Este Mac. Chips Apple usam Apple Silicon; processadores Intel usam Intel.','No dispositivo de destino execute uname -m: x86_64 usa x64; aarch64 usa ARM64. Requer glibc, não Alpine/musl.',
8042
+ 'Baixe o pacote para o computador de destino e abra o instalador.','Escolha uma vez no instalador: hospedagem oficial, somente este computador ou um serviço próprio existente.','No modo oficial, entre ou cadastre-se, compare a impressão digital completa e aprove uma vez.','Aguarde o primeiro relatório de recursos. Se houver interrupção, reabra o instalador; a identidade e o vínculo são mantidos.','O modo é confirmado no instalador. O download não instala, entra na conta nem vincula dispositivos.',
8043
+ 'Verificar aprovação','A conexão foi interrompida','A solicitação continua nesta aba. Restaure a rede e repita esta etapa; não é preciso reinstalar nem aprovar novamente.','Repetir esta etapa','A solicitação expirou ou está indisponível. Se já aprovou, confira primeiro o painel. Caso contrário, conclua o login e reabra o instalador no computador de destino. O programa e a identidade são mantidos.','Continuar sem reinstalar','Execute no computador de destino. A porta padrão é 5174; mantenha a anterior se tiver alterado. Se o navegador usa outro sistema, reabra o instalador no computador de destino.'
8044
+ ]
8045
+ };
8046
+ for (const [locale, values] of Object.entries(recoveryTranslations)) recoveryLocales[locale] = Object.fromEntries(Object.keys(recoveryEnglish).map((key, index) => [key, values[index]]));
8047
+ const onboardingIntro = {
8048
+ "zh-CN": [
8049
+ "先选择目标系统和安装方式。推荐下载内置运行环境的安装包;使用模式在安装器里确认。",
8050
+ "推荐下载安装包,无需准备 Node.js 或 npm。"
8051
+ ],
8052
+ "zh-TW": [
8053
+ "先選目標系統與安裝方式。建議下載內含執行環境的安裝包;使用模式在安裝精靈確認。",
8054
+ "建議下載安裝包,不需準備 Node.js 或 npm。"
8055
+ ],
8056
+ "en": [
8057
+ "Choose the target system and installation method. The bundled installer is recommended; choose its usage mode in the installer.",
8058
+ "The bundled installer needs no system Node.js or npm."
8059
+ ],
8060
+ "ja": [
8061
+ "対象のOSとインストール方法を選びます。同梱インストーラーを推奨します。利用モードはインストーラーで確認します。",
8062
+ "インストーラーならシステムの Node.js や npm は不要です。"
8063
+ ],
8064
+ "ko": [
8065
+ "대상 시스템과 설치 방식을 선택하세요. 실행 환경이 포함된 설치 패키지를 권장합니다. 사용 모드는 설치 프로그램에서 확인합니다.",
8066
+ "설치 패키지는 시스템 Node.js나 npm이 필요 없습니다."
8067
+ ],
8068
+ "es": [
8069
+ "Elija el sistema de destino y el método. Recomendamos el instalador completo; el modo de uso se elige en el instalador.",
8070
+ "El instalador no necesita Node.js ni npm del sistema."
8071
+ ],
8072
+ "fr": [
8073
+ "Choisissez le système cible et la méthode. Le programme complet est recommandé ; le mode se choisit dans le programme.",
8074
+ "Le programme ne nécessite ni Node.js système ni npm."
8075
+ ],
8076
+ "de": [
8077
+ "Zielsystem und Methode wählen. Das vollständige Installationspaket wird empfohlen; den Nutzungsmodus wählen Sie im Installer.",
8078
+ "Das Paket benötigt weder System-Node.js noch npm."
8079
+ ],
8080
+ "pt-BR": [
8081
+ "Escolha o sistema de destino e o método. Recomendamos o instalador completo; escolha o modo de uso no instalador.",
8082
+ "O instalador não exige Node.js nem npm do sistema."
8083
+ ]
8084
+ };
8085
+ for (const [locale, catalog] of Object.entries(messages)) {
8086
+ Object.assign(catalog, recoveryEnglish, recoveryLocales[locale] ?? {});
8087
+ catalog['guide.platform'] = 'macOS / Linux / Windows 11 · beta';
8088
+ [catalog['guide.focus.startBody'], catalog['guide.focus.firstTry']] = onboardingIntro[locale] ?? onboardingIntro.en;
8089
+ }
package/src/onboarding.js CHANGED
@@ -1,9 +1,10 @@
1
1
  import { localizedInstallPrompt } from './install-prompt.js';
2
2
  import { normalizeLocale } from './i18n.js';
3
+ import { installedCliCommand } from './installed-cli.js';
3
4
 
4
5
  export const OFFICIAL_CONTROL_ORIGIN = 'https://devices.owenshen.top';
5
6
  // Publish this exact CLI before deploying the matching guide.
6
- export const PUBLISHED_DRIVER_VERSION = '0.2.0-beta.7';
7
+ export const PUBLISHED_DRIVER_VERSION = '0.2.0-beta.8';
7
8
  const inputError = (key, message) => Object.assign(new Error(message), { translationKey: key });
8
9
  export function connectCommand(value, shareSsh = false) {
9
10
  let url;
@@ -105,6 +106,5 @@ export function logAccessCommands({ manager, target, path, label = 'app', os = '
105
106
  if (![os, managerOs].every(value => ['posix', 'windows'].includes(value)) || typeof path !== 'string' || !(os === 'windows' ? /^[A-Za-z]:\\/.test(path) && !/[<>:"|?*]/.test(path.slice(2)) : path.startsWith('/')) || path.length > 4096 || /[\x00-\x1f\x7f]/.test(path)) throw inputError('error.path', '填写目标设备上日志的绝对路径。');
106
107
  if (!/^[a-zA-Z0-9_-]{1,40}$/.test(label)) throw inputError('error.label', '标签仅允许字母、数字、下划线或连字符。');
107
108
  const quotedPath = "'" + path.replaceAll("'", os === 'windows' ? "''" : "'\"'\"'") + "'";
108
- const cli = system => system === 'windows' ? '& "$HOME\\AppData\\Local\\Programs\\Device Center\\cli\\device-center.cmd"' : 'device-center';
109
- return { trust: `${cli(managerOs)} access trust --peer ${target} --confirm`, grant: `${cli(os)} access grant --peer ${manager} --log ${quotedPath} --label ${label} --minutes 60 --confirm` };
109
+ return { trust: installedCliCommand(`access trust --peer ${target} --confirm`, managerOs), grant: installedCliCommand(`access grant --peer ${manager} --log ${quotedPath} --label ${label} --minutes 60 --confirm`, os) };
110
110
  }
@@ -0,0 +1,4 @@
1
+ export function pairingFailureKind(error) {
2
+ if (error.message === 'authentication_required') return 'login';
3
+ return ['driver_pairing_expired','driver_pairing_unavailable','invalid_pairing_code','driver_pairing_confirmation_required'].includes(error.message) || [400, 404, 410].includes(error.statusCode) ? 'expired' : 'retry';
4
+ }