dsh-git-worktree 0.9.2 → 0.9.3
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/CHANGELOG.md +405 -386
- package/LICENSE +21 -21
- package/NOTICE +16 -14
- package/README.en.md +169 -169
- package/README.md +169 -169
- package/cordis.patch.yml +11 -11
- package/docs/i18n.md +63 -63
- package/lib/adapters/initial-commit.js +3 -3
- package/lib/client/actions.d.ts +21 -3
- package/lib/client/actions.js +23 -3
- package/lib/client/actions.js.map +1 -1
- package/lib/client/console-remote/index.js +36 -8
- package/lib/client/console-remote/index.js.map +1 -1
- package/lib/client/index.js +1 -0
- package/lib/client/index.js.map +1 -1
- package/lib/client/pre-session/controller.d.ts +1 -1
- package/lib/client/pre-session/controller.js +33 -18
- package/lib/client/pre-session/controller.js.map +1 -1
- package/lib/client/review-console/recovery-continuation.d.ts +1 -1
- package/lib/client/review-console/recovery-continuation.js +9 -4
- package/lib/client/review-console/recovery-continuation.js.map +1 -1
- package/lib/client/review-console/review-console.styles.js +190 -190
- package/lib/client/styles.js +146 -140
- package/lib/client/styles.js.map +1 -1
- package/lib/client/target-console/target-console.styles.js +155 -155
- package/lib/client/workspace-sidebar/index.d.ts +11 -2
- package/lib/client/workspace-sidebar/index.js +50 -8
- package/lib/client/workspace-sidebar/index.js.map +1 -1
- package/lib/client.js +7624 -161
- package/lib/console-contract.d.ts +2 -0
- package/lib/console-contract.js.map +1 -1
- package/lib/console-host/service.js +4 -2
- package/lib/console-host/service.js.map +1 -1
- package/lib/console-remote/descriptors.js +8 -3
- package/lib/console-remote/descriptors.js.map +1 -1
- package/lib/console-remote/schemas.js +1 -0
- package/lib/console-remote/schemas.js.map +1 -1
- package/lib/host-compat.d.ts +4 -0
- package/lib/host-compat.js +23 -0
- package/lib/host-compat.js.map +1 -0
- package/lib/i18n/client-messages.d.ts +4 -0
- package/lib/i18n/client-messages.js +4 -0
- package/lib/i18n/client-messages.js.map +1 -1
- package/lib/workspace-provider-lifecycle.d.ts +2 -1
- package/lib/workspace-provider-lifecycle.js +6 -1
- package/lib/workspace-provider-lifecycle.js.map +1 -1
- package/package.json +151 -149
- package/scripts/check-publish.mjs +238 -238
- package/scripts/check-workspace-sidebar-version.mjs +18 -14
- package/scripts/clean-lib.mjs +7 -7
- package/scripts/dev-dsh-lib.mjs +547 -509
- package/scripts/dev-dsh.mjs +98 -95
- package/scripts/dsh-source-runner.mjs +20 -14
- package/scripts/workspace-sidebar-upstream-alpha.mjs +102 -0
- package/scripts/workspace-sidebar-upstream-next.mjs +134 -0
- package/scripts/workspace-sidebar-upstream.d.mts +8 -8
- package/scripts/workspace-sidebar-upstream.mjs +162 -162
|
@@ -1,157 +1,157 @@
|
|
|
1
|
-
export const TARGET_CONSOLE_STYLES = String.raw `
|
|
2
|
-
.dsh-wtc-target-chip {
|
|
3
|
-
--wtc-state: #728096;
|
|
4
|
-
display: inline-flex;
|
|
5
|
-
align-items: center;
|
|
6
|
-
gap: 6px;
|
|
7
|
-
min-height: 24px;
|
|
8
|
-
padding: 2px 9px;
|
|
9
|
-
border: 1px solid color-mix(in srgb, var(--wtc-state) 35%, transparent);
|
|
10
|
-
border-radius: 999px;
|
|
11
|
-
background: color-mix(in srgb, var(--wtc-state) 9%, transparent);
|
|
12
|
-
color: inherit;
|
|
13
|
-
font-size: 12px;
|
|
14
|
-
font-weight: 650;
|
|
15
|
-
line-height: 1;
|
|
16
|
-
white-space: nowrap;
|
|
17
|
-
cursor: pointer;
|
|
18
|
-
}
|
|
19
|
-
.dsh-wtc-target-chip:hover { background: color-mix(in srgb, var(--wtc-state) 15%, transparent); }
|
|
20
|
-
.dsh-wtc-target-chip:focus-visible { outline: 2px solid #5b8fe8; outline-offset: 2px; }
|
|
21
|
-
.dsh-wtc-target-chevron {
|
|
22
|
-
width: 6px;
|
|
23
|
-
height: 6px;
|
|
24
|
-
margin: -3px 1px 0 2px;
|
|
25
|
-
flex: 0 0 auto;
|
|
26
|
-
border-right: 1.5px solid currentColor;
|
|
27
|
-
border-bottom: 1.5px solid currentColor;
|
|
28
|
-
opacity: .58;
|
|
29
|
-
transform: rotate(45deg);
|
|
30
|
-
}
|
|
31
|
-
.dsh-wtc-menu-summary { display: grid; gap: 3px; min-width: 250px; text-align: left; white-space: normal; }
|
|
32
|
-
.dsh-wtc-menu-summary strong { font-size: 12px; color: inherit; }
|
|
33
|
-
.dsh-wtc-menu-summary span { color: color-mix(in srgb, currentColor 64%, transparent); font-size: 11px; line-height: 1.35; }
|
|
34
|
-
.dsh-wtc-menu-summary .dsh-wtc-menu-error { color: #c44747; }
|
|
35
|
-
.dsh-wtc-target-dot, .dsh-wtc-state-dot {
|
|
36
|
-
width: 7px;
|
|
37
|
-
height: 7px;
|
|
38
|
-
flex: 0 0 auto;
|
|
39
|
-
border-radius: 999px;
|
|
40
|
-
background: var(--wtc-state);
|
|
41
|
-
box-shadow: 0 0 0 3px color-mix(in srgb, var(--wtc-state) 15%, transparent);
|
|
42
|
-
}
|
|
43
|
-
.dsh-wtc-target-chip[data-target-state="creating"] { --wtc-state: #c47a1c; }
|
|
44
|
-
.dsh-wtc-target-chip[data-target-state="working"] { --wtc-state: #2676dc; }
|
|
45
|
-
.dsh-wtc-target-chip[data-target-state="ready_for_review"] { --wtc-state: #25885d; }
|
|
46
|
-
.dsh-wtc-target-chip[data-target-state="retained"] { --wtc-state: #6b5bd2; }
|
|
47
|
-
.dsh-wtc-target-chip[data-target-state="cleanup_pending"] { --wtc-state: #c47a1c; }
|
|
48
|
-
.dsh-wtc-target-chip[data-target-state="recovery_required"],
|
|
49
|
-
.dsh-wtc-target-chip[data-target-state="error"] { --wtc-state: #c94747; }
|
|
50
|
-
.dsh-wtc-target-chip[data-target-state="delivered"] { opacity: .66; }
|
|
51
|
-
.dsh-wtc-target-expiry { color: color-mix(in srgb, currentColor 62%, transparent); font-weight: 520; }
|
|
52
|
-
|
|
53
|
-
.dsh-wtc-console {
|
|
54
|
-
--wtc-ink: color-mix(in srgb, currentColor 94%, transparent);
|
|
55
|
-
--wtc-muted: color-mix(in srgb, currentColor 58%, transparent);
|
|
56
|
-
--wtc-line: color-mix(in srgb, currentColor 14%, transparent);
|
|
57
|
-
--wtc-panel: color-mix(in srgb, currentColor 4%, transparent);
|
|
58
|
-
--wtc-blue: #2f6fd0;
|
|
59
|
-
--wtc-red: #c44747;
|
|
60
|
-
position: relative;
|
|
61
|
-
display: grid;
|
|
62
|
-
gap: 14px;
|
|
63
|
-
min-width: 0;
|
|
64
|
-
width: 100%;
|
|
65
|
-
padding: 18px clamp(12px, 3vw, 26px) 28px;
|
|
66
|
-
color: var(--wtc-ink);
|
|
67
|
-
box-sizing: border-box;
|
|
68
|
-
}
|
|
69
|
-
.dsh-wtc-console h2, .dsh-wtc-console h3 { margin: 0; letter-spacing: -.025em; }
|
|
70
|
-
.dsh-wtc-console h2 { font-size: clamp(20px, 3vw, 28px); font-weight: 720; }
|
|
71
|
-
.dsh-wtc-console h3 { font-size: 15px; font-weight: 680; }
|
|
72
|
-
.dsh-wtc-console-head, .dsh-wtc-section-head, .dsh-wtc-current,
|
|
73
|
-
.dsh-wtc-row, .dsh-wtc-row-title, .dsh-wtc-row-actions, .dsh-wtc-current-actions {
|
|
74
|
-
display: flex;
|
|
75
|
-
align-items: center;
|
|
76
|
-
}
|
|
77
|
-
.dsh-wtc-console-head, .dsh-wtc-section-head, .dsh-wtc-current, .dsh-wtc-row { justify-content: space-between; }
|
|
78
|
-
.dsh-wtc-console-head { gap: 16px; }
|
|
79
|
-
.dsh-wtc-kicker, .dsh-wtc-label {
|
|
80
|
-
display: block;
|
|
81
|
-
color: var(--wtc-muted);
|
|
82
|
-
font-size: 10px;
|
|
83
|
-
font-weight: 720;
|
|
84
|
-
letter-spacing: .1em;
|
|
85
|
-
text-transform: uppercase;
|
|
86
|
-
}
|
|
87
|
-
.dsh-wtc-kicker { margin-bottom: 3px; }
|
|
88
|
-
.dsh-wtc-current, .dsh-wtc-list-section {
|
|
89
|
-
min-width: 0;
|
|
90
|
-
border: 1px solid var(--wtc-line);
|
|
91
|
-
border-radius: 14px;
|
|
92
|
-
background: linear-gradient(145deg, color-mix(in srgb, currentColor 3%, transparent), transparent 52%);
|
|
93
|
-
}
|
|
94
|
-
.dsh-wtc-current { gap: 16px; padding: 14px 16px; }
|
|
95
|
-
.dsh-wtc-current > div:first-child { min-width: 0; display: grid; gap: 3px; }
|
|
96
|
-
.dsh-wtc-current strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
97
|
-
.dsh-wtc-current-actions, .dsh-wtc-row-actions { gap: 7px; flex-wrap: wrap; justify-content: flex-end; }
|
|
98
|
-
.dsh-wtc-list-section { overflow: hidden; }
|
|
99
|
-
.dsh-wtc-section-head { padding: 12px 14px; border-bottom: 1px solid var(--wtc-line); }
|
|
100
|
-
.dsh-wtc-count { min-width: 26px; padding: 3px 7px; border-radius: 999px; background: var(--wtc-panel); color: var(--wtc-muted); text-align: center; font-size: 11px; }
|
|
101
|
-
.dsh-wtc-list { list-style: none; margin: 0; padding: 0; }
|
|
102
|
-
.dsh-wtc-row { position: relative; gap: 14px; min-width: 0; padding: 12px 14px; border-bottom: 1px solid var(--wtc-line); }
|
|
103
|
-
.dsh-wtc-row:last-child { border-bottom: 0; }
|
|
104
|
-
.dsh-wtc-row[data-current-target="true"] { background: color-mix(in srgb, var(--wtc-blue) 6%, transparent); }
|
|
105
|
-
.dsh-wtc-row-main { min-width: 0; display: grid; gap: 6px; }
|
|
106
|
-
.dsh-wtc-row-title { min-width: 0; gap: 10px; }
|
|
107
|
-
.dsh-wtc-row-id { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 600 12px ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
|
|
108
|
-
.dsh-wtc-relation { flex: 0 0 auto; padding: 2px 6px; border-radius: 999px; background: var(--wtc-panel); color: var(--wtc-muted); font-size: 10px; font-weight: 650; }
|
|
109
|
-
.dsh-wtc-state { --wtc-state: #728096; display: inline-flex; align-items: center; gap: 6px; flex: 0 0 auto; font-size: 12px; font-weight: 680; }
|
|
110
|
-
.dsh-wtc-state[data-target-state="creating"], .dsh-wtc-state[data-target-state="cleanup_pending"] { --wtc-state: #c47a1c; }
|
|
111
|
-
.dsh-wtc-state[data-target-state="working"] { --wtc-state: #2676dc; }
|
|
112
|
-
.dsh-wtc-state[data-target-state="ready_for_review"] { --wtc-state: #25885d; }
|
|
113
|
-
.dsh-wtc-state[data-target-state="retained"] { --wtc-state: #6b5bd2; }
|
|
114
|
-
.dsh-wtc-state[data-target-state="recovery_required"] { --wtc-state: #c94747; }
|
|
115
|
-
.dsh-wtc-state[data-target-state="delivered"] { opacity: .66; }
|
|
116
|
-
.dsh-wtc-facts { display: flex; flex-wrap: wrap; gap: 4px 10px; color: var(--wtc-muted); font-size: 11px; }
|
|
117
|
-
.dsh-wtc-recovery-message { color: var(--wtc-red); font-weight: 620; }
|
|
118
|
-
.dsh-wtc-revision { color: var(--wtc-muted); font: 11px ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
|
|
119
|
-
.dsh-wtc-button {
|
|
120
|
-
min-height: 30px;
|
|
121
|
-
border: 1px solid var(--wtc-line);
|
|
122
|
-
border-radius: 8px;
|
|
123
|
-
padding: 5px 9px;
|
|
124
|
-
background: transparent;
|
|
125
|
-
color: inherit;
|
|
126
|
-
font: inherit;
|
|
127
|
-
font-size: 12px;
|
|
128
|
-
font-weight: 650;
|
|
129
|
-
cursor: pointer;
|
|
130
|
-
}
|
|
131
|
-
.dsh-wtc-button:hover:not(:disabled) { background: color-mix(in srgb, currentColor 7%, transparent); border-color: color-mix(in srgb, currentColor 30%, transparent); }
|
|
132
|
-
.dsh-wtc-button:focus-visible { outline: 2px solid #5b8fe8; outline-offset: 2px; }
|
|
133
|
-
.dsh-wtc-button:disabled { opacity: .5; cursor: wait; }
|
|
134
|
-
.dsh-wtc-primary { color: white; border-color: var(--wtc-blue); background: var(--wtc-blue); }
|
|
135
|
-
.dsh-wtc-danger { color: var(--wtc-red); }
|
|
136
|
-
.dsh-wtc-empty, .dsh-wtc-loading { padding: 24px 14px; color: var(--wtc-muted); text-align: center; }
|
|
137
|
-
.dsh-wtc-error { padding: 10px 12px; border: 1px solid color-mix(in srgb, var(--wtc-red) 35%, transparent); border-radius: 10px; background: color-mix(in srgb, var(--wtc-red) 8%, transparent); color: var(--wtc-red); overflow-wrap: anywhere; }
|
|
138
|
-
.dsh-wtc-confirm { position: absolute; z-index: 2; inset: 12px; align-self: start; display: grid; gap: 10px; max-width: 520px; margin: 64px auto 0; padding: 18px; border: 1px solid color-mix(in srgb, var(--wtc-red) 35%, var(--wtc-line)); border-radius: 14px; background: Canvas; color: CanvasText; box-shadow: 0 20px 60px rgba(0,0,0,.24); }
|
|
139
|
-
.dsh-wtc-confirm p { margin: 0; color: color-mix(in srgb, currentColor 68%, transparent); line-height: 1.5; }
|
|
140
|
-
.dsh-wtc-confirm-actions { display: flex; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }
|
|
141
|
-
.dsh-wtc-manager-dialog { width: min(960px, calc(100vw - 32px)); max-width: 960px; max-height: min(86vh, 900px); }
|
|
142
|
-
.dsh-wtc-manager-content { overflow: auto; min-height: 0; }
|
|
143
|
-
.dsh-wtc-manager-content .dsh-wtc-console { padding: 4px 0 8px; }
|
|
144
|
-
@media (max-width: 620px) {
|
|
145
|
-
.dsh-wtc-current, .dsh-wtc-row { align-items: flex-start; flex-direction: column; }
|
|
146
|
-
.dsh-wtc-current-actions, .dsh-wtc-row-actions { width: 100%; justify-content: flex-start; }
|
|
147
|
-
}
|
|
148
|
-
.dsh-wtc-button, .dsh-wtc-link { display:inline-flex; align-items:center; gap:6px; }
|
|
149
|
-
.dsh-wtc-button .dsh-wt-icon, .dsh-wtc-link .dsh-wt-icon { width:16px; height:16px; flex:0 0 16px; }
|
|
150
|
-
.dsh-wtc-target-kind { width:14px; height:14px; flex:0 0 14px; }
|
|
151
|
-
.dsh-wtc-target-chip .dsh-wtc-target-chevron { width:12px; height:12px; border:0; transform:none; margin:0; }
|
|
152
|
-
.dsh-wtc-target-chip[aria-expanded="true"] .dsh-wtc-target-chevron { transform:rotate(180deg); }
|
|
153
|
-
.dsh-wtc-console-head[data-embedded] { justify-content:flex-end; }
|
|
154
|
-
.dsh-wtc-task-name { min-width:0; overflow-wrap:anywhere; font-weight:500; }
|
|
155
|
-
.dsh-wtc-facts .dsh-wtc-checkout-id { font-size:11px; overflow-wrap:anywhere; }
|
|
1
|
+
export const TARGET_CONSOLE_STYLES = String.raw `
|
|
2
|
+
.dsh-wtc-target-chip {
|
|
3
|
+
--wtc-state: #728096;
|
|
4
|
+
display: inline-flex;
|
|
5
|
+
align-items: center;
|
|
6
|
+
gap: 6px;
|
|
7
|
+
min-height: 24px;
|
|
8
|
+
padding: 2px 9px;
|
|
9
|
+
border: 1px solid color-mix(in srgb, var(--wtc-state) 35%, transparent);
|
|
10
|
+
border-radius: 999px;
|
|
11
|
+
background: color-mix(in srgb, var(--wtc-state) 9%, transparent);
|
|
12
|
+
color: inherit;
|
|
13
|
+
font-size: 12px;
|
|
14
|
+
font-weight: 650;
|
|
15
|
+
line-height: 1;
|
|
16
|
+
white-space: nowrap;
|
|
17
|
+
cursor: pointer;
|
|
18
|
+
}
|
|
19
|
+
.dsh-wtc-target-chip:hover { background: color-mix(in srgb, var(--wtc-state) 15%, transparent); }
|
|
20
|
+
.dsh-wtc-target-chip:focus-visible { outline: 2px solid #5b8fe8; outline-offset: 2px; }
|
|
21
|
+
.dsh-wtc-target-chevron {
|
|
22
|
+
width: 6px;
|
|
23
|
+
height: 6px;
|
|
24
|
+
margin: -3px 1px 0 2px;
|
|
25
|
+
flex: 0 0 auto;
|
|
26
|
+
border-right: 1.5px solid currentColor;
|
|
27
|
+
border-bottom: 1.5px solid currentColor;
|
|
28
|
+
opacity: .58;
|
|
29
|
+
transform: rotate(45deg);
|
|
30
|
+
}
|
|
31
|
+
.dsh-wtc-menu-summary { display: grid; gap: 3px; min-width: 250px; text-align: left; white-space: normal; }
|
|
32
|
+
.dsh-wtc-menu-summary strong { font-size: 12px; color: inherit; }
|
|
33
|
+
.dsh-wtc-menu-summary span { color: color-mix(in srgb, currentColor 64%, transparent); font-size: 11px; line-height: 1.35; }
|
|
34
|
+
.dsh-wtc-menu-summary .dsh-wtc-menu-error { color: #c44747; }
|
|
35
|
+
.dsh-wtc-target-dot, .dsh-wtc-state-dot {
|
|
36
|
+
width: 7px;
|
|
37
|
+
height: 7px;
|
|
38
|
+
flex: 0 0 auto;
|
|
39
|
+
border-radius: 999px;
|
|
40
|
+
background: var(--wtc-state);
|
|
41
|
+
box-shadow: 0 0 0 3px color-mix(in srgb, var(--wtc-state) 15%, transparent);
|
|
42
|
+
}
|
|
43
|
+
.dsh-wtc-target-chip[data-target-state="creating"] { --wtc-state: #c47a1c; }
|
|
44
|
+
.dsh-wtc-target-chip[data-target-state="working"] { --wtc-state: #2676dc; }
|
|
45
|
+
.dsh-wtc-target-chip[data-target-state="ready_for_review"] { --wtc-state: #25885d; }
|
|
46
|
+
.dsh-wtc-target-chip[data-target-state="retained"] { --wtc-state: #6b5bd2; }
|
|
47
|
+
.dsh-wtc-target-chip[data-target-state="cleanup_pending"] { --wtc-state: #c47a1c; }
|
|
48
|
+
.dsh-wtc-target-chip[data-target-state="recovery_required"],
|
|
49
|
+
.dsh-wtc-target-chip[data-target-state="error"] { --wtc-state: #c94747; }
|
|
50
|
+
.dsh-wtc-target-chip[data-target-state="delivered"] { opacity: .66; }
|
|
51
|
+
.dsh-wtc-target-expiry { color: color-mix(in srgb, currentColor 62%, transparent); font-weight: 520; }
|
|
52
|
+
|
|
53
|
+
.dsh-wtc-console {
|
|
54
|
+
--wtc-ink: color-mix(in srgb, currentColor 94%, transparent);
|
|
55
|
+
--wtc-muted: color-mix(in srgb, currentColor 58%, transparent);
|
|
56
|
+
--wtc-line: color-mix(in srgb, currentColor 14%, transparent);
|
|
57
|
+
--wtc-panel: color-mix(in srgb, currentColor 4%, transparent);
|
|
58
|
+
--wtc-blue: #2f6fd0;
|
|
59
|
+
--wtc-red: #c44747;
|
|
60
|
+
position: relative;
|
|
61
|
+
display: grid;
|
|
62
|
+
gap: 14px;
|
|
63
|
+
min-width: 0;
|
|
64
|
+
width: 100%;
|
|
65
|
+
padding: 18px clamp(12px, 3vw, 26px) 28px;
|
|
66
|
+
color: var(--wtc-ink);
|
|
67
|
+
box-sizing: border-box;
|
|
68
|
+
}
|
|
69
|
+
.dsh-wtc-console h2, .dsh-wtc-console h3 { margin: 0; letter-spacing: -.025em; }
|
|
70
|
+
.dsh-wtc-console h2 { font-size: clamp(20px, 3vw, 28px); font-weight: 720; }
|
|
71
|
+
.dsh-wtc-console h3 { font-size: 15px; font-weight: 680; }
|
|
72
|
+
.dsh-wtc-console-head, .dsh-wtc-section-head, .dsh-wtc-current,
|
|
73
|
+
.dsh-wtc-row, .dsh-wtc-row-title, .dsh-wtc-row-actions, .dsh-wtc-current-actions {
|
|
74
|
+
display: flex;
|
|
75
|
+
align-items: center;
|
|
76
|
+
}
|
|
77
|
+
.dsh-wtc-console-head, .dsh-wtc-section-head, .dsh-wtc-current, .dsh-wtc-row { justify-content: space-between; }
|
|
78
|
+
.dsh-wtc-console-head { gap: 16px; }
|
|
79
|
+
.dsh-wtc-kicker, .dsh-wtc-label {
|
|
80
|
+
display: block;
|
|
81
|
+
color: var(--wtc-muted);
|
|
82
|
+
font-size: 10px;
|
|
83
|
+
font-weight: 720;
|
|
84
|
+
letter-spacing: .1em;
|
|
85
|
+
text-transform: uppercase;
|
|
86
|
+
}
|
|
87
|
+
.dsh-wtc-kicker { margin-bottom: 3px; }
|
|
88
|
+
.dsh-wtc-current, .dsh-wtc-list-section {
|
|
89
|
+
min-width: 0;
|
|
90
|
+
border: 1px solid var(--wtc-line);
|
|
91
|
+
border-radius: 14px;
|
|
92
|
+
background: linear-gradient(145deg, color-mix(in srgb, currentColor 3%, transparent), transparent 52%);
|
|
93
|
+
}
|
|
94
|
+
.dsh-wtc-current { gap: 16px; padding: 14px 16px; }
|
|
95
|
+
.dsh-wtc-current > div:first-child { min-width: 0; display: grid; gap: 3px; }
|
|
96
|
+
.dsh-wtc-current strong { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
97
|
+
.dsh-wtc-current-actions, .dsh-wtc-row-actions { gap: 7px; flex-wrap: wrap; justify-content: flex-end; }
|
|
98
|
+
.dsh-wtc-list-section { overflow: hidden; }
|
|
99
|
+
.dsh-wtc-section-head { padding: 12px 14px; border-bottom: 1px solid var(--wtc-line); }
|
|
100
|
+
.dsh-wtc-count { min-width: 26px; padding: 3px 7px; border-radius: 999px; background: var(--wtc-panel); color: var(--wtc-muted); text-align: center; font-size: 11px; }
|
|
101
|
+
.dsh-wtc-list { list-style: none; margin: 0; padding: 0; }
|
|
102
|
+
.dsh-wtc-row { position: relative; gap: 14px; min-width: 0; padding: 12px 14px; border-bottom: 1px solid var(--wtc-line); }
|
|
103
|
+
.dsh-wtc-row:last-child { border-bottom: 0; }
|
|
104
|
+
.dsh-wtc-row[data-current-target="true"] { background: color-mix(in srgb, var(--wtc-blue) 6%, transparent); }
|
|
105
|
+
.dsh-wtc-row-main { min-width: 0; display: grid; gap: 6px; }
|
|
106
|
+
.dsh-wtc-row-title { min-width: 0; gap: 10px; }
|
|
107
|
+
.dsh-wtc-row-id { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font: 600 12px ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
|
|
108
|
+
.dsh-wtc-relation { flex: 0 0 auto; padding: 2px 6px; border-radius: 999px; background: var(--wtc-panel); color: var(--wtc-muted); font-size: 10px; font-weight: 650; }
|
|
109
|
+
.dsh-wtc-state { --wtc-state: #728096; display: inline-flex; align-items: center; gap: 6px; flex: 0 0 auto; font-size: 12px; font-weight: 680; }
|
|
110
|
+
.dsh-wtc-state[data-target-state="creating"], .dsh-wtc-state[data-target-state="cleanup_pending"] { --wtc-state: #c47a1c; }
|
|
111
|
+
.dsh-wtc-state[data-target-state="working"] { --wtc-state: #2676dc; }
|
|
112
|
+
.dsh-wtc-state[data-target-state="ready_for_review"] { --wtc-state: #25885d; }
|
|
113
|
+
.dsh-wtc-state[data-target-state="retained"] { --wtc-state: #6b5bd2; }
|
|
114
|
+
.dsh-wtc-state[data-target-state="recovery_required"] { --wtc-state: #c94747; }
|
|
115
|
+
.dsh-wtc-state[data-target-state="delivered"] { opacity: .66; }
|
|
116
|
+
.dsh-wtc-facts { display: flex; flex-wrap: wrap; gap: 4px 10px; color: var(--wtc-muted); font-size: 11px; }
|
|
117
|
+
.dsh-wtc-recovery-message { color: var(--wtc-red); font-weight: 620; }
|
|
118
|
+
.dsh-wtc-revision { color: var(--wtc-muted); font: 11px ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }
|
|
119
|
+
.dsh-wtc-button {
|
|
120
|
+
min-height: 30px;
|
|
121
|
+
border: 1px solid var(--wtc-line);
|
|
122
|
+
border-radius: 8px;
|
|
123
|
+
padding: 5px 9px;
|
|
124
|
+
background: transparent;
|
|
125
|
+
color: inherit;
|
|
126
|
+
font: inherit;
|
|
127
|
+
font-size: 12px;
|
|
128
|
+
font-weight: 650;
|
|
129
|
+
cursor: pointer;
|
|
130
|
+
}
|
|
131
|
+
.dsh-wtc-button:hover:not(:disabled) { background: color-mix(in srgb, currentColor 7%, transparent); border-color: color-mix(in srgb, currentColor 30%, transparent); }
|
|
132
|
+
.dsh-wtc-button:focus-visible { outline: 2px solid #5b8fe8; outline-offset: 2px; }
|
|
133
|
+
.dsh-wtc-button:disabled { opacity: .5; cursor: wait; }
|
|
134
|
+
.dsh-wtc-primary { color: white; border-color: var(--wtc-blue); background: var(--wtc-blue); }
|
|
135
|
+
.dsh-wtc-danger { color: var(--wtc-red); }
|
|
136
|
+
.dsh-wtc-empty, .dsh-wtc-loading { padding: 24px 14px; color: var(--wtc-muted); text-align: center; }
|
|
137
|
+
.dsh-wtc-error { padding: 10px 12px; border: 1px solid color-mix(in srgb, var(--wtc-red) 35%, transparent); border-radius: 10px; background: color-mix(in srgb, var(--wtc-red) 8%, transparent); color: var(--wtc-red); overflow-wrap: anywhere; }
|
|
138
|
+
.dsh-wtc-confirm { position: absolute; z-index: 2; inset: 12px; align-self: start; display: grid; gap: 10px; max-width: 520px; margin: 64px auto 0; padding: 18px; border: 1px solid color-mix(in srgb, var(--wtc-red) 35%, var(--wtc-line)); border-radius: 14px; background: Canvas; color: CanvasText; box-shadow: 0 20px 60px rgba(0,0,0,.24); }
|
|
139
|
+
.dsh-wtc-confirm p { margin: 0; color: color-mix(in srgb, currentColor 68%, transparent); line-height: 1.5; }
|
|
140
|
+
.dsh-wtc-confirm-actions { display: flex; justify-content: flex-end; gap: 8px; flex-wrap: wrap; }
|
|
141
|
+
.dsh-wtc-manager-dialog { width: min(960px, calc(100vw - 32px)); max-width: 960px; max-height: min(86vh, 900px); }
|
|
142
|
+
.dsh-wtc-manager-content { overflow: auto; min-height: 0; }
|
|
143
|
+
.dsh-wtc-manager-content .dsh-wtc-console { padding: 4px 0 8px; }
|
|
144
|
+
@media (max-width: 620px) {
|
|
145
|
+
.dsh-wtc-current, .dsh-wtc-row { align-items: flex-start; flex-direction: column; }
|
|
146
|
+
.dsh-wtc-current-actions, .dsh-wtc-row-actions { width: 100%; justify-content: flex-start; }
|
|
147
|
+
}
|
|
148
|
+
.dsh-wtc-button, .dsh-wtc-link { display:inline-flex; align-items:center; gap:6px; }
|
|
149
|
+
.dsh-wtc-button .dsh-wt-icon, .dsh-wtc-link .dsh-wt-icon { width:16px; height:16px; flex:0 0 16px; }
|
|
150
|
+
.dsh-wtc-target-kind { width:14px; height:14px; flex:0 0 14px; }
|
|
151
|
+
.dsh-wtc-target-chip .dsh-wtc-target-chevron { width:12px; height:12px; border:0; transform:none; margin:0; }
|
|
152
|
+
.dsh-wtc-target-chip[aria-expanded="true"] .dsh-wtc-target-chevron { transform:rotate(180deg); }
|
|
153
|
+
.dsh-wtc-console-head[data-embedded] { justify-content:flex-end; }
|
|
154
|
+
.dsh-wtc-task-name { min-width:0; overflow-wrap:anywhere; font-weight:500; }
|
|
155
|
+
.dsh-wtc-facts .dsh-wtc-checkout-id { font-size:11px; overflow-wrap:anywhere; }
|
|
156
156
|
`;
|
|
157
157
|
//# sourceMappingURL=target-console.styles.js.map
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type ComponentType } from 'react';
|
|
2
|
+
import type { Context } from '@deepseek-ai/cordis';
|
|
2
3
|
import type { WorkspaceBrowserProps } from '@deepseek-ai/dsh-client-ui-workspace/client';
|
|
3
4
|
import type { WorktreeConsoleAdapter, WorktreeSidebarTopologyResponse } from '../../console-contract.js';
|
|
4
5
|
/** Ephemeral presentation metadata consumed only by the gated official Browser derivative. */
|
|
@@ -8,15 +9,23 @@ export interface ManagedWorktreeSessionDecoration {
|
|
|
8
9
|
label: string;
|
|
9
10
|
originalTitle: string;
|
|
10
11
|
}
|
|
12
|
+
interface ManagedWorkspaceGuard {
|
|
13
|
+
ready: boolean;
|
|
14
|
+
sessionIds: ReadonlySet<string>;
|
|
15
|
+
workspaceIds: ReadonlySet<string>;
|
|
16
|
+
blockSession(id: string): boolean;
|
|
17
|
+
blockWorkspace(id: string): boolean;
|
|
18
|
+
}
|
|
11
19
|
interface OfficialWorkspaceBrowserProps extends WorkspaceBrowserProps {
|
|
12
20
|
adapter: WorktreeConsoleAdapter;
|
|
13
21
|
OfficialBrowser: ComponentType<WorkspaceBrowserProps>;
|
|
22
|
+
guard?: ManagedWorkspaceGuard;
|
|
14
23
|
}
|
|
15
24
|
/**
|
|
16
25
|
* Preserve the complete official Workspace Browser and change only its data
|
|
17
26
|
* projection plus mutations that are unsafe for one-to-one Managed owners.
|
|
18
27
|
*/
|
|
19
|
-
export declare function ManagedOfficialWorkspaceBrowser({ adapter, OfficialBrowser, ...officialProps }: OfficialWorkspaceBrowserProps): import("react").JSX.Element;
|
|
28
|
+
export declare function ManagedOfficialWorkspaceBrowser({ adapter, OfficialBrowser, guard, ...officialProps }: OfficialWorkspaceBrowserProps): import("react").JSX.Element;
|
|
20
29
|
interface SidebarRegistrationContext {
|
|
21
30
|
slots: {
|
|
22
31
|
inject(name: string, callback: () => unknown): void;
|
|
@@ -29,5 +38,5 @@ interface SidebarRegistrationContext {
|
|
|
29
38
|
* replacing only its Browser component while preserving its declaration tree,
|
|
30
39
|
* locale, picker, stores, and directory-flow authorization.
|
|
31
40
|
*/
|
|
32
|
-
export declare function registerManagedWorkspaceSidebar(ctx: SidebarRegistrationContext, adapter: WorktreeConsoleAdapter): void;
|
|
41
|
+
export declare function registerManagedWorkspaceSidebar(ctx: SidebarRegistrationContext, adapter: WorktreeConsoleAdapter, applyWorkspace?: (ctx: Context) => void): void;
|
|
33
42
|
export {};
|
|
@@ -1,20 +1,22 @@
|
|
|
1
1
|
import { jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import { ClientI18nProvider, useClientTranslator } from '../i18n.js';
|
|
3
|
-
import { useEffect, useMemo, useState } from 'react';
|
|
3
|
+
import { useEffect, useLayoutEffect, useMemo, useState } from 'react';
|
|
4
4
|
import { apply as applyOfficialWorkspace } from 'virtual:dsh-official-workspace-client';
|
|
5
5
|
import { WORKTREE_REVIEW_REFRESH_EVENT } from '../review-console/status-events.js';
|
|
6
|
+
import { selectedSessionId } from '../actions.js';
|
|
6
7
|
import { projectManagedWorkspaceSidebar } from './model.js';
|
|
7
8
|
const EMPTY_TOPOLOGY = { projects: [] };
|
|
8
9
|
/**
|
|
9
10
|
* Preserve the complete official Workspace Browser and change only its data
|
|
10
11
|
* projection plus mutations that are unsafe for one-to-one Managed owners.
|
|
11
12
|
*/
|
|
12
|
-
export function ManagedOfficialWorkspaceBrowser({ adapter, OfficialBrowser, ...officialProps }) {
|
|
13
|
+
export function ManagedOfficialWorkspaceBrowser({ adapter, OfficialBrowser, guard, ...officialProps }) {
|
|
13
14
|
const t = useClientTranslator();
|
|
14
15
|
const props = officialProps;
|
|
15
16
|
const workspaceState = props.useWorkspaces((state) => state);
|
|
16
17
|
const sessionState = props.useSessions((state) => state);
|
|
17
18
|
const [topology, setTopology] = useState(EMPTY_TOPOLOGY);
|
|
19
|
+
const [topologyVerified, setTopologyVerified] = useState(false);
|
|
18
20
|
const workspaceKey = workspaceState.items
|
|
19
21
|
.map(workspace => `${workspace.workspaceId}:${workspace.sessionIds.join(',')}`)
|
|
20
22
|
.join('|');
|
|
@@ -22,29 +24,44 @@ export function ManagedOfficialWorkspaceBrowser({ adapter, OfficialBrowser, ...o
|
|
|
22
24
|
useEffect(() => {
|
|
23
25
|
let active = true;
|
|
24
26
|
const refresh = () => {
|
|
27
|
+
if (guard)
|
|
28
|
+
guard.ready = false;
|
|
25
29
|
void adapter.sidebarTopology().then(outcome => {
|
|
26
30
|
if (!active)
|
|
27
31
|
return;
|
|
28
32
|
setTopology(outcome.ok ? outcome.value : EMPTY_TOPOLOGY);
|
|
33
|
+
setTopologyVerified(outcome.ok);
|
|
29
34
|
}, () => {
|
|
30
|
-
if (active)
|
|
35
|
+
if (active) {
|
|
31
36
|
setTopology(EMPTY_TOPOLOGY);
|
|
37
|
+
setTopologyVerified(false);
|
|
38
|
+
}
|
|
32
39
|
});
|
|
33
40
|
};
|
|
34
41
|
refresh();
|
|
35
42
|
window.addEventListener(WORKTREE_REVIEW_REFRESH_EVENT, refresh);
|
|
36
43
|
return () => {
|
|
37
44
|
active = false;
|
|
45
|
+
if (guard)
|
|
46
|
+
guard.ready = false;
|
|
38
47
|
window.removeEventListener(WORKTREE_REVIEW_REFRESH_EVENT, refresh);
|
|
39
48
|
};
|
|
40
|
-
}, [adapter, sessionKey, workspaceKey]);
|
|
49
|
+
}, [adapter, guard, sessionKey, workspaceKey]);
|
|
41
50
|
const projection = useMemo(() => projectManagedWorkspaceSidebar({
|
|
42
51
|
workspaces: workspaceState.items,
|
|
43
52
|
sessions: sessionState.byId,
|
|
44
53
|
topology,
|
|
45
54
|
archivedSessionIds: workspaceState.archivedSessionIds,
|
|
46
|
-
currentSessionId: sessionState
|
|
55
|
+
currentSessionId: selectedSessionId(sessionState),
|
|
47
56
|
}, t), [sessionState.byId, sessionState.current, topology, workspaceState.items, workspaceState.archivedSessionIds, t]);
|
|
57
|
+
useLayoutEffect(() => {
|
|
58
|
+
if (!guard)
|
|
59
|
+
return;
|
|
60
|
+
guard.sessionIds = projection.protectedSessionIds;
|
|
61
|
+
guard.workspaceIds = projection.protectedWorkspaceIds;
|
|
62
|
+
guard.ready = topologyVerified;
|
|
63
|
+
return () => { guard.ready = false; };
|
|
64
|
+
}, [guard, projection, topologyVerified]);
|
|
48
65
|
const projectedWorkspaceState = useMemo(() => ({
|
|
49
66
|
...workspaceState,
|
|
50
67
|
items: projection.workspaces.map(workspace => projection.protectedWorkspaceIds.has(workspace.workspaceId)
|
|
@@ -99,14 +116,34 @@ export function ManagedOfficialWorkspaceBrowser({ adapter, OfficialBrowser, ...o
|
|
|
99
116
|
} });
|
|
100
117
|
}
|
|
101
118
|
function officialContextProxy(ctx, adapter) {
|
|
119
|
+
// Service-level guards also cover the newer official shortcut/menu seats,
|
|
120
|
+
// which call uiWorkspace directly rather than invoking Browser props.
|
|
121
|
+
const guard = {
|
|
122
|
+
ready: false,
|
|
123
|
+
sessionIds: new Set(),
|
|
124
|
+
workspaceIds: new Set(),
|
|
125
|
+
blockSession(id) { return !this.ready || this.sessionIds.has(id); },
|
|
126
|
+
blockWorkspace(id) { return !this.ready || this.workspaceIds.has(id); },
|
|
127
|
+
};
|
|
102
128
|
const proxySlots = new Proxy(ctx.slots, {
|
|
103
129
|
get(target, key, receiver) {
|
|
104
130
|
if (key === 'register') {
|
|
105
131
|
return (descriptor, component) => {
|
|
132
|
+
if ((descriptor.name === 'sidebar.workspaces.session.menu.item'
|
|
133
|
+
|| descriptor.name === 'sidebar.workspaces.session.row.action')
|
|
134
|
+
&& descriptor.id !== 'pin') {
|
|
135
|
+
// The only owner-safe built-in row action is pin. Third-party actions
|
|
136
|
+
// remain available on ordinary Sessions, but never on a managed owner.
|
|
137
|
+
const Action = component;
|
|
138
|
+
const GuardedAction = (props) => typeof props.sessionId === 'string' && !guard.blockSession(props.sessionId)
|
|
139
|
+
? _jsx(Action, { ...props })
|
|
140
|
+
: null;
|
|
141
|
+
return target.register(descriptor, GuardedAction);
|
|
142
|
+
}
|
|
106
143
|
if (descriptor.name !== 'sidebar.workspaces')
|
|
107
144
|
return target.register(descriptor, component);
|
|
108
145
|
const OfficialBrowser = component;
|
|
109
|
-
const Browser = (props) => _jsx(ClientI18nProvider, { locale: typeof ctx.get === 'function' ? ctx.get('locale') : undefined, children: _jsx(ManagedOfficialWorkspaceBrowser, { ...props, adapter: adapter, OfficialBrowser: OfficialBrowser }) });
|
|
146
|
+
const Browser = (props) => _jsx(ClientI18nProvider, { locale: typeof ctx.get === 'function' ? ctx.get('locale') : undefined, children: _jsx(ManagedOfficialWorkspaceBrowser, { ...props, adapter: adapter, OfficialBrowser: OfficialBrowser, guard: guard }) });
|
|
110
147
|
return target.register(descriptor, Browser);
|
|
111
148
|
};
|
|
112
149
|
}
|
|
@@ -117,6 +154,11 @@ function officialContextProxy(ctx, adapter) {
|
|
|
117
154
|
get(target, key, receiver) {
|
|
118
155
|
if (key === 'slots')
|
|
119
156
|
return proxySlots;
|
|
157
|
+
if (key === 'get' && typeof target.get === 'function') {
|
|
158
|
+
return (name) => name === '__dshGitWorktreeManagedGuard'
|
|
159
|
+
? guard
|
|
160
|
+
: target.get.call(target, name);
|
|
161
|
+
}
|
|
120
162
|
return Reflect.get(target, key, receiver);
|
|
121
163
|
},
|
|
122
164
|
});
|
|
@@ -126,7 +168,7 @@ function officialContextProxy(ctx, adapter) {
|
|
|
126
168
|
* replacing only its Browser component while preserving its declaration tree,
|
|
127
169
|
* locale, picker, stores, and directory-flow authorization.
|
|
128
170
|
*/
|
|
129
|
-
export function registerManagedWorkspaceSidebar(ctx, adapter) {
|
|
130
|
-
|
|
171
|
+
export function registerManagedWorkspaceSidebar(ctx, adapter, applyWorkspace = applyOfficialWorkspace) {
|
|
172
|
+
applyWorkspace(officialContextProxy(ctx, adapter));
|
|
131
173
|
}
|
|
132
174
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/workspace-sidebar/index.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AACpE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAsB,MAAM,OAAO,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/client/workspace-sidebar/index.tsx"],"names":[],"mappings":"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"}
|