claude-code-kanban 4.0.0 → 4.2.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/public/index.html CHANGED
@@ -527,6 +527,12 @@
527
527
  <button id="session-info-cost-btn" class="icon-btn" style="display:none" title="Open in Cost" onclick="openCost(_infoModalSessionId)">
528
528
  <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><circle cx="12" cy="12" r="10"/><path d="M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8"/><path d="M12 18V6"/></svg>
529
529
  </button>
530
+ <button id="session-info-marketplace-btn" class="icon-btn" style="display:none" title="Open in Marketplace" onclick="openMarketplaceForInfoModal()">
531
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><path d="M6 2L3 6v14a2 2 0 002 2h14a2 2 0 002-2V6l-3-4z"/><line x1="3" y1="6" x2="21" y2="6"/><path d="M16 10a4 4 0 01-8 0"/></svg>
532
+ </button>
533
+ <button id="session-info-memory-btn" class="icon-btn" style="display:none" title="Open in Memory" onclick="openMemoryForInfoModal()">
534
+ <svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><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"/></svg>
535
+ </button>
530
536
  <button class="modal-close" aria-label="Close dialog" onclick="closeTeamModal()">
531
537
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">
532
538
  <path d="M18 6L6 18M6 6l12 12"/>
@@ -598,6 +604,25 @@
598
604
  </div>
599
605
  </div>
600
606
 
607
+ <!-- Loop Wakeups Modal -->
608
+ <div id="loop-modal" class="modal-overlay" onclick="closeLoopModal()">
609
+ <div class="modal plan-modal" onclick="event.stopPropagation()">
610
+ <div class="modal-header">
611
+ <h3 id="loop-modal-title" class="modal-title" style="display:flex;align-items:center;gap:8px;">
612
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" style="width:18px;height:18px;"><circle cx="12" cy="12" r="10"/><polyline points="12 6 12 12 16 14"/></svg>
613
+ Loop activity
614
+ </h3>
615
+ <button class="modal-close" aria-label="Close dialog" onclick="closeLoopModal()">
616
+ <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M18 6L6 18M6 6l12 12"/></svg>
617
+ </button>
618
+ </div>
619
+ <div id="loop-modal-body" class="modal-body" style="overflow-y:auto;flex:0 1 auto;min-height:0;"></div>
620
+ <div class="modal-footer">
621
+ <button class="btn btn-primary" onclick="closeLoopModal()">Close</button>
622
+ </div>
623
+ </div>
624
+ </div>
625
+
601
626
  <div id="agent-modal" class="modal-overlay plan-modal-overlay" onclick="closeAgentModal()">
602
627
  <div class="modal plan-modal" onclick="event.stopPropagation()">
603
628
  <div class="modal-header">
package/public/style.css CHANGED
@@ -724,6 +724,12 @@ body::before {
724
724
  font-weight: 600;
725
725
  }
726
726
 
727
+ .sidebar-footer .footer-limits .footer-limit-reset {
728
+ color: var(--text-tertiary);
729
+ font-weight: 400;
730
+ opacity: 0.75;
731
+ }
732
+
727
733
  .sidebar-footer a:hover {
728
734
  color: var(--text-secondary);
729
735
  }
@@ -1609,6 +1615,136 @@ body::before {
1609
1615
  border-color: var(--plan);
1610
1616
  }
1611
1617
 
