claude-code-kanban 2.1.0 → 2.2.0-rc.10
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/hooks/agent-spy.sh +25 -2
- package/install.js +1 -0
- package/lib/parsers.js +37 -1
- package/package.json +2 -2
- package/public/app.js +857 -113
- package/public/index.html +36 -4
- package/public/style.css +315 -5
- package/server.js +277 -40
package/public/index.html
CHANGED
|
@@ -161,6 +161,11 @@
|
|
|
161
161
|
<path d="M12 20h9"/><path d="M16.5 3.5a2.121 2.121 0 0 1 3 3L7 19l-4 1 1-4L16.5 3.5z"/>
|
|
162
162
|
</svg>
|
|
163
163
|
</button>
|
|
164
|
+
<button class="icon-btn" onclick="showStorageManager()" title="Storage manager (Shift+S)" aria-label="Storage manager">
|
|
165
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
166
|
+
<ellipse cx="12" cy="5" rx="9" ry="3"/><path d="M21 12c0 1.66-4 3-9 3s-9-1.34-9-3"/><path d="M3 5v14c0 1.66 4 3 9 3s9-1.34 9-3V5"/>
|
|
167
|
+
</svg>
|
|
168
|
+
</button>
|
|
164
169
|
<button id="theme-toggle" class="icon-btn" onclick="toggleTheme()" title="Toggle theme" aria-label="Toggle theme">
|
|
165
170
|
<svg id="theme-icon-dark" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
|
|
166
171
|
<path d="M20.354 15.354A9 9 0 018.646 3.646 9.003 9.003 0 0012 21a9.003 9.003 0 008.354-5.646z"/>
|
|
@@ -390,6 +395,10 @@
|
|
|
390
395
|
<td style="padding: 4px 0; color: var(--text-secondary);"><kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">N</kbd></td>
|
|
391
396
|
<td style="padding: 4px 0; color: var(--text-primary);">Toggle scratchpad</td>
|
|
392
397
|
</tr>
|
|
398
|
+
<tr>
|
|
399
|
+
<td style="padding: 4px 0; color: var(--text-secondary);"><kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">Shift+S</kbd></td>
|
|
400
|
+
<td style="padding: 4px 0; color: var(--text-primary);">Storage manager</td>
|
|
401
|
+
</tr>
|
|
393
402
|
<tr>
|
|
394
403
|
<td style="padding: 4px 0; color: var(--text-secondary);"><kbd style="background: var(--bg-hover); padding: 2px 6px; border-radius: 4px; font-family: monospace;">J/K</kbd></td>
|
|
395
404
|
<td style="padding: 4px 0; color: var(--text-primary);">Navigate messages in detail modal</td>
|
|
@@ -406,7 +415,7 @@
|
|
|
406
415
|
|
|
407
416
|
<!-- Delete Confirmation Modal -->
|
|
408
417
|
<div id="delete-confirm-modal" class="modal-overlay" onclick="closeDeleteConfirmModal()">
|
|
409
|
-
<div class="modal" onclick="event.stopPropagation()"
|
|
418
|
+
<div class="modal modal-sm" onclick="event.stopPropagation()">
|
|
410
419
|
<div class="modal-header">
|
|
411
420
|
<h3 class="modal-title">Delete Task</h3>
|
|
412
421
|
<button class="modal-close" aria-label="Close dialog" onclick="closeDeleteConfirmModal()">
|
|
@@ -427,7 +436,7 @@
|
|
|
427
436
|
|
|
428
437
|
<!-- Delete All Session Tasks Confirmation Modal -->
|
|
429
438
|
<div id="delete-session-tasks-modal" class="modal-overlay" onclick="closeDeleteSessionTasksModal()">
|
|
430
|
-
<div class="modal" onclick="event.stopPropagation()"
|
|
439
|
+
<div class="modal" onclick="event.stopPropagation()">
|
|
431
440
|
<div class="modal-header">
|
|
432
441
|
<h3 class="modal-title">Delete All Tasks</h3>
|
|
433
442
|
<button class="modal-close" aria-label="Close dialog" onclick="closeDeleteSessionTasksModal()">
|
|
@@ -449,7 +458,7 @@
|
|
|
449
458
|
|
|
450
459
|
<!-- Delete Result Modal -->
|
|
451
460
|
<div id="delete-result-modal" class="modal-overlay" onclick="closeDeleteResultModal()">
|
|
452
|
-
<div class="modal" onclick="event.stopPropagation()"
|
|
461
|
+
<div class="modal" onclick="event.stopPropagation()">
|
|
453
462
|
<div class="modal-header">
|
|
454
463
|
<h3 class="modal-title">Deletion Result</h3>
|
|
455
464
|
<button class="modal-close" aria-label="Close dialog" onclick="closeDeleteResultModal()">
|
|
@@ -517,7 +526,7 @@
|
|
|
517
526
|
|
|
518
527
|
<!-- Blocked Task Warning Modal -->
|
|
519
528
|
<div id="blocked-task-modal" class="modal-overlay" onclick="closeBlockedTaskModal()">
|
|
520
|
-
<div class="modal" onclick="event.stopPropagation()"
|
|
529
|
+
<div class="modal modal-sm" onclick="event.stopPropagation()">
|
|
521
530
|
<div class="modal-header">
|
|
522
531
|
<h3 class="modal-title" style="display: flex; align-items: center; gap: 8px;">
|
|
523
532
|
<svg viewBox="0 0 24 24" fill="none" stroke="#ef4444" stroke-width="2" style="width: 20px; height: 20px;">
|
|
@@ -593,6 +602,29 @@
|
|
|
593
602
|
</div>
|
|
594
603
|
</div>
|
|
595
604
|
|
|
605
|
+
<div id="storage-modal" class="modal-overlay" onclick="closeStorageManager()">
|
|
606
|
+
<div class="modal storage-modal" onclick="event.stopPropagation()">
|
|
607
|
+
<div class="modal-header">
|
|
608
|
+
<h3 class="modal-title">Storage Manager</h3>
|
|
609
|
+
<div style="display:flex;align-items:center;gap:8px;">
|
|
610
|
+
<span id="storage-total" class="storage-total"></span>
|
|
611
|
+
<button class="modal-close" aria-label="Close dialog" onclick="closeStorageManager()">
|
|
612
|
+
<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M18 6L6 18M6 6l12 12"/></svg>
|
|
613
|
+
</button>
|
|
614
|
+
</div>
|
|
615
|
+
</div>
|
|
616
|
+
<div class="storage-tabs">
|
|
617
|
+
<button class="storage-tab active" data-tab="sessions" onclick="switchStorageTab('sessions')">Sessions</button>
|
|
618
|
+
<button class="storage-tab" data-tab="scratchpads" onclick="switchStorageTab('scratchpads')">Scratchpads</button>
|
|
619
|
+
</div>
|
|
620
|
+
<div class="modal-body" id="storage-modal-body" style="overflow-y:auto;min-height:200px;max-height:60vh;padding-top:16px;padding-right:8px;"></div>
|
|
621
|
+
<div class="modal-footer">
|
|
622
|
+
<button id="storage-cleanup-btn" class="btn btn-secondary" onclick="cleanupOrphanedStorage()">Clean Orphaned</button>
|
|
623
|
+
<button class="btn btn-primary" onclick="closeStorageManager()">Close</button>
|
|
624
|
+
</div>
|
|
625
|
+
</div>
|
|
626
|
+
</div>
|
|
627
|
+
|
|
596
628
|
<div id="toast" class="toast"></div>
|
|
597
629
|
</body>
|
|
598
630
|
</html>
|
package/public/style.css
CHANGED
|
@@ -488,13 +488,16 @@ body::before {
|
|
|
488
488
|
display: block;
|
|
489
489
|
width: 100%;
|
|
490
490
|
padding: 12px 14px;
|
|
491
|
-
margin-bottom:
|
|
491
|
+
margin-bottom: 4px;
|
|
492
492
|
background: transparent;
|
|
493
493
|
border: 1px solid transparent;
|
|
494
494
|
border-radius: 8px;
|
|
495
495
|
text-align: left;
|
|
496
496
|
cursor: pointer;
|
|
497
497
|
transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
|
|
498
|
+
box-shadow:
|
|
499
|
+
0 1px 3px rgba(0, 0, 0, 0.12),
|
|
500
|
+
0 1px 2px rgba(0, 0, 0, 0.08);
|
|
498
501
|
}
|
|
499
502
|
|
|
500
503
|
.session-item:hover {
|
|
@@ -565,6 +568,11 @@ body::before {
|
|
|
565
568
|
text-overflow: ellipsis;
|
|
566
569
|
}
|
|
567
570
|
|
|
571
|
+
.session-item.plan-reveal {
|
|
572
|
+
outline: 1.5px solid var(--plan);
|
|
573
|
+
background: var(--plan-dim);
|
|
574
|
+
}
|
|
575
|
+
|
|
568
576
|
.session-progress {
|
|
569
577
|
display: flex;
|
|
570
578
|
align-items: center;
|
|
@@ -1578,6 +1586,13 @@ body::before {
|
|
|
1578
1586
|
font-weight: 600;
|
|
1579
1587
|
}
|
|
1580
1588
|
|
|
1589
|
+
.shared-tasklist-badge {
|
|
1590
|
+
display: inline-flex;
|
|
1591
|
+
align-items: center;
|
|
1592
|
+
color: var(--accent);
|
|
1593
|
+
flex-shrink: 0;
|
|
1594
|
+
}
|
|
1595
|
+
|
|
1581
1596
|
.team-info-btn {
|
|
1582
1597
|
width: 24px;
|
|
1583
1598
|
height: 24px;
|
|
@@ -1952,6 +1967,14 @@ body::before {
|
|
|
1952
1967
|
fill: var(--accent);
|
|
1953
1968
|
stroke: var(--accent);
|
|
1954
1969
|
}
|
|
1970
|
+
.session-pin-btn.sticky {
|
|
1971
|
+
opacity: 1;
|
|
1972
|
+
color: var(--warning);
|
|
1973
|
+
}
|
|
1974
|
+
.session-pin-btn.sticky svg {
|
|
1975
|
+
fill: var(--warning);
|
|
1976
|
+
stroke: var(--warning);
|
|
1977
|
+
}
|
|
1955
1978
|
.pinned-sessions-divider {
|
|
1956
1979
|
height: 1px;
|
|
1957
1980
|
margin: 4px 8px;
|
|
@@ -2560,10 +2583,10 @@ body.light .msg-assistant .msg-text {
|
|
|
2560
2583
|
}
|
|
2561
2584
|
|
|
2562
2585
|
.modal.fullscreen {
|
|
2563
|
-
width:
|
|
2564
|
-
max-width:
|
|
2565
|
-
height:
|
|
2566
|
-
max-height:
|
|
2586
|
+
width: 90vw;
|
|
2587
|
+
max-width: 90vw;
|
|
2588
|
+
height: 92vh;
|
|
2589
|
+
max-height: 92vh;
|
|
2567
2590
|
}
|
|
2568
2591
|
|
|
2569
2592
|
.modal.plan-modal {
|
|
@@ -2574,6 +2597,17 @@ body.light .msg-assistant .msg-text {
|
|
|
2574
2597
|
flex-direction: column;
|
|
2575
2598
|
}
|
|
2576
2599
|
|
|
2600
|
+
.modal.plan-modal.fullscreen {
|
|
2601
|
+
width: 90vw;
|
|
2602
|
+
max-width: 90vw;
|
|
2603
|
+
height: 92vh;
|
|
2604
|
+
max-height: 92vh;
|
|
2605
|
+
}
|
|
2606
|
+
|
|
2607
|
+
.modal-sm {
|
|
2608
|
+
max-width: 440px;
|
|
2609
|
+
}
|
|
2610
|
+
|
|
2577
2611
|
@keyframes live-border-pulse {
|
|
2578
2612
|
0%,
|
|
2579
2613
|
100% {
|
|
@@ -2812,6 +2846,196 @@ select.form-input option:checked {
|
|
|
2812
2846
|
}
|
|
2813
2847
|
/* #endregion */
|
|
2814
2848
|
|
|
2849
|
+
/* #region STORAGE_MANAGER */
|
|
2850
|
+
.storage-modal {
|
|
2851
|
+
width: 90%;
|
|
2852
|
+
max-width: 860px;
|
|
2853
|
+
max-height: 85vh;
|
|
2854
|
+
display: flex;
|
|
2855
|
+
flex-direction: column;
|
|
2856
|
+
}
|
|
2857
|
+
|
|
2858
|
+
.storage-project-group {
|
|
2859
|
+
margin-bottom: 12px;
|
|
2860
|
+
}
|
|
2861
|
+
|
|
2862
|
+
.storage-project-header {
|
|
2863
|
+
font-size: 12px;
|
|
2864
|
+
font-weight: 600;
|
|
2865
|
+
color: var(--text-secondary);
|
|
2866
|
+
padding: 8px 10px;
|
|
2867
|
+
background: var(--bg-elevated);
|
|
2868
|
+
border-radius: 6px;
|
|
2869
|
+
margin-bottom: 4px;
|
|
2870
|
+
display: flex;
|
|
2871
|
+
justify-content: space-between;
|
|
2872
|
+
align-items: center;
|
|
2873
|
+
}
|
|
2874
|
+
|
|
2875
|
+
.storage-project-header .storage-item-meta {
|
|
2876
|
+
font-weight: 400;
|
|
2877
|
+
}
|
|
2878
|
+
|
|
2879
|
+
.storage-session-group {
|
|
2880
|
+
padding-left: 12px;
|
|
2881
|
+
border-left: 2px solid color-mix(in srgb, var(--border) 60%, transparent);
|
|
2882
|
+
margin-left: 8px;
|
|
2883
|
+
margin-bottom: 8px;
|
|
2884
|
+
}
|
|
2885
|
+
|
|
2886
|
+
.storage-total {
|
|
2887
|
+
font-size: 11px;
|
|
2888
|
+
color: var(--text-muted);
|
|
2889
|
+
font-family: var(--mono);
|
|
2890
|
+
}
|
|
2891
|
+
|
|
2892
|
+
.storage-tabs {
|
|
2893
|
+
display: flex;
|
|
2894
|
+
gap: 0;
|
|
2895
|
+
border-bottom: 1px solid var(--border);
|
|
2896
|
+
margin: -4px -24px 0;
|
|
2897
|
+
padding: 0 24px;
|
|
2898
|
+
flex-shrink: 0;
|
|
2899
|
+
}
|
|
2900
|
+
|
|
2901
|
+
.storage-tab {
|
|
2902
|
+
background: none;
|
|
2903
|
+
border: none;
|
|
2904
|
+
color: var(--text-secondary);
|
|
2905
|
+
padding: 8px 16px;
|
|
2906
|
+
font-size: 13px;
|
|
2907
|
+
font-family: var(--mono);
|
|
2908
|
+
cursor: pointer;
|
|
2909
|
+
border-bottom: 2px solid transparent;
|
|
2910
|
+
transition:
|
|
2911
|
+
color 0.15s,
|
|
2912
|
+
border-color 0.15s;
|
|
2913
|
+
}
|
|
2914
|
+
|
|
2915
|
+
.storage-tab:hover {
|
|
2916
|
+
color: var(--text-primary);
|
|
2917
|
+
}
|
|
2918
|
+
|
|
2919
|
+
.storage-tab.active {
|
|
2920
|
+
color: var(--accent);
|
|
2921
|
+
border-bottom-color: var(--accent);
|
|
2922
|
+
}
|
|
2923
|
+
|
|
2924
|
+
.storage-item {
|
|
2925
|
+
display: flex;
|
|
2926
|
+
align-items: center;
|
|
2927
|
+
justify-content: space-between;
|
|
2928
|
+
padding: 8px 0;
|
|
2929
|
+
border-bottom: 1px solid color-mix(in srgb, var(--border) 50%, transparent);
|
|
2930
|
+
gap: 8px;
|
|
2931
|
+
}
|
|
2932
|
+
|
|
2933
|
+
.storage-item:last-child {
|
|
2934
|
+
border-bottom: none;
|
|
2935
|
+
}
|
|
2936
|
+
|
|
2937
|
+
.storage-item-clickable {
|
|
2938
|
+
cursor: pointer;
|
|
2939
|
+
}
|
|
2940
|
+
|
|
2941
|
+
.storage-item-clickable:hover {
|
|
2942
|
+
background: var(--bg-hover);
|
|
2943
|
+
border-radius: 4px;
|
|
2944
|
+
}
|
|
2945
|
+
|
|
2946
|
+
.storage-item-id {
|
|
2947
|
+
font-family: var(--mono);
|
|
2948
|
+
font-size: 12px;
|
|
2949
|
+
color: var(--text-secondary);
|
|
2950
|
+
overflow: hidden;
|
|
2951
|
+
text-overflow: ellipsis;
|
|
2952
|
+
white-space: nowrap;
|
|
2953
|
+
flex: 1;
|
|
2954
|
+
min-width: 0;
|
|
2955
|
+
}
|
|
2956
|
+
|
|
2957
|
+
.storage-item-meta {
|
|
2958
|
+
font-size: 11px;
|
|
2959
|
+
color: var(--text-muted);
|
|
2960
|
+
flex-shrink: 0;
|
|
2961
|
+
white-space: nowrap;
|
|
2962
|
+
}
|
|
2963
|
+
|
|
2964
|
+
.storage-item-badge {
|
|
2965
|
+
font-size: 10px;
|
|
2966
|
+
padding: 2px 6px;
|
|
2967
|
+
border-radius: 4px;
|
|
2968
|
+
background: var(--bg-hover);
|
|
2969
|
+
color: var(--text-secondary);
|
|
2970
|
+
flex-shrink: 0;
|
|
2971
|
+
font-family: var(--mono);
|
|
2972
|
+
}
|
|
2973
|
+
|
|
2974
|
+
.storage-item-badge.orphan {
|
|
2975
|
+
background: rgba(239, 68, 68, 0.15);
|
|
2976
|
+
color: #ef4444;
|
|
2977
|
+
}
|
|
2978
|
+
|
|
2979
|
+
.storage-item-badge.pinned {
|
|
2980
|
+
background: color-mix(in srgb, var(--accent) 15%, transparent);
|
|
2981
|
+
color: var(--accent);
|
|
2982
|
+
}
|
|
2983
|
+
|
|
2984
|
+
.storage-item-badge.sticky {
|
|
2985
|
+
background: rgba(234, 179, 8, 0.15);
|
|
2986
|
+
color: #eab308;
|
|
2987
|
+
}
|
|
2988
|
+
|
|
2989
|
+
.storage-item-actions {
|
|
2990
|
+
display: flex;
|
|
2991
|
+
gap: 4px;
|
|
2992
|
+
flex-shrink: 0;
|
|
2993
|
+
}
|
|
2994
|
+
|
|
2995
|
+
.storage-item-actions button {
|
|
2996
|
+
background: none;
|
|
2997
|
+
border: 1px solid var(--border);
|
|
2998
|
+
border-radius: 4px;
|
|
2999
|
+
color: var(--text-secondary);
|
|
3000
|
+
padding: 2px 8px;
|
|
3001
|
+
font-size: 11px;
|
|
3002
|
+
cursor: pointer;
|
|
3003
|
+
font-family: var(--mono);
|
|
3004
|
+
transition: all 0.15s;
|
|
3005
|
+
}
|
|
3006
|
+
|
|
3007
|
+
.storage-item-actions button:hover {
|
|
3008
|
+
background: var(--bg-hover);
|
|
3009
|
+
color: var(--text-primary);
|
|
3010
|
+
}
|
|
3011
|
+
|
|
3012
|
+
.storage-item-actions button.danger:hover {
|
|
3013
|
+
background: rgba(239, 68, 68, 0.15);
|
|
3014
|
+
color: #ef4444;
|
|
3015
|
+
}
|
|
3016
|
+
|
|
3017
|
+
.storage-group-header {
|
|
3018
|
+
font-size: 12px;
|
|
3019
|
+
color: var(--text-muted);
|
|
3020
|
+
padding: 12px 0 4px;
|
|
3021
|
+
font-weight: 600;
|
|
3022
|
+
display: flex;
|
|
3023
|
+
justify-content: space-between;
|
|
3024
|
+
align-items: center;
|
|
3025
|
+
}
|
|
3026
|
+
|
|
3027
|
+
.storage-group-header:first-child {
|
|
3028
|
+
padding-top: 0;
|
|
3029
|
+
}
|
|
3030
|
+
|
|
3031
|
+
.storage-empty {
|
|
3032
|
+
text-align: center;
|
|
3033
|
+
padding: 32px 0;
|
|
3034
|
+
color: var(--text-muted);
|
|
3035
|
+
font-size: 13px;
|
|
3036
|
+
}
|
|
3037
|
+
/* #endregion */
|
|
3038
|
+
|
|
2815
3039
|
/* #region A11Y */
|
|
2816
3040
|
.skip-link {
|
|
2817
3041
|
position: absolute;
|
|
@@ -3002,6 +3226,18 @@ select.form-input option:checked {
|
|
|
3002
3226
|
white-space: nowrap;
|
|
3003
3227
|
}
|
|
3004
3228
|
|
|
3229
|
+
.project-view-btn {
|
|
3230
|
+
color: var(--text-muted);
|
|
3231
|
+
cursor: pointer;
|
|
3232
|
+
display: flex;
|
|
3233
|
+
align-items: center;
|
|
3234
|
+
transition: color 0.15s;
|
|
3235
|
+
}
|
|
3236
|
+
|
|
3237
|
+
.project-view-btn:hover {
|
|
3238
|
+
color: var(--accent);
|
|
3239
|
+
}
|
|
3240
|
+
|
|
3005
3241
|
.project-group-header .group-count {
|
|
3006
3242
|
font-weight: 400;
|
|
3007
3243
|
color: var(--text-muted);
|
|
@@ -3061,6 +3297,80 @@ select.form-input option:checked {
|
|
|
3061
3297
|
display: none;
|
|
3062
3298
|
}
|
|
3063
3299
|
|
|
3300
|
+
.pinned-sub-section {
|
|
3301
|
+
margin-bottom: 2px;
|
|
3302
|
+
}
|
|
3303
|
+
|
|
3304
|
+
.pinned-sub-header {
|
|
3305
|
+
display: flex;
|
|
3306
|
+
align-items: center;
|
|
3307
|
+
gap: 4px;
|
|
3308
|
+
padding: 4px 10px 3px 18px;
|
|
3309
|
+
cursor: pointer;
|
|
3310
|
+
user-select: none;
|
|
3311
|
+
font-size: 10px;
|
|
3312
|
+
color: var(--text-muted);
|
|
3313
|
+
}
|
|
3314
|
+
|
|
3315
|
+
.pinned-sub-header:hover {
|
|
3316
|
+
color: var(--text-secondary);
|
|
3317
|
+
}
|
|
3318
|
+
|
|
3319
|
+
.pinned-sub-header .group-chevron {
|
|
3320
|
+
transition: transform 0.15s ease;
|
|
3321
|
+
flex-shrink: 0;
|
|
3322
|
+
}
|
|
3323
|
+
|
|
3324
|
+
.pinned-sub-header.collapsed .group-chevron {
|
|
3325
|
+
transform: rotate(-90deg);
|
|
3326
|
+
}
|
|
3327
|
+
|
|
3328
|
+
.pinned-sub-label {
|
|
3329
|
+
font-weight: 500;
|
|
3330
|
+
letter-spacing: 0.3px;
|
|
3331
|
+
}
|
|
3332
|
+
|
|
3333
|
+
.pinned-ungroup-btn {
|
|
3334
|
+
margin-left: auto;
|
|
3335
|
+
font-size: 14px;
|
|
3336
|
+
line-height: 1;
|
|
3337
|
+
color: var(--text-muted);
|
|
3338
|
+
cursor: pointer;
|
|
3339
|
+
padding: 0 2px;
|
|
3340
|
+
opacity: 0;
|
|
3341
|
+
transition:
|
|
3342
|
+
opacity 0.15s,
|
|
3343
|
+
color 0.15s;
|
|
3344
|
+
}
|
|
3345
|
+
|
|
3346
|
+
.pinned-sub-header:hover .pinned-ungroup-btn {
|
|
3347
|
+
opacity: 1;
|
|
3348
|
+
}
|
|
3349
|
+
|
|
3350
|
+
.pinned-ungroup-btn:hover {
|
|
3351
|
+
color: var(--accent);
|
|
3352
|
+
}
|
|
3353
|
+
|
|
3354
|
+
.pinned-sub-items.collapsed {
|
|
3355
|
+
display: none;
|
|
3356
|
+
}
|
|
3357
|
+
|
|
3358
|
+
.pinned-regroup-banner {
|
|
3359
|
+
display: flex;
|
|
3360
|
+
align-items: center;
|
|
3361
|
+
gap: 5px;
|
|
3362
|
+
padding: 4px 10px;
|
|
3363
|
+
font-size: 10px;
|
|
3364
|
+
color: var(--text-muted);
|
|
3365
|
+
cursor: pointer;
|
|
3366
|
+
user-select: none;
|
|
3367
|
+
transition: color 0.15s;
|
|
3368
|
+
}
|
|
3369
|
+
|
|
3370
|
+
.pinned-regroup-banner:hover {
|
|
3371
|
+
color: var(--accent);
|
|
3372
|
+
}
|
|
3373
|
+
|
|
3064
3374
|
/* Session list hover accent bar */
|
|
3065
3375
|
.session-item {
|
|
3066
3376
|
position: relative;
|