dsh-config-manager 0.1.84 → 0.1.86
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/lib/client.d.ts +153 -399
- package/lib/client.js +1518 -2221
- package/lib/core/messages.d.ts +1 -0
- package/lib/core/messages.js +2 -0
- package/lib/index.d.ts +4 -2
- package/lib/index.js +5 -5
- package/lib/routes/sync.js +92 -70
- package/lib/sync/git/git-transport.d.ts +2 -0
- package/lib/sync/git/git-transport.js +91 -23
- package/lib/sync/messages.d.ts +2 -0
- package/lib/sync/messages.js +4 -0
- package/lib/sync/sync-engine.d.ts +4 -4
- package/lib/sync/sync-engine.js +3 -4
- package/lib/ui/i18n.d.ts +2 -84
- package/lib/ui/i18n.js +4 -168
- package/lib/utils/workdir-lock.d.ts +26 -2
- package/lib/utils/workdir-lock.js +133 -5
- package/package.json +1 -1
- package/src/client/ConfigManagerSection.tsx +1 -18
- package/src/client/about/AboutPanel.tsx +4 -11
- package/src/client/about/ReleaseNotesDialog.tsx +1 -2
- package/src/client/chat/chat-locales.ts +0 -8
- package/src/client/common/CommandPalette.tsx +0 -1
- package/src/client/common/ContentPicker.tsx +10 -1
- package/src/client/common/info-hint-guard.test.ts +4 -4
- package/src/client/config-manager.module.css +2 -32
- package/src/client/environment/EnvironmentPanel.tsx +10 -9
- package/src/client/environment/maintenance/DiskUsageCard.tsx +10 -10
- package/src/client/export/ExportView.tsx +10 -13
- package/src/client/history/HistoryPanel.tsx +9 -11
- package/src/client/history/history-locales.ts +4 -40
- package/src/client/home/BackupScheduleCard.tsx +0 -2
- package/src/client/home/HomePanel.tsx +75 -49
- package/src/client/import/ForeignImportView.tsx +6 -7
- package/src/client/import/ImportWizardView.tsx +8 -9
- package/src/client/import/import-wizard-steps.tsx +20 -15
- package/src/client/library/BackupInspectView.tsx +3 -11
- package/src/client/library/LibraryActions.tsx +2 -1
- package/src/client/library/LibraryPanel.tsx +6 -3
- package/src/client/locales.ts +122 -278
- package/src/client/market/MarketImportReview.tsx +6 -5
- package/src/client/market/MarketPanel.tsx +2 -2
- package/src/client/market/MyConfigsLoginCard.tsx +0 -3
- package/src/client/market/MyConfigsView.tsx +3 -4
- package/src/client/market/MyConfigsWizard.tsx +8 -4
- package/src/client/market/market-locales.ts +20 -60
- package/src/client/recovery/IncompleteCopiesSection.tsx +6 -8
- package/src/client/recovery/RecoveryPanel.tsx +48 -73
- package/src/client/recovery/RollbackCard.tsx +27 -20
- package/src/client/recovery/recovery-locales.test.ts +1 -3
- package/src/client/recovery/recovery-locales.ts +71 -133
- package/src/client/recovery/recovery-panel-layout.test.ts +4 -2
- package/src/client/sync/DecryptPasswordCard.tsx +2 -2
- package/src/client/sync/MergeModal.tsx +3 -1
- package/src/client/sync/MergePreviewView.tsx +14 -16
- package/src/client/sync/PushPreviewCard.tsx +0 -1
- package/src/client/sync/SecurityOptionsCard.tsx +5 -1
- package/src/client/sync/SyncChannelEntryCard.tsx +3 -10
- package/src/client/sync/SyncConfirmView.tsx +23 -20
- package/src/client/sync/SyncLogList.tsx +5 -2
- package/src/client/sync/SyncPanel.tsx +10 -9
- package/src/client/sync/SyncProbeRow.tsx +6 -8
- package/src/client/sync/SyncSectionPickerDialog.tsx +3 -3
- package/src/client/sync/WorkDirCard.tsx +6 -7
- package/src/client/sync/preview-failure.test.ts +58 -0
- package/src/client/sync/preview-failure.ts +47 -0
- package/src/client/sync/sync-api.ts +19 -3
- package/src/client/sync/sync-entry.test.ts +6 -0
- package/src/client/sync/sync-entry.ts +4 -1
- package/src/client/sync/sync-locales.ts +31 -147
- package/src/client/sync/sync-push-preview.test.ts +1 -1
- package/src/client/sync/sync-view.ts +1 -4
- package/src/core/messages.ts +2 -0
- package/src/index.ts +6 -6
- package/src/routes/sync.ts +91 -69
- package/src/sync/git/git-clone-auth.test.ts +61 -0
- package/src/sync/git/git-transport.test.ts +107 -1
- package/src/sync/git/git-transport.ts +91 -21
- package/src/sync/messages.ts +4 -0
- package/src/sync/sync-engine.ts +6 -6
- package/src/sync/sync-preview-empty.test.ts +58 -0
- package/src/ui/i18n.ts +4 -168
- package/src/utils/workdir-lock.test.ts +77 -4
- package/src/utils/workdir-lock.ts +122 -5
package/lib/client.d.ts
CHANGED
|
@@ -1479,13 +1479,8 @@ declare const uiZh: {
|
|
|
1479
1479
|
readonly commonClose: '关闭';
|
|
1480
1480
|
readonly commonCancel: '取消';
|
|
1481
1481
|
readonly commonRetry: '重试';
|
|
1482
|
-
readonly commonLoading: '加载中…';
|
|
1483
1482
|
readonly commonUnknownError: '未知错误';
|
|
1484
|
-
readonly commonNext: '下一步';
|
|
1485
|
-
readonly commonBack: '上一步';
|
|
1486
|
-
readonly commonDone: '完成';
|
|
1487
1483
|
readonly 'export.download': '下载备份文件';
|
|
1488
|
-
readonly 'export.running': '正在导出…';
|
|
1489
1484
|
readonly 'export.run': '开始导出';
|
|
1490
1485
|
readonly 'export.selectionWarnings': '以下分区为设备相关数据,跨设备导入时可能不适用:';
|
|
1491
1486
|
readonly 'export.included': '已包含';
|
|
@@ -1521,7 +1516,6 @@ declare const uiZh: {
|
|
|
1521
1516
|
readonly 'report.fullText': '完整文本报告(含逐项原因)';
|
|
1522
1517
|
readonly 'report.secrets': '密钥:';
|
|
1523
1518
|
readonly 'report.credentialsNeedEntry': '{count} 个凭据需要补录';
|
|
1524
|
-
readonly 'report.restartRequired': '重启 DSH 后生效:{detail}';
|
|
1525
1519
|
readonly 'report.restartPluginsMcp': '插件/MCP 更改将在重启 DSH 后生效';
|
|
1526
1520
|
readonly 'report.rollbackFull': '回滚:已完整恢复导入前的配置。';
|
|
1527
1521
|
readonly 'report.rollbackPartial': '回滚部分完成。';
|
|
@@ -1534,7 +1528,6 @@ declare const uiZh: {
|
|
|
1534
1528
|
readonly 'report.badgeRedacted': '{count} 项已脱敏';
|
|
1535
1529
|
readonly 'report.rollback': '回滚';
|
|
1536
1530
|
readonly 'report.action.fixIssues': '查看失败项';
|
|
1537
|
-
readonly 'report.action.viewDetails': '查看详情';
|
|
1538
1531
|
readonly 'report.includedSections': '已包含的分区';
|
|
1539
1532
|
readonly 'report.excludedSections': '未包含的分区';
|
|
1540
1533
|
readonly 'report.warnings': '注意事项';
|
|
@@ -1550,7 +1543,6 @@ declare const uiZh: {
|
|
|
1550
1543
|
readonly 'report.unit.workspaces': '个工作区';
|
|
1551
1544
|
readonly 'report.unit.credentials': '项凭据状态';
|
|
1552
1545
|
readonly 'report.unit.notes': '条说明';
|
|
1553
|
-
readonly 'report.action.done': '完成';
|
|
1554
1546
|
readonly 'error.notMounted': 'config-manager 服务未挂载(插件未加载):请确认 profile 中已安装 dsh-config-manager 并重启 DSH';
|
|
1555
1547
|
readonly 'error.apiPathMissed': '接口路径未命中(HTTP {status}):请求前缀为 {base},但该路径没有返回 JSON —— 若你经反向代理挂在子路径下,请检查代理是否转发了这个前缀(issue #108)';
|
|
1556
1548
|
readonly 'error.httpInvalidJson': 'HTTP {status}: 无效的 JSON 响应';
|
|
@@ -1600,15 +1592,7 @@ declare const uiZh: {
|
|
|
1600
1592
|
readonly 'progress.recovering': '正在恢复/回滚…';
|
|
1601
1593
|
readonly 'progress.done': '已完成';
|
|
1602
1594
|
readonly 'progress.failed': '已失败';
|
|
1603
|
-
readonly 'snapshots.createdAt': '创建时间';
|
|
1604
|
-
readonly 'snapshots.sourceZip': '来源';
|
|
1605
1595
|
readonly 'snapshots.status': '状态';
|
|
1606
|
-
readonly 'snapshots.entries': '条目';
|
|
1607
|
-
readonly 'snapshots.plugins': '插件';
|
|
1608
|
-
readonly 'snapshots.statusPending': '待处理';
|
|
1609
|
-
readonly 'snapshots.statusDone': '已完成';
|
|
1610
|
-
readonly 'snapshots.statusRolledback': '已回滚';
|
|
1611
|
-
readonly 'snapshots.statusUnknown': '未知';
|
|
1612
1596
|
readonly 'snapshots.planTitle': '恢复计划预览';
|
|
1613
1597
|
readonly 'snapshots.confirmRestore': '确认恢复?会先把当前文件备份到一个安全位置,再删除导入期间新增的插件。';
|
|
1614
1598
|
readonly 'snapshots.execute': '执行恢复';
|
|
@@ -1619,8 +1603,6 @@ declare const uiZh: {
|
|
|
1619
1603
|
readonly 'snapshots.failed': '失败';
|
|
1620
1604
|
readonly 'snapshots.skipped': '跳过';
|
|
1621
1605
|
readonly 'snapshots.noActions': '该快照无可恢复动作(或全部跳过)。';
|
|
1622
|
-
readonly 'snapshots.empty': '暂无快照。导入时会自动创建安全快照。';
|
|
1623
|
-
readonly 'snapshots.loading': '正在加载快照…';
|
|
1624
1606
|
readonly 'snapshots.selectHint': '选择一个快照预览其恢复计划(只读预览,不会改动任何设置):';
|
|
1625
1607
|
readonly 'snapshots.reportTitle': '恢复报告';
|
|
1626
1608
|
readonly 'sync.privateRepoHint': '安全要求:同步仓库必须为私有仓库(public 仓库会公开你的配置内容)。认证 token 仅用于仓库访问,绝不写入同步文件、提交内容或日志。';
|
|
@@ -1652,80 +1634,26 @@ declare const uiZh: {
|
|
|
1652
1634
|
readonly 'sync.pushOk': '推送成功(快照 {id})';
|
|
1653
1635
|
readonly 'sync.conflictUnresolved': '冲突项 {id} 必须先选择解决方式(保留当前 / 使用导入)';
|
|
1654
1636
|
readonly 'sync.pushPreviewHeadline': '将推送 {total} 个分区({changed} 个有变化)';
|
|
1655
|
-
readonly 'sync.pushPreviewHint': '以上为只读预览,不会写入远端。确认后点击「推送」才真正上传。';
|
|
1656
1637
|
readonly 'sync.pushPreviewEncrypted': '加密快照:载荷将整体加密,各分区相对基线的变化不可比对。';
|
|
1657
1638
|
readonly 'sync.pushPreviewCredentials': '本次推送包含真实凭据值(已随载荷整体加密;远端只见密文)。';
|
|
1658
1639
|
readonly 'sync.pullFailed': '拉取失败';
|
|
1659
1640
|
readonly 'sync.pullOk': '远端快照 {id} 差异预览:共 {count} 项变更';
|
|
1660
1641
|
readonly 'sync.pullEmpty': '远端快照与本地一致(无变更)';
|
|
1661
1642
|
readonly 'sync.previewHint': '以上为只读差异预览,不会执行导入。当前版本暂不支持一键导入;如需应用远端配置,请使用「导入恢复」向导手动导入导出的备份。';
|
|
1662
|
-
readonly 'sync.syncTitle': '一键同步';
|
|
1663
|
-
readonly 'sync.syncButton': '一键同步';
|
|
1664
1643
|
readonly 'sync.syncing': '正在同步…';
|
|
1665
|
-
readonly 'sync.syncHeadline': '远端快照 {id} 差异确认:共 {count} 项';
|
|
1666
|
-
readonly 'sync.syncEmpty': '远端快照与本地一致(无变更)';
|
|
1667
|
-
readonly 'sync.syncFailed': '同步失败';
|
|
1668
|
-
readonly 'sync.confirmAdopt': '采用远端';
|
|
1669
|
-
readonly 'sync.confirmSkip': '跳过';
|
|
1670
|
-
readonly 'sync.confirmRequired': '需要人工决策';
|
|
1671
|
-
readonly 'sync.needsReviewBadge': '需人工决策';
|
|
1672
|
-
readonly 'sync.selectSnapshot': '选择历史快照';
|
|
1673
|
-
readonly 'sync.latestSnapshot': '最新快照';
|
|
1674
|
-
readonly 'sync.noSnapshots': '远端暂无快照';
|
|
1675
|
-
readonly 'sync.confirmImport': '确认导入';
|
|
1676
|
-
readonly 'sync.cancelConfirm': '取消';
|
|
1677
|
-
readonly 'sync.conflictResolve': '冲突解决';
|
|
1678
|
-
readonly 'sync.conflictUseLocal': '用本地';
|
|
1679
|
-
readonly 'sync.conflictUseRemote': '用远端';
|
|
1680
|
-
readonly 'sync.conflictSkip': '跳过';
|
|
1681
|
-
readonly 'sync.conflictResolvedLocal': '已选:本地';
|
|
1682
|
-
readonly 'sync.conflictResolvedRemote': '已选:远端';
|
|
1683
|
-
readonly 'sync.conflictResolvedSkip': '已选:跳过';
|
|
1684
1644
|
readonly 'sync.importDone': '已导入 {n} 个分区';
|
|
1685
1645
|
readonly 'sync.importPartial': '部分成功:{n} 项未生效(其余已写入,未整体回滚)';
|
|
1686
|
-
readonly 'sync.importSkipped': '已跳过 {n} 项';
|
|
1687
1646
|
readonly 'sync.importFailed': '导入失败(已整体回滚)';
|
|
1688
|
-
readonly 'sync.rollbackButton': '回滚到应用前';
|
|
1689
|
-
readonly 'sync.rollingBack': '正在回滚…';
|
|
1690
|
-
readonly 'sync.rollbackDone': '已回滚到应用前';
|
|
1691
|
-
readonly 'sync.appliedSections': '已写入';
|
|
1692
|
-
readonly 'sync.importWarnings': '导入告警';
|
|
1693
|
-
readonly 'sync.autosyncTitle': '自动同步';
|
|
1694
|
-
readonly 'sync.autosyncDesc': '开启后,DSH 将按固定间隔自动执行双向同步(拉取合并 + 上传);DSH 启动时还会触发一次「自动下载合并(不上传)」以保持本地为最新。仅在无冲突且无需人工干预时才自动写入。';
|
|
1695
|
-
readonly 'sync.autosyncEnabled': '启用自动同步';
|
|
1696
|
-
readonly 'sync.autosyncInterval': '同步间隔';
|
|
1697
|
-
readonly 'sync.autosyncIntervalHint': 'DSH 启动时自动下载合并不上传。';
|
|
1698
1647
|
readonly 'sync.autosyncNever': '从未运行';
|
|
1699
1648
|
readonly 'sync.autosyncLastRun': '上次运行:{time}';
|
|
1700
|
-
readonly 'sync.autosyncNextIn': '下次约 {time} 后';
|
|
1701
1649
|
readonly 'sync.autosyncSuccess': '成功';
|
|
1702
1650
|
readonly 'sync.autosyncSkipped': '已跳过';
|
|
1703
1651
|
readonly 'sync.autosyncFailed': '失败';
|
|
1704
1652
|
readonly 'sync.autosyncPartial': '部分成功';
|
|
1705
1653
|
readonly 'sync.autosyncFailCount': '连续失败 {n} 次';
|
|
1706
|
-
readonly 'sync.autosyncSyncing': '自动同步进行中…';
|
|
1707
|
-
readonly 'sync.interval.5m': '5 分钟';
|
|
1708
|
-
readonly 'sync.interval.15m': '15 分钟';
|
|
1709
|
-
readonly 'sync.interval.30m': '30 分钟';
|
|
1710
|
-
readonly 'sync.interval.60m': '60 分钟';
|
|
1711
|
-
readonly 'sync.interval.6h': '6 小时';
|
|
1712
|
-
readonly 'sync.interval.12h': '12 小时';
|
|
1713
|
-
readonly 'sync.interval.24h': '24 小时';
|
|
1714
1654
|
readonly 'sync.duration.min': '{n} 分钟';
|
|
1715
1655
|
readonly 'sync.duration.hour': '{n} 小时';
|
|
1716
1656
|
readonly 'sync.duration.day': '{n} 天';
|
|
1717
|
-
readonly 'sync.hist.autosync': '自动同步';
|
|
1718
|
-
readonly 'sync.hist.directionPull': '下载';
|
|
1719
|
-
readonly 'sync.hist.directionPush': '上传';
|
|
1720
|
-
readonly 'sync.hist.directionBoth': '双向';
|
|
1721
|
-
readonly 'sync.hist.skipReasonConflict': '冲突项被跳过';
|
|
1722
|
-
readonly 'sync.hist.skipReasonNoRemote': '远端无快照';
|
|
1723
|
-
readonly 'sync.hist.skipReasonNotConfigured': '未配置仓库';
|
|
1724
|
-
readonly 'sync.hist.skipReasonNetwork': '网络问题';
|
|
1725
|
-
readonly 'sync.hist.conflictedSections': '跳过冲突分区:{sections}';
|
|
1726
|
-
readonly 'sync.hist.appliedSections': '应用分区:{sections}';
|
|
1727
|
-
readonly 'sync.hist.failedError': '错误:{error}';
|
|
1728
|
-
readonly 'sync.hist.notifiedAt': '已通知';
|
|
1729
1657
|
readonly 'sync.github.starting': '正在发起 GitHub 授权…';
|
|
1730
1658
|
readonly 'sync.github.waitingNoCode': '请在浏览器中打开授权页面并完成授权…';
|
|
1731
1659
|
readonly 'sync.github.waiting': '请在浏览器中打开授权页面,输入一次性代码 {code} 完成授权(自动等待确认)。';
|
|
@@ -1740,7 +1668,6 @@ declare const uiZh: {
|
|
|
1740
1668
|
readonly 'sync.github.pollExpired': 'GitHub 授权已过期(expired_token)。请重新发起登录。';
|
|
1741
1669
|
readonly 'sync.github.pollError': 'GitHub OAuth 错误:{detail}';
|
|
1742
1670
|
readonly 'sync.github.unknownError': '未知错误';
|
|
1743
|
-
readonly 'market.statusLoading': '正在读取市场状态…';
|
|
1744
1671
|
readonly 'market.statusUnconfigured': '尚未添加市场(请输入公开 Git 仓库地址)';
|
|
1745
1672
|
readonly 'market.statusConfigured': '已添加 {count} 个市场';
|
|
1746
1673
|
readonly 'market.supplyUnofficial': '来自公共网络、非官方审核';
|
|
@@ -1785,13 +1712,11 @@ declare const uiZh: {
|
|
|
1785
1712
|
readonly 'consult.dimensions': '评分维度';
|
|
1786
1713
|
readonly 'consult.loading': '正在生成咨询报告…';
|
|
1787
1714
|
readonly 'diskUsage.title': '磁盘占用';
|
|
1788
|
-
readonly 'diskUsage.total': '合计';
|
|
1789
1715
|
readonly 'diskUsage.files': '{count} 个文件';
|
|
1790
1716
|
readonly 'diskUsage.refresh': '重新体检';
|
|
1791
1717
|
readonly 'diskUsage.loading': '正在统计磁盘占用…';
|
|
1792
1718
|
readonly 'diskUsage.unreadable': '未统计';
|
|
1793
|
-
readonly 'diskUsage.partial': '
|
|
1794
|
-
readonly 'diskUsage.retentionLabel': '自动回收';
|
|
1719
|
+
readonly 'diskUsage.partial': '部分目录读不到:合计不含它们';
|
|
1795
1720
|
readonly 'diskUsage.expiredHint': '其中 {size} 已到回收条件';
|
|
1796
1721
|
readonly 'diskUsage.policy.regenerable': '可随时重建';
|
|
1797
1722
|
readonly 'diskUsage.policy.retained': '{retention} 后自动回收';
|
|
@@ -1837,8 +1762,6 @@ declare const uiZh: {
|
|
|
1837
1762
|
readonly 'diskUsage.clean.nothing': '没有可释放的内容';
|
|
1838
1763
|
readonly 'diskUsage.clean.nothingAbsent': '没有需要清理的内容(目标目录不存在或已为空)';
|
|
1839
1764
|
readonly 'diskUsage.clean.failed': '清理完成,但有 {count} 项失败(已跳过)';
|
|
1840
|
-
readonly 'diskUsage.clean.excluded': '本次未包含:{items}';
|
|
1841
|
-
readonly 'diskUsage.clean.excludedExpiredExports': '回收过期备份文件';
|
|
1842
1765
|
readonly 'diskUsage.clean.confirmTitle': '清理磁盘占用';
|
|
1843
1766
|
readonly 'diskUsage.clean.confirmMessage': '将删除可重建的缓存与暂存,以及已过期的备份文件;快照与同步数据不受影响。此操作不可撤销,但被删内容都可重新生成。';
|
|
1844
1767
|
readonly 'diskUsage.clean.confirm': '清理';
|
|
@@ -1853,7 +1776,7 @@ declare const uiZh: {
|
|
|
1853
1776
|
readonly 'diskUsage.area.rollbackPoints': '回滚点库';
|
|
1854
1777
|
readonly 'diskUsage.area.rollbackPointsDesc': '每回合自动留点的快照(工作区 + 会话两态);只报告,不自动清理';
|
|
1855
1778
|
readonly 'diskUsage.legacy.title': '遗留数据';
|
|
1856
|
-
readonly 'diskUsage.legacy.hint': '
|
|
1779
|
+
readonly 'diskUsage.legacy.hint': '插件不再读取 · 不会自动删除 · 不计入上方合计';
|
|
1857
1780
|
readonly 'diskUsage.legacy.label': '遗留数据';
|
|
1858
1781
|
readonly 'library.kind.snapshot': '本机快照';
|
|
1859
1782
|
readonly 'library.kind.backupFile': '备份文件';
|
|
@@ -1940,12 +1863,7 @@ declare const uiZh: {
|
|
|
1940
1863
|
readonly 'foreign.found.no': '未检测到';
|
|
1941
1864
|
readonly 'foreign.paths': '命中路径:{paths}';
|
|
1942
1865
|
readonly 'foreign.pathsNone': '没有命中任何真值表路径';
|
|
1943
|
-
readonly 'foreign.skipped.total': '未迁移 {count} 项';
|
|
1944
|
-
readonly 'foreign.skipped.empty': '没有未迁移的内容';
|
|
1945
1866
|
readonly 'foreign.credentialRefs': '需补录凭据 {count} 项:{refs}';
|
|
1946
|
-
readonly 'foreign.credentialRefs.none': '无需补录凭据';
|
|
1947
|
-
readonly 'foreign.sections.none': '没有可导入的分区';
|
|
1948
|
-
readonly 'foreign.reportOnly': '只报告、不导入:{detail}';
|
|
1949
1867
|
readonly 'foreign.skip.unsupported-hooks': 'settings 的 hooks:DSH 无对等结构,未迁移';
|
|
1950
1868
|
readonly 'foreign.skip.unsupported-commands': '斜杠命令:与 DSH 提示词不是同一语义,本次未迁移';
|
|
1951
1869
|
readonly 'foreign.skip.credentials-not-migrated': '凭据字段只记录名字,值不读取也不迁移';
|
|
@@ -2449,6 +2367,17 @@ interface ForeignSourcesResponse$1 {
|
|
|
2449
2367
|
projectScoped?: boolean;
|
|
2450
2368
|
sources: readonly ForeignSourceStatusInput[];
|
|
2451
2369
|
}
|
|
2370
|
+
/** 超时文案键(全部已存在于 ui/i18n.ts;本模块只做选键,不新增文案口径)。 */
|
|
2371
|
+
type TimeoutMessageKey = 'error.requestTimeout' | 'error.fallback' | 'error.exportTimeout' | 'error.syncTimeout' | 'error.recoveryTimeout';
|
|
2372
|
+
/** 请求选项:超时档位、超时文案键、调用方取消信号。 */
|
|
2373
|
+
interface RequestOptions {
|
|
2374
|
+
/** 覆盖默认超时(缺省 REQUEST_TIMEOUT_MS)。 */
|
|
2375
|
+
timeoutMs?: number;
|
|
2376
|
+
/** 超时文案键(缺省 `DEFAULT_TIMEOUT_KEY` = error.requestTimeout:语境中立的通用超时)。 */
|
|
2377
|
+
timeoutKey?: TimeoutMessageKey;
|
|
2378
|
+
/** 调用方取消信号(与内部超时合并;取消时原样抛出 AbortError)。 */
|
|
2379
|
+
signal?: AbortSignal;
|
|
2380
|
+
}
|
|
2452
2381
|
/** 携带路由 JSON error 消息的错误类型(客户端所有请求错误的唯一类型)。 */
|
|
2453
2382
|
declare class ConfigManagerApiError extends Error {
|
|
2454
2383
|
/**
|
|
@@ -3328,6 +3257,11 @@ interface SyncStartResponse {
|
|
|
3328
3257
|
needsReview: boolean;
|
|
3329
3258
|
compatibility: 'excellent' | 'good' | 'partial' | 'unsupported';
|
|
3330
3259
|
message?: string;
|
|
3260
|
+
/**
|
|
3261
|
+
* 预览失败的**结构化原因**(issue #116):`'remote-empty'` = 远端还没有任何快照 —— 首次同步的正常起点,
|
|
3262
|
+
* UI 据此引导「先推送」而不是报「同步失败」。没有 reason 的失败按 message 原样展示。
|
|
3263
|
+
*/
|
|
3264
|
+
reason?: 'remote-empty';
|
|
3331
3265
|
}
|
|
3332
3266
|
/** 单条可确认的差异项(由 ImportPlan.item 投影 + 冲突详情)。 */
|
|
3333
3267
|
interface SyncConfirmItem {
|
|
@@ -3487,6 +3421,8 @@ interface MergePreviewResponse {
|
|
|
3487
3421
|
summary: MergePreviewSummary;
|
|
3488
3422
|
/** 失败/降级原因(仅在 ok=false 等场景出现) */
|
|
3489
3423
|
message?: string;
|
|
3424
|
+
/** 失败的结构化原因(issue 116):`'remote-empty'` = 远端还没有任何快照 —— 首次同步的正常起点,不是故障。 */
|
|
3425
|
+
reason?: 'remote-empty';
|
|
3490
3426
|
}
|
|
3491
3427
|
/** 单条裁决动作。 */
|
|
3492
3428
|
type MergeResolutionActionWire = 'keepLocal' | 'useRemote' | 'useMerged' | 'skip';
|
|
@@ -3683,8 +3619,17 @@ interface GithubCreateRepositoryResponse {
|
|
|
3683
3619
|
declare class SyncApi {
|
|
3684
3620
|
readonly t: UiT;
|
|
3685
3621
|
constructor(t: UiT);
|
|
3686
|
-
/** 读取同步状态(配置 / 凭据 / 上次同步时间 / 分区数 /
|
|
3687
|
-
|
|
3622
|
+
/** 读取同步状态(配置 / 凭据 / 上次同步时间 / 分区数 / 工作副本自检)。
|
|
3623
|
+
*
|
|
3624
|
+
* 两个与请求计时无关、只为调用场景服务的开关:
|
|
3625
|
+
* - `timeoutMs`:首页只拿它填一个指标段,等不起同步族默认的 5 分钟档;
|
|
3626
|
+
* - `workDirDetail`:只要「工作副本是否跟随地址」时传 false —— 宿主跳过 ahead / dirty /
|
|
3627
|
+
* remoteSnapshots 那 5 条 git 子进程(Windows 每次约 80 ms,实测端点 730 ms → 170 ms)。
|
|
3628
|
+
* 同步页的 WorkDirCard 需要全量,保持缺省(true)。关掉时那三项由宿主如实回 null,
|
|
3629
|
+
* 界面显示「未知」,不会被当成 0。 */
|
|
3630
|
+
status(opts?: RequestOptions & {
|
|
3631
|
+
workDirDetail?: boolean;
|
|
3632
|
+
}): Promise<SyncStatusResponse>;
|
|
3688
3633
|
/**
|
|
3689
3634
|
* 重建 git 工作副本(issue #79 的自救入口)。
|
|
3690
3635
|
*
|
|
@@ -4997,10 +4942,8 @@ declare const zh$4: {
|
|
|
4997
4942
|
readonly 'common.listSeparator': '、';
|
|
4998
4943
|
readonly 'toast.copied': '已复制到剪贴板';
|
|
4999
4944
|
readonly 'toast.copyFailed': '复制失败,请手动选择文本复制';
|
|
5000
|
-
readonly 'toast.refreshed': '已刷新';
|
|
5001
|
-
readonly 'overview.refresh': '刷新';
|
|
5002
4945
|
readonly 'overview.health.ok': '配置状态良好';
|
|
5003
|
-
readonly 'overview.health.noBackup': '尚无任何备份
|
|
4946
|
+
readonly 'overview.health.noBackup': '尚无任何备份';
|
|
5004
4947
|
readonly 'overview.health.scheduleFailed': '上次定时备份失败,建议检查备份设置';
|
|
5005
4948
|
readonly 'overview.health.recovery': '存在未解决的恢复事项,需要处理';
|
|
5006
4949
|
readonly 'overview.health.recoveryAction': '前往「事故恢复」处理';
|
|
@@ -5017,6 +4960,7 @@ declare const zh$4: {
|
|
|
5017
4960
|
readonly 'overview.meta.scheduleFail': '上次备份失败';
|
|
5018
4961
|
readonly 'overview.meta.syncOn': '已配置 · 上次 {time}';
|
|
5019
4962
|
readonly 'overview.meta.syncOff': '未配置';
|
|
4963
|
+
readonly 'overview.meta.syncUnavailable': '读取超时';
|
|
5020
4964
|
readonly 'overview.meta.never': '从未运行';
|
|
5021
4965
|
readonly 'overview.time.now': '刚刚';
|
|
5022
4966
|
readonly 'overview.time.min': '{n} 分钟前';
|
|
@@ -5030,13 +4974,11 @@ declare const zh$4: {
|
|
|
5030
4974
|
readonly 'overview.quick.backupSkippedLocked': '已跳过:环境锁被占用(另一项任务进行中,或存在需回收的残留锁)';
|
|
5031
4975
|
readonly 'overview.quick.backupSkippedOther': '已跳过:备份服务当前无法执行(详情见宿主日志)';
|
|
5032
4976
|
readonly 'overview.quick.backupFailed': '备份失败:{message}';
|
|
5033
|
-
readonly 'overview.quick.sync': '远程同步';
|
|
5034
4977
|
readonly 'overview.activity.title': '最近活动';
|
|
5035
|
-
readonly 'overview.activity.empty': '
|
|
4978
|
+
readonly 'overview.activity.empty': '暂无操作记录';
|
|
5036
4979
|
readonly 'overview.activity.unavailable': '活动记录读取失败(这不是「没有记录」)';
|
|
5037
4980
|
readonly 'overview.loadFailed': '有 {count} 项数据读取失败:{message} —— 下面的指标可能不完整';
|
|
5038
4981
|
readonly 'overview.empty.title': '开始保护你的配置';
|
|
5039
|
-
readonly 'overview.empty.body': '创建第一个备份或快照后,这里会展示配置健康状态与最近活动。';
|
|
5040
4982
|
readonly 'overview.empty.step1': '创建第一份备份';
|
|
5041
4983
|
readonly 'overview.empty.step2': '导出 ZIP 带走';
|
|
5042
4984
|
readonly 'overview.empty.step3': '新机器导入回来';
|
|
@@ -5059,8 +5001,6 @@ declare const zh$4: {
|
|
|
5059
5001
|
readonly 'overview.kind.snapshot-prune': '清理快照';
|
|
5060
5002
|
readonly 'overview.kind.other': '其他操作';
|
|
5061
5003
|
readonly 'export.hint': '默认导出推荐分区(可迁移、不含设备专属数据)。点「选择要导出的内容」可按分区、逐条目调整(技能、插件、工作区、会话等)。';
|
|
5062
|
-
readonly 'export.nothingSelected': '当前没有任何内容被勾选,先把要导出的分区或条目勾上。';
|
|
5063
|
-
readonly 'export.security': '安全选项';
|
|
5064
5004
|
readonly 'export.encrypt': '加密备份';
|
|
5065
5005
|
readonly 'export.encryptHint': '用密码加密整个备份文件(AES-256-GCM)。密码仅用于本次加密,不会写入备份或任何配置文件;导入时必须输入该密码才能解锁。';
|
|
5066
5006
|
readonly 'export.password': '备份加密密码';
|
|
@@ -5070,11 +5010,9 @@ declare const zh$4: {
|
|
|
5070
5010
|
readonly 'export.includeSecrets': '导出密钥';
|
|
5071
5011
|
readonly 'export.includeSecretsHint': '把真实密钥(凭据值)写入备份。密钥必须以加密形式保存:勾选时会自动选中「加密备份」;取消「加密备份」会同时取消「导出密钥」。';
|
|
5072
5012
|
readonly 'export.run': '开始导出';
|
|
5073
|
-
readonly 'export.running': '正在导出…';
|
|
5074
5013
|
readonly 'export.download': '下载备份文件';
|
|
5075
5014
|
readonly 'export.saved': '已保存到下载目录:{name}';
|
|
5076
5015
|
readonly 'export.selectionWarnings': '以下分区为设备相关数据,跨设备导入时可能不适用:';
|
|
5077
|
-
readonly 'export.naming': '文件名与备注(可选)';
|
|
5078
5016
|
readonly 'export.fileName': '自定义文件名';
|
|
5079
5017
|
readonly 'export.fileNameHint': '留空自动命名(dsh-config-<日期>.zip);无需手动输入 .zip 后缀,保存时自动补全。仅允许字母数字、空格、- _ .。';
|
|
5080
5018
|
readonly 'export.fileNameInvalid': '文件名不合法:仅允许字母数字、空格、- _ .,不能包含路径分隔符。';
|
|
@@ -5101,7 +5039,7 @@ declare const zh$4: {
|
|
|
5101
5039
|
readonly 'picker.fileCount': '{count} 个文件';
|
|
5102
5040
|
readonly 'picker.summary': '将导出 {sections} 个分区 · {units} 个条目 · 约 {size}';
|
|
5103
5041
|
readonly 'picker.loading': '正在读取可导出的条目…';
|
|
5104
|
-
readonly 'picker.loadingItems': '
|
|
5042
|
+
readonly 'picker.loadingItems': '正在读取条目…';
|
|
5105
5043
|
readonly 'picker.loadingSection': '读取中…';
|
|
5106
5044
|
readonly 'picker.empty': '没有匹配的分区或条目';
|
|
5107
5045
|
readonly 'picker.sessionWorkspaceLinked': '会话与工作区联动勾选:勾上会话会自动勾上它所属的工作区;取消工作区会取消它的会话';
|
|
@@ -5110,18 +5048,17 @@ declare const zh$4: {
|
|
|
5110
5048
|
readonly 'picker.deviceSpecific': '设备相关';
|
|
5111
5049
|
readonly 'picker.sensitive': '敏感';
|
|
5112
5050
|
readonly 'picker.showAll': '显示全部(共 {count} 条)';
|
|
5113
|
-
readonly 'picker.summaryImport': '
|
|
5051
|
+
readonly 'picker.summaryImport': '{sections} 个分区 · {units} 个条目';
|
|
5114
5052
|
readonly 'picker.pluginRoot': '插件';
|
|
5115
5053
|
readonly 'picker.pluginLeafPlugin': '插件清单条目';
|
|
5116
5054
|
readonly 'picker.pluginLeafConfig': '数据目录(配置)';
|
|
5117
5055
|
readonly 'picker.pluginLeafAssets': '大文件(壁纸 / 数据库)';
|
|
5118
5056
|
readonly 'picker.pluginAreaUnread': '未读取';
|
|
5119
5057
|
readonly 'picker.pluginAreaAbsent': '无内容';
|
|
5120
|
-
readonly 'picker.pluginViewEmpty': '插件清单还没读到,先读取「插件」分区。';
|
|
5121
5058
|
readonly 'picker.bucketPlugins': '插件分区的其他条目(补丁行 / pnpm-workspace.yaml)';
|
|
5122
5059
|
readonly 'picker.bucketLooseFiles': '未归属到插件的配置(~/.dsh 根)';
|
|
5123
5060
|
readonly 'picker.bucketHint': '这些条目没有可证明的插件归属,不猜;展开可逐条勾选。';
|
|
5124
|
-
readonly 'picker.groupHint.extensions': '
|
|
5061
|
+
readonly 'picker.groupHint.extensions': '只列出能证明的归属(内置来源表 + 插件自述 dsh.dataDirs);没有包名信息的配置留在「未归属」。';
|
|
5125
5062
|
readonly 'group.general': '通用';
|
|
5126
5063
|
readonly 'group.ai': 'AI';
|
|
5127
5064
|
readonly 'group.extensions': '插件与扩展';
|
|
@@ -5131,16 +5068,14 @@ declare const zh$4: {
|
|
|
5131
5068
|
readonly 'group.workspace': '工作区';
|
|
5132
5069
|
readonly 'group.ui': '界面';
|
|
5133
5070
|
readonly 'group.optional': '可选数据';
|
|
5134
|
-
readonly 'import.nothingSelected': '
|
|
5135
|
-
readonly 'import.excludedByUser': '
|
|
5071
|
+
readonly 'import.nothingSelected': '未勾选任何内容';
|
|
5072
|
+
readonly 'import.excludedByUser': '取消勾选 {count} 项(未导入、未入快照)';
|
|
5136
5073
|
readonly 'import.consult.hint': '只读分析:先看结论与依据,确认后再选择要导入的内容。';
|
|
5137
5074
|
readonly 'consult.title': '迁移前咨询';
|
|
5138
5075
|
readonly 'library.pullTitle': '拉取远端快照';
|
|
5139
5076
|
readonly 'library.pulling': '正在拉取并导入…';
|
|
5140
5077
|
readonly 'library.downloadTitle': '下载远端快照';
|
|
5141
5078
|
readonly 'library.downloading': '正在拉取并下载…';
|
|
5142
|
-
readonly 'library.pullStarted': '已开始拉取该远端快照,进度见同步页';
|
|
5143
|
-
readonly 'import.consult.next': '下一步:选择要导入的内容';
|
|
5144
5079
|
readonly 'import.consult.unavailable': '暂时无法生成咨询报告(不影响继续导入)。';
|
|
5145
5080
|
readonly 'import.picker.title': '选择要导入的内容';
|
|
5146
5081
|
readonly 'import.picker.hint': '不勾选的条目不会被导入、也不会进快照;随时可以回到这一步修改。';
|
|
@@ -5157,7 +5092,6 @@ declare const zh$4: {
|
|
|
5157
5092
|
readonly 'import.select.reselect': '重新选择';
|
|
5158
5093
|
readonly 'import.select.cancel': '取消选择';
|
|
5159
5094
|
readonly 'import.select.file': '已选择:{name}';
|
|
5160
|
-
readonly 'import.analyzing': '正在分析备份…';
|
|
5161
5095
|
readonly 'import.compatibility.title': '兼容性';
|
|
5162
5096
|
readonly 'import.compatibility.score': '兼容性评分:{score}';
|
|
5163
5097
|
readonly 'import.preview.title': '导入预览';
|
|
@@ -5173,11 +5107,10 @@ declare const zh$4: {
|
|
|
5173
5107
|
readonly 'import.preview.conflicts': '冲突 {count}';
|
|
5174
5108
|
readonly 'import.preview.restart': '导入后需重启 DSH 生效';
|
|
5175
5109
|
readonly 'import.confirm.execute': '确认导入';
|
|
5176
|
-
readonly 'import.confirm.warning': '
|
|
5177
|
-
readonly 'import.confirm.warningNoRollback': '
|
|
5110
|
+
readonly 'import.confirm.warning': '导入会修改当前 DSH 配置,执行前自动创建快照。';
|
|
5111
|
+
readonly 'import.confirm.warningNoRollback': '导入会修改当前 DSH 配置,执行前自动创建快照;已取消整体回滚 —— 单项失败会继续,已写入内容不回退。';
|
|
5178
5112
|
readonly 'import.confirm.encrypted': '将用备份密码解密并恢复 {count} 个凭据。';
|
|
5179
5113
|
readonly 'import.rollbackOnError': '失败时整体回滚(推荐)';
|
|
5180
|
-
readonly 'import.importing': '正在导入…(插件安装较多时可能需要几分钟,请勿关闭页面)';
|
|
5181
5114
|
readonly 'import.log.title': '导入日志';
|
|
5182
5115
|
readonly 'import.log.empty': '等待命令输出…';
|
|
5183
5116
|
readonly 'import.log.newOutput': '↓ 新输出';
|
|
@@ -5187,7 +5120,7 @@ declare const zh$4: {
|
|
|
5187
5120
|
readonly 'import.log.problemsEmpty': '本次没有失败或警告的项';
|
|
5188
5121
|
readonly 'import.done': '完成';
|
|
5189
5122
|
readonly 'import.skipCurrent': '跳过当前插件';
|
|
5190
|
-
readonly 'import.skipPending': '
|
|
5123
|
+
readonly 'import.skipPending': '正在跳过…';
|
|
5191
5124
|
readonly 'import.retrySkipped': '重试失败/跳过的项 ({count})';
|
|
5192
5125
|
readonly 'import.secrets.title': '补录密钥';
|
|
5193
5126
|
readonly 'import.secrets.hint': '以下凭据未随备份导出(安全设计)。如需在目标 DSH 使用,请手动补录;留空将跳过。';
|
|
@@ -5199,7 +5132,6 @@ declare const zh$4: {
|
|
|
5199
5132
|
readonly 'import.decryptArchive.hint': '此备份已整体加密(整个文件被密码保护)。输入导出时设置的密码即可解密并继续导入——备份内的加密凭据也会用同一密码自动恢复,全程只需输入这一次密码;密码仅本次使用,绝不落盘。';
|
|
5200
5133
|
readonly 'import.decryptArchive.passwordPlaceholder': '输入备份加密密码';
|
|
5201
5134
|
readonly 'import.decryptArchive.unlock': '解锁并继续';
|
|
5202
|
-
readonly 'import.decryptArchive.unlocking': '解锁中…';
|
|
5203
5135
|
readonly 'import.decrypt.previewHint': '加密备份:凭据已由解锁密码自动恢复,无需再次输入密码。';
|
|
5204
5136
|
readonly 'import.conflicts.title': '解决冲突';
|
|
5205
5137
|
readonly 'import.conflicts.hint': '以下配置项在目标 DSH 已存在且与备份不同,请逐项决策。';
|
|
@@ -5222,25 +5154,9 @@ declare const zh$4: {
|
|
|
5222
5154
|
readonly 'import.paths.kind.homeMismatch': '基础路径不同';
|
|
5223
5155
|
readonly 'import.paths.unresolved': '还有 {count} 条路径未映射(留空将跳过该路径,可以继续)';
|
|
5224
5156
|
readonly 'import.paths.empty': '无需映射路径';
|
|
5225
|
-
readonly 'snapshots.title': '备份与快照';
|
|
5226
5157
|
readonly 'home.schedule.title': '定时备份';
|
|
5227
|
-
readonly 'snapshots.empty.title': '尚无安全快照';
|
|
5228
|
-
readonly 'snapshots.empty.body': '安全快照在导入 / 恢复前自动创建,用于一键回滚;也可立即手动创建一个。';
|
|
5229
|
-
readonly 'snapshots.empty.viewFiles': '查看备份文件';
|
|
5230
|
-
readonly 'snapshots.empty.runBackup': '立即备份';
|
|
5231
|
-
readonly 'backupFiles.noteUnreadable': '(备注不可读)';
|
|
5232
|
-
readonly 'snapshots.empty': '暂无快照。执行导入时会自动创建安全快照。';
|
|
5233
|
-
readonly 'snapshots.loading': '加载快照中…';
|
|
5234
5158
|
readonly 'snapshots.selectHint': '选择快照以预览恢复计划(只读预览,不会改动任何设置):';
|
|
5235
|
-
readonly 'snapshots.createdAt': '创建时间';
|
|
5236
|
-
readonly 'snapshots.sourceZip': '来源备份';
|
|
5237
5159
|
readonly 'snapshots.status': '状态';
|
|
5238
|
-
readonly 'snapshots.entries': '条目';
|
|
5239
|
-
readonly 'snapshots.plugins': '插件';
|
|
5240
|
-
readonly 'snapshots.actions': '操作';
|
|
5241
|
-
readonly 'snapshots.retentionHint': '最多自动保留 {count} 个快照(超出清理最旧的);置顶的快照不参与自动清理,只能手动删除。';
|
|
5242
|
-
readonly 'snapshots.pin': '置顶';
|
|
5243
|
-
readonly 'snapshots.unpin': '取消置顶';
|
|
5244
5160
|
readonly 'snapshots.delete': '删除';
|
|
5245
5161
|
readonly 'snapshots.deleted': '已删除快照';
|
|
5246
5162
|
readonly 'snapshots.deleteConfirmTitle': '删除快照';
|
|
@@ -5268,9 +5184,9 @@ declare const zh$4: {
|
|
|
5268
5184
|
readonly 'snapshots.plan.plugins': '卸载插件 {count}';
|
|
5269
5185
|
readonly 'snapshots.plan.hints': '需人工处理 {count}';
|
|
5270
5186
|
readonly 'snapshots.plan.skips': '无动作 {count}';
|
|
5271
|
-
readonly 'snapshots.plan.noStats': '
|
|
5272
|
-
readonly 'snapshots.plan.statsTruncated': '
|
|
5273
|
-
readonly 'snapshots.plan.group.changes': '
|
|
5187
|
+
readonly 'snapshots.plan.noStats': '未统计行数';
|
|
5188
|
+
readonly 'snapshots.plan.statsTruncated': '部分文件未统计行数';
|
|
5189
|
+
readonly 'snapshots.plan.group.changes': '将被还原';
|
|
5274
5190
|
readonly 'snapshots.plan.group.deletes': '将被删除';
|
|
5275
5191
|
readonly 'snapshots.plan.group.plugins': '卸载插件';
|
|
5276
5192
|
readonly 'snapshots.plan.group.hints': '需人工处理';
|
|
@@ -5281,20 +5197,20 @@ declare const zh$4: {
|
|
|
5281
5197
|
readonly 'snapshots.plan.status.plugin': '卸载插件';
|
|
5282
5198
|
readonly 'snapshots.plan.status.hint': '人工提示';
|
|
5283
5199
|
readonly 'snapshots.plan.status.skip': '跳过';
|
|
5284
|
-
readonly 'snapshots.plan.beforeLabel': '
|
|
5285
|
-
readonly 'snapshots.plan.afterLabel': '
|
|
5200
|
+
readonly 'snapshots.plan.beforeLabel': '本机';
|
|
5201
|
+
readonly 'snapshots.plan.afterLabel': '快照';
|
|
5286
5202
|
readonly 'snapshots.plan.loadingDiff': '正在读取差异…';
|
|
5287
|
-
readonly 'snapshots.plan.diffIdentical': '
|
|
5288
|
-
readonly 'snapshots.plan.diffBinary': '
|
|
5289
|
-
readonly 'snapshots.plan.diffTooLarge': '文件过大({size}
|
|
5290
|
-
readonly 'snapshots.plan.diffUnreadable': '
|
|
5291
|
-
readonly 'snapshots.plan.diffMissingBlob': '
|
|
5203
|
+
readonly 'snapshots.plan.diffIdentical': '两侧内容一致';
|
|
5204
|
+
readonly 'snapshots.plan.diffBinary': '二进制文件';
|
|
5205
|
+
readonly 'snapshots.plan.diffTooLarge': '文件过大({size})';
|
|
5206
|
+
readonly 'snapshots.plan.diffUnreadable': '无法读取该文件';
|
|
5207
|
+
readonly 'snapshots.plan.diffMissingBlob': '快照内缺少该文件内容';
|
|
5292
5208
|
readonly 'snapshots.plan.diffEscape': '路径越界,已拒绝读取';
|
|
5293
|
-
readonly 'snapshots.plan.diffNotApplicable': '
|
|
5294
|
-
readonly 'snapshots.plan.diffDegraded': '
|
|
5295
|
-
readonly 'snapshots.plan.statSkipped.tooLarge': '
|
|
5209
|
+
readonly 'snapshots.plan.diffNotApplicable': '非文件内容变更';
|
|
5210
|
+
readonly 'snapshots.plan.diffDegraded': '差异过大,已按整块显示';
|
|
5211
|
+
readonly 'snapshots.plan.statSkipped.tooLarge': '体积超上限';
|
|
5296
5212
|
readonly 'snapshots.plan.statSkipped.binary': '二进制';
|
|
5297
|
-
readonly 'snapshots.plan.statSkipped.budget': '
|
|
5213
|
+
readonly 'snapshots.plan.statSkipped.budget': '超出数量上限';
|
|
5298
5214
|
readonly 'snapshots.plan.statSkipped.unreadable': '未统计';
|
|
5299
5215
|
readonly 'backupSchedule.title': '定时全量备份';
|
|
5300
5216
|
readonly 'backupSchedule.hint': '按固定间隔在后台自动导出全量备份 ZIP(恒不含 secret、不加密;要加密请手动导出)。配置存 sync/backup-schedule.json,随 self 分区备份 / 远程同步迁移。';
|
|
@@ -5339,25 +5255,14 @@ declare const zh$4: {
|
|
|
5339
5255
|
readonly 'retention.unit': '份';
|
|
5340
5256
|
readonly 'retention.months': '个月';
|
|
5341
5257
|
readonly 'retention.years': '年';
|
|
5342
|
-
readonly 'retention.tiersOff': '
|
|
5258
|
+
readonly 'retention.tiersOff': '仅保留最近 N 份';
|
|
5343
5259
|
readonly 'retention.appliesTo': '生效于:导入前快照 + 定时备份产物';
|
|
5344
|
-
readonly 'backupFiles.title': '备份文件';
|
|
5345
|
-
readonly 'backupFiles.name': '文件名';
|
|
5346
|
-
readonly 'backupFiles.size': '大小';
|
|
5347
|
-
readonly 'backupFiles.time': '修改时间';
|
|
5348
5260
|
readonly 'backupFiles.hint': '导出产物(手动导出与定时备份)统一在此管理:可下载到本机、直接导入恢复,或删除。定时备份自动保留最近 10 个。';
|
|
5349
|
-
readonly 'backupFiles.empty': '
|
|
5350
|
-
readonly 'backupFiles.loading': '加载备份文件…';
|
|
5351
|
-
readonly 'backupFiles.source.auto': '定时备份';
|
|
5352
|
-
readonly 'backupFiles.source.manual': '手动导出';
|
|
5353
|
-
readonly 'backupFiles.download': '下载';
|
|
5354
|
-
readonly 'backupFiles.import': '导入';
|
|
5261
|
+
readonly 'backupFiles.empty': '暂无备份文件';
|
|
5355
5262
|
readonly 'backupFiles.delete': '删除';
|
|
5356
5263
|
readonly 'backupFiles.deleteConfirmTitle': '删除备份文件';
|
|
5357
5264
|
readonly 'backupFiles.deleteConfirm': '确认删除备份文件「{name}」?此操作不可恢复。';
|
|
5358
5265
|
readonly 'backupFiles.deleted': '已删除备份文件「{name}」';
|
|
5359
|
-
readonly 'backupFiles.searchPlaceholder': '按文件名或备注搜索…';
|
|
5360
|
-
readonly 'backupFiles.searchEmpty': '没有匹配的备份文件';
|
|
5361
5266
|
readonly 'backupFiles.inspect': '查看 / 对比';
|
|
5362
5267
|
readonly 'backupFiles.inspectLoading': '正在分析备份内容…';
|
|
5363
5268
|
readonly 'backupFiles.inspectEmpty': '该备份无法分析(文件损坏或格式不支持)';
|
|
@@ -5373,18 +5278,13 @@ declare const zh$4: {
|
|
|
5373
5278
|
readonly 'report.needsRestart': '插件 / MCP 变更将在重启 DSH 后生效。';
|
|
5374
5279
|
readonly 'nextSteps.title': '接下来需要处理';
|
|
5375
5280
|
readonly 'nextSteps.done': '全部完成,无需额外处理';
|
|
5376
|
-
readonly 'nextSteps.restart.
|
|
5377
|
-
readonly 'nextSteps.
|
|
5378
|
-
readonly 'nextSteps.
|
|
5379
|
-
readonly 'nextSteps.secrets.hint': '以下凭据未随备份导出,需在本机手动补录:';
|
|
5380
|
-
readonly 'nextSteps.unresolved.title': '失败 / 已跳过({count})';
|
|
5381
|
-
readonly 'nextSteps.unresolved.hint': '以下项未成功应用,可在结果页点击「重试」:';
|
|
5281
|
+
readonly 'nextSteps.restart.hint': '需重启 DSH 后生效({count}):';
|
|
5282
|
+
readonly 'nextSteps.secrets.hint': '未随备份导出、需在本机补录的凭据({count}):';
|
|
5283
|
+
readonly 'nextSteps.unresolved.hint': '未成功应用({count}),可用下方按钮重试:';
|
|
5382
5284
|
readonly 'starPrompt.title': '喜欢 Config Manager 吗?';
|
|
5383
5285
|
readonly 'starPrompt.body': '如果你觉得这个插件有用,欢迎到 GitHub 点个 ⭐ Star 支持一下——你的支持是持续维护的最大动力!';
|
|
5384
5286
|
readonly 'starPrompt.star': '去点 Star';
|
|
5385
5287
|
readonly 'starPrompt.dismiss': '不再提示';
|
|
5386
|
-
readonly 'about.title': '关于 DSH Config Manager';
|
|
5387
|
-
readonly 'about.subtitle': '插件信息、作者与反馈入口';
|
|
5388
5288
|
readonly 'about.official': '官方';
|
|
5389
5289
|
readonly 'about.version': '版本 {version}';
|
|
5390
5290
|
readonly 'about.dshVersion': 'DSH {version}';
|
|
@@ -5394,7 +5294,7 @@ declare const zh$4: {
|
|
|
5394
5294
|
readonly 'about.docs': '使用文档';
|
|
5395
5295
|
readonly 'about.issues': '反馈问题';
|
|
5396
5296
|
readonly 'about.feedbackHint': '遇到界面问题?复制环境信息,粘进 issue 就行';
|
|
5397
|
-
readonly 'about.copyEnv': '
|
|
5297
|
+
readonly 'about.copyEnv': '复制环境信息';
|
|
5398
5298
|
readonly 'about.authorLabel': '作者';
|
|
5399
5299
|
readonly 'about.loading': '正在获取版本信息…';
|
|
5400
5300
|
readonly 'about.retryStatus': '重新获取';
|
|
@@ -5403,12 +5303,12 @@ declare const zh$4: {
|
|
|
5403
5303
|
readonly 'about.diag.profileDir': '目录:{path}';
|
|
5404
5304
|
readonly 'about.diag.profile': 'profile:{profile}';
|
|
5405
5305
|
readonly 'about.diag.pluginCount': '已识别插件:{count} 个';
|
|
5406
|
-
readonly 'about.diag.manifestUnreadable': '
|
|
5306
|
+
readonly 'about.diag.manifestUnreadable': '读不到 package.json:插件清单为空(核对 profile 与 DSH_HOME)';
|
|
5407
5307
|
readonly 'about.diag.hint': '若与实际不符,请据此检查当前档案的启动方式(宿主 profileContext / 启动参数 --profile / 环境变量 DSH_PROFILE)与 DSH_HOME 环境变量。';
|
|
5408
5308
|
readonly 'about.releaseNotes.title': '版本更新内容';
|
|
5409
5309
|
readonly 'about.releaseNotes.loading': '正在获取更新内容…';
|
|
5410
5310
|
readonly 'about.releaseNotes.loadingMore': '正在加载更多版本…';
|
|
5411
|
-
readonly 'about.releaseNotes.empty': '
|
|
5311
|
+
readonly 'about.releaseNotes.empty': '暂无发布记录';
|
|
5412
5312
|
readonly 'about.releaseNotes.retry': '重试';
|
|
5413
5313
|
readonly 'about.releaseNotes.viewOnGithub': '在 GitHub 上查看全部 Releases';
|
|
5414
5314
|
readonly 'about.releaseNotes.viewSingleOnGithub': '在 GitHub 上查看此版本';
|
|
@@ -5424,11 +5324,11 @@ declare const zh$4: {
|
|
|
5424
5324
|
readonly 'profiles.title': '档案';
|
|
5425
5325
|
readonly 'profiles.subtitle': '管理 DSH 自带的 profile($DSH_HOME/profiles/<name>):每个档案 = 一套插件组合(bundles)+ 依赖 + patch 层,用 dsh --profile <name> 启动。';
|
|
5426
5326
|
readonly 'profiles.loading': '加载档案中…';
|
|
5427
|
-
readonly 'profiles.empty': '
|
|
5327
|
+
readonly 'profiles.empty': '还没有任何档案';
|
|
5428
5328
|
readonly 'profiles.refresh': '刷新';
|
|
5429
5329
|
readonly 'profiles.current': '当前运行';
|
|
5430
5330
|
readonly 'profiles.running.title': '运行状态';
|
|
5431
|
-
readonly 'profiles.running.none': '
|
|
5331
|
+
readonly 'profiles.running.none': '没有正在运行的实例';
|
|
5432
5332
|
readonly 'profiles.running.port': '端口 {port}';
|
|
5433
5333
|
readonly 'profiles.running.open': '打开';
|
|
5434
5334
|
readonly 'profiles.running.badge': ':{port} 运行中';
|
|
@@ -5437,7 +5337,6 @@ declare const zh$4: {
|
|
|
5437
5337
|
readonly 'profiles.running.originExternal': '其他实例';
|
|
5438
5338
|
readonly 'profiles.running.badgePlain': '运行中';
|
|
5439
5339
|
readonly 'profiles.stop': '停止';
|
|
5440
|
-
readonly 'profiles.stopping': '停止中…';
|
|
5441
5340
|
readonly 'profiles.stop.hint': '停止本插件启动的这个实例(先请它自己退出,优雅期超时才强制终止进程树)';
|
|
5442
5341
|
readonly 'profiles.stop.hintExternal': '该档案的实例由另一个 DSH 实例(或手动启动)运行——停止会结束那个进程';
|
|
5443
5342
|
readonly 'profiles.stop.currentHint': '这就是你正在用的这个实例:不能在它自己的界面里停自己,请关闭该窗口/终端(或到启动它的那个实例里停止)';
|
|
@@ -5450,10 +5349,9 @@ declare const zh$4: {
|
|
|
5450
5349
|
readonly 'profiles.copy': '复制命令';
|
|
5451
5350
|
readonly 'profiles.copied': '已复制重启命令';
|
|
5452
5351
|
readonly 'profiles.launch': '启动';
|
|
5453
|
-
readonly 'profiles.launching': '启动中…';
|
|
5454
5352
|
readonly 'profiles.launch.hint': '用该档案另起一个独立 DSH 实例(自动挑空闲端口、自动打开浏览器);当前实例不受影响。只支持 Web 形态档案。';
|
|
5455
|
-
readonly 'profiles.launch.notWeb': '「{name}」不是 Web
|
|
5456
|
-
readonly 'profiles.launch.managed': '「{name}
|
|
5353
|
+
readonly 'profiles.launch.notWeb': '「{name}」不是 Web 形态,不能作为独立实例启动。请在终端运行:';
|
|
5354
|
+
readonly 'profiles.launch.managed': '「{name}」由桌面版独占,命令行无法启动。请在桌面端应用里打开它并安装插件。';
|
|
5457
5355
|
readonly 'profiles.launch.started': '已启动档案「{name}」的独立实例(端口 {port})';
|
|
5458
5356
|
readonly 'profiles.launch.pending': '档案「{name}」的进程已启动(端口 {port}),但 {seconds} 秒内未确认就绪 —— 请看日志确认:';
|
|
5459
5357
|
readonly 'profiles.launch.open': '打开新实例';
|
|
@@ -5468,7 +5366,6 @@ declare const zh$4: {
|
|
|
5468
5366
|
readonly 'profiles.create.placeholder': '例如 writing / rescue';
|
|
5469
5367
|
readonly 'profiles.create.templateLabel': '起步模板';
|
|
5470
5368
|
readonly 'profiles.create.action': '创建档案';
|
|
5471
|
-
readonly 'profiles.create.creating': '创建中…';
|
|
5472
5369
|
readonly 'profiles.create.done': '已创建档案「{name}」';
|
|
5473
5370
|
readonly 'profiles.nameRequired': '请输入档案名';
|
|
5474
5371
|
readonly 'profiles.nameTooLong': '档案名最长 64 个字符';
|
|
@@ -5476,7 +5373,6 @@ declare const zh$4: {
|
|
|
5476
5373
|
readonly 'profiles.nameReserved': '「{name}」是 DSH 保留名(web / headless / sdk / sdk-minimal / acp / desktop),不能手动创建';
|
|
5477
5374
|
readonly 'profiles.list.title': '全部档案';
|
|
5478
5375
|
readonly 'profiles.list.count': '共 {count} 个';
|
|
5479
|
-
readonly 'profiles.list.summary': 'web {web} · headless {headless} · 其他 {generic} · 已装插件 {installed}';
|
|
5480
5376
|
readonly 'profiles.list.hint': '点击档案行查看完整详情(bundle 层 / 依赖 / patch 原文)';
|
|
5481
5377
|
readonly 'profiles.row.summary': '{bundles} 个层 · patch {patch} 条 · 依赖 {deps}';
|
|
5482
5378
|
readonly 'profiles.detail.info': '档案信息';
|
|
@@ -5489,7 +5385,7 @@ declare const zh$4: {
|
|
|
5489
5385
|
readonly 'profiles.incomplete.startedAt': '开始于 {time}';
|
|
5490
5386
|
readonly 'profiles.incomplete.dir': '目录 {path}';
|
|
5491
5387
|
readonly 'profiles.incomplete.hint': '这是一次被中断的档案复制:没有 package.json,无法启动。确认不需要后可直接删除(只删这个目录,不影响其它档案)。';
|
|
5492
|
-
readonly 'profiles.list.incompleteCount': '
|
|
5388
|
+
readonly 'profiles.list.incompleteCount': '未完成副本 {count} 个(不可启动)';
|
|
5493
5389
|
readonly 'profiles.delete.incompleteMessage': '确认删除未完成的副本「{name}」?将物理删除整个目录(含已拷入的部分文件),不可恢复。';
|
|
5494
5390
|
readonly 'profiles.issue.manifestInvalid': 'package.json 损坏';
|
|
5495
5391
|
readonly 'profiles.issue.patchTooLarge': 'patch 文件过大(未展示原文)';
|
|
@@ -5525,12 +5421,11 @@ declare const zh$4: {
|
|
|
5525
5421
|
readonly 'profiles.duplicateMessage': '把档案「{name}」复制成一份新档案:';
|
|
5526
5422
|
readonly 'profiles.duplicate.nameLabel': '副本档案名';
|
|
5527
5423
|
readonly 'profiles.duplicate.includeModules': '同时复制 node_modules(副本立刻可用)';
|
|
5528
|
-
readonly 'profiles.duplicate.includeModulesHint': '
|
|
5529
|
-
readonly 'profiles.duplicate.onlyManifest': '
|
|
5424
|
+
readonly 'profiles.duplicate.includeModulesHint': '同体积 · 约 30 秒 · 不勾选则副本启动前需装依赖';
|
|
5425
|
+
readonly 'profiles.duplicate.onlyManifest': '无 node_modules:仅复制清单与 patch';
|
|
5530
5426
|
readonly 'profiles.duplicate.done': '已复制为档案「{name}」';
|
|
5531
5427
|
readonly 'profiles.duplicate.warn.depsNotInstalled': '副本没有带 node_modules:直接启动会因解析不到 bundle 而失败,先在副本目录安装依赖:';
|
|
5532
5428
|
readonly 'profiles.duplicate.copiedInstall': '已复制安装命令';
|
|
5533
|
-
readonly 'profiles.error.copyFailed': '复制档案失败';
|
|
5534
5429
|
readonly 'profiles.error.exists': '同名档案已存在';
|
|
5535
5430
|
readonly 'profiles.error.notFound': '档案不存在(可能已被删除)';
|
|
5536
5431
|
readonly 'profiles.error.currentProfile': '该操作不能作用于当前运行中的档案';
|
|
@@ -5556,20 +5451,14 @@ declare const zh$4: {
|
|
|
5556
5451
|
readonly 'import.compatibility.score.unsupported': '不支持';
|
|
5557
5452
|
readonly 'import.compatibility.sectionsTitle': '备份包含的分区';
|
|
5558
5453
|
readonly 'nav.home': '首页';
|
|
5559
|
-
readonly 'nav.backups': '备份';
|
|
5560
5454
|
readonly 'nav.export': '导出';
|
|
5561
5455
|
readonly 'nav.import': '导入';
|
|
5562
5456
|
readonly 'nav.sync': '同步';
|
|
5563
5457
|
readonly 'nav.market': '市场';
|
|
5564
|
-
readonly 'nav.profiles': '档案';
|
|
5565
|
-
readonly 'nav.refresh': '刷新';
|
|
5566
5458
|
readonly 'shell.running.restore': '快照恢复';
|
|
5567
5459
|
readonly 'shell.status.idle': '就绪';
|
|
5568
5460
|
readonly 'shell.status.running': '{count} 个任务进行中';
|
|
5569
5461
|
readonly 'shell.status.recovery': '恢复待处理';
|
|
5570
|
-
readonly 'shell.version': '插件 {plugin} · DSH {dsh}';
|
|
5571
|
-
readonly 'shell.drawer.title': '活动与关于';
|
|
5572
|
-
readonly 'shell.drawer.runs': '运行';
|
|
5573
5462
|
readonly 'shell.status.runningAction': '查看进行中的任务';
|
|
5574
5463
|
readonly 'runs.loading': '正在读取任务列表…';
|
|
5575
5464
|
readonly 'runs.loadFailed': '读取任务列表失败:{message}';
|
|
@@ -5607,14 +5496,14 @@ declare const zh$4: {
|
|
|
5607
5496
|
readonly 'runs.cancelAbort': '继续运行';
|
|
5608
5497
|
readonly 'runs.cancelConfirm': '确认终止';
|
|
5609
5498
|
readonly 'runs.cancelRequestedToast': '已请求终止:将在当前计划项完成后暂停';
|
|
5610
|
-
readonly 'runs.cancelWaiting': '
|
|
5611
|
-
readonly 'runs.cancelWaitingJustNow': '
|
|
5499
|
+
readonly 'runs.cancelWaiting': '已请求终止 · 等当前步骤结束 · 已等 {minutes} 分钟';
|
|
5500
|
+
readonly 'runs.cancelWaitingJustNow': '已请求终止 · 等当前步骤结束';
|
|
5612
5501
|
readonly 'runs.cancelStuck': '长时间没有到达安全点。若出现「跳过当前插件」请先点它;仍不行请重启 DSH —— 环境锁由本进程持有,重启即释放,不重启时其他写操作会一直被拒(423)。';
|
|
5613
5502
|
readonly 'runs.lock.title': '环境锁';
|
|
5614
5503
|
readonly 'runs.lock.needsAction': '需要处理';
|
|
5615
5504
|
readonly 'runs.lock.held': '使用中';
|
|
5616
|
-
readonly 'runs.lock.attentionDesc': '
|
|
5617
|
-
readonly 'runs.lock.heldDesc': '
|
|
5505
|
+
readonly 'runs.lock.attentionDesc': '残留锁(持有进程已不存在)或锁状态无法判定:重试/重启都不会自愈,需显式回收。';
|
|
5506
|
+
readonly 'runs.lock.heldDesc': '被另一项任务持有,会自行释放;若它就是上方卡住的那次导入,只能重启 DSH。';
|
|
5618
5507
|
readonly 'runs.lock.recover': '回收残留锁';
|
|
5619
5508
|
readonly 'runs.lock.recoverOk': '已回收残留锁';
|
|
5620
5509
|
readonly 'runs.lock.recoverRefused': '未回收({state}):只有「持有者已确证死亡」的残留锁才允许回收,活锁会自行释放';
|
|
@@ -5631,14 +5520,11 @@ declare const zh$4: {
|
|
|
5631
5520
|
readonly 'overview.activity.copy': '复制';
|
|
5632
5521
|
readonly 'overview.activity.redacted': '(文件名已脱敏)';
|
|
5633
5522
|
readonly 'overview.sections.entries': '{count} 项';
|
|
5634
|
-
readonly 'overview.quick.exportTitle': '生成可迁移的 ZIP 备份文件并下载';
|
|
5635
|
-
readonly 'overview.quick.importTitle': '从备份文件恢复或迁移到本机';
|
|
5636
|
-
readonly 'overview.quick.syncTitle': '跨设备保持配置一致(Git / WebDAV)';
|
|
5637
|
-
readonly 'overview.quick.backupTitle': '立即生成一份完整备份文件(不受定时备份开关影响;在快照页查看 / 还原)';
|
|
5638
5523
|
readonly 'overview.nav.activity': '活动';
|
|
5639
5524
|
readonly 'overview.nav.about': '关于';
|
|
5640
5525
|
readonly 'nav.more': '更多';
|
|
5641
5526
|
readonly 'palette.label': '命令面板';
|
|
5527
|
+
readonly 'palette.shortcut': '⌘/Ctrl+K';
|
|
5642
5528
|
readonly 'palette.hint': '↑↓ 选择 · ↵ 执行 · Esc 关闭';
|
|
5643
5529
|
readonly 'task.title.about': '关于';
|
|
5644
5530
|
readonly 'task.title.export': '导出配置';
|
|
@@ -5653,9 +5539,9 @@ declare const zh$4: {
|
|
|
5653
5539
|
readonly 'about.update.offline': '检查更新会访问 npm registry;离线或受限网络下失败属正常,不影响其它功能。';
|
|
5654
5540
|
readonly 'about.update.current': '当前版本 {version}';
|
|
5655
5541
|
readonly 'about.update.upToDate': '已是最新版本';
|
|
5656
|
-
readonly 'about.update.available': '有新版本 {latest}
|
|
5542
|
+
readonly 'about.update.available': '有新版本 {latest}';
|
|
5657
5543
|
readonly 'about.update.failed': '检查失败:{error}';
|
|
5658
|
-
readonly 'about.update.commandHint': '
|
|
5544
|
+
readonly 'about.update.commandHint': '装完需重启 DSH';
|
|
5659
5545
|
readonly 'about.update.copyCommand': '复制升级命令';
|
|
5660
5546
|
readonly 'about.update.noCommand': '未识别到当前档案,或该档案由桌面端独占管理 —— 请在 DSH 的插件页更新本插件。';
|
|
5661
5547
|
readonly 'about.update.check': '检查更新';
|
|
@@ -5673,7 +5559,7 @@ declare const zh$4: {
|
|
|
5673
5559
|
readonly 'about.update.dialog.install': '立即更新';
|
|
5674
5560
|
readonly 'about.update.dialog.installing': '正在更新,请稍候…';
|
|
5675
5561
|
readonly 'about.update.dialog.done': '更新完成:已安装 v{version}。';
|
|
5676
|
-
readonly 'about.update.dialog.restart': '
|
|
5562
|
+
readonly 'about.update.dialog.restart': '需完全退出并重启 DSH 才会生效';
|
|
5677
5563
|
readonly 'about.update.code.invalidVersion': '版本号无效,未能更新。';
|
|
5678
5564
|
readonly 'about.update.code.profileUnknown': '无法识别当前档案,请在 DSH 的插件页更新本插件。';
|
|
5679
5565
|
readonly 'about.update.code.unsupportedProfile': '桌面端档案由桌面应用独占管理,请在 DSH 的插件页更新本插件。';
|
|
@@ -5695,8 +5581,7 @@ declare const zh$4: {
|
|
|
5695
5581
|
readonly 'profiles.version.format': '会话格式 v{version}';
|
|
5696
5582
|
readonly 'profiles.format.newer': '对话在此实例不可见';
|
|
5697
5583
|
readonly 'profiles.format.older': '对话在该档案不可见';
|
|
5698
|
-
readonly 'nextSteps.sessionsRestart.
|
|
5699
|
-
readonly 'nextSteps.sessionsRestart.hint': '本次写入了 {count} 个会话文件;DSH 在启动时建立会话列表与工作区投影,桌面端请退出应用重开,CLI 档案请重启 dsh。';
|
|
5584
|
+
readonly 'nextSteps.sessionsRestart.hint': '写入 {count} 个会话文件;DSH 只在启动时建立会话列表与工作区投影 —— 桌面端退出应用重开,CLI 档案重启 dsh。';
|
|
5700
5585
|
readonly 'import.source.title': '来源与兼容性';
|
|
5701
5586
|
readonly 'import.source.dsh': 'DSH 版本:{source} → 本机 {target}';
|
|
5702
5587
|
readonly 'import.source.platform': '平台:{source} → 本机 {target}';
|
|
@@ -5705,18 +5590,17 @@ declare const zh$4: {
|
|
|
5705
5590
|
readonly 'import.sessionFormat.skipped': '本次按「跳过」处置未导入 {count} 条会话(格式版本高于本机 DSH,导入了也看不到)';
|
|
5706
5591
|
readonly 'import.sessionFormat.retryPlan': '重新生成计划';
|
|
5707
5592
|
readonly 'import.sessionFormat.option.abort': '中止导入(推荐)';
|
|
5708
|
-
readonly 'import.sessionFormat.hint.abort': '
|
|
5593
|
+
readonly 'import.sessionFormat.hint.abort': '在计划阶段就停下,不写入任何内容。';
|
|
5709
5594
|
readonly 'import.sessionFormat.option.skip': '跳过这些会话';
|
|
5710
|
-
readonly 'import.sessionFormat.hint.skip': '
|
|
5595
|
+
readonly 'import.sessionFormat.hint.skip': '这些会话默认不勾选(可在内容选择器改回),其余分区照常导入。';
|
|
5711
5596
|
readonly 'import.sessionFormat.option.guide': '仅提示,照常导入';
|
|
5712
|
-
readonly 'import.sessionFormat.hint.guide': '
|
|
5713
|
-
readonly 'import.sessionFormat.title': '
|
|
5714
|
-
readonly 'import.sessionFormat.blocked': '
|
|
5715
|
-
readonly 'import.sessionFormat.summary': '
|
|
5597
|
+
readonly 'import.sessionFormat.hint.guide': '会话文件照常写入,但本机 DSH 里看不到这些对话。';
|
|
5598
|
+
readonly 'import.sessionFormat.title': '本机读不了的会话';
|
|
5599
|
+
readonly 'import.sessionFormat.blocked': '已按「中止」停止,未写入任何内容 —— 改选「跳过」或「仅提示」后重新生成计划。';
|
|
5600
|
+
readonly 'import.sessionFormat.summary': '包内 {count} 条会话是 v{newer} 格式,本机只支持 v{target}:DSH 会静默跳过,不报错也不出现在工作区';
|
|
5716
5601
|
readonly 'import.sessionFormat.sampled': '格式体检是抽查:已检查 {checked} 条,另有 {skipped} 条未检查(未检查的按可读处理,不参与本次处置)';
|
|
5717
|
-
readonly 'import.sessionFormat.guide.title': '怎么让这些对话可见';
|
|
5718
5602
|
readonly 'import.sessionFormat.guide.upgrade': '把本档案的 DSH 升级到支持 v{newer} 的版本(当前支持 v{target})后重新导入;或在导出机用不高于 v{target} 的 DSH 重新导出。';
|
|
5719
|
-
readonly 'import.sessionFormat.guide.doctor': '
|
|
5603
|
+
readonly 'import.sessionFormat.guide.doctor': '离线体检本机存量会话(只读):';
|
|
5720
5604
|
readonly 'import.sessionFormat.guide.copy': '复制离线体检命令';
|
|
5721
5605
|
readonly 'backupFiles.encryptedHint': '整包加密的备份:导入时需先输入备份密码解锁(文件本身没有损坏)';
|
|
5722
5606
|
readonly 'library.expand': '展开 {name}';
|
|
@@ -5729,10 +5613,9 @@ declare const zh$4: {
|
|
|
5729
5613
|
readonly 'library.remoteDevice': '由 {device} 推送';
|
|
5730
5614
|
readonly 'library.kind.market': '市场配置';
|
|
5731
5615
|
readonly 'library.title': '产物库';
|
|
5732
|
-
readonly 'library.refresh': '刷新';
|
|
5733
5616
|
readonly 'library.searchPlaceholder': '搜索文件名 / 备注 / 快照 id';
|
|
5734
5617
|
readonly 'library.sourceFailed': '{count} 个来源读取失败';
|
|
5735
|
-
readonly 'library.snapshotsUnreadable': '
|
|
5618
|
+
readonly 'library.snapshotsUnreadable': '快照目录读取失败:可能有快照读不出';
|
|
5736
5619
|
readonly 'snapshots.planChanged': '环境在预览后发生了变化,恢复已取消 —— 请重新预览确认';
|
|
5737
5620
|
readonly 'library.snapshotReferencedByRecovery': '该快照是事故恢复的回滚点,已拒绝删除(请先处理恢复事项)';
|
|
5738
5621
|
readonly 'library.snapshotReferenceUnreadable': '读不到恢复引用清单,已保守拒绝删除(请重试)';
|
|
@@ -5748,8 +5631,6 @@ declare const zh$4: {
|
|
|
5748
5631
|
readonly 'library.new.import': '从文件导入';
|
|
5749
5632
|
readonly 'library.new.market': '逛市场';
|
|
5750
5633
|
readonly 'import.reason.crossPlatform': '跨平台:备份来自 {source},本机是 {target}';
|
|
5751
|
-
readonly 'palette.view.activity': '活动记录';
|
|
5752
|
-
readonly 'palette.view.about': '关于';
|
|
5753
5634
|
readonly 'palette.rescue.recovery': '事故恢复';
|
|
5754
5635
|
readonly 'palette.rescue.mode': '救援模式';
|
|
5755
5636
|
readonly 'palette.rescue.rollback': '回滚点(工作区 + 会话回退)';
|
|
@@ -5759,15 +5640,9 @@ declare const zh$4: {
|
|
|
5759
5640
|
readonly 'import.reason.sourceOlder': '备份来自更旧的 DSH({source} → 本机 {target}):向后兼容';
|
|
5760
5641
|
readonly 'foreign.source.title': '从其它 agent 导入';
|
|
5761
5642
|
readonly 'foreign.source.hint': '读取本机已装的其它 agent 配置,先看清将导入什么,再交给既有的导入向导(分析只读,零写入)。';
|
|
5762
|
-
readonly 'foreign.source.selectTitle': '选择来源';
|
|
5763
5643
|
readonly 'foreign.source.loading': '正在检测本机配置…';
|
|
5764
5644
|
readonly 'foreign.source.empty': '未检测到任何可导入的其它 agent 配置。';
|
|
5765
5645
|
readonly 'foreign.source.unknown': '未识别的来源。';
|
|
5766
|
-
readonly 'foreign.source.found': '已检测到';
|
|
5767
|
-
readonly 'foreign.source.notFound': '未检测到';
|
|
5768
|
-
readonly 'foreign.source.paths': '路径';
|
|
5769
|
-
readonly 'foreign.source.locationOverridden': '位置由环境变量覆盖';
|
|
5770
|
-
readonly 'foreign.source.detectFailed': '检测失败:{reason}';
|
|
5771
5646
|
readonly 'foreign.source.claude-code': 'Claude Code';
|
|
5772
5647
|
readonly 'foreign.source.hermes': 'Hermes';
|
|
5773
5648
|
readonly 'foreign.source.cursor': 'Cursor';
|
|
@@ -5799,26 +5674,18 @@ declare const zh$4: {
|
|
|
5799
5674
|
readonly 'foreign.source.vibe': 'Vibe';
|
|
5800
5675
|
readonly 'foreign.source.dsh': 'DSH 会话日志(V0-V3 代次)';
|
|
5801
5676
|
readonly 'foreign.action.import': '开始导入';
|
|
5802
|
-
readonly 'foreign.action.preview': '查看将导入的内容';
|
|
5803
5677
|
readonly 'foreign.action.refresh': '重新检测';
|
|
5804
|
-
readonly 'foreign.action.retry': '重试';
|
|
5805
|
-
readonly 'foreign.action.close': '关闭';
|
|
5806
|
-
readonly 'foreign.loading': '正在读取外部配置…';
|
|
5807
|
-
readonly 'foreign.importing': '正在转换外部配置…';
|
|
5808
5678
|
readonly 'foreign.importFailed': '导入失败:{reason}';
|
|
5809
5679
|
readonly 'foreign.previewTitle': '将导入的内容';
|
|
5810
|
-
readonly 'foreign.previewEmpty': '该来源没有可导入的配置项。';
|
|
5811
5680
|
readonly 'foreign.previewSections': '包含分区:{sections}';
|
|
5812
|
-
readonly 'foreign.previewCounts': '共 {count} 项计划动作';
|
|
5813
5681
|
readonly 'foreign.previewDryRun': '只读预览:不会写入任何配置。';
|
|
5814
|
-
readonly 'foreign.previewReset': '
|
|
5815
|
-
readonly 'foreign.lossy.title': '
|
|
5682
|
+
readonly 'foreign.previewReset': '来源已变化:上一次的产包结果作废,请重新「开始导入」。';
|
|
5683
|
+
readonly 'foreign.lossy.title': '已知有损';
|
|
5816
5684
|
readonly 'foreign.lossy.hint': '下面三条是「外部配置 → bundle → 导入」这条流水线的既有行为:都不阻断导入,兼容性评分也不会为它们给出原因。';
|
|
5817
5685
|
readonly 'foreign.lossy.applies': '本包适用';
|
|
5818
5686
|
readonly 'foreign.lossy.notApplies': '本包不涉及';
|
|
5819
|
-
readonly 'foreign.credentialRefs': '需补录凭据 {count}
|
|
5687
|
+
readonly 'foreign.credentialRefs': '需补录凭据 {count} 项(值未带出)';
|
|
5820
5688
|
readonly 'foreign.credentialRefsNone': '无需补录凭据';
|
|
5821
|
-
readonly 'foreign.reportOnly': '只报告、不导入:{detail}';
|
|
5822
5689
|
readonly 'foreign.skipped': '未迁移 {count} 项';
|
|
5823
5690
|
readonly 'foreign.skip.unsupported-hooks': 'settings 的 hooks:DSH 无对等结构,未迁移';
|
|
5824
5691
|
readonly 'foreign.skip.unsupported-commands': '斜杠命令:与 DSH 提示词不是同一语义,本次未迁移';
|
|
@@ -5849,7 +5716,7 @@ declare const zh$4: {
|
|
|
5849
5716
|
readonly 'foreign.skip.legacy-rules-file': '旧式规则文件:DSH 无对等结构,只报告';
|
|
5850
5717
|
readonly 'foreign.skip.instructions-merged': '多份指令源被合并为一个全局指令文件';
|
|
5851
5718
|
readonly 'foreign.skip.instructions-override-selected': '命中更高优先级的指令文件(override),按它导入';
|
|
5852
|
-
readonly 'foreign.conflict.policy': '同 id
|
|
5719
|
+
readonly 'foreign.conflict.policy': '同 id 冲突不覆盖本机内容:跳过并逐条报告';
|
|
5853
5720
|
};
|
|
5854
5721
|
/** 字典键联合(注册处 compile-time 校验) */
|
|
5855
5722
|
type ConfigManagerKey = keyof typeof zh$4;
|
|
@@ -5871,7 +5738,6 @@ declare const zh$3: {
|
|
|
5871
5738
|
readonly 'config.tokenMissing': '未配置令牌:可拉取公开仓库,无法推送';
|
|
5872
5739
|
readonly 'config.tokenPlaceholder': 'ghp_…(可选)';
|
|
5873
5740
|
readonly 'config.save': '保存配置';
|
|
5874
|
-
readonly 'config.saving': '保存中…';
|
|
5875
5741
|
readonly 'config.saveHint': '表单改动会自动保存(密码/token 安全写入 DSH credentials,不会写入同步文件或日志);也可点击按钮立即保存。';
|
|
5876
5742
|
readonly 'channel.title': '同步通道';
|
|
5877
5743
|
readonly 'channel.git': 'Git 私有仓库';
|
|
@@ -5879,7 +5745,7 @@ declare const zh$3: {
|
|
|
5879
5745
|
readonly 'channel.s3': '对象存储(S3 兼容)';
|
|
5880
5746
|
readonly 'channel.gist': 'GitHub Gist';
|
|
5881
5747
|
readonly 'channel.perChannelHint': '每条通道(Git / WebDAV / 对象存储 / Gist)的自动同步、同步模式、加密与远端快照各自独立配置。';
|
|
5882
|
-
readonly 'channel.open': '
|
|
5748
|
+
readonly 'channel.open': '配置…';
|
|
5883
5749
|
readonly 'channel.openHint': '远程同步通过「同步通道」进行:Git 私有仓库或 WebDAV 服务器。点击按钮在弹窗中配置或修改。';
|
|
5884
5750
|
readonly 'channel.expand': '展开通道详情';
|
|
5885
5751
|
readonly 'channel.collapse': '收起通道详情';
|
|
@@ -5906,7 +5772,6 @@ declare const zh$3: {
|
|
|
5906
5772
|
readonly 'workdir.recloneConfirmTitle': '重新克隆工作副本?';
|
|
5907
5773
|
readonly 'workdir.recloneConfirmMessage': '将删除本机工作副本目录并从远端重新克隆。本机配置与远端快照都不受影响,但工作副本里尚未推送的本地提交会被丢弃 —— 需要时请先在同步页执行一次推送。';
|
|
5908
5774
|
readonly 'workdir.recloneConfirm': '重新克隆';
|
|
5909
|
-
readonly 'workdir.ahead': '未上传的本地提交';
|
|
5910
5775
|
readonly 'workdir.remoteSnapshots': '远端快照数';
|
|
5911
5776
|
readonly 'workdir.backlogAhead': '有本地提交还没上传到远端';
|
|
5912
5777
|
readonly 'workdir.backlogNeverSynced': '本地领先,但远端从未收到过快照 —— 这条通道可能一直没在真正备份';
|
|
@@ -5916,7 +5781,6 @@ declare const zh$3: {
|
|
|
5916
5781
|
readonly 'toast.workdirResetFailed': '重建工作副本失败';
|
|
5917
5782
|
readonly 'syncStatus.lastSync': '上次同步';
|
|
5918
5783
|
readonly 'syncStatus.sections': '可同步分区';
|
|
5919
|
-
readonly 'syncStatus.state': '配置状态';
|
|
5920
5784
|
readonly 'webdav.title': 'WebDAV 配置';
|
|
5921
5785
|
readonly 'webdav.url': '服务器地址';
|
|
5922
5786
|
readonly 'webdav.urlHint': 'WebDAV 服务器根地址(https://…)。同步快照与索引存放于该地址的 dsh-config-manager/ 子目录下。请勿在地址中包含用户名/密码。';
|
|
@@ -5935,21 +5799,17 @@ declare const zh$3: {
|
|
|
5935
5799
|
readonly 'webdav.preset.synology': 'Synology NAS (WebDAV)';
|
|
5936
5800
|
readonly 'webdav.preset.box': 'Box';
|
|
5937
5801
|
readonly 'github.title': 'GitHub 登录';
|
|
5938
|
-
readonly 'github.description': '通过 GitHub OAuth 设备码流程授权:无需手动输入 token,在浏览器中确认授权后,token 自动写入 DSH credentials
|
|
5939
|
-
readonly 'github.login': '使用 GitHub 登录';
|
|
5940
|
-
readonly 'github.retry': '重新登录';
|
|
5802
|
+
readonly 'github.description': '通过 GitHub OAuth 设备码流程授权:无需手动输入 token,在浏览器中确认授权后,token 自动写入 DSH credentials。授权范围是「整个账号」:GitHub OAuth App 无法收窄到单个仓库,组织仓库还需组织管理员批准。只想授权一个仓库 → 改用上方 token 字段填细粒度 PAT(Repository access 选 Only select repositories,Permissions → Contents 设为 Read and write;创建页 github.com/settings/personal-access-tokens/new)。';
|
|
5941
5803
|
readonly 'github.cancel': '取消';
|
|
5942
5804
|
readonly 'github.tokenInvalid': 'GitHub 登录已失效,请重新登录。';
|
|
5943
5805
|
readonly 'github.userCode': '一次性授权代码';
|
|
5944
5806
|
readonly 'github.openAuth': '打开 GitHub 授权页面';
|
|
5945
|
-
readonly 'github.clientIdHint': '需要插件配置 githubClientId(GitHub OAuth App 的 client_id)才能使用 GitHub 登录。';
|
|
5946
5807
|
readonly 'repoPicker.label': '从我的仓库中选择';
|
|
5947
|
-
readonly 'repoPicker.hint': '列出你 GitHub
|
|
5808
|
+
readonly 'repoPicker.hint': '列出你 GitHub 账号下已有的私有仓库(按最近更新排序),选中即填入下方仓库地址;也可以直接在下方手填地址(ssh / 本地路径 / 不在列表里的仓库)。列表需要先登录 GitHub;新建的仓库一律为私有 —— 公开仓库会公开你的配置内容。';
|
|
5948
5809
|
readonly 'repoPicker.placeholder': '手动填写地址(或从上方选择)';
|
|
5949
5810
|
readonly 'repoPicker.refresh': '刷新列表';
|
|
5950
|
-
readonly 'repoPicker.refreshing': '刷新中…';
|
|
5951
5811
|
readonly 'repoPicker.forkBadge': 'Fork';
|
|
5952
|
-
readonly 'repoPicker.empty': '
|
|
5812
|
+
readonly 'repoPicker.empty': '没有可用的私有仓库';
|
|
5953
5813
|
readonly 'repoPicker.loadFailed': '仓库列表加载失败,可重试或直接手填地址。';
|
|
5954
5814
|
readonly 'repoPicker.updatedAt': '更新于 {time}';
|
|
5955
5815
|
readonly 'repoPicker.create': '+ 新建私有仓库…';
|
|
@@ -5959,25 +5819,13 @@ declare const zh$3: {
|
|
|
5959
5819
|
readonly 'repoPicker.description': '描述';
|
|
5960
5820
|
readonly 'repoPicker.descriptionPlaceholder': '可选,如「我的配置仓库(dsh-config-manager 自动发布)」';
|
|
5961
5821
|
readonly 'repoPicker.createSubmit': '创建并选用';
|
|
5962
|
-
readonly 'repoPicker.creating': '创建中…';
|
|
5963
5822
|
readonly 'repoPicker.createCancel': '取消';
|
|
5964
5823
|
readonly 'repoPicker.created': '已创建私有仓库 {name},地址已填入。';
|
|
5965
5824
|
readonly 'repoPicker.createFailed': '新建仓库失败';
|
|
5966
5825
|
readonly 'repoPicker.nameRequired': '请填写仓库名。';
|
|
5967
5826
|
readonly 'repoPicker.nameInvalid': '仓库名只能包含字母、数字、点、下划线、连字符(最长 100 字符,不能以点开头)。';
|
|
5968
5827
|
readonly 'repoPicker.privateOnly': '新建的仓库固定为私有:公开仓库会公开你的配置内容。';
|
|
5969
|
-
readonly 'status.title': '同步状态';
|
|
5970
|
-
readonly 'status.never': '从未同步';
|
|
5971
|
-
readonly 'action.push': '推送到远端';
|
|
5972
|
-
readonly 'action.pull': '拉取差异预览';
|
|
5973
|
-
readonly 'action.pushing': '正在推送…';
|
|
5974
|
-
readonly 'action.pulling': '正在拉取…';
|
|
5975
5828
|
readonly 'push.title': '推送结果';
|
|
5976
|
-
readonly 'pull.title': '拉取差异预览';
|
|
5977
|
-
readonly 'pull.previewHint': '以上为只读差异预览,不会执行导入。当前版本暂不支持一键导入;如需应用远端配置,请使用「导入恢复」向导手动导入导出的备份。';
|
|
5978
|
-
readonly 'pull.needsReview': '包含需要人工决策的项(冲突 / 密钥 / 依赖 / 安装)';
|
|
5979
|
-
readonly 'pull.empty': '远端快照与本地一致(无变更)';
|
|
5980
|
-
readonly 'change.total': '共 {total} 项变更';
|
|
5981
5829
|
readonly 'sections.title': '同步分区';
|
|
5982
5830
|
readonly 'warnings.title': '分区告警';
|
|
5983
5831
|
readonly 'syncflow.title': '一键同步';
|
|
@@ -5989,7 +5837,6 @@ declare const zh$3: {
|
|
|
5989
5837
|
readonly 'syncflow.snapshotOption': '({date} · {count} 分区)';
|
|
5990
5838
|
readonly 'syncflow.selectSnapshot': '选择历史快照';
|
|
5991
5839
|
readonly 'syncflow.refreshSnapshots': '刷新快照列表';
|
|
5992
|
-
readonly 'syncflow.refreshingSnapshots': '正在获取…';
|
|
5993
5840
|
readonly 'syncflow.latestSnapshot': '最新快照';
|
|
5994
5841
|
readonly 'syncflow.noSnapshots': '远端暂无快照';
|
|
5995
5842
|
readonly 'syncflow.confirmImport': '确认导入';
|
|
@@ -5998,17 +5845,13 @@ declare const zh$3: {
|
|
|
5998
5845
|
readonly 'syncflow.adoptHint': '勾选 = 导入该项;取消 = 跳过';
|
|
5999
5846
|
readonly 'syncflow.needsReviewBadge': '需人工决策';
|
|
6000
5847
|
readonly 'syncflow.empty': '远端快照与本地一致(无变更)';
|
|
6001
|
-
readonly 'syncflow.
|
|
6002
|
-
readonly 'syncflow.listScope': '下面列表逐项确认 {review} 项;其余 {auto} 项按默认方式自动采用,无需逐条处理。';
|
|
5848
|
+
readonly 'syncflow.listScope': '列表逐项确认 {review} 项 · 其余 {auto} 项自动采用';
|
|
6003
5849
|
readonly 'syncflow.keepLocalAll': '全部保留当前配置';
|
|
6004
5850
|
readonly 'syncflow.useRemoteAll': '全部使用备份配置';
|
|
6005
|
-
readonly 'syncflow.bulkHint': '
|
|
6006
|
-
readonly 'syncflow.
|
|
5851
|
+
readonly 'syncflow.bulkHint': '批量作用于上面 {n} 项';
|
|
5852
|
+
readonly 'syncflow.bulkErrorNote': '错误项需逐项处理';
|
|
6007
5853
|
readonly 'syncflow.conflictUseLocal': '保留当前';
|
|
6008
5854
|
readonly 'syncflow.conflictUseRemote': '使用备份';
|
|
6009
|
-
readonly 'syncflow.conflictLocalLabel': '当前';
|
|
6010
|
-
readonly 'syncflow.conflictRemoteLabel': '备份';
|
|
6011
|
-
readonly 'syncflow.conflictAncestorLabel': '共同祖先';
|
|
6012
5855
|
readonly 'syncflow.conflictUnresolved': '冲突项 {itemId} 尚未选择解决方式(保留当前 / 使用备份)';
|
|
6013
5856
|
readonly 'syncflow.diff': '差异';
|
|
6014
5857
|
readonly 'syncflow.importDone': '已导入 {n} 个分区';
|
|
@@ -6016,7 +5859,6 @@ declare const zh$3: {
|
|
|
6016
5859
|
readonly 'syncflow.importedSections': '已写入';
|
|
6017
5860
|
readonly 'syncflow.importWarnings': '导入告警';
|
|
6018
5861
|
readonly 'syncflow.rollback': '回滚到应用前';
|
|
6019
|
-
readonly 'syncflow.rollingBack': '正在回滚…';
|
|
6020
5862
|
readonly 'syncflow.rollbackDone': '已回滚到应用前';
|
|
6021
5863
|
readonly 'syncflow.rollbackPartialToast': '回滚未完成:{n} 项没能恢复';
|
|
6022
5864
|
readonly 'syncflow.rollbackIncomplete': '回滚未完成:{n} 项无法自动恢复(配置可能停留在中间状态)';
|
|
@@ -6028,11 +5870,11 @@ declare const zh$3: {
|
|
|
6028
5870
|
readonly 'syncflow.pushChanged': '有改动';
|
|
6029
5871
|
readonly 'syncflow.pushUnchanged': '无改动';
|
|
6030
5872
|
readonly 'syncflow.pushConfirm': '确认推送';
|
|
6031
|
-
readonly 'syncflow.pushing': '正在推送…';
|
|
6032
5873
|
readonly 'syncflow.pushFirstBaseline': '远端暂无快照:本次将创建首个同步基线';
|
|
5874
|
+
readonly 'syncflow.remoteEmptyGuide': '远端还没有任何快照:这是首次同步,先点「推送到远端」把本机配置推上去(推送会创建第一个快照),之后才能拉取。';
|
|
6033
5875
|
readonly 'mode.title': '同步分区';
|
|
6034
5876
|
readonly 'mode.hint': '点按钮在弹窗里勾选要同步的分区:勾选集合就是同步范围(默认已勾选推荐分区,可随时改)。';
|
|
6035
|
-
readonly 'mode.selectedCount': '已勾选 {n}
|
|
5877
|
+
readonly 'mode.selectedCount': '已勾选 {n} 个';
|
|
6036
5878
|
readonly 'mode.sectionsHint': '默认可同步的是可移植分区;平台相关分区(MCP 服务器)与设备相关分区(插件文件、凭据状态、历史会话)只有你在这里主动勾选才参与同步。';
|
|
6037
5879
|
readonly 'mode.atLeastOne': '请至少勾选一个同步分区';
|
|
6038
5880
|
readonly 'mode.sectionPortable': '可移植';
|
|
@@ -6050,7 +5892,7 @@ declare const zh$3: {
|
|
|
6050
5892
|
readonly 'mode.sessionsWorkspaceWarn': '已勾选历史对话,但没有勾选「工作区」分区:目标机上这些对话可能归属不到任何工作区而显示不出来。建议一并勾选「工作区」。';
|
|
6051
5893
|
readonly 'mode.gistSessionsWarn': '当前通道是 GitHub Gist,且勾选了「历史会话」:gist 会一次取回全部文件内容、单文件超限即截断、文件数还有上限,大分区同步可能失败或内容被截断。建议改用 Git / WebDAV / 对象存储通道同步历史会话,或取消勾选该分区。';
|
|
6052
5894
|
readonly 'mode.persistHint': '分区选择已保存到本机:自动同步和手动推送都会使用此配置(重启后仍生效)。';
|
|
6053
|
-
readonly 'mode.choose': '
|
|
5895
|
+
readonly 'mode.choose': '选择…';
|
|
6054
5896
|
readonly 'mode.pickerTitle': '选择同步分区';
|
|
6055
5897
|
readonly 'mode.pickerHint': '改动即时生效并保存(关闭弹窗即完成)。';
|
|
6056
5898
|
readonly 'mode.pickerBack': '返回分区列表';
|
|
@@ -6062,21 +5904,20 @@ declare const zh$3: {
|
|
|
6062
5904
|
readonly 'mode.passwordConfirm': '确认密码';
|
|
6063
5905
|
readonly 'mode.passwordMismatch': '两次输入的密码不一致';
|
|
6064
5906
|
readonly 'mode.passwordRequired': '加密必须设置密码';
|
|
6065
|
-
readonly 'mode.passwordSaved': '密码已保存到本机';
|
|
6066
5907
|
readonly 'mode.passwordSavedHint': '本机已保存密码:留空即沿用,输入新密码会覆盖已保存的密码。';
|
|
6067
5908
|
readonly 'mode.passwordPlaceholder': '已保存(留空即沿用)';
|
|
6068
|
-
readonly 'mode.passwordClearNotice': '
|
|
5909
|
+
readonly 'mode.passwordClearNotice': '取消勾选会删除已保存的密码';
|
|
6069
5910
|
readonly 'mode.includeSecrets': '导出密钥';
|
|
6070
5911
|
readonly 'mode.includeSecretsHint': '把真实凭据值(~/.dsh/.credentials.yaml)写入加密快照,可在另一台机器上随同步一并写回本机凭据;勾选时自动选中加密,密钥绝不进入未加密快照。';
|
|
6071
5912
|
readonly 'mode.encryptAutosyncNotice': '加密快照仅通过手动推送/拉取使用;自动同步无密码,遇到加密快照会跳过并在历史中提示。';
|
|
6072
5913
|
readonly 'mode.decryptPassword': '解密密码(加密快照拉取/同步用,可选)';
|
|
6073
5914
|
readonly 'mode.decryptPasswordHint': '输入后保存在本机凭据库,下次拉取自动使用;只有拉取的快照确实加密时才会用到 —— 未加密的备份不会使用密码。删除请点「删除已保存密码」。';
|
|
6074
|
-
readonly 'mode.decryptPasswordSaved': '
|
|
5915
|
+
readonly 'mode.decryptPasswordSaved': '已保存到本机';
|
|
6075
5916
|
readonly 'mode.decryptPasswordPlaceholder': '已保存(留空即沿用)';
|
|
6076
5917
|
readonly 'mode.clearSavedPassword': '删除已保存密码';
|
|
6077
5918
|
readonly 'autosync.title': '自动同步';
|
|
6078
5919
|
readonly 'autosync.description': '开启后,DSH 在后台保持配置一致:本地配置有改动时自动上传,检测到远端有新快照时才自动拉取合并;定时器仅作兜底轮询,无变化不重复动作。仅在无冲突且无需人工干预时才自动写入本地。';
|
|
6079
|
-
readonly 'autosync.enable': '
|
|
5920
|
+
readonly 'autosync.enable': '启用';
|
|
6080
5921
|
readonly 'autosync.interval': '兜底轮询间隔';
|
|
6081
5922
|
readonly 'autosync.intervalHint': '兜底检查节奏:间隔到点 / DSH 启动时检查远端是否有新快照,有才拉取合并。启用「本地改动即时同步」后,保存配置会立刻触发一轮,不必等这里。';
|
|
6082
5923
|
readonly 'autosync.realtime': '本地改动即时同步';
|
|
@@ -6096,12 +5937,9 @@ declare const zh$3: {
|
|
|
6096
5937
|
readonly 'autosync.interval6h': '6 小时';
|
|
6097
5938
|
readonly 'autosync.interval12h': '12 小时';
|
|
6098
5939
|
readonly 'autosync.interval24h': '24 小时';
|
|
6099
|
-
readonly 'autosync.status': '上次运行:{status}({time})';
|
|
6100
5940
|
readonly 'autosync.statusNever': '从未运行';
|
|
6101
5941
|
readonly 'autosync.nextRun': '下次约 {time} 后';
|
|
6102
5942
|
readonly 'autosync.due': '已到同步时间,即将执行';
|
|
6103
|
-
readonly 'autosync.failCount': '连续失败 {n} 次';
|
|
6104
|
-
readonly 'autosync.running': '自动同步进行中…';
|
|
6105
5943
|
readonly 'autosync.success': '成功';
|
|
6106
5944
|
readonly 'autosync.skipped': '已跳过';
|
|
6107
5945
|
readonly 'autosync.failed': '失败';
|
|
@@ -6113,17 +5951,13 @@ declare const zh$3: {
|
|
|
6113
5951
|
readonly 'history.empty': '尚无同步历史';
|
|
6114
5952
|
readonly 'history.emptyHint': '完成首次 push / 一键同步 / 自动同步后,这里会显示记录。';
|
|
6115
5953
|
readonly 'history.colTime': '时间';
|
|
6116
|
-
readonly 'history.colKind': '类型';
|
|
6117
5954
|
readonly 'history.colDetail': '详情';
|
|
6118
|
-
readonly 'history.kindSnapshot': '快照';
|
|
6119
5955
|
readonly 'history.kindAutosync': '自动同步';
|
|
6120
5956
|
readonly 'history.sectionCount': '分区';
|
|
6121
5957
|
readonly 'history.detail': '明细';
|
|
6122
|
-
readonly 'history.autosyncDirection': '方向:{direction}';
|
|
6123
5958
|
readonly 'history.autosyncPull': '下载';
|
|
6124
5959
|
readonly 'history.autosyncPush': '上传';
|
|
6125
5960
|
readonly 'history.autosyncBoth': '双向';
|
|
6126
|
-
readonly 'history.autosyncSkipReason': '跳过原因:{reason}';
|
|
6127
5961
|
readonly 'history.autosyncReasonConflict': '冲突';
|
|
6128
5962
|
readonly 'history.autosyncReasonNoRemote': '无远端快照';
|
|
6129
5963
|
readonly 'history.autosyncReasonNotConfigured': '未配置仓库';
|
|
@@ -6137,13 +5971,9 @@ declare const zh$3: {
|
|
|
6137
5971
|
readonly 'history.autosyncConflicted': '跳过冲突分区:{sections}';
|
|
6138
5972
|
readonly 'history.autosyncApplied': '应用分区:{sections}';
|
|
6139
5973
|
readonly 'history.autosyncError': '错误:{error}';
|
|
6140
|
-
readonly 'history.autosyncNotified': '已通知(连续失败 3 次)';
|
|
6141
|
-
readonly 'history.column.snapshot': '快照';
|
|
6142
|
-
readonly 'history.column.autosync': '自动同步';
|
|
6143
5974
|
readonly 'history.channelGit': 'GitHub';
|
|
6144
5975
|
readonly 'history.channelWebdav': 'WebDAV';
|
|
6145
5976
|
readonly 'history.stats.total': '共 {count} 条';
|
|
6146
|
-
readonly 'history.stats.snapshots': '快照 {count}';
|
|
6147
5977
|
readonly 'history.stats.autosync': '自动同步 {count}';
|
|
6148
5978
|
readonly 'history.stats.failed': '失败 {count}';
|
|
6149
5979
|
readonly 'history.stats.skipped': '跳过 {count}';
|
|
@@ -6160,8 +5990,6 @@ declare const zh$3: {
|
|
|
6160
5990
|
readonly 'toast.pushPreviewFailed': '推送预览失败';
|
|
6161
5991
|
readonly 'toast.pushFailed': '推送失败';
|
|
6162
5992
|
readonly 'toast.pushDone': '推送完成';
|
|
6163
|
-
readonly 'toast.pullFailed': '拉取失败';
|
|
6164
|
-
readonly 'toast.pullDone': '拉取完成';
|
|
6165
5993
|
readonly 'toast.syncStartFailed': '一键同步失败';
|
|
6166
5994
|
readonly 'toast.autosyncUpdateFailed': '自动同步设置更新失败';
|
|
6167
5995
|
readonly 'toast.autosyncUpdated': '自动同步设置已更新';
|
|
@@ -6181,8 +6009,7 @@ declare const zh$3: {
|
|
|
6181
6009
|
readonly 'syncflow.importPartialToast': '部分成功:{n} 项未生效,请查看结果明细';
|
|
6182
6010
|
readonly 'syncflow.importPartial': '部分成功:{n} 项未生效(其余已写入,未整体回滚)';
|
|
6183
6011
|
readonly 'syncflow.ineffectiveItems': '未生效项';
|
|
6184
|
-
readonly 'history.
|
|
6185
|
-
readonly 'history.remoteMovedAction': '去看看';
|
|
6012
|
+
readonly 'history.remoteMovedAction': '在产物库查看远端快照';
|
|
6186
6013
|
readonly 'syncflow.compat.excellent': '兼容性:优秀';
|
|
6187
6014
|
readonly 'syncflow.compat.good': '兼容性:良好(备份来自更旧的 DSH)';
|
|
6188
6015
|
readonly 'syncflow.compat.partial': '兼容性:部分兼容(跨平台 / 分区缺失 / 版本超前,需人工确认)';
|
|
@@ -6240,12 +6067,9 @@ declare const zh$3: {
|
|
|
6240
6067
|
readonly 'cloud.credentialsWriteFailed': '密钥写入 DSH 凭据失败(配置未保存)';
|
|
6241
6068
|
readonly 'merge.title': '远程合并';
|
|
6242
6069
|
readonly 'merge.subtitle': '读取远端快照做三方合并(本地 / 远端 / 共同基准),列出需要你裁决的分区;预览阶段零写入。';
|
|
6243
|
-
readonly 'merge.entry': '检查远程合并';
|
|
6244
|
-
readonly 'merge.entryHint': '只读:先看远端与本地差在哪、哪些分区需要裁决。不会写任何内容。';
|
|
6245
6070
|
readonly 'merge.loading': '正在读取远端快照并合并…';
|
|
6246
6071
|
readonly 'merge.reload': '重新预览';
|
|
6247
6072
|
readonly 'merge.empty': '没有需要合并的内容';
|
|
6248
|
-
readonly 'merge.emptyHint': '远端与本地一致,或当前没有分区参与同步。';
|
|
6249
6073
|
readonly 'merge.noAncestor': '没有共同基准快照:合并退化为两方比较,两侧不一致的分区一律按冲突处理,需要你逐个裁决。';
|
|
6250
6074
|
readonly 'merge.summary.auto': '可自动应用';
|
|
6251
6075
|
readonly 'merge.summary.review': '待裁决';
|
|
@@ -6253,7 +6077,6 @@ declare const zh$3: {
|
|
|
6253
6077
|
readonly 'merge.summary.skipped': '无变化';
|
|
6254
6078
|
readonly 'merge.section.title': '分区裁决';
|
|
6255
6079
|
readonly 'merge.scopeNotice': '冲突按分区整体裁决(本版不做逐条裁决)。';
|
|
6256
|
-
readonly 'merge.skipNotice': '跳过 ≠ 已解决:跳过的冲突不会推进同步基线,下次同步仍会出现。';
|
|
6257
6080
|
readonly 'merge.decision.useRemote': '采用远端';
|
|
6258
6081
|
readonly 'merge.decision.keepLocal': '保留本地';
|
|
6259
6082
|
readonly 'merge.decision.merge': '自动合并';
|
|
@@ -6271,7 +6094,6 @@ declare const zh$3: {
|
|
|
6271
6094
|
readonly 'merge.reason.section': '整个分区冲突';
|
|
6272
6095
|
readonly 'merge.conflictCount': '{n} 处冲突';
|
|
6273
6096
|
readonly 'merge.autoMergedCount': '已自动并入 {n} 处改动';
|
|
6274
|
-
readonly 'merge.col.path': '冲突位置';
|
|
6275
6097
|
readonly 'merge.col.local': '本地';
|
|
6276
6098
|
readonly 'merge.col.remote': '远端';
|
|
6277
6099
|
readonly 'merge.col.ancestor': '基准';
|
|
@@ -6279,24 +6101,15 @@ declare const zh$3: {
|
|
|
6279
6101
|
readonly 'merge.action.useLocal': '采用本地';
|
|
6280
6102
|
readonly 'merge.action.useRemote': '采用远端';
|
|
6281
6103
|
readonly 'merge.action.useMerged': '采用自动合并';
|
|
6282
|
-
readonly 'merge.action.useMergedDisabled': '该分区没有可用的自动合并结果(两侧改动重叠),只能采用一侧或跳过。';
|
|
6283
|
-
readonly 'merge.action.skip': '跳过';
|
|
6284
6104
|
readonly 'merge.action.current': '当前裁决';
|
|
6285
6105
|
readonly 'merge.bulk.keepLocal': '全部采用本地';
|
|
6286
6106
|
readonly 'merge.bulk.useRemote': '全部采用远端';
|
|
6287
6107
|
readonly 'merge.bulk.useMerged': '全部采用自动合并';
|
|
6288
|
-
readonly 'merge.bulk.autoOnly': '仅处理无冲突项';
|
|
6289
6108
|
readonly 'merge.bulk.leavePending': '冲突留到下次';
|
|
6290
6109
|
readonly 'merge.bulk.hint': '「全部采用自动合并」只对真有自动合并结果的分区生效;「冲突留到下次」把需要你裁决的分区全部移出本次操作(不写入、不推进基线),下次同步它们还会出现。';
|
|
6291
6110
|
readonly 'merge.bulk.title': '批量';
|
|
6292
6111
|
readonly 'merge.apply': '执行合并';
|
|
6293
|
-
readonly 'merge.applying': '执行中…';
|
|
6294
|
-
readonly 'merge.apply.nothing': '当前没有会产生写入的裁决:所有待裁决分区都停在「跳过」。';
|
|
6295
6112
|
readonly 'merge.apply.summary': '已裁决 {decided} / 待裁决 {needs} 个分区';
|
|
6296
|
-
readonly 'merge.apply.skips': '其中 {n} 个是「跳过」(不会推进同步基线)';
|
|
6297
|
-
readonly 'merge.apply.undecided': '还有 {n} 个分区未裁决(未裁决不会被执行,等同跳过)。';
|
|
6298
|
-
readonly 'merge.apply.pendingHint': '还有 {n} 个分区待裁决:本次不会应用它们,下次同步仍会出现。';
|
|
6299
|
-
readonly 'merge.apply.nothingPending': '所有分区都没有变化,本次不需要执行合并。';
|
|
6300
6113
|
readonly 'merge.apply.willApply': '本次会应用 {n} 个分区';
|
|
6301
6114
|
readonly 'merge.result.title': '合并结果';
|
|
6302
6115
|
readonly 'merge.result.applied': '已应用分区';
|
|
@@ -6305,10 +6118,8 @@ declare const zh$3: {
|
|
|
6305
6118
|
readonly 'merge.result.restoreId': '回滚点';
|
|
6306
6119
|
readonly 'merge.result.rolledBack': '已整体回滚';
|
|
6307
6120
|
readonly 'merge.result.rollbackIncomplete': '整体回滚不完整:有项未恢复(见警告)';
|
|
6308
|
-
readonly 'merge.result.none': '没有分区被改动';
|
|
6309
6121
|
readonly 'merge.result.pending': '仍有 {n} 个分区待裁决(跳过 ≠ 已解决,下次同步仍会出现)';
|
|
6310
6122
|
readonly 'merge.result.rollback': '一键回滚';
|
|
6311
|
-
readonly 'merge.result.rollingBack': '回滚中…';
|
|
6312
6123
|
readonly 'merge.result.rolledBackTo': '已回滚到 {id}';
|
|
6313
6124
|
readonly 'merge.result.failed': '{n} 项失败';
|
|
6314
6125
|
readonly 'merge.result.ineffective': '{n} 项未生效';
|
|
@@ -6318,12 +6129,10 @@ declare const zh$3: {
|
|
|
6318
6129
|
readonly 'merge.toast.rollbackFailed': '回滚失败';
|
|
6319
6130
|
readonly 'merge.toast.previewFailed': '读取远程合并预览失败';
|
|
6320
6131
|
readonly 'probe.run': '测试连接';
|
|
6321
|
-
readonly 'probe.running': '正在测试连接…';
|
|
6322
6132
|
readonly 'probe.hint': '只读自检:凭据 / 端点 / 目标容器 / 目录可达。WebDAV 通道可能幂等创建上级目录(那正是它要修的故障);不会推送或改动任何快照。';
|
|
6323
6133
|
readonly 'probe.createdCollections': '已在远端自动创建目录:{list}';
|
|
6324
6134
|
readonly 'probe.snapshotCount': '远端现有快照:{count} 份';
|
|
6325
6135
|
readonly 'probe.unsupported': '该通道不提供连通性自检';
|
|
6326
|
-
readonly 'probe.unsupportedHint': '这是能力边界,不是故障:该通道的同步功能不受影响,只是没有自检这项能力。';
|
|
6327
6136
|
readonly 'syncflow.snapshotDevice': '由 {device} 推送';
|
|
6328
6137
|
};
|
|
6329
6138
|
/** 字典键联合(注册处 compile-time 校验) */
|
|
@@ -6344,9 +6153,7 @@ declare const zh$2: {
|
|
|
6344
6153
|
readonly 'section.description': '浏览并下载社区共享的配置(公开 Git 仓库;下载内容一律视为不可信,导入前必经校验与确认)';
|
|
6345
6154
|
readonly 'config.title': '市场仓库';
|
|
6346
6155
|
readonly 'config.refresh': '拉取最新';
|
|
6347
|
-
readonly 'config.refreshing': '拉取中…';
|
|
6348
6156
|
readonly 'config.refreshed': '已拉取最新市场目录';
|
|
6349
|
-
readonly 'list.empty': '内置市场尚未加载。请先「拉取最新」。';
|
|
6350
6157
|
readonly 'list.browse': '浏览';
|
|
6351
6158
|
readonly 'list.browsed': '已重新浏览市场';
|
|
6352
6159
|
readonly 'list.loading': '正在读取市场…';
|
|
@@ -6372,12 +6179,11 @@ declare const zh$2: {
|
|
|
6372
6179
|
readonly 'list.cacheNone': '未缓存';
|
|
6373
6180
|
readonly 'list.download': '查看详情';
|
|
6374
6181
|
readonly 'detail.title': '条目详情';
|
|
6375
|
-
readonly 'detail.downloadedAt': '下载时间:{time}';
|
|
6376
6182
|
readonly 'detail.version': '版本 {version}';
|
|
6377
6183
|
readonly 'detail.errors': '校验错误:';
|
|
6378
6184
|
readonly 'detail.emptySections': '该条目未包含任何可导入分区';
|
|
6379
6185
|
readonly 'detail.needReview': '需要人工确认';
|
|
6380
|
-
readonly 'detail.previewHint': '
|
|
6186
|
+
readonly 'detail.previewHint': '只读预览,尚未改动本机';
|
|
6381
6187
|
readonly 'detail.impact.willChange': '将变更 {count} 项';
|
|
6382
6188
|
readonly 'detail.impact.unchanged': '已一致 {count} 项';
|
|
6383
6189
|
readonly 'detail.impact.conflicts': '冲突 {count}';
|
|
@@ -6386,9 +6192,7 @@ declare const zh$2: {
|
|
|
6386
6192
|
readonly 'detail.impact.restart': '需重启 DSH 生效';
|
|
6387
6193
|
readonly 'detail.import': '确认导入';
|
|
6388
6194
|
readonly 'detail.back': '返回列表';
|
|
6389
|
-
readonly 'review.
|
|
6390
|
-
readonly 'review.highRiskHint': '已勾选高风险分区({sections}):该条目来自公共仓库、未经官方审核,导入会在本机安装插件 / 写入文件 / 注入全局指令。导入前会创建可回滚快照。';
|
|
6391
|
-
readonly 'review.changeTitle': '本次将改动的内容';
|
|
6195
|
+
readonly 'review.highRiskHint': '已勾选高风险分区({sections}):未经官方审核的公共仓库条目,会在本机安装插件 / 写入文件 / 注入全局指令。';
|
|
6392
6196
|
readonly 'review.changeCount': '已选 {selected}/{total} 项';
|
|
6393
6197
|
readonly 'review.changeWillChange': '将改动 {count} 项';
|
|
6394
6198
|
readonly 'review.changeUnchanged': '已一致 {count} 项';
|
|
@@ -6396,12 +6200,10 @@ declare const zh$2: {
|
|
|
6396
6200
|
readonly 'review.rowWillChange': '将改动';
|
|
6397
6201
|
readonly 'review.rowUnchanged': '已一致';
|
|
6398
6202
|
readonly 'review.rowExcluded': '不导入';
|
|
6399
|
-
readonly 'review.conflictHint': '有 {count}
|
|
6400
|
-
readonly 'review.conflictOpen': '逐项决策';
|
|
6401
|
-
readonly 'review.conflictClose': '收起决策';
|
|
6203
|
+
readonly 'review.conflictHint': '有 {count} 项冲突待决策;未决策项保留本机内容。';
|
|
6402
6204
|
readonly 'review.nothingSelected': '未勾选任何内容,无法导入';
|
|
6403
6205
|
readonly 'review.rollback': '回滚到导入前快照';
|
|
6404
|
-
readonly 'review.rollbackHint': '
|
|
6206
|
+
readonly 'review.rollbackHint': '把本机配置恢复到本次导入之前。';
|
|
6405
6207
|
readonly 'review.snapshotMissing': '本次导入没有可用快照,无法回滚。';
|
|
6406
6208
|
readonly 'review.rollbackConfirmTitle': '回滚到导入前快照?';
|
|
6407
6209
|
readonly 'review.rollbackConfirmMessage': '将把本机配置恢复为「{item}」导入前的状态(快照 {id})。本次导入写入的内容会被覆盖。';
|
|
@@ -6428,29 +6230,22 @@ declare const zh$2: {
|
|
|
6428
6230
|
readonly 'review.excludedCount': '已取消 {count} 项';
|
|
6429
6231
|
readonly 'review.next': '下一步';
|
|
6430
6232
|
readonly 'review.back': '上一步';
|
|
6431
|
-
readonly 'review.
|
|
6432
|
-
readonly 'review.confirmTitle': '确认将导入的内容';
|
|
6433
|
-
readonly 'review.confirmHint': '点「确认导入」后引擎先创建可回滚快照,再按上面的勾选执行;未勾选的项不会写入。';
|
|
6434
|
-
readonly 'review.resultTitle': '导入结果';
|
|
6233
|
+
readonly 'review.confirmHint': '导入前自动创建可回滚快照';
|
|
6435
6234
|
readonly 'review.resultOk': '成功写入 {count} 项';
|
|
6436
6235
|
readonly 'review.resultFailed': '失败 {count} 项';
|
|
6437
6236
|
readonly 'review.reviewAgain': '返回重新选择';
|
|
6438
6237
|
readonly 'import.done': '导入完成:{count} 项写入';
|
|
6439
6238
|
readonly 'import.failed': '导入失败({count} 项失败)';
|
|
6440
6239
|
readonly 'import.needsRestart': '部分改动需重启 DSH 后生效';
|
|
6441
|
-
readonly 'detail.failed': '
|
|
6240
|
+
readonly 'detail.failed': '下载失败,详情见右下角提示';
|
|
6442
6241
|
readonly 'myconfigs.tab.browse': '浏览市场';
|
|
6443
6242
|
readonly 'myconfigs.tab.myconfigs': '我的配置';
|
|
6444
|
-
readonly 'myconfigs.back': '返回市场';
|
|
6445
|
-
readonly 'myconfigs.login.title': 'GitHub 登录';
|
|
6446
6243
|
readonly 'myconfigs.login.hint': '登录后即可一键上传配置到你的公开仓库(自动创建 <login>/dsh-configs)并提交官方市场收录(目标仓库固定,不可修改)。';
|
|
6447
6244
|
readonly 'myconfigs.login.checking': '正在检查登录状态…';
|
|
6448
6245
|
readonly 'myconfigs.login.loggedInAs': '已登录:{login}';
|
|
6449
6246
|
readonly 'myconfigs.login.targetRepo': '收录目标(固定):{repo}';
|
|
6450
6247
|
readonly 'myconfigs.login.repoMissing': '配置仓库尚未创建,首次上传将自动创建(公开)';
|
|
6451
6248
|
readonly 'myconfigs.login.repoReady': '配置仓库:{repo}';
|
|
6452
|
-
readonly 'myconfigs.login.start': '使用 GitHub 登录';
|
|
6453
|
-
readonly 'myconfigs.login.relogin': '重新登录';
|
|
6454
6249
|
readonly 'myconfigs.login.cancel': '取消登录';
|
|
6455
6250
|
readonly 'myconfigs.login.userCode': '一次性代码:{code}';
|
|
6456
6251
|
readonly 'myconfigs.login.openAuth': '打开授权页';
|
|
@@ -6458,28 +6253,23 @@ declare const zh$2: {
|
|
|
6458
6253
|
readonly 'myconfigs.upload.selectHint': '选择导出的配置 zip(先在「导出」tab 生成备份文件,再回到这里选择)。市场通道永不携带秘密——包含密钥的备份将被拒绝。';
|
|
6459
6254
|
readonly 'myconfigs.upload.select': '选择 ZIP…';
|
|
6460
6255
|
readonly 'myconfigs.upload.reselect': '重新选择';
|
|
6461
|
-
readonly 'myconfigs.upload.selected': '
|
|
6462
|
-
readonly 'myconfigs.upload.validate': '开始校验';
|
|
6463
|
-
readonly 'myconfigs.upload.validating': '校验中…';
|
|
6256
|
+
readonly 'myconfigs.upload.selected': '{name}';
|
|
6464
6257
|
readonly 'myconfigs.upload.validateOk': '校验通过:内容合法、不含密钥';
|
|
6465
6258
|
readonly 'myconfigs.upload.validateSecrets': '包含密钥:市场通道永不携带秘密,拒绝上传';
|
|
6466
6259
|
readonly 'myconfigs.upload.validateInvalid': '内容校验未通过,无法上传';
|
|
6467
|
-
readonly 'myconfigs.upload.form.title': '条目信息';
|
|
6468
6260
|
readonly 'myconfigs.upload.form.name': '名称';
|
|
6469
6261
|
readonly 'myconfigs.upload.form.nameHint': '预填 zip 文件名,可修改';
|
|
6470
6262
|
readonly 'myconfigs.upload.form.description': '描述(可选)';
|
|
6471
6263
|
readonly 'myconfigs.upload.form.categories': '类别(可选,逗号分隔)';
|
|
6472
|
-
readonly 'myconfigs.upload.form.
|
|
6264
|
+
readonly 'myconfigs.upload.form.autoTitle': '自动生成';
|
|
6473
6265
|
readonly 'myconfigs.upload.mode.title': '发布模式';
|
|
6474
6266
|
readonly 'myconfigs.upload.mode.migrate': '迁移(保留全部内容)';
|
|
6475
6267
|
readonly 'myconfigs.upload.mode.share': '分享(自动排除敏感内容)';
|
|
6476
6268
|
readonly 'myconfigs.upload.mode.shareHint': '分享模式将自动排除设备/平台相关分区(凭据状态 / 会话 / MCP / 工作区等),并对隐私内容强制拦截——发现任何敏感痕迹将拒绝发布,而不是仅警告。';
|
|
6477
6269
|
readonly 'myconfigs.upload.run': '一键上传';
|
|
6478
|
-
readonly 'myconfigs.upload.running': '上传中…';
|
|
6479
6270
|
readonly 'myconfigs.update.title': '更新配置';
|
|
6480
|
-
readonly 'myconfigs.update.hint': '
|
|
6271
|
+
readonly 'myconfigs.update.hint': '版本自动 +1';
|
|
6481
6272
|
readonly 'myconfigs.update.run': '一键更新';
|
|
6482
|
-
readonly 'myconfigs.update.running': '更新中…';
|
|
6483
6273
|
readonly 'myconfigs.update.zipHint': '更新需要新的配置包:选择新 zip 后自动校验,通过后即可一键更新。';
|
|
6484
6274
|
readonly 'myconfigs.update.selectZip': '选择新 ZIP…';
|
|
6485
6275
|
readonly 'myconfigs.result.title': '上传/更新完成';
|
|
@@ -6502,7 +6292,7 @@ declare const zh$2: {
|
|
|
6502
6292
|
readonly 'myconfigs.item.update': '更新';
|
|
6503
6293
|
readonly 'myconfigs.item.install': '装回本地';
|
|
6504
6294
|
readonly 'myconfigs.item.openPr': '查看收录 PR';
|
|
6505
|
-
readonly 'myconfigs.install.failed': '
|
|
6295
|
+
readonly 'myconfigs.install.failed': '下载失败,详情见右下角提示';
|
|
6506
6296
|
readonly 'myconfigs.delete.run': '删除';
|
|
6507
6297
|
readonly 'myconfigs.delete.confirm': '确认删除';
|
|
6508
6298
|
readonly 'myconfigs.delete.confirmTitle': '删除条目';
|
|
@@ -6516,7 +6306,6 @@ declare const zh$2: {
|
|
|
6516
6306
|
readonly 'disclaimer.confirm': '我已了解,继续';
|
|
6517
6307
|
readonly 'disclaimer.dontAsk': '不再提示(该操作以后不再显示免责声明)';
|
|
6518
6308
|
readonly 'myconfigs.error.loadStatus': '登录状态读取失败';
|
|
6519
|
-
readonly 'myconfigs.error.loadItems': '已上传列表读取失败';
|
|
6520
6309
|
readonly 'common.cancel': '取消';
|
|
6521
6310
|
readonly 'common.labelSeparator': ':';
|
|
6522
6311
|
readonly 'common.close': '关闭';
|
|
@@ -6546,17 +6335,14 @@ declare const zh$1: {
|
|
|
6546
6335
|
readonly 'view.recovery': '恢复';
|
|
6547
6336
|
readonly 'recovery.banner': '配置修改已被保护:存在未完成的恢复事项。请先处理后继续。';
|
|
6548
6337
|
readonly 'recovery.bannerAction': '去处理';
|
|
6549
|
-
readonly 'recovery.
|
|
6550
|
-
readonly 'recovery.requiredHint': '存在需要处理的恢复事项(残留锁、未完成的操作或中断的复制)。处理完这些事项即恢复正常。';
|
|
6338
|
+
readonly 'recovery.requiredHint': '有需要处理的恢复事项';
|
|
6551
6339
|
readonly 'recovery.rollbackRecommended': '建议回滚';
|
|
6552
6340
|
readonly 'recovery.rollbackContinue': '续跑回滚';
|
|
6553
|
-
readonly 'recovery.inProgress': '恢复进行中';
|
|
6554
6341
|
readonly 'recovery.verified': '已验证';
|
|
6555
6342
|
readonly 'recovery.partialMatch': '部分匹配';
|
|
6556
6343
|
readonly 'recovery.mismatch': '不匹配';
|
|
6557
6344
|
readonly 'recovery.verificationError': '验证错误';
|
|
6558
6345
|
readonly 'recovery.needsAttention': '需要人工处理';
|
|
6559
|
-
readonly 'recovery.manualActionRequired': '需要人工处理';
|
|
6560
6346
|
readonly 'recovery.incident.title': '发生了什么';
|
|
6561
6347
|
readonly 'recovery.incident.operationId': '操作 ID';
|
|
6562
6348
|
readonly 'recovery.incident.operationType': '操作类型';
|
|
@@ -6572,20 +6358,16 @@ declare const zh$1: {
|
|
|
6572
6358
|
readonly 'recovery.incident.state.unknown': '未知';
|
|
6573
6359
|
readonly 'recovery.decision.unknown': '未知';
|
|
6574
6360
|
readonly 'recovery.verify.verdict.unknown': '未知';
|
|
6575
|
-
readonly 'recovery.currentState.title': '当前状态';
|
|
6576
6361
|
readonly 'recovery.currentState.safeMode': '已进入安全模式(会修改配置的操作已暂停)';
|
|
6577
6362
|
readonly 'recovery.currentState.itemsOnly': '存在需要处理的恢复事项(写操作未被暂停)';
|
|
6578
6363
|
readonly 'recovery.live.title': '正在执行的操作';
|
|
6579
|
-
readonly 'recovery.live.hint': '这些操作正在正常执行中,不是未完成的恢复事项;结束后会自动消失。';
|
|
6580
6364
|
readonly 'recovery.incident.liveBlocked': '该操作仍在进行中,现在不能恢复也不能放弃,请等它结束。';
|
|
6581
6365
|
readonly 'recovery.incident.blockReason.noSnapshot': '本次操作没有绑定可信恢复快照,因此无法执行恢复。';
|
|
6582
6366
|
readonly 'recovery.incident.blockReason.needsAttention': '该事项被判定为需要人工处理,无法自动恢复。';
|
|
6583
6367
|
readonly 'recovery.currentState.hasSnapshot': '存在可信恢复快照';
|
|
6584
6368
|
readonly 'recovery.currentState.noSnapshot': '无可信恢复快照';
|
|
6585
6369
|
readonly 'recovery.snapshot.title': '恢复快照';
|
|
6586
|
-
readonly 'recovery.snapshot.id': '快照 ID';
|
|
6587
6370
|
readonly 'recovery.snapshot.createdAt': '快照时间';
|
|
6588
|
-
readonly 'recovery.snapshot.operationType': '快照操作';
|
|
6589
6371
|
readonly 'recovery.snapshot.verdict': '快照校验';
|
|
6590
6372
|
readonly 'recovery.snapshot.verdict.trusted': '可信(与本次操作绑定)';
|
|
6591
6373
|
readonly 'recovery.snapshot.verdict.manual': '手动/本地快照(本次操作外)';
|
|
@@ -6601,10 +6383,6 @@ declare const zh$1: {
|
|
|
6601
6383
|
readonly 'recovery.preview.title': '恢复预览';
|
|
6602
6384
|
readonly 'recovery.preview.hint': '以下为只读预览(零写入)。确认后才会执行恢复。';
|
|
6603
6385
|
readonly 'recovery.preview.loading': '正在生成预览…';
|
|
6604
|
-
readonly 'recovery.preview.empty': '该操作无可用恢复动作(或全部跳过)。';
|
|
6605
|
-
readonly 'recovery.preview.action': '动作';
|
|
6606
|
-
readonly 'recovery.preview.detail': '说明';
|
|
6607
|
-
readonly 'recovery.preview.summary': '将执行 {count} 个动作';
|
|
6608
6386
|
readonly 'recovery.confirm.title': '确认恢复';
|
|
6609
6387
|
readonly 'recovery.confirm.message': '恢复/回滚是危险操作。确认执行?系统会先把当前文件备份到一个安全位置。';
|
|
6610
6388
|
readonly 'recovery.confirm.rollbackContinue': '继续完成刚才中断的撤销(已完成的部分会自动跳过,不重复执行)。';
|
|
@@ -6614,35 +6392,18 @@ declare const zh$1: {
|
|
|
6614
6392
|
readonly 'recovery.execute': '执行恢复';
|
|
6615
6393
|
readonly 'recovery.executing': '恢复执行中…';
|
|
6616
6394
|
readonly 'recovery.retry': '重试';
|
|
6617
|
-
readonly 'recovery.retrying': '重试中…';
|
|
6618
|
-
readonly 'recovery.verify': '验证';
|
|
6619
|
-
readonly 'recovery.verifying': '验证中…';
|
|
6620
6395
|
readonly 'recovery.dismiss': '放弃恢复';
|
|
6621
|
-
readonly 'recovery.dismissing': '放弃中…';
|
|
6622
|
-
readonly 'recovery.continue': '续跑';
|
|
6623
6396
|
readonly 'recovery.verify.title': '验证结果';
|
|
6624
|
-
readonly 'recovery.verify.details': '检查明细';
|
|
6625
6397
|
readonly 'recovery.verify.manualHints': '需人工处理';
|
|
6626
|
-
readonly 'recovery.verify.verdict.match': '验证通过:目标状态与可信快照匹配';
|
|
6627
|
-
readonly 'recovery.verify.verdict.partial': '验证通过(部分匹配):核心状态匹配,但存在无法自动验证的项';
|
|
6628
|
-
readonly 'recovery.verify.verdict.mismatch': '验证失败:目标状态与可信快照不匹配,恢复未完成';
|
|
6629
|
-
readonly 'recovery.verify.verdict.error': '验证错误:无法可靠完成验证,恢复未完成';
|
|
6630
6398
|
readonly 'recovery.verify.terminal.rolledBack': '已回滚';
|
|
6631
6399
|
readonly 'recovery.verify.terminal.recovered': '已恢复';
|
|
6632
6400
|
readonly 'recovery.verify.terminal.needsAttention': '需要人工处理';
|
|
6633
6401
|
readonly 'recovery.completed': '恢复完成';
|
|
6634
|
-
readonly 'recovery.completed.rolledBack': '已回滚并验证通过';
|
|
6635
|
-
readonly 'recovery.completed.recovered': '已恢复并验证通过';
|
|
6636
|
-
readonly 'recovery.needsAttention.title': '需要人工处理';
|
|
6637
|
-
readonly 'recovery.needsAttention.hint': '恢复未能完成或验证失败。请查看原因,可重试或放弃。';
|
|
6638
6402
|
readonly 'recovery.empty': '暂无需要处理的恢复事项。';
|
|
6639
6403
|
readonly 'recovery.loading': '正在检查恢复状态…';
|
|
6640
|
-
readonly 'recovery.error': '恢复状态加载失败';
|
|
6641
|
-
readonly 'recovery.actionError': '操作失败';
|
|
6642
|
-
readonly 'recovery.running': '恢复任务进行中';
|
|
6643
6404
|
readonly 'recovery.runningHint': '恢复/回滚正在执行,请勿关闭页面。';
|
|
6644
6405
|
readonly 'recovery.lock.title': '残留配置锁';
|
|
6645
|
-
readonly 'recovery.lock.detailStale': '
|
|
6406
|
+
readonly 'recovery.lock.detailStale': '上次异常退出留下的配置锁(持有进程已不存在)。重启 DSH 不会自动清除,必须在此回收;回收后写操作立即恢复。';
|
|
6646
6407
|
readonly 'recovery.lock.detailUnknown': '配置锁状态无法可靠判定(可能是崩溃残留)。回收前会再次确认其持有进程确已不存在;无法确认时不会删除任何内容。';
|
|
6647
6408
|
readonly 'recovery.lock.action': '回收残留锁';
|
|
6648
6409
|
readonly 'recovery.lock.busy': '正在回收…';
|
|
@@ -6652,23 +6413,22 @@ declare const zh$1: {
|
|
|
6652
6413
|
readonly 'recovery.lock.confirmMessage': '将再次确认该锁的持有进程确已不存在,然后原子移除这把锁。若无法确认(例如锁仍被活跃进程持有),操作会被拒绝且不做任何改动。';
|
|
6653
6414
|
readonly 'recovery.crash.title': '上次启动未正常完成';
|
|
6654
6415
|
readonly 'recovery.crash.lastGood': '最后正常状态:{time}';
|
|
6655
|
-
readonly 'recovery.crash.guidance': '处置建议:进入救援模式让 DSH 先起来,随后到「备份文件」用最近一次备份恢复。';
|
|
6656
6416
|
readonly 'recovery.crash.reason.session-corrupt': '会话文件损坏';
|
|
6657
6417
|
readonly 'recovery.crash.reason.bundle-check': '插件 bundle 无法解析';
|
|
6658
6418
|
readonly 'recovery.crash.reason.patch-tree': '插件加载失败(挂载树冲突)';
|
|
6659
6419
|
readonly 'recovery.crash.reason.unknown': '原因未知';
|
|
6660
6420
|
readonly 'recovery.crash.advice.none': '本模块没有额外建议动作。';
|
|
6661
|
-
readonly 'recovery.crash.advice.restore-last-good': '
|
|
6662
|
-
readonly 'recovery.crash.advice.repair-session': '
|
|
6663
|
-
readonly 'recovery.crash.advice.check-bundles': '
|
|
6664
|
-
readonly 'recovery.crash.advice.check-patch-tree': '
|
|
6421
|
+
readonly 'recovery.crash.advice.restore-last-good': '用最近一次备份恢复到该状态';
|
|
6422
|
+
readonly 'recovery.crash.advice.repair-session': '先修复损坏的会话文件(下方「需要处理的会话」)';
|
|
6423
|
+
readonly 'recovery.crash.advice.check-bundles': '进入救援模式,或检查 package.json 的 dsh.profile.bundles';
|
|
6424
|
+
readonly 'recovery.crash.advice.check-patch-tree': '进入救援模式后逐个禁用插件排查';
|
|
6665
6425
|
readonly 'recovery.rescue.title': '救援模式';
|
|
6666
6426
|
readonly 'recovery.rescue.desc': 'DSH 因插件起不来时,把插件挂载收窄到「DSH 核心 + 本插件」:改写两层 cordis.patch.yml,并把 dsh.profile.bundles 里的其它用户插件临时移出。不卸载任何包,退出时从备份完整还原。';
|
|
6667
6427
|
readonly 'recovery.rescue.inactive': '救援模式未开启';
|
|
6668
6428
|
readonly 'recovery.rescue.activeBadge': '已开启';
|
|
6669
6429
|
readonly 'recovery.rescue.active': '救援模式已开启({time})—— 请重启 DSH 使其生效。';
|
|
6670
6430
|
readonly 'recovery.rescue.applied': '救援模式已开启({time})—— 本次启动只挂载了 DSH 核心与本插件。';
|
|
6671
|
-
readonly 'recovery.rescue.appliedHint': '
|
|
6431
|
+
readonly 'recovery.rescue.appliedHint': '其它插件本次未加载;退出后同样需重启 DSH。';
|
|
6672
6432
|
readonly 'recovery.rescue.restartHint': '操作后需要重启 DSH 才能生效。';
|
|
6673
6433
|
readonly 'recovery.rescue.enter': '进入救援模式';
|
|
6674
6434
|
readonly 'recovery.rescue.exit': '退出救援模式';
|
|
@@ -6696,12 +6456,12 @@ declare const zh$1: {
|
|
|
6696
6456
|
readonly 'sessions.section.attention': '需要处理的会话';
|
|
6697
6457
|
readonly 'sessions.section.attentionNone': '列表里没有需要处理的会话。';
|
|
6698
6458
|
readonly 'sessions.issues.more': '还有 {count} 条';
|
|
6699
|
-
readonly 'sessions.hidden.healthyShort': '
|
|
6459
|
+
readonly 'sessions.hidden.healthyShort': '正常已隐藏 {count}';
|
|
6700
6460
|
readonly 'sessions.repair.availableShort': '可应用内修复 {count} 条';
|
|
6701
6461
|
readonly 'sessions.repair.noneShort': '本次没有可应用内修复的会话。';
|
|
6702
|
-
readonly 'sessions.unverified': '
|
|
6703
|
-
readonly 'sessions.untested': '
|
|
6704
|
-
readonly 'sessions.unreadableEntries': '
|
|
6462
|
+
readonly 'sessions.unverified': '未深校验 {count} · 已深校验 {verified}';
|
|
6463
|
+
readonly 'sessions.untested': '超上限未体检 {count}';
|
|
6464
|
+
readonly 'sessions.unreadableEntries': '读不出 {count}';
|
|
6705
6465
|
readonly 'sessions.issue.duplicateId': '同一会话 id 出现在多个工作区';
|
|
6706
6466
|
readonly 'sessions.issue.locationMismatch': '日志位置与所属工作区不一致';
|
|
6707
6467
|
readonly 'sessions.issue.headerUnreadable': '会话头读不出来';
|
|
@@ -6729,7 +6489,7 @@ declare const zh$1: {
|
|
|
6729
6489
|
readonly 'sessions.severity.unloadable': '会话不可加载';
|
|
6730
6490
|
readonly 'sessions.subagent': '子代理';
|
|
6731
6491
|
readonly 'sessions.blank': '新会话';
|
|
6732
|
-
readonly 'sessions.truncated': '
|
|
6492
|
+
readonly 'sessions.truncated': '还有 {count} 条未显示';
|
|
6733
6493
|
readonly 'sessions.repair.title': '怎么修';
|
|
6734
6494
|
readonly 'sessions.repair.desc': '容器非法 / header 不可读 / 格式超前这类应用内不动的问题,先在终端预览再落盘;需要写入时建议先关闭 DSH。';
|
|
6735
6495
|
readonly 'sessions.repair.copy': '复制命令';
|
|
@@ -6744,7 +6504,9 @@ declare const zh$1: {
|
|
|
6744
6504
|
readonly 'sessions.repair.none': '本次没有可应用内修复的会话。应用内可修:重放重复行 / 可证明的合成收尾块(零损失)、seq 空洞与不可解析行(截断,有损,需确认);其余问题见下方离线命令。';
|
|
6745
6505
|
readonly 'common.close': '关闭';
|
|
6746
6506
|
readonly 'sessions.dialog.open': '打开会话体检';
|
|
6747
|
-
readonly 'sessions.dialog.lastScan': '
|
|
6507
|
+
readonly 'sessions.dialog.lastScan.total': '共 {count} 条';
|
|
6508
|
+
readonly 'sessions.dialog.lastScan.issues': '需处理 {count} 条';
|
|
6509
|
+
readonly 'sessions.dialog.lastScan.repairs': '修复记录 {count} 条';
|
|
6748
6510
|
readonly 'sessions.repair.action': '修复';
|
|
6749
6511
|
readonly 'sessions.repair.available': '有 {count} 条会话可应用内修复;点行内「修复」先看计划,或用右上角「一键修复全部」按顺序处理。';
|
|
6750
6512
|
readonly 'sessions.repair.repairAll': '一键修复全部({count})';
|
|
@@ -6753,14 +6515,13 @@ declare const zh$1: {
|
|
|
6753
6515
|
readonly 'sessions.repair.batch.failed': '未修复';
|
|
6754
6516
|
readonly 'sessions.repair.batch.dropped': '丢弃 {rows} 行';
|
|
6755
6517
|
readonly 'sessions.repair.batch.transportError': '请求失败:{message}';
|
|
6756
|
-
readonly 'sessions.hidden.healthy': '另有 {count} 条会话正常,已按「只显示有问题的对话」隐藏。';
|
|
6757
6518
|
readonly 'sessions.repair.actionLossless': '零损失';
|
|
6758
6519
|
readonly 'sessions.repair.actionLossy': '有损';
|
|
6759
6520
|
readonly 'sessions.repair.applyLossy': '截断并修复';
|
|
6760
6521
|
readonly 'sessions.repair.plan.lossy': '这个计划含有损动作:截断点之后的事件会被丢弃(无法从日志里恢复,但备份可以一键回滚)。确认后再点「截断并修复」。';
|
|
6761
6522
|
readonly 'sessions.repair.plan.title': '修复计划:{session}';
|
|
6762
|
-
readonly 'sessions.repair.plan.summary': '
|
|
6763
|
-
readonly 'sessions.repair.plan.backup': '
|
|
6523
|
+
readonly 'sessions.repair.plan.summary': '丢弃 {rows} 行重复事件 · {before} → {after}';
|
|
6524
|
+
readonly 'sessions.repair.plan.backup': '写入前自动备份,可在「修复记录」里回滚';
|
|
6764
6525
|
readonly 'sessions.repair.apply': '确认修复';
|
|
6765
6526
|
readonly 'sessions.repair.applied': '已修复:丢弃 {rows} 行重复事件';
|
|
6766
6527
|
readonly 'sessions.repair.rolledBack': '已回滚到修复前的内容';
|
|
@@ -6827,10 +6588,11 @@ declare const zh$1: {
|
|
|
6827
6588
|
readonly 'rollback.apiMissing': '当前宿主没有回滚点能力(插件版本过旧):界面不假装可用';
|
|
6828
6589
|
readonly 'rollback.switch.label': '启用回合自动留点';
|
|
6829
6590
|
readonly 'rollback.switch.hint': '关闭后不再订阅会话事件、不再写台账,聊天里的「↺ 回退」入口一并收起;已有回滚点仍可查看、回退与清理。';
|
|
6830
|
-
readonly 'rollback.switch.
|
|
6831
|
-
readonly 'rollback.switch.diverged': '
|
|
6591
|
+
readonly 'rollback.switch.reading': '读取中…';
|
|
6592
|
+
readonly 'rollback.switch.diverged': '磁盘已开启,本进程未生效';
|
|
6593
|
+
readonly 'rollback.switch.apply': '立即生效';
|
|
6832
6594
|
readonly 'rollback.ledger.summary': '台账 {records} 个点 · {size}';
|
|
6833
|
-
readonly 'rollback.ledger.budget': '
|
|
6595
|
+
readonly 'rollback.ledger.budget': '已按字节预算({budget})淘汰 {evicted} 个自动点';
|
|
6834
6596
|
readonly 'rollback.ledger.overBudget': '台账已到 {size},超过 {budget} 的字节预算,但已经没有可自动淘汰的点了(通常是单个回滚点本身大于预算)—— 再增长请手动清理。';
|
|
6835
6597
|
readonly 'rollback.cleanup': '清理台账';
|
|
6836
6598
|
readonly 'rollback.cleanup.confirmTitle': '清理回滚点台账';
|
|
@@ -6838,7 +6600,6 @@ declare const zh$1: {
|
|
|
6838
6600
|
readonly 'rollback.cleanup.includeGuards': '同时删除救援点(回退前的自动救援点,删了不可撤销)';
|
|
6839
6601
|
readonly 'rollback.cleanup.done': '已删除 {records} 个回滚点,释放 {size}';
|
|
6840
6602
|
readonly 'rollback.cleanup.none': '没有可删除的回滚点(自动点为空)';
|
|
6841
|
-
readonly 'rollback.switch.saveFailed': '开关保存失败,仍按原状态运行:';
|
|
6842
6603
|
readonly 'rollback.retention.hint': '自动点:每会话最多 {perSession} 个、全局最多 {total} 个,超出只淘汰最旧的自动点。回退前的救援点不占这两个额度、也不被它们淘汰,但用户删不掉,所以另有自己的两道上限:每会话最多 {guardsPerSession} 个、全局最多 {guards} 个(无论按哪道算,超出都淘汰最旧的救援点)。';
|
|
6843
6604
|
readonly 'rollback.autopoint.hint': '回滚点由每个回合结束时自动留:工作区快照 + 会话游标(没有「手动拍点」入口)。';
|
|
6844
6605
|
readonly 'rollback.state.workspace': '工作区';
|
|
@@ -6922,7 +6683,6 @@ declare const zh$1: {
|
|
|
6922
6683
|
readonly 'rollback.preview.different': '其中 {n} 项内容不同';
|
|
6923
6684
|
readonly 'rollback.preview.missing': '{n} 项当前已不存在(会被重新创建)';
|
|
6924
6685
|
readonly 'rollback.preview.createdAfter': '{n} 项在留点时并不存在(留点之后新建;回退只会删除其中通过安全判据的)';
|
|
6925
|
-
readonly 'rollback.preview.removalsTitle': '回退会删除的文件';
|
|
6926
6686
|
readonly 'rollback.preview.notice.skipped': '{n} 项在留点时被跳过(未记录;已计入证明名单 ⇒ 不参与删除判据)';
|
|
6927
6687
|
readonly 'rollback.preview.notice.truncated': '该点捕获被上限截断(超单文件上限 / 字节预算 / 文件数预算);删除判据另看证明名单(路径索引)是否完整';
|
|
6928
6688
|
readonly 'rollback.preview.files.title': '将被回退的文件:';
|
|
@@ -6945,27 +6705,26 @@ declare const zh$1: {
|
|
|
6945
6705
|
/** 整文件删除(用户 2026-10-12 第 6 条):写「删除」而不是 `+0 −N` —— 那是两件事。 */
|
|
6946
6706
|
readonly 'rollback.preview.file.deleted': '删除';
|
|
6947
6707
|
readonly 'rollback.preview.file.skipped': '不会改动(与其它对话的改动冲突,或无法安全合并)';
|
|
6948
|
-
readonly 'rollback.diff.merged': '
|
|
6949
|
-
readonly 'rollback.diff.skipped': '
|
|
6708
|
+
readonly 'rollback.diff.merged': '合并结果:撤销本对话的改动,保留其它对话的改动';
|
|
6709
|
+
readonly 'rollback.diff.skipped': '回退不改动:与其它对话的改动冲突或无法安全合并';
|
|
6950
6710
|
readonly 'rollback.preview.file.unknown': '行数未统计';
|
|
6951
6711
|
readonly 'rollback.preview.file.unknownHint': '这些文件的行数没有统计出来(文件过大、不是文本或内容副本读不出来)—— 回退仍会照常覆盖它们。';
|
|
6952
6712
|
readonly 'rollback.diff.viewHint': '查看差异:{path}';
|
|
6953
6713
|
readonly 'rollback.diff.loading': '正在读取差异…';
|
|
6954
6714
|
readonly 'rollback.diff.before': '当前';
|
|
6955
6715
|
readonly 'rollback.diff.after': '回退后';
|
|
6956
|
-
readonly 'rollback.diff.identical': '
|
|
6957
|
-
readonly 'rollback.diff.degraded': '
|
|
6716
|
+
readonly 'rollback.diff.identical': '与回退点一致,回退不改动它';
|
|
6717
|
+
readonly 'rollback.diff.degraded': '差异较大:按整块替换展示(结果完整,但不是最小编辑)';
|
|
6958
6718
|
readonly 'rollback.diff.reason.missingBlob': '这份内容副本读不出来,无法逐行对照(回退仍会尝试写回它)';
|
|
6959
6719
|
readonly 'rollback.diff.reason.binary': '不是文本文件,没有逐行差异可看';
|
|
6960
6720
|
readonly 'rollback.diff.reason.tooLarge': '文件超过展示上限,没有逐行差异可看(回退仍会照常覆盖它)';
|
|
6961
6721
|
readonly 'rollback.diff.reason.unreadable': '当前文件读不出来(权限不足,或它不是普通文件),无法逐行对照';
|
|
6962
|
-
readonly 'rollback.diff.reason.unknown': '
|
|
6722
|
+
readonly 'rollback.diff.reason.unknown': '无法逐行对照:宿主未给出原因';
|
|
6963
6723
|
readonly 'rollback.diff.failed': '差异读取失败';
|
|
6964
6724
|
readonly 'rollback.preview.result.noop': '工作区与该回退点一致,无需恢复';
|
|
6965
6725
|
readonly 'rollback.preview.result.noRecord': '该回退点没有可用的记录(原因:{reason}),无需恢复';
|
|
6966
6726
|
readonly 'rollback.preview.result.noFiles': '该回退点没有记录任何文件,无需恢复';
|
|
6967
6727
|
readonly 'rollback.preview.result.code': 'code:{code}';
|
|
6968
|
-
readonly 'rollback.preview.warningsTitle': '该点的告警';
|
|
6969
6728
|
readonly 'rollback.preview.cursorBytes': '会话日志 {now} → {target} 字节';
|
|
6970
6729
|
readonly 'rollback.group.label': '会话:{session}';
|
|
6971
6730
|
readonly 'rollback.group.count': '{n} 个回滚点';
|
|
@@ -6989,8 +6748,7 @@ declare const zh$1: {
|
|
|
6989
6748
|
readonly 'rollback.guard.warn': '回退前留救援点(留不下记告警后继续)';
|
|
6990
6749
|
readonly 'rollback.guard.off': '跳过回退前救援点';
|
|
6991
6750
|
readonly 'rollback.guard.unknown': '未知的救援点策略';
|
|
6992
|
-
readonly 'rollback.rewind.result.
|
|
6993
|
-
readonly 'rollback.rewind.result.counts': '恢复 {restored} 项 / 删除 {removed} 项 / 失败 {failed} 项 / 留点时并不存在(之后新建)的共 {leftovers} 项';
|
|
6751
|
+
readonly 'rollback.rewind.result.counts': '恢复 {restored} 项 · 删除 {removed} 项 · 失败 {failed} 项 · 留点之后新建 {leftovers} 项';
|
|
6994
6752
|
readonly 'rollback.rewind.result.child': '已回到该消息之前(当前对话:{id})';
|
|
6995
6753
|
readonly 'rollback.rewind.archive.done': '原会话已收进「已归档」(需要时可在那儿恢复)';
|
|
6996
6754
|
readonly 'rollback.rewind.freshSession': '这是这条对话的第一条消息之前:已为你新建一条空会话(这条消息的文字可从上面那条气泡复制)';
|
|
@@ -7022,31 +6780,31 @@ declare const zh$1: {
|
|
|
7022
6780
|
readonly 'recovery.incomplete.dir': '目录:{dir}';
|
|
7023
6781
|
readonly 'recovery.incomplete.delete': '删除残留';
|
|
7024
6782
|
readonly 'recovery.incomplete.deleteConfirm': '我确认:物理删除该残留目录(不可恢复)';
|
|
7025
|
-
readonly 'recovery.incomplete.locked': '
|
|
6783
|
+
readonly 'recovery.incomplete.locked': '安全模式阻断写操作,未执行删除:{reason}';
|
|
7026
6784
|
readonly 'recovery.incomplete.unlock': '解除安全模式';
|
|
7027
6785
|
readonly 'recovery.incomplete.unreadable.title': '未能读取残留列表';
|
|
7028
6786
|
readonly 'recovery.incomplete.unreadable.hint': '本次枚举残留目录失败 —— 这不等于「没有残留」。请确认档案目录可读后重试。';
|
|
7029
6787
|
readonly 'sessions.layout.title': '会话布局归位(写动作)';
|
|
7030
6788
|
readonly 'sessions.layout.desc': '修复「会让 DSH 起不来」的两类问题:会话目录与首帧 cwd 不一致时把会话搬回正确位置(只搬目录,不改写首帧),以及同一会话 id 出现在多个目录时只保留你选定的那一份、其余移入隔离目录(可人工找回)。';
|
|
7031
|
-
readonly 'sessions.layout.runtimeNote': '
|
|
7032
|
-
readonly 'sessions.layout.quarantineNote': '
|
|
6789
|
+
readonly 'sessions.layout.runtimeNote': '在 DSH 运行时直接改盘(离线 CLI 要求先停 DSH);索引刷新不可用时一条也不执行。';
|
|
6790
|
+
readonly 'sessions.layout.quarantineNote': '其余副本移入隔离目录(.cm-repair-quarantine-*,可人工找回);本入口不删除任何会话。';
|
|
7033
6791
|
readonly 'sessions.layout.preview': '预览计划';
|
|
7034
6792
|
readonly 'sessions.layout.previewing': '预览中…';
|
|
7035
6793
|
readonly 'sessions.layout.planEmpty': '计划里没有需要执行的动作。';
|
|
7036
6794
|
readonly 'sessions.layout.apiMissing': '当前接口不支持布局归位(缺少 layoutRepairSessions);请更新插件后重试 —— 本机未做任何改动。';
|
|
7037
6795
|
readonly 'sessions.layout.planTitle': '布局归位计划(只读,尚未改动任何文件)';
|
|
7038
6796
|
readonly 'sessions.layout.planReadOnly': '计划只读:确认前零写入。';
|
|
7039
|
-
readonly 'sessions.layout.noCandidates': '
|
|
7040
|
-
readonly 'sessions.layout.summary': '
|
|
7041
|
-
readonly 'sessions.layout.planSkipped': '
|
|
7042
|
-
readonly 'sessions.layout.onlyReported': '
|
|
6797
|
+
readonly 'sessions.layout.noCandidates': '本机没有需要归位或隔离的会话。';
|
|
6798
|
+
readonly 'sessions.layout.summary': '归位 {move} · 隔离 {quarantine}';
|
|
6799
|
+
readonly 'sessions.layout.planSkipped': '只报告 {count} 条';
|
|
6800
|
+
readonly 'sessions.layout.onlyReported': '只报告';
|
|
7043
6801
|
readonly 'sessions.layout.keepTitle': '重复 id:请选定保留哪一份';
|
|
7044
6802
|
readonly 'sessions.layout.keepHint': '选中的那一份本轮不动;其余副本移入隔离目录。未选定之前不能执行。';
|
|
7045
|
-
readonly 'sessions.layout.keepMissing': '还有 {count}
|
|
6803
|
+
readonly 'sessions.layout.keepMissing': '还有 {count} 个未选定';
|
|
7046
6804
|
readonly 'sessions.layout.apply': '执行布局归位';
|
|
7047
6805
|
readonly 'sessions.layout.applying': '执行中…';
|
|
7048
6806
|
readonly 'sessions.layout.resultTitle': '布局归位结果';
|
|
7049
|
-
readonly 'sessions.layout.done': '归位 {moved}
|
|
6807
|
+
readonly 'sessions.layout.done': '归位 {moved} · 隔离 {quarantined} · 失败 {failed} · 只报告 {skipped}';
|
|
7050
6808
|
readonly 'sessions.layout.refreshHint': '执行后会重新扫描列表;失败项已逐条尝试回滚(回滚失败的项会单独标红,绝不显示为已复原),可重试或改用离线 CLI。';
|
|
7051
6809
|
readonly 'sessions.layout.close': '关闭';
|
|
7052
6810
|
readonly 'sessions.layout.kind.ok': '位置已正确';
|
|
@@ -7089,7 +6847,7 @@ declare const zh$1: {
|
|
|
7089
6847
|
type RecoveryKey = keyof typeof zh$1;
|
|
7090
6848
|
type KindKey = `history.kind.${MigrationKind}`;
|
|
7091
6849
|
type ResultKey = `history.result.${MigrationResult}`;
|
|
7092
|
-
type CommonKey = '
|
|
6850
|
+
type CommonKey = 'history.subtitle' | 'history.empty' | 'history.loading' | 'history.corruptedBanner' | 'history.corruptedCount' | 'history.stats.total' | 'history.stats.success' | 'history.stats.failed' | 'history.stats.skipped' | 'history.filter.kind' | 'history.filter.result' | 'history.filter.recent' | 'history.filter.recent.all' | 'history.filter.recent.50' | 'history.filter.recent.200' | 'history.search.placeholder' | 'history.export.json' | 'history.export.markdown' | 'history.exported' | 'history.exporting' | 'history.exportError' | 'history.refresh' | 'history.refreshError' |
|
|
7093
6851
|
/** ⓘ 说明按钮的可访问名(与主字典 / market / sync / recovery 同口径,见 info-hint-guard t6-4) */
|
|
7094
6852
|
'common.infoHint';
|
|
7095
6853
|
type HistoryKey = KindKey | ResultKey | CommonKey;
|
|
@@ -7150,13 +6908,9 @@ declare const zh: {
|
|
|
7150
6908
|
* 这里是**数字**,数字留、句子走。
|
|
7151
6909
|
*/
|
|
7152
6910
|
readonly 'chat.preview.scope.files': '{n} 个文件';
|
|
7153
|
-
readonly 'chat.preview.scope.added': '+{n}';
|
|
7154
|
-
readonly 'chat.preview.scope.removed': '−{n}';
|
|
7155
|
-
readonly 'chat.preview.scope.deleted': '{n} 项删除';
|
|
7156
6911
|
/** 取消勾选(只退对话)时的汇总:数字与用户无关,改写一句「文件不动」;清单仍在下面、且不再变半透明 */
|
|
7157
6912
|
readonly 'chat.preview.scope.off': '只回退对话,文件不改动';
|
|
7158
6913
|
/** 文件行上悬停出现的「查看」(在看得到的前提下才出现:没有侧栏能力时换成下面那句) */
|
|
7159
|
-
readonly 'chat.preview.view': '查看';
|
|
7160
6914
|
/** 「查看」= 名字本身:无障碍名必须带**这个文件**的全路径(列表里同名按钮一屏好几个) */
|
|
7161
6915
|
readonly 'chat.preview.viewHint': '查看差异:{path}';
|
|
7162
6916
|
/** 没有右侧栏能力(旧 DSH / 侧栏服务缺失)→ 如实降级为弹窗内展示,不假装打开过 */
|