1618
+ .loop-badge {
1619
+ width: 24px;
1620
+ height: 24px;
1621
+ display: inline-flex;
1622
+ align-items: center;
1623
+ justify-content: center;
1624
+ background: var(--bg-deep);
1625
+ border: 1px solid transparent;
1626
+ border-radius: 4px;
1627
+ color: var(--text-secondary);
1628
+ cursor: pointer;
1629
+ flex-shrink: 0;
1630
+ transition: all 0.15s ease;
1631
+ }
1632
+
1633
+ .loop-badge:hover {
1634
+ border-color: var(--accent, var(--plan));
1635
+ color: var(--accent, var(--plan));
1636
+ }
1637
+
1638
+ .loop-section-title {
1639
+ margin: 14px 0 8px;
1640
+ font-size: 12px;
1641
+ font-weight: 600;
1642
+ text-transform: uppercase;
1643
+ letter-spacing: 0.04em;
1644
+ color: var(--text-secondary);
1645
+ display: flex;
1646
+ align-items: center;
1647
+ gap: 8px;
1648
+ }
1649
+
1650
+ .loop-section-title:first-child {
1651
+ margin-top: 4px;
1652
+ }
1653
+
1654
+ .loop-count {
1655
+ font-size: 11px;
1656
+ font-weight: 500;
1657
+ padding: 1px 6px;
1658
+ border-radius: 10px;
1659
+ background: var(--bg-elevated);
1660
+ color: var(--text-secondary);
1661
+ text-transform: none;
1662
+ letter-spacing: 0;
1663
+ }
1664
+
1665
+ .loop-row {
1666
+ padding: 12px 14px;
1667
+ border: 1px solid var(--border);
1668
+ border-left: 3px solid var(--border);
1669
+ border-radius: 6px;
1670
+ background: var(--bg-elevated);
1671
+ margin-bottom: 10px;
1672
+ display: flex;
1673
+ flex-direction: column;
1674
+ gap: 10px;
1675
+ }
1676
+
1677
+ .loop-row:has(.loop-fire-pending) {
1678
+ border-left-color: var(--accent, var(--plan));
1679
+ }
1680
+
1681
+ .loop-headline {
1682
+ display: flex;
1683
+ align-items: center;
1684
+ gap: 10px;
1685
+ flex-wrap: wrap;
1686
+ font-variant-numeric: tabular-nums;
1687
+ }
1688
+
1689
+ .loop-headline-rel {
1690
+ font-size: 15px;
1691
+ font-weight: 600;
1692
+ }
1693
+
1694
+ .loop-headline-abs {
1695
+ font-size: 12px;
1696
+ color: var(--text-secondary);
1697
+ margin-left: auto;
1698
+ }
1699
+
1700
+ .loop-fire-pending {
1701
+ color: var(--accent, var(--plan));
1702
+ }
1703
+ .loop-fire-fired {
1704
+ color: var(--text-secondary);
1705
+ }
1706
+ .loop-fire-fired .loop-headline-rel {
1707
+ font-weight: 500;
1708
+ }
1709
+
1710
+ .loop-field {
1711
+ display: grid;
1712
+ grid-template-columns: 80px 1fr;
1713
+ gap: 10px;
1714
+ align-items: start;
1715
+ font-size: 13px;
1716
+ line-height: 1.45;
1717
+ }
1718
+
1719
+ .loop-field-label {
1720
+ font-size: 10px;
1721
+ text-transform: uppercase;
1722
+ letter-spacing: 0.06em;
1723
+ color: var(--text-secondary);
1724
+ padding-top: 3px;
1725
+ }
1726
+
1727
+ .loop-field-val {
1728
+ color: var(--text-primary);
1729
+ word-break: break-word;
1730
+ }
1731
+
1732
+ .loop-field-val code {
1733
+ background: var(--bg);
1734
+ padding: 2px 6px;
1735
+ border-radius: 4px;
1736
+ font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
1737
+ font-size: 12px;
1738
+ }
1739
+
1740
+ .loop-foot {
1741
+ font-size: 11px;
1742
+ color: var(--text-secondary);
1743
+ padding-top: 6px;
1744
+ border-top: 1px dashed var(--border);
1745
+ font-variant-numeric: tabular-nums;
1746
+ }
1747
+
1612
1748
  /* #endregion */
1613
1749
 
1614
1750
  /* #region OWNER_BADGE */
@@ -1743,6 +1879,55 @@ body::before {
1743
1879
  border-top: 1px solid var(--border);
1744
1880
  }
1745
1881
 
