clay-server 2.26.0-beta.1 → 2.26.0-beta.11

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.
Files changed (42) hide show
  1. package/bin/cli.js +5 -9
  2. package/lib/browser-mcp-server.js +496 -0
  3. package/lib/daemon.js +1 -1
  4. package/lib/os-users.js +23 -0
  5. package/lib/project-debate.js +243 -95
  6. package/lib/project-mate-interaction.js +766 -0
  7. package/lib/project-memory.js +677 -0
  8. package/lib/project.js +546 -1361
  9. package/lib/public/app.js +817 -175
  10. package/lib/public/css/debate.css +224 -2
  11. package/lib/public/css/icon-strip.css +10 -10
  12. package/lib/public/css/input.css +296 -83
  13. package/lib/public/css/mates.css +56 -57
  14. package/lib/public/css/mention.css +7 -4
  15. package/lib/public/css/menus.css +7 -0
  16. package/lib/public/css/messages.css +17 -0
  17. package/lib/public/css/mobile-nav.css +3 -1
  18. package/lib/public/css/overlays.css +181 -0
  19. package/lib/public/css/rewind.css +79 -0
  20. package/lib/public/css/server-settings.css +1 -0
  21. package/lib/public/css/sidebar.css +10 -0
  22. package/lib/public/css/title-bar.css +189 -3
  23. package/lib/public/index.html +53 -16
  24. package/lib/public/modules/context-sources.js +328 -0
  25. package/lib/public/modules/debate.js +184 -97
  26. package/lib/public/modules/input.js +18 -1
  27. package/lib/public/modules/mate-knowledge.js +11 -11
  28. package/lib/public/modules/mate-memory.js +5 -5
  29. package/lib/public/modules/mate-sidebar.js +13 -9
  30. package/lib/public/modules/mention.js +40 -2
  31. package/lib/public/modules/notifications.js +109 -1
  32. package/lib/public/modules/rewind.js +36 -0
  33. package/lib/public/modules/sidebar.js +107 -28
  34. package/lib/public/modules/terminal.js +8 -0
  35. package/lib/public/modules/theme.js +2 -1
  36. package/lib/public/modules/tools.js +69 -24
  37. package/lib/sdk-bridge.js +81 -7
  38. package/lib/sdk-worker.js +13 -1
  39. package/lib/server.js +42 -0
  40. package/lib/sessions.js +39 -7
  41. package/lib/terminal-manager.js +36 -6
  42. package/package.json +2 -2
@@ -271,6 +271,214 @@
271
271
  border-color: var(--error);
272
272
  }
273
273
 
