claude-code-kanban 4.8.0 → 4.10.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/package.json +1 -1
- package/public/app.js +87 -213
- package/public/index.html +16 -54
- package/public/style.css +116 -88
- package/public/themes.css +823 -0
- package/server.js +25 -42
package/public/style.css
CHANGED
|
@@ -472,6 +472,8 @@ body::before {
|
|
|
472
472
|
white-space: nowrap;
|
|
473
473
|
overflow: hidden;
|
|
474
474
|
text-overflow: ellipsis;
|
|
475
|
+
/* reserve room for the absolutely-positioned pin button at top-right */
|
|
476
|
+
padding-right: 22px;
|
|
475
477
|
}
|
|
476
478
|
|
|
477
479
|
.session-indicators .pulse {
|
|
@@ -891,13 +893,84 @@ body::before {
|
|
|
891
893
|
}
|
|
892
894
|
|
|
893
895
|
.icon-btn-danger {
|
|
894
|
-
color:
|
|
896
|
+
color: var(--danger);
|
|
897
|
+
border-color: var(--danger);
|
|
895
898
|
}
|
|
896
899
|
|
|
897
900
|
.icon-btn-danger:hover {
|
|
898
|
-
background:
|
|
899
|
-
color:
|
|
900
|
-
border-color:
|
|
901
|
+
background: color-mix(in srgb, var(--danger) 12%, transparent);
|
|
902
|
+
color: color-mix(in srgb, var(--danger) 80%, black);
|
|
903
|
+
border-color: var(--danger);
|
|
904
|
+
}
|
|
905
|
+
|
|
906
|
+
/* theme picker: palette icon button + custom popover with per-theme swatches
|
|
907
|
+
(swatch colors are generated into themes.css) */
|
|
908
|
+
.theme-picker {
|
|
909
|
+
position: relative;
|
|
910
|
+
}
|
|
911
|
+
.theme-menu {
|
|
912
|
+
display: none;
|
|
913
|
+
position: absolute;
|
|
914
|
+
top: calc(100% + 6px);
|
|
915
|
+
right: 0;
|
|
916
|
+
z-index: 100;
|
|
917
|
+
min-width: 170px;
|
|
918
|
+
max-height: 70vh;
|
|
919
|
+
overflow-y: auto;
|
|
920
|
+
padding: 4px;
|
|
921
|
+
background: var(--bg-elevated);
|
|
922
|
+
border: 1px solid var(--border);
|
|
923
|
+
border-radius: 8px;
|
|
924
|
+
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);
|
|
925
|
+
}
|
|
926
|
+
.theme-menu.open {
|
|
927
|
+
display: block;
|
|
928
|
+
}
|
|
929
|
+
.theme-menu-item {
|
|
930
|
+
display: flex;
|
|
931
|
+
align-items: center;
|
|
932
|
+
gap: 8px;
|
|
933
|
+
width: 100%;
|
|
934
|
+
padding: 6px 8px;
|
|
935
|
+
border: 0;
|
|
936
|
+
border-radius: 6px;
|
|
937
|
+
background: none;
|
|
938
|
+
color: var(--text-secondary);
|
|
939
|
+
font-family: var(--font-mono);
|
|
940
|
+
font-size: 11px;
|
|
941
|
+
text-transform: uppercase;
|
|
942
|
+
letter-spacing: 0.03em;
|
|
943
|
+
text-align: left;
|
|
944
|
+
cursor: pointer;
|
|
945
|
+
}
|
|
946
|
+
.theme-menu-item:hover {
|
|
947
|
+
background: var(--bg-hover);
|
|
948
|
+
color: var(--text-primary);
|
|
949
|
+
}
|
|
950
|
+
.theme-menu-item.on {
|
|
951
|
+
color: var(--accent-text);
|
|
952
|
+
}
|
|
953
|
+
/* 3-dot palette preview: surface, accent, ink (colors from themes.css vars) */
|
|
954
|
+
.theme-swatch {
|
|
955
|
+
display: inline-flex;
|
|
956
|
+
align-items: center;
|
|
957
|
+
gap: 3px;
|
|
958
|
+
flex: 0 0 auto;
|
|
959
|
+
}
|
|
960
|
+
.theme-swatch i {
|
|
961
|
+
width: 9px;
|
|
962
|
+
height: 9px;
|
|
963
|
+
border-radius: 50%;
|
|
964
|
+
border: 1px solid var(--sw-border);
|
|
965
|
+
}
|
|
966
|
+
.theme-swatch .sw-bg {
|
|
967
|
+
background: var(--sw-bg);
|
|
968
|
+
}
|
|
969
|
+
.theme-swatch .sw-accent {
|
|
970
|
+
background: var(--sw-accent);
|
|
971
|
+
}
|
|
972
|
+
.theme-swatch .sw-ink {
|
|
973
|
+
background: var(--sw-ink);
|
|
901
974
|
}
|
|
902
975
|
|
|
903
976
|
/* #endregion */
|
|
@@ -1095,8 +1168,8 @@ body::before {
|
|
|
1095
1168
|
}
|
|
1096
1169
|
|
|
1097
1170
|
.task-badge.blocked {
|
|
1098
|
-
background:
|
|
1099
|
-
color:
|
|
1171
|
+
background: color-mix(in srgb, var(--accent) 15%, transparent);
|
|
1172
|
+
color: var(--accent);
|
|
1100
1173
|
}
|
|
1101
1174
|
|
|
1102
1175
|
.task-title {
|
|
@@ -1496,61 +1569,6 @@ body::before {
|
|
|
1496
1569
|
|
|
1497
1570
|
/* #endregion */
|
|
1498
1571
|
|
|
1499
|
-
/* #region NOTE_FORM */
|
|
1500
|
-
.note-section {
|
|
1501
|
-
margin-top: 8px;
|
|
1502
|
-
}
|
|
1503
|
-
|
|
1504
|
-
.note-form {
|
|
1505
|
-
display: flex;
|
|
1506
|
-
flex-direction: column;
|
|
1507
|
-
gap: 10px;
|
|
1508
|
-
}
|
|
1509
|
-
|
|
1510
|
-
.note-input {
|
|
1511
|
-
width: 100%;
|
|
1512
|
-
padding: 10px 12px;
|
|
1513
|
-
background: var(--bg-elevated);
|
|
1514
|
-
border: 1px solid var(--border);
|
|
1515
|
-
border-radius: 6px;
|
|
1516
|
-
color: var(--text-primary);
|
|
1517
|
-
font-family: var(--mono);
|
|
1518
|
-
font-size: 12px;
|
|
1519
|
-
line-height: 1.5;
|
|
1520
|
-
resize: vertical;
|
|
1521
|
-
min-height: 60px;
|
|
1522
|
-
}
|
|
1523
|
-
|
|
1524
|
-
.note-input:focus {
|
|
1525
|
-
outline: none;
|
|
1526
|
-
border-color: var(--accent);
|
|
1527
|
-
box-shadow: 0 0 0 2px var(--accent-dim);
|
|
1528
|
-
}
|
|
1529
|
-
|
|
1530
|
-
.note-input::placeholder {
|
|
1531
|
-
color: var(--text-muted);
|
|
1532
|
-
}
|
|
1533
|
-
|
|
1534
|
-
.note-submit {
|
|
1535
|
-
align-self: flex-end;
|
|
1536
|
-
padding: 8px 16px;
|
|
1537
|
-
background: var(--accent);
|
|
1538
|
-
border: none;
|
|
1539
|
-
border-radius: 5px;
|
|
1540
|
-
color: white;
|
|
1541
|
-
font-family: var(--mono);
|
|
1542
|
-
font-size: 11px;
|
|
1543
|
-
font-weight: 500;
|
|
1544
|
-
cursor: pointer;
|
|
1545
|
-
transition: all 0.15s ease;
|
|
1546
|
-
}
|
|
1547
|
-
|
|
1548
|
-
.note-submit:hover {
|
|
1549
|
-
filter: brightness(1.1);
|
|
1550
|
-
}
|
|
1551
|
-
|
|
1552
|
-
/* #endregion */
|
|
1553
|
-
|
|
1554
1572
|
/* #region TEAM_BADGE */
|
|
1555
1573
|
.session-indicators {
|
|
1556
1574
|
display: flex;
|
|
@@ -2440,8 +2458,8 @@ body::before {
|
|
|
2440
2458
|
color: var(--success);
|
|
2441
2459
|
}
|
|
2442
2460
|
.toast.toast-error {
|
|
2443
|
-
border-color:
|
|
2444
|
-
color:
|
|
2461
|
+
border-color: var(--danger);
|
|
2462
|
+
color: var(--danger);
|
|
2445
2463
|
}
|
|
2446
2464
|
.toast.toast-info {
|
|
2447
2465
|
border-color: var(--accent);
|
|
@@ -2775,10 +2793,10 @@ body::before {
|
|
|
2775
2793
|
font-weight: 600;
|
|
2776
2794
|
}
|
|
2777
2795
|
.protocol-bool-true {
|
|
2778
|
-
color:
|
|
2796
|
+
color: var(--success);
|
|
2779
2797
|
}
|
|
2780
2798
|
.protocol-bool-false {
|
|
2781
|
-
color:
|
|
2799
|
+
color: var(--danger);
|
|
2782
2800
|
}
|
|
2783
2801
|
.msg-jump-latest {
|
|
2784
2802
|
position: absolute;
|
|
@@ -2882,9 +2900,7 @@ body::before {
|
|
|
2882
2900
|
.agent-card.selected:hover {
|
|
2883
2901
|
background: var(--bg-elevated);
|
|
2884
2902
|
border-color: var(--accent);
|
|
2885
|
-
box-shadow:
|
|
2886
|
-
0 0 0 1px var(--accent-dim),
|
|
2887
|
-
0 0 12px var(--accent-dim);
|
|
2903
|
+
box-shadow: 0 0 0 1px var(--accent-dim);
|
|
2888
2904
|
}
|
|
2889
2905
|
.agent-card.fading {
|
|
2890
2906
|
opacity: 0.4;
|
|
@@ -2920,18 +2936,18 @@ body::before {
|
|
|
2920
2936
|
gap: 5px;
|
|
2921
2937
|
}
|
|
2922
2938
|
.agent-dot {
|
|
2923
|
-
width:
|
|
2924
|
-
height:
|
|
2939
|
+
width: 5px;
|
|
2940
|
+
height: 5px;
|
|
2925
2941
|
border-radius: 50%;
|
|
2926
2942
|
flex-shrink: 0;
|
|
2927
2943
|
}
|
|
2928
2944
|
.agent-dot.active {
|
|
2929
2945
|
background: var(--success);
|
|
2930
|
-
box-shadow: 0 0
|
|
2946
|
+
box-shadow: 0 0 4px color-mix(in srgb, var(--success) 50%, transparent);
|
|
2931
2947
|
}
|
|
2932
2948
|
.agent-dot.idle {
|
|
2933
2949
|
background: var(--warning);
|
|
2934
|
-
box-shadow: 0 0
|
|
2950
|
+
box-shadow: 0 0 4px color-mix(in srgb, var(--warning) 50%, transparent);
|
|
2935
2951
|
}
|
|
2936
2952
|
.agent-dot.stopped {
|
|
2937
2953
|
background: var(--text-muted);
|
|
@@ -3113,8 +3129,8 @@ body.light .msg-assistant .msg-text {
|
|
|
3113
3129
|
|
|
3114
3130
|
/* #region INTERACTIVE */
|
|
3115
3131
|
.icon-btn.delete:hover {
|
|
3116
|
-
background:
|
|
3117
|
-
border-color:
|
|
3132
|
+
background: color-mix(in srgb, var(--danger) 12%, transparent);
|
|
3133
|
+
border-color: var(--danger);
|
|
3118
3134
|
}
|
|
3119
3135
|
|
|
3120
3136
|
.column-header {
|
|
@@ -3490,11 +3506,23 @@ select.form-input option:checked {
|
|
|
3490
3506
|
}
|
|
3491
3507
|
|
|
3492
3508
|
.btn-primary:hover {
|
|
3493
|
-
background:
|
|
3509
|
+
background: color-mix(in srgb, var(--accent) 82%, black);
|
|
3494
3510
|
transform: translateY(-1px);
|
|
3495
3511
|
box-shadow: 0 4px 12px var(--accent-glow);
|
|
3496
3512
|
}
|
|
3497
3513
|
|
|
3514
|
+
.btn-danger {
|
|
3515
|
+
background: var(--danger);
|
|
3516
|
+
border-color: var(--danger);
|
|
3517
|
+
color: white;
|
|
3518
|
+
}
|
|
3519
|
+
|
|
3520
|
+
.btn-danger:hover {
|
|
3521
|
+
background: color-mix(in srgb, var(--danger) 82%, black);
|
|
3522
|
+
transform: translateY(-1px);
|
|
3523
|
+
box-shadow: 0 4px 12px color-mix(in srgb, var(--danger) 45%, transparent);
|
|
3524
|
+
}
|
|
3525
|
+
|
|
3498
3526
|
.btn-secondary {
|
|
3499
3527
|
background: transparent;
|
|
3500
3528
|
color: var(--text-secondary);
|
|
@@ -3615,8 +3643,8 @@ select.form-input option:checked {
|
|
|
3615
3643
|
|
|
3616
3644
|
.badge-success {
|
|
3617
3645
|
display: inline-block;
|
|
3618
|
-
background:
|
|
3619
|
-
color:
|
|
3646
|
+
background: color-mix(in srgb, var(--success) 15%, transparent);
|
|
3647
|
+
color: var(--success);
|
|
3620
3648
|
border-radius: 4px;
|
|
3621
3649
|
padding: 1px 6px;
|
|
3622
3650
|
font-size: 12px;
|
|
@@ -3625,8 +3653,8 @@ select.form-input option:checked {
|
|
|
3625
3653
|
|
|
3626
3654
|
.badge-failed {
|
|
3627
3655
|
display: inline-block;
|
|
3628
|
-
background:
|
|
3629
|
-
color:
|
|
3656
|
+
background: color-mix(in srgb, var(--danger) 15%, transparent);
|
|
3657
|
+
color: var(--danger);
|
|
3630
3658
|
border-radius: 4px;
|
|
3631
3659
|
padding: 1px 6px;
|
|
3632
3660
|
font-size: 12px;
|
|
@@ -3635,8 +3663,8 @@ select.form-input option:checked {
|
|
|
3635
3663
|
|
|
3636
3664
|
.badge-rejected {
|
|
3637
3665
|
display: inline-block;
|
|
3638
|
-
background:
|
|
3639
|
-
color:
|
|
3666
|
+
background: color-mix(in srgb, var(--warning) 15%, transparent);
|
|
3667
|
+
color: var(--warning);
|
|
3640
3668
|
border-radius: 4px;
|
|
3641
3669
|
padding: 1px 6px;
|
|
3642
3670
|
font-size: 12px;
|
|
@@ -3644,7 +3672,7 @@ select.form-input option:checked {
|
|
|
3644
3672
|
}
|
|
3645
3673
|
|
|
3646
3674
|
.tool-stats-chip-val.rejected {
|
|
3647
|
-
color:
|
|
3675
|
+
color: var(--warning);
|
|
3648
3676
|
}
|
|
3649
3677
|
|
|
3650
3678
|
.impact-bar-wrap {
|
|
@@ -3840,8 +3868,8 @@ select.form-input option:checked {
|
|
|
3840
3868
|
}
|
|
3841
3869
|
|
|
3842
3870
|
.storage-item-badge.orphan {
|
|
3843
|
-
background:
|
|
3844
|
-
color:
|
|
3871
|
+
background: color-mix(in srgb, var(--danger) 15%, transparent);
|
|
3872
|
+
color: var(--danger);
|
|
3845
3873
|
}
|
|
3846
3874
|
|
|
3847
3875
|
.storage-item-badge.pinned {
|
|
@@ -3850,8 +3878,8 @@ select.form-input option:checked {
|
|
|
3850
3878
|
}
|
|
3851
3879
|
|
|
3852
3880
|
.storage-item-badge.sticky {
|
|
3853
|
-
background:
|
|
3854
|
-
color:
|
|
3881
|
+
background: color-mix(in srgb, var(--gold) 15%, transparent);
|
|
3882
|
+
color: var(--gold);
|
|
3855
3883
|
}
|
|
3856
3884
|
|
|
3857
3885
|
.storage-item-actions {
|
|
@@ -3878,8 +3906,8 @@ select.form-input option:checked {
|
|
|
3878
3906
|
}
|
|
3879
3907
|
|
|
3880
3908
|
.storage-item-actions button.danger:hover {
|
|
3881
|
-
background:
|
|
3882
|
-
color:
|
|
3909
|
+
background: color-mix(in srgb, var(--danger) 15%, transparent);
|
|
3910
|
+
color: var(--danger);
|
|
3883
3911
|
}
|
|
3884
3912
|
|
|
3885
3913
|
.storage-group-header {
|