1882
+ .info-grid {
1883
+ display: grid;
1884
+ grid-template-columns: auto 1fr auto;
1885
+ gap: 6px 12px;
1886
+ align-items: center;
1887
+ margin-bottom: 16px;
1888
+ }
1889
+ .info-row-actions {
1890
+ display: flex;
1891
+ gap: 4px;
1892
+ opacity: 0.3;
1893
+ transition: opacity 0.15s ease;
1894
+ }
1895
+ .info-grid:hover .info-row-actions {
1896
+ opacity: 1;
1897
+ }
1898
+ .info-row-actions button {
1899
+ display: inline-flex;
1900
+ align-items: center;
1901
+ justify-content: center;
1902
+ width: 22px;
1903
+ height: 22px;
1904
+ padding: 0;
1905
+ background: var(--bg-elevated);
1906
+ border: 1px solid var(--border);
1907
+ border-radius: 4px;
1908
+ color: var(--text-secondary);
1909
+ cursor: pointer;
1910
+ transition:
1911
+ background 0.1s ease,
1912
+ border-color 0.1s ease,
1913
+ color 0.1s ease;
1914
+ }
1915
+ .info-row-actions button:hover {
1916
+ background: var(--bg-hover);
1917
+ border-color: var(--accent);
1918
+ color: var(--accent-text);
1919
+ }
1920
+ .info-row-actions button svg {
1921
+ width: 12px;
1922
+ height: 12px;
1923
+ display: block;
1924
+ }
1925
+ @media (hover: none) {
1926
+ .info-row-actions {
1927
+ opacity: 1;
1928
+ }
1929
+ }
1930
+
1746
1931
  /* #endregion */
1747
1932
 
1748
1933
  /* #region OWNER_FILTER */
@@ -2107,6 +2292,11 @@ body::before {
2107
2292
  opacity: 1;
2108
2293
  color: var(--text-primary);
2109
2294
  }