274
+ /* ==========================================================================
275
+ Context Sources — chips above input
276
+ ========================================================================== */
277
+
278
+ #context-sources-bar {
279
+ display: flex;
280
+ align-items: center;
281
+ flex-wrap: wrap;
282
+ gap: 4px;
283
+ padding: 0 8px 4px;
284
+ position: relative;
285
+ }
286
+
287
+ #context-sources-add {
288
+ display: inline-flex;
289
+ align-items: center;
290
+ gap: 6px;
291
+ padding: 6px 12px;
292
+ border-radius: 6px;
293
+ border: 1px dashed var(--border);
294
+ background: transparent;
295
+ color: var(--text-dimmer);
296
+ font-family: inherit;
297
+ font-size: 12px;
298
+ font-weight: 500;
299
+ cursor: pointer;
300
+ transition: color 0.15s, border-color 0.15s, background 0.15s;
301
+ }
302
+
303
+ #context-sources-add .lucide { width: 12px; height: 12px; }
304
+
305
+ #context-sources-add:hover {
306
+ color: var(--text-secondary);
307
+ border-color: var(--text-dimmer);
308
+ background: var(--sidebar-hover);
309
+ }
310
+
311
+ #context-sources-chips {
312
+ display: flex;
313
+ align-items: center;
314
+ flex-wrap: wrap;
315
+ gap: 4px;
316
+ }
317
+
318
+ .context-chip {
319
+ display: inline-flex;
320
+ align-items: stretch;
321
+ padding: 0;
322
+ border-radius: 8px;
323
+ background: var(--bg-alt);
324
+ color: var(--text);
325
+ font-size: 13px;
326
+ font-weight: 500;
327
+ line-height: 1;
328
+ white-space: nowrap;
329
+ border: 1px solid var(--border);
330
+ transition: border-color 0.15s;
331
+ animation: chipIn 0.3s ease-out;
332
+ }
333
+
334
+ @keyframes chipIn {
335
+ from { opacity: 0; transform: translateY(6px) scale(0.95); }
336
+ to { opacity: 1; transform: translateY(0) scale(1); }
337
+ }
338
+
339
+ .context-chip-label {
340
+ display: inline-flex;
341
+ align-items: center;
342
+ gap: 6px;
343
+ padding: 6px 10px 6px 12px;
344
+ }
345
+
346
+ .context-chip-label .lucide { width: 14px; height: 14px; flex-shrink: 0; color: var(--accent); }
347
+
348
+ .context-chip-remove {
349
+ display: inline-flex;
350
+ align-items: center;
351
+ justify-content: center;
352
+ width: 30px;
353
+ border: none;
354
+ border-left: 1px solid var(--border);
355
+ background: transparent;
356
+ color: var(--text-muted);
357
+ cursor: pointer;
358
+ padding: 0;
359
+ border-radius: 0 8px 8px 0;
360
+ transition: color 0.15s, background 0.15s;
361
+ }
362
+
363
+ .context-chip-remove:hover {
364
+ color: var(--text);
365
+ background: rgba(var(--overlay-rgb), 0.08);
366
+ }
367
+
368
+ .context-chip-remove .lucide { width: 14px; height: 14px; }
369
+
370
+ #context-sources-picker.hidden { display: none; }
371
+
372
+ #context-sources-picker {
373
+ position: absolute;
374
+ bottom: calc(100% + 4px);
375
+ left: 0;
376
+ min-width: 200px;
377
+ max-height: 320px;
378
+ overflow-y: auto;
379
+ background: var(--sidebar-bg);
380
+ border: 1px solid var(--border);
381
+ border-radius: 10px;
382
+ padding: 4px 0;
383
+ box-shadow: 0 4px 12px rgba(var(--shadow-rgb), 0.15);
384
+ z-index: 200;
385
+ animation: ctxPickerAppear 0.12s ease-out;
386
+ }
387
+
388
+ @keyframes ctxPickerAppear {
389
+ from { opacity: 0; transform: scale(0.95); }
390
+ to { opacity: 1; transform: scale(1); }
391
+ }
392
+
393
+ .context-picker-section-label {
394
+ font-size: 10px;
395
+ font-weight: 600;
396
+ color: var(--text-dimmer);
397
+ text-transform: uppercase;
398
+ letter-spacing: 0.5px;
399
+ padding: 8px 12px 4px;
400
+ }
401
+
402
+ .context-picker-item {
403
+ display: flex;
404
+ align-items: center;
405
+ gap: 8px;
406
+ width: 100%;
407
+ padding: 8px 12px;
408
+ font-size: 13px;
409
+ color: var(--text-secondary);
410
+ background: none;
411
+ border: none;
412
+ cursor: pointer;
413
+ transition: background 0.15s;
414
+ }
415
+
416
+ .context-picker-item:hover {
417
+ background: rgba(var(--overlay-rgb), 0.05);
418
+ }
419
+
420
+ .context-picker-item .lucide { width: 14px; height: 14px; flex-shrink: 0; }
421
+
422
+ .context-picker-check {
423
+ margin-left: auto;
424
+ width: 14px;
425
+ height: 14px;
426
+ color: var(--accent);
427
+ display: none;
428
+ }
429
+
430
+ .context-picker-item.active .context-picker-check {
431
+ display: block;
432
+ }
433
+
434
+ .context-picker-empty {
435
+ padding: 12px;
436
+ color: var(--text-dimmer);
437
+ font-size: 13px;
438
+ text-align: center;
439
+ }
440
+ .context-picker-ext-notice {
441
+ padding: 10px 12px;
442
+ display: flex;
443
+ flex-direction: column;
444
+ gap: 8px;
445
+ }
446
+ .context-picker-ext-notice-text {
447
+ font-size: 12px;
448
+ color: var(--text-dimmer);
449
+ line-height: 1.4;
450
+ }
451
+ .context-picker-ext-btn {
452
+ display: inline-flex;
453
+ align-items: center;
454
+ gap: 5px;
455
+ padding: 5px 10px;
456
+ font-size: 12px;
457
+ font-weight: 500;
458
+ color: var(--text);
459
+ background: var(--bg-hover, rgba(255,255,255,0.06));
460
+ border: 1px solid var(--border);
461
+ border-radius: 6px;
462
+ cursor: pointer;
463
+ transition: background 0.15s;
464
+ width: fit-content;
465
+ }
466
+ .context-picker-ext-btn:hover {
467
+ background: var(--bg-active, rgba(255,255,255,0.1));
468
+ }
469
+ .context-picker-ext-btn .lucide {
470
+ width: 13px;
471
+ height: 13px;
472
+ }
473
+
474
+ .context-picker-favicon {
475
+ width: 14px;
476
+ height: 14px;
477
+ border-radius: 2px;
478
+ flex-shrink: 0;
479
+ object-fit: contain;
480
+ }
481
+
274
482
  /* ==========================================================================
275
483
  Input Area — Claude-style unified container
276
484
  ========================================================================== */
