dsh-config-manager 0.1.23 → 0.1.25

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/README.md CHANGED
@@ -41,6 +41,18 @@ DSH is your AI assistant workbench — it holds your settings: model configs, pl
41
41
 
42
42
  ---
43
43
 
44
+ ## 📸 Screenshots
45
+
46
+ | Export | Import Preview |
47
+ |:---:|:---:|
48
+ | ![One-click Export](assets/screenshot-export.png) | ![Import Preview](assets/screenshot-import-preview.png) |
49
+
50
+ | Snapshot Restore | Remote Sync |
51
+ |:---:|:---:|
52
+ | ![Snapshot Restore](assets/screenshot-snapshots.png) | ![Remote Sync](assets/screenshot-sync.png) |
53
+
54
+ ---
55
+
44
56
  ## 🔄 How it works?
45
57
 
46
58
  ### Export (pack it up)
package/README.zh-CN.md CHANGED
@@ -40,6 +40,18 @@ DSH 是你的 AI 助手工作台,里面存着你的各种设置:模型配置
40
40
 
41
41
  ---
42
42
 
43
+ ## 📸 功能截图
44
+
45
+ | 导出备份 | 导入预览 |
46
+ |:---:|:---:|
47
+ | ![一键导出](assets/screenshot-export.png) | ![导入预览](assets/screenshot-import-preview.png) |
48
+
49
+ | 快照恢复 | 远程同步 |
50
+ |:---:|:---:|
51
+ | ![快照恢复](assets/screenshot-snapshots.png) | ![远程同步](assets/screenshot-sync.png) |
52
+
53
+ ---
54
+
43
55
  ## 🔄 它是怎么工作的?
44
56
 
45
57
  ### 导出(打包带走)