2295
+ .agent-tab-copy svg {
2296
+ width: 14px;
2297
+ height: 14px;
2298
+ display: block;
2299
+ }
2110
2300
  .toast {
2111
2301
  position: fixed;
2112
2302
  bottom: 16px;
@@ -2222,6 +2412,59 @@ body::before {
2222
2412
  border-radius: 3px;
2223
2413
  font-size: 11px;
2224
2414
  }
2415
+ .user-attach-chips {
2416
+ display: flex;
2417
+ gap: 4px;
2418
+ flex-wrap: wrap;
2419
+ margin-top: 4px;
2420
+ }
2421
+ .user-attach-chip {
2422
+ font-size: 10px;
2423
+ padding: 1px 6px;
2424
+ border-radius: 10px;
2425
+ background: var(--bg-hover);
2426
+ color: var(--text-secondary);
2427
+ }
2428
+ .msg-text-muted {
2429
+ color: var(--text-secondary);
2430
+ font-size: 12px;
2431
+ }
2432
+ .user-attach-section {
2433
+ margin-top: 12px;
2434
+ padding-top: 10px;
2435
+ border-top: 1px solid var(--border);
2436
+ }
2437
+ .user-attach-label {
2438
+ font-size: 11px;
2439
+ color: var(--text-secondary);
2440
+ margin-bottom: 6px;
2441
+ text-transform: uppercase;
2442
+ letter-spacing: 0.5px;
2443
+ }
2444
+ .user-attach-images {
2445
+ display: flex;
2446
+ flex-wrap: wrap;
2447
+ gap: 8px;
2448
+ }
2449
+ .user-attach-image {
2450
+ max-width: 100%;
2451
+ max-height: 480px;
2452
+ border-radius: 4px;
2453
+ border: 1px solid var(--border);
2454
+ background: var(--bg-hover);
2455
+ }
2456
+ .user-attach-toolresult {
2457
+ margin-top: 6px;
2458
+ }
2459
+ .user-attach-toolresult > summary {
2460
+ cursor: pointer;
2461
+ font-size: 12px;
2462
+ color: var(--text-secondary);
2463
+ padding: 4px 0;
2464
+ }
2465
+ .user-attach-toolresult > summary code {
2466
+ font-size: 10px;
2467
+ }
2225
2468
  .msg-item.msg-system {
2226
2469
  border-left: 3px solid var(--border);
2227
2470
  }
@@ -2241,6 +2484,52 @@ body::before {
2241
2484
  border-left: 3px solid var(--border);
2242
2485
  opacity: 0.75;
2243
2486
  }
2487
+ .msg-item.msg-waiting {
2488
+ border-left: 3px solid var(--warning, #f5a623);
2489
+ background: color-mix(in srgb, var(--warning, #f5a623) 8%, transparent);
2490
+ animation: msg-waiting-pulse 2s ease-in-out infinite;
2491
+ cursor: pointer;
2492
+ }
2493
+ .msg-waiting-discard {
2494
+ flex-shrink: 0;
2495
+ background: none;
2496
+ border: none;
2497
+ color: var(--text-muted);
2498
+ cursor: pointer;
2499
+ padding: 2px;
2500
+ opacity: 0;
2501
+ transition: opacity 0.15s;
2502
+ margin-left: auto;
2503
+ align-self: flex-start;
2504
+ line-height: 0;
2505
+ }
2506
+ .msg-item.msg-waiting:hover .msg-waiting-discard {
2507
+ opacity: 0.6;
2508
+ }
2509
+ .msg-waiting-discard:hover {
2510
+ /* biome-ignore lint/complexity/noImportantStyles: override parent hover opacity */
2511
+ opacity: 1 !important;
2512
+ color: var(--danger, #e54d4d);
2513
+ }
2514
+ .msg-waiting .msg-text {
2515
+ font-weight: 600;
2516
+ }
2517
+ .msg-waiting-preview {
2518
+ font-size: 11px;
2519
+ opacity: 0.85;
2520
+ margin-top: 2px;
2521
+ white-space: pre-wrap;
2522
+ word-break: break-word;
2523
+ }
2524
+ @keyframes msg-waiting-pulse {
2525
+ 0%,
2526
+ 100% {
2527
+ background: color-mix(in srgb, var(--warning, #f5a623) 8%, transparent);
2528
+ }
2529
+ 50% {
2530
+ background: color-mix(in srgb, var(--warning, #f5a623) 16%, transparent);
2531
+ }
2532
+ }
2244
2533
  .msg-item.msg-idle .msg-icon {
2245
2534
  width: 12px;
2246
2535
  height: 12px;
@@ -2531,8 +2820,26 @@ body::before {
2531
2820
  border: 1px solid var(--border);
2532
2821
  }
2533
2822
  .agent-badge {
2534
- font-size: 12px;
2823
+ display: inline-flex;
2824
+ align-items: center;
2825
+ justify-content: center;
2535
2826
  cursor: default;
2827
+ line-height: 1;
2828
+ flex-shrink: 0;
2829
+ color: var(--text-secondary);
2830
+ }
2831
+ .agent-badge-waiting {
2832
+ color: var(--warning);
2833
+ animation: agent-badge-pulse 1.6s ease-in-out infinite;
2834
+ }
2835
+ @keyframes agent-badge-pulse {
2836
+ 0%,
2837
+ 100% {
2838
+ opacity: 0.65;
2839
+ }
2840
+ 50% {
2841
+ opacity: 1;
2842
+ }
2536
2843
  }
2537
2844
 
2538
2845
  .linked-docs-badge,
@@ -3502,22 +3809,6 @@ pre.mermaid svg {
3502
3809
  color: var(--accent);
3503
3810
  }
3504
3811
 
3505
- .marketplace-btn {
3506
- color: #888;
3507
- cursor: pointer;
3508
- display: inline-flex;
3509
- align-items: center;
3510
- transition:
3511
- color 0.15s,
3512
- filter 0.15s;
3513
- border-radius: 3px;
3514
- }
3515
-
3516
- .marketplace-btn:hover {
3517
- color: var(--accent);
3518
- filter: drop-shadow(0 0 3px var(--accent));
3519
- }
3520
-
3521
3812
  .project-group-header .group-count {
3522
3813
  font-weight: 400;
3523
3814
  color: var(--text-muted);