@@ -291,15 +499,14 @@
291
499
  display: flex;
292
500
  flex-direction: column;
293
501
  background: var(--input-bg);
294
- border: 1px solid var(--border);
502
+ border: none;
295
503
  border-radius: 8px;
296
- padding: 6px;
297
- transition: border-color 0.2s, box-shadow 0.2s;
504
+ padding: 7px;
505
+ transition: box-shadow 0.2s;
298
506
  }
299
507
 
300
508
  #input-row:focus-within {
301
- border-color: var(--text-dimmer);
302
- box-shadow: 0 0 0 1px rgba(109, 104, 96, 0.15);
509
+ box-shadow: 0 0 0 1px var(--border);
303
510
  }
304
511
 
305
512
  #input {
@@ -378,7 +585,7 @@
378
585
  border-radius: 10px;
379
586
  border: 1px solid transparent;
380
587
  background:
381
- linear-gradient(var(--bg, #282a36), var(--bg, #282a36)) padding-box,
588
+ linear-gradient(var(--ask-mate-bg, var(--bg)), var(--ask-mate-bg, var(--bg))) padding-box,
382
589
  linear-gradient(135deg, #4ecdc4 0%, #4ecdc4 25%, #556bf7, #a855f7, #f857a6, #ff6b6b) border-box;
383
590
  color: transparent;
384
591
  cursor: pointer;
@@ -521,98 +728,48 @@
521
728
  #suggestion-chips {
522
729
  display: flex;
523
730
  flex-wrap: wrap;
524
- gap: 6px;
525
- padding: 8px 6px;
526
- position: absolute;
527
- bottom: 100%;
528
- left: 0;
529
- right: 0;
530
- z-index: 5;
531
- background: transparent;
731
+ gap: 4px;
732
+ padding: 4px 6px;
532
733
  }
533
734
 
534
735
  #suggestion-chips.hidden { display: none; }
535
736
 
536
737
  .suggestion-chip {
537
738
  display: inline-flex;
538
- align-items: stretch;
539
- padding: 0;
540
- border-radius: 16px;
739
+ align-items: center;
740
+ gap: 5px;
741
+ padding: 4px 10px 4px 8px;
742
+ border-radius: 6px;
541
743
  border: 1px solid var(--border);
542
- background: var(--bg-alt);
744
+ background: rgba(var(--overlay-rgb), 0.08);
543
745
  color: var(--text-secondary);
544
- font-size: 13px;
746
+ font-size: 12px;
545
747
  font-family: inherit;
546
748
  cursor: pointer;
547
- transition: border-color 0.15s;
749
+ transition: border-color 0.15s, background 0.15s, color 0.15s;
548
750
  text-align: left;
549
751
  max-width: 100%;
550
- line-height: 1.3;
551
- box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
752
+ line-height: 1.2;
552
753
  }
553
754
 
554
755
  .suggestion-chip:hover {
555
756
  border-color: var(--accent);
757
+ background: var(--accent-bg);
758
+ color: var(--accent);
556
759
  }
557
760
 
558
761
  .suggestion-chip .lucide {
559
- width: 14px;
560
- height: 14px;
762
+ width: 12px;
763
+ height: 12px;
561
764
  flex-shrink: 0;
562
765
  color: var(--accent);
563
766
  }
564
767
 
565
- .suggestion-chip-send {
566
- display: inline-flex;
567
- align-items: center;
568
- gap: 5px;
569
- flex: 1;
570
- min-width: 0;
571
- padding: 8px 10px 8px 14px;
572
- border-radius: 16px 0 0 16px;
573
- transition: background 0.15s, color 0.15s;
574
- }
575
-
576
- .suggestion-chip-send:hover {
577
- background: var(--accent-bg);
578
- color: var(--accent);
579
- }
580
-
581
768
  .suggestion-chip-text {
582
769
  flex: 1;
583
770
  min-width: 0;
584
771
  }
585
772
 
586
- .suggestion-chip-edit {
587
- display: inline-flex;
588
- align-items: center;
589
- justify-content: center;
590
- padding: 8px 12px;
591
- border-left: 1px solid var(--border);
592
- border-radius: 0 16px 16px 0;
593
- background: rgba(128, 128, 128, 0.07);
594
- cursor: pointer;
595
- transition: background 0.15s, border-color 0.15s;
596
- }
597
-
598
- .suggestion-chip:hover .suggestion-chip-edit {
599
- border-left-color: var(--accent);
600
- }
601
-
602
- .suggestion-chip-edit:hover {
603
- background: var(--accent-bg);
604
- }
605
-
606
- .suggestion-chip-edit .lucide {
607
- width: 14px;
608
- height: 14px;
609
- color: var(--text-secondary);
610
- }
611
-
612
- .suggestion-chip-edit:hover .lucide {
613
- color: var(--accent);
614
- }
615
-
616
773
  /* ==========================================================================
617
774
  Animations
618
775
  ========================================================================== */
@@ -809,27 +966,83 @@
809
966
  flex: 1;
810
967
  }
811
968
 
812
- .scheduled-msg-cancel {
813
- display: flex;
969
+
970
+ /* Channel mode: scheduled badge in header row */
971
+ .scheduled-msg-badge {
972
+ display: inline-flex;
814
973
  align-items: center;
815
- justify-content: center;
816
- width: 22px;
817
- height: 22px;
974
+ gap: 5px;
975
+ padding: 3px 10px;
976
+ border-radius: 12px;
977
+ font-size: 12px;
978
+ font-weight: 600;
979
+ line-height: 1;
980
+ color: var(--accent);
981
+ background: color-mix(in srgb, var(--accent) 12%, transparent);
982
+ vertical-align: middle;
983
+ }
984
+ .scheduled-msg-badge svg,
985
+ .scheduled-msg-badge .lucide {
986
+ width: 13px;
987
+ height: 13px;
988
+ }
989
+ /* Scheduled message action links (shared by both modes) */
990
+ .scheduled-msg-actions {
991
+ display: inline-flex;
992
+ align-items: center;
993
+ gap: 6px;
994
+ margin-left: 4px;
995
+ }
996
+ .scheduled-msg-send-now {
997
+ padding: 0;
818
998
  border: none;
819
- border-radius: 4px;
820
999
  background: none;
821
- color: var(--text-dimmer);
1000
+ color: var(--accent);
1001
+ font-size: 12px;
1002
+ font-weight: 500;
1003
+ font-family: inherit;
822
1004
  cursor: pointer;
1005
+ transition: text-decoration 0.15s;
1006
+ }
1007
+ .scheduled-msg-send-now:hover {
1008
+ text-decoration: underline;
1009
+ }
1010
+ .scheduled-msg-sep {
1011
+ color: var(--text-dimmer);
1012
+ font-size: 12px;
1013
+ user-select: none;
1014
+ }
1015
+ .scheduled-msg-cancel {
823
1016
  padding: 0;
824
- transition: background 0.15s, color 0.15s;
1017
+ border: none;
1018
+ background: none;
1019
+ color: var(--text-dimmer);
1020
+ font-size: 12px;
1021
+ font-weight: 500;
1022
+ font-family: inherit;
1023
+ cursor: pointer;
1024
+ transition: color 0.15s;
825
1025
  }
826
-
827
1026
  .scheduled-msg-cancel:hover {
828
- background: rgba(var(--overlay-rgb), 0.08);
829
1027
  color: var(--error);
830
1028
  }
831
1029
 
832
- .scheduled-msg-cancel .lucide {
833
- width: 14px;
834
- height: 14px;
1030
+ /* Channel mode: strip bubble box styling, render as plain text */
1031
+ body.wide-view .scheduled-msg-wrap .bubble {
1032
+ background: none;
1033
+ border: none;
1034
+ box-shadow: none;
1035
+ padding: 0;
1036
+ border-radius: 0;
1037
+ }
1038
+
1039
+ /* Channel mode: header alignment */
1040
+ body.wide-view .scheduled-msg-wrap .dm-bubble-header {
1041
+ display: flex;
1042
+ align-items: center;
1043
+ gap: 6px;
1044
+ }
1045
+ body.wide-view .scheduled-msg-wrap .scheduled-msg-countdown {
1046
+ font-size: inherit;
1047
+ color: inherit;
835
1048
  }
@@ -487,24 +487,24 @@
487
487
  background: var(--border, #333);
488
488
  }
489
489
 
490
- /* === Mate badge in user strip === */
491
- .icon-strip-user-mate-badge {
492
- position: absolute;
493
- bottom: 0;
494
- right: 0;
495
- width: 14px;
496
- height: 14px;
497
- background: var(--accent, #6c5ce7);
498
- border-radius: 50%;
499
- border: 2px solid var(--bg, #282a36);
500
- display: flex;
501
- align-items: center;
502
- justify-content: center;
490
+ /* === Mate avatar in user strip: squircle + desaturate === */
491
+ .icon-strip-mate .icon-strip-user-avatar {
492
+ border-radius: 8px;
493
+ filter: saturate(0.65);
503
494
  }
504
- .icon-strip-user-mate-badge svg {
505
- width: 8px;
506
- height: 8px;
507
- color: #fff;
495
+ .icon-strip-mate:hover .icon-strip-user-avatar,
496
+ .icon-strip-mate.mention-active .icon-strip-user-avatar {
497
+ filter: saturate(1);
498
+ }
499
+ .icon-strip-mate.active .icon-strip-user-avatar {
500
+ filter: saturate(1);
501
+ box-shadow: 0 0 0 2px var(--accent);
502
+ border-radius: 8px;
503
+ }
504
+
505
+ /* Hide legacy bot badge (replaced by squircle shape) */
506
+ .icon-strip-user-mate-badge {
507
+ display: none;
508
508
  }
509
509
 
510
510
  /* Mate item in DM picker */
@@ -2342,7 +2342,9 @@ body.mate-dm-active .turn-meta {
2342
2342
  ========================================================================== */
2343
2343
 
2344
2344
  /* --- Mate Thinking: flex layout matching msg-assistant --- */
2345
- body.mate-dm-active .mate-thinking {
2345
+ /* Applies in both Mate DM and channel project chat */
2346
+ body.mate-dm-active .mate-thinking,
2347
+ body.wide-view .mate-thinking {
2346
2348
  display: flex;
2347
2349
  flex-direction: row;
2348
2350
  align-items: flex-start;
@@ -2351,10 +2353,12 @@ body.mate-dm-active .mate-thinking {
2351
2353
  margin: 0;
2352
2354
  max-width: 100%;
2353
2355
  }
2354
- body.mate-dm-active .mate-thinking:hover {
2356
+ body.mate-dm-active .mate-thinking:hover,
2357
+ body.wide-view .mate-thinking:hover {
2355
2358
  background: var(--bg-alt);
2356
2359
  }
2357
- body.mate-dm-active .mate-thinking > .dm-bubble-avatar {
2360
+ body.mate-dm-active .mate-thinking > .dm-bubble-avatar,
2361
+ body.wide-view .mate-thinking > .dm-bubble-avatar {
2358
2362
  display: block;
2359
2363
  width: 36px;
2360
2364
  height: 36px;
@@ -2362,7 +2366,8 @@ body.mate-dm-active .mate-thinking > .dm-bubble-avatar {
2362
2366
  flex-shrink: 0;
2363
2367
  margin-top: 2px;
2364
2368
  }
2365
- body.mate-dm-active .mate-thinking > .dm-bubble-content {
2369
+ body.mate-dm-active .mate-thinking > .dm-bubble-content,
2370
+ body.wide-view .mate-thinking > .dm-bubble-content {
2366
2371
  flex: 1;
2367
2372
  min-width: 0;
2368
2373
  }
@@ -2373,7 +2378,8 @@ body.mate-dm-active .mate-thinking > .dm-bubble-content {
2373
2378
  gap: 4px;
2374
2379
  padding: 4px 0;
2375
2380
  }
2376
- body.mate-dm-active .mate-thinking:not(.done) .mate-thinking-row {
2381
+ body.mate-dm-active .mate-thinking:not(.done) .mate-thinking-row,
2382
+ body.wide-view .mate-thinking:not(.done) .mate-thinking-row {
2377
2383
  display: flex;
2378
2384
  }
2379
2385
  .mate-thinking-dots {
@@ -2400,10 +2406,16 @@ body.mate-dm-active .mate-thinking:not(.done) .mate-thinking-row {
2400
2406
  }
2401
2407
 
2402
2408
  /* When done, hide mate row (JS does this too), show compact expandable header */
2403
- body.mate-dm-active .mate-thinking.done .mate-thinking-row {
2409
+ body.mate-dm-active .mate-thinking.done .mate-thinking-row,
2410
+ body.wide-view .mate-thinking.done .mate-thinking-row {
2404
2411
  display: none;
2405
2412
  }
2406
- body.mate-dm-active .mate-thinking.done .thinking-header {
2413
+ body.mate-dm-active .mate-thinking.done .mate-thinking-activity,
2414
+ body.wide-view .mate-thinking.done .mate-thinking-activity {
2415
+ display: none;
2416
+ }
2417
+ body.mate-dm-active .mate-thinking.done .thinking-header,
2418
+ body.wide-view .mate-thinking.done .thinking-header {
2407
2419
  display: inline-flex !important;
2408
2420
  font-size: 12px;
2409
2421
  padding: 4px 10px;
@@ -2412,16 +2424,19 @@ body.mate-dm-active .mate-thinking.done .thinking-header {
2412
2424
  opacity: 0.7;
2413
2425
  transition: opacity 0.15s;
2414
2426
  }
2415
- body.mate-dm-active .mate-thinking.done .thinking-header:hover {
2427
+ body.mate-dm-active .mate-thinking.done .thinking-header:hover,
2428
+ body.wide-view .mate-thinking.done .thinking-header:hover {
2416
2429
  opacity: 1;
2417
2430
  background: rgba(var(--overlay-rgb), 0.08);
2418
2431
  }
2419
- body.mate-dm-active .mate-thinking .thinking-content {
2432
+ body.mate-dm-active .mate-thinking .thinking-content,
2433
+ body.wide-view .mate-thinking .thinking-content {
2420
2434
  max-height: 0;
2421
2435
  overflow: hidden;
2422
2436
  transition: max-height 0.25s ease;
2423
2437
  }
2424
- body.mate-dm-active .mate-thinking.expanded .thinking-content {
2438
+ body.mate-dm-active .mate-thinking.expanded .thinking-content,
2439
+ body.wide-view .mate-thinking.expanded .thinking-content {
2425
2440
  max-height: 2000px;
2426
2441
  }
2427
2442
 
@@ -2476,8 +2491,10 @@ body.mate-dm-active .mate-tool-group .tool-name {
2476
2491
  color: var(--text-muted);
2477
2492
  }
2478
2493
 
2479
- /* --- Mate Permission: flex layout matching msg-assistant --- */
2480
- body.mate-dm-active .mate-permission {
2494
+ /* --- Conversational Permission: flex layout matching msg-assistant --- */
2495
+ /* Applies in both Mate DM and channel project chat */
2496
+ body.mate-dm-active .mate-permission,
2497
+ body.wide-view .mate-permission {
2481
2498
  display: flex;
2482
2499
  flex-direction: row;
2483
2500
  align-items: flex-start;
@@ -2490,10 +2507,12 @@ body.mate-dm-active .mate-permission {
2490
2507
  margin: 0;
2491
2508
  max-width: 100%;
2492
2509
  }
2493
- body.mate-dm-active .mate-permission:hover {
2510
+ body.mate-dm-active .mate-permission:hover,
2511
+ body.wide-view .mate-permission:hover {
2494
2512
  background: var(--bg-alt);
2495
2513
  }
2496
- body.mate-dm-active .mate-permission > .dm-bubble-avatar {
2514
+ body.mate-dm-active .mate-permission > .dm-bubble-avatar,
2515
+ body.wide-view .mate-permission > .dm-bubble-avatar {
2497
2516
  display: block;
2498
2517
  width: 36px;
2499
2518
  height: 36px;
@@ -2501,7 +2520,8 @@ body.mate-dm-active .mate-permission > .dm-bubble-avatar {
2501
2520
  flex-shrink: 0;
2502
2521
  margin-top: 2px;
2503
2522
  }
2504
- body.mate-dm-active .mate-permission > .dm-bubble-content {
2523
+ body.mate-dm-active .mate-permission > .dm-bubble-content,
2524
+ body.wide-view .mate-permission > .dm-bubble-content {
2505
2525
  flex: 1;
2506
2526
  min-width: 0;
2507
2527
  }
@@ -2569,14 +2589,14 @@ body.mate-dm-active .mate-permission > .dm-bubble-content {
2569
2589
  .mate-permission-deny {
2570
2590
  color: var(--text-muted);
2571
2591
  }
2572
- /* Resolved state */
2573
- body.mate-dm-active .mate-permission.resolved .mate-permission-actions {
2592
+ /* Resolved state (works in both Mate DM and channel project chat) */
2593
+ .mate-permission.resolved .mate-permission-actions {
2574
2594
  pointer-events: none;
2575
2595
  }
2576
- body.mate-dm-active .mate-permission.resolved .mate-permission-reply {
2596
+ .mate-permission.resolved .mate-permission-reply {
2577
2597
  display: none;
2578
2598
  }
2579
- body.mate-dm-active .mate-permission.resolved .permission-decision-label {
2599
+ .mate-permission.resolved .permission-decision-label {
2580
2600
  font-size: 12px;
2581
2601
  color: var(--text-dimmer);
2582
2602
  }
@@ -2732,27 +2752,6 @@ body.mate-dm-active .activity-inline:not(.mention-activity-bar):not(.mate-pre-ac
2732
2752
  -webkit-tap-highlight-color: transparent;
2733
2753
  }
2734
2754
 
2735
- .mate-mobile-back {
2736
- display: flex;
2737
- align-items: center;
2738
- justify-content: center;
2739
- width: 44px;
2740
- height: 44px;
2741
- flex-shrink: 0;
2742
- background: none;
2743
- border: none;
2744
- color: #fff;
2745
- cursor: pointer;
2746
- padding: 0;
2747
- touch-action: manipulation;
2748
- -webkit-tap-highlight-color: transparent;
2749
- }
2750
-
2751
- .mate-mobile-back svg {
2752
- width: 22px;
2753
- height: 22px;
2754
- }
2755
-
2756
2755
  .mate-mobile-avatar {
2757
2756
  width: 32px;
2758
2757
  height: 32px;
@@ -107,8 +107,8 @@
107
107
  padding: 3px 6px 3px 4px;
108
108
  margin: 0 0 4px 0;
109
109
  border-radius: 6px;
110
- background: color-mix(in srgb, var(--chip-color, #6c5ce7) 12%, transparent);
111
- border: 1px solid color-mix(in srgb, var(--chip-color, #6c5ce7) 25%, transparent);
110
+ background: color-mix(in srgb, var(--chip-color, #6c5ce7) 15%, var(--bg-alt));
111
+ border: 1px solid color-mix(in srgb, var(--chip-color, #6c5ce7) 30%, var(--border));
112
112
  cursor: default;
113
113
  flex-shrink: 0;
114
114
  width: fit-content;
@@ -131,19 +131,22 @@
131
131
  font-size: 13px;
132
132
  font-weight: 600;
133
133
  white-space: nowrap;
134
+ line-height: 18px;
134
135
  }
135
136
 
136
137
  .input-mention-chip-remove {
137
138
  background: none;
138
139
  border: none;
139
- padding: 0 2px;
140
+ padding: 0;
140
141
  margin: 0;
141
142
  cursor: pointer;
142
143
  font-size: 15px;
143
- line-height: 1;
144
+ line-height: 18px;
144
145
  color: var(--text-dimmer);
145
146
  opacity: 0.6;
146
147
  transition: opacity 0.1s;
148
+ display: flex;
149
+ align-items: center;
147
150
  }
148
151
 
149
152
  .input-mention-chip-remove:hover {
@@ -474,6 +474,13 @@
474
474
 
475
475
  #config-chip .lucide { width: 10px; height: 10px; }
476
476
  #config-chip .config-chip-icon { display: none; }
477
+
478
+ @media (max-width: 1000px) {
479
+ #config-chip .config-chip-icon { display: inline-flex; width: 16px; height: 16px; }
480
+ #config-chip-label { display: none; }
481
+ #config-chip .lucide:last-child { display: none; }
482
+ #config-chip { padding: 0 6px; }
483
+ }
477
484
  #config-chip:hover { color: var(--text-secondary); background: rgba(var(--overlay-rgb),0.06); }
478
485
  #config-chip.active { color: var(--text-secondary); background: rgba(var(--overlay-rgb),0.06); }
479
486