clay-server 2.10.0 → 2.11.0-beta.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.
@@ -984,6 +984,14 @@ pre.mermaid-error {
984
984
  color: var(--text-dimmer);
985
985
  }
986
986
 
987
+ .subagent-summary {
988
+ margin: 2px 0 2px 24px;
989
+ padding: 2px 12px;
990
+ font-size: 12px;
991
+ color: var(--text-muted);
992
+ font-style: italic;
993
+ }
994
+
987
995
  .subagent-stop-btn {
988
996
  margin-left: auto;
989
997
  padding: 2px 10px;
@@ -1459,9 +1467,246 @@ pre.mermaid-error {
1459
1467
 
1460
1468
  .context-overflow-btn:hover { background: var(--accent-hover); }
1461
1469
 
1470
+ /* ==========================================================================
1471
+ Auth Required Message
1472
+ ========================================================================== */
1473
+
1474
+ .auth-required-msg {
1475
+ max-width: var(--content-width);
1476
+ margin: 12px auto;
1477
+ padding: 14px 18px;
1478
+ background: color-mix(in srgb, var(--warning) 8%, var(--bg));
1479
+ border: 1px solid color-mix(in srgb, var(--warning) 30%, transparent);
1480
+ border-radius: 12px;
1481
+ font-size: 13px;
1482
+ }
1483
+
1484
+ .auth-required-header {
1485
+ font-weight: 600;
1486
+ color: var(--warning);
1487
+ margin-bottom: 4px;
1488
+ }
1489
+
1490
+ .auth-required-hint {
1491
+ color: var(--text-muted);
1492
+ font-size: 12px;
1493
+ line-height: 1.5;
1494
+ margin-bottom: 4px;
1495
+ }
1496
+
1497
+ .auth-required-guide {
1498
+ color: var(--text-muted);
1499
+ font-size: 11px;
1500
+ line-height: 1.4;
1501
+ margin-bottom: 8px;
1502
+ opacity: 0.8;
1503
+ }
1504
+
1505
+ .auth-required-cmd {
1506
+ display: block;
1507
+ padding: 8px 12px;
1508
+ margin-bottom: 12px;
1509
+ background: var(--input-bg);
1510
+ border: 1px solid var(--border);
1511
+ border-radius: 6px;
1512
+ font-family: var(--font-mono);
1513
+ font-size: 13px;
1514
+ color: var(--text);
1515
+ user-select: all;
1516
+ }
1517
+
1518
+ .auth-required-btn {
1519
+ padding: 8px 20px;
1520
+ border: none;
1521
+ border-radius: 8px;
1522
+ background: var(--accent);
1523
+ color: #fff;
1524
+ font-size: 13px;
1525
+ font-weight: 500;
1526
+ font-family: inherit;
1527
+ cursor: pointer;
1528
+ transition: background 0.15s;
1529
+ }
1530
+
1531
+ .auth-required-btn:hover { background: var(--accent-hover); }
1532
+
1462
1533
  /* ==========================================================================
1463
1534
  Rate Limit Message
1464
1535
  ========================================================================== */
1465
1536
 
1466
1537
  /* Rate limit inline cards removed — now header-only with popover (see title-bar.css) */
1467
1538
 
1539
+ /* ==========================================================================
1540
+ DM Messages (P2P chat)
1541
+ ========================================================================== */
1542
+
1543
+ /* --- Slack-style DM messages --- */
1544
+
1545
+ .dm-msg {
1546
+ display: flex;
1547
+ align-items: flex-start;
1548
+ gap: 8px;
1549
+ padding: 4px 16px;
1550
+ }
1551
+
1552
+ .dm-msg:hover {
1553
+ background: var(--bg-alt);
1554
+ }
1555
+
1556
+ .dm-msg-avatar {
1557
+ width: 36px;
1558
+ height: 36px;
1559
+ border-radius: 6px;
1560
+ flex-shrink: 0;
1561
+ margin-top: 2px;
1562
+ }
1563
+
1564
+ .dm-msg-content {
1565
+ flex: 1;
1566
+ min-width: 0;
1567
+ }
1568
+
1569
+ .dm-msg-header {
1570
+ display: flex;
1571
+ align-items: baseline;
1572
+ gap: 8px;
1573
+ }
1574
+
1575
+ .dm-msg-name {
1576
+ font-weight: 700;
1577
+ font-size: 15px;
1578
+ color: var(--text);
1579
+ }
1580
+
1581
+ .dm-msg-time {
1582
+ font-size: 12px;
1583
+ color: var(--text-dimmer);
1584
+ }
1585
+
1586
+ .dm-msg-body {
1587
+ font-size: 15px;
1588
+ line-height: 1.46;
1589
+ color: var(--text);
1590
+ word-wrap: break-word;
1591
+ white-space: pre-wrap;
1592
+ }
1593
+
1594
+ /* Compact: same sender within 5 min */
1595
+ .dm-msg-compact {
1596
+ padding: 1px 16px 1px 60px; /* 16 + 36 avatar + 8 gap = 60 */
1597
+ position: relative;
1598
+ }
1599
+
1600
+ .dm-msg-compact:hover .dm-msg-hover-time {
1601
+ opacity: 1;
1602
+ }
1603
+
1604
+ .dm-msg-hover-time {
1605
+ position: absolute;
1606
+ left: 16px;
1607
+ width: 36px;
1608
+ text-align: center;
1609
+ font-size: 11px;
1610
+ color: var(--text-dimmer);
1611
+ opacity: 0;
1612
+ transition: opacity 0.1s;
1613
+ line-height: 1.46;
1614
+ }
1615
+
1616
+ /* Typing indicator */
1617
+ .dm-typing-indicator {
1618
+ align-items: center;
1619
+ gap: 8px;
1620
+ padding: 4px 16px;
1621
+ }
1622
+
1623
+ .dm-typing-indicator .dm-msg-avatar {
1624
+ opacity: 0.7;
1625
+ }
1626
+
1627
+ .dm-typing-dots {
1628
+ display: flex;
1629
+ align-items: center;
1630
+ gap: 4px;
1631
+ padding: 8px 12px;
1632
+ background: var(--bg-alt);
1633
+ border-radius: 12px;
1634
+ }
1635
+
1636
+ .dm-typing-dots span {
1637
+ width: 7px;
1638
+ height: 7px;
1639
+ border-radius: 50%;
1640
+ background: var(--text-dimmer);
1641
+ animation: dm-typing-bounce 1.4s infinite ease-in-out both;
1642
+ }
1643
+
1644
+ .dm-typing-dots span:nth-child(1) { animation-delay: 0s; }
1645
+ .dm-typing-dots span:nth-child(2) { animation-delay: 0.2s; }
1646
+ .dm-typing-dots span:nth-child(3) { animation-delay: 0.4s; }
1647
+
1648
+ @keyframes dm-typing-bounce {
1649
+ 0%, 80%, 100% { transform: scale(0.6); opacity: 0.4; }
1650
+ 40% { transform: scale(1); opacity: 1; }
1651
+ }
1652
+
1653
+ /* DM mode: hide project-specific UI elements */
1654
+ #main-column.dm-mode .msg-group,
1655
+ #main-column.dm-mode #suggestion-chips,
1656
+ #main-column.dm-mode .tool-group {
1657
+ display: none;
1658
+ }
1659
+
1660
+ /* DM mode: simplify input bar (no voice, no model config, no context, no slash menu) */
1661
+ #main-column.dm-mode #stt-btn,
1662
+ #main-column.dm-mode #config-chip-wrap,
1663
+ #main-column.dm-mode #context-mini,
1664
+ #main-column.dm-mode #slash-menu {
1665
+ display: none !important;
1666
+ }
1667
+
1668
+ /* DM mode: hide sidebar column and resize handle */
1669
+ #sidebar-column.dm-mode {
1670
+ display: none !important;
1671
+ }
1672
+
1673
+ #sidebar-resize-handle.dm-mode {
1674
+ display: none !important;
1675
+ }
1676
+
1677
+ /* DM header bar: replaces normal title-bar-content */
1678
+ .dm-header-bar {
1679
+ display: none;
1680
+ align-items: center;
1681
+ gap: 12px;
1682
+ padding: 0 16px;
1683
+ height: 48px;
1684
+ flex-shrink: 0;
1685
+ }
1686
+
1687
+ #main-column.dm-mode .title-bar-content {
1688
+ display: none;
1689
+ }
1690
+
1691
+ #main-column.dm-mode .dm-header-bar {
1692
+ display: flex;
1693
+ }
1694
+
1695
+ .dm-header-avatar {
1696
+ width: 28px;
1697
+ height: 28px;
1698
+ border-radius: 50%;
1699
+ object-fit: cover;
1700
+ flex-shrink: 0;
1701
+ }
1702
+
1703
+ .dm-header-name {
1704
+ font-size: 15px;
1705
+ font-weight: 700;
1706
+ color: #fff;
1707
+ white-space: nowrap;
1708
+ overflow: hidden;
1709
+ text-overflow: ellipsis;
1710
+ }
1711
+
1712
+
@@ -860,6 +860,94 @@ button.top-bar-pill.pill-accent:hover { background: color-mix(in srgb, var(--acc
860
860
 
861
861
  #add-project-error.hidden { display: none; }
862
862
 
863
+ /* --- Add project mode selector --- */
864
+ .add-project-modes {
865
+ display: flex;
866
+ gap: 2px;
867
+ margin-bottom: 14px;
868
+ background: var(--input-bg);
869
+ border-radius: 8px;
870
+ padding: 2px;
871
+ border: 1px solid var(--border);
872
+ }
873
+
874
+ .add-project-mode-btn {
875
+ flex: 1;
876
+ padding: 6px 4px;
877
+ border: 1px solid transparent;
878
+ border-radius: 6px;
879
+ background: none;
880
+ color: var(--text-muted);
881
+ font-size: 12px;
882
+ font-weight: 500;
883
+ font-family: inherit;
884
+ cursor: pointer;
885
+ transition: background 0.15s, color 0.15s, border-color 0.15s;
886
+ white-space: nowrap;
887
+ }
888
+
889
+ .add-project-mode-btn:hover:not(:disabled) {
890
+ color: var(--text-secondary);
891
+ }
892
+
893
+ .add-project-mode-btn.active {
894
+ color: var(--accent);
895
+ background: var(--bg);
896
+ border-color: var(--border);
897
+ box-shadow: 0 1px 3px rgba(var(--shadow-rgb), 0.15);
898
+ }
899
+
900
+ .add-project-mode-btn:disabled {
901
+ opacity: 0.35;
902
+ cursor: not-allowed;
903
+ }
904
+
905
+ .add-project-panel { display: none; }
906
+ .add-project-panel.active { display: block; }
907
+
908
+ #add-project-create-input,
909
+ #add-project-clone-input {
910
+ width: 100%;
911
+ background: var(--input-bg);
912
+ border: 1px solid var(--border);
913
+ border-radius: 8px;
914
+ color: var(--text);
915
+ font-size: 13px;
916
+ font-family: "Roboto Mono", monospace;
917
+ padding: 10px 12px;
918
+ outline: none;
919
+ transition: border-color 0.2s;
920
+ }
921
+
922
+ #add-project-create-input:focus,
923
+ #add-project-clone-input:focus { border-color: var(--text-dimmer); }
924
+
925
+ #add-project-create-input::placeholder,
926
+ #add-project-clone-input::placeholder {
927
+ color: var(--text-muted);
928
+ font-family: "Pretendard", system-ui, sans-serif;
929
+ }
930
+
931
+ #add-project-clone-progress {
932
+ font-size: 12px;
933
+ color: var(--text-muted);
934
+ margin-top: 8px;
935
+ display: flex;
936
+ align-items: center;
937
+ gap: 8px;
938
+ }
939
+
940
+ #add-project-clone-progress.hidden { display: none; }
941
+
942
+ .clone-spinner {
943
+ width: 12px;
944
+ height: 12px;
945
+ border: 2px solid var(--border);
946
+ border-top-color: var(--accent);
947
+ border-radius: 50%;
948
+ animation: spin 0.6s linear infinite;
949
+ }
950
+
863
951
  /* --- Connect overlay --- */
