dsh-config-manager 0.1.21 → 0.1.23
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 +5 -0
- package/lib/client.js +243 -119
- package/lib/client.js.map +1 -1
- package/lib/core/messages.d.ts +2 -0
- package/lib/core/messages.js +4 -0
- package/lib/core/messages.js.map +1 -1
- package/lib/index.js +12 -13
- package/lib/index.js.map +1 -1
- package/lib/sync/sync-engine.d.ts +15 -0
- package/lib/sync/sync-engine.js +45 -0
- package/lib/sync/sync-engine.js.map +1 -1
- package/package.json +1 -1
- package/src/client/config-manager.module.css +60 -0
- package/src/client/import/ConflictList.tsx +33 -1
- package/src/client/locales.ts +4 -0
- package/src/client/sync/SyncConfirmView.tsx +62 -33
- package/src/client/sync/SyncSettingsView.tsx +16 -4
- package/src/client/sync/sync-locales.ts +7 -1
- package/src/client/sync/sync-view-v2.test.ts +54 -1
- package/src/client/sync/sync-view.ts +44 -0
- package/src/core/messages.ts +4 -0
- package/src/index.ts +11 -12
- package/src/sync/git/git-transport.test.ts +39 -0
- package/src/sync/sync-engine.test.ts +121 -1
- package/src/sync/sync-engine.ts +43 -0
- package/src/ui/conflict-view.test.ts +16 -0
package/lib/client.d.ts
CHANGED
|
@@ -959,6 +959,8 @@ declare const zh$1: {
|
|
|
959
959
|
readonly 'import.conflicts.useImported': "使用备份";
|
|
960
960
|
readonly 'import.conflicts.review': "稍后决定";
|
|
961
961
|
readonly 'import.conflicts.unresolved': "还有 {count} 项未决策";
|
|
962
|
+
readonly 'import.conflicts.keepCurrentAll': "全部保留当前配置";
|
|
963
|
+
readonly 'import.conflicts.useImportedAll': "全部使用备份配置";
|
|
962
964
|
readonly 'import.paths.title': "路径映射";
|
|
963
965
|
readonly 'import.paths.hint': "备份中的绝对路径在目标机器可能不存在,请为每条路径指定新位置(留空将跳过该路径)。";
|
|
964
966
|
readonly 'import.paths.old': "原路径";
|
|
@@ -1058,6 +1060,9 @@ declare const zh: {
|
|
|
1058
1060
|
readonly 'syncflow.needsReviewBadge': "需人工决策";
|
|
1059
1061
|
readonly 'syncflow.empty': "远端快照与本地一致(无变更)";
|
|
1060
1062
|
readonly 'syncflow.diffCount': "共 {count} 项差异";
|
|
1063
|
+
readonly 'syncflow.keepLocalAll': "全部保留本地";
|
|
1064
|
+
readonly 'syncflow.useRemoteAll': "全部采用远端";
|
|
1065
|
+
readonly 'syncflow.bulkHint': "批量决策仅作用于冲突项;其余差异默认自动采用。";
|
|
1061
1066
|
readonly 'syncflow.conflictTitle': "冲突解决";
|
|
1062
1067
|
readonly 'syncflow.conflictUseLocal': "用本地";
|
|
1063
1068
|
readonly 'syncflow.conflictUseRemote': "用远端";
|
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_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_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_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,105 +2075,107 @@ 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
|
-
"
|
|
2078
|
+
"errorFooter": "_367UGW_errorFooter",
|
|
2079
2079
|
"warnText": "_367UGW_warnText",
|
|
2080
|
+
"planScroll": "_367UGW_planScroll",
|
|
2080
2081
|
"rowActions": "_367UGW_rowActions",
|
|
2081
|
-
"
|
|
2082
|
-
"
|
|
2083
|
-
"
|
|
2084
|
-
"
|
|
2085
|
-
"
|
|
2086
|
-
"
|
|
2087
|
-
"
|
|
2088
|
-
"
|
|
2089
|
-
"
|
|
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",
|
|
2090
2096
|
"categoryDesc": "_367UGW_categoryDesc",
|
|
2091
|
-
"
|
|
2097
|
+
"reportList": "_367UGW_reportList",
|
|
2098
|
+
"statRow": "_367UGW_statRow",
|
|
2099
|
+
"progressMeta": "_367UGW_progressMeta",
|
|
2092
2100
|
"progressBarDone": "_367UGW_progressBarDone",
|
|
2093
|
-
"
|
|
2094
|
-
"reportView": "_367UGW_reportView",
|
|
2101
|
+
"secretsList": "_367UGW_secretsList",
|
|
2095
2102
|
"snapshotRow": "_367UGW_snapshotRow",
|
|
2096
|
-
"
|
|
2097
|
-
"
|
|
2103
|
+
"confirmScroll": "_367UGW_confirmScroll",
|
|
2104
|
+
"errorBanner": "_367UGW_errorBanner",
|
|
2105
|
+
"secretFields": "_367UGW_secretFields",
|
|
2106
|
+
"categoryName": "_367UGW_categoryName",
|
|
2098
2107
|
"errorLine": "_367UGW_errorLine",
|
|
2099
|
-
"
|
|
2100
|
-
"radioLabel": "_367UGW_radioLabel",
|
|
2101
|
-
"progressMeta": "_367UGW_progressMeta",
|
|
2102
|
-
"groupItems": "_367UGW_groupItems",
|
|
2103
|
-
"pathMappingList": "_367UGW_pathMappingList",
|
|
2104
|
-
"sectionTitle": "_367UGW_sectionTitle",
|
|
2105
|
-
"pathNew": "_367UGW_pathNew",
|
|
2106
|
-
"reportList": "_367UGW_reportList",
|
|
2107
|
-
"dangerButton": "_367UGW_dangerButton",
|
|
2108
|
-
"errorReason": "_367UGW_errorReason",
|
|
2109
|
-
"viewTab": "_367UGW_viewTab",
|
|
2110
|
-
"conflictItem": "_367UGW_conflictItem",
|
|
2111
|
-
"diffScroll": "_367UGW_diffScroll",
|
|
2108
|
+
"conflictHead": "_367UGW_conflictHead",
|
|
2112
2109
|
"progressBadgeCount": "_367UGW_progressBadgeCount",
|
|
2113
|
-
"
|
|
2114
|
-
"
|
|
2115
|
-
"primaryButton": "_367UGW_primaryButton",
|
|
2116
|
-
"conflictOptions": "_367UGW_conflictOptions",
|
|
2117
|
-
"pathRow": "_367UGW_pathRow",
|
|
2118
|
-
"sectionBody": "_367UGW_sectionBody",
|
|
2119
|
-
"secretFields": "_367UGW_secretFields",
|
|
2120
|
-
"optionsCard": "_367UGW_optionsCard",
|
|
2121
|
-
"statRow": "_367UGW_statRow",
|
|
2122
|
-
"rollbackBox": "_367UGW_rollbackBox",
|
|
2123
|
-
"badgeOk": "_367UGW_badgeOk",
|
|
2124
|
-
"progressBar": "_367UGW_progressBar",
|
|
2125
|
-
"progressLabel": "_367UGW_progressLabel",
|
|
2110
|
+
"snapshotRowHeader": "_367UGW_snapshotRowHeader",
|
|
2111
|
+
"badgeWarn": "_367UGW_badgeWarn",
|
|
2126
2112
|
"badge": "_367UGW_badge",
|
|
2127
|
-
"
|
|
2128
|
-
"badgeInfo": "_367UGW_badgeInfo",
|
|
2129
|
-
"errorItem": "_367UGW_errorItem",
|
|
2130
|
-
"conflictHead": "_367UGW_conflictHead",
|
|
2131
|
-
"severityError": "_367UGW_severityError",
|
|
2132
|
-
"fieldLabel": "_367UGW_fieldLabel",
|
|
2113
|
+
"badgeError": "_367UGW_badgeError",
|
|
2133
2114
|
"actionRow": "_367UGW_actionRow",
|
|
2134
|
-
"
|
|
2135
|
-
"
|
|
2136
|
-
"spinner": "_367UGW_spinner",
|
|
2137
|
-
"kindTag": "_367UGW_kindTag",
|
|
2138
|
-
"spinnerLabel": "_367UGW_spinnerLabel",
|
|
2139
|
-
"input": "_367UGW_input",
|
|
2140
|
-
"errorActionLabel": "_367UGW_errorActionLabel",
|
|
2141
|
-
"planScroll": "_367UGW_planScroll",
|
|
2142
|
-
"errorList": "_367UGW_errorList",
|
|
2143
|
-
"progressDetail": "_367UGW_progressDetail",
|
|
2115
|
+
"dshCmSpin": "_367UGW_dshCmSpin",
|
|
2116
|
+
"groupLabel": "_367UGW_groupLabel",
|
|
2144
2117
|
"snapshotList": "_367UGW_snapshotList",
|
|
2145
|
-
"
|
|
2146
|
-
"
|
|
2147
|
-
"
|
|
2148
|
-
"
|
|
2149
|
-
"
|
|
2150
|
-
"
|
|
2151
|
-
"
|
|
2152
|
-
"
|
|
2153
|
-
"
|
|
2154
|
-
"
|
|
2155
|
-
"
|
|
2156
|
-
"checkboxRow": "_367UGW_checkboxRow",
|
|
2157
|
-
"reportText": "_367UGW_reportText",
|
|
2158
|
-
"errorFooter": "_367UGW_errorFooter",
|
|
2159
|
-
"hiddenFile": "_367UGW_hiddenFile",
|
|
2160
|
-
"conflictList": "_367UGW_conflictList",
|
|
2118
|
+
"warnList": "_367UGW_warnList",
|
|
2119
|
+
"progressDetail": "_367UGW_progressDetail",
|
|
2120
|
+
"groupNote": "_367UGW_groupNote",
|
|
2121
|
+
"rollbackBox": "_367UGW_rollbackBox",
|
|
2122
|
+
"conflictOptions": "_367UGW_conflictOptions",
|
|
2123
|
+
"diffScroll": "_367UGW_diffScroll",
|
|
2124
|
+
"spinnerWrap": "_367UGW_spinnerWrap",
|
|
2125
|
+
"pathMappingList": "_367UGW_pathMappingList",
|
|
2126
|
+
"dshCmIndeterminate": "_367UGW_dshCmIndeterminate",
|
|
2127
|
+
"input": "_367UGW_input",
|
|
2128
|
+
"fieldLabel": "_367UGW_fieldLabel",
|
|
2161
2129
|
"errorTitle": "_367UGW_errorTitle",
|
|
2162
2130
|
"conflictId": "_367UGW_conflictId",
|
|
2131
|
+
"modeTabs": "_367UGW_modeTabs",
|
|
2132
|
+
"groupItems": "_367UGW_groupItems",
|
|
2133
|
+
"sectionTitleBlock": "_367UGW_sectionTitleBlock",
|
|
2134
|
+
"optionsCard": "_367UGW_optionsCard",
|
|
2163
2135
|
"reportFooter": "_367UGW_reportFooter",
|
|
2164
|
-
"
|
|
2165
|
-
"
|
|
2136
|
+
"progressLabel": "_367UGW_progressLabel",
|
|
2137
|
+
"conflictItem": "_367UGW_conflictItem",
|
|
2138
|
+
"errorList": "_367UGW_errorList",
|
|
2166
2139
|
"section": "_367UGW_section",
|
|
2140
|
+
"progressIndeterminate": "_367UGW_progressIndeterminate",
|
|
2141
|
+
"field": "_367UGW_field",
|
|
2142
|
+
"viewTab": "_367UGW_viewTab",
|
|
2143
|
+
"progressBlock": "_367UGW_progressBlock",
|
|
2144
|
+
"errorAction": "_367UGW_errorAction",
|
|
2145
|
+
"pathNew": "_367UGW_pathNew",
|
|
2146
|
+
"kindTag": "_367UGW_kindTag",
|
|
2147
|
+
"errorReason": "_367UGW_errorReason",
|
|
2148
|
+
"conflictList": "_367UGW_conflictList",
|
|
2149
|
+
"progressPercent": "_367UGW_progressPercent",
|
|
2150
|
+
"radioLabel": "_367UGW_radioLabel",
|
|
2151
|
+
"reportText": "_367UGW_reportText",
|
|
2167
2152
|
"reportScroll": "_367UGW_reportScroll",
|
|
2168
|
-
"
|
|
2169
|
-
"
|
|
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",
|
|
2170
2161
|
"progressBadgeSection": "_367UGW_progressBadgeSection",
|
|
2162
|
+
"modeHint": "_367UGW_modeHint",
|
|
2163
|
+
"conflictDetail": "_367UGW_conflictDetail",
|
|
2164
|
+
"progressTrack": "_367UGW_progressTrack",
|
|
2165
|
+
"sectionHeader": "_367UGW_sectionHeader",
|
|
2166
|
+
"severityError": "_367UGW_severityError",
|
|
2167
|
+
"viewBody": "_367UGW_viewBody",
|
|
2168
|
+
"badgeInfo": "_367UGW_badgeInfo",
|
|
2169
|
+
"pathIssueKind": "_367UGW_pathIssueKind",
|
|
2170
|
+
"hiddenFile": "_367UGW_hiddenFile",
|
|
2171
|
+
"spinnerLabel": "_367UGW_spinnerLabel",
|
|
2172
|
+
"categoryItem": "_367UGW_categoryItem",
|
|
2173
|
+
"modeTab": "_367UGW_modeTab",
|
|
2174
|
+
"ghostButton": "_367UGW_ghostButton",
|
|
2175
|
+
"badgeOk": "_367UGW_badgeOk",
|
|
2171
2176
|
"groupList": "_367UGW_groupList",
|
|
2172
|
-
"groupCard": "_367UGW_groupCard",
|
|
2173
2177
|
"groupHeader": "_367UGW_groupHeader",
|
|
2174
|
-
"
|
|
2175
|
-
"dshCmSpin": "_367UGW_dshCmSpin",
|
|
2176
|
-
"progressBlock": "_367UGW_progressBlock"
|
|
2178
|
+
"progressBadge": "_367UGW_progressBadge"
|
|
2177
2179
|
};
|
|
2178
2180
|
//#endregion
|
|
2179
2181
|
//#region src/client/common/ui.tsx
|
|
@@ -2863,11 +2865,18 @@ const RESOLUTION_OPTIONS = [{
|
|
|
2863
2865
|
value: "useImported",
|
|
2864
2866
|
key: "import.conflicts.useImported"
|
|
2865
2867
|
}];
|
|
2868
|
+
/** 批量决策全部冲突项(keepCurrent / useImported),与逐项逻辑一致地更新 tick + onChanged */
|
|
2869
|
+
function resolveAll(collector, resolution, setTick, onChanged) {
|
|
2870
|
+
for (const item of collector.conflicts) collector.resolve(item.id, resolution);
|
|
2871
|
+
setTick((v) => v + 1);
|
|
2872
|
+
onChanged();
|
|
2873
|
+
}
|
|
2866
2874
|
/** 冲突项决策列表 */
|
|
2867
2875
|
function ConflictList({ collector, t, onChanged }) {
|
|
2868
2876
|
const [tick, setTick] = (0, react.useState)(0);
|
|
2869
2877
|
const items = collector.viewItems();
|
|
2870
2878
|
const unresolved = collector.unresolved().length;
|
|
2879
|
+
const hasConflicts = items.length > 0;
|
|
2871
2880
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
2872
2881
|
className: config_manager_module_css_default.conflictList,
|
|
2873
2882
|
children: [
|
|
@@ -2875,6 +2884,24 @@ function ConflictList({ collector, t, onChanged }) {
|
|
|
2875
2884
|
kind: "warn",
|
|
2876
2885
|
children: t("import.conflicts.unresolved", { count: String(unresolved) })
|
|
2877
2886
|
}),
|
|
2887
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
2888
|
+
className: config_manager_module_css_default.actionRow,
|
|
2889
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Button, {
|
|
2890
|
+
variant: "ghost",
|
|
2891
|
+
disabled: !hasConflicts,
|
|
2892
|
+
onClick: () => {
|
|
2893
|
+
resolveAll(collector, "keepCurrent", setTick, onChanged);
|
|
2894
|
+
},
|
|
2895
|
+
children: t("import.conflicts.keepCurrentAll")
|
|
2896
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Button, {
|
|
2897
|
+
variant: "primary",
|
|
2898
|
+
disabled: !hasConflicts,
|
|
2899
|
+
onClick: () => {
|
|
2900
|
+
resolveAll(collector, "useImported", setTick, onChanged);
|
|
2901
|
+
},
|
|
2902
|
+
children: t("import.conflicts.useImportedAll")
|
|
2903
|
+
})]
|
|
2904
|
+
}),
|
|
2878
2905
|
items.map((view) => {
|
|
2879
2906
|
const item = view.item;
|
|
2880
2907
|
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
@@ -4240,6 +4267,35 @@ const CONFIRM_REVIEW_KINDS = /* @__PURE__ */ new Set([
|
|
|
4240
4267
|
"Error",
|
|
4241
4268
|
"PathMapping"
|
|
4242
4269
|
]);
|
|
4270
|
+
/**
|
|
4271
|
+
* 仅保留需人工决策的项(差异确认列表只渲染这些)。
|
|
4272
|
+
* 统计(summarizeConfirmItems)仍基于全量 items,不受影响。
|
|
4273
|
+
*/
|
|
4274
|
+
function reviewItems(items) {
|
|
4275
|
+
return items.filter((it) => CONFIRM_REVIEW_KINDS.has(it.kind));
|
|
4276
|
+
}
|
|
4277
|
+
/**
|
|
4278
|
+
* 「全部保留本地」:所有 Conflict 项 → resolution=keepLocal、adopt=false。
|
|
4279
|
+
* 仅作用于 Conflict 项,非 Conflict 项的 adopt 保持默认。
|
|
4280
|
+
*/
|
|
4281
|
+
function keepLocalAll(items) {
|
|
4282
|
+
return items.filter((it) => it.kind === "Conflict").map((it) => ({
|
|
4283
|
+
itemId: it.itemId,
|
|
4284
|
+
resolution: "keepLocal",
|
|
4285
|
+
adopt: false
|
|
4286
|
+
}));
|
|
4287
|
+
}
|
|
4288
|
+
/**
|
|
4289
|
+
* 「全部采用远端」:所有 Conflict 项 → resolution=useRemote、adopt=true。
|
|
4290
|
+
* 仅作用于 Conflict 项,非 Conflict 项的 adopt 保持默认。
|
|
4291
|
+
*/
|
|
4292
|
+
function useRemoteAll(items) {
|
|
4293
|
+
return items.filter((it) => it.kind === "Conflict").map((it) => ({
|
|
4294
|
+
itemId: it.itemId,
|
|
4295
|
+
resolution: "useRemote",
|
|
4296
|
+
adopt: true
|
|
4297
|
+
}));
|
|
4298
|
+
}
|
|
4243
4299
|
/** 差异确认列表摘要(按 severity 计数 + 采用数 + needsReview 徽章数据源)。 */
|
|
4244
4300
|
function summarizeConfirmItems(items) {
|
|
4245
4301
|
let info = 0;
|
|
@@ -4514,6 +4570,7 @@ function SyncConfirmView(props) {
|
|
|
4514
4570
|
...it,
|
|
4515
4571
|
adopt: states[it.itemId]?.adopted ?? it.defaultAdopt
|
|
4516
4572
|
}))), [items, states]);
|
|
4573
|
+
const displayItems = (0, react.useMemo)(() => reviewItems(items), [items]);
|
|
4517
4574
|
const setAdopted = (itemId, adopted) => {
|
|
4518
4575
|
setStates((prev) => ({
|
|
4519
4576
|
...prev,
|
|
@@ -4538,6 +4595,24 @@ function SyncConfirmView(props) {
|
|
|
4538
4595
|
};
|
|
4539
4596
|
});
|
|
4540
4597
|
};
|
|
4598
|
+
const applyBulkDecision = (decisions) => {
|
|
4599
|
+
if (decisions.length === 0) return;
|
|
4600
|
+
setStates((prev) => {
|
|
4601
|
+
const next = { ...prev };
|
|
4602
|
+
for (const d of decisions) {
|
|
4603
|
+
const existing = prev[d.itemId] ?? {
|
|
4604
|
+
adopted: false,
|
|
4605
|
+
resolution: void 0
|
|
4606
|
+
};
|
|
4607
|
+
next[d.itemId] = {
|
|
4608
|
+
...existing,
|
|
4609
|
+
resolution: d.resolution,
|
|
4610
|
+
adopted: d.adopt
|
|
4611
|
+
};
|
|
4612
|
+
}
|
|
4613
|
+
return next;
|
|
4614
|
+
});
|
|
4615
|
+
};
|
|
4541
4616
|
const runApply = async () => {
|
|
4542
4617
|
const unresolved = items.find((it) => it.kind === "Conflict" && states[it.itemId]?.adopted === true && states[it.itemId]?.resolution === void 0);
|
|
4543
4618
|
if (unresolved !== void 0) {
|
|
@@ -4660,41 +4735,69 @@ function SyncConfirmView(props) {
|
|
|
4660
4735
|
className: config_manager_module_css_default.hint,
|
|
4661
4736
|
children: t("syncflow.adoptHint")
|
|
4662
4737
|
}),
|
|
4738
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
4739
|
+
className: config_manager_module_css_default.actionRow,
|
|
4740
|
+
children: [
|
|
4741
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Button, {
|
|
4742
|
+
variant: "ghost",
|
|
4743
|
+
disabled: busy || displayItems.filter((it) => it.kind === "Conflict").length === 0,
|
|
4744
|
+
onClick: () => {
|
|
4745
|
+
applyBulkDecision(keepLocalAll(items));
|
|
4746
|
+
},
|
|
4747
|
+
children: t("syncflow.keepLocalAll")
|
|
4748
|
+
}),
|
|
4749
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Button, {
|
|
4750
|
+
variant: "primary",
|
|
4751
|
+
disabled: busy || displayItems.filter((it) => it.kind === "Conflict").length === 0,
|
|
4752
|
+
onClick: () => {
|
|
4753
|
+
applyBulkDecision(useRemoteAll(items));
|
|
4754
|
+
},
|
|
4755
|
+
children: t("syncflow.useRemoteAll")
|
|
4756
|
+
}),
|
|
4757
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", {
|
|
4758
|
+
className: config_manager_module_css_default.hint,
|
|
4759
|
+
children: t("syncflow.bulkHint")
|
|
4760
|
+
})
|
|
4761
|
+
]
|
|
4762
|
+
}),
|
|
4663
4763
|
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
4664
|
-
className: config_manager_module_css_default.
|
|
4665
|
-
children:
|
|
4666
|
-
|
|
4667
|
-
|
|
4668
|
-
|
|
4669
|
-
|
|
4670
|
-
|
|
4671
|
-
|
|
4672
|
-
|
|
4673
|
-
|
|
4674
|
-
|
|
4675
|
-
|
|
4676
|
-
|
|
4677
|
-
|
|
4678
|
-
|
|
4764
|
+
className: config_manager_module_css_default.confirmScroll,
|
|
4765
|
+
children: /* @__PURE__ */ (0, react_jsx_runtime.jsx)("div", {
|
|
4766
|
+
className: config_manager_module_css_default.reportList,
|
|
4767
|
+
children: displayItems.map((it) => {
|
|
4768
|
+
const st = states[it.itemId] ?? { adopted: it.defaultAdopt };
|
|
4769
|
+
const isConflict = it.kind === "Conflict";
|
|
4770
|
+
return /* @__PURE__ */ (0, react_jsx_runtime.jsxs)("div", {
|
|
4771
|
+
className: config_manager_module_css_default.statRow,
|
|
4772
|
+
children: [
|
|
4773
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("label", {
|
|
4774
|
+
className: config_manager_module_css_default.checkboxRow,
|
|
4775
|
+
children: [/* @__PURE__ */ (0, react_jsx_runtime.jsx)("input", {
|
|
4776
|
+
type: "checkbox",
|
|
4777
|
+
checked: st.adopted,
|
|
4778
|
+
disabled: busy,
|
|
4779
|
+
onChange: (e) => {
|
|
4780
|
+
setAdopted(it.itemId, e.target.checked);
|
|
4781
|
+
}
|
|
4782
|
+
}), /* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: kindLabel(it.kind, api.t) })]
|
|
4783
|
+
}),
|
|
4784
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)(Badge, {
|
|
4785
|
+
kind: it.severity === "error" ? "error" : it.severity === "warning" ? "warn" : "info",
|
|
4786
|
+
children: severityLabel(it.severity, api.t)
|
|
4787
|
+
}),
|
|
4788
|
+
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: it.description }),
|
|
4789
|
+
isConflict && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ConflictResolver, {
|
|
4790
|
+
item: it,
|
|
4791
|
+
resolution: st.resolution,
|
|
4792
|
+
busy,
|
|
4793
|
+
t,
|
|
4794
|
+
onResolve: (r) => {
|
|
4795
|
+
setResolution(it.itemId, r);
|
|
4679
4796
|
}
|
|
4680
|
-
})
|
|
4681
|
-
|
|
4682
|
-
|
|
4683
|
-
|
|
4684
|
-
children: severityLabel(it.severity, api.t)
|
|
4685
|
-
}),
|
|
4686
|
-
/* @__PURE__ */ (0, react_jsx_runtime.jsx)("span", { children: it.description }),
|
|
4687
|
-
isConflict && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(ConflictResolver, {
|
|
4688
|
-
item: it,
|
|
4689
|
-
resolution: st.resolution,
|
|
4690
|
-
busy,
|
|
4691
|
-
t,
|
|
4692
|
-
onResolve: (r) => {
|
|
4693
|
-
setResolution(it.itemId, r);
|
|
4694
|
-
}
|
|
4695
|
-
})
|
|
4696
|
-
]
|
|
4697
|
-
}, it.itemId);
|
|
4797
|
+
})
|
|
4798
|
+
]
|
|
4799
|
+
}, it.itemId);
|
|
4800
|
+
})
|
|
4698
4801
|
})
|
|
4699
4802
|
}),
|
|
4700
4803
|
error !== null && /* @__PURE__ */ (0, react_jsx_runtime.jsx)(Banner, {
|
|
@@ -4905,6 +5008,7 @@ function SyncSettingsView({ api, t }) {
|
|
|
4905
5008
|
} : {}
|
|
4906
5009
|
});
|
|
4907
5010
|
if (info.autosync === void 0) loadAutosync();
|
|
5011
|
+
if (info.configured && (info.repoUrl ?? "").trim() !== "") loadSnapshots(info.repoUrl);
|
|
4908
5012
|
} catch (err) {
|
|
4909
5013
|
patch({
|
|
4910
5014
|
loading: false,
|
|
@@ -4925,10 +5029,20 @@ function SyncSettingsView({ api, t }) {
|
|
|
4925
5029
|
patch({ error: err instanceof Error ? err.message : String(err) });
|
|
4926
5030
|
}
|
|
4927
5031
|
};
|
|
4928
|
-
/**
|
|
4929
|
-
|
|
5032
|
+
/**
|
|
5033
|
+
* 读取远端历史快照列表(「选择历史快照」下拉数据源)。
|
|
5034
|
+
* repoUrlOverride:挂载时仓库地址刚从 status 回填、state.repoUrl 尚未生效,
|
|
5035
|
+
* 直接传 info.repoUrl 避免竞态读旧值;缺省读 state.repoUrl(同步成功后的刷新路径)。
|
|
5036
|
+
* 无仓库地址时静默跳过(不发无效请求,下拉留空)。
|
|
5037
|
+
*/
|
|
5038
|
+
const loadSnapshots = async (repoUrlOverride) => {
|
|
5039
|
+
const repoUrl = repoUrlOverride ?? state.repoUrl;
|
|
5040
|
+
if (repoUrl.trim() === "") return;
|
|
4930
5041
|
try {
|
|
4931
|
-
const res = await api.snapshotsList(
|
|
5042
|
+
const res = await api.snapshotsList({
|
|
5043
|
+
...payload(),
|
|
5044
|
+
repoUrl
|
|
5045
|
+
});
|
|
4932
5046
|
patch({ snapshots: res.snapshots });
|
|
4933
5047
|
} catch {}
|
|
4934
5048
|
};
|
|
@@ -5343,7 +5457,7 @@ function SyncSettingsView({ api, t }) {
|
|
|
5343
5457
|
children: t("syncflow.selectSnapshot")
|
|
5344
5458
|
}),
|
|
5345
5459
|
/* @__PURE__ */ (0, react_jsx_runtime.jsxs)("select", {
|
|
5346
|
-
className: config_manager_module_css_default.
|
|
5460
|
+
className: config_manager_module_css_default.select,
|
|
5347
5461
|
value: state.selectedSnapshotId,
|
|
5348
5462
|
disabled: state.busy !== null,
|
|
5349
5463
|
onChange: (e) => {
|
|
@@ -5742,6 +5856,8 @@ const zh$1 = {
|
|
|
5742
5856
|
"import.conflicts.useImported": "使用备份",
|
|
5743
5857
|
"import.conflicts.review": "稍后决定",
|
|
5744
5858
|
"import.conflicts.unresolved": "还有 {count} 项未决策",
|
|
5859
|
+
"import.conflicts.keepCurrentAll": "全部保留当前配置",
|
|
5860
|
+
"import.conflicts.useImportedAll": "全部使用备份配置",
|
|
5745
5861
|
"import.paths.title": "路径映射",
|
|
5746
5862
|
"import.paths.hint": "备份中的绝对路径在目标机器可能不存在,请为每条路径指定新位置(留空将跳过该路径)。",
|
|
5747
5863
|
"import.paths.old": "原路径",
|
|
@@ -5853,6 +5969,8 @@ const en$1 = {
|
|
|
5853
5969
|
"import.conflicts.useImported": "Use backup",
|
|
5854
5970
|
"import.conflicts.review": "Decide later",
|
|
5855
5971
|
"import.conflicts.unresolved": "{count} item(s) unresolved",
|
|
5972
|
+
"import.conflicts.keepCurrentAll": "Keep all current",
|
|
5973
|
+
"import.conflicts.useImportedAll": "Use all backup",
|
|
5856
5974
|
"import.paths.title": "Path Mapping",
|
|
5857
5975
|
"import.paths.hint": "Absolute paths in the backup may not exist on this machine. Map each path to a new location (leave blank to skip).",
|
|
5858
5976
|
"import.paths.old": "Original path",
|
|
@@ -5950,6 +6068,9 @@ const zh = {
|
|
|
5950
6068
|
"syncflow.needsReviewBadge": "需人工决策",
|
|
5951
6069
|
"syncflow.empty": "远端快照与本地一致(无变更)",
|
|
5952
6070
|
"syncflow.diffCount": "共 {count} 项差异",
|
|
6071
|
+
"syncflow.keepLocalAll": "全部保留本地",
|
|
6072
|
+
"syncflow.useRemoteAll": "全部采用远端",
|
|
6073
|
+
"syncflow.bulkHint": "批量决策仅作用于冲突项;其余差异默认自动采用。",
|
|
5953
6074
|
"syncflow.conflictTitle": "冲突解决",
|
|
5954
6075
|
"syncflow.conflictUseLocal": "用本地",
|
|
5955
6076
|
"syncflow.conflictUseRemote": "用远端",
|
|
@@ -6067,6 +6188,9 @@ const en = {
|
|
|
6067
6188
|
"syncflow.needsReviewBadge": "Needs decision",
|
|
6068
6189
|
"syncflow.empty": "Remote snapshot matches local (no changes)",
|
|
6069
6190
|
"syncflow.diffCount": "{count} change(s)",
|
|
6191
|
+
"syncflow.keepLocalAll": "Keep all local",
|
|
6192
|
+
"syncflow.useRemoteAll": "Adopt all remote",
|
|
6193
|
+
"syncflow.bulkHint": "Bulk decisions only apply to conflict items; other changes are adopted by default.",
|
|
6070
6194
|
"syncflow.conflictTitle": "Resolve conflict",
|
|
6071
6195
|
"syncflow.conflictUseLocal": "Use local",
|
|
6072
6196
|
"syncflow.conflictUseRemote": "Use remote",
|