dsh-config-manager 0.1.69 → 0.1.71
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 +59 -18
- package/README.zh-CN.md +29 -9
- package/lib/adapters/credentials.js +6 -3
- package/lib/adapters/file-collection.d.ts +21 -1
- package/lib/adapters/file-collection.js +32 -8
- package/lib/adapters/mcp.d.ts +12 -2
- package/lib/adapters/mcp.js +30 -13
- package/lib/adapters/plugin-files.d.ts +8 -0
- package/lib/adapters/plugin-files.js +36 -4
- package/lib/adapters/plugins.d.ts +28 -2
- package/lib/adapters/plugins.js +204 -55
- package/lib/adapters/prompts.d.ts +12 -2
- package/lib/adapters/prompts.js +34 -19
- package/lib/adapters/providers.js +5 -4
- package/lib/adapters/self.d.ts +20 -0
- package/lib/adapters/self.js +73 -0
- package/lib/adapters/sessions.d.ts +8 -0
- package/lib/adapters/sessions.js +47 -1
- package/lib/adapters/settings.d.ts +21 -3
- package/lib/adapters/settings.js +44 -7
- package/lib/adapters/skills.d.ts +36 -4
- package/lib/adapters/skills.js +222 -3
- package/lib/adapters/test-helpers.d.ts +31 -2
- package/lib/adapters/test-helpers.js +42 -5
- package/lib/adapters/workspaces.js +97 -5
- package/lib/cli/actions.d.ts +50 -3
- package/lib/cli/actions.js +103 -11
- package/lib/cli/help.d.ts +65 -0
- package/lib/cli/help.js +517 -0
- package/lib/cli/import-source.d.ts +32 -0
- package/lib/cli/import-source.js +178 -0
- package/lib/cli/index.d.ts +18 -2
- package/lib/cli/index.js +118 -90
- package/lib/cli/web/client-script.d.ts +8 -0
- package/lib/cli/web/client-script.js +11 -0
- package/lib/cli/web/http.d.ts +5 -0
- package/lib/cli/web/http.js +2 -1
- package/lib/cli/web/page.d.ts +16 -6
- package/lib/cli/web/page.js +102 -25
- package/lib/cli/web/routes.js +24 -5
- package/lib/cli/web/server.js +23 -2
- package/lib/client.d.ts +1019 -36
- package/lib/client.js +5522 -1564
- package/lib/core/analyzer.d.ts +15 -1
- package/lib/core/analyzer.js +114 -13
- package/lib/core/backup-plan.js +17 -1
- package/lib/core/backup.d.ts +8 -0
- package/lib/core/backup.js +28 -6
- package/lib/core/cache-cleaner.d.ts +10 -0
- package/lib/core/cache-cleaner.js +63 -22
- package/lib/core/checkpoint.d.ts +362 -0
- package/lib/core/checkpoint.js +1309 -0
- package/lib/core/journal.d.ts +37 -0
- package/lib/core/journal.js +69 -0
- package/lib/core/messages.d.ts +13 -0
- package/lib/core/messages.js +26 -0
- package/lib/core/model-tools.js +3 -0
- package/lib/core/patch-layers.d.ts +83 -0
- package/lib/core/patch-layers.js +110 -0
- package/lib/core/restore.d.ts +21 -0
- package/lib/core/restore.js +37 -3
- package/lib/core/rollback.js +6 -3
- package/lib/core/self-update.d.ts +52 -0
- package/lib/core/self-update.js +70 -0
- package/lib/core/session-health.d.ts +29 -5
- package/lib/core/session-health.js +28 -3
- package/lib/core/types.d.ts +126 -0
- package/lib/foreign/antigravity.d.ts +28 -0
- package/lib/foreign/antigravity.js +157 -0
- package/lib/foreign/bundle.d.ts +25 -0
- package/lib/foreign/bundle.js +79 -0
- package/lib/foreign/chatgpt.d.ts +6 -0
- package/lib/foreign/chatgpt.js +25 -0
- package/lib/foreign/claude-code.d.ts +3 -0
- package/lib/foreign/claude-code.js +85 -0
- package/lib/foreign/claude-sessions.d.ts +108 -0
- package/lib/foreign/claude-sessions.js +299 -0
- package/lib/foreign/cline.d.ts +6 -0
- package/lib/foreign/cline.js +27 -0
- package/lib/foreign/codex.d.ts +83 -0
- package/lib/foreign/codex.js +348 -0
- package/lib/foreign/continue.d.ts +9 -0
- package/lib/foreign/continue.js +65 -0
- package/lib/foreign/copilot.d.ts +39 -0
- package/lib/foreign/copilot.js +95 -0
- package/lib/foreign/crush.d.ts +11 -0
- package/lib/foreign/crush.js +57 -0
- package/lib/foreign/cursor.d.ts +87 -0
- package/lib/foreign/cursor.js +171 -0
- package/lib/foreign/dsh.d.ts +30 -0
- package/lib/foreign/dsh.js +101 -0
- package/lib/foreign/dsh4.d.ts +3 -0
- package/lib/foreign/dsh4.js +13 -0
- package/lib/foreign/gemini.d.ts +7 -0
- package/lib/foreign/gemini.js +44 -0
- package/lib/foreign/goose.d.ts +11 -0
- package/lib/foreign/goose.js +53 -0
- package/lib/foreign/grokbuild.d.ts +8 -0
- package/lib/foreign/grokbuild.js +25 -0
- package/lib/foreign/hermes.d.ts +2 -0
- package/lib/foreign/hermes.js +78 -0
- package/lib/foreign/kernel.d.ts +132 -0
- package/lib/foreign/kernel.js +569 -0
- package/lib/foreign/kilocode.d.ts +11 -0
- package/lib/foreign/kilocode.js +51 -0
- package/lib/foreign/kimi.d.ts +7 -0
- package/lib/foreign/kimi.js +47 -0
- package/lib/foreign/mimocode.d.ts +11 -0
- package/lib/foreign/mimocode.js +51 -0
- package/lib/foreign/openclaw.d.ts +7 -0
- package/lib/foreign/openclaw.js +46 -0
- package/lib/foreign/opencode.d.ts +11 -0
- package/lib/foreign/opencode.js +52 -0
- package/lib/foreign/pi.d.ts +7 -0
- package/lib/foreign/pi.js +48 -0
- package/lib/foreign/platform-paths.d.ts +66 -0
- package/lib/foreign/platform-paths.js +141 -0
- package/lib/foreign/qoder.d.ts +10 -0
- package/lib/foreign/qoder.js +49 -0
- package/lib/foreign/qwen.d.ts +7 -0
- package/lib/foreign/qwen.js +45 -0
- package/lib/foreign/read-antigravity.d.ts +57 -0
- package/lib/foreign/read-antigravity.js +504 -0
- package/lib/foreign/read-chatgpt.d.ts +20 -0
- package/lib/foreign/read-chatgpt.js +509 -0
- package/lib/foreign/read-claude-code.d.ts +24 -0
- package/lib/foreign/read-claude-code.js +234 -0
- package/lib/foreign/read-cline.d.ts +53 -0
- package/lib/foreign/read-cline.js +479 -0
- package/lib/foreign/read-codex.d.ts +75 -0
- package/lib/foreign/read-codex.js +842 -0
- package/lib/foreign/read-continue.d.ts +87 -0
- package/lib/foreign/read-continue.js +489 -0
- package/lib/foreign/read-copilot.d.ts +42 -0
- package/lib/foreign/read-copilot.js +267 -0
- package/lib/foreign/read-crush.d.ts +54 -0
- package/lib/foreign/read-crush.js +478 -0
- package/lib/foreign/read-cursor.d.ts +141 -0
- package/lib/foreign/read-cursor.js +705 -0
- package/lib/foreign/read-dsh.d.ts +43 -0
- package/lib/foreign/read-dsh.js +205 -0
- package/lib/foreign/read-dsh4.d.ts +14 -0
- package/lib/foreign/read-dsh4.js +27 -0
- package/lib/foreign/read-gemini.d.ts +55 -0
- package/lib/foreign/read-gemini.js +273 -0
- package/lib/foreign/read-goose.d.ts +25 -0
- package/lib/foreign/read-goose.js +322 -0
- package/lib/foreign/read-grokbuild.d.ts +34 -0
- package/lib/foreign/read-grokbuild.js +455 -0
- package/lib/foreign/read-hermes.d.ts +74 -0
- package/lib/foreign/read-hermes.js +690 -0
- package/lib/foreign/read-kilocode.d.ts +17 -0
- package/lib/foreign/read-kilocode.js +46 -0
- package/lib/foreign/read-kimi.d.ts +63 -0
- package/lib/foreign/read-kimi.js +719 -0
- package/lib/foreign/read-mimocode.d.ts +12 -0
- package/lib/foreign/read-mimocode.js +56 -0
- package/lib/foreign/read-openclaw.d.ts +51 -0
- package/lib/foreign/read-openclaw.js +445 -0
- package/lib/foreign/read-opencode.d.ts +150 -0
- package/lib/foreign/read-opencode.js +896 -0
- package/lib/foreign/read-pi.d.ts +56 -0
- package/lib/foreign/read-pi.js +411 -0
- package/lib/foreign/read-qoder.d.ts +54 -0
- package/lib/foreign/read-qoder.js +317 -0
- package/lib/foreign/read-qwen.d.ts +40 -0
- package/lib/foreign/read-qwen.js +326 -0
- package/lib/foreign/read-reasonix.d.ts +66 -0
- package/lib/foreign/read-reasonix.js +537 -0
- package/lib/foreign/read-teleagent.d.ts +15 -0
- package/lib/foreign/read-teleagent.js +68 -0
- package/lib/foreign/read-trae.d.ts +67 -0
- package/lib/foreign/read-trae.js +492 -0
- package/lib/foreign/read-vibe.d.ts +28 -0
- package/lib/foreign/read-vibe.js +364 -0
- package/lib/foreign/read-workbuddy.d.ts +49 -0
- package/lib/foreign/read-workbuddy.js +346 -0
- package/lib/foreign/read-zcode.d.ts +12 -0
- package/lib/foreign/read-zcode.js +38 -0
- package/lib/foreign/read-zed.d.ts +30 -0
- package/lib/foreign/read-zed.js +473 -0
- package/lib/foreign/reasonix.d.ts +6 -0
- package/lib/foreign/reasonix.js +20 -0
- package/lib/foreign/registry.d.ts +196 -0
- package/lib/foreign/registry.js +573 -0
- package/lib/foreign/session-ir.d.ts +186 -0
- package/lib/foreign/session-ir.js +427 -0
- package/lib/foreign/session-read.d.ts +102 -0
- package/lib/foreign/session-read.js +254 -0
- package/lib/foreign/session-source.d.ts +216 -0
- package/lib/foreign/session-source.js +453 -0
- package/lib/foreign/source-modules.d.ts +45 -0
- package/lib/foreign/source-modules.js +52 -0
- package/lib/foreign/sqlite.d.ts +61 -0
- package/lib/foreign/sqlite.js +404 -0
- package/lib/foreign/teleagent.d.ts +11 -0
- package/lib/foreign/teleagent.js +53 -0
- package/lib/foreign/trae.d.ts +6 -0
- package/lib/foreign/trae.js +20 -0
- package/lib/foreign/truth-table.d.ts +62 -0
- package/lib/foreign/truth-table.js +333 -0
- package/lib/foreign/types.d.ts +272 -0
- package/lib/foreign/types.js +2 -0
- package/lib/foreign/vibe.d.ts +6 -0
- package/lib/foreign/vibe.js +23 -0
- package/lib/foreign/workbuddy.d.ts +7 -0
- package/lib/foreign/workbuddy.js +45 -0
- package/lib/foreign/zcode.d.ts +11 -0
- package/lib/foreign/zcode.js +51 -0
- package/lib/foreign/zed.d.ts +11 -0
- package/lib/foreign/zed.js +53 -0
- package/lib/index.d.ts +154 -13
- package/lib/index.js +661 -84
- package/lib/market/github-repos.d.ts +28 -0
- package/lib/market/github-repos.js +43 -1
- package/lib/market/types.d.ts +1 -3
- package/lib/profiles/dsh-profile-manager.d.ts +54 -2
- package/lib/profiles/dsh-profile-manager.js +182 -11
- package/lib/profiles/dsh-profile-shared.d.ts +47 -0
- package/lib/profiles/dsh-profile-shared.js +15 -1
- package/lib/profiles/index.d.ts +1 -1
- package/lib/profiles/index.js +1 -1
- package/lib/routes/consult.js +51 -5
- package/lib/routes/foreign-context.d.ts +43 -0
- package/lib/routes/foreign-context.js +65 -0
- package/lib/routes/foreign.d.ts +11 -0
- package/lib/routes/foreign.js +208 -0
- package/lib/routes/import.d.ts +8 -0
- package/lib/routes/import.js +22 -1
- package/lib/routes/index.d.ts +2 -2
- package/lib/routes/index.js +4 -0
- package/lib/routes/kit.d.ts +4 -3
- package/lib/routes/market.js +0 -1
- package/lib/routes/prefs.d.ts +2 -1
- package/lib/routes/prefs.js +14 -2
- package/lib/routes/recovery.js +363 -3
- package/lib/routes/session-export.d.ts +117 -0
- package/lib/routes/session-export.js +270 -0
- package/lib/routes/snapshots.js +12 -2
- package/lib/routes/sync.js +82 -10
- package/lib/security/redaction.d.ts +14 -0
- package/lib/security/redaction.js +24 -9
- package/lib/security/secret-scanner.d.ts +27 -0
- package/lib/security/secret-scanner.js +54 -1
- package/lib/sync/autosync-scheduler.d.ts +13 -1
- package/lib/sync/autosync-scheduler.js +49 -26
- package/lib/sync/backup-files.js +6 -0
- package/lib/sync/gist/gist-transport.d.ts +91 -0
- package/lib/sync/gist/gist-transport.js +406 -0
- package/lib/sync/gist/messages.d.ts +22 -0
- package/lib/sync/gist/messages.js +46 -0
- package/lib/sync/s3/messages.d.ts +53 -0
- package/lib/sync/s3/messages.js +83 -0
- package/lib/sync/s3/s3-providers.d.ts +78 -0
- package/lib/sync/s3/s3-providers.js +156 -0
- package/lib/sync/s3/s3-transport.d.ts +126 -0
- package/lib/sync/s3/s3-transport.js +551 -0
- package/lib/sync/s3/sigv4.d.ts +107 -0
- package/lib/sync/s3/sigv4.js +196 -0
- package/lib/sync/sync-config.d.ts +250 -4
- package/lib/sync/sync-config.js +658 -57
- package/lib/sync/sync-engine.d.ts +1 -0
- package/lib/sync/sync-engine.js +4 -2
- package/lib/sync/sync-history.d.ts +1 -1
- package/lib/sync/webdav/webdav-transport.d.ts +31 -3
- package/lib/sync/webdav/webdav-transport.js +102 -18
- package/lib/ui/commands.d.ts +4 -3
- package/lib/ui/commands.js +41 -9
- package/lib/ui/disk-usage-view.d.ts +44 -0
- package/lib/ui/disk-usage-view.js +55 -1
- package/lib/ui/dsh-profiles-view.d.ts +53 -0
- package/lib/ui/dsh-profiles-view.js +56 -0
- package/lib/ui/foreign-view.d.ts +162 -0
- package/lib/ui/foreign-view.js +225 -0
- package/lib/ui/i18n.d.ts +77 -0
- package/lib/ui/i18n.js +164 -0
- package/lib/ui/session-inventory-view.d.ts +106 -0
- package/lib/ui/session-inventory-view.js +58 -0
- package/lib/ui/session-layout-view.d.ts +265 -0
- package/lib/ui/session-layout-view.js +271 -0
- package/lib/ui/sync-repository-picker.d.ts +98 -0
- package/lib/ui/sync-repository-picker.js +145 -0
- package/lib/ui/sync-settings-view.d.ts +143 -4
- package/lib/ui/sync-settings-view.js +231 -7
- package/lib/ui/types.d.ts +47 -0
- package/lib/utils/asar-read.d.ts +113 -0
- package/lib/utils/asar-read.js +523 -0
- package/lib/utils/env-lock.js +7 -2
- package/lib/utils/patch-yaml.d.ts +25 -0
- package/lib/utils/patch-yaml.js +62 -0
- package/lib/utils/paths.d.ts +10 -1
- package/lib/utils/paths.js +24 -3
- package/lib/utils/recursive-walk.js +12 -13
- package/lib/utils/session-format.d.ts +35 -2
- package/lib/utils/session-format.js +131 -5
- package/lib/utils/session-health-scan.d.ts +7 -1
- package/lib/utils/session-health-scan.js +369 -12
- package/lib/utils/session-layout-repair-service.d.ts +98 -0
- package/lib/utils/session-layout-repair-service.js +457 -0
- package/lib/utils/session-log-repair.d.ts +27 -0
- package/lib/utils/session-log-repair.js +233 -62
- package/lib/utils/session-repair-service.d.ts +32 -3
- package/lib/utils/session-repair-service.js +148 -9
- package/lib/utils/session-row-facts.d.ts +73 -0
- package/lib/utils/session-row-facts.js +182 -0
- package/lib/utils/session-verify.d.ts +118 -0
- package/lib/utils/session-verify.js +705 -0
- package/lib/utils/shared-constants.d.ts +59 -0
- package/lib/utils/shared-constants.js +71 -0
- package/package.json +1 -1
- package/src/adapters/credentials.test.ts +27 -0
- package/src/adapters/credentials.ts +6 -3
- package/src/adapters/file-collection.ts +33 -8
- package/src/adapters/files.test.ts +222 -0
- package/src/adapters/mcp.test.ts +43 -0
- package/src/adapters/mcp.ts +37 -14
- package/src/adapters/plugin-files.ts +34 -4
- package/src/adapters/plugins.test.ts +241 -0
- package/src/adapters/plugins.ts +201 -53
- package/src/adapters/prompts.test.ts +49 -0
- package/src/adapters/prompts.ts +41 -20
- package/src/adapters/providers.test.ts +16 -0
- package/src/adapters/providers.ts +4 -3
- package/src/adapters/self.test.ts +77 -0
- package/src/adapters/self.ts +75 -0
- package/src/adapters/sessions.test.ts +77 -0
- package/src/adapters/sessions.ts +47 -1
- package/src/adapters/settings.test.ts +78 -0
- package/src/adapters/settings.ts +42 -6
- package/src/adapters/skills.ts +221 -3
- package/src/adapters/test-helpers.ts +43 -5
- package/src/adapters/workspaces-dup-id.test.ts +144 -0
- package/src/adapters/workspaces.test.ts +10 -0
- package/src/adapters/workspaces.ts +97 -5
- package/src/cli/actions.test.ts +117 -2
- package/src/cli/actions.ts +132 -12
- package/src/cli/help.ts +570 -0
- package/src/cli/import-source.test.ts +193 -0
- package/src/cli/import-source.ts +229 -0
- package/src/cli/index.ts +129 -94
- package/src/cli/web/client-script.ts +12 -0
- package/src/cli/web/console-fixes.test.ts +36 -0
- package/src/cli/web/http.ts +7 -1
- package/src/cli/web/page.ts +108 -25
- package/src/cli/web/routes.ts +23 -4
- package/src/cli/web/script-anchor.test.ts +33 -0
- package/src/cli/web/server.ts +28 -2
- package/src/cli/web/web.test.ts +447 -4
- package/src/client/ConfigManagerSection.tsx +118 -63
- package/src/client/about/AboutPanel.tsx +42 -3
- package/src/client/about/PluginUpdateDialog.tsx +185 -0
- package/src/client/about/ReleaseBody.tsx +144 -0
- package/src/client/about/ReleaseNotesDialog.tsx +3 -130
- package/src/client/about/about-view.ts +7 -5
- package/src/client/about/plugin-update-view.test.ts +25 -0
- package/src/client/about/plugin-update-view.ts +26 -0
- package/src/client/about/release-notes-view.test.ts +33 -0
- package/src/client/about/release-notes-view.ts +34 -0
- package/src/client/api.ts +145 -1
- package/src/client/common/Icon.tsx +3 -0
- package/src/client/common/RunsCenter.tsx +8 -2
- package/src/client/common/Select.tsx +9 -2
- package/src/client/common/info-hint-guard.test.ts +63 -18
- package/src/client/common/plan-text-redaction.test.ts +193 -8
- package/src/client/common/routes.ts +15 -0
- package/src/client/config-manager.module.css +506 -354
- package/src/client/css-scale-guard.test.ts +122 -0
- package/src/client/css-token-guard.test.ts +82 -0
- package/src/client/environment/EnvironmentPanel.tsx +45 -16
- package/src/client/{snapshots → environment/maintenance}/DiskUsageCard.tsx +21 -17
- package/src/client/environment/profiles-incomplete-ui.test.ts +103 -0
- package/src/client/export/ExportView.tsx +9 -2
- package/src/client/{snapshots → home}/BackupScheduleCard.tsx +13 -4
- package/src/client/home/HomePanel.tsx +69 -157
- package/src/client/icon-layer-guard.test.ts +1 -1
- package/src/client/import/ForeignImportView.tsx +318 -0
- package/src/client/import/ImportWizardView.tsx +3 -1
- package/src/client/import/foreign-import-view-guard.test.ts +195 -0
- package/src/client/import/import-file-select.test.ts +6 -6
- package/src/client/import/import-wizard-steps.tsx +17 -1
- package/src/client/import/use-import-wizard-controller.ts +3 -3
- package/src/client/index.ts +1 -1
- package/src/client/library/LibraryActions.tsx +31 -34
- package/src/client/library/LibraryPanel.tsx +4 -1
- package/src/client/{snapshots → library}/RestorePlanView.tsx +1 -1
- package/src/client/{snapshots → library}/files-layout.test.ts +2 -2
- package/src/client/{snapshots → library}/report-dismiss.test.ts +26 -3
- package/src/client/library/task-panel-visibility.test.ts +25 -17
- package/src/client/locales.ts +278 -36
- package/src/client/lucide-icons.d.ts +1 -0
- package/src/client/market/MarketPanel.tsx +11 -2
- package/src/client/recovery/IncompleteCopiesSection.tsx +132 -0
- package/src/client/recovery/RecoveryPanel.tsx +486 -59
- package/src/client/recovery/recovery-api.ts +30 -0
- package/src/client/recovery/recovery-incomplete-copies.test.ts +151 -0
- package/src/client/recovery/recovery-locales.test.ts +88 -0
- package/src/client/recovery/recovery-locales.ts +321 -6
- package/src/client/recovery/recovery-panel-layout.test.ts +52 -0
- package/src/client/recovery/recovery-view.ts +92 -2
- package/src/client/run-store.test.ts +201 -89
- package/src/client/run-store.ts +114 -143
- package/src/client/session-export/session-export-view.test.ts +103 -0
- package/src/client/session-export/session-export-view.ts +118 -0
- package/src/client/sync/ChannelConfigDialog.tsx +219 -14
- package/src/client/sync/SyncChannelEntryCard.tsx +52 -4
- package/src/client/sync/SyncLogList.tsx +1 -1
- package/src/client/sync/SyncPanel.tsx +166 -102
- package/src/client/sync/SyncRepositoryPicker.tsx +216 -0
- package/src/client/sync/SyncSettingsView.test.ts +6 -1
- package/src/client/sync/history-model.test.ts +94 -57
- package/src/client/sync/history-model.ts +44 -25
- package/src/client/sync/sync-api.test.ts +56 -0
- package/src/client/sync/sync-api.ts +92 -0
- package/src/client/sync/sync-locales.ts +162 -2
- package/src/client/sync/sync-view.test.ts +3 -8
- package/src/client/sync/sync-view.ts +111 -21
- package/src/core/analyzer-cache.test.ts +47 -0
- package/src/core/analyzer.ts +115 -14
- package/src/core/backup-plan.test.ts +35 -0
- package/src/core/backup-plan.ts +19 -1
- package/src/core/backup.test.ts +37 -1
- package/src/core/backup.ts +27 -6
- package/src/core/cache-cleaner.test.ts +120 -1
- package/src/core/cache-cleaner.ts +59 -22
- package/src/core/checkpoint.test.ts +665 -0
- package/src/core/checkpoint.ts +1614 -0
- package/src/core/credential-plan-consistency.test.ts +93 -0
- package/src/core/incident-wiring.test.ts +6 -2
- package/src/core/journal.test.ts +70 -0
- package/src/core/journal.ts +68 -0
- package/src/core/messages.ts +26 -0
- package/src/core/model-tools.ts +3 -0
- package/src/core/patch-layers.test.ts +94 -0
- package/src/core/patch-layers.ts +150 -0
- package/src/core/restore.ts +59 -3
- package/src/core/rollback.ts +6 -3
- package/src/core/section-content-consistency.test.ts +185 -0
- package/src/core/self-update.test.ts +110 -0
- package/src/core/self-update.ts +118 -0
- package/src/core/session-health.test.ts +91 -1
- package/src/core/session-health.ts +56 -9
- package/src/core/types.ts +127 -1
- package/src/foreign/antigravity.test.ts +271 -0
- package/src/foreign/antigravity.ts +188 -0
- package/src/foreign/bundle.ts +108 -0
- package/src/foreign/chatgpt.test.ts +279 -0
- package/src/foreign/chatgpt.ts +30 -0
- package/src/foreign/claude-code.test.ts +234 -0
- package/src/foreign/claude-code.ts +106 -0
- package/src/foreign/claude-sessions-bytes.test.ts +227 -0
- package/src/foreign/claude-sessions.test.ts +180 -0
- package/src/foreign/claude-sessions.ts +461 -0
- package/src/foreign/cline.test.ts +274 -0
- package/src/foreign/cline.ts +32 -0
- package/src/foreign/codex.test.ts +585 -0
- package/src/foreign/codex.ts +409 -0
- package/src/foreign/continue.test.ts +365 -0
- package/src/foreign/continue.ts +73 -0
- package/src/foreign/copilot.test.ts +273 -0
- package/src/foreign/copilot.ts +133 -0
- package/src/foreign/crush.test.ts +234 -0
- package/src/foreign/crush.ts +66 -0
- package/src/foreign/cursor.test.ts +509 -0
- package/src/foreign/cursor.ts +259 -0
- package/src/foreign/dsh.test.ts +198 -0
- package/src/foreign/dsh.ts +117 -0
- package/src/foreign/dsh4.test.ts +127 -0
- package/src/foreign/dsh4.ts +15 -0
- package/src/foreign/file-budget.test.ts +256 -0
- package/src/foreign/fixtures/antigravity/README.md +18 -0
- package/src/foreign/fixtures/antigravity/basic/gemini/antigravity/mcp_config.json +13 -0
- package/src/foreign/fixtures/antigravity/basic/gemini/config/mcp_config.json +24 -0
- package/src/foreign/fixtures/antigravity/empty/gemini/antigravity/mcp_config.json +0 -0
- package/src/foreign/fixtures/antigravity/empty/gemini/antigravity/mcp_oauth_tokens.json +0 -0
- package/src/foreign/fixtures/antigravity/empty/gemini/config/mcp_config.json +0 -0
- package/src/foreign/fixtures/codex/README.md +31 -0
- package/src/foreign/fixtures/codex/basic/.agents/skills/hello/SKILL.md +6 -0
- package/src/foreign/fixtures/codex/basic/.agents/skills/wrapper/nested/SKILL.md +6 -0
- package/src/foreign/fixtures/codex/basic/.codex/AGENTS.md +4 -0
- package/src/foreign/fixtures/codex/basic/.codex/config.toml +28 -0
- package/src/foreign/fixtures/codex/malformed/.codex/config.toml +3 -0
- package/src/foreign/fixtures/codex/override/.codex/AGENTS.md +1 -0
- package/src/foreign/fixtures/codex/override/.codex/AGENTS.override.md +3 -0
- package/src/foreign/fixtures/codex/sessions/.codex/archived_sessions/rollout-2026-10-05T09-00-00-22222222-2222-4222-8222-222222222222.jsonl +2 -0
- package/src/foreign/fixtures/codex/sessions/.codex/sessions/2026/10/06/rollout-2026-10-06T10-00-00-11111111-1111-4111-8111-111111111111.jsonl +15 -0
- package/src/foreign/fixtures/codex/sessions/.codex/sessions/2026/10/06/rollout-2026-10-06T11-00-00-33333333-3333-4333-8333-333333333333.jsonl +2 -0
- package/src/foreign/fixtures/codex/sessions/.codex/sessions/2026/10/06/rollout-2026-10-06T11-30-00-55555555-5555-4555-8555-555555555555.jsonl +2 -0
- package/src/foreign/fixtures/codex/sessions/.codex/sessions/2026/10/06/rollout-2026-10-06T12-00-00-44444444-4444-4444-8444-444444444444.jsonl +2 -0
- package/src/foreign/fixtures/codex/sessions/.codex/sessions/notes.jsonl +1 -0
- package/src/foreign/fixtures/copilot/README.md +22 -0
- package/src/foreign/fixtures/copilot/basic/copilot-instructions.md +3 -0
- package/src/foreign/fixtures/copilot/basic/instructions/empty.instructions.md +1 -0
- package/src/foreign/fixtures/copilot/basic/instructions/repo.instructions.md +5 -0
- package/src/foreign/fixtures/copilot/basic/mcp-config.json +24 -0
- package/src/foreign/fixtures/copilot/basic/skills/hello/SKILL.md +6 -0
- package/src/foreign/fixtures/copilot/overridden/mcp-config.json +10 -0
- package/src/foreign/fixtures/cursor/README.md +17 -0
- package/src/foreign/fixtures/cursor/alt/.cursor/mcp.json +5 -0
- package/src/foreign/fixtures/cursor/basic/.cursor/mcp.json +18 -0
- package/src/foreign/fixtures/cursor/basic/.cursor/rules/agent.mdc +5 -0
- package/src/foreign/fixtures/cursor/basic/.cursor/rules/always.mdc +6 -0
- package/src/foreign/fixtures/cursor/basic/.cursor/rules/auto.mdc +7 -0
- package/src/foreign/fixtures/cursor/basic/.cursor/rules/manual.mdc +3 -0
- package/src/foreign/fixtures/cursor/basic/.cursor/skills/.hidden/SKILL.md +6 -0
- package/src/foreign/fixtures/cursor/basic/.cursor/skills/hello/SKILL.md +6 -0
- package/src/foreign/fixtures/cursor/basic/.cursor/skills/wrapper/nested/SKILL.md +6 -0
- package/src/foreign/fixtures/cursor/basic/.cursor/skills/wrapper/nested/notes.md +1 -0
- package/src/foreign/fixtures/cursor/basic/.cursorrules +1 -0
- package/src/foreign/fixtures/cursor/basic/project/.cursor/mcp.json +9 -0
- package/src/foreign/fixtures/cursor/basic/project/.cursor/rules/project-always.mdc +5 -0
- package/src/foreign/fixtures/cursor/basic/project/.cursor/skills/hello/SKILL.md +6 -0
- package/src/foreign/fixtures/cursor/basic/project/.cursorrules +1 -0
- package/src/foreign/fixtures/cursor/empty/.cursor/mcp.json +0 -0
- package/src/foreign/fixtures/cursor/malformed/.cursor/mcp.json +3 -0
- package/src/foreign/fixtures/cursor/malformed/.cursor/rules/broken.mdc +6 -0
- package/src/foreign/fixtures/cursor/shape/.cursor/mcp.json +3 -0
- package/src/foreign/fixtures/hermes/README.md +14 -0
- package/src/foreign/fixtures/hermes/basic/SOUL.md +3 -0
- package/src/foreign/fixtures/hermes/basic/config.yaml +48 -0
- package/src/foreign/fixtures/hermes/basic/dotenv.fixture +1 -0
- package/src/foreign/fixtures/hermes/basic/memories/MEMORY.md +1 -0
- package/src/foreign/fixtures/hermes/basic/memories/USER.md +1 -0
- package/src/foreign/fixtures/hermes/basic/skills/se-team-design/SKILL.md +6 -0
- package/src/foreign/fixtures/hermes/basic/skills/se-team-design/examples/usage.md +1 -0
- package/src/foreign/fixtures/hermes/basic/skills/software-development/dogfood/SKILL.md +6 -0
- package/src/foreign/fixtures/hermes/basic/skills/software-development/dogfood/notes.md +1 -0
- package/src/foreign/fixtures/hermes/basic/state.db +1 -0
- package/src/foreign/fixtures/hermes/empty/config.yaml +0 -0
- package/src/foreign/gemini.test.ts +291 -0
- package/src/foreign/gemini.ts +52 -0
- package/src/foreign/goose.test.ts +196 -0
- package/src/foreign/goose.ts +62 -0
- package/src/foreign/grokbuild.test.ts +246 -0
- package/src/foreign/grokbuild.ts +30 -0
- package/src/foreign/hermes.test.ts +545 -0
- package/src/foreign/hermes.ts +86 -0
- package/src/foreign/kernel-credentials.test.ts +88 -0
- package/src/foreign/kernel-workspaces.test.ts +88 -0
- package/src/foreign/kernel.ts +584 -0
- package/src/foreign/kilocode.test.ts +186 -0
- package/src/foreign/kilocode.ts +60 -0
- package/src/foreign/kimi.test.ts +259 -0
- package/src/foreign/kimi.ts +55 -0
- package/src/foreign/mcp-value-shape.test.ts +286 -0
- package/src/foreign/mimocode.test.ts +178 -0
- package/src/foreign/mimocode.ts +60 -0
- package/src/foreign/openclaw.test.ts +248 -0
- package/src/foreign/openclaw.ts +54 -0
- package/src/foreign/opencode.test.ts +376 -0
- package/src/foreign/opencode.ts +61 -0
- package/src/foreign/pi.test.ts +275 -0
- package/src/foreign/pi.ts +56 -0
- package/src/foreign/platform-paths.ts +156 -0
- package/src/foreign/qoder.test.ts +266 -0
- package/src/foreign/qoder.ts +57 -0
- package/src/foreign/qwen.test.ts +203 -0
- package/src/foreign/qwen.ts +53 -0
- package/src/foreign/read-antigravity.ts +569 -0
- package/src/foreign/read-chatgpt.ts +506 -0
- package/src/foreign/read-claude-code.ts +264 -0
- package/src/foreign/read-cline.ts +517 -0
- package/src/foreign/read-codex.ts +823 -0
- package/src/foreign/read-continue.ts +557 -0
- package/src/foreign/read-copilot.ts +304 -0
- package/src/foreign/read-crush.ts +503 -0
- package/src/foreign/read-cursor.ts +778 -0
- package/src/foreign/read-dsh.ts +215 -0
- package/src/foreign/read-dsh4.ts +35 -0
- package/src/foreign/read-gemini.ts +306 -0
- package/src/foreign/read-goose.ts +333 -0
- package/src/foreign/read-grokbuild.ts +475 -0
- package/src/foreign/read-hermes.ts +724 -0
- package/src/foreign/read-kilocode.ts +55 -0
- package/src/foreign/read-kimi.ts +768 -0
- package/src/foreign/read-mimocode.ts +66 -0
- package/src/foreign/read-openclaw.ts +505 -0
- package/src/foreign/read-opencode.ts +994 -0
- package/src/foreign/read-pi.ts +459 -0
- package/src/foreign/read-qoder.ts +351 -0
- package/src/foreign/read-qwen.ts +342 -0
- package/src/foreign/read-reasonix.ts +590 -0
- package/src/foreign/read-teleagent.ts +82 -0
- package/src/foreign/read-trae.ts +488 -0
- package/src/foreign/read-vibe.ts +353 -0
- package/src/foreign/read-workbuddy.ts +374 -0
- package/src/foreign/read-zcode.ts +48 -0
- package/src/foreign/read-zed.ts +479 -0
- package/src/foreign/reasonix.test.ts +336 -0
- package/src/foreign/reasonix.ts +25 -0
- package/src/foreign/registry.test.ts +377 -0
- package/src/foreign/registry.ts +750 -0
- package/src/foreign/session-ir.test.ts +189 -0
- package/src/foreign/session-ir.ts +614 -0
- package/src/foreign/session-read.ts +295 -0
- package/src/foreign/session-source.ts +625 -0
- package/src/foreign/skill-file-caps.test.ts +171 -0
- package/src/foreign/source-modules.ts +86 -0
- package/src/foreign/source-registry.test.ts +190 -0
- package/src/foreign/sqlite.test.ts +313 -0
- package/src/foreign/sqlite.ts +446 -0
- package/src/foreign/teleagent.test.ts +147 -0
- package/src/foreign/teleagent.ts +62 -0
- package/src/foreign/trae.test.ts +316 -0
- package/src/foreign/trae.ts +25 -0
- package/src/foreign/truncation-report.test.ts +238 -0
- package/src/foreign/truth-table.ts +453 -0
- package/src/foreign/types.ts +312 -0
- package/src/foreign/vibe.test.ts +209 -0
- package/src/foreign/vibe.ts +28 -0
- package/src/foreign/workbuddy.test.ts +207 -0
- package/src/foreign/workbuddy.ts +53 -0
- package/src/foreign/zcode.test.ts +224 -0
- package/src/foreign/zcode.ts +60 -0
- package/src/foreign/zed.test.ts +240 -0
- package/src/foreign/zed.ts +62 -0
- package/src/index.facade.test.ts +254 -16
- package/src/index.ts +704 -82
- package/src/market/github-repos.test.ts +98 -1
- package/src/market/github-repos.ts +63 -1
- package/src/market/types.ts +3 -3
- package/src/profiles/dsh-profile-incomplete-copy.test.ts +177 -0
- package/src/profiles/dsh-profile-manager.test.ts +37 -0
- package/src/profiles/dsh-profile-manager.ts +188 -13
- package/src/profiles/dsh-profile-shared.ts +55 -1
- package/src/profiles/index.ts +2 -1
- package/src/routes/consult.ts +53 -4
- package/src/routes/foreign-context.ts +89 -0
- package/src/routes/foreign.test.ts +443 -0
- package/src/routes/foreign.ts +226 -0
- package/src/routes/import.ts +23 -1
- package/src/routes/index.ts +6 -2
- package/src/routes/kit.ts +4 -3
- package/src/routes/market.ts +0 -1
- package/src/routes/prefs.ts +15 -1
- package/src/routes/recovery.test.ts +167 -0
- package/src/routes/recovery.ts +331 -1
- package/src/routes/session-export.ts +308 -0
- package/src/routes/snapshots.ts +12 -2
- package/src/routes/sync.ts +91 -7
- package/src/security/redaction.test.ts +149 -0
- package/src/security/redaction.ts +25 -9
- package/src/security/secret-scanner.test.ts +186 -0
- package/src/security/secret-scanner.ts +57 -1
- package/src/sync/autosync-risk-tier.test.ts +61 -0
- package/src/sync/autosync-scheduler.test.ts +48 -1
- package/src/sync/autosync-scheduler.ts +50 -26
- package/src/sync/backup-files.ts +5 -0
- package/src/sync/gist/gist-msgkeys-catalog.test.ts +33 -0
- package/src/sync/gist/gist-msgkeys.test.ts +71 -0
- package/src/sync/gist/gist-transport.test.ts +308 -0
- package/src/sync/gist/gist-transport.ts +550 -0
- package/src/sync/gist/messages.ts +49 -0
- package/src/sync/retention-prune-all-off.test.ts +50 -0
- package/src/sync/s3/cloud-config.test.ts +283 -0
- package/src/sync/s3/messages.ts +102 -0
- package/src/sync/s3/s3-delete-index-404.test.ts +170 -0
- package/src/sync/s3/s3-delete-index-unreadable.test.ts +141 -0
- package/src/sync/s3/s3-msgkeys.test.ts +101 -0
- package/src/sync/s3/s3-providers.ts +213 -0
- package/src/sync/s3/s3-transport.test.ts +394 -0
- package/src/sync/s3/s3-transport.ts +651 -0
- package/src/sync/s3/s3-upload-index-404.test.ts +171 -0
- package/src/sync/s3/sigv4.test.ts +219 -0
- package/src/sync/s3/sigv4.ts +283 -0
- package/src/sync/sync-config.test.ts +237 -5
- package/src/sync/sync-config.ts +841 -52
- package/src/sync/sync-engine-download-tombstone.test.ts +73 -0
- package/src/sync/sync-engine.ts +5 -3
- package/src/sync/sync-history.ts +1 -1
- package/src/sync/webdav/webdav-delete-index-404.test.ts +178 -0
- package/src/sync/webdav/webdav-delete-index-unreadable.test.ts +143 -0
- package/src/sync/webdav/webdav-msgkeys.test.ts +53 -0
- package/src/sync/webdav/webdav-transport.test.ts +9 -5
- package/src/sync/webdav/webdav-transport.ts +99 -17
- package/src/sync/webdav/webdav-upload-index-404.test.ts +177 -0
- package/src/ui/commands.test.ts +4 -1
- package/src/ui/commands.ts +46 -12
- package/src/ui/disk-usage-view.test.ts +63 -1
- package/src/ui/disk-usage-view.ts +93 -1
- package/src/ui/dsh-profiles-incomplete-view.test.ts +102 -0
- package/src/ui/dsh-profiles-view.ts +94 -0
- package/src/ui/foreign-view.test.ts +241 -0
- package/src/ui/foreign-view.ts +362 -0
- package/src/ui/i18n.ts +164 -0
- package/src/ui/mid-ellipsis.test.ts +5 -10
- package/src/ui/session-inventory-view.test.ts +142 -2
- package/src/ui/session-inventory-view.ts +127 -0
- package/src/ui/session-layout-view.test.ts +361 -0
- package/src/ui/session-layout-view.ts +444 -0
- package/src/ui/sync-repository-picker.test.ts +130 -0
- package/src/ui/sync-repository-picker.ts +180 -0
- package/src/ui/sync-settings-view.test.ts +166 -0
- package/src/ui/sync-settings-view.ts +319 -9
- package/src/ui/types.ts +42 -0
- package/src/utils/asar-read.test.ts +330 -0
- package/src/utils/asar-read.ts +606 -0
- package/src/utils/env-lock.test.ts +55 -0
- package/src/utils/env-lock.ts +6 -1
- package/src/utils/patch-yaml.test.ts +112 -0
- package/src/utils/patch-yaml.ts +72 -0
- package/src/utils/paths.test.ts +63 -0
- package/src/utils/paths.ts +25 -3
- package/src/utils/recursive-walk.test.ts +20 -0
- package/src/utils/recursive-walk.ts +12 -13
- package/src/utils/session-format.test.ts +113 -2
- package/src/utils/session-format.ts +127 -5
- package/src/utils/session-health-scan.test.ts +364 -1
- package/src/utils/session-health-scan.ts +434 -15
- package/src/utils/session-layout-repair-service.test.ts +362 -0
- package/src/utils/session-layout-repair-service.ts +568 -0
- package/src/utils/session-log-repair.test.ts +260 -1
- package/src/utils/session-log-repair.ts +294 -55
- package/src/utils/session-repair-service.test.ts +148 -1
- package/src/utils/session-repair-service.ts +165 -10
- package/src/utils/session-row-facts.test.ts +159 -0
- package/src/utils/session-row-facts.ts +187 -0
- package/src/utils/session-verify.test.ts +762 -0
- package/src/utils/session-verify.ts +784 -0
- package/src/utils/shared-constants.ts +82 -0
|
@@ -54,6 +54,46 @@
|
|
|
54
54
|
只有本机概况卡,纵向余量足够。420px 下可视行数约 9 行,且清理按钮仍在卡内。
|
|
55
55
|
见 §9c 的 .diskUsageCard(为什么用固定高度而不是自适应)。 */
|
|
56
56
|
--cm-disk-card-h: 420px;
|
|
57
|
+
/* ================= v3 语义 token 层(--cm-*)=================
|
|
58
|
+
全部由 --dsw-* 派生;组件规则只消费 --cm-*,不再直接写 --dsw-* 状态色。
|
|
59
|
+
由 css-token-guard.test.ts 与 css-scale-guard.test.ts 钉住。 */
|
|
60
|
+
--cm-text-1: var(--dsw-alias-label-primary);
|
|
61
|
+
--cm-text-2: var(--dsw-alias-label-secondary);
|
|
62
|
+
--cm-text-3: var(--dsw-alias-label-tertiary);
|
|
63
|
+
--cm-text-on-accent: var(--dsw-alias-label-primary-foreground);
|
|
64
|
+
--cm-surface-1: var(--dsw-alias-bg-layer-1);
|
|
65
|
+
--cm-surface-2: var(--dsw-alias-bg-layer-2);
|
|
66
|
+
--cm-surface-hover: var(--dsw-alias-interactive-bg-hover);
|
|
67
|
+
--cm-line-1: var(--dsw-alias-border-l1);
|
|
68
|
+
--cm-line-2: var(--dsw-alias-border-l2);
|
|
69
|
+
--cm-input-bg: var(--dsw-specific-input-major);
|
|
70
|
+
--cm-accent: var(--dsw-alias-state-business-primary);
|
|
71
|
+
--cm-accent-fill: var(--dsw-alias-button-info-fill);
|
|
72
|
+
--cm-accent-hover: var(--dsw-alias-button-info-hover);
|
|
73
|
+
--cm-ok: var(--dsw-alias-state-success-primary);
|
|
74
|
+
--cm-info: var(--dsw-alias-state-info-primary);
|
|
75
|
+
--cm-warn: var(--dsw-alias-state-warn-primary);
|
|
76
|
+
--cm-error: var(--dsw-alias-state-error-primary);
|
|
77
|
+
/* 字号 scale(4 档) */
|
|
78
|
+
--cm-fs-meta: 11px;
|
|
79
|
+
--cm-fs-table: 12px;
|
|
80
|
+
--cm-fs-base: 12.5px;
|
|
81
|
+
--cm-fs-title: 13px;
|
|
82
|
+
/* 间距 scale(9 档) */
|
|
83
|
+
--cm-sp-1: 2px; --cm-sp-2: 4px; --cm-sp-3: 6px; --cm-sp-4: 8px; --cm-sp-5: 10px;
|
|
84
|
+
--cm-sp-6: 12px; --cm-sp-7: 14px; --cm-sp-8: 16px; --cm-sp-9: 24px;
|
|
85
|
+
/* 圆角 scale(4 档) */
|
|
86
|
+
--cm-r-1: 4px; --cm-r-2: 6px; --cm-r-3: 8px; --cm-r-pill: 999px;
|
|
87
|
+
/* 控件高(3 档) */
|
|
88
|
+
--cm-h-sm: 24px; --cm-h-md: 28px; --cm-h-lg: 32px;
|
|
89
|
+
/* 阴影与焦点环 */
|
|
90
|
+
--cm-shadow-1: 0 10px 26px color-mix(in srgb, var(--dsw-alias-bg-base) 45%, transparent);
|
|
91
|
+
--cm-shadow-2: 0 12px 32px color-mix(in srgb, var(--dsw-alias-bg-base) 40%, transparent);
|
|
92
|
+
--cm-ring: 0 0 0 2px color-mix(in srgb, var(--cm-accent) 18%, transparent);
|
|
93
|
+
--cm-ring-strong: 0 0 0 2px color-mix(in srgb, var(--cm-accent) 55%, transparent);
|
|
94
|
+
/* 层级(6 档语义) */
|
|
95
|
+
--cm-z-raise: 1; --cm-z-sticky: 2; --cm-z-task: 90; --cm-z-mask: 100;
|
|
96
|
+
--cm-z-modal: 101; --cm-z-pop: 110; --cm-z-toast: 120;
|
|
57
97
|
}
|
|
58
98
|
|
|
59
99
|
/* 交互过渡统一参数(hover/focus 颜色过渡;仅颜色属性,克制) */
|
|
@@ -65,7 +105,7 @@
|
|
|
65
105
|
|
|
66
106
|
/* 键盘焦点环:仅键盘导航(:focus-visible)触发 */
|
|
67
107
|
.section :is(button, a, input, select, textarea, [role='tab']):focus-visible {
|
|
68
|
-
outline: 2px solid var(--
|
|
108
|
+
outline: 2px solid var(--cm-accent);
|
|
69
109
|
outline-offset: 2px;
|
|
70
110
|
}
|
|
71
111
|
|
|
@@ -123,7 +163,7 @@
|
|
|
123
163
|
position: relative;
|
|
124
164
|
display: inline-flex;
|
|
125
165
|
align-items: center;
|
|
126
|
-
gap:
|
|
166
|
+
gap: 4px;
|
|
127
167
|
flex: none;
|
|
128
168
|
height: 24px;
|
|
129
169
|
padding: 0 10px;
|
|
@@ -146,15 +186,15 @@
|
|
|
146
186
|
|
|
147
187
|
.navTab:focus-visible,
|
|
148
188
|
.navMore:focus-visible {
|
|
149
|
-
outline: 2px solid var(--
|
|
189
|
+
outline: 2px solid var(--cm-accent);
|
|
150
190
|
outline-offset: 1px;
|
|
151
191
|
border-radius: 6px;
|
|
152
192
|
}
|
|
153
193
|
|
|
154
194
|
.navTab[data-active],
|
|
155
195
|
.navMore[data-active] {
|
|
156
|
-
background: color-mix(in srgb, var(--
|
|
157
|
-
box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--
|
|
196
|
+
background: color-mix(in srgb, var(--cm-accent) 16%, transparent);
|
|
197
|
+
box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--cm-accent) 45%, transparent);
|
|
158
198
|
color: var(--dsw-alias-label-primary);
|
|
159
199
|
font-weight: 600;
|
|
160
200
|
}
|
|
@@ -164,7 +204,7 @@
|
|
|
164
204
|
width: 6px;
|
|
165
205
|
height: 6px;
|
|
166
206
|
border-radius: 50%;
|
|
167
|
-
background: var(--
|
|
207
|
+
background: var(--cm-error);
|
|
168
208
|
flex: none;
|
|
169
209
|
}
|
|
170
210
|
|
|
@@ -201,8 +241,8 @@
|
|
|
201
241
|
|
|
202
242
|
/* 导航条动作按钮激活态(面板打开时对应按钮高亮) */
|
|
203
243
|
.navActions .ghostButton[data-active] {
|
|
204
|
-
border-color: color-mix(in srgb, var(--
|
|
205
|
-
color: var(--
|
|
244
|
+
border-color: color-mix(in srgb, var(--cm-accent) 55%, transparent);
|
|
245
|
+
color: var(--cm-accent);
|
|
206
246
|
}
|
|
207
247
|
|
|
208
248
|
/* —— 图标按钮(工具栏/导航通用) —— */
|
|
@@ -217,8 +257,8 @@
|
|
|
217
257
|
border-radius: 6px;
|
|
218
258
|
background: none;
|
|
219
259
|
font: inherit;
|
|
220
|
-
font-size:
|
|
221
|
-
line-height: 1;
|
|
260
|
+
font-size: 13px;
|
|
261
|
+
line-height: 1.25;
|
|
222
262
|
color: var(--dsw-alias-label-secondary);
|
|
223
263
|
cursor: pointer;
|
|
224
264
|
align-self: center;
|
|
@@ -230,7 +270,7 @@
|
|
|
230
270
|
}
|
|
231
271
|
|
|
232
272
|
.iconBtn:focus-visible {
|
|
233
|
-
outline: 2px solid var(--
|
|
273
|
+
outline: 2px solid var(--cm-accent);
|
|
234
274
|
outline-offset: 1px;
|
|
235
275
|
}
|
|
236
276
|
|
|
@@ -248,29 +288,19 @@
|
|
|
248
288
|
}
|
|
249
289
|
|
|
250
290
|
.iconBtn[data-active] {
|
|
251
|
-
background: color-mix(in srgb, var(--
|
|
252
|
-
color: var(--
|
|
291
|
+
background: color-mix(in srgb, var(--cm-accent) 14%, transparent);
|
|
292
|
+
color: var(--cm-accent);
|
|
253
293
|
}
|
|
254
294
|
|
|
255
295
|
/* 危险语义图标按钮(行内删除等破坏性动作的视觉隔离) */
|
|
256
296
|
.iconBtn[data-danger] {
|
|
257
|
-
color: var(--
|
|
297
|
+
color: var(--cm-error);
|
|
258
298
|
}
|
|
259
299
|
|
|
260
300
|
.iconBtn[data-danger]:hover {
|
|
261
|
-
background: color-mix(in srgb, var(--
|
|
262
|
-
border-color: var(--
|
|
263
|
-
color: var(--
|
|
264
|
-
}
|
|
265
|
-
|
|
266
|
-
/* 行内动作分隔(安全操作与破坏性操作之间的 1px 竖线) */
|
|
267
|
-
.rowDivider {
|
|
268
|
-
width: 1px;
|
|
269
|
-
height: 14px;
|
|
270
|
-
background: var(--dsw-alias-border-l2);
|
|
271
|
-
margin: 0 2px;
|
|
272
|
-
flex: none;
|
|
273
|
-
align-self: center;
|
|
301
|
+
background: color-mix(in srgb, var(--cm-error) 12%, transparent);
|
|
302
|
+
border-color: var(--cm-error);
|
|
303
|
+
color: var(--cm-error);
|
|
274
304
|
}
|
|
275
305
|
|
|
276
306
|
/* —— 页面主体(滚动区):flex 链让页面内容可伸展填满视口高度 —— */
|
|
@@ -385,7 +415,7 @@
|
|
|
385
415
|
.taskPanel {
|
|
386
416
|
position: absolute;
|
|
387
417
|
inset: 0;
|
|
388
|
-
z-index:
|
|
418
|
+
z-index: var(--cm-z-task);
|
|
389
419
|
display: flex;
|
|
390
420
|
flex-direction: column;
|
|
391
421
|
min-height: 0;
|
|
@@ -450,6 +480,58 @@
|
|
|
450
480
|
overflow: hidden;
|
|
451
481
|
}
|
|
452
482
|
|
|
483
|
+
/* 全局横幅槽位(SAFE MODE 等):v3 起由类提供内边距 —— 壳层里不再写内联 style。 */
|
|
484
|
+
.bannerSlot {
|
|
485
|
+
padding: 8px 12px 0;
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
/* v3:通道卡折叠体(SyncPanel)—— Collapse 的内层不是 flex 容器,多张卡片直接堆叠会贴在一起,
|
|
489
|
+
这里补回与 .viewBody 一致的 10px 节奏(入口卡与折叠体之间也留 10px)。 */
|
|
490
|
+
.syncChannelBody {
|
|
491
|
+
margin-top: 10px;
|
|
492
|
+
}
|
|
493
|
+
|
|
494
|
+
.syncChannelBody .collapseInner {
|
|
495
|
+
display: flex;
|
|
496
|
+
flex-direction: column;
|
|
497
|
+
gap: 10px;
|
|
498
|
+
}
|
|
499
|
+
|
|
500
|
+
/* 状态栏里的「进行中任务名」:弱化一档,与状态文本并排但不抢焦点。 */
|
|
501
|
+
.statusTask {
|
|
502
|
+
color: var(--dsw-alias-label-secondary);
|
|
503
|
+
font-weight: 600;
|
|
504
|
+
}
|
|
505
|
+
|
|
506
|
+
/* 状态栏的细进度条:**恒为不定态** —— 本层只有「在跑 / 没跑」,真实百分比住在宿主
|
|
507
|
+
/progress 的轮询结果里。编一个百分比或画成静止满格都是在撒谎(未知不显示 0 同理)。
|
|
508
|
+
prefers-reduced-motion 下**刻意保留**:它承载「正在进行」这个状态本身。 */
|
|
509
|
+
.statusProgress {
|
|
510
|
+
display: inline-block;
|
|
511
|
+
position: relative;
|
|
512
|
+
width: 60px;
|
|
513
|
+
height: 4px;
|
|
514
|
+
flex: none;
|
|
515
|
+
border-radius: 999px;
|
|
516
|
+
overflow: hidden;
|
|
517
|
+
background: color-mix(in srgb, var(--cm-accent) 20%, transparent);
|
|
518
|
+
}
|
|
519
|
+
|
|
520
|
+
.statusProgress::after {
|
|
521
|
+
content: '';
|
|
522
|
+
position: absolute;
|
|
523
|
+
inset: 0 auto 0 0;
|
|
524
|
+
width: 40%;
|
|
525
|
+
border-radius: 999px;
|
|
526
|
+
background: var(--cm-accent);
|
|
527
|
+
animation: statusIndeterminate 1.2s var(--cm-motion-ease-in-out) infinite;
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
@keyframes statusIndeterminate {
|
|
531
|
+
0% { transform: translateX(-100%); }
|
|
532
|
+
100% { transform: translateX(250%); }
|
|
533
|
+
}
|
|
534
|
+
|
|
453
535
|
.statusDot {
|
|
454
536
|
display: inline-block;
|
|
455
537
|
width: 7px;
|
|
@@ -462,19 +544,19 @@
|
|
|
462
544
|
}
|
|
463
545
|
|
|
464
546
|
.statusDot[data-kind='ok'] {
|
|
465
|
-
background: var(--
|
|
547
|
+
background: var(--cm-ok);
|
|
466
548
|
}
|
|
467
549
|
|
|
468
550
|
.statusDot[data-kind='info'] {
|
|
469
|
-
background: var(--
|
|
551
|
+
background: var(--cm-accent);
|
|
470
552
|
}
|
|
471
553
|
|
|
472
554
|
.statusDot[data-kind='warn'] {
|
|
473
|
-
background: var(--
|
|
555
|
+
background: var(--cm-warn);
|
|
474
556
|
}
|
|
475
557
|
|
|
476
558
|
.statusDot[data-kind='error'] {
|
|
477
|
-
background: var(--
|
|
559
|
+
background: var(--cm-error);
|
|
478
560
|
}
|
|
479
561
|
|
|
480
562
|
.statusDot[data-pulse] {
|
|
@@ -489,6 +571,8 @@
|
|
|
489
571
|
.statusText {
|
|
490
572
|
overflow: hidden;
|
|
491
573
|
text-overflow: ellipsis;
|
|
574
|
+
/* flex 行内的文本需要显式 min-width:0 才会真正省略,否则自动最小尺寸 = 内容宽度 */
|
|
575
|
+
min-width: 0;
|
|
492
576
|
}
|
|
493
577
|
|
|
494
578
|
.statusSpacer {
|
|
@@ -517,19 +601,19 @@
|
|
|
517
601
|
font: inherit;
|
|
518
602
|
font-size: 12.5px;
|
|
519
603
|
font-weight: 600;
|
|
520
|
-
line-height: 1;
|
|
604
|
+
line-height: 1.25;
|
|
521
605
|
white-space: nowrap;
|
|
522
606
|
cursor: pointer;
|
|
523
607
|
user-select: none;
|
|
524
608
|
}
|
|
525
609
|
|
|
526
610
|
.primaryButton {
|
|
527
|
-
background: var(--
|
|
611
|
+
background: var(--cm-accent-fill);
|
|
528
612
|
color: var(--dsw-alias-label-primary-foreground);
|
|
529
613
|
}
|
|
530
614
|
|
|
531
615
|
.primaryButton:hover:not(:disabled) {
|
|
532
|
-
background: var(--
|
|
616
|
+
background: var(--cm-accent-hover);
|
|
533
617
|
}
|
|
534
618
|
|
|
535
619
|
.ghostButton {
|
|
@@ -544,19 +628,19 @@
|
|
|
544
628
|
|
|
545
629
|
.dangerButton {
|
|
546
630
|
background: transparent;
|
|
547
|
-
border-color: color-mix(in srgb, var(--
|
|
548
|
-
color: var(--
|
|
631
|
+
border-color: color-mix(in srgb, var(--cm-error) 45%, transparent);
|
|
632
|
+
color: var(--cm-error);
|
|
549
633
|
}
|
|
550
634
|
|
|
551
635
|
.dangerButton:hover:not(:disabled) {
|
|
552
|
-
background: color-mix(in srgb, var(--
|
|
553
|
-
border-color: var(--
|
|
636
|
+
background: color-mix(in srgb, var(--cm-error) 12%, transparent);
|
|
637
|
+
border-color: var(--cm-error);
|
|
554
638
|
}
|
|
555
639
|
|
|
556
640
|
.primaryButton:focus-visible,
|
|
557
641
|
.ghostButton:focus-visible,
|
|
558
642
|
.dangerButton:focus-visible {
|
|
559
|
-
outline: 2px solid var(--
|
|
643
|
+
outline: 2px solid var(--cm-accent);
|
|
560
644
|
outline-offset: 1px;
|
|
561
645
|
}
|
|
562
646
|
|
|
@@ -573,8 +657,8 @@
|
|
|
573
657
|
.dangerButton[data-size='sm'] {
|
|
574
658
|
height: 24px;
|
|
575
659
|
padding: 0 8px;
|
|
576
|
-
font-size:
|
|
577
|
-
border-radius:
|
|
660
|
+
font-size: 11px;
|
|
661
|
+
border-radius: 6px;
|
|
578
662
|
}
|
|
579
663
|
|
|
580
664
|
/* —— 输入 / 选择 —— */
|
|
@@ -605,13 +689,13 @@
|
|
|
605
689
|
}
|
|
606
690
|
|
|
607
691
|
.input:hover {
|
|
608
|
-
border-color: color-mix(in srgb, var(--
|
|
692
|
+
border-color: color-mix(in srgb, var(--cm-accent) 40%, var(--dsw-alias-border-l2));
|
|
609
693
|
}
|
|
610
694
|
|
|
611
695
|
.input:focus {
|
|
612
696
|
outline: none;
|
|
613
|
-
border-color: var(--
|
|
614
|
-
box-shadow: 0 0 0 2px color-mix(in srgb, var(--
|
|
697
|
+
border-color: var(--cm-accent);
|
|
698
|
+
box-shadow: 0 0 0 2px color-mix(in srgb, var(--cm-accent) 18%, transparent);
|
|
615
699
|
}
|
|
616
700
|
|
|
617
701
|
.input:disabled {
|
|
@@ -661,15 +745,15 @@
|
|
|
661
745
|
}
|
|
662
746
|
|
|
663
747
|
.selectTrigger:hover {
|
|
664
|
-
border-color: color-mix(in srgb, var(--
|
|
748
|
+
border-color: color-mix(in srgb, var(--cm-accent) 40%, var(--dsw-alias-border-l2));
|
|
665
749
|
}
|
|
666
750
|
|
|
667
751
|
/* 展开态与键盘焦点同一视觉(都是「这个控件当前活着」) */
|
|
668
752
|
.selectTrigger:focus-visible,
|
|
669
753
|
.selectRoot[data-open] .selectTrigger {
|
|
670
754
|
outline: none;
|
|
671
|
-
border-color: var(--
|
|
672
|
-
box-shadow: 0 0 0 2px color-mix(in srgb, var(--
|
|
755
|
+
border-color: var(--cm-accent);
|
|
756
|
+
box-shadow: 0 0 0 2px color-mix(in srgb, var(--cm-accent) 18%, transparent);
|
|
673
757
|
}
|
|
674
758
|
|
|
675
759
|
.selectTrigger:disabled {
|
|
@@ -706,7 +790,7 @@
|
|
|
706
790
|
top / left / min-width / max-height 一律由组件量测后写入内联样式(动态坐标无法用静态类表达)。 */
|
|
707
791
|
.selectMenu {
|
|
708
792
|
position: absolute;
|
|
709
|
-
z-index:
|
|
793
|
+
z-index: var(--cm-z-pop);
|
|
710
794
|
/* 不要写 min-width:100% —— portal 后它相对 **.section** 解析(实测弹层宽 521px),
|
|
711
795
|
而组件的内联 minWidth 已是「触发器宽度」,那才是想要的。
|
|
712
796
|
z-index 取 110:高于弹窗卡片(101)与遮罩(100),低于通知层(120)。 */
|
|
@@ -780,10 +864,10 @@
|
|
|
780
864
|
`aria-checked` 是 MoreMenu 的 menuitemradio 用的选中态(listbox 才用 aria-selected)。 */
|
|
781
865
|
.selectOption[aria-selected='true'],
|
|
782
866
|
.selectOption[aria-checked='true'] {
|
|
783
|
-
color: var(--
|
|
867
|
+
color: var(--cm-accent);
|
|
784
868
|
font-weight: 600;
|
|
785
|
-
background: color-mix(in srgb, var(--
|
|
786
|
-
box-shadow: inset 2px 0 0 var(--
|
|
869
|
+
background: color-mix(in srgb, var(--cm-accent) 10%, transparent);
|
|
870
|
+
box-shadow: inset 2px 0 0 var(--cm-accent);
|
|
787
871
|
}
|
|
788
872
|
|
|
789
873
|
.selectOption[data-disabled] {
|
|
@@ -835,10 +919,10 @@
|
|
|
835
919
|
}
|
|
836
920
|
|
|
837
921
|
.libraryFilter[data-active] {
|
|
838
|
-
color: var(--
|
|
922
|
+
color: var(--cm-accent);
|
|
839
923
|
font-weight: 600;
|
|
840
|
-
background: color-mix(in srgb, var(--
|
|
841
|
-
box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--
|
|
924
|
+
background: color-mix(in srgb, var(--cm-accent) 16%, transparent);
|
|
925
|
+
box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--cm-accent) 45%, transparent);
|
|
842
926
|
}
|
|
843
927
|
|
|
844
928
|
/* 计数:只在对应来源加载成功后渲染(加载中/失败时整个不出现,绝不显示 0) */
|
|
@@ -868,8 +952,8 @@
|
|
|
868
952
|
|
|
869
953
|
.librarySearch:focus-visible {
|
|
870
954
|
outline: none;
|
|
871
|
-
border-color: var(--
|
|
872
|
-
box-shadow: 0 0 0 2px color-mix(in srgb, var(--
|
|
955
|
+
border-color: var(--cm-accent);
|
|
956
|
+
box-shadow: 0 0 0 2px color-mix(in srgb, var(--cm-accent) 18%, transparent);
|
|
873
957
|
}
|
|
874
958
|
|
|
875
959
|
/* 底栏:计数 + 三个「新增产物」入口。**不显示合计体积**(四源里只有备份文件有体积) */
|
|
@@ -926,7 +1010,7 @@
|
|
|
926
1010
|
}
|
|
927
1011
|
|
|
928
1012
|
.artifactRow[data-expanded] {
|
|
929
|
-
background: color-mix(in srgb, var(--
|
|
1013
|
+
background: color-mix(in srgb, var(--cm-accent) 5%, transparent);
|
|
930
1014
|
}
|
|
931
1015
|
|
|
932
1016
|
/* 行高 52px = 标题 19 + 元数据 17 + 上下 padding 8(§6.2 的页面预算按它算) */
|
|
@@ -961,7 +1045,7 @@
|
|
|
961
1045
|
}
|
|
962
1046
|
|
|
963
1047
|
.artifactExpand:focus-visible {
|
|
964
|
-
outline: 2px solid var(--
|
|
1048
|
+
outline: 2px solid var(--cm-accent);
|
|
965
1049
|
outline-offset: 1px;
|
|
966
1050
|
}
|
|
967
1051
|
|
|
@@ -1066,8 +1150,8 @@
|
|
|
1066
1150
|
|
|
1067
1151
|
.paletteInput:focus-visible {
|
|
1068
1152
|
outline: none;
|
|
1069
|
-
border-color: var(--
|
|
1070
|
-
box-shadow: 0 0 0 2px color-mix(in srgb, var(--
|
|
1153
|
+
border-color: var(--cm-accent);
|
|
1154
|
+
box-shadow: 0 0 0 2px color-mix(in srgb, var(--cm-accent) 18%, transparent);
|
|
1071
1155
|
}
|
|
1072
1156
|
|
|
1073
1157
|
/* 限高内滚:与 planScroll / reportScroll / pickerList 同一条长列表纪律 */
|
|
@@ -1150,7 +1234,7 @@
|
|
|
1150
1234
|
.radioLabel {
|
|
1151
1235
|
display: flex;
|
|
1152
1236
|
align-items: flex-start;
|
|
1153
|
-
gap:
|
|
1237
|
+
gap: 6px;
|
|
1154
1238
|
cursor: pointer;
|
|
1155
1239
|
font-size: 12.5px;
|
|
1156
1240
|
color: var(--dsw-alias-label-primary);
|
|
@@ -1161,14 +1245,14 @@
|
|
|
1161
1245
|
width: 14px;
|
|
1162
1246
|
height: 14px;
|
|
1163
1247
|
margin: 2px 0 0;
|
|
1164
|
-
accent-color: var(--
|
|
1248
|
+
accent-color: var(--cm-accent);
|
|
1165
1249
|
cursor: pointer;
|
|
1166
1250
|
flex: none;
|
|
1167
1251
|
}
|
|
1168
1252
|
|
|
1169
1253
|
.checkboxRow input:focus-visible,
|
|
1170
1254
|
.radioLabel input:focus-visible {
|
|
1171
|
-
outline: 2px solid var(--
|
|
1255
|
+
outline: 2px solid var(--cm-accent);
|
|
1172
1256
|
outline-offset: 2px;
|
|
1173
1257
|
}
|
|
1174
1258
|
|
|
@@ -1178,40 +1262,16 @@
|
|
|
1178
1262
|
align-items: center;
|
|
1179
1263
|
gap: 4px;
|
|
1180
1264
|
height: 18px;
|
|
1181
|
-
padding: 0
|
|
1182
|
-
border-radius:
|
|
1183
|
-
font-size:
|
|
1265
|
+
padding: 0 6px;
|
|
1266
|
+
border-radius: 8px;
|
|
1267
|
+
font-size: 11px;
|
|
1184
1268
|
font-weight: 600;
|
|
1185
|
-
line-height: 1;
|
|
1269
|
+
line-height: 1.25;
|
|
1186
1270
|
white-space: nowrap;
|
|
1187
1271
|
border: 1px solid var(--dsw-alias-border-l2);
|
|
1188
1272
|
color: var(--dsw-alias-label-secondary);
|
|
1189
1273
|
}
|
|
1190
1274
|
|
|
1191
|
-
.badgeOk {
|
|
1192
|
-
border-color: transparent;
|
|
1193
|
-
background: color-mix(in srgb, var(--dsw-alias-state-success-primary) 14%, transparent);
|
|
1194
|
-
color: var(--dsw-alias-state-success-primary);
|
|
1195
|
-
}
|
|
1196
|
-
|
|
1197
|
-
.badgeInfo {
|
|
1198
|
-
border-color: color-mix(in srgb, var(--dsw-alias-state-business-primary) 30%, transparent);
|
|
1199
|
-
background: transparent;
|
|
1200
|
-
color: var(--dsw-alias-label-secondary);
|
|
1201
|
-
}
|
|
1202
|
-
|
|
1203
|
-
.badgeWarn {
|
|
1204
|
-
border-color: transparent;
|
|
1205
|
-
background: color-mix(in srgb, var(--dsw-alias-state-warn-primary) 14%, transparent);
|
|
1206
|
-
color: var(--dsw-alias-state-warn-primary);
|
|
1207
|
-
}
|
|
1208
|
-
|
|
1209
|
-
.badgeError {
|
|
1210
|
-
border-color: transparent;
|
|
1211
|
-
background: color-mix(in srgb, var(--dsw-alias-state-error-primary) 14%, transparent);
|
|
1212
|
-
color: var(--dsw-alias-state-error-primary);
|
|
1213
|
-
}
|
|
1214
|
-
|
|
1215
1275
|
/* —— 横幅(四态;紧凑) —— */
|
|
1216
1276
|
.banner {
|
|
1217
1277
|
animation: itemEnter var(--cm-motion-base) var(--cm-motion-ease-out);
|
|
@@ -1231,30 +1291,30 @@
|
|
|
1231
1291
|
}
|
|
1232
1292
|
|
|
1233
1293
|
.banner[data-kind='ok'] {
|
|
1234
|
-
border-color: color-mix(in srgb, var(--
|
|
1235
|
-
background: color-mix(in srgb, var(--
|
|
1294
|
+
border-color: color-mix(in srgb, var(--cm-ok) 35%, transparent);
|
|
1295
|
+
background: color-mix(in srgb, var(--cm-ok) 9%, transparent);
|
|
1236
1296
|
}
|
|
1237
1297
|
|
|
1238
1298
|
.banner[data-kind='info'] {
|
|
1239
|
-
border-color: color-mix(in srgb, var(--
|
|
1240
|
-
background: color-mix(in srgb, var(--
|
|
1299
|
+
border-color: color-mix(in srgb, var(--cm-accent) 30%, transparent);
|
|
1300
|
+
background: color-mix(in srgb, var(--cm-accent) 8%, transparent);
|
|
1241
1301
|
}
|
|
1242
1302
|
|
|
1243
1303
|
.banner[data-kind='warn'] {
|
|
1244
|
-
border-color: color-mix(in srgb, var(--
|
|
1245
|
-
background: color-mix(in srgb, var(--
|
|
1304
|
+
border-color: color-mix(in srgb, var(--cm-warn) 40%, transparent);
|
|
1305
|
+
background: color-mix(in srgb, var(--cm-warn) 9%, transparent);
|
|
1246
1306
|
}
|
|
1247
1307
|
|
|
1248
1308
|
.banner[data-kind='error'] {
|
|
1249
|
-
border-color: color-mix(in srgb, var(--
|
|
1250
|
-
background: color-mix(in srgb, var(--
|
|
1309
|
+
border-color: color-mix(in srgb, var(--cm-error) 45%, transparent);
|
|
1310
|
+
background: color-mix(in srgb, var(--cm-error) 9%, transparent);
|
|
1251
1311
|
}
|
|
1252
1312
|
|
|
1253
1313
|
/* —— Spinner —— */
|
|
1254
1314
|
.spinnerWrap {
|
|
1255
1315
|
display: inline-flex;
|
|
1256
1316
|
align-items: center;
|
|
1257
|
-
gap:
|
|
1317
|
+
gap: 6px;
|
|
1258
1318
|
vertical-align: middle;
|
|
1259
1319
|
}
|
|
1260
1320
|
|
|
@@ -1345,7 +1405,7 @@
|
|
|
1345
1405
|
}
|
|
1346
1406
|
|
|
1347
1407
|
/* 形态:标题 / 正文行 / 区块 / 行条目 */
|
|
1348
|
-
.skeletonTitle { height: 13px; width: 42%; border-radius:
|
|
1408
|
+
.skeletonTitle { height: 13px; width: 42%; border-radius: 6px; }
|
|
1349
1409
|
.skeletonLine { height: 11px; }
|
|
1350
1410
|
.skeletonBlock { height: 46px; border-radius: 8px; }
|
|
1351
1411
|
.skeletonRow { height: 30px; border-radius: 6px; }
|
|
@@ -1407,7 +1467,7 @@
|
|
|
1407
1467
|
|
|
1408
1468
|
/* 骨架下方的可见文案(与 Spinner 的 label 同义):加载反馈必须能被读到,不只靠色块 */
|
|
1409
1469
|
.skeletonCaption {
|
|
1410
|
-
font-size:
|
|
1470
|
+
font-size: 11px;
|
|
1411
1471
|
color: var(--dsw-alias-label-tertiary);
|
|
1412
1472
|
}
|
|
1413
1473
|
|
|
@@ -1474,20 +1534,20 @@
|
|
|
1474
1534
|
}
|
|
1475
1535
|
|
|
1476
1536
|
.fieldLabel {
|
|
1477
|
-
font-size:
|
|
1537
|
+
font-size: 11px;
|
|
1478
1538
|
font-weight: 600;
|
|
1479
1539
|
color: var(--dsw-alias-label-secondary);
|
|
1480
1540
|
}
|
|
1481
1541
|
|
|
1482
1542
|
.hint {
|
|
1483
|
-
font-size:
|
|
1543
|
+
font-size: 11px;
|
|
1484
1544
|
line-height: 1.5;
|
|
1485
1545
|
color: var(--dsw-alias-label-tertiary);
|
|
1486
1546
|
}
|
|
1487
1547
|
|
|
1488
1548
|
.formError {
|
|
1489
|
-
font-size:
|
|
1490
|
-
color: var(--
|
|
1549
|
+
font-size: 11px;
|
|
1550
|
+
color: var(--cm-error);
|
|
1491
1551
|
}
|
|
1492
1552
|
|
|
1493
1553
|
/* —— ⓘ 说明原语(common/InfoHint.tsx,2026-10)——
|
|
@@ -1517,7 +1577,7 @@
|
|
|
1517
1577
|
border-radius: 4px;
|
|
1518
1578
|
background: none;
|
|
1519
1579
|
font: inherit;
|
|
1520
|
-
line-height: 1;
|
|
1580
|
+
line-height: 1.25;
|
|
1521
1581
|
color: var(--dsw-alias-label-tertiary);
|
|
1522
1582
|
cursor: pointer;
|
|
1523
1583
|
flex: none;
|
|
@@ -1535,7 +1595,7 @@
|
|
|
1535
1595
|
那条路径下气泡不会打开(见 InfoHint.tsx 的 onFocus)—— 于是焦点环与 data-open 同进同出:
|
|
1536
1596
|
键盘用户 Tab 到 ⓘ 时气泡必然同时打开,焦点环照常可见,可访问性不受影响。 */
|
|
1537
1597
|
.infoHintBtn[data-open]:focus-visible {
|
|
1538
|
-
outline: 2px solid var(--
|
|
1598
|
+
outline: 2px solid var(--cm-accent);
|
|
1539
1599
|
outline-offset: 1px;
|
|
1540
1600
|
}
|
|
1541
1601
|
|
|
@@ -1546,14 +1606,14 @@
|
|
|
1546
1606
|
|
|
1547
1607
|
/* 点击固定后的锁定态(与 .iconBtn[data-active] 同一视觉语言) */
|
|
1548
1608
|
.infoHintBtn[data-pinned] {
|
|
1549
|
-
background: color-mix(in srgb, var(--
|
|
1550
|
-
color: var(--
|
|
1609
|
+
background: color-mix(in srgb, var(--cm-accent) 14%, transparent);
|
|
1610
|
+
color: var(--cm-accent);
|
|
1551
1611
|
}
|
|
1552
1612
|
|
|
1553
1613
|
.infoHintBubble {
|
|
1554
1614
|
position: fixed;
|
|
1555
1615
|
/* 高于 Dialog 内容层(.dialogMask 100 / .dialogContentCenter 101),低于通知层(120) */
|
|
1556
|
-
z-index:
|
|
1616
|
+
z-index: var(--cm-z-pop);
|
|
1557
1617
|
box-sizing: border-box;
|
|
1558
1618
|
max-width: min(260px, calc(100vw - 24px));
|
|
1559
1619
|
/* 高度的结构性上限:保证气泡在宿主 564×720 画布内**永远**放得下(480 + 上下 8px 边距 < 720;
|
|
@@ -1567,7 +1627,7 @@
|
|
|
1567
1627
|
background: var(--dsw-alias-bg-layer-2);
|
|
1568
1628
|
box-shadow: 0 10px 26px color-mix(in srgb, var(--dsw-alias-bg-base) 45%, transparent);
|
|
1569
1629
|
color: var(--dsw-alias-label-secondary);
|
|
1570
|
-
font-size:
|
|
1630
|
+
font-size: 11px;
|
|
1571
1631
|
line-height: 1.5;
|
|
1572
1632
|
/* 多行换行:长文本折行、显式换行符保留,绝不省略号截断 */
|
|
1573
1633
|
white-space: pre-wrap;
|
|
@@ -1616,13 +1676,13 @@
|
|
|
1616
1676
|
margin: 0;
|
|
1617
1677
|
font-size: 13px;
|
|
1618
1678
|
font-weight: 700;
|
|
1619
|
-
line-height: 1.
|
|
1679
|
+
line-height: 1.5;
|
|
1620
1680
|
color: var(--dsw-alias-label-primary);
|
|
1621
1681
|
}
|
|
1622
1682
|
|
|
1623
1683
|
.sectionSubtitle {
|
|
1624
1684
|
margin: 1px 0 0;
|
|
1625
|
-
font-size:
|
|
1685
|
+
font-size: 11px;
|
|
1626
1686
|
color: var(--dsw-alias-label-tertiary);
|
|
1627
1687
|
}
|
|
1628
1688
|
|
|
@@ -1634,7 +1694,7 @@
|
|
|
1634
1694
|
align-items: center;
|
|
1635
1695
|
justify-content: center;
|
|
1636
1696
|
gap: 4px;
|
|
1637
|
-
padding:
|
|
1697
|
+
padding: 24px 16px;
|
|
1638
1698
|
border: 1px dashed var(--dsw-alias-border-l2);
|
|
1639
1699
|
border-radius: 8px;
|
|
1640
1700
|
text-align: center;
|
|
@@ -1645,39 +1705,6 @@
|
|
|
1645
1705
|
box-sizing: border-box;
|
|
1646
1706
|
}
|
|
1647
1707
|
|
|
1648
|
-
/* 居中空态页(大块空视图:垂直居中 + 图形 + CTA,替代贴顶小虚线框) */
|
|
1649
|
-
.emptyHero {
|
|
1650
|
-
flex: 1 1 auto;
|
|
1651
|
-
display: flex;
|
|
1652
|
-
flex-direction: column;
|
|
1653
|
-
align-items: center;
|
|
1654
|
-
justify-content: center;
|
|
1655
|
-
gap: 6px;
|
|
1656
|
-
min-height: 320px;
|
|
1657
|
-
text-align: center;
|
|
1658
|
-
}
|
|
1659
|
-
|
|
1660
|
-
.emptyHeroSymbol {
|
|
1661
|
-
font-size: 30px;
|
|
1662
|
-
line-height: 1;
|
|
1663
|
-
color: var(--dsw-alias-label-tertiary);
|
|
1664
|
-
opacity: 0.75;
|
|
1665
|
-
}
|
|
1666
|
-
|
|
1667
|
-
.emptyHeroTitle {
|
|
1668
|
-
font-size: 13px;
|
|
1669
|
-
font-weight: 700;
|
|
1670
|
-
color: var(--dsw-alias-label-primary);
|
|
1671
|
-
}
|
|
1672
|
-
|
|
1673
|
-
.emptyHeroBody {
|
|
1674
|
-
max-width: 340px;
|
|
1675
|
-
font-size: 12px;
|
|
1676
|
-
line-height: 1.6;
|
|
1677
|
-
color: var(--dsw-alias-label-tertiary);
|
|
1678
|
-
margin: 0 0 6px;
|
|
1679
|
-
}
|
|
1680
|
-
|
|
1681
1708
|
/* 首用空态的三步引导(复用 .stepper,仅补与上下文的间距) */
|
|
1682
1709
|
.emptySteps {
|
|
1683
1710
|
margin: 2px 0 10px;
|
|
@@ -1743,7 +1770,7 @@
|
|
|
1743
1770
|
.dataTable th {
|
|
1744
1771
|
position: sticky;
|
|
1745
1772
|
top: 0;
|
|
1746
|
-
z-index:
|
|
1773
|
+
z-index: var(--cm-z-raise);
|
|
1747
1774
|
padding: 6px 10px;
|
|
1748
1775
|
text-align: left;
|
|
1749
1776
|
font-size: 11px;
|
|
@@ -1774,13 +1801,13 @@
|
|
|
1774
1801
|
}
|
|
1775
1802
|
|
|
1776
1803
|
.dataTable tbody tr[data-selected] {
|
|
1777
|
-
background: color-mix(in srgb, var(--
|
|
1804
|
+
background: color-mix(in srgb, var(--cm-accent) 9%, transparent);
|
|
1778
1805
|
}
|
|
1779
1806
|
|
|
1780
1807
|
.dataTable .num {
|
|
1781
1808
|
text-align: right;
|
|
1782
1809
|
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
1783
|
-
font-size:
|
|
1810
|
+
font-size: 12px;
|
|
1784
1811
|
white-space: nowrap;
|
|
1785
1812
|
}
|
|
1786
1813
|
|
|
@@ -1805,7 +1832,7 @@
|
|
|
1805
1832
|
.rowActions {
|
|
1806
1833
|
display: inline-flex;
|
|
1807
1834
|
align-items: center;
|
|
1808
|
-
gap:
|
|
1835
|
+
gap: 2px;
|
|
1809
1836
|
}
|
|
1810
1837
|
|
|
1811
1838
|
/* 表格主列:名称 + 内联元数据(固定最小高度,避免「有徽章/备注」与「无」的行高跳动) */
|
|
@@ -1835,15 +1862,6 @@
|
|
|
1835
1862
|
min-width: 0;
|
|
1836
1863
|
}
|
|
1837
1864
|
|
|
1838
|
-
/* 备注文本:作为 cellMeta 的可收缩子项,单行省略(避免硬截断无 … 的「未完成感」 */
|
|
1839
|
-
.cellMetaNote {
|
|
1840
|
-
display: inline-flex;
|
|
1841
|
-
align-items: center;
|
|
1842
|
-
gap: 3px;
|
|
1843
|
-
min-width: 0;
|
|
1844
|
-
flex: 0 1 auto;
|
|
1845
|
-
}
|
|
1846
|
-
|
|
1847
1865
|
/* 备注文字本体:块级省略(text-overflow 需作用于可收缩的块/inline-block 文本元素) */
|
|
1848
1866
|
.cellMetaNoteText {
|
|
1849
1867
|
min-width: 0;
|
|
@@ -1860,7 +1878,7 @@
|
|
|
1860
1878
|
}
|
|
1861
1879
|
|
|
1862
1880
|
.warnText {
|
|
1863
|
-
color: var(--
|
|
1881
|
+
color: var(--cm-warn);
|
|
1864
1882
|
}
|
|
1865
1883
|
|
|
1866
1884
|
/* —— 键值行 —— */
|
|
@@ -1868,7 +1886,7 @@
|
|
|
1868
1886
|
display: flex;
|
|
1869
1887
|
align-items: baseline;
|
|
1870
1888
|
gap: 10px;
|
|
1871
|
-
padding:
|
|
1889
|
+
padding: 4px 0;
|
|
1872
1890
|
border-bottom: 1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 55%, transparent);
|
|
1873
1891
|
font-size: 12px;
|
|
1874
1892
|
min-width: 0;
|
|
@@ -1889,7 +1907,7 @@
|
|
|
1889
1907
|
flex: none;
|
|
1890
1908
|
width: 88px;
|
|
1891
1909
|
color: var(--dsw-alias-label-tertiary);
|
|
1892
|
-
font-size:
|
|
1910
|
+
font-size: 11px;
|
|
1893
1911
|
}
|
|
1894
1912
|
|
|
1895
1913
|
.kvValue {
|
|
@@ -1899,7 +1917,7 @@
|
|
|
1899
1917
|
}
|
|
1900
1918
|
|
|
1901
1919
|
.kvValue.mono {
|
|
1902
|
-
font-size:
|
|
1920
|
+
font-size: 12px;
|
|
1903
1921
|
color: var(--dsw-alias-label-secondary);
|
|
1904
1922
|
}
|
|
1905
1923
|
|
|
@@ -1911,7 +1929,7 @@
|
|
|
1911
1929
|
gap: 2px;
|
|
1912
1930
|
padding: 2px;
|
|
1913
1931
|
border: 1px solid var(--dsw-alias-border-l2);
|
|
1914
|
-
border-radius:
|
|
1932
|
+
border-radius: 8px;
|
|
1915
1933
|
background: var(--dsw-alias-bg-base);
|
|
1916
1934
|
margin: 0 0 10px;
|
|
1917
1935
|
}
|
|
@@ -1920,14 +1938,14 @@
|
|
|
1920
1938
|
.modeTab {
|
|
1921
1939
|
display: inline-flex;
|
|
1922
1940
|
align-items: center;
|
|
1923
|
-
gap:
|
|
1941
|
+
gap: 4px;
|
|
1924
1942
|
height: 22px;
|
|
1925
|
-
padding: 0
|
|
1943
|
+
padding: 0 8px;
|
|
1926
1944
|
border: none;
|
|
1927
|
-
border-radius:
|
|
1945
|
+
border-radius: 6px;
|
|
1928
1946
|
background: none;
|
|
1929
1947
|
font: inherit;
|
|
1930
|
-
font-size:
|
|
1948
|
+
font-size: 11px;
|
|
1931
1949
|
font-weight: 500;
|
|
1932
1950
|
color: var(--dsw-alias-label-secondary);
|
|
1933
1951
|
cursor: pointer;
|
|
@@ -1941,7 +1959,7 @@
|
|
|
1941
1959
|
|
|
1942
1960
|
.segItem:focus-visible,
|
|
1943
1961
|
.modeTab:focus-visible {
|
|
1944
|
-
outline: 2px solid var(--
|
|
1962
|
+
outline: 2px solid var(--cm-accent);
|
|
1945
1963
|
outline-offset: 1px;
|
|
1946
1964
|
}
|
|
1947
1965
|
|
|
@@ -1954,7 +1972,7 @@
|
|
|
1954
1972
|
}
|
|
1955
1973
|
|
|
1956
1974
|
.modeHint {
|
|
1957
|
-
font-size:
|
|
1975
|
+
font-size: 11px;
|
|
1958
1976
|
color: var(--dsw-alias-label-tertiary);
|
|
1959
1977
|
margin: -4px 0 10px;
|
|
1960
1978
|
}
|
|
@@ -1985,7 +2003,7 @@
|
|
|
1985
2003
|
.stepperStep {
|
|
1986
2004
|
display: inline-flex;
|
|
1987
2005
|
align-items: center;
|
|
1988
|
-
gap:
|
|
2006
|
+
gap: 4px;
|
|
1989
2007
|
flex: none;
|
|
1990
2008
|
}
|
|
1991
2009
|
|
|
@@ -1997,7 +2015,7 @@
|
|
|
1997
2015
|
height: 17px;
|
|
1998
2016
|
border-radius: 50%;
|
|
1999
2017
|
border: 1.5px solid var(--dsw-alias-border-l2);
|
|
2000
|
-
font-size:
|
|
2018
|
+
font-size: 11px;
|
|
2001
2019
|
font-weight: 700;
|
|
2002
2020
|
color: var(--dsw-alias-label-tertiary);
|
|
2003
2021
|
background: var(--dsw-alias-bg-layer-2);
|
|
@@ -2005,15 +2023,15 @@
|
|
|
2005
2023
|
}
|
|
2006
2024
|
|
|
2007
2025
|
.stepperDot[data-state='current'] {
|
|
2008
|
-
border-color: var(--
|
|
2009
|
-
background: var(--
|
|
2026
|
+
border-color: var(--cm-accent);
|
|
2027
|
+
background: var(--cm-accent);
|
|
2010
2028
|
color: var(--dsw-alias-label-primary-foreground);
|
|
2011
2029
|
}
|
|
2012
2030
|
|
|
2013
2031
|
.stepperDot[data-state='done'] {
|
|
2014
2032
|
border-color: transparent;
|
|
2015
|
-
background: color-mix(in srgb, var(--
|
|
2016
|
-
color: var(--
|
|
2033
|
+
background: color-mix(in srgb, var(--cm-ok) 16%, transparent);
|
|
2034
|
+
color: var(--cm-ok);
|
|
2017
2035
|
}
|
|
2018
2036
|
|
|
2019
2037
|
.stepperLabel {
|
|
@@ -2034,13 +2052,13 @@
|
|
|
2034
2052
|
.stepperConnector {
|
|
2035
2053
|
width: 14px;
|
|
2036
2054
|
height: 1.5px;
|
|
2037
|
-
margin: 0
|
|
2055
|
+
margin: 0 4px;
|
|
2038
2056
|
background: var(--dsw-alias-border-l2);
|
|
2039
2057
|
flex: none;
|
|
2040
2058
|
}
|
|
2041
2059
|
|
|
2042
2060
|
.stepperStep[data-state='done'] .stepperConnector {
|
|
2043
|
-
background: color-mix(in srgb, var(--
|
|
2061
|
+
background: color-mix(in srgb, var(--cm-ok) 45%, transparent);
|
|
2044
2062
|
}
|
|
2045
2063
|
|
|
2046
2064
|
/* —— 进度条 —— */
|
|
@@ -2051,7 +2069,7 @@
|
|
|
2051
2069
|
.progressTrack {
|
|
2052
2070
|
position: relative;
|
|
2053
2071
|
height: 5px;
|
|
2054
|
-
border-radius:
|
|
2072
|
+
border-radius: 4px;
|
|
2055
2073
|
background: color-mix(in srgb, var(--dsw-alias-border-l1) 80%, transparent);
|
|
2056
2074
|
overflow: hidden;
|
|
2057
2075
|
}
|
|
@@ -2059,18 +2077,18 @@
|
|
|
2059
2077
|
.progressBar {
|
|
2060
2078
|
position: absolute;
|
|
2061
2079
|
inset: 0 auto 0 0;
|
|
2062
|
-
border-radius:
|
|
2063
|
-
background: var(--
|
|
2080
|
+
border-radius: 4px;
|
|
2081
|
+
background: var(--cm-accent);
|
|
2064
2082
|
transition: width var(--cm-motion-slow) var(--cm-motion-ease-out);
|
|
2065
2083
|
}
|
|
2066
2084
|
|
|
2067
2085
|
.progressBarDone {
|
|
2068
|
-
background: var(--
|
|
2086
|
+
background: var(--cm-ok);
|
|
2069
2087
|
}
|
|
2070
2088
|
|
|
2071
2089
|
/* 已结束但结论为失败:绝不沿用 success 绿(运行中心里失败的任务必须一眼看出不是「成功」) */
|
|
2072
2090
|
.progressBarFailed {
|
|
2073
|
-
background: var(--
|
|
2091
|
+
background: var(--cm-error);
|
|
2074
2092
|
}
|
|
2075
2093
|
|
|
2076
2094
|
.progressIndeterminate {
|
|
@@ -2078,8 +2096,8 @@
|
|
|
2078
2096
|
top: 0;
|
|
2079
2097
|
bottom: 0;
|
|
2080
2098
|
width: 34%;
|
|
2081
|
-
border-radius:
|
|
2082
|
-
background: var(--
|
|
2099
|
+
border-radius: 4px;
|
|
2100
|
+
background: var(--cm-accent);
|
|
2083
2101
|
animation: indet 1.15s var(--cm-motion-ease-in-out) infinite;
|
|
2084
2102
|
}
|
|
2085
2103
|
|
|
@@ -2092,8 +2110,8 @@
|
|
|
2092
2110
|
display: flex;
|
|
2093
2111
|
align-items: center;
|
|
2094
2112
|
gap: 8px;
|
|
2095
|
-
margin-top:
|
|
2096
|
-
font-size:
|
|
2113
|
+
margin-top: 4px;
|
|
2114
|
+
font-size: 11px;
|
|
2097
2115
|
color: var(--dsw-alias-label-secondary);
|
|
2098
2116
|
}
|
|
2099
2117
|
|
|
@@ -2120,9 +2138,9 @@
|
|
|
2120
2138
|
}
|
|
2121
2139
|
|
|
2122
2140
|
.progressBadgeCount {
|
|
2123
|
-
padding: 0
|
|
2141
|
+
padding: 0 4px;
|
|
2124
2142
|
border-radius: 8px;
|
|
2125
|
-
background: color-mix(in srgb, var(--
|
|
2143
|
+
background: color-mix(in srgb, var(--cm-info) 14%, transparent);
|
|
2126
2144
|
color: var(--dsw-alias-label-secondary);
|
|
2127
2145
|
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
2128
2146
|
}
|
|
@@ -2132,7 +2150,7 @@
|
|
|
2132
2150
|
}
|
|
2133
2151
|
|
|
2134
2152
|
.progressDetail {
|
|
2135
|
-
margin-top:
|
|
2153
|
+
margin-top: 2px;
|
|
2136
2154
|
font-size: 11px;
|
|
2137
2155
|
color: var(--dsw-alias-label-tertiary);
|
|
2138
2156
|
}
|
|
@@ -2170,7 +2188,7 @@
|
|
|
2170
2188
|
.dialogMask {
|
|
2171
2189
|
position: fixed;
|
|
2172
2190
|
inset: 0;
|
|
2173
|
-
z-index:
|
|
2191
|
+
z-index: var(--cm-z-mask);
|
|
2174
2192
|
display: flex;
|
|
2175
2193
|
align-items: center;
|
|
2176
2194
|
justify-content: center;
|
|
@@ -2191,7 +2209,7 @@
|
|
|
2191
2209
|
top: 50%;
|
|
2192
2210
|
left: 50%;
|
|
2193
2211
|
transform: translate(-50%, -50%);
|
|
2194
|
-
z-index:
|
|
2212
|
+
z-index: var(--cm-z-modal);
|
|
2195
2213
|
/* 弹窗卡片入场:**只淡入,不缩放**。
|
|
2196
2214
|
为什么去掉 scale:本类靠 translate(-50%,-50%) 自居中,而 scale 会同时改变内容盒的
|
|
2197
2215
|
可见尺寸 → 卡片高度在动画期间变化 → 视觉上「先在偏下的位置出现,再闪到中心」
|
|
@@ -2239,7 +2257,7 @@
|
|
|
2239
2257
|
display: flex;
|
|
2240
2258
|
flex-direction: column;
|
|
2241
2259
|
border: 1px solid var(--dsw-alias-border-l1);
|
|
2242
|
-
border-radius:
|
|
2260
|
+
border-radius: 8px;
|
|
2243
2261
|
background: var(--dsw-alias-bg-layer-2);
|
|
2244
2262
|
box-shadow: 0 12px 32px color-mix(in srgb, var(--dsw-alias-bg-base) 40%, transparent);
|
|
2245
2263
|
}
|
|
@@ -2299,6 +2317,33 @@
|
|
|
2299
2317
|
border-top: 1px solid var(--dsw-alias-border-l1);
|
|
2300
2318
|
}
|
|
2301
2319
|
|
|
2320
|
+
/* —— 插件自更新弹窗(「新版本 → 立即更新」,2026-10)——
|
|
2321
|
+
版本行 + 更新说明(正文排版由共享原语 ReleaseBody 提供)+ 状态横幅;
|
|
2322
|
+
成功态在此提示「请重启 DSH 生效」。 */
|
|
2323
|
+
.updateVersionRow {
|
|
2324
|
+
display: flex;
|
|
2325
|
+
align-items: center;
|
|
2326
|
+
flex-wrap: wrap;
|
|
2327
|
+
gap: 8px;
|
|
2328
|
+
margin-bottom: 10px;
|
|
2329
|
+
}
|
|
2330
|
+
|
|
2331
|
+
.updateVersionArrow {
|
|
2332
|
+
color: var(--dsw-alias-label-tertiary);
|
|
2333
|
+
}
|
|
2334
|
+
|
|
2335
|
+
.updateVersionTarget {
|
|
2336
|
+
font-size: 13px;
|
|
2337
|
+
font-weight: 600;
|
|
2338
|
+
color: var(--dsw-alias-label-primary);
|
|
2339
|
+
}
|
|
2340
|
+
|
|
2341
|
+
.updateNotesLoading {
|
|
2342
|
+
display: flex;
|
|
2343
|
+
justify-content: center;
|
|
2344
|
+
padding: 24px 0;
|
|
2345
|
+
}
|
|
2346
|
+
|
|
2302
2347
|
/* —— 全局通知(右下角堆叠) ——
|
|
2303
2348
|
定位:absolute 贴合 .section(非 fixed/Portal),确保落在宿主弹窗层叠上下文内;
|
|
2304
2349
|
容器不吃指针事件,避免遮挡右下角的页面点击(状态栏/列表),仅卡片自身可交互。 */
|
|
@@ -2309,7 +2354,7 @@
|
|
|
2309
2354
|
/* 高于页面内容、状态栏(无)、弹窗遮罩(100)与卡片(101):弹窗打开期间触发的通知
|
|
2310
2355
|
不能落在遮罩之下(否则被 55% 不透明遮罩盖住而严重褪色)。
|
|
2311
2356
|
仍留在插件层叠上下文内,因此不会越过宿主 overlay(z-index: 1000)。 */
|
|
2312
|
-
z-index:
|
|
2357
|
+
z-index: var(--cm-z-toast);
|
|
2313
2358
|
display: flex;
|
|
2314
2359
|
flex-direction: column;
|
|
2315
2360
|
align-items: flex-end;
|
|
@@ -2331,7 +2376,7 @@
|
|
|
2331
2376
|
background: var(--dsw-alias-bg-layer-2);
|
|
2332
2377
|
box-shadow: 0 8px 24px color-mix(in srgb, var(--dsw-alias-bg-base) 45%, transparent);
|
|
2333
2378
|
font-size: 12px;
|
|
2334
|
-
line-height: 1.
|
|
2379
|
+
line-height: 1.5;
|
|
2335
2380
|
color: var(--dsw-alias-label-primary);
|
|
2336
2381
|
animation: toastIn var(--cm-motion-base) var(--cm-motion-ease-out);
|
|
2337
2382
|
}
|
|
@@ -2343,31 +2388,31 @@
|
|
|
2343
2388
|
|
|
2344
2389
|
/* 四态语义:左侧色条 + 图标着色(复用 Badge/Banner 的 --dsw-* 状态色) */
|
|
2345
2390
|
.toast[data-kind='ok'] {
|
|
2346
|
-
border-color: color-mix(in srgb, var(--
|
|
2391
|
+
border-color: color-mix(in srgb, var(--cm-ok) 40%, transparent);
|
|
2347
2392
|
}
|
|
2348
2393
|
|
|
2349
2394
|
.toast[data-kind='ok'] .toastGlyph {
|
|
2350
|
-
color: var(--
|
|
2395
|
+
color: var(--cm-ok);
|
|
2351
2396
|
}
|
|
2352
2397
|
|
|
2353
2398
|
.toast[data-kind='info'] .toastGlyph {
|
|
2354
|
-
color: var(--
|
|
2399
|
+
color: var(--cm-accent);
|
|
2355
2400
|
}
|
|
2356
2401
|
|
|
2357
2402
|
.toast[data-kind='warn'] {
|
|
2358
|
-
border-color: color-mix(in srgb, var(--
|
|
2403
|
+
border-color: color-mix(in srgb, var(--cm-warn) 40%, transparent);
|
|
2359
2404
|
}
|
|
2360
2405
|
|
|
2361
2406
|
.toast[data-kind='warn'] .toastGlyph {
|
|
2362
|
-
color: var(--
|
|
2407
|
+
color: var(--cm-warn);
|
|
2363
2408
|
}
|
|
2364
2409
|
|
|
2365
2410
|
.toast[data-kind='error'] {
|
|
2366
|
-
border-color: color-mix(in srgb, var(--
|
|
2411
|
+
border-color: color-mix(in srgb, var(--cm-error) 45%, transparent);
|
|
2367
2412
|
}
|
|
2368
2413
|
|
|
2369
2414
|
.toast[data-kind='error'] .toastGlyph {
|
|
2370
|
-
color: var(--
|
|
2415
|
+
color: var(--cm-error);
|
|
2371
2416
|
}
|
|
2372
2417
|
|
|
2373
2418
|
.toastGlyph {
|
|
@@ -2410,6 +2455,13 @@
|
|
|
2410
2455
|
color: inherit;
|
|
2411
2456
|
text-align: left;
|
|
2412
2457
|
cursor: pointer;
|
|
2458
|
+
/* v3 修正(真机反馈「进度条与文字紧贴着」):按钮里并排三段 —— 状态文本 / 任务名 /
|
|
2459
|
+
细进度条。它们此前是普通内联内容,没有任何间距。inline-flex + gap 给出一致的行内
|
|
2460
|
+
节奏(flex 会把连续文本包成匿名 flex 项,所以「1 个任务进行中」与任务名之间也有间距)。 */
|
|
2461
|
+
display: inline-flex;
|
|
2462
|
+
align-items: center;
|
|
2463
|
+
gap: 8px;
|
|
2464
|
+
min-width: 0;
|
|
2413
2465
|
}
|
|
2414
2466
|
|
|
2415
2467
|
.statusAction:hover {
|
|
@@ -2418,7 +2470,7 @@
|
|
|
2418
2470
|
}
|
|
2419
2471
|
|
|
2420
2472
|
.statusAction:focus-visible {
|
|
2421
|
-
outline: 2px solid var(--
|
|
2473
|
+
outline: 2px solid var(--cm-accent);
|
|
2422
2474
|
outline-offset: 1px;
|
|
2423
2475
|
border-radius: 4px;
|
|
2424
2476
|
}
|
|
@@ -2460,9 +2512,9 @@
|
|
|
2460
2512
|
.runsWarnNote {
|
|
2461
2513
|
margin: 8px 0 0;
|
|
2462
2514
|
padding: 6px 8px;
|
|
2463
|
-
border: 1px solid color-mix(in srgb, var(--
|
|
2515
|
+
border: 1px solid color-mix(in srgb, var(--cm-warn) 45%, transparent);
|
|
2464
2516
|
border-radius: 6px;
|
|
2465
|
-
background: color-mix(in srgb, var(--
|
|
2517
|
+
background: color-mix(in srgb, var(--cm-warn) 10%, transparent);
|
|
2466
2518
|
font-size: 11px;
|
|
2467
2519
|
color: var(--dsw-alias-label-secondary);
|
|
2468
2520
|
}
|
|
@@ -2474,7 +2526,7 @@
|
|
|
2474
2526
|
|
|
2475
2527
|
.runsCardTime {
|
|
2476
2528
|
margin-left: auto;
|
|
2477
|
-
font-size:
|
|
2529
|
+
font-size: 11px;
|
|
2478
2530
|
color: var(--dsw-alias-label-tertiary);
|
|
2479
2531
|
white-space: nowrap;
|
|
2480
2532
|
}
|
|
@@ -2494,7 +2546,7 @@
|
|
|
2494
2546
|
border-radius: 6px;
|
|
2495
2547
|
background: var(--dsw-alias-bg-base);
|
|
2496
2548
|
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
2497
|
-
font-size:
|
|
2549
|
+
font-size: 11px;
|
|
2498
2550
|
line-height: 1.5;
|
|
2499
2551
|
color: var(--dsw-alias-label-secondary);
|
|
2500
2552
|
}
|
|
@@ -2515,10 +2567,10 @@
|
|
|
2515
2567
|
.runsOption {
|
|
2516
2568
|
display: flex;
|
|
2517
2569
|
flex-direction: column;
|
|
2518
|
-
gap:
|
|
2570
|
+
gap: 2px;
|
|
2519
2571
|
width: 100%;
|
|
2520
2572
|
margin: 0 0 8px;
|
|
2521
|
-
padding:
|
|
2573
|
+
padding: 8px 10px;
|
|
2522
2574
|
border: 1px solid var(--dsw-alias-border-l2);
|
|
2523
2575
|
border-radius: 8px;
|
|
2524
2576
|
background: var(--dsw-alias-bg-layer-2);
|
|
@@ -2529,17 +2581,17 @@
|
|
|
2529
2581
|
}
|
|
2530
2582
|
|
|
2531
2583
|
.runsOption:hover {
|
|
2532
|
-
border-color: var(--
|
|
2584
|
+
border-color: var(--cm-accent);
|
|
2533
2585
|
}
|
|
2534
2586
|
|
|
2535
2587
|
.runsOption:focus-visible {
|
|
2536
|
-
outline: 2px solid var(--
|
|
2588
|
+
outline: 2px solid var(--cm-accent);
|
|
2537
2589
|
outline-offset: 1px;
|
|
2538
2590
|
}
|
|
2539
2591
|
|
|
2540
2592
|
.runsOption[data-active] {
|
|
2541
|
-
border-color: var(--
|
|
2542
|
-
background: color-mix(in srgb, var(--
|
|
2593
|
+
border-color: var(--cm-accent);
|
|
2594
|
+
background: color-mix(in srgb, var(--cm-accent) 8%, transparent);
|
|
2543
2595
|
}
|
|
2544
2596
|
|
|
2545
2597
|
.runsOptionTitle {
|
|
@@ -2556,12 +2608,12 @@
|
|
|
2556
2608
|
}
|
|
2557
2609
|
|
|
2558
2610
|
.runsOptionTag {
|
|
2559
|
-
padding: 0
|
|
2611
|
+
padding: 0 4px;
|
|
2560
2612
|
border-radius: 999px;
|
|
2561
|
-
font-size:
|
|
2613
|
+
font-size: 11px;
|
|
2562
2614
|
font-weight: 600;
|
|
2563
|
-
background: color-mix(in srgb, var(--
|
|
2564
|
-
color: var(--
|
|
2615
|
+
background: color-mix(in srgb, var(--cm-accent) 14%, transparent);
|
|
2616
|
+
color: var(--cm-accent);
|
|
2565
2617
|
}
|
|
2566
2618
|
|
|
2567
2619
|
|
|
@@ -2591,18 +2643,6 @@
|
|
|
2591
2643
|
保留为原语,供后续需要独占一行的分段控件使用。)
|
|
2592
2644
|
注意:本类必须**自带分段控件外壳**(border/radius/padding/bg-base),
|
|
2593
2645
|
否则 `.modeTab[data-active]` 的选中底色(layer-2)会与 Card 底色相同而「隐形」。 */
|
|
2594
|
-
.tabRow {
|
|
2595
|
-
display: flex;
|
|
2596
|
-
align-items: center;
|
|
2597
|
-
gap: 2px;
|
|
2598
|
-
flex-wrap: wrap;
|
|
2599
|
-
width: fit-content;
|
|
2600
|
-
padding: 2px;
|
|
2601
|
-
border: 1px solid var(--dsw-alias-border-l2);
|
|
2602
|
-
border-radius: 7px;
|
|
2603
|
-
background: var(--dsw-alias-bg-base);
|
|
2604
|
-
margin: 10px 0 10px;
|
|
2605
|
-
}
|
|
2606
2646
|
|
|
2607
2647
|
/* 同步页「选择历史快照」空态提示行(原为行内 hint,独立成行以保持下拉与按钮同基线) */
|
|
2608
2648
|
.snapshotPickerHint {
|
|
@@ -2687,13 +2727,13 @@
|
|
|
2687
2727
|
}
|
|
2688
2728
|
|
|
2689
2729
|
.statStrip[data-tone='error'] {
|
|
2690
|
-
border-color: color-mix(in srgb, var(--
|
|
2691
|
-
background: color-mix(in srgb, var(--
|
|
2730
|
+
border-color: color-mix(in srgb, var(--cm-error) 45%, transparent);
|
|
2731
|
+
background: color-mix(in srgb, var(--cm-error) 7%, transparent);
|
|
2692
2732
|
}
|
|
2693
2733
|
|
|
2694
2734
|
.statStrip[data-tone='warn'] {
|
|
2695
|
-
border-color: color-mix(in srgb, var(--
|
|
2696
|
-
background: color-mix(in srgb, var(--
|
|
2735
|
+
border-color: color-mix(in srgb, var(--cm-warn) 40%, transparent);
|
|
2736
|
+
background: color-mix(in srgb, var(--cm-warn) 6%, transparent);
|
|
2697
2737
|
}
|
|
2698
2738
|
|
|
2699
2739
|
.statHealth {
|
|
@@ -2725,7 +2765,7 @@
|
|
|
2725
2765
|
}
|
|
2726
2766
|
|
|
2727
2767
|
.statHealthAction:focus-visible {
|
|
2728
|
-
outline: 2px solid var(--
|
|
2768
|
+
outline: 2px solid var(--cm-accent);
|
|
2729
2769
|
outline-offset: -2px;
|
|
2730
2770
|
border-radius: 6px;
|
|
2731
2771
|
}
|
|
@@ -2739,7 +2779,7 @@
|
|
|
2739
2779
|
border-left: 1px solid var(--dsw-alias-border-l1);
|
|
2740
2780
|
background: none;
|
|
2741
2781
|
font: inherit;
|
|
2742
|
-
font-size:
|
|
2782
|
+
font-size: 11px;
|
|
2743
2783
|
color: var(--dsw-alias-label-secondary);
|
|
2744
2784
|
white-space: nowrap;
|
|
2745
2785
|
cursor: pointer;
|
|
@@ -2761,7 +2801,7 @@
|
|
|
2761
2801
|
}
|
|
2762
2802
|
|
|
2763
2803
|
.statSeg:focus-visible {
|
|
2764
|
-
outline: 2px solid var(--
|
|
2804
|
+
outline: 2px solid var(--cm-accent);
|
|
2765
2805
|
outline-offset: -2px;
|
|
2766
2806
|
}
|
|
2767
2807
|
|
|
@@ -2784,22 +2824,6 @@
|
|
|
2784
2824
|
margin-bottom: 10px;
|
|
2785
2825
|
}
|
|
2786
2826
|
|
|
2787
|
-
.infoRow {
|
|
2788
|
-
display: flex;
|
|
2789
|
-
align-items: baseline;
|
|
2790
|
-
gap: 8px;
|
|
2791
|
-
min-width: 0;
|
|
2792
|
-
font-size: 12px;
|
|
2793
|
-
padding: 2px 0;
|
|
2794
|
-
}
|
|
2795
|
-
|
|
2796
|
-
.infoKey {
|
|
2797
|
-
flex: none;
|
|
2798
|
-
width: 76px;
|
|
2799
|
-
color: var(--dsw-alias-label-tertiary);
|
|
2800
|
-
font-size: 11.5px;
|
|
2801
|
-
}
|
|
2802
|
-
|
|
2803
2827
|
.infoValue {
|
|
2804
2828
|
flex: 1 1 auto;
|
|
2805
2829
|
min-width: 0;
|
|
@@ -2829,7 +2853,7 @@
|
|
|
2829
2853
|
background: none;
|
|
2830
2854
|
font: inherit;
|
|
2831
2855
|
font-size: 11px;
|
|
2832
|
-
line-height: 1;
|
|
2856
|
+
line-height: 1.25;
|
|
2833
2857
|
color: var(--dsw-alias-label-tertiary);
|
|
2834
2858
|
cursor: pointer;
|
|
2835
2859
|
flex: none;
|
|
@@ -2841,7 +2865,7 @@
|
|
|
2841
2865
|
}
|
|
2842
2866
|
|
|
2843
2867
|
.copyBtn:focus-visible {
|
|
2844
|
-
outline: 2px solid var(--
|
|
2868
|
+
outline: 2px solid var(--cm-accent);
|
|
2845
2869
|
outline-offset: 1px;
|
|
2846
2870
|
}
|
|
2847
2871
|
|
|
@@ -2855,7 +2879,7 @@
|
|
|
2855
2879
|
opacity: 1;
|
|
2856
2880
|
}
|
|
2857
2881
|
|
|
2858
|
-
/* ——
|
|
2882
|
+
/* —— 活动卡(**首页最后一个数据块**:吃掉剩余高度,列表自身内滚;Canvas 纪律) —— */
|
|
2859
2883
|
.activityCard {
|
|
2860
2884
|
display: flex;
|
|
2861
2885
|
flex-direction: column;
|
|
@@ -2906,9 +2930,10 @@
|
|
|
2906
2930
|
}
|
|
2907
2931
|
|
|
2908
2932
|
.activityRows {
|
|
2909
|
-
/*
|
|
2910
|
-
|
|
2911
|
-
|
|
2933
|
+
/* v3:卡片刻意吃掉首页剩余高度(.fillCard),列表随之伸展并自身内滚 —— 否则首页底部
|
|
2934
|
+
会留出大片空白(用户真机反馈「太空旷」)。min-height:0 是可收缩的前提:没有它,
|
|
2935
|
+
列表的自动最小尺寸 = 内容高度,卡片会被 30 行撑破而不是滚动。 */
|
|
2936
|
+
flex: 1 1 auto;
|
|
2912
2937
|
min-height: 0;
|
|
2913
2938
|
overflow-y: auto;
|
|
2914
2939
|
border: 1px solid var(--dsw-alias-border-l1);
|
|
@@ -2916,19 +2941,15 @@
|
|
|
2916
2941
|
background: var(--dsw-alias-bg-base);
|
|
2917
2942
|
}
|
|
2918
2943
|
|
|
2919
|
-
/* 自适应上限变体:fit-content,超过 8 行内部滚动(不再强制撑出空黑块) */
|
|
2920
|
-
.activityFit {
|
|
2921
|
-
max-height: 272px;
|
|
2922
|
-
}
|
|
2923
2944
|
|
|
2924
2945
|
.activityRow {
|
|
2925
2946
|
display: grid;
|
|
2926
2947
|
grid-template-columns: 72px minmax(0, 1fr) auto;
|
|
2927
2948
|
align-items: center;
|
|
2928
2949
|
gap: 10px;
|
|
2929
|
-
padding:
|
|
2950
|
+
padding: 4px 10px;
|
|
2930
2951
|
border-bottom: 1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 55%, transparent);
|
|
2931
|
-
font-size:
|
|
2952
|
+
font-size: 12px;
|
|
2932
2953
|
line-height: 1.5;
|
|
2933
2954
|
min-width: 0;
|
|
2934
2955
|
}
|
|
@@ -2942,7 +2963,7 @@
|
|
|
2942
2963
|
line-height: 1.5;
|
|
2943
2964
|
color: var(--dsw-alias-label-tertiary);
|
|
2944
2965
|
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
2945
|
-
font-size:
|
|
2966
|
+
font-size: 11px;
|
|
2946
2967
|
white-space: nowrap;
|
|
2947
2968
|
}
|
|
2948
2969
|
|
|
@@ -2983,7 +3004,7 @@
|
|
|
2983
3004
|
.activityResultOk {
|
|
2984
3005
|
display: inline-flex;
|
|
2985
3006
|
align-items: center;
|
|
2986
|
-
gap:
|
|
3007
|
+
gap: 4px;
|
|
2987
3008
|
line-height: 1.5;
|
|
2988
3009
|
font-size: 11px;
|
|
2989
3010
|
color: var(--dsw-alias-label-tertiary);
|
|
@@ -3005,7 +3026,7 @@
|
|
|
3005
3026
|
}
|
|
3006
3027
|
|
|
3007
3028
|
.factLabel {
|
|
3008
|
-
font-size:
|
|
3029
|
+
font-size: 11px;
|
|
3009
3030
|
color: var(--dsw-alias-label-tertiary);
|
|
3010
3031
|
white-space: nowrap;
|
|
3011
3032
|
}
|
|
@@ -3025,7 +3046,7 @@
|
|
|
3025
3046
|
.sectionGrid {
|
|
3026
3047
|
display: grid;
|
|
3027
3048
|
grid-template-columns: repeat(auto-fit, minmax(210px, 1fr));
|
|
3028
|
-
gap: 0
|
|
3049
|
+
gap: 0 24px;
|
|
3029
3050
|
}
|
|
3030
3051
|
|
|
3031
3052
|
.sectionRow {
|
|
@@ -3035,7 +3056,7 @@
|
|
|
3035
3056
|
gap: 10px;
|
|
3036
3057
|
padding: 4px 0;
|
|
3037
3058
|
border-bottom: 1px solid color-mix(in srgb, var(--dsw-alias-border-l1) 55%, transparent);
|
|
3038
|
-
font-size:
|
|
3059
|
+
font-size: 12px;
|
|
3039
3060
|
min-width: 0;
|
|
3040
3061
|
}
|
|
3041
3062
|
|
|
@@ -3056,14 +3077,14 @@
|
|
|
3056
3077
|
.sectionCount {
|
|
3057
3078
|
justify-self: end;
|
|
3058
3079
|
color: var(--dsw-alias-label-tertiary);
|
|
3059
|
-
font-size:
|
|
3080
|
+
font-size: 11px;
|
|
3060
3081
|
font-variant-numeric: tabular-nums;
|
|
3061
3082
|
white-space: nowrap;
|
|
3062
3083
|
}
|
|
3063
3084
|
|
|
3064
3085
|
.sectionSize {
|
|
3065
3086
|
justify-self: end;
|
|
3066
|
-
font-size:
|
|
3087
|
+
font-size: 11px;
|
|
3067
3088
|
color: var(--dsw-alias-label-secondary);
|
|
3068
3089
|
font-variant-numeric: tabular-nums;
|
|
3069
3090
|
white-space: nowrap;
|
|
@@ -3072,7 +3093,7 @@
|
|
|
3072
3093
|
/* 活动空态(紧凑) */
|
|
3073
3094
|
.activityEmpty {
|
|
3074
3095
|
padding: 16px;
|
|
3075
|
-
font-size:
|
|
3096
|
+
font-size: 11px;
|
|
3076
3097
|
color: var(--dsw-alias-label-tertiary);
|
|
3077
3098
|
text-align: center;
|
|
3078
3099
|
}
|
|
@@ -3100,8 +3121,8 @@
|
|
|
3100
3121
|
}
|
|
3101
3122
|
|
|
3102
3123
|
.snapshotRow[data-selected] {
|
|
3103
|
-
border-color: var(--
|
|
3104
|
-
background: color-mix(in srgb, var(--
|
|
3124
|
+
border-color: var(--cm-accent);
|
|
3125
|
+
background: color-mix(in srgb, var(--cm-accent) 7%, transparent);
|
|
3105
3126
|
}
|
|
3106
3127
|
|
|
3107
3128
|
.snapshotRowHeader {
|
|
@@ -3135,7 +3156,7 @@
|
|
|
3135
3156
|
font-weight: 500;
|
|
3136
3157
|
font-size: 12.5px;
|
|
3137
3158
|
word-break: break-all;
|
|
3138
|
-
line-height: 1.
|
|
3159
|
+
line-height: 1.5;
|
|
3139
3160
|
}
|
|
3140
3161
|
|
|
3141
3162
|
.snapshotRowMeta {
|
|
@@ -3144,7 +3165,7 @@
|
|
|
3144
3165
|
gap: 10px;
|
|
3145
3166
|
min-width: 0;
|
|
3146
3167
|
font-size: 12px;
|
|
3147
|
-
color: var(--dsw-alias-
|
|
3168
|
+
color: var(--dsw-alias-label-secondary);
|
|
3148
3169
|
}
|
|
3149
3170
|
|
|
3150
3171
|
.snapshotRowBadges {
|
|
@@ -3292,7 +3313,7 @@
|
|
|
3292
3313
|
.pickerOverlay {
|
|
3293
3314
|
position: absolute;
|
|
3294
3315
|
inset: 0;
|
|
3295
|
-
z-index:
|
|
3316
|
+
z-index: var(--cm-z-sticky);
|
|
3296
3317
|
/* 出现/消失原本是瞬时的:读取大分区时遮罩突然盖上来会像「闪一下」。 */
|
|
3297
3318
|
animation: maskIn var(--cm-motion-fast) var(--cm-motion-ease-out);
|
|
3298
3319
|
display: flex;
|
|
@@ -3362,12 +3383,12 @@
|
|
|
3362
3383
|
animation: itemEnter var(--cm-motion-base) var(--cm-motion-ease-out);
|
|
3363
3384
|
display: flex;
|
|
3364
3385
|
align-items: center;
|
|
3365
|
-
padding:
|
|
3386
|
+
padding: 2px 0 2px 16px;
|
|
3366
3387
|
min-width: 0;
|
|
3367
3388
|
}
|
|
3368
3389
|
|
|
3369
3390
|
.pickerUnitName {
|
|
3370
|
-
font-size:
|
|
3391
|
+
font-size: 12px;
|
|
3371
3392
|
color: var(--dsw-alias-label-primary);
|
|
3372
3393
|
/* 长单元名(长路径 / 会话标题)不得撑宽列表(UI-16):文本已由 tailWeightedEllipsis 中段省略,
|
|
3373
3394
|
这里再用 CSS 省略兜底实际容器宽度,行宽始终跟随容器而不是内容。完整值走 title。 */
|
|
@@ -3385,7 +3406,7 @@
|
|
|
3385
3406
|
display: flex;
|
|
3386
3407
|
align-items: center;
|
|
3387
3408
|
gap: 4px;
|
|
3388
|
-
padding:
|
|
3409
|
+
padding: 4px 0;
|
|
3389
3410
|
min-width: 0;
|
|
3390
3411
|
}
|
|
3391
3412
|
|
|
@@ -3408,7 +3429,7 @@
|
|
|
3408
3429
|
}
|
|
3409
3430
|
|
|
3410
3431
|
.pickerSubgroupName {
|
|
3411
|
-
font-size:
|
|
3432
|
+
font-size: 11px;
|
|
3412
3433
|
font-weight: 600;
|
|
3413
3434
|
color: var(--dsw-alias-label-secondary);
|
|
3414
3435
|
min-width: 0;
|
|
@@ -3427,20 +3448,20 @@
|
|
|
3427
3448
|
.pickerMore {
|
|
3428
3449
|
display: flex;
|
|
3429
3450
|
justify-content: center;
|
|
3430
|
-
padding: 4px 0 2px
|
|
3451
|
+
padding: 4px 0 2px 16px;
|
|
3431
3452
|
}
|
|
3432
3453
|
|
|
3433
3454
|
.pickerUnitDetail {
|
|
3434
3455
|
max-width: 220px;
|
|
3435
3456
|
overflow: hidden;
|
|
3436
|
-
font-size:
|
|
3457
|
+
font-size: 11px;
|
|
3437
3458
|
color: var(--dsw-alias-label-tertiary);
|
|
3438
3459
|
text-overflow: ellipsis;
|
|
3439
3460
|
white-space: nowrap;
|
|
3440
3461
|
}
|
|
3441
3462
|
|
|
3442
3463
|
.pickerCount {
|
|
3443
|
-
font-size:
|
|
3464
|
+
font-size: 11px;
|
|
3444
3465
|
color: var(--dsw-alias-label-tertiary);
|
|
3445
3466
|
font-variant-numeric: tabular-nums;
|
|
3446
3467
|
white-space: nowrap;
|
|
@@ -3457,7 +3478,7 @@
|
|
|
3457
3478
|
.optionsRow {
|
|
3458
3479
|
display: flex;
|
|
3459
3480
|
align-items: center;
|
|
3460
|
-
gap:
|
|
3481
|
+
gap: 16px;
|
|
3461
3482
|
|
|
3462
3483
|
/* ------------------------------------------------------------------
|
|
3463
3484
|
公告位(导出页 + 选内容弹窗共用)
|
|
@@ -3551,7 +3572,7 @@
|
|
|
3551
3572
|
.warnList {
|
|
3552
3573
|
margin: 4px 0 0;
|
|
3553
3574
|
padding-left: 18px;
|
|
3554
|
-
font-size:
|
|
3575
|
+
font-size: 11px;
|
|
3555
3576
|
color: var(--dsw-alias-label-secondary);
|
|
3556
3577
|
}
|
|
3557
3578
|
|
|
@@ -3577,7 +3598,7 @@
|
|
|
3577
3598
|
}
|
|
3578
3599
|
|
|
3579
3600
|
.conflictItem {
|
|
3580
|
-
border: 1px solid color-mix(in srgb, var(--
|
|
3601
|
+
border: 1px solid color-mix(in srgb, var(--cm-warn) 35%, transparent);
|
|
3581
3602
|
border-radius: 8px;
|
|
3582
3603
|
background: var(--dsw-alias-bg-layer-2);
|
|
3583
3604
|
padding: 10px 12px;
|
|
@@ -3618,10 +3639,10 @@
|
|
|
3618
3639
|
.choiceCard {
|
|
3619
3640
|
display: flex;
|
|
3620
3641
|
align-items: center;
|
|
3621
|
-
gap:
|
|
3642
|
+
gap: 6px;
|
|
3622
3643
|
padding: 8px 10px;
|
|
3623
3644
|
border: 1px solid var(--dsw-alias-border-l2);
|
|
3624
|
-
border-radius:
|
|
3645
|
+
border-radius: 8px;
|
|
3625
3646
|
background: var(--dsw-alias-bg-base);
|
|
3626
3647
|
font-size: 12px;
|
|
3627
3648
|
font-weight: 500;
|
|
@@ -3631,17 +3652,17 @@
|
|
|
3631
3652
|
}
|
|
3632
3653
|
|
|
3633
3654
|
.choiceCard:hover {
|
|
3634
|
-
border-color: color-mix(in srgb, var(--
|
|
3655
|
+
border-color: color-mix(in srgb, var(--cm-accent) 40%, var(--dsw-alias-border-l2));
|
|
3635
3656
|
}
|
|
3636
3657
|
|
|
3637
3658
|
.choiceCard:focus-within {
|
|
3638
|
-
outline: 2px solid var(--
|
|
3659
|
+
outline: 2px solid var(--cm-accent);
|
|
3639
3660
|
outline-offset: 1px;
|
|
3640
3661
|
}
|
|
3641
3662
|
|
|
3642
3663
|
.choiceCard[data-selected] {
|
|
3643
|
-
border-color: var(--
|
|
3644
|
-
background: color-mix(in srgb, var(--
|
|
3664
|
+
border-color: var(--cm-accent);
|
|
3665
|
+
background: color-mix(in srgb, var(--cm-accent) 9%, transparent);
|
|
3645
3666
|
color: var(--dsw-alias-label-primary);
|
|
3646
3667
|
}
|
|
3647
3668
|
|
|
@@ -3649,7 +3670,7 @@
|
|
|
3649
3670
|
width: 13px;
|
|
3650
3671
|
height: 13px;
|
|
3651
3672
|
margin: 0;
|
|
3652
|
-
accent-color: var(--
|
|
3673
|
+
accent-color: var(--cm-accent);
|
|
3653
3674
|
flex: none;
|
|
3654
3675
|
}
|
|
3655
3676
|
|
|
@@ -3681,7 +3702,7 @@
|
|
|
3681
3702
|
display: flex;
|
|
3682
3703
|
align-items: baseline;
|
|
3683
3704
|
gap: 8px;
|
|
3684
|
-
padding:
|
|
3705
|
+
padding: 4px 0;
|
|
3685
3706
|
}
|
|
3686
3707
|
|
|
3687
3708
|
/* 两行之间的分割线(第一行不加,避免与容器上边框重复) */
|
|
@@ -3719,7 +3740,7 @@
|
|
|
3719
3740
|
gap: 8px;
|
|
3720
3741
|
padding: 8px 10px;
|
|
3721
3742
|
border: 1px solid var(--dsw-alias-border-l1);
|
|
3722
|
-
border-radius:
|
|
3743
|
+
border-radius: 8px;
|
|
3723
3744
|
background: var(--dsw-alias-bg-layer-2);
|
|
3724
3745
|
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
3725
3746
|
font-size: 11px;
|
|
@@ -3733,7 +3754,7 @@
|
|
|
3733
3754
|
但不影响行内 flex 里的 select) */
|
|
3734
3755
|
display: flex;
|
|
3735
3756
|
flex-direction: column;
|
|
3736
|
-
padding:
|
|
3757
|
+
padding: 4px 8px;
|
|
3737
3758
|
border: 1px solid var(--dsw-alias-border-l2);
|
|
3738
3759
|
border-radius: 6px;
|
|
3739
3760
|
background: var(--dsw-alias-bg-base);
|
|
@@ -3815,7 +3836,7 @@
|
|
|
3815
3836
|
padding: 1px 10px;
|
|
3816
3837
|
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
3817
3838
|
font-size: 11px;
|
|
3818
|
-
line-height: 1.
|
|
3839
|
+
line-height: 1.5;
|
|
3819
3840
|
color: var(--dsw-alias-label-secondary);
|
|
3820
3841
|
white-space: pre-wrap;
|
|
3821
3842
|
overflow-wrap: anywhere;
|
|
@@ -3832,7 +3853,7 @@
|
|
|
3832
3853
|
background: none;
|
|
3833
3854
|
font: inherit;
|
|
3834
3855
|
font-size: 11px;
|
|
3835
|
-
color: var(--
|
|
3856
|
+
color: var(--cm-accent);
|
|
3836
3857
|
cursor: pointer;
|
|
3837
3858
|
padding: 0 4px;
|
|
3838
3859
|
}
|
|
@@ -3850,15 +3871,15 @@
|
|
|
3850
3871
|
|
|
3851
3872
|
/* 项状态行:按级别着色(✗ 红 / ⚠ 黄 / ✓ 绿 / ⏭ 灰 / ▶ 主文本)—— 一眼看出哪些要处理 */
|
|
3852
3873
|
.logLine[data-level='fail'] {
|
|
3853
|
-
color: var(--
|
|
3874
|
+
color: var(--cm-error);
|
|
3854
3875
|
}
|
|
3855
3876
|
|
|
3856
3877
|
.logLine[data-level='warn'] {
|
|
3857
|
-
color: var(--
|
|
3878
|
+
color: var(--cm-warn);
|
|
3858
3879
|
}
|
|
3859
3880
|
|
|
3860
3881
|
.logLine[data-level='ok'] {
|
|
3861
|
-
color: var(--
|
|
3882
|
+
color: var(--cm-ok);
|
|
3862
3883
|
}
|
|
3863
3884
|
|
|
3864
3885
|
.logLine[data-level='skip'] {
|
|
@@ -3874,7 +3895,7 @@
|
|
|
3874
3895
|
padding: 0 10px 0 22px;
|
|
3875
3896
|
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
3876
3897
|
font-size: 11px;
|
|
3877
|
-
line-height: 1.
|
|
3898
|
+
line-height: 1.5;
|
|
3878
3899
|
color: var(--dsw-alias-label-tertiary);
|
|
3879
3900
|
white-space: pre-wrap;
|
|
3880
3901
|
overflow-wrap: anywhere;
|
|
@@ -3897,7 +3918,7 @@
|
|
|
3897
3918
|
background: none;
|
|
3898
3919
|
font: inherit;
|
|
3899
3920
|
font-size: 11px;
|
|
3900
|
-
color: var(--
|
|
3921
|
+
color: var(--cm-accent);
|
|
3901
3922
|
cursor: pointer;
|
|
3902
3923
|
padding: 0 4px;
|
|
3903
3924
|
}
|
|
@@ -3973,14 +3994,14 @@
|
|
|
3973
3994
|
|
|
3974
3995
|
.reportProblemText {
|
|
3975
3996
|
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
3976
|
-
font-size:
|
|
3997
|
+
font-size: 12px;
|
|
3977
3998
|
color: var(--dsw-alias-label-primary);
|
|
3978
3999
|
overflow-wrap: anywhere;
|
|
3979
4000
|
}
|
|
3980
4001
|
|
|
3981
4002
|
.reportProblemReason {
|
|
3982
|
-
margin-top:
|
|
3983
|
-
font-size:
|
|
4003
|
+
margin-top: 2px;
|
|
4004
|
+
font-size: 11px;
|
|
3984
4005
|
line-height: 1.5;
|
|
3985
4006
|
color: var(--dsw-alias-label-secondary);
|
|
3986
4007
|
overflow-wrap: anywhere;
|
|
@@ -3996,16 +4017,16 @@
|
|
|
3996
4017
|
|
|
3997
4018
|
.reportWarningRow {
|
|
3998
4019
|
padding: 2px 10px;
|
|
3999
|
-
font-size:
|
|
4020
|
+
font-size: 11px;
|
|
4000
4021
|
line-height: 1.5;
|
|
4001
|
-
color: var(--
|
|
4022
|
+
color: var(--cm-warn);
|
|
4002
4023
|
overflow-wrap: anywhere;
|
|
4003
4024
|
}
|
|
4004
4025
|
|
|
4005
4026
|
/* 完整文本报告(渐进披露):结构化视图是主路径,这里是「逐字核对」的原文入口 */
|
|
4006
4027
|
.reportDetails {
|
|
4007
4028
|
margin-top: 4px;
|
|
4008
|
-
font-size:
|
|
4029
|
+
font-size: 11px;
|
|
4009
4030
|
color: var(--dsw-alias-label-tertiary);
|
|
4010
4031
|
}
|
|
4011
4032
|
|
|
@@ -4072,17 +4093,17 @@
|
|
|
4072
4093
|
display: flex;
|
|
4073
4094
|
align-items: flex-start;
|
|
4074
4095
|
gap: 8px;
|
|
4075
|
-
padding:
|
|
4076
|
-
border: 1px solid color-mix(in srgb, var(--
|
|
4096
|
+
padding: 8px 12px;
|
|
4097
|
+
border: 1px solid color-mix(in srgb, var(--cm-error) 45%, transparent);
|
|
4077
4098
|
border-radius: 8px;
|
|
4078
|
-
background: color-mix(in srgb, var(--
|
|
4099
|
+
background: color-mix(in srgb, var(--cm-error) 8%, transparent);
|
|
4079
4100
|
margin: 0 0 10px;
|
|
4080
4101
|
font-size: 12px;
|
|
4081
4102
|
}
|
|
4082
4103
|
|
|
4083
4104
|
.errorTitle {
|
|
4084
4105
|
font-weight: 600;
|
|
4085
|
-
color: var(--
|
|
4106
|
+
color: var(--cm-error);
|
|
4086
4107
|
}
|
|
4087
4108
|
|
|
4088
4109
|
.errorLine {
|
|
@@ -4096,7 +4117,7 @@
|
|
|
4096
4117
|
.errorList {
|
|
4097
4118
|
margin: 4px 0 0;
|
|
4098
4119
|
padding-left: 18px;
|
|
4099
|
-
font-size:
|
|
4120
|
+
font-size: 11px;
|
|
4100
4121
|
}
|
|
4101
4122
|
|
|
4102
4123
|
.errorItem {
|
|
@@ -4122,7 +4143,7 @@
|
|
|
4122
4143
|
}
|
|
4123
4144
|
|
|
4124
4145
|
.errorActionLabel {
|
|
4125
|
-
color: var(--
|
|
4146
|
+
color: var(--cm-accent);
|
|
4126
4147
|
}
|
|
4127
4148
|
|
|
4128
4149
|
/* 恢复计划 / 差异查看 */
|
|
@@ -4137,30 +4158,30 @@
|
|
|
4137
4158
|
padding: 0 6px;
|
|
4138
4159
|
border-radius: 4px;
|
|
4139
4160
|
background: var(--dsw-alias-interactive-bg-hover);
|
|
4140
|
-
font-size:
|
|
4161
|
+
font-size: 11px;
|
|
4141
4162
|
font-weight: 600;
|
|
4142
4163
|
color: var(--dsw-alias-label-secondary);
|
|
4143
4164
|
white-space: nowrap;
|
|
4144
4165
|
}
|
|
4145
4166
|
|
|
4146
4167
|
.kindTagOk {
|
|
4147
|
-
background: color-mix(in srgb, var(--
|
|
4148
|
-
color: var(--
|
|
4168
|
+
background: color-mix(in srgb, var(--cm-ok) 13%, transparent);
|
|
4169
|
+
color: var(--cm-ok);
|
|
4149
4170
|
}
|
|
4150
4171
|
|
|
4151
4172
|
.kindTagInfo {
|
|
4152
|
-
background: color-mix(in srgb, var(--
|
|
4153
|
-
color: var(--
|
|
4173
|
+
background: color-mix(in srgb, var(--cm-accent) 13%, transparent);
|
|
4174
|
+
color: var(--cm-accent);
|
|
4154
4175
|
}
|
|
4155
4176
|
|
|
4156
4177
|
.kindTagWarn {
|
|
4157
|
-
background: color-mix(in srgb, var(--
|
|
4158
|
-
color: var(--
|
|
4178
|
+
background: color-mix(in srgb, var(--cm-warn) 13%, transparent);
|
|
4179
|
+
color: var(--cm-warn);
|
|
4159
4180
|
}
|
|
4160
4181
|
|
|
4161
4182
|
.kindTagError {
|
|
4162
|
-
background: color-mix(in srgb, var(--
|
|
4163
|
-
color: var(--
|
|
4183
|
+
background: color-mix(in srgb, var(--cm-error) 13%, transparent);
|
|
4184
|
+
color: var(--cm-error);
|
|
4164
4185
|
}
|
|
4165
4186
|
|
|
4166
4187
|
/* —— git 风格恢复预览:分组行 + 左右双栏逐行对照(2026-09) ——
|
|
@@ -4206,14 +4227,14 @@
|
|
|
4206
4227
|
|
|
4207
4228
|
.restorePlanRow:focus-visible {
|
|
4208
4229
|
outline: none;
|
|
4209
|
-
box-shadow: 0 0 0 2px color-mix(in srgb, var(--
|
|
4230
|
+
box-shadow: 0 0 0 2px color-mix(in srgb, var(--cm-accent) 55%, transparent);
|
|
4210
4231
|
}
|
|
4211
4232
|
|
|
4212
4233
|
.restorePlanPath {
|
|
4213
4234
|
flex: 1;
|
|
4214
4235
|
min-width: 0;
|
|
4215
4236
|
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
4216
|
-
font-size:
|
|
4237
|
+
font-size: 12px;
|
|
4217
4238
|
color: var(--dsw-alias-label-primary);
|
|
4218
4239
|
overflow: hidden;
|
|
4219
4240
|
text-overflow: ellipsis;
|
|
@@ -4236,7 +4257,7 @@
|
|
|
4236
4257
|
}
|
|
4237
4258
|
|
|
4238
4259
|
.restorePlanNote {
|
|
4239
|
-
padding: 0 6px 4px
|
|
4260
|
+
padding: 0 6px 4px 24px;
|
|
4240
4261
|
font-size: 11px;
|
|
4241
4262
|
color: var(--dsw-alias-label-secondary);
|
|
4242
4263
|
overflow-wrap: anywhere;
|
|
@@ -4275,7 +4296,7 @@
|
|
|
4275
4296
|
.diffGroupToggle:focus-visible {
|
|
4276
4297
|
outline: none;
|
|
4277
4298
|
border-radius: 4px;
|
|
4278
|
-
box-shadow: 0 0 0 2px color-mix(in srgb, var(--
|
|
4299
|
+
box-shadow: 0 0 0 2px color-mix(in srgb, var(--cm-accent) 55%, transparent);
|
|
4279
4300
|
}
|
|
4280
4301
|
|
|
4281
4302
|
.diffStatTotal {
|
|
@@ -4285,18 +4306,11 @@
|
|
|
4285
4306
|
}
|
|
4286
4307
|
|
|
4287
4308
|
.diffStatAdd {
|
|
4288
|
-
color: var(--
|
|
4309
|
+
color: var(--cm-ok);
|
|
4289
4310
|
}
|
|
4290
4311
|
|
|
4291
4312
|
.diffStatDel {
|
|
4292
|
-
color: var(--
|
|
4293
|
-
}
|
|
4294
|
-
|
|
4295
|
-
/* 同一容器内两个区块之间的水平分割线(迁移前咨询 ↔ 计划预览) */
|
|
4296
|
-
.sectionDivider {
|
|
4297
|
-
height: 1px;
|
|
4298
|
-
margin: 10px 0;
|
|
4299
|
-
background: var(--dsw-alias-border-l1);
|
|
4313
|
+
color: var(--cm-error);
|
|
4300
4314
|
}
|
|
4301
4315
|
|
|
4302
4316
|
.diffPane {
|
|
@@ -4324,7 +4338,7 @@
|
|
|
4324
4338
|
border-bottom: 1px solid var(--dsw-alias-border-l1);
|
|
4325
4339
|
border-right: 1px solid var(--dsw-alias-border-l1);
|
|
4326
4340
|
color: var(--dsw-alias-label-tertiary);
|
|
4327
|
-
font-size:
|
|
4341
|
+
font-size: 11px;
|
|
4328
4342
|
font-weight: 600;
|
|
4329
4343
|
text-align: left;
|
|
4330
4344
|
}
|
|
@@ -4338,7 +4352,7 @@
|
|
|
4338
4352
|
padding: 1px 6px;
|
|
4339
4353
|
background: var(--dsw-alias-bg-layer-2);
|
|
4340
4354
|
color: var(--dsw-alias-label-tertiary);
|
|
4341
|
-
font-size:
|
|
4355
|
+
font-size: 11px;
|
|
4342
4356
|
}
|
|
4343
4357
|
|
|
4344
4358
|
.diffNo {
|
|
@@ -4359,11 +4373,11 @@
|
|
|
4359
4373
|
}
|
|
4360
4374
|
|
|
4361
4375
|
.diffCellAdd {
|
|
4362
|
-
background: color-mix(in srgb, var(--
|
|
4376
|
+
background: color-mix(in srgb, var(--cm-ok) 12%, transparent);
|
|
4363
4377
|
}
|
|
4364
4378
|
|
|
4365
4379
|
.diffCellDel {
|
|
4366
|
-
background: color-mix(in srgb, var(--
|
|
4380
|
+
background: color-mix(in srgb, var(--cm-error) 12%, transparent);
|
|
4367
4381
|
}
|
|
4368
4382
|
|
|
4369
4383
|
.nextStepsGroup {
|
|
@@ -4379,7 +4393,7 @@
|
|
|
4379
4393
|
|
|
4380
4394
|
.rollbackBox {
|
|
4381
4395
|
border: 1px solid var(--dsw-alias-border-l2);
|
|
4382
|
-
border-radius:
|
|
4396
|
+
border-radius: 8px;
|
|
4383
4397
|
background: var(--dsw-alias-bg-base);
|
|
4384
4398
|
padding: 8px 10px;
|
|
4385
4399
|
margin-bottom: 10px;
|
|
@@ -4475,7 +4489,7 @@
|
|
|
4475
4489
|
.historyTime {
|
|
4476
4490
|
flex: none;
|
|
4477
4491
|
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
4478
|
-
font-size:
|
|
4492
|
+
font-size: 11px;
|
|
4479
4493
|
color: var(--dsw-alias-label-tertiary);
|
|
4480
4494
|
padding-top: 1px;
|
|
4481
4495
|
}
|
|
@@ -4489,13 +4503,13 @@
|
|
|
4489
4503
|
border: 1px solid var(--dsw-alias-border-l1);
|
|
4490
4504
|
border-radius: 8px;
|
|
4491
4505
|
background: var(--dsw-alias-bg-layer-2);
|
|
4492
|
-
padding:
|
|
4506
|
+
padding: 8px 12px;
|
|
4493
4507
|
margin-bottom: 6px;
|
|
4494
4508
|
}
|
|
4495
4509
|
|
|
4496
4510
|
.profileRow[data-selected] {
|
|
4497
|
-
border-color: var(--
|
|
4498
|
-
background: color-mix(in srgb, var(--
|
|
4511
|
+
border-color: var(--cm-accent);
|
|
4512
|
+
background: color-mix(in srgb, var(--cm-accent) 7%, transparent);
|
|
4499
4513
|
}
|
|
4500
4514
|
|
|
4501
4515
|
.profileRowHeader {
|
|
@@ -4568,7 +4582,7 @@ button.profileRowMain {
|
|
|
4568
4582
|
}
|
|
4569
4583
|
|
|
4570
4584
|
button.profileRowMain:hover {
|
|
4571
|
-
color: var(--
|
|
4585
|
+
color: var(--cm-accent);
|
|
4572
4586
|
}
|
|
4573
4587
|
|
|
4574
4588
|
/* 档案列表表头行(标题 + 统计 + 刷新):与档案行同宽,标题不占满整行 */
|
|
@@ -4614,7 +4628,7 @@ button.profileRowMain:hover {
|
|
|
4614
4628
|
.aboutAuthor {
|
|
4615
4629
|
font-size: 12.5px;
|
|
4616
4630
|
font-weight: 600;
|
|
4617
|
-
color: var(--
|
|
4631
|
+
color: var(--cm-accent);
|
|
4618
4632
|
text-decoration: none;
|
|
4619
4633
|
overflow-wrap: anywhere;
|
|
4620
4634
|
}
|
|
@@ -4624,7 +4638,7 @@ button.profileRowMain:hover {
|
|
|
4624
4638
|
}
|
|
4625
4639
|
|
|
4626
4640
|
.aboutAuthor:focus-visible {
|
|
4627
|
-
outline: 2px solid var(--
|
|
4641
|
+
outline: 2px solid var(--cm-accent);
|
|
4628
4642
|
outline-offset: 1px;
|
|
4629
4643
|
border-radius: 4px;
|
|
4630
4644
|
}
|
|
@@ -4640,7 +4654,7 @@ button.profileRowMain:hover {
|
|
|
4640
4654
|
}
|
|
4641
4655
|
|
|
4642
4656
|
.severityError {
|
|
4643
|
-
color: var(--
|
|
4657
|
+
color: var(--cm-error);
|
|
4644
4658
|
font-weight: 600;
|
|
4645
4659
|
}
|
|
4646
4660
|
|
|
@@ -4816,3 +4830,141 @@ button.profileRowMain:hover {
|
|
|
4816
4830
|
background-image: none;
|
|
4817
4831
|
}
|
|
4818
4832
|
}
|
|
4833
|
+
/* ================================================================ §16 Page: Foreign agent import
|
|
4834
|
+
|
|
4835
|
+
外部 agent 配置导入的**只读发现 → 预览 → 交给既有导入向导**界面(t16 静态资产,
|
|
4836
|
+
组件由 t17 落地)。本块只提供样式,不含任何逻辑;类名与 t17 组件的 `css.xxx` 一一对应。
|
|
4837
|
+
|
|
4838
|
+
为什么复用既有类而不是新造一套:
|
|
4839
|
+
· 页面骨架沿用 `.viewBody`/`.pagePad`(页面主体区块间距由 §9b 统一提供);
|
|
4840
|
+
· 滚动区沿用 `.marketReviewScroll` 的高度契约(min 200px / max 800px,长列表不在页面上撑开);
|
|
4841
|
+
· 来源卡沿用 `.card`/`.groupLabel`/`.statRow` 的既有原语。
|
|
4842
|
+
本块只补三件既有类**表达不了**的东西(Reuse → Extend → Refactor → Create 的第四步):
|
|
4843
|
+
|
|
4844
|
+
① `.sourceList`:来源是**可选行**(单选进入下一步),既有的勾选行(.pickerUnit)是"多选树节点",
|
|
4845
|
+
语义与命中路径的排版都不同,硬塞会把两种心智混在一行里;
|
|
4846
|
+
② `.sourcePaths`:命中路径要**等宽 + 可换行**(Windows 反斜杠路径很长),
|
|
4847
|
+
既有 `.mono` 只管字体不管换行,长路径会把行撑宽、把右侧状态徽章挤出视野;
|
|
4848
|
+
③ `.skipList`:未迁移项的**两段式**行(机器码 → 人话 + 来源/条数),
|
|
4849
|
+
与 `.warnList`(纯文本条目)不同 —— 它必须让"码"与"解释"在视觉上可区分,否则用户读不出
|
|
4850
|
+
哪段是稳定标识、哪段是解释。
|
|
4851
|
+
|
|
4852
|
+
零硬编码颜色:全部走 --dsw-* token(tint 一律 color-mix)。 */
|
|
4853
|
+
|
|
4854
|
+
/* 来源列表:可选行的纵向容器(单选进入下一步) */
|
|
4855
|
+
.sourceList {
|
|
4856
|
+
display: flex;
|
|
4857
|
+
flex-direction: column;
|
|
4858
|
+
gap: 6px;
|
|
4859
|
+
margin-bottom: 10px;
|
|
4860
|
+
}
|
|
4861
|
+
|
|
4862
|
+
/* 一行来源:左侧选择控件(t17 传入)+ 名称/状态 + 命中路径。
|
|
4863
|
+
用 flex-start 而不是 center:命中路径可能折成多行,居中对齐会让左列控件浮在半空。 */
|
|
4864
|
+
.sourceRow {
|
|
4865
|
+
display: flex;
|
|
4866
|
+
align-items: flex-start;
|
|
4867
|
+
gap: 8px;
|
|
4868
|
+
padding: 8px 10px;
|
|
4869
|
+
border: 1px solid var(--dsw-alias-border-l1);
|
|
4870
|
+
border-radius: 8px;
|
|
4871
|
+
background: var(--dsw-alias-bg-layer-2);
|
|
4872
|
+
min-width: 0;
|
|
4873
|
+
}
|
|
4874
|
+
|
|
4875
|
+
/* 选中态:与产物库/档案行的既有写法同款(业务色 1px + 7% 底色) */
|
|
4876
|
+
.sourceRow[data-selected] {
|
|
4877
|
+
border-color: var(--cm-accent);
|
|
4878
|
+
background: color-mix(in srgb, var(--cm-accent) 7%, transparent);
|
|
4879
|
+
}
|
|
4880
|
+
|
|
4881
|
+
/* 不可选(本机未检测到):整体降一级对比度,但**不隐藏** —— 用户需要知道"这个来源我查过了" */
|
|
4882
|
+
.sourceRow[data-disabled] {
|
|
4883
|
+
opacity: 0.7;
|
|
4884
|
+
}
|
|
4885
|
+
|
|
4886
|
+
.sourceRowMain {
|
|
4887
|
+
flex: 1 1 auto;
|
|
4888
|
+
min-width: 0;
|
|
4889
|
+
}
|
|
4890
|
+
|
|
4891
|
+
/* 来源名 + 状态徽章一行(名称可省略,徽章不收缩) */
|
|
4892
|
+
.sourceRowHead {
|
|
4893
|
+
display: flex;
|
|
4894
|
+
align-items: center;
|
|
4895
|
+
gap: 8px;
|
|
4896
|
+
min-width: 0;
|
|
4897
|
+
}
|
|
4898
|
+
|
|
4899
|
+
.sourceRowName {
|
|
4900
|
+
font-size: 12px;
|
|
4901
|
+
font-weight: 600;
|
|
4902
|
+
color: var(--dsw-alias-label-primary);
|
|
4903
|
+
min-width: 0;
|
|
4904
|
+
overflow: hidden;
|
|
4905
|
+
text-overflow: ellipsis;
|
|
4906
|
+
white-space: nowrap;
|
|
4907
|
+
}
|
|
4908
|
+
|
|
4909
|
+
.sourceRowHead > *:not(.sourceRowName) {
|
|
4910
|
+
flex: none;
|
|
4911
|
+
}
|
|
4912
|
+
|
|
4913
|
+
/* 命中路径:等宽 + 允许在任意位置换行(Windows 长路径不得撑宽行、不得把徽章挤出视野) */
|
|
4914
|
+
.sourcePaths {
|
|
4915
|
+
display: block;
|
|
4916
|
+
margin-top: 4px;
|
|
4917
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
4918
|
+
font-size: 11px;
|
|
4919
|
+
line-height: 1.5;
|
|
4920
|
+
color: var(--dsw-alias-label-tertiary);
|
|
4921
|
+
overflow-wrap: anywhere;
|
|
4922
|
+
}
|
|
4923
|
+
|
|
4924
|
+
/* 未迁移项列表:一行一项,左侧机器码、右侧解释 */
|
|
4925
|
+
.skipList {
|
|
4926
|
+
display: flex;
|
|
4927
|
+
flex-direction: column;
|
|
4928
|
+
gap: 4px;
|
|
4929
|
+
margin: 6px 0 0;
|
|
4930
|
+
padding: 0;
|
|
4931
|
+
font-size: 11px;
|
|
4932
|
+
color: var(--dsw-alias-label-secondary);
|
|
4933
|
+
}
|
|
4934
|
+
|
|
4935
|
+
/* 未迁移项行:码与解释同排(窄面板下允许换行成两段) */
|
|
4936
|
+
.skipRow {
|
|
4937
|
+
display: flex;
|
|
4938
|
+
align-items: baseline;
|
|
4939
|
+
flex-wrap: wrap;
|
|
4940
|
+
gap: 6px;
|
|
4941
|
+
min-width: 0;
|
|
4942
|
+
}
|
|
4943
|
+
|
|
4944
|
+
/* 稳定机器码(用户可据此搜索/上报):等宽 + 次级底色,**刻意不隐藏** ——
|
|
4945
|
+
用户报告问题时需要这个标识;容器上另有 title 承载完整说明。 */
|
|
4946
|
+
.skipCode {
|
|
4947
|
+
flex: none;
|
|
4948
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
|
|
4949
|
+
font-size: 11px;
|
|
4950
|
+
padding: 1px 4px;
|
|
4951
|
+
border-radius: 4px;
|
|
4952
|
+
background: color-mix(in srgb, var(--dsw-alias-label-tertiary) 12%, transparent);
|
|
4953
|
+
color: var(--dsw-alias-label-secondary);
|
|
4954
|
+
white-space: nowrap;
|
|
4955
|
+
}
|
|
4956
|
+
|
|
4957
|
+
/* 机器码之后的解释文本:占据剩余宽度,长文本在任意位置折行 */
|
|
4958
|
+
.skipText {
|
|
4959
|
+
flex: 1 1 auto;
|
|
4960
|
+
min-width: 0;
|
|
4961
|
+
overflow-wrap: anywhere;
|
|
4962
|
+
}
|
|
4963
|
+
|
|
4964
|
+
/* 未迁移项的计数与来源(如「来源:claude-code · 3 项」):仍是文本,但比解释低一级 */
|
|
4965
|
+
.skipMeta {
|
|
4966
|
+
flex: none;
|
|
4967
|
+
font-size: 11px;
|
|
4968
|
+
color: var(--dsw-alias-label-tertiary);
|
|
4969
|
+
font-variant-numeric: tabular-nums;
|
|
4970
|
+
}
|