package/lib/client.d.ts CHANGED
@@ -695,6 +695,8 @@ interface SyncConfirmItem {
695
695
  adapter: SectionId;
696
696
  kind: PlanItemKind;
697
697
  description: string;
698
+ /** 变更详情(如插件「当前 1.1 vs 导入 1.6」),与导入恢复向导展示一致 */
699
+ detail?: string;
698
700
  severity: 'info' | 'warning' | 'error';
699
701
  /** 默认采纳方向;Conflict/MissingSecret 等人工项默认 false */
700
702
  defaultAdopt: boolean;
@@ -727,8 +729,9 @@ interface ApplyItemsPayload {
727
729
  interface SyncItemAdoption {
728
730
  itemId: string;
729
731
  adopt: boolean;
730
- /** 冲突项解决方案(仅当该项是 Conflict 且 adopt=true 时必须) */
731
- resolution?: 'useRemote' | 'keepLocal' | 'skip';
732
+ /** 冲突项解决方案(仅当该项是 Conflict 且 adopt=true 时必须)。
733
+ * 与导入恢复向导一致:keepLocal=保留当前 / useRemote=使用导入;跳过 = adopt=false。 */
734
+ resolution?: 'useRemote' | 'keepLocal';
732
735
  }
733
736
  /** POST /sync/apply-items 响应。 */
734
737
  interface ApplyItemsResponse {
@@ -1060,17 +1063,16 @@ declare const zh: {
1060
1063
  readonly 'syncflow.needsReviewBadge': "需人工决策";
1061
1064
  readonly 'syncflow.empty': "远端快照与本地一致(无变更)";
1062
1065
  readonly 'syncflow.diffCount': "共 {count} 项差异";
1063
- readonly 'syncflow.keepLocalAll': "全部保留本地";
1064
- readonly 'syncflow.useRemoteAll': "全部采用远端";
1066
+ readonly 'syncflow.keepLocalAll': "全部保留当前配置";
1067
+ readonly 'syncflow.useRemoteAll': "全部使用备份配置";
1065
1068
  readonly 'syncflow.bulkHint': "批量决策仅作用于冲突项;其余差异默认自动采用。";
1066
1069
  readonly 'syncflow.conflictTitle': "冲突解决";
1067
- readonly 'syncflow.conflictUseLocal': "用本地";
1068
- readonly 'syncflow.conflictUseRemote': "用远端";
1069
- readonly 'syncflow.conflictSkip': "跳过";
1070
- readonly 'syncflow.conflictLocalLabel': "本地";
1071
- readonly 'syncflow.conflictRemoteLabel': "远端";
1070
+ readonly 'syncflow.conflictUseLocal': "保留当前";
1071
+ readonly 'syncflow.conflictUseRemote': "使用备份";
1072
+ readonly 'syncflow.conflictLocalLabel': "当前";
1073
+ readonly 'syncflow.conflictRemoteLabel': "备份";
1072
1074
  readonly 'syncflow.conflictAncestorLabel': "共同祖先";
1073
- readonly 'syncflow.conflictUnresolved': "冲突项 {itemId} 尚未选择解决方式(用本地 / 用远端 / 跳过)";
1075
+ readonly 'syncflow.conflictUnresolved': "冲突项 {itemId} 尚未选择解决方式(保留当前 / 使用备份)";
1074
1076
  readonly 'syncflow.diff': "差异";
1075
1077
  readonly 'syncflow.importDone': "已导入 {n} 个分区";
1076
1078
  readonly 'syncflow.importFailed': "导入失败(已整体回滚)";
package/lib/client.js CHANGED
@@ -2065,7 +2065,7 @@ var RunStore = class {
2065
2065
  const runStore = new RunStore();
2066
2066
  //#endregion
2067
2067
  //#region \0config-manager-css:/home/runner/work/dsh-config-manager/dsh-config-manager/src/client/config-manager.module.css.js
2068
- const css = "._367UGW_section{height:100%;min-height:0;color:var(--dsw-alias-label-primary);font-family:var(--dsw-font-family);flex-direction:column;gap:10px;font-size:13px;display:flex}._367UGW_sectionHeader{flex:none;align-items:center;gap:10px;display:flex}._367UGW_viewTabs{border-bottom:1px solid var(--dsw-alias-border-l1);flex:1;gap:2px;display:flex}._367UGW_viewTab{color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:6px 6px 0 0;padding:7px 14px;font-size:13px}._367UGW_viewTab:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}._367UGW_viewTab[data-active]{color:var(--dsw-alias-label-primary);border-bottom-color:var(--dsw-alias-state-business-primary);font-weight:600}._367UGW_sectionBody{flex-direction:column;flex:1;min-height:0;display:flex;overflow-y:auto}._367UGW_viewBody{flex-direction:column;gap:12px;padding:4px 2px 16px;display:flex}._367UGW_sectionTitleBlock{flex-direction:column;gap:2px;display:flex}._367UGW_sectionTitle{color:var(--dsw-alias-label-primary);margin:0;font-size:15px;font-weight:700}._367UGW_sectionSubtitle{color:var(--dsw-alias-label-secondary);margin:0;font-size:12px;line-height:1.5}._367UGW_primaryButton{color:var(--dsw-alias-label-primary-foreground);background:var(--dsw-alias-button-info-fill);cursor:pointer;white-space:nowrap;border:none;border-radius:8px;align-items:center;gap:6px;padding:6px 14px;font-size:13px;font-weight:600;display:inline-flex}._367UGW_primaryButton:hover:not(:disabled){background:var(--dsw-alias-button-info-hover)}._367UGW_primaryButton:disabled{opacity:.5;cursor:default}._367UGW_ghostButton{color:var(--dsw-alias-label-primary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;white-space:nowrap;background:0 0;border-radius:8px;align-items:center;gap:6px;padding:5px 12px;font-size:12px;display:inline-flex}._367UGW_ghostButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}._367UGW_ghostButton:disabled{opacity:.45;cursor:default}._367UGW_dangerButton{color:var(--dsw-alias-state-error-primary);border:1px solid var(--dsw-alias-state-error-primary);cursor:pointer;white-space:nowrap;background:0 0;border-radius:8px;padding:5px 12px;font-size:12px}._367UGW_dangerButton:hover:not(:disabled){background:var(--dsw-alias-state-error-primary);color:var(--dsw-alias-label-primary-foreground)}._367UGW_dangerButton:disabled{opacity:.45;cursor:default}._367UGW_badge{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);white-space:nowrap;border-radius:999px;padding:1px 8px;font-size:11px;line-height:1.6;display:inline-block}._367UGW_badgeInfo{color:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary)}._367UGW_badgeOk{color:var(--dsw-alias-state-success-primary);border-color:var(--dsw-alias-state-success-primary)}._367UGW_badgeWarn{color:var(--dsw-alias-state-warn-primary);border-color:var(--dsw-alias-state-warn-primary)}._367UGW_badgeError{color:var(--dsw-alias-state-error-primary);border-color:var(--dsw-alias-state-error-primary)}._367UGW_banner{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;border-radius:8px;padding:8px 12px;font-size:12.5px;line-height:1.5}._367UGW_banner[data-kind=ok]{color:var(--dsw-alias-state-success-primary);border-color:var(--dsw-alias-state-success-primary)}._367UGW_banner[data-kind=error]{color:var(--dsw-alias-state-error-primary);border-color:var(--dsw-alias-state-error-primary)}._367UGW_banner[data-kind=info]{color:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary)}._367UGW_banner[data-kind=warn]{color:var(--dsw-alias-state-warn-primary);border-color:var(--dsw-alias-state-warn-primary)}._367UGW_card{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);border-radius:10px;flex-direction:column;flex:none;gap:10px;padding:12px;display:flex}._367UGW_field{flex-direction:column;gap:5px;display:flex}._367UGW_fieldLabel{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:600}._367UGW_input{color:var(--dsw-alias-label-primary);background:var(--dsw-specific-input-major);border:1px solid var(--dsw-alias-border-l2);resize:vertical;border-radius:8px;outline:none;padding:7px 10px;font-family:inherit;font-size:13px}._367UGW_input:focus{border-color:var(--dsw-alias-state-business-primary)}._367UGW_input::placeholder{color:var(--dsw-alias-label-tertiary)}._367UGW_input:disabled{opacity:.55}._367UGW_select{-webkit-appearance:none;appearance:none;color:var(--dsw-alias-label-primary);background-color:var(--dsw-specific-input-major);background-image:linear-gradient(45deg, transparent 50%, var(--dsw-alias-label-secondary) 50%), linear-gradient(135deg, var(--dsw-alias-label-secondary) 50%, transparent 50%);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;background-position:calc(100% - 17px) calc(50% - 1px),calc(100% - 12px) calc(50% - 1px);background-repeat:no-repeat;background-size:5px 5px,5px 5px;border-radius:8px;outline:none;max-width:100%;padding:7px 30px 7px 10px;font-family:inherit;font-size:13px}._367UGW_select:hover:not(:disabled){border-color:var(--dsw-alias-border-l1)}._367UGW_select:focus{border-color:var(--dsw-alias-state-business-primary)}._367UGW_select:disabled{opacity:.55;cursor:default}._367UGW_select option{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2)}._367UGW_hint{color:var(--dsw-alias-label-tertiary);font-size:11.5px;line-height:1.5}._367UGW_formError{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px}._367UGW_checkboxRow{color:var(--dsw-alias-label-primary);cursor:pointer;align-items:flex-start;gap:8px;font-size:13px;display:flex}._367UGW_checkboxRow input{flex:none;margin-top:2px}._367UGW_radioLabel{color:var(--dsw-alias-label-primary);cursor:pointer;align-items:center;gap:6px;font-size:13px;display:inline-flex}._367UGW_secretFields{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px 12px;padding-top:4px;display:grid}._367UGW_hiddenFile{display:none}._367UGW_modeTabs{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;gap:2px;display:flex}._367UGW_modeTab{color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:6px 12px;font-size:12.5px}._367UGW_modeTab:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}._367UGW_modeTab[data-active]{color:var(--dsw-alias-label-primary);border-bottom-color:var(--dsw-alias-state-business-primary);font-weight:600}._367UGW_modeHint{color:var(--dsw-alias-label-secondary);font-size:12px;line-height:1.5}._367UGW_groupList{flex-direction:column;gap:10px;display:flex}._367UGW_groupCard{gap:8px}._367UGW_groupHeader{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}._367UGW_groupLabel{color:var(--dsw-alias-label-primary);font-size:12.5px;font-weight:700}._367UGW_groupNote{color:var(--dsw-alias-label-tertiary);font-size:11.5px}._367UGW_groupItems{flex-direction:column;gap:6px;display:flex}._367UGW_categoryItem{flex-wrap:wrap;align-items:center;gap:8px;display:inline-flex}._367UGW_categoryName{font-weight:500}._367UGW_categoryDesc{color:var(--dsw-alias-label-tertiary);font-size:11.5px}._367UGW_optionsCard{gap:8px}._367UGW_warnList{margin:4px 0 0;padding-left:18px}._367UGW_actionRow{flex-wrap:wrap;align-items:center;gap:10px;display:flex}._367UGW_progressBlock{flex-direction:column;flex:none;gap:6px;display:flex}._367UGW_progressMeta{color:var(--dsw-alias-label-secondary);flex-wrap:wrap;gap:12px;font-size:12px;display:flex}._367UGW_progressLabel{font-weight:600}._367UGW_progressDetail{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;max-width:320px;overflow:hidden}._367UGW_progressBadge{font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:999px;align-items:center;gap:2px;padding:1px 8px;font-size:11px;line-height:18px;display:inline-flex}._367UGW_progressBadgeSection{background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 14%, transparent);color:var(--dsw-alias-state-business-primary)}._367UGW_progressBadgeCount{background:color-mix(in srgb, var(--dsw-alias-state-info-primary) 14%, transparent);color:var(--dsw-alias-state-info-primary)}._367UGW_progressPercent{font-variant-numeric:tabular-nums;margin-left:auto}._367UGW_progressTrack{background:var(--dsw-alias-interactive-bg-hover);border-radius:999px;height:8px;overflow:hidden}._367UGW_progressBar{background:var(--dsw-alias-state-business-primary);border-radius:999px;height:100%;transition:width .12s linear}._367UGW_progressBarDone{background:var(--dsw-alias-state-success-primary)}._367UGW_progressIndeterminate{width:40%;animation:1s ease-in-out infinite _367UGW_dshCmIndeterminate}@keyframes _367UGW_dshCmIndeterminate{0%{margin-left:-40%}to{margin-left:100%}}._367UGW_reportView{flex-direction:column;gap:10px;display:flex}._367UGW_statRow{flex-wrap:wrap;align-items:center;gap:6px;display:flex}._367UGW_reportText{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);white-space:pre-wrap;word-break:break-all;max-height:260px;color:var(--dsw-alias-label-primary);border-radius:8px;margin:0;padding:10px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px;line-height:1.6;overflow:auto}._367UGW_reportFooter{justify-content:flex-end;gap:8px;display:flex}._367UGW_rollbackBox{border:1px solid var(--dsw-alias-state-warn-primary);color:var(--dsw-alias-state-warn-primary);border-radius:8px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}._367UGW_rollbackBox ._367UGW_reportText{border-color:var(--dsw-alias-border-l2)}._367UGW_errorBanner{border:1px solid var(--dsw-alias-state-error-primary);color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);border-radius:8px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}._367UGW_errorTitle{color:var(--dsw-alias-state-error-primary);font-size:13px;font-weight:700}._367UGW_errorReason{white-space:pre-wrap;word-break:break-all;color:var(--dsw-alias-label-secondary);margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px}._367UGW_errorAction{color:var(--dsw-alias-label-secondary);font-size:12.5px}._367UGW_errorActionLabel{color:var(--dsw-alias-state-business-primary)}._367UGW_errorItem{color:var(--dsw-alias-label-tertiary);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px}._367UGW_errorFooter{justify-content:flex-end;display:flex}._367UGW_errorList{flex-direction:column;gap:4px;display:flex}._367UGW_errorLine{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);white-space:pre-wrap;word-break:break-all;color:var(--dsw-alias-state-error-primary);border-radius:6px;margin:0;padding:6px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}._367UGW_conflictList{flex-direction:column;gap:10px;display:flex}._367UGW_conflictItem{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);border-radius:8px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}._367UGW_conflictHead{flex-wrap:wrap;align-items:center;gap:8px;display:flex}._367UGW_conflictId{color:var(--dsw-alias-label-primary);font-size:12.5px;font-weight:600}._367UGW_severityError{color:var(--dsw-alias-state-error-primary);border:1px solid var(--dsw-alias-state-error-primary);border-radius:999px;padding:0 6px;font-size:10.5px}._367UGW_conflictDetail{background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);white-space:pre-wrap;word-break:break-all;color:var(--dsw-alias-label-secondary);border-radius:6px;margin:0;padding:6px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}._367UGW_conflictOptions{flex-wrap:wrap;gap:14px;display:flex}._367UGW_pathMappingList{flex-direction:column;gap:8px;display:flex}._367UGW_pathRow{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);border-radius:8px;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;padding:10px 12px;display:grid}._367UGW_pathOld,._367UGW_pathNew{flex-direction:column;gap:4px;min-width:0;display:flex}._367UGW_pathValue{text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-primary);margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px;overflow:hidden}._367UGW_pathIssueKind{color:var(--dsw-alias-state-warn-primary);font-size:10.5px}._367UGW_secretsList{flex-direction:column;gap:10px;display:flex}._367UGW_empty{text-align:center;color:var(--dsw-alias-label-tertiary);padding:22px 12px;font-size:12.5px}._367UGW_spinnerWrap{align-items:center;gap:6px;display:inline-flex}._367UGW_spinner{border:2px solid var(--dsw-alias-state-business-primary);vertical-align:-1px;border-top-color:#0000;border-radius:50%;flex:none;width:11px;height:11px;animation:.8s linear infinite _367UGW_dshCmSpin;display:inline-block}._367UGW_spinnerLabel{color:var(--dsw-alias-label-secondary);font-size:12px}@keyframes _367UGW_dshCmSpin{to{transform:rotate(360deg)}}._367UGW_snapshotList{flex-direction:column;gap:2px;display:flex}._367UGW_snapshotRowHeader,._367UGW_snapshotRow{grid-template-columns:minmax(120px,1.2fr) minmax(140px,1.6fr) 90px 56px 56px;align-items:center;gap:8px;padding:6px 10px;font-size:12px;display:grid}._367UGW_snapshotRowHeader{color:var(--dsw-alias-label-tertiary);border-bottom:1px solid var(--dsw-alias-border-l1);font-size:11px}._367UGW_snapshotRow{text-align:left;width:100%;color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px}._367UGW_snapshotRow:hover{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_snapshotRow[data-active]{border-color:var(--dsw-alias-state-business-primary);background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 10%, transparent)}._367UGW_warnText{color:var(--dsw-alias-state-warn-primary)}._367UGW_reportList{color:var(--dsw-alias-label-primary);flex-direction:column;gap:3px;margin:8px 0 4px;padding-left:18px;font-size:12px;display:flex}._367UGW_kindTag{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary);border-radius:4px;padding:1px 6px;font-size:10.5px;display:inline-block}._367UGW_planScroll{overscroll-behavior:contain;background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);border-radius:8px;height:280px;padding:2px 10px 8px;overflow-y:auto}._367UGW_planScroll ._367UGW_reportList{margin-top:6px}._367UGW_reportScroll{overscroll-behavior:contain;background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);border-radius:8px;max-height:220px;padding:2px 10px 6px;overflow-y:auto}._367UGW_reportScroll ._367UGW_reportList{margin-top:4px}._367UGW_confirmScroll{overscroll-behavior:contain;background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);border-radius:8px;max-height:280px;padding:2px 10px 6px;overflow-y:auto}._367UGW_confirmScroll ._367UGW_reportList{margin-top:4px;margin-bottom:0}._367UGW_rowActions{gap:8px;margin-top:10px;display:flex}._367UGW_diffScroll{overscroll-behavior:contain;background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);white-space:pre-wrap;word-break:break-all;max-height:240px;color:var(--dsw-alias-label-primary);border-radius:8px;margin:0;padding:8px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px;line-height:1.6;overflow:auto}";
2068
+ const css = "._367UGW_section{height:100%;min-height:0;color:var(--dsw-alias-label-primary);font-family:var(--dsw-font-family);flex-direction:column;gap:10px;font-size:13px;display:flex}._367UGW_sectionHeader{flex:none;align-items:center;gap:10px;display:flex}._367UGW_viewTabs{border-bottom:1px solid var(--dsw-alias-border-l1);flex:1;gap:2px;display:flex}._367UGW_viewTab{color:var(--dsw-alias-label-secondary);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;border-radius:6px 6px 0 0;padding:7px 14px;font-size:13px}._367UGW_viewTab:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}._367UGW_viewTab[data-active]{color:var(--dsw-alias-label-primary);border-bottom-color:var(--dsw-alias-state-business-primary);font-weight:600}._367UGW_sectionBody{flex-direction:column;flex:1;min-height:0;display:flex;overflow-y:auto}._367UGW_viewBody{flex-direction:column;gap:12px;padding:4px 2px 16px;display:flex}._367UGW_sectionTitleBlock{flex-direction:column;gap:2px;display:flex}._367UGW_sectionTitle{color:var(--dsw-alias-label-primary);margin:0;font-size:15px;font-weight:700}._367UGW_sectionSubtitle{color:var(--dsw-alias-label-secondary);margin:0;font-size:12px;line-height:1.5}._367UGW_primaryButton{color:var(--dsw-alias-label-primary-foreground);background:var(--dsw-alias-button-info-fill);cursor:pointer;white-space:nowrap;border:none;border-radius:8px;align-items:center;gap:6px;padding:6px 14px;font-size:13px;font-weight:600;display:inline-flex}._367UGW_primaryButton:hover:not(:disabled){background:var(--dsw-alias-button-info-hover)}._367UGW_primaryButton:disabled{opacity:.5;cursor:default}._367UGW_ghostButton{color:var(--dsw-alias-label-primary);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;white-space:nowrap;background:0 0;border-radius:8px;align-items:center;gap:6px;padding:5px 12px;font-size:12px;display:inline-flex}._367UGW_ghostButton:hover:not(:disabled){background:var(--dsw-alias-interactive-bg-hover)}._367UGW_ghostButton:disabled{opacity:.45;cursor:default}._367UGW_dangerButton{color:var(--dsw-alias-state-error-primary);border:1px solid var(--dsw-alias-state-error-primary);cursor:pointer;white-space:nowrap;background:0 0;border-radius:8px;padding:5px 12px;font-size:12px}._367UGW_dangerButton:hover:not(:disabled){background:var(--dsw-alias-state-error-primary);color:var(--dsw-alias-label-primary-foreground)}._367UGW_dangerButton:disabled{opacity:.45;cursor:default}._367UGW_badge{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);white-space:nowrap;border-radius:999px;padding:1px 8px;font-size:11px;line-height:1.6;display:inline-block}._367UGW_badgeInfo{color:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary)}._367UGW_badgeOk{color:var(--dsw-alias-state-success-primary);border-color:var(--dsw-alias-state-success-primary)}._367UGW_badgeWarn{color:var(--dsw-alias-state-warn-primary);border-color:var(--dsw-alias-state-warn-primary)}._367UGW_badgeError{color:var(--dsw-alias-state-error-primary);border-color:var(--dsw-alias-state-error-primary)}._367UGW_banner{border:1px solid var(--dsw-alias-border-l2);color:var(--dsw-alias-label-secondary);overflow-wrap:anywhere;border-radius:8px;padding:8px 12px;font-size:12.5px;line-height:1.5}._367UGW_banner[data-kind=ok]{color:var(--dsw-alias-state-success-primary);border-color:var(--dsw-alias-state-success-primary)}._367UGW_banner[data-kind=error]{color:var(--dsw-alias-state-error-primary);border-color:var(--dsw-alias-state-error-primary)}._367UGW_banner[data-kind=info]{color:var(--dsw-alias-state-business-primary);border-color:var(--dsw-alias-state-business-primary)}._367UGW_banner[data-kind=warn]{color:var(--dsw-alias-state-warn-primary);border-color:var(--dsw-alias-state-warn-primary)}._367UGW_card{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);border-radius:10px;flex-direction:column;flex:none;gap:10px;padding:12px;display:flex}._367UGW_field{flex-direction:column;gap:5px;display:flex}._367UGW_fieldLabel{color:var(--dsw-alias-label-secondary);font-size:12px;font-weight:600}._367UGW_input{color:var(--dsw-alias-label-primary);background:var(--dsw-specific-input-major);border:1px solid var(--dsw-alias-border-l2);resize:vertical;border-radius:8px;outline:none;padding:7px 10px;font-family:inherit;font-size:13px}._367UGW_input:focus{border-color:var(--dsw-alias-state-business-primary)}._367UGW_input::placeholder{color:var(--dsw-alias-label-tertiary)}._367UGW_input:disabled{opacity:.55}._367UGW_select{-webkit-appearance:none;appearance:none;color:var(--dsw-alias-label-primary);background-color:var(--dsw-specific-input-major);background-image:linear-gradient(45deg, transparent 50%, var(--dsw-alias-label-secondary) 50%), linear-gradient(135deg, var(--dsw-alias-label-secondary) 50%, transparent 50%);border:1px solid var(--dsw-alias-border-l2);cursor:pointer;background-position:calc(100% - 17px) calc(50% - 1px),calc(100% - 12px) calc(50% - 1px);background-repeat:no-repeat;background-size:5px 5px,5px 5px;border-radius:8px;outline:none;max-width:100%;padding:7px 30px 7px 10px;font-family:inherit;font-size:13px}._367UGW_select:hover:not(:disabled){border-color:var(--dsw-alias-border-l1)}._367UGW_select:focus{border-color:var(--dsw-alias-state-business-primary)}._367UGW_select:disabled{opacity:.55;cursor:default}._367UGW_select option{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2)}._367UGW_hint{color:var(--dsw-alias-label-tertiary);font-size:11.5px;line-height:1.5}._367UGW_formError{color:var(--dsw-alias-state-error-primary);margin:0;font-size:12px}._367UGW_checkboxRow{color:var(--dsw-alias-label-primary);cursor:pointer;align-items:flex-start;gap:8px;font-size:13px;display:flex}._367UGW_checkboxRow input{flex:none;margin-top:2px}._367UGW_radioLabel{color:var(--dsw-alias-label-primary);cursor:pointer;align-items:center;gap:6px;font-size:13px;display:inline-flex}._367UGW_secretFields{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px 12px;padding-top:4px;display:grid}._367UGW_hiddenFile{display:none}._367UGW_modeTabs{border-bottom:1px solid var(--dsw-alias-border-l1);flex:none;gap:2px;display:flex}._367UGW_modeTab{color:var(--dsw-alias-label-secondary);cursor:pointer;background:0 0;border:none;border-bottom:2px solid #0000;padding:6px 12px;font-size:12.5px}._367UGW_modeTab:hover{color:var(--dsw-alias-label-primary);background:var(--dsw-alias-interactive-bg-hover)}._367UGW_modeTab[data-active]{color:var(--dsw-alias-label-primary);border-bottom-color:var(--dsw-alias-state-business-primary);font-weight:600}._367UGW_modeHint{color:var(--dsw-alias-label-secondary);font-size:12px;line-height:1.5}._367UGW_groupList{flex-direction:column;gap:10px;display:flex}._367UGW_groupCard{gap:8px}._367UGW_groupHeader{flex-wrap:wrap;align-items:baseline;gap:8px;display:flex}._367UGW_groupLabel{color:var(--dsw-alias-label-primary);font-size:12.5px;font-weight:700}._367UGW_groupNote{color:var(--dsw-alias-label-tertiary);font-size:11.5px}._367UGW_groupItems{flex-direction:column;gap:6px;display:flex}._367UGW_categoryItem{flex-wrap:wrap;align-items:center;gap:8px;display:inline-flex}._367UGW_categoryName{font-weight:500}._367UGW_categoryDesc{color:var(--dsw-alias-label-tertiary);font-size:11.5px}._367UGW_optionsCard{gap:8px}._367UGW_warnList{margin:4px 0 0;padding-left:18px}._367UGW_actionRow{flex-wrap:wrap;align-items:center;gap:10px;display:flex}._367UGW_progressBlock{flex-direction:column;flex:none;gap:6px;display:flex}._367UGW_progressMeta{color:var(--dsw-alias-label-secondary);flex-wrap:wrap;gap:12px;font-size:12px;display:flex}._367UGW_progressLabel{font-weight:600}._367UGW_progressDetail{color:var(--dsw-alias-label-tertiary);text-overflow:ellipsis;white-space:nowrap;max-width:320px;overflow:hidden}._367UGW_progressBadge{font-variant-numeric:tabular-nums;white-space:nowrap;border-radius:999px;align-items:center;gap:2px;padding:1px 8px;font-size:11px;line-height:18px;display:inline-flex}._367UGW_progressBadgeSection{background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 14%, transparent);color:var(--dsw-alias-state-business-primary)}._367UGW_progressBadgeCount{background:color-mix(in srgb, var(--dsw-alias-state-info-primary) 14%, transparent);color:var(--dsw-alias-state-info-primary)}._367UGW_progressPercent{font-variant-numeric:tabular-nums;margin-left:auto}._367UGW_progressTrack{background:var(--dsw-alias-interactive-bg-hover);border-radius:999px;height:8px;overflow:hidden}._367UGW_progressBar{background:var(--dsw-alias-state-business-primary);border-radius:999px;height:100%;transition:width .12s linear}._367UGW_progressBarDone{background:var(--dsw-alias-state-success-primary)}._367UGW_progressIndeterminate{width:40%;animation:1s ease-in-out infinite _367UGW_dshCmIndeterminate}@keyframes _367UGW_dshCmIndeterminate{0%{margin-left:-40%}to{margin-left:100%}}._367UGW_reportView{flex-direction:column;gap:10px;display:flex}._367UGW_statRow{flex-wrap:wrap;align-items:center;gap:6px;display:flex}._367UGW_reportText{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);white-space:pre-wrap;word-break:break-all;max-height:260px;color:var(--dsw-alias-label-primary);border-radius:8px;margin:0;padding:10px 12px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px;line-height:1.6;overflow:auto}._367UGW_reportFooter{justify-content:flex-end;gap:8px;display:flex}._367UGW_rollbackBox{border:1px solid var(--dsw-alias-state-warn-primary);color:var(--dsw-alias-state-warn-primary);border-radius:8px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}._367UGW_rollbackBox ._367UGW_reportText{border-color:var(--dsw-alias-border-l2)}._367UGW_errorBanner{border:1px solid var(--dsw-alias-state-error-primary);color:var(--dsw-alias-label-primary);background:var(--dsw-alias-bg-layer-2);border-radius:8px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}._367UGW_errorTitle{color:var(--dsw-alias-state-error-primary);font-size:13px;font-weight:700}._367UGW_errorReason{white-space:pre-wrap;word-break:break-all;color:var(--dsw-alias-label-secondary);margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px}._367UGW_errorAction{color:var(--dsw-alias-label-secondary);font-size:12.5px}._367UGW_errorActionLabel{color:var(--dsw-alias-state-business-primary)}._367UGW_errorItem{color:var(--dsw-alias-label-tertiary);font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px}._367UGW_errorFooter{justify-content:flex-end;display:flex}._367UGW_errorList{flex-direction:column;gap:4px;display:flex}._367UGW_errorLine{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l2);white-space:pre-wrap;word-break:break-all;color:var(--dsw-alias-state-error-primary);border-radius:6px;margin:0;padding:6px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}._367UGW_conflictList{flex-direction:column;gap:10px;display:flex}._367UGW_conflictItem{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);border-radius:8px;flex-direction:column;gap:6px;padding:10px 12px;display:flex}._367UGW_conflictHead{flex-wrap:wrap;align-items:center;gap:8px;display:flex}._367UGW_conflictId{color:var(--dsw-alias-label-primary);font-size:12.5px;font-weight:600}._367UGW_severityError{color:var(--dsw-alias-state-error-primary);border:1px solid var(--dsw-alias-state-error-primary);border-radius:999px;padding:0 6px;font-size:10.5px}._367UGW_conflictDetail{background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);white-space:pre-wrap;word-break:break-all;color:var(--dsw-alias-label-secondary);border-radius:6px;margin:0;padding:6px 8px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11px}._367UGW_conflictOptions{flex-wrap:wrap;gap:14px;display:flex}._367UGW_pathMappingList{flex-direction:column;gap:8px;display:flex}._367UGW_pathRow{background:var(--dsw-alias-bg-layer-2);border:1px solid var(--dsw-alias-border-l1);border-radius:8px;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:10px;padding:10px 12px;display:grid}._367UGW_pathOld,._367UGW_pathNew{flex-direction:column;gap:4px;min-width:0;display:flex}._367UGW_pathValue{text-overflow:ellipsis;white-space:nowrap;color:var(--dsw-alias-label-primary);margin:0;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px;overflow:hidden}._367UGW_pathIssueKind{color:var(--dsw-alias-state-warn-primary);font-size:10.5px}._367UGW_secretsList{flex-direction:column;gap:10px;display:flex}._367UGW_empty{text-align:center;color:var(--dsw-alias-label-tertiary);padding:22px 12px;font-size:12.5px}._367UGW_spinnerWrap{align-items:center;gap:6px;display:inline-flex}._367UGW_spinner{border:2px solid var(--dsw-alias-state-business-primary);vertical-align:-1px;border-top-color:#0000;border-radius:50%;flex:none;width:11px;height:11px;animation:.8s linear infinite _367UGW_dshCmSpin;display:inline-block}._367UGW_spinnerLabel{color:var(--dsw-alias-label-secondary);font-size:12px}@keyframes _367UGW_dshCmSpin{to{transform:rotate(360deg)}}._367UGW_snapshotList{flex-direction:column;gap:2px;display:flex}._367UGW_snapshotRowHeader,._367UGW_snapshotRow{grid-template-columns:minmax(120px,1.2fr) minmax(140px,1.6fr) 90px 56px 56px;align-items:center;gap:8px;padding:6px 10px;font-size:12px;display:grid}._367UGW_snapshotRowHeader{color:var(--dsw-alias-label-tertiary);border-bottom:1px solid var(--dsw-alias-border-l1);font-size:11px}._367UGW_snapshotRow{text-align:left;width:100%;color:var(--dsw-alias-label-primary);cursor:pointer;background:0 0;border:1px solid #0000;border-radius:6px}._367UGW_snapshotRow:hover{background:var(--dsw-alias-interactive-bg-hover)}._367UGW_snapshotRow[data-active]{border-color:var(--dsw-alias-state-business-primary);background:color-mix(in srgb, var(--dsw-alias-state-business-primary) 10%, transparent)}._367UGW_warnText{color:var(--dsw-alias-state-warn-primary)}._367UGW_reportList{color:var(--dsw-alias-label-primary);flex-direction:column;gap:3px;margin:8px 0 4px;padding-left:18px;font-size:12px;display:flex}._367UGW_kindTag{background:var(--dsw-alias-interactive-bg-hover);color:var(--dsw-alias-label-secondary);border-radius:4px;padding:1px 6px;font-size:10.5px;display:inline-block}._367UGW_planScroll{overscroll-behavior:contain;background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);border-radius:8px;height:280px;padding:2px 10px 8px;overflow-y:auto}._367UGW_planScroll ._367UGW_reportList{margin-top:6px}._367UGW_reportScroll{overscroll-behavior:contain;background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);border-radius:8px;max-height:220px;padding:2px 10px 6px;overflow-y:auto}._367UGW_reportScroll ._367UGW_reportList{margin-top:4px}._367UGW_confirmScroll{overscroll-behavior:contain;background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);border-radius:8px;max-height:280px;padding:2px 10px 6px;overflow-y:auto}._367UGW_confirmScroll ._367UGW_reportList{margin-top:4px;margin-bottom:0}._367UGW_pullScroll{overscroll-behavior:contain;background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);border-radius:8px;height:280px;padding:2px 10px 6px;overflow-y:auto}._367UGW_pullScroll ._367UGW_reportList{margin-top:4px;margin-bottom:0}._367UGW_rowActions{gap:8px;margin-top:10px;display:flex}._367UGW_diffScroll{overscroll-behavior:contain;background:var(--dsw-alias-bg-base);border:1px solid var(--dsw-alias-border-l2);white-space:pre-wrap;word-break:break-all;max-height:240px;color:var(--dsw-alias-label-primary);border-radius:8px;margin:0;padding:8px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:11.5px;line-height:1.6;overflow:auto}";
2069
2069
  const tagId = "dsh-config-manager/config-manager.module.css";
2070
2070
  if (typeof document !== "undefined" && document.querySelector("style[data-tag=\"dsh-config-manager/config-manager.module.css\"]") === null) {
2071
2071
  const tag = document.createElement("style");
@@ -2075,107 +2075,108 @@ if (typeof document !== "undefined" && document.querySelector("style[data-tag=\"
2075
2075
  document.head.appendChild(tag);
2076
2076
  }
2077
2077
  var config_manager_module_css_default = {
2078
- "errorFooter": "_367UGW_errorFooter",
2079
- "warnText": "_367UGW_warnText",
2080
- "planScroll": "_367UGW_planScroll",
2081
- "rowActions": "_367UGW_rowActions",
2082
- "dangerButton": "_367UGW_dangerButton",
2083
- "card": "_367UGW_card",
2084
- "groupCard": "_367UGW_groupCard",
2085
- "errorItem": "_367UGW_errorItem",
2086
- "formError": "_367UGW_formError",
2087
- "pathOld": "_367UGW_pathOld",
2088
- "errorActionLabel": "_367UGW_errorActionLabel",
2089
- "pathValue": "_367UGW_pathValue",
2090
- "select": "_367UGW_select",
2091
- "sectionSubtitle": "_367UGW_sectionSubtitle",
2092
- "sectionBody": "_367UGW_sectionBody",
2093
- "banner": "_367UGW_banner",
2094
- "hint": "_367UGW_hint",
2095
- "reportView": "_367UGW_reportView",
2096
- "categoryDesc": "_367UGW_categoryDesc",
2097
- "reportList": "_367UGW_reportList",
2098
- "statRow": "_367UGW_statRow",
2099
- "progressMeta": "_367UGW_progressMeta",
2100
- "progressBarDone": "_367UGW_progressBarDone",
2101
- "secretsList": "_367UGW_secretsList",
2102
- "snapshotRow": "_367UGW_snapshotRow",
2103
- "confirmScroll": "_367UGW_confirmScroll",
2104
- "errorBanner": "_367UGW_errorBanner",
2105
- "secretFields": "_367UGW_secretFields",
2106
- "categoryName": "_367UGW_categoryName",
2107
- "errorLine": "_367UGW_errorLine",
2108
- "conflictHead": "_367UGW_conflictHead",
2109
- "progressBadgeCount": "_367UGW_progressBadgeCount",
2110
- "snapshotRowHeader": "_367UGW_snapshotRowHeader",
2111
- "badgeWarn": "_367UGW_badgeWarn",
2112
- "badge": "_367UGW_badge",
2113
- "badgeError": "_367UGW_badgeError",
2114
- "actionRow": "_367UGW_actionRow",
2115
- "dshCmSpin": "_367UGW_dshCmSpin",
2116
- "groupLabel": "_367UGW_groupLabel",
2117
- "snapshotList": "_367UGW_snapshotList",
2118
2078
  "warnList": "_367UGW_warnList",
2119
- "progressDetail": "_367UGW_progressDetail",
2079
+ "progressIndeterminate": "_367UGW_progressIndeterminate",
2080
+ "sectionSubtitle": "_367UGW_sectionSubtitle",
2120
2081
  "groupNote": "_367UGW_groupNote",
2121
- "rollbackBox": "_367UGW_rollbackBox",
2082
+ "conflictItem": "_367UGW_conflictItem",
2083
+ "badgeWarn": "_367UGW_badgeWarn",
2084
+ "progressBadge": "_367UGW_progressBadge",
2122
2085
  "conflictOptions": "_367UGW_conflictOptions",
2123
- "diffScroll": "_367UGW_diffScroll",
2124
- "spinnerWrap": "_367UGW_spinnerWrap",
2125
- "pathMappingList": "_367UGW_pathMappingList",
2126
- "dshCmIndeterminate": "_367UGW_dshCmIndeterminate",
2127
- "input": "_367UGW_input",
2086
+ "pathOld": "_367UGW_pathOld",
2087
+ "pathIssueKind": "_367UGW_pathIssueKind",
2088
+ "categoryName": "_367UGW_categoryName",
2128
2089
  "fieldLabel": "_367UGW_fieldLabel",
2129
- "errorTitle": "_367UGW_errorTitle",
2130
- "conflictId": "_367UGW_conflictId",
2131
- "modeTabs": "_367UGW_modeTabs",
2132
- "groupItems": "_367UGW_groupItems",
2133
- "sectionTitleBlock": "_367UGW_sectionTitleBlock",
2134
- "optionsCard": "_367UGW_optionsCard",
2135
- "reportFooter": "_367UGW_reportFooter",
2136
- "progressLabel": "_367UGW_progressLabel",
2137
- "conflictItem": "_367UGW_conflictItem",
2138
- "errorList": "_367UGW_errorList",
2139
2090
  "section": "_367UGW_section",
2140
- "progressIndeterminate": "_367UGW_progressIndeterminate",
2141
- "field": "_367UGW_field",
2142
- "viewTab": "_367UGW_viewTab",
2143
- "progressBlock": "_367UGW_progressBlock",
2091
+ "radioLabel": "_367UGW_radioLabel",
2092
+ "groupLabel": "_367UGW_groupLabel",
2093
+ "dshCmIndeterminate": "_367UGW_dshCmIndeterminate",
2094
+ "errorLine": "_367UGW_errorLine",
2095
+ "spinnerLabel": "_367UGW_spinnerLabel",
2096
+ "groupList": "_367UGW_groupList",
2097
+ "actionRow": "_367UGW_actionRow",
2098
+ "progressBarDone": "_367UGW_progressBarDone",
2144
2099
  "errorAction": "_367UGW_errorAction",
2145
- "pathNew": "_367UGW_pathNew",
2100
+ "progressBlock": "_367UGW_progressBlock",
2101
+ "snapshotList": "_367UGW_snapshotList",
2146
2102
  "kindTag": "_367UGW_kindTag",
2147
- "errorReason": "_367UGW_errorReason",
2103
+ "spinner": "_367UGW_spinner",
2148
2104
  "conflictList": "_367UGW_conflictList",
2149
- "progressPercent": "_367UGW_progressPercent",
2150
- "radioLabel": "_367UGW_radioLabel",
2105
+ "reportFooter": "_367UGW_reportFooter",
2106
+ "banner": "_367UGW_banner",
2107
+ "field": "_367UGW_field",
2108
+ "categoryItem": "_367UGW_categoryItem",
2109
+ "errorBanner": "_367UGW_errorBanner",
2110
+ "snapshotRowHeader": "_367UGW_snapshotRowHeader",
2111
+ "primaryButton": "_367UGW_primaryButton",
2151
2112
  "reportText": "_367UGW_reportText",
2152
2113
  "reportScroll": "_367UGW_reportScroll",
2153
- "progressBar": "_367UGW_progressBar",
2154
- "viewTabs": "_367UGW_viewTabs",
2155
- "pathRow": "_367UGW_pathRow",
2156
- "spinner": "_367UGW_spinner",
2157
- "checkboxRow": "_367UGW_checkboxRow",
2158
- "primaryButton": "_367UGW_primaryButton",
2159
- "sectionTitle": "_367UGW_sectionTitle",
2160
- "empty": "_367UGW_empty",
2161
- "progressBadgeSection": "_367UGW_progressBadgeSection",
2162
- "modeHint": "_367UGW_modeHint",
2114
+ "sectionTitleBlock": "_367UGW_sectionTitleBlock",
2163
2115
  "conflictDetail": "_367UGW_conflictDetail",
2164
- "progressTrack": "_367UGW_progressTrack",
2165
- "sectionHeader": "_367UGW_sectionHeader",
2166
- "severityError": "_367UGW_severityError",
2167
- "viewBody": "_367UGW_viewBody",
2116
+ "empty": "_367UGW_empty",
2117
+ "sectionTitle": "_367UGW_sectionTitle",
2168
2118
  "badgeInfo": "_367UGW_badgeInfo",
2169
- "pathIssueKind": "_367UGW_pathIssueKind",
2170
2119
  "hiddenFile": "_367UGW_hiddenFile",
2171
- "spinnerLabel": "_367UGW_spinnerLabel",
2172
- "categoryItem": "_367UGW_categoryItem",
2120
+ "errorItem": "_367UGW_errorItem",
2121
+ "pathMappingList": "_367UGW_pathMappingList",
2122
+ "card": "_367UGW_card",
2123
+ "diffScroll": "_367UGW_diffScroll",
2124
+ "viewBody": "_367UGW_viewBody",
2125
+ "conflictId": "_367UGW_conflictId",
2126
+ "errorFooter": "_367UGW_errorFooter",
2127
+ "severityError": "_367UGW_severityError",
2128
+ "errorReason": "_367UGW_errorReason",
2129
+ "secretsList": "_367UGW_secretsList",
2173
2130
  "modeTab": "_367UGW_modeTab",
2174
- "ghostButton": "_367UGW_ghostButton",
2175
- "badgeOk": "_367UGW_badgeOk",
2176
- "groupList": "_367UGW_groupList",
2131
+ "dangerButton": "_367UGW_dangerButton",
2132
+ "statRow": "_367UGW_statRow",
2133
+ "dshCmSpin": "_367UGW_dshCmSpin",
2134
+ "snapshotRow": "_367UGW_snapshotRow",
2135
+ "warnText": "_367UGW_warnText",
2136
+ "rowActions": "_367UGW_rowActions",
2137
+ "groupCard": "_367UGW_groupCard",
2138
+ "sectionHeader": "_367UGW_sectionHeader",
2139
+ "badge": "_367UGW_badge",
2140
+ "checkboxRow": "_367UGW_checkboxRow",
2141
+ "pathNew": "_367UGW_pathNew",
2142
+ "viewTab": "_367UGW_viewTab",
2143
+ "rollbackBox": "_367UGW_rollbackBox",
2144
+ "spinnerWrap": "_367UGW_spinnerWrap",
2145
+ "reportList": "_367UGW_reportList",
2146
+ "pullScroll": "_367UGW_pullScroll",
2147
+ "optionsCard": "_367UGW_optionsCard",
2177
2148
  "groupHeader": "_367UGW_groupHeader",
2178
- "progressBadge": "_367UGW_progressBadge"
2149
+ "groupItems": "_367UGW_groupItems",
2150
+ "progressBadgeCount": "_367UGW_progressBadgeCount",
2151
+ "reportView": "_367UGW_reportView",
2152
+ "confirmScroll": "_367UGW_confirmScroll",
2153
+ "progressMeta": "_367UGW_progressMeta",
2154
+ "errorTitle": "_367UGW_errorTitle",
2155
+ "badgeError": "_367UGW_badgeError",
2156
+ "sectionBody": "_367UGW_sectionBody",
2157
+ "progressLabel": "_367UGW_progressLabel",
2158
+ "input": "_367UGW_input",
2159
+ "categoryDesc": "_367UGW_categoryDesc",
2160
+ "progressBar": "_367UGW_progressBar",
2161
+ "viewTabs": "_367UGW_viewTabs",
2162
+ "pathRow": "_367UGW_pathRow",
2163
+ "badgeOk": "_367UGW_badgeOk",
2164
+ "hint": "_367UGW_hint",
2165
+ "formError": "_367UGW_formError",
2166
+ "progressDetail": "_367UGW_progressDetail",
2167
+ "progressTrack": "_367UGW_progressTrack",
2168
+ "select": "_367UGW_select",
2169
+ "errorList": "_367UGW_errorList",
2170
+ "ghostButton": "_367UGW_ghostButton",
2171
+ "conflictHead": "_367UGW_conflictHead",
2172
+ "errorActionLabel": "_367UGW_errorActionLabel",
2173
+ "modeHint": "_367UGW_modeHint",
2174
+ "progressBadgeSection": "_367UGW_progressBadgeSection",
2175
+ "modeTabs": "_367UGW_modeTabs",
2176
+ "progressPercent": "_367UGW_progressPercent",
2177
+ "secretFields": "_367UGW_secretFields",
2178
+ "pathValue": "_367UGW_pathValue",
2179
+ "planScroll": "_367UGW_planScroll"
2179
2180
  };
2180
2181
  //#endregion
2181
2182
  //#region src/client/common/ui.tsx
@@ -4319,6 +4320,28 @@ function summarizeConfirmItems(items) {
4319
4320
  needsReview
4320
4321
  };
4321
4322
  }
4323
+ /**
4324
+ * 收集用户逐项决策 → apply-items 请求体 adoptions[]。
4325
+ * 仅包含 adopt=true 的项;Conflict 项 adopt=true 且未给 resolution → 抛错(强制先解决)。
4326
+ * 与导入恢复向导一致:只提供「保留当前 / 使用导入」两项,跳过 = 取消勾选(adopt=false)。
4327
+ */
4328
+ function buildAdoptions(items, adopted, resolutions) {
4329
+ const out = [];
4330
+ for (const it of items) {
4331
+ if (adopted.get(it.itemId) !== true) continue;
4332
+ const adoption = {
4333
+ itemId: it.itemId,
4334
+ adopt: true
4335
+ };
4336
+ if (it.kind === "Conflict") {
4337
+ const resolution = resolutions.get(it.itemId);
4338
+ if (resolution === void 0) throw new Error(`冲突项 ${it.itemId} 必须先选择解决方式(保留当前 / 使用导入)`);
4339
+ adoption.resolution = resolution;
4340
+ }
4341
+ out.push(adoption);
4342
+ }
4343
+ return out;
4344
+ }
4322
4345
  /** AutosyncInterval → ms。 */
4323
4346
  function autosyncIntervalMs(interval) {
4324
4347
  switch (interval) {
@@ -4624,15 +4647,12 @@ function SyncConfirmView(props) {
4624
4647
  try {
4625
4648
  const adoptedMap = /* @__PURE__ */ new Map();
4626
4649
  for (const it of items) adoptedMap.set(it.itemId, states[it.itemId]?.adopted ?? false);
4627
- const adoptions = items.filter((it) => adoptedMap.get(it.itemId) === true).map((it) => {
4628
- const adoption = {
4629
- itemId: it.itemId,
4630
- adopt: true
4631
- };
4650
+ const resolutions = /* @__PURE__ */ new Map();
4651
+ for (const it of items) {
4632
4652
  const res = states[it.itemId]?.resolution;
4633
- if (it.kind === "Conflict" && res !== void 0 && res !== "skip") adoption.resolution = res;
4634
- return adoption;
4635
- });
4653
+ if (res !== void 0) resolutions.set(it.itemId, res);
4654
+ }
4655
+ const adoptions = buildAdoptions(items, adoptedMap, resolutions);
4636
4656
  const result = await api.applyItems({
4637
4657
  syncSessionId,
4638
4658
  adoptions
@@ -4835,36 +4855,19 @@ function SyncConfirmView(props) {
4835
4855
  }
4836
4856
  function ConflictResolver({ item, resolution, busy, t, onResolve }) {
4837
4857
  const conflict = item.conflict;
4838
- return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("span", {
4839
- className: config_manager_module_css_default.rowActions,
4858
+ const options = [{
4859
+ value: "keepLocal",
4860
+ label: t("syncflow.conflictUseLocal")
4861
+ }, {
4862
+ value: "useRemote",
4863
+ label: t("syncflow.conflictUseRemote")
4864
+ }];
4865
+ return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
4866
+ className: config_manager_module_css_default.conflictItem,
4840
4867
  children: [
4841
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
4842
- className: config_manager_module_css_default.fieldLabel,
4843
- children: t("syncflow.conflictTitle")
4844
- }),
4845
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Button, {
4846
- variant: "ghost",
4847
- disabled: busy || resolution === "keepLocal",
4848
- onClick: () => {
4849
- onResolve("keepLocal");
4850
- },
4851
- children: resolution === "keepLocal" ? `✓ ${t("syncflow.conflictUseLocal")}` : t("syncflow.conflictUseLocal")
4852
- }),
4853
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Button, {
4854
- variant: "primary",
4855
- disabled: busy || resolution === "useRemote",
4856
- onClick: () => {
4857
- onResolve("useRemote");
4858
- },
4859
- children: resolution === "useRemote" ? `✓ ${t("syncflow.conflictUseRemote")}` : t("syncflow.conflictUseRemote")
4860
- }),
4861
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Button, {
4862
- variant: "ghost",
4863
- disabled: busy || resolution === "skip",
4864
- onClick: () => {
4865
- onResolve("skip");
4866
- },
4867
- children: resolution === "skip" ? `✓ ${t("syncflow.conflictSkip")}` : t("syncflow.conflictSkip")
4868
+ item.detail !== void 0 && item.detail !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)("pre", {
4869
+ className: config_manager_module_css_default.conflictDetail,
4870
+ children: item.detail
4868
4871
  }),
4869
4872
  conflict?.diff !== void 0 && /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("details", {
4870
4873
  className: config_manager_module_css_default.conflictDetail,
@@ -4872,6 +4875,21 @@ function ConflictResolver({ item, resolution, busy, t, onResolve }) {
4872
4875
  className: config_manager_module_css_default.diffScroll,
4873
4876
  children: conflict.diff
4874
4877
  })]
4878
+ }),
4879
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
4880
+ className: config_manager_module_css_default.conflictOptions,
4881
+ children: options.map((opt) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
4882
+ className: config_manager_module_css_default.radioLabel,
4883
+ children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
4884
+ type: "radio",
4885
+ name: `sync-conflict-${item.itemId}`,
4886
+ checked: resolution === opt.value,
4887
+ disabled: busy,
4888
+ onChange: () => {
4889
+ onResolve(opt.value);
4890
+ }
4891
+ }), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: opt.label })]
4892
+ }, opt.value))
4875
4893
  })
4876
4894
  ]