864
952
  #connect-overlay {
865
953
  position: fixed;
@@ -79,8 +79,7 @@
79
79
  font-size: 12px;
80
80
  font-weight: 700;
81
81
  color: var(--text-muted);
82
- text-transform: uppercase;
83
- letter-spacing: 0.05em;
82
+ letter-spacing: 0.02em;
84
83
  padding: 0 10px 10px;
85
84
  border-bottom: 1px solid var(--border-subtle);
86
85
  margin-bottom: 8px;
@@ -480,6 +479,35 @@
480
479
  color: #fff;
481
480
  }
482
481
 
482
+ .settings-budget-row {
483
+ display: flex;
484
+ align-items: center;
485
+ gap: 10px;
486
+ margin-top: 12px;
487
+ }
488
+
489
+ .settings-budget-label {
490
+ font-size: 12px;
491
+ color: var(--text-muted);
492
+ white-space: nowrap;
493
+ }
494
+
495
+ .settings-budget-input {
496
+ width: 90px;
497
+ padding: 5px 8px;
498
+ border: 1px solid var(--border);
499
+ border-radius: 6px;
500
+ background: var(--bg);
501
+ color: var(--text);
502
+ font-size: 13px;
503
+ font-family: inherit;
504
+ }
505
+
506
+ .settings-budget-input:focus {
507
+ border-color: var(--accent);
508
+ outline: none;
509
+ }
510
+
483
511
  /* --- PIN input --- */
484
512
  .settings-pin-input-row {
485
513
  display: flex;
@@ -848,6 +848,10 @@
848
848
  border-radius: 10px;
849
849
  }
850
850
 
851
+ #user-island.dm-hidden {
852
+ display: none;
853
+ }
854
+
851
855
  #user-island::before {
852
856
  content: "";
853
857
  position: absolute;