claude-code-kanban 7.19.0 → 7.21.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/ask.js +215 -0
- package/lib/parent-cache.js +5 -1
- package/package.json +1 -1
- package/plugin/plugins/claude-code-kanban/.claude-plugin/plugin.json +1 -1
- package/plugin/plugins/claude-code-kanban/hooks/ask.ts +163 -0
- package/plugin/plugins/claude-code-kanban/hooks/index.ts +2 -0
- package/plugin/plugins/claude-code-kanban/skills/ask/SKILL.md +44 -0
- package/plugin/plugins/claude-code-kanban/skills/ask/references/playground.md +25 -0
- package/plugin/plugins/claude-code-kanban/tests/ask.test.ts +100 -0
- package/plugin/plugins/claude-code-kanban/tests/show.test.ts +1 -1
- package/public/app.js +257 -45
- package/public/index.html +24 -3
- package/public/style.css +320 -69
- package/public/themes.css +93 -93
- package/server.js +17 -5
package/public/style.css
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
--text-primary: #f0f1f3;
|
|
14
14
|
--text-secondary: #c2c4c9;
|
|
15
15
|
--text-tertiary: #9a9da5;
|
|
16
|
-
--text-muted: #
|
|
16
|
+
--text-muted: #868994;
|
|
17
17
|
--accent: #e86f33;
|
|
18
18
|
--accent-text: #f0a070;
|
|
19
19
|
--accent-dim: rgba(232, 111, 51, 0.25);
|
|
@@ -290,11 +290,11 @@ body::before {
|
|
|
290
290
|
padding: 4px 10px;
|
|
291
291
|
font: inherit;
|
|
292
292
|
font-size: 11px;
|
|
293
|
-
font-weight:
|
|
293
|
+
font-weight: 600;
|
|
294
294
|
letter-spacing: 0.04em;
|
|
295
|
-
color: var(--text
|
|
295
|
+
color: var(--accent-text);
|
|
296
296
|
background: transparent;
|
|
297
|
-
border: 1px
|
|
297
|
+
border: 1px solid var(--accent-text);
|
|
298
298
|
border-radius: 999px;
|
|
299
299
|
white-space: nowrap;
|
|
300
300
|
cursor: pointer;
|
|
@@ -1097,7 +1097,7 @@ body.booting .boot-splash {
|
|
|
1097
1097
|
}
|
|
1098
1098
|
|
|
1099
1099
|
.session-item.warm .session-time {
|
|
1100
|
-
color: var(--success);
|
|
1100
|
+
color: color-mix(in srgb, var(--success) 70%, var(--text-primary));
|
|
1101
1101
|
}
|
|
1102
1102
|
|
|
1103
1103
|
.session-item.warm .session-time::before {
|
|
@@ -1134,13 +1134,14 @@ body.booting .boot-splash {
|
|
|
1134
1134
|
background: var(--warning);
|
|
1135
1135
|
}
|
|
1136
1136
|
|
|
1137
|
+
/* Stale rows render at 0.85 opacity, which takes --text-muted below 4.5:1. */
|
|
1137
1138
|
.session-item.stale .session-time {
|
|
1138
|
-
color: var(--text-
|
|
1139
|
+
color: var(--text-tertiary);
|
|
1139
1140
|
}
|
|
1140
1141
|
|
|
1141
1142
|
.session-item.stale .session-time::before {
|
|
1142
1143
|
background: transparent;
|
|
1143
|
-
border: 1px solid var(--text-
|
|
1144
|
+
border: 1px solid var(--text-tertiary);
|
|
1144
1145
|
}
|
|
1145
1146
|
|
|
1146
1147
|
.session-name {
|
|
@@ -1221,6 +1222,9 @@ body.booting .boot-splash {
|
|
|
1221
1222
|
}
|
|
1222
1223
|
|
|
1223
1224
|
.session-secondary {
|
|
1225
|
+
display: flex;
|
|
1226
|
+
align-items: baseline;
|
|
1227
|
+
gap: 5px;
|
|
1224
1228
|
font-family: var(--sans);
|
|
1225
1229
|
font-size: 12px;
|
|
1226
1230
|
font-weight: 450;
|
|
@@ -1230,12 +1234,20 @@ body.booting .boot-splash {
|
|
|
1230
1234
|
overflow: hidden;
|
|
1231
1235
|
}
|
|
1232
1236
|
|
|
1237
|
+
.session-project {
|
|
1238
|
+
flex: none;
|
|
1239
|
+
max-width: 60%;
|
|
1240
|
+
overflow: hidden;
|
|
1241
|
+
text-overflow: ellipsis;
|
|
1242
|
+
}
|
|
1243
|
+
|
|
1233
1244
|
/* inline-block, not inline-flex: a flex box ignores text-overflow, so a long worktree name
|
|
1234
1245
|
ran past the card edge instead of truncating. */
|
|
1235
1246
|
.wt-chip {
|
|
1236
1247
|
display: inline-block;
|
|
1248
|
+
flex: 0 1 auto;
|
|
1249
|
+
align-self: center;
|
|
1237
1250
|
max-width: 60%;
|
|
1238
|
-
margin-left: 5px;
|
|
1239
1251
|
padding: 0 5px;
|
|
1240
1252
|
border: 1px solid var(--accent-dim);
|
|
1241
1253
|
border-radius: 999px;
|
|
@@ -1244,17 +1256,15 @@ body.booting .boot-splash {
|
|
|
1244
1256
|
font-family: var(--mono);
|
|
1245
1257
|
font-size: 9px;
|
|
1246
1258
|
line-height: 14px;
|
|
1247
|
-
vertical-align: middle;
|
|
1248
1259
|
white-space: nowrap;
|
|
1249
1260
|
overflow: hidden;
|
|
1250
1261
|
text-overflow: ellipsis;
|
|
1251
1262
|
}
|
|
1252
1263
|
|
|
1253
1264
|
.session-branch {
|
|
1265
|
+
min-width: 0;
|
|
1254
1266
|
font-size: 10px;
|
|
1255
1267
|
color: var(--text-secondary);
|
|
1256
|
-
margin-top: var(--card-gap-tight);
|
|
1257
|
-
display: block;
|
|
1258
1268
|
font-family: var(--mono);
|
|
1259
1269
|
white-space: nowrap;
|
|
1260
1270
|
overflow: hidden;
|
|
@@ -1333,7 +1343,7 @@ body.booting .boot-splash {
|
|
|
1333
1343
|
justify-content: space-between;
|
|
1334
1344
|
gap: 6px;
|
|
1335
1345
|
margin-top: 4px;
|
|
1336
|
-
font-size:
|
|
1346
|
+
font-size: 11px;
|
|
1337
1347
|
font-family: var(--font-mono);
|
|
1338
1348
|
color: var(--text-tertiary);
|
|
1339
1349
|
white-space: nowrap;
|
|
@@ -1936,7 +1946,7 @@ body.booting .boot-splash {
|
|
|
1936
1946
|
.view-progress .progress-text {
|
|
1937
1947
|
font-size: 14px;
|
|
1938
1948
|
font-weight: 500;
|
|
1939
|
-
color: var(--accent);
|
|
1949
|
+
color: var(--accent-text);
|
|
1940
1950
|
}
|
|
1941
1951
|
|
|
1942
1952
|
.icon-btn {
|
|
@@ -2111,7 +2121,7 @@ body.booting .boot-splash {
|
|
|
2111
2121
|
color: var(--text-tertiary);
|
|
2112
2122
|
}
|
|
2113
2123
|
.column-title.in-progress {
|
|
2114
|
-
color: var(--accent);
|
|
2124
|
+
color: var(--accent-text);
|
|
2115
2125
|
}
|
|
2116
2126
|
.column-title.completed {
|
|
2117
2127
|
color: var(--success);
|
|
@@ -2131,7 +2141,7 @@ body.booting .boot-splash {
|
|
|
2131
2141
|
|
|
2132
2142
|
.column-count.in-progress {
|
|
2133
2143
|
background: var(--accent-dim);
|
|
2134
|
-
color: var(--accent);
|
|
2144
|
+
color: var(--accent-text);
|
|
2135
2145
|
}
|
|
2136
2146
|
|
|
2137
2147
|
.column-count.completed {
|
|
@@ -2242,7 +2252,6 @@ body.booting .boot-splash {
|
|
|
2242
2252
|
}
|
|
2243
2253
|
|
|
2244
2254
|
.task-card.completed {
|
|
2245
|
-
opacity: 0.85;
|
|
2246
2255
|
border-left: 2px solid var(--success);
|
|
2247
2256
|
}
|
|
2248
2257
|
|
|
@@ -2313,7 +2322,7 @@ body.booting .boot-splash {
|
|
|
2313
2322
|
border-top: 1px solid var(--border);
|
|
2314
2323
|
font-size: 11px;
|
|
2315
2324
|
font-weight: 500;
|
|
2316
|
-
color: var(--accent);
|
|
2325
|
+
color: var(--accent-text);
|
|
2317
2326
|
}
|
|
2318
2327
|
|
|
2319
2328
|
.task-active::before {
|
|
@@ -2343,7 +2352,7 @@ body.booting .boot-splash {
|
|
|
2343
2352
|
}
|
|
2344
2353
|
|
|
2345
2354
|
.task-chip-accent {
|
|
2346
|
-
color: var(--accent);
|
|
2355
|
+
color: var(--accent-text);
|
|
2347
2356
|
}
|
|
2348
2357
|
|
|
2349
2358
|
.task-desc {
|
|
@@ -2554,7 +2563,7 @@ body.booting .boot-splash {
|
|
|
2554
2563
|
|
|
2555
2564
|
.detail-status.in_progress {
|
|
2556
2565
|
background: var(--accent-dim);
|
|
2557
|
-
color: var(--accent);
|
|
2566
|
+
color: var(--accent-text);
|
|
2558
2567
|
border: 1px solid var(--accent);
|
|
2559
2568
|
}
|
|
2560
2569
|
|
|
@@ -2596,7 +2605,7 @@ body.booting .boot-splash {
|
|
|
2596
2605
|
}
|
|
2597
2606
|
|
|
2598
2607
|
.detail-box.active strong {
|
|
2599
|
-
color: var(--accent);
|
|
2608
|
+
color: var(--accent-text);
|
|
2600
2609
|
}
|
|
2601
2610
|
|
|
2602
2611
|
.detail-desc {
|
|
@@ -2944,7 +2953,7 @@ code.ct .ct-has[aria-expanded='false'] .ct-name::after {
|
|
|
2944
2953
|
font-weight: 600;
|
|
2945
2954
|
text-transform: uppercase;
|
|
2946
2955
|
letter-spacing: 0.05em;
|
|
2947
|
-
color: var(--accent);
|
|
2956
|
+
color: var(--accent-text);
|
|
2948
2957
|
margin: 0 0 8px 0;
|
|
2949
2958
|
}
|
|
2950
2959
|
|
|
@@ -2994,7 +3003,7 @@ code.ct .ct-has[aria-expanded='false'] .ct-name::after {
|
|
|
2994
3003
|
.shared-tasklist-badge {
|
|
2995
3004
|
display: inline-flex;
|
|
2996
3005
|
align-items: center;
|
|
2997
|
-
color: var(--accent);
|
|
3006
|
+
color: var(--accent-text);
|
|
2998
3007
|
flex-shrink: 0;
|
|
2999
3008
|
}
|
|
3000
3009
|
|
|
@@ -3006,6 +3015,7 @@ code.ct .ct-has[aria-expanded='false'] .ct-name::after {
|
|
|
3006
3015
|
.loop-badge,
|
|
3007
3016
|
.workflow-badge,
|
|
3008
3017
|
.dispatched-badge,
|
|
3018
|
+
.fork-badge,
|
|
3009
3019
|
.terminal-badge {
|
|
3010
3020
|
width: 18px;
|
|
3011
3021
|
height: 18px;
|
|
@@ -3021,6 +3031,17 @@ code.ct .ct-has[aria-expanded='false'] .ct-name::after {
|
|
|
3021
3031
|
transition: all 0.15s ease;
|
|
3022
3032
|
}
|
|
3023
3033
|
|
|
3034
|
+
/* A 22×24px hit area around each 18px icon without growing the card. The 5px row gap
|
|
3035
|
+
keeps neighbouring areas from overlapping. */
|
|
3036
|
+
.session-indicators > [onclick] {
|
|
3037
|
+
position: relative;
|
|
3038
|
+
}
|
|
3039
|
+
.session-indicators > [onclick]::after {
|
|
3040
|
+
content: '';
|
|
3041
|
+
position: absolute;
|
|
3042
|
+
inset: -3px -2px;
|
|
3043
|
+
}
|
|
3044
|
+
|
|
3024
3045
|
.team-info-btn:hover,
|
|
3025
3046
|
.loop-badge:hover,
|
|
3026
3047
|
.workflow-badge:hover {
|
|
@@ -3440,7 +3461,7 @@ code.ct .ct-has[aria-expanded='false'] .ct-name::after {
|
|
|
3440
3461
|
|
|
3441
3462
|
.team-member-card .member-tasks {
|
|
3442
3463
|
font-size: 11px;
|
|
3443
|
-
color: var(--accent);
|
|
3464
|
+
color: var(--accent-text);
|
|
3444
3465
|
margin-top: 4px;
|
|
3445
3466
|
}
|
|
3446
3467
|
|
|
@@ -3458,6 +3479,18 @@ code.ct .ct-has[aria-expanded='false'] .ct-name::after {
|
|
|
3458
3479
|
min-height: 0;
|
|
3459
3480
|
padding-right: 8px;
|
|
3460
3481
|
}
|
|
3482
|
+
/* Scroll shadows: the covers scroll with the content (local), the shadows stay at the edges,
|
|
3483
|
+
so a shadow shows only while more content is above or below. */
|
|
3484
|
+
.modal-help .modal-body {
|
|
3485
|
+
padding-bottom: 16px;
|
|
3486
|
+
--scroll-shadow: color-mix(in srgb, var(--text-primary) 30%, transparent);
|
|
3487
|
+
background:
|
|
3488
|
+
linear-gradient(var(--bg-surface) 30%, transparent) center top / 100% 40px no-repeat local,
|
|
3489
|
+
linear-gradient(transparent, var(--bg-surface) 70%) center bottom / 100% 40px no-repeat local,
|
|
3490
|
+
radial-gradient(farthest-side at 50% 0, var(--scroll-shadow), transparent) center top / 100% 18px no-repeat scroll,
|
|
3491
|
+
radial-gradient(farthest-side at 50% 100%, var(--scroll-shadow), transparent) center bottom / 100% 18px no-repeat
|
|
3492
|
+
scroll;
|
|
3493
|
+
}
|
|
3461
3494
|
#team-modal .modal-footer {
|
|
3462
3495
|
flex-shrink: 0;
|
|
3463
3496
|
}
|
|
@@ -3532,6 +3565,10 @@ code.ct .ct-has[aria-expanded='false'] .ct-name::after {
|
|
|
3532
3565
|
border-top: 1px solid var(--border);
|
|
3533
3566
|
}
|
|
3534
3567
|
|
|
3568
|
+
.team-modal-meta:first-child {
|
|
3569
|
+
margin-top: 0;
|
|
3570
|
+
}
|
|
3571
|
+
|
|
3535
3572
|
.info-grid {
|
|
3536
3573
|
display: grid;
|
|
3537
3574
|
grid-template-columns: auto 1fr auto;
|
|
@@ -3541,10 +3578,11 @@ code.ct .ct-has[aria-expanded='false'] .ct-name::after {
|
|
|
3541
3578
|
}
|
|
3542
3579
|
/* Shared hover-reveal icon-button group, also used by the linked-doc rows. Each host
|
|
3543
3580
|
supplies its own reveal trigger — the base only sets the resting opacity. */
|
|
3581
|
+
/* 0.55 is the lowest opacity that keeps the icons at 3:1 in light and dark. */
|
|
3544
3582
|
.row-actions {
|
|
3545
3583
|
display: flex;
|
|
3546
3584
|
gap: 4px;
|
|
3547
|
-
opacity: 0.
|
|
3585
|
+
opacity: 0.55;
|
|
3548
3586
|
transition: opacity 0.15s ease;
|
|
3549
3587
|
}
|
|
3550
3588
|
.info-grid:hover .row-actions {
|
|
@@ -4286,7 +4324,7 @@ body.light .show-card.focused {
|
|
|
4286
4324
|
}
|
|
4287
4325
|
|
|
4288
4326
|
.show-md a {
|
|
4289
|
-
color: var(--accent);
|
|
4327
|
+
color: var(--accent-text);
|
|
4290
4328
|
}
|
|
4291
4329
|
|
|
4292
4330
|
.show-md blockquote {
|
|
@@ -4460,6 +4498,181 @@ body.show-resizing iframe {
|
|
|
4460
4498
|
|
|
4461
4499
|
/* #endregion */
|
|
4462
4500
|
|
|
4501
|
+
/* #region ASK */
|
|
4502
|
+
.ask-modal {
|
|
4503
|
+
position: absolute;
|
|
4504
|
+
inset: 0;
|
|
4505
|
+
z-index: 5;
|
|
4506
|
+
display: flex;
|
|
4507
|
+
align-items: center;
|
|
4508
|
+
justify-content: center;
|
|
4509
|
+
background: color-mix(in srgb, var(--bg-deep) 55%, transparent);
|
|
4510
|
+
}
|
|
4511
|
+
|
|
4512
|
+
.ask-modal[hidden] {
|
|
4513
|
+
display: none;
|
|
4514
|
+
}
|
|
4515
|
+
|
|
4516
|
+
.ask-box {
|
|
4517
|
+
display: flex;
|
|
4518
|
+
flex-direction: column;
|
|
4519
|
+
box-sizing: border-box;
|
|
4520
|
+
width: min(560px, calc(100% - 32px));
|
|
4521
|
+
max-height: calc(100% - 32px);
|
|
4522
|
+
background: var(--bg-surface);
|
|
4523
|
+
border: 1px solid var(--border);
|
|
4524
|
+
border-radius: 10px;
|
|
4525
|
+
box-shadow: 0 12px 32px -12px rgba(0, 0, 0, 0.45);
|
|
4526
|
+
overflow: hidden;
|
|
4527
|
+
}
|
|
4528
|
+
|
|
4529
|
+
.ask-box[data-size='lg'] {
|
|
4530
|
+
width: min(960px, calc(100% - 32px));
|
|
4531
|
+
}
|
|
4532
|
+
|
|
4533
|
+
.ask-box[data-size='full'] {
|
|
4534
|
+
width: calc(100% - 32px);
|
|
4535
|
+
height: calc(100% - 32px);
|
|
4536
|
+
}
|
|
4537
|
+
|
|
4538
|
+
.ask-head,
|
|
4539
|
+
.ask-foot {
|
|
4540
|
+
display: flex;
|
|
4541
|
+
flex: none;
|
|
4542
|
+
align-items: center;
|
|
4543
|
+
gap: 8px;
|
|
4544
|
+
padding: 6px 8px 6px 12px;
|
|
4545
|
+
color: var(--text-tertiary);
|
|
4546
|
+
font-size: 11px;
|
|
4547
|
+
}
|
|
4548
|
+
|
|
4549
|
+
.ask-head {
|
|
4550
|
+
border-bottom: 1px solid var(--border);
|
|
4551
|
+
}
|
|
4552
|
+
|
|
4553
|
+
.ask-foot {
|
|
4554
|
+
justify-content: space-between;
|
|
4555
|
+
border-top: 1px solid var(--border);
|
|
4556
|
+
}
|
|
4557
|
+
|
|
4558
|
+
.ask-dot {
|
|
4559
|
+
display: inline-grid;
|
|
4560
|
+
place-items: center;
|
|
4561
|
+
flex: none;
|
|
4562
|
+
width: 16px;
|
|
4563
|
+
height: 16px;
|
|
4564
|
+
border-radius: 50%;
|
|
4565
|
+
background: var(--accent);
|
|
4566
|
+
color: #fff;
|
|
4567
|
+
font-size: 10px;
|
|
4568
|
+
font-weight: 700;
|
|
4569
|
+
}
|
|
4570
|
+
|
|
4571
|
+
.ask-title {
|
|
4572
|
+
flex: 1;
|
|
4573
|
+
min-width: 0;
|
|
4574
|
+
overflow: hidden;
|
|
4575
|
+
color: var(--text-primary);
|
|
4576
|
+
font-size: 12px;
|
|
4577
|
+
font-weight: 600;
|
|
4578
|
+
text-overflow: ellipsis;
|
|
4579
|
+
white-space: nowrap;
|
|
4580
|
+
}
|
|
4581
|
+
|
|
4582
|
+
.ask-x {
|
|
4583
|
+
display: inline-grid;
|
|
4584
|
+
place-items: center;
|
|
4585
|
+
width: 22px;
|
|
4586
|
+
height: 22px;
|
|
4587
|
+
padding: 0;
|
|
4588
|
+
border: 0;
|
|
4589
|
+
border-radius: 4px;
|
|
4590
|
+
background: transparent;
|
|
4591
|
+
color: var(--text-tertiary);
|
|
4592
|
+
cursor: pointer;
|
|
4593
|
+
}
|
|
4594
|
+
|
|
4595
|
+
.ask-x svg {
|
|
4596
|
+
width: 14px;
|
|
4597
|
+
height: 14px;
|
|
4598
|
+
}
|
|
4599
|
+
|
|
4600
|
+
.ask-foot button {
|
|
4601
|
+
padding: 3px 12px;
|
|
4602
|
+
border: 1px solid var(--border);
|
|
4603
|
+
border-radius: 5px;
|
|
4604
|
+
background: transparent;
|
|
4605
|
+
color: var(--text-secondary);
|
|
4606
|
+
font: inherit;
|
|
4607
|
+
cursor: pointer;
|
|
4608
|
+
}
|
|
4609
|
+
|
|
4610
|
+
.ask-x:hover,
|
|
4611
|
+
.ask-foot button:hover {
|
|
4612
|
+
background: var(--bg-hover);
|
|
4613
|
+
color: var(--text-primary);
|
|
4614
|
+
}
|
|
4615
|
+
|
|
4616
|
+
.ask-body {
|
|
4617
|
+
display: flex;
|
|
4618
|
+
flex: 1 1 auto;
|
|
4619
|
+
flex-direction: column;
|
|
4620
|
+
min-height: 0;
|
|
4621
|
+
}
|
|
4622
|
+
|
|
4623
|
+
.ask-frame {
|
|
4624
|
+
display: block;
|
|
4625
|
+
width: 100%;
|
|
4626
|
+
border: 0;
|
|
4627
|
+
background: var(--bg-surface);
|
|
4628
|
+
}
|
|
4629
|
+
|
|
4630
|
+
.ask-box[data-size='full'] .ask-frame {
|
|
4631
|
+
flex: 1;
|
|
4632
|
+
}
|
|
4633
|
+
|
|
4634
|
+
.ask-missing {
|
|
4635
|
+
margin: 0;
|
|
4636
|
+
padding: 16px;
|
|
4637
|
+
color: var(--text-tertiary);
|
|
4638
|
+
}
|
|
4639
|
+
|
|
4640
|
+
.ask-reopen {
|
|
4641
|
+
max-width: 240px;
|
|
4642
|
+
border-color: color-mix(in srgb, var(--accent) 50%, var(--border));
|
|
4643
|
+
color: var(--text-secondary);
|
|
4644
|
+
}
|
|
4645
|
+
|
|
4646
|
+
.ask-reopen-n {
|
|
4647
|
+
overflow: hidden;
|
|
4648
|
+
text-overflow: ellipsis;
|
|
4649
|
+
white-space: nowrap;
|
|
4650
|
+
}
|
|
4651
|
+
|
|
4652
|
+
.ask-reopen .ask-dot {
|
|
4653
|
+
width: 14px;
|
|
4654
|
+
height: 14px;
|
|
4655
|
+
font-size: 9px;
|
|
4656
|
+
animation: ask-pulse 1.6s ease-out infinite;
|
|
4657
|
+
}
|
|
4658
|
+
|
|
4659
|
+
@keyframes ask-pulse {
|
|
4660
|
+
0% {
|
|
4661
|
+
box-shadow: 0 0 0 0 color-mix(in srgb, var(--accent) 60%, transparent);
|
|
4662
|
+
}
|
|
4663
|
+
100% {
|
|
4664
|
+
box-shadow: 0 0 0 6px transparent;
|
|
4665
|
+
}
|
|
4666
|
+
}
|
|
4667
|
+
|
|
4668
|
+
@media (prefers-reduced-motion: reduce) {
|
|
4669
|
+
.ask-reopen .ask-dot {
|
|
4670
|
+
animation: none;
|
|
4671
|
+
}
|
|
4672
|
+
}
|
|
4673
|
+
|
|
4674
|
+
/* #endregion */
|
|
4675
|
+
|
|
4463
4676
|
/* #region PANES */
|
|
4464
4677
|
.pane-strip {
|
|
4465
4678
|
display: none;
|
|
@@ -4793,7 +5006,7 @@ body.show-resizing iframe {
|
|
|
4793
5006
|
|
|
4794
5007
|
.pane-tool:disabled,
|
|
4795
5008
|
.pane-split-btn:disabled {
|
|
4796
|
-
opacity: 0.
|
|
5009
|
+
opacity: 0.55;
|
|
4797
5010
|
cursor: default;
|
|
4798
5011
|
background: none;
|
|
4799
5012
|
}
|
|
@@ -5295,6 +5508,27 @@ body.show-resizing iframe {
|
|
|
5295
5508
|
.message-panel-content > * + * {
|
|
5296
5509
|
margin-top: 8px;
|
|
5297
5510
|
}
|
|
5511
|
+
/* Under the pinned block, rows scrolled past the top fade out instead of showing as a cut row.
|
|
5512
|
+
The fade grows over the first 64px of scroll, so an unscrolled list shows its first row whole.
|
|
5513
|
+
Its top 24px are fully clear, which covers the meta line of a cut row. */
|
|
5514
|
+
@property --msg-top-fade {
|
|
5515
|
+
syntax: '<length>';
|
|
5516
|
+
inherits: false;
|
|
5517
|
+
initial-value: 0px;
|
|
5518
|
+
}
|
|
5519
|
+
@keyframes msg-top-fade {
|
|
5520
|
+
to {
|
|
5521
|
+
--msg-top-fade: 64px;
|
|
5522
|
+
}
|
|
5523
|
+
}
|
|
5524
|
+
@supports (animation-timeline: scroll()) {
|
|
5525
|
+
#message-panel-pinned:not(:empty) + .message-panel-content {
|
|
5526
|
+
mask-image: linear-gradient(to bottom, transparent calc(var(--msg-top-fade) * 0.375), #000 var(--msg-top-fade));
|
|
5527
|
+
animation: msg-top-fade linear both;
|
|
5528
|
+
animation-timeline: scroll(self);
|
|
5529
|
+
animation-range: 0 64px;
|
|
5530
|
+
}
|
|
5531
|
+
}
|
|
5298
5532
|
.msg-item {
|
|
5299
5533
|
display: flex;
|
|
5300
5534
|
gap: 8px;
|
|
@@ -5449,7 +5683,7 @@ body.show-resizing iframe {
|
|
|
5449
5683
|
font-size: 9px;
|
|
5450
5684
|
}
|
|
5451
5685
|
.msg-agent-link {
|
|
5452
|
-
color: var(--accent);
|
|
5686
|
+
color: var(--accent-text);
|
|
5453
5687
|
font-size: 0.85rem;
|
|
5454
5688
|
margin-left: 4px;
|
|
5455
5689
|
opacity: 0.7;
|
|
@@ -5494,6 +5728,10 @@ body.show-resizing iframe {
|
|
|
5494
5728
|
#message-panel-pinned {
|
|
5495
5729
|
flex-shrink: 0;
|
|
5496
5730
|
padding: 8px 16px;
|
|
5731
|
+
border-bottom: 1px solid var(--border);
|
|
5732
|
+
box-shadow: 0 4px 6px -4px color-mix(in srgb, var(--text-primary) 25%, transparent);
|
|
5733
|
+
position: relative;
|
|
5734
|
+
z-index: 1;
|
|
5497
5735
|
}
|
|
5498
5736
|
.pinned-section {
|
|
5499
5737
|
border: 1px solid color-mix(in srgb, var(--accent) 40%, transparent);
|
|
@@ -5504,7 +5742,7 @@ body.show-resizing iframe {
|
|
|
5504
5742
|
padding: 6px 10px;
|
|
5505
5743
|
font-size: 11px;
|
|
5506
5744
|
font-weight: 600;
|
|
5507
|
-
color: var(--accent);
|
|
5745
|
+
color: var(--accent-text);
|
|
5508
5746
|
cursor: pointer;
|
|
5509
5747
|
display: flex;
|
|
5510
5748
|
align-items: center;
|
|
@@ -5632,7 +5870,7 @@ body.show-resizing iframe {
|
|
|
5632
5870
|
border-bottom-color: var(--text-muted);
|
|
5633
5871
|
}
|
|
5634
5872
|
.agent-tab.active {
|
|
5635
|
-
color: var(--accent);
|
|
5873
|
+
color: var(--accent-text);
|
|
5636
5874
|
border-bottom-color: var(--accent);
|
|
5637
5875
|
}
|
|
5638
5876
|
.agent-tab-panel {
|
|
@@ -5725,7 +5963,7 @@ body.show-resizing iframe {
|
|
|
5725
5963
|
}
|
|
5726
5964
|
.toast.toast-info {
|
|
5727
5965
|
border-color: var(--accent);
|
|
5728
|
-
color: var(--accent);
|
|
5966
|
+
color: var(--accent-text);
|
|
5729
5967
|
}
|
|
5730
5968
|
.rendered-md h1,
|
|
5731
5969
|
.rendered-md h2,
|
|
@@ -5756,7 +5994,7 @@ body.show-resizing iframe {
|
|
|
5756
5994
|
list-style: none;
|
|
5757
5995
|
}
|
|
5758
5996
|
.rendered-md a {
|
|
5759
|
-
color: var(--accent);
|
|
5997
|
+
color: var(--accent-text);
|
|
5760
5998
|
}
|
|
5761
5999
|
.rendered-md pre {
|
|
5762
6000
|
margin: 0.6em 0;
|
|
@@ -5874,7 +6112,7 @@ body.show-resizing iframe {
|
|
|
5874
6112
|
.expand-toggle-btn {
|
|
5875
6113
|
background: none;
|
|
5876
6114
|
border: none;
|
|
5877
|
-
color: var(--accent);
|
|
6115
|
+
color: var(--accent-text);
|
|
5878
6116
|
cursor: pointer;
|
|
5879
6117
|
text-decoration: underline;
|
|
5880
6118
|
margin-left: 6px;
|
|
@@ -6072,12 +6310,15 @@ body.show-resizing iframe {
|
|
|
6072
6310
|
cursor: pointer;
|
|
6073
6311
|
transition: all 0.15s ease;
|
|
6074
6312
|
}
|
|
6313
|
+
/* --accent-text is tuned to 4.5:1 on --bg-surface, so the pair holds as fill and text in every theme. */
|
|
6075
6314
|
.waiting-btn-allow {
|
|
6076
|
-
color: var(--
|
|
6077
|
-
|
|
6315
|
+
color: var(--bg-surface);
|
|
6316
|
+
background: var(--accent-text);
|
|
6317
|
+
border-color: var(--accent-text);
|
|
6318
|
+
font-weight: 600;
|
|
6078
6319
|
}
|
|
6079
6320
|
.waiting-btn-allow:hover:not(:disabled) {
|
|
6080
|
-
background: color-mix(in srgb, var(--accent)
|
|
6321
|
+
background: color-mix(in srgb, var(--accent-text) 85%, var(--text-primary));
|
|
6081
6322
|
}
|
|
6082
6323
|
.waiting-btn-deny {
|
|
6083
6324
|
color: var(--text-secondary);
|
|
@@ -6112,7 +6353,7 @@ body.show-resizing iframe {
|
|
|
6112
6353
|
font-weight: 600;
|
|
6113
6354
|
text-transform: uppercase;
|
|
6114
6355
|
letter-spacing: 0.5px;
|
|
6115
|
-
color: var(--accent);
|
|
6356
|
+
color: var(--accent-text);
|
|
6116
6357
|
margin-bottom: 4px;
|
|
6117
6358
|
}
|
|
6118
6359
|
.waiting-question-text {
|
|
@@ -6272,7 +6513,7 @@ body.show-resizing iframe {
|
|
|
6272
6513
|
}
|
|
6273
6514
|
.waiting-option.selected .waiting-option-key {
|
|
6274
6515
|
border-color: var(--accent);
|
|
6275
|
-
color: var(--accent);
|
|
6516
|
+
color: var(--accent-text);
|
|
6276
6517
|
}
|
|
6277
6518
|
.waiting-qtabs {
|
|
6278
6519
|
display: flex;
|
|
@@ -6387,12 +6628,12 @@ body.show-resizing iframe {
|
|
|
6387
6628
|
.perm-wait {
|
|
6388
6629
|
font-family: var(--mono);
|
|
6389
6630
|
font-size: 11px;
|
|
6390
|
-
color: var(--text-
|
|
6631
|
+
color: var(--text-tertiary);
|
|
6391
6632
|
}
|
|
6392
6633
|
.perm-label {
|
|
6393
|
-
font-size:
|
|
6634
|
+
font-size: 11px;
|
|
6394
6635
|
letter-spacing: 0.3px;
|
|
6395
|
-
color: var(--text-
|
|
6636
|
+
color: var(--text-tertiary);
|
|
6396
6637
|
font-family: var(--mono);
|
|
6397
6638
|
word-break: break-all;
|
|
6398
6639
|
}
|
|
@@ -6414,7 +6655,7 @@ body.show-resizing iframe {
|
|
|
6414
6655
|
.perm-cwd {
|
|
6415
6656
|
font-family: var(--mono);
|
|
6416
6657
|
font-size: 11px;
|
|
6417
|
-
color: var(--text-
|
|
6658
|
+
color: var(--text-tertiary);
|
|
6418
6659
|
}
|
|
6419
6660
|
.perm-diff {
|
|
6420
6661
|
border: 1px solid var(--border);
|
|
@@ -6530,8 +6771,8 @@ body.show-resizing iframe {
|
|
|
6530
6771
|
color: var(--text-muted);
|
|
6531
6772
|
}
|
|
6532
6773
|
.msg-time {
|
|
6533
|
-
font-size:
|
|
6534
|
-
color: var(--text-
|
|
6774
|
+
font-size: 11px;
|
|
6775
|
+
color: var(--text-tertiary);
|
|
6535
6776
|
margin-top: 4px;
|
|
6536
6777
|
}
|
|
6537
6778
|
.msg-empty {
|
|
@@ -6930,13 +7171,6 @@ body.show-resizing iframe {
|
|
|
6930
7171
|
color: var(--text-primary);
|
|
6931
7172
|
}
|
|
6932
7173
|
|
|
6933
|
-
.agent-dismiss-btn {
|
|
6934
|
-
font-size: 12px;
|
|
6935
|
-
padding: 4px 10px;
|
|
6936
|
-
background: var(--bg-elevated);
|
|
6937
|
-
color: var(--text-secondary);
|
|
6938
|
-
border: 1px solid var(--border);
|
|
6939
|
-
}
|
|
6940
7174
|
.agent-badge {
|
|
6941
7175
|
display: inline-flex;
|
|
6942
7176
|
align-items: center;
|
|
@@ -6955,6 +7189,10 @@ body.show-resizing iframe {
|
|
|
6955
7189
|
.dispatched-badge:not([onclick]) {
|
|
6956
7190
|
cursor: default;
|
|
6957
7191
|
}
|
|
7192
|
+
.fork-badge {
|
|
7193
|
+
cursor: pointer;
|
|
7194
|
+
}
|
|
7195
|
+
.fork-badge:hover,
|
|
6958
7196
|
.dispatched-badge[onclick]:hover {
|
|
6959
7197
|
color: var(--accent, var(--text-primary));
|
|
6960
7198
|
}
|
|
@@ -7554,7 +7792,7 @@ body.light {
|
|
|
7554
7792
|
--text-primary: #0a0a0a;
|
|
7555
7793
|
--text-secondary: #2c2c2c;
|
|
7556
7794
|
--text-tertiary: #565656;
|
|
7557
|
-
--text-muted: #
|
|
7795
|
+
--text-muted: #666666;
|
|
7558
7796
|
--accent-text: #a0501c;
|
|
7559
7797
|
--accent-dim: rgba(184, 90, 32, 0.18);
|
|
7560
7798
|
--accent-glow: rgba(232, 111, 51, 0.5);
|
|
@@ -8073,7 +8311,7 @@ body.light .msg-assistant .msg-text {
|
|
|
8073
8311
|
}
|
|
8074
8312
|
|
|
8075
8313
|
.preview-fm .fm-k {
|
|
8076
|
-
color: var(--accent);
|
|
8314
|
+
color: var(--accent-text);
|
|
8077
8315
|
font-weight: 600;
|
|
8078
8316
|
}
|
|
8079
8317
|
|
|
@@ -8254,8 +8492,8 @@ body.light .msg-assistant .msg-text {
|
|
|
8254
8492
|
small type, and scrolls its body (rule shared with #team-modal) instead of growing past
|
|
8255
8493
|
the viewport cap. */
|
|
8256
8494
|
.modal-help {
|
|
8257
|
-
max-width:
|
|
8258
|
-
height: min(
|
|
8495
|
+
max-width: 1080px;
|
|
8496
|
+
height: min(800px, 90vh);
|
|
8259
8497
|
padding: 16px 20px 20px;
|
|
8260
8498
|
display: flex;
|
|
8261
8499
|
flex-direction: column;
|
|
@@ -8295,8 +8533,8 @@ body.light .msg-assistant .msg-text {
|
|
|
8295
8533
|
.shortcuts {
|
|
8296
8534
|
margin: 0;
|
|
8297
8535
|
display: grid;
|
|
8298
|
-
grid-template-columns:
|
|
8299
|
-
column-gap:
|
|
8536
|
+
grid-template-columns: fit-content(160px) 1fr 32px fit-content(160px) 1fr;
|
|
8537
|
+
column-gap: 16px;
|
|
8300
8538
|
}
|
|
8301
8539
|
|
|
8302
8540
|
.shortcuts dt.sc-l {
|
|
@@ -8321,6 +8559,7 @@ body.light .msg-assistant .msg-text {
|
|
|
8321
8559
|
.shortcuts dt {
|
|
8322
8560
|
margin: 0;
|
|
8323
8561
|
display: flex;
|
|
8562
|
+
flex-wrap: wrap;
|
|
8324
8563
|
align-items: center;
|
|
8325
8564
|
align-self: center;
|
|
8326
8565
|
gap: 4px;
|
|
@@ -8446,9 +8685,10 @@ body.light .msg-assistant .msg-text {
|
|
|
8446
8685
|
.modal-close {
|
|
8447
8686
|
width: 32px;
|
|
8448
8687
|
height: 32px;
|
|
8449
|
-
|
|
8688
|
+
flex-shrink: 0;
|
|
8689
|
+
border: 1px solid var(--border);
|
|
8450
8690
|
background: none;
|
|
8451
|
-
color: var(--text-
|
|
8691
|
+
color: var(--text-tertiary);
|
|
8452
8692
|
cursor: pointer;
|
|
8453
8693
|
display: flex;
|
|
8454
8694
|
align-items: center;
|
|
@@ -8457,9 +8697,15 @@ body.light .msg-assistant .msg-text {
|
|
|
8457
8697
|
transition: all 0.15s ease;
|
|
8458
8698
|
}
|
|
8459
8699
|
|
|
8700
|
+
.modal-close svg {
|
|
8701
|
+
width: 16px;
|
|
8702
|
+
height: 16px;
|
|
8703
|
+
}
|
|
8704
|
+
|
|
8460
8705
|
.modal-close:hover {
|
|
8461
8706
|
background: var(--bg-hover);
|
|
8462
8707
|
color: var(--text-primary);
|
|
8708
|
+
border-color: var(--text-muted);
|
|
8463
8709
|
}
|
|
8464
8710
|
|
|
8465
8711
|
.modal-body {
|
|
@@ -8988,6 +9234,10 @@ select.form-input option:checked {
|
|
|
8988
9234
|
background: var(--bg-hover);
|
|
8989
9235
|
}
|
|
8990
9236
|
|
|
9237
|
+
.sp-row:hover .sp-branch {
|
|
9238
|
+
background: var(--bg-elevated);
|
|
9239
|
+
}
|
|
9240
|
+
|
|
8991
9241
|
.sp-row.selected {
|
|
8992
9242
|
background: var(--bg-elevated);
|
|
8993
9243
|
border-color: var(--accent);
|
|
@@ -9007,7 +9257,7 @@ select.form-input option:checked {
|
|
|
9007
9257
|
}
|
|
9008
9258
|
|
|
9009
9259
|
.sp-state.active {
|
|
9010
|
-
color: var(--accent);
|
|
9260
|
+
color: var(--accent-text);
|
|
9011
9261
|
}
|
|
9012
9262
|
|
|
9013
9263
|
.sp-state.waiting {
|
|
@@ -9212,7 +9462,7 @@ select.form-input option:checked {
|
|
|
9212
9462
|
}
|
|
9213
9463
|
|
|
9214
9464
|
.ns-notched legend {
|
|
9215
|
-
margin: 0
|
|
9465
|
+
margin: 0 auto 0 8px;
|
|
9216
9466
|
padding: 0 4px;
|
|
9217
9467
|
font-size: 11px;
|
|
9218
9468
|
font-weight: 500;
|
|
@@ -9327,7 +9577,7 @@ select.form-input option:checked {
|
|
|
9327
9577
|
margin-top: 4px;
|
|
9328
9578
|
font-family: var(--mono);
|
|
9329
9579
|
font-size: 11px;
|
|
9330
|
-
color: var(--text-
|
|
9580
|
+
color: var(--text-tertiary);
|
|
9331
9581
|
}
|
|
9332
9582
|
|
|
9333
9583
|
.ns-body textarea.form-input {
|
|
@@ -9610,10 +9860,11 @@ select.form-input option:checked {
|
|
|
9610
9860
|
gap: 6px;
|
|
9611
9861
|
}
|
|
9612
9862
|
|
|
9863
|
+
/* The pure status colors on their own 15% tint measure 2.7–3.8:1 in light. Mixing in the text color keeps the hue and passes 4.5:1. */
|
|
9613
9864
|
.badge-success {
|
|
9614
9865
|
display: inline-block;
|
|
9615
9866
|
background: color-mix(in srgb, var(--success) 15%, transparent);
|
|
9616
|
-
color: var(--success);
|
|
9867
|
+
color: color-mix(in srgb, var(--success) 65%, var(--text-primary));
|
|
9617
9868
|
border-radius: 4px;
|
|
9618
9869
|
padding: 1px 6px;
|
|
9619
9870
|
font-size: 12px;
|
|
@@ -9623,7 +9874,7 @@ select.form-input option:checked {
|
|
|
9623
9874
|
.badge-failed {
|
|
9624
9875
|
display: inline-block;
|
|
9625
9876
|
background: color-mix(in srgb, var(--danger) 15%, transparent);
|
|
9626
|
-
color: var(--danger);
|
|
9877
|
+
color: color-mix(in srgb, var(--danger) 65%, var(--text-primary));
|
|
9627
9878
|
border-radius: 4px;
|
|
9628
9879
|
padding: 1px 6px;
|
|
9629
9880
|
font-size: 12px;
|
|
@@ -9633,7 +9884,7 @@ select.form-input option:checked {
|
|
|
9633
9884
|
.badge-rejected {
|
|
9634
9885
|
display: inline-block;
|
|
9635
9886
|
background: color-mix(in srgb, var(--warning) 15%, transparent);
|
|
9636
|
-
color: var(--warning);
|
|
9887
|
+
color: color-mix(in srgb, var(--warning) 65%, var(--text-primary));
|
|
9637
9888
|
border-radius: 4px;
|
|
9638
9889
|
padding: 1px 6px;
|
|
9639
9890
|
font-size: 12px;
|
|
@@ -9657,7 +9908,7 @@ select.form-input option:checked {
|
|
|
9657
9908
|
height: 100%;
|
|
9658
9909
|
border-radius: 3px;
|
|
9659
9910
|
background: var(--accent);
|
|
9660
|
-
min-width:
|
|
9911
|
+
min-width: 4px;
|
|
9661
9912
|
}
|
|
9662
9913
|
|
|
9663
9914
|
.impact-pct {
|
|
@@ -9884,7 +10135,7 @@ select.form-input option:checked {
|
|
|
9884
10135
|
|
|
9885
10136
|
.storage-tab.active,
|
|
9886
10137
|
.help-tab.active {
|
|
9887
|
-
color: var(--accent);
|
|
10138
|
+
color: var(--accent-text);
|
|
9888
10139
|
border-bottom-color: var(--accent);
|
|
9889
10140
|
}
|
|
9890
10141
|
|
|
@@ -9945,7 +10196,7 @@ select.form-input option:checked {
|
|
|
9945
10196
|
|
|
9946
10197
|
.storage-item-badge.pinned {
|
|
9947
10198
|
background: color-mix(in srgb, var(--accent) 15%, transparent);
|
|
9948
|
-
color: var(--accent);
|
|
10199
|
+
color: var(--accent-text);
|
|
9949
10200
|
}
|
|
9950
10201
|
|
|
9951
10202
|
.storage-item-badge.sticky {
|
|
@@ -10067,7 +10318,7 @@ select.form-input option:checked {
|
|
|
10067
10318
|
--text-primary: #0a0a0a;
|
|
10068
10319
|
--text-secondary: #2c2c2c;
|
|
10069
10320
|
--text-tertiary: #565656;
|
|
10070
|
-
--text-muted: #
|
|
10321
|
+
--text-muted: #666666;
|
|
10071
10322
|
--accent-text: #a0501c;
|
|
10072
10323
|
--accent-dim: rgba(184, 90, 32, 0.18);
|
|
10073
10324
|
--accent-glow: rgba(232, 111, 51, 0.5);
|
|
@@ -10535,7 +10786,7 @@ pre.mermaid[data-mermaid-error]::before {
|
|
|
10535
10786
|
}
|
|
10536
10787
|
|
|
10537
10788
|
.session-group-header.sg-zen {
|
|
10538
|
-
color: var(--accent);
|
|
10789
|
+
color: var(--accent-text);
|
|
10539
10790
|
}
|
|
10540
10791
|
|
|
10541
10792
|
.sg-sub-label {
|