4877
4895
  });
@@ -5570,21 +5588,24 @@ function SyncSettingsView({ api, t }) {
5570
5588
  children: t("pull.needsReview")
5571
5589
  }),
5572
5590
  /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
5573
- className: config_manager_module_css_default.reportList,
5574
- children: pullView.summary.items.map((c) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5575
- className: config_manager_module_css_default.statRow,
5576
- children: [
5577
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5578
- className: config_manager_module_css_default.kindTag,
5579
- children: kindLabel(c.kind, uiT)
5580
- }),
5581
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Badge, {
5582
- kind: c.severity === "error" ? "error" : c.severity === "warning" ? "warn" : "info",
5583
- children: severityLabel(c.severity, uiT)
5584
- }),
5585
- /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: c.description })
5586
- ]
5587
- }, c.id))
5591
+ className: config_manager_module_css_default.pullScroll,
5592
+ children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
5593
+ className: config_manager_module_css_default.reportList,
5594
+ children: pullView.summary.items.map((c) => /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
5595
+ className: config_manager_module_css_default.statRow,
5596
+ children: [
5597
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
5598
+ className: config_manager_module_css_default.kindTag,
5599
+ children: kindLabel(c.kind, uiT)
5600
+ }),
5601
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Badge, {
5602
+ kind: c.severity === "error" ? "error" : c.severity === "warning" ? "warn" : "info",
5603
+ children: severityLabel(c.severity, uiT)
5604
+ }),
5605
+ /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: c.description })
5606
+ ]
5607
+ }, c.id))
5608
+ })
5588
5609
  })
5589
5610
  ] }),
5590
5611
  pullView.previewHint !== "" && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Banner, {
@@ -6068,17 +6089,16 @@ const zh = {
6068
6089
  "syncflow.needsReviewBadge": "需人工决策",
6069
6090
  "syncflow.empty": "远端快照与本地一致(无变更)",
6070
6091
  "syncflow.diffCount": "共 {count} 项差异",
6071
- "syncflow.keepLocalAll": "全部保留本地",
6072
- "syncflow.useRemoteAll": "全部采用远端",
6092
+ "syncflow.keepLocalAll": "全部保留当前配置",
6093
+ "syncflow.useRemoteAll": "全部使用备份配置",
6073
6094
  "syncflow.bulkHint": "批量决策仅作用于冲突项;其余差异默认自动采用。",
6074
6095
  "syncflow.conflictTitle": "冲突解决",
6075
- "syncflow.conflictUseLocal": "用本地",
6076
- "syncflow.conflictUseRemote": "用远端",
6077
- "syncflow.conflictSkip": "跳过",
6078
- "syncflow.conflictLocalLabel": "本地",
6079
- "syncflow.conflictRemoteLabel": "远端",
6096
+ "syncflow.conflictUseLocal": "保留当前",
6097
+ "syncflow.conflictUseRemote": "使用备份",
6098
+ "syncflow.conflictLocalLabel": "当前",
6099
+ "syncflow.conflictRemoteLabel": "备份",
6080
6100
  "syncflow.conflictAncestorLabel": "共同祖先",
6081
- "syncflow.conflictUnresolved": "冲突项 {itemId} 尚未选择解决方式(用本地 / 用远端 / 跳过)",
6101
+ "syncflow.conflictUnresolved": "冲突项 {itemId} 尚未选择解决方式(保留当前 / 使用备份)",
6082
6102
  "syncflow.diff": "差异",
6083
6103
  "syncflow.importDone": "已导入 {n} 个分区",
6084
6104
  "syncflow.importFailed": "导入失败(已整体回滚)",
@@ -6188,17 +6208,16 @@ const en = {
6188
6208
  "syncflow.needsReviewBadge": "Needs decision",
6189
6209
  "syncflow.empty": "Remote snapshot matches local (no changes)",
6190
6210
  "syncflow.diffCount": "{count} change(s)",
6191
- "syncflow.keepLocalAll": "Keep all local",
6192
- "syncflow.useRemoteAll": "Adopt all remote",
6211
+ "syncflow.keepLocalAll": "Keep all current",
6212
+ "syncflow.useRemoteAll": "Use all backup",
6193
6213
  "syncflow.bulkHint": "Bulk decisions only apply to conflict items; other changes are adopted by default.",
6194
6214
  "syncflow.conflictTitle": "Resolve conflict",
6195
- "syncflow.conflictUseLocal": "Use local",
6196
- "syncflow.conflictUseRemote": "Use remote",
6197
- "syncflow.conflictSkip": "Skip",
6198
- "syncflow.conflictLocalLabel": "Local",
6199
- "syncflow.conflictRemoteLabel": "Remote",
6215
+ "syncflow.conflictUseLocal": "Keep current",
6216
+ "syncflow.conflictUseRemote": "Use backup",
6217
+ "syncflow.conflictLocalLabel": "Current",
6218
+ "syncflow.conflictRemoteLabel": "Backup",
6200
6219
  "syncflow.conflictAncestorLabel": "Common ancestor",
6201
- "syncflow.conflictUnresolved": "Conflict item {itemId} has no resolution yet (use local / use remote / skip)",
6220
+ "syncflow.conflictUnresolved": "Conflict item {itemId} has no resolution yet (keep current / use backup)",
6202
6221
  "syncflow.diff": "Diff",
6203
6222
  "syncflow.importDone": "Imported {n} section(s)",
6204
6223
  "syncflow.importFailed": "Import failed (rolled back)",