clay-server 5.0.0-beta.1 → 5.0.0-beta.3
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/lib/daemon.js +9 -0
- package/lib/new-session-default.js +45 -0
- package/lib/project-connection.js +4 -2
- package/lib/project-session-creation.js +107 -0
- package/lib/project-session-delete.js +21 -3
- package/lib/project-session-document.js +9 -3
- package/lib/project-session-folder-delete.js +169 -0
- package/lib/project-session-folders.js +272 -0
- package/lib/project-sessions.js +46 -26
- package/lib/project.js +2 -0
- package/lib/public/app.js +10 -0
- package/lib/public/css/filebrowser.css +3 -3
- package/lib/public/css/mates.css +1 -1
- package/lib/public/css/mobile-nav.css +0 -128
- package/lib/public/css/session-folders.css +383 -0
- package/lib/public/css/sidebar.css +28 -545
- package/lib/public/index.html +3 -21
- package/lib/public/modules/app-favicon.js +5 -4
- package/lib/public/modules/app-messages.js +13 -0
- package/lib/public/modules/input.js +3 -0
- package/lib/public/modules/project-switcher.js +4 -4
- package/lib/public/modules/session-create-form.js +428 -0
- package/lib/public/modules/session-create.js +338 -0
- package/lib/public/modules/session-folder-collapse.js +192 -0
- package/lib/public/modules/session-folder-context.js +215 -0
- package/lib/public/modules/session-folder-delete.js +313 -0
- package/lib/public/modules/session-folder-dialogs.js +173 -0
- package/lib/public/modules/session-folder-dnd.js +214 -0
- package/lib/public/modules/session-folder-draft.js +184 -0
- package/lib/public/modules/session-folder-layout.js +133 -0
- package/lib/public/modules/session-folder-toolbar.js +185 -0
- package/lib/public/modules/session-folder-view-menu.js +187 -0
- package/lib/public/modules/session-folders.js +95 -0
- package/lib/public/modules/session-list-search.js +108 -0
- package/lib/public/modules/session-presence-ui.js +44 -0
- package/lib/public/modules/sidebar-mobile.js +38 -182
- package/lib/public/modules/sidebar-session-folders-ui.js +382 -0
- package/lib/public/modules/sidebar-sessions.js +141 -718
- package/lib/public/modules/sidebar.js +10 -2
- package/lib/public/modules/terminal.js +2 -2
- package/lib/public/modules/tool-palette.js +37 -219
- package/lib/public/style.css +1 -0
- package/lib/sdk-bridge.js +21 -14
- package/lib/server.js +4 -0
- package/lib/session-folders.js +414 -0
- package/lib/sessions.js +7 -5
- package/lib/users-session-folder-preferences.js +69 -0
- package/lib/users.js +6 -0
- package/lib/ws-schema.js +11 -0
- package/lib/yoke/adapters/codex.js +2 -2
- package/package.json +1 -1
- package/lib/public/modules/session-creation-cta.js +0 -46
- package/lib/public/modules/tool-palette-overlays.js +0 -159
|
@@ -282,117 +282,29 @@
|
|
|
282
282
|
padding: 4px 12px 2px;
|
|
283
283
|
}
|
|
284
284
|
|
|
285
|
-
/*
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
align-items: center;
|
|
298
|
-
gap: 8px;
|
|
299
|
-
padding: 4px 8px 2px 12px;
|
|
300
|
-
}
|
|
301
|
-
.sidebar-tools-header .sidebar-section-label {
|
|
302
|
-
padding: 0;
|
|
303
|
-
color: var(--text-muted);
|
|
304
|
-
}
|
|
305
|
-
|
|
306
|
-
/* Small shortcut-pill for the Cmd/Ctrl+O hotkey overlay. Mirrors the
|
|
307
|
-
icon-strip hotkey hints so keyboard shortcuts look the same across
|
|
308
|
-
the sidebar surface. */
|
|
309
|
-
.sidebar-tools-hint {
|
|
310
|
-
display: inline-flex;
|
|
311
|
-
align-items: center;
|
|
312
|
-
justify-content: center;
|
|
313
|
-
min-width: 28px;
|
|
314
|
-
padding: 2px 4px;
|
|
315
|
-
border: 1px solid var(--border-subtle);
|
|
316
|
-
background: var(--bg-alt);
|
|
317
|
-
color: var(--text-dimmer);
|
|
318
|
-
font-size: 10px;
|
|
319
|
-
font-weight: 600;
|
|
320
|
-
font-family: inherit;
|
|
321
|
-
border-radius: 6px;
|
|
322
|
-
cursor: pointer;
|
|
323
|
-
opacity: 0.7;
|
|
324
|
-
transition: opacity 0.15s, color 0.15s, background 0.15s;
|
|
325
|
-
}
|
|
326
|
-
.sidebar-tools-hint:hover {
|
|
327
|
-
opacity: 1;
|
|
328
|
-
color: var(--text-muted);
|
|
329
|
-
background: var(--bg);
|
|
285
|
+
/* Section labels that duplicate what the content already says stay in the DOM
|
|
286
|
+
for assistive technology but are not shown. */
|
|
287
|
+
.sidebar-label-sr {
|
|
288
|
+
position: absolute !important;
|
|
289
|
+
width: 1px;
|
|
290
|
+
height: 1px;
|
|
291
|
+
margin: -1px;
|
|
292
|
+
padding: 0 !important;
|
|
293
|
+
overflow: hidden;
|
|
294
|
+
clip: rect(0 0 0 0);
|
|
295
|
+
white-space: nowrap;
|
|
296
|
+
border: 0;
|
|
330
297
|
}
|
|
331
298
|
|
|
332
|
-
|
|
333
|
-
it doesn't pull attention; on hover it brightens to signal that
|
|
334
|
-
it's a real affordance. */
|
|
335
|
-
.tool-palette-edit-btn {
|
|
336
|
-
margin-left: auto;
|
|
337
|
-
display: inline-flex;
|
|
338
|
-
align-items: center;
|
|
339
|
-
justify-content: center;
|
|
340
|
-
width: 22px;
|
|
341
|
-
height: 22px;
|
|
342
|
-
background: none;
|
|
343
|
-
border: none;
|
|
344
|
-
cursor: pointer;
|
|
345
|
-
color: var(--text-dimmer);
|
|
346
|
-
opacity: 0.45;
|
|
347
|
-
border-radius: 6px;
|
|
348
|
-
transition: background 0.15s, color 0.15s, opacity 0.15s;
|
|
349
|
-
}
|
|
350
|
-
.tool-palette-edit-btn .lucide,
|
|
351
|
-
.tool-palette-edit-btn svg {
|
|
352
|
-
width: 13px;
|
|
353
|
-
height: 13px;
|
|
354
|
-
}
|
|
355
|
-
.tool-palette-edit-btn:hover {
|
|
356
|
-
background: var(--sidebar-hover);
|
|
357
|
-
color: var(--text-muted);
|
|
358
|
-
opacity: 1;
|
|
359
|
-
}
|
|
360
|
-
.tool-palette-edit-btn.active {
|
|
361
|
-
background: var(--accent);
|
|
362
|
-
color: #fff;
|
|
363
|
-
opacity: 1;
|
|
364
|
-
}
|
|
365
|
-
.tool-palette-edit-btn.active:hover {
|
|
366
|
-
background: var(--accent);
|
|
367
|
-
color: #fff;
|
|
368
|
-
opacity: 1;
|
|
369
|
-
filter: brightness(1.1);
|
|
370
|
-
}
|
|
299
|
+
body:not(.home-active) #icon-strip-hint-mate { display: none; }
|
|
371
300
|
|
|
372
|
-
/*
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
margin-top: 4px;
|
|
377
|
-
}
|
|
378
|
-
.tool-palette-hidden-section.hidden {
|
|
379
|
-
display: none;
|
|
380
|
-
}
|
|
381
|
-
.tool-palette-hidden-label {
|
|
382
|
-
font-size: 10px;
|
|
383
|
-
font-weight: 600;
|
|
384
|
-
color: var(--text-dimmer);
|
|
385
|
-
text-transform: uppercase;
|
|
386
|
-
letter-spacing: 0.5px;
|
|
387
|
-
padding: 2px 4px 6px;
|
|
388
|
-
}
|
|
389
|
-
.tool-palette-hidden-grid {
|
|
390
|
-
display: grid;
|
|
391
|
-
grid-template-columns: repeat(4, 1fr);
|
|
392
|
-
gap: 4px;
|
|
301
|
+
/* --- Tools section --- */
|
|
302
|
+
#sidebar-tools {
|
|
303
|
+
flex-shrink: 0;
|
|
304
|
+
padding-bottom: 12px;
|
|
393
305
|
}
|
|
394
306
|
|
|
395
|
-
/* --- Shared tile style (
|
|
307
|
+
/* --- Shared tile style (session and Mate tool grids) --- */
|
|
396
308
|
.palette-tile {
|
|
397
309
|
position: relative;
|
|
398
310
|
display: flex;
|
|
@@ -458,77 +370,21 @@
|
|
|
458
370
|
word-break: break-word;
|
|
459
371
|
}
|
|
460
372
|
|
|
461
|
-
/* --- Edit mode affordances (shared across session + mate palettes) --- */
|
|
462
|
-
|
|
463
|
-
/* × remove badge on each tile. Hidden in normal mode; shown in edit. */
|
|
464
|
-
.tool-palette-remove {
|
|
465
|
-
position: absolute;
|
|
466
|
-
top: -4px;
|
|
467
|
-
right: -4px;
|
|
468
|
-
width: 16px;
|
|
469
|
-
height: 16px;
|
|
470
|
-
border-radius: 50%;
|
|
471
|
-
background: var(--accent);
|
|
472
|
-
color: #fff;
|
|
473
|
-
font-size: 13px;
|
|
474
|
-
font-weight: 700;
|
|
475
|
-
line-height: 1;
|
|
476
|
-
display: flex;
|
|
477
|
-
align-items: center;
|
|
478
|
-
justify-content: center;
|
|
479
|
-
cursor: pointer;
|
|
480
|
-
opacity: 0;
|
|
481
|
-
transform: scale(0.6);
|
|
482
|
-
pointer-events: none;
|
|
483
|
-
transition: opacity 0.15s, transform 0.15s;
|
|
484
|
-
z-index: 2;
|
|
485
|
-
user-select: none;
|
|
486
|
-
}
|
|
487
|
-
.edit-mode .tool-palette-remove {
|
|
488
|
-
opacity: 1;
|
|
489
|
-
transform: scale(1);
|
|
490
|
-
pointer-events: auto;
|
|
491
|
-
}
|
|
492
|
-
.edit-mode .tool-palette-remove:hover {
|
|
493
|
-
filter: brightness(1.15);
|
|
494
|
-
}
|
|
495
|
-
|
|
496
373
|
/* Drag-reorder feedback. Tiles are draggable at all times (macOS dock
|
|
497
374
|
pattern) so users can rearrange without entering a separate mode.
|
|
498
375
|
-webkit-user-drag is explicit for Safari, which otherwise sometimes
|
|
499
|
-
ignores draggable when user-select is none on an ancestor.
|
|
500
|
-
adds the outline so the tiles read as mutable during an edit. */
|
|
376
|
+
ignores draggable when user-select is none on an ancestor. */
|
|
501
377
|
#session-actions [data-tool-id],
|
|
502
378
|
#mate-sidebar-tools [data-tool-id] {
|
|
503
379
|
-webkit-user-drag: element;
|
|
504
380
|
}
|
|
505
|
-
.edit-mode [data-tool-id] {
|
|
506
|
-
box-shadow: inset 0 0 0 1px var(--border-subtle);
|
|
507
|
-
animation: tile-wiggle 0.22s ease-in-out infinite;
|
|
508
|
-
transform-origin: 50% 50%;
|
|
509
|
-
}
|
|
510
|
-
/* Desync the wiggle across tiles so they don't swing in lockstep. */
|
|
511
|
-
.edit-mode [data-tool-id]:nth-child(2n) {
|
|
512
|
-
animation-delay: -0.11s;
|
|
513
|
-
}
|
|
514
|
-
.edit-mode [data-tool-id]:nth-child(3n) {
|
|
515
|
-
animation-duration: 0.26s;
|
|
516
|
-
}
|
|
517
|
-
@keyframes tile-wiggle {
|
|
518
|
-
0% { transform: rotate(-1.2deg); }
|
|
519
|
-
50% { transform: rotate(1.2deg); }
|
|
520
|
-
100% { transform: rotate(-1.2deg); }
|
|
521
|
-
}
|
|
522
|
-
/* The dragged tile shouldn't wiggle while under the cursor. */
|
|
523
381
|
[data-tool-id].dragging {
|
|
524
382
|
opacity: 0.4;
|
|
525
383
|
cursor: grabbing;
|
|
526
|
-
animation: none;
|
|
527
384
|
}
|
|
528
385
|
/* Children shouldn't swallow drag events — the browser starts drag on
|
|
529
386
|
the element under the pointer, and we want that to always be the
|
|
530
|
-
draggable button, not the inner icon/label/badge.
|
|
531
|
-
stays interactive (it needs clicks in edit mode). */
|
|
387
|
+
draggable button, not the inner icon/label/badge. */
|
|
532
388
|
[data-tool-id] > i,
|
|
533
389
|
[data-tool-id] > svg,
|
|
534
390
|
[data-tool-id] > .tool-btn-label,
|
|
@@ -536,208 +392,19 @@
|
|
|
536
392
|
pointer-events: none;
|
|
537
393
|
}
|
|
538
394
|
|
|
539
|
-
/*
|
|
540
|
-
+ glyph on hover to suggest they can be restored. */
|
|
541
|
-
.tool-palette-hidden-grid [data-tool-id] {
|
|
542
|
-
opacity: 0.55;
|
|
543
|
-
cursor: pointer;
|
|
544
|
-
transition: opacity 0.15s, background 0.15s, color 0.15s;
|
|
545
|
-
}
|
|
546
|
-
.tool-palette-hidden-grid [data-tool-id]:hover {
|
|
547
|
-
opacity: 1;
|
|
548
|
-
}
|
|
549
|
-
.tool-palette-hidden-grid .tool-palette-remove {
|
|
550
|
-
display: none;
|
|
551
|
-
}
|
|
552
|
-
.tool-palette-hidden-grid .sidebar-badge {
|
|
553
|
-
display: none;
|
|
554
|
-
}
|
|
555
|
-
|
|
556
|
-
/* Hotkey badge shown on each active palette tile while Cmd/Ctrl+O pick
|
|
557
|
-
mode is active. Top-left so it doesn't collide with the × (top-right)
|
|
558
|
-
or count badges. High-contrast accent so the keystroke is obvious. */
|
|
559
|
-
.tool-palette-hotkey-badge {
|
|
560
|
-
position: absolute;
|
|
561
|
-
top: -4px;
|
|
562
|
-
left: -4px;
|
|
563
|
-
min-width: 16px;
|
|
564
|
-
height: 16px;
|
|
565
|
-
padding: 0 4px;
|
|
566
|
-
border-radius: 4px;
|
|
567
|
-
background: var(--accent);
|
|
568
|
-
color: #fff;
|
|
569
|
-
font-size: 10px;
|
|
570
|
-
font-weight: 700;
|
|
571
|
-
line-height: 16px;
|
|
572
|
-
text-align: center;
|
|
573
|
-
pointer-events: none;
|
|
574
|
-
z-index: 3;
|
|
575
|
-
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);
|
|
576
|
-
animation: tool-palette-hotkey-in 0.12s ease-out;
|
|
577
|
-
}
|
|
578
|
-
@keyframes tool-palette-hotkey-in {
|
|
579
|
-
from { opacity: 0; transform: scale(0.7); }
|
|
580
|
-
to { opacity: 1; transform: scale(1); }
|
|
581
|
-
}
|
|
582
|
-
|
|
583
|
-
/* Right-click context menu on palette tiles. Mirrors .session-ctx-menu. */
|
|
584
|
-
.tool-palette-ctx-menu {
|
|
585
|
-
position: fixed;
|
|
586
|
-
background: var(--sidebar-bg);
|
|
587
|
-
border: 1px solid var(--border);
|
|
588
|
-
border-radius: 10px;
|
|
589
|
-
padding: 4px 0;
|
|
590
|
-
min-width: 180px;
|
|
591
|
-
box-shadow: 0 4px 16px rgba(var(--shadow-rgb), 0.4);
|
|
592
|
-
z-index: 9999;
|
|
593
|
-
font-family: inherit;
|
|
594
|
-
}
|
|
595
|
-
.tool-palette-ctx-item {
|
|
596
|
-
display: flex;
|
|
597
|
-
align-items: center;
|
|
598
|
-
width: 100%;
|
|
599
|
-
padding: 8px 12px;
|
|
600
|
-
font-size: 13px;
|
|
601
|
-
color: var(--text-secondary);
|
|
602
|
-
background: none;
|
|
603
|
-
border: none;
|
|
604
|
-
font-family: inherit;
|
|
605
|
-
cursor: pointer;
|
|
606
|
-
text-align: left;
|
|
607
|
-
transition: background 0.15s;
|
|
608
|
-
}
|
|
609
|
-
.tool-palette-ctx-item:hover {
|
|
610
|
-
background: rgba(var(--overlay-rgb), 0.05);
|
|
611
|
-
}
|
|
612
|
-
/* --- Sessions header (pinned above scroll) --- */
|
|
395
|
+
/* --- Sessions header (pinned above scroll): New session --- */
|
|
613
396
|
#sidebar-sessions-header {
|
|
614
397
|
flex-shrink: 0;
|
|
615
398
|
}
|
|
616
399
|
|
|
617
400
|
.sidebar-sessions-header-row {
|
|
618
|
-
display: flex;
|
|
619
|
-
align-items: center;
|
|
620
|
-
padding: 4px 8px 2px 12px;
|
|
621
|
-
gap: 8px;
|
|
622
|
-
}
|
|
623
|
-
|
|
624
|
-
/* --- Session search --- */
|
|
625
|
-
.sidebar-sessions-search-inline {
|
|
626
401
|
position: relative;
|
|
627
|
-
margin-left: auto;
|
|
628
|
-
width: 150px;
|
|
629
|
-
}
|
|
630
|
-
|
|
631
|
-
.sidebar-sessions-search-inline.hidden {
|
|
632
|
-
display: none;
|
|
633
|
-
}
|
|
634
|
-
|
|
635
|
-
.sidebar-sessions-header-row .sidebar-section-label {
|
|
636
|
-
padding: 0;
|
|
637
|
-
color: var(--text-muted);
|
|
638
|
-
}
|
|
639
|
-
|
|
640
|
-
.session-filter-count {
|
|
641
|
-
display: inline-flex;
|
|
642
|
-
align-items: center;
|
|
643
|
-
justify-content: center;
|
|
644
|
-
min-width: 18px;
|
|
645
|
-
height: 18px;
|
|
646
|
-
padding: 0 6px;
|
|
647
|
-
border-radius: 999px;
|
|
648
|
-
background: rgba(var(--overlay-rgb), 0.08);
|
|
649
|
-
color: var(--text-dimmer);
|
|
650
|
-
font-size: 10px;
|
|
651
|
-
font-weight: 600;
|
|
652
|
-
line-height: 1;
|
|
653
|
-
}
|
|
654
|
-
|
|
655
|
-
.session-filter-count.hidden {
|
|
656
|
-
display: none;
|
|
657
|
-
}
|
|
658
|
-
|
|
659
|
-
.sidebar-sessions-header-row > #session-header-search-btn {
|
|
660
|
-
margin-left: auto;
|
|
661
|
-
display: inline-flex;
|
|
662
|
-
align-items: center;
|
|
663
|
-
justify-content: center;
|
|
664
|
-
width: 22px;
|
|
665
|
-
height: 22px;
|
|
666
|
-
border: none;
|
|
667
|
-
border-radius: 6px;
|
|
668
|
-
background: transparent;
|
|
669
|
-
color: var(--text-dimmer);
|
|
670
|
-
cursor: pointer;
|
|
671
|
-
padding: 0;
|
|
672
|
-
opacity: 0.45;
|
|
673
|
-
transition: color 0.15s, background 0.15s, opacity 0.15s;
|
|
674
|
-
}
|
|
675
|
-
|
|
676
|
-
.sidebar-sessions-header-row > #session-header-search-btn.active,
|
|
677
|
-
.sidebar-sessions-header-row > #session-header-search-btn:hover {
|
|
678
|
-
color: var(--text);
|
|
679
|
-
background: var(--sidebar-hover);
|
|
680
|
-
opacity: 1;
|
|
681
|
-
}
|
|
682
|
-
|
|
683
|
-
.sidebar-sessions-header-row > #session-header-search-btn .lucide,
|
|
684
|
-
.sidebar-sessions-header-row > #session-header-search-btn svg {
|
|
685
|
-
width: 14px;
|
|
686
|
-
height: 14px;
|
|
687
|
-
}
|
|
688
|
-
|
|
689
|
-
.sidebar-sessions-search-inline:not(.hidden) + #session-header-search-btn {
|
|
690
|
-
margin-left: 0;
|
|
691
|
-
}
|
|
692
|
-
|
|
693
|
-
.sidebar-sessions-search-inline input {
|
|
694
|
-
width: 100%;
|
|
695
|
-
padding: 6px 28px 6px 10px;
|
|
696
|
-
border-radius: 8px;
|
|
697
|
-
border: 1px solid var(--border);
|
|
698
|
-
background: var(--input-bg);
|
|
699
|
-
color: var(--text);
|
|
700
|
-
font-size: 12px;
|
|
701
|
-
font-family: inherit;
|
|
702
|
-
outline: none;
|
|
703
|
-
transition: border-color 0.15s;
|
|
704
|
-
box-sizing: border-box;
|
|
705
|
-
}
|
|
706
|
-
|
|
707
|
-
.sidebar-sessions-search-inline input:focus {
|
|
708
|
-
border-color: var(--accent);
|
|
709
|
-
}
|
|
710
|
-
|
|
711
|
-
.sidebar-sessions-search-inline input::placeholder {
|
|
712
|
-
color: var(--text-dimmer);
|
|
713
|
-
}
|
|
714
|
-
|
|
715
|
-
.sidebar-sessions-search-inline button {
|
|
716
|
-
position: absolute;
|
|
717
|
-
right: 6px;
|
|
718
|
-
top: 50%;
|
|
719
|
-
transform: translateY(-50%);
|
|
720
402
|
display: flex;
|
|
721
403
|
align-items: center;
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
height: 20px;
|
|
725
|
-
border: none;
|
|
726
|
-
background: transparent;
|
|
727
|
-
color: var(--text-dimmer);
|
|
728
|
-
cursor: pointer;
|
|
729
|
-
padding: 0;
|
|
730
|
-
border-radius: 4px;
|
|
731
|
-
transition: color 0.15s, background 0.15s;
|
|
732
|
-
}
|
|
733
|
-
|
|
734
|
-
.sidebar-sessions-search-inline button.hidden {
|
|
735
|
-
display: none;
|
|
404
|
+
padding: 0 8px 0 8px;
|
|
405
|
+
gap: 4px;
|
|
736
406
|
}
|
|
737
407
|
|
|
738
|
-
.sidebar-sessions-search-inline button .lucide { width: 14px; height: 14px; }
|
|
739
|
-
.sidebar-sessions-search-inline button:hover { color: var(--text); background: var(--sidebar-hover); }
|
|
740
|
-
|
|
741
408
|
.session-item.search-match {
|
|
742
409
|
background: color-mix(in srgb, var(--link) 9%, transparent);
|
|
743
410
|
color: var(--text);
|
|
@@ -1133,11 +800,6 @@
|
|
|
1133
800
|
padding-right: 0;
|
|
1134
801
|
}
|
|
1135
802
|
|
|
1136
|
-
.session-item:has(.session-presence) .session-item-text {
|
|
1137
|
-
padding-right: 54px;
|
|
1138
|
-
}
|
|
1139
|
-
|
|
1140
|
-
.session-item:has(.session-presence) .session-item-age,
|
|
1141
803
|
.session-item:has(.session-unread-badge.has-unread) .session-item-age,
|
|
1142
804
|
.session-item:hover .session-item-age,
|
|
1143
805
|
.session-item:focus-within .session-item-age {
|
|
@@ -1213,132 +875,6 @@
|
|
|
1213
875
|
pointer-events: none;
|
|
1214
876
|
}
|
|
1215
877
|
|
|
1216
|
-
.session-top-actions {
|
|
1217
|
-
display: grid;
|
|
1218
|
-
grid-template-columns: minmax(0, 1fr);
|
|
1219
|
-
gap: 2px;
|
|
1220
|
-
padding: 0 0 2px;
|
|
1221
|
-
}
|
|
1222
|
-
|
|
1223
|
-
.session-top-action {
|
|
1224
|
-
display: flex;
|
|
1225
|
-
align-items: center;
|
|
1226
|
-
gap: 10px;
|
|
1227
|
-
width: 100%;
|
|
1228
|
-
min-height: 34px;
|
|
1229
|
-
padding: 0 12px;
|
|
1230
|
-
border: none;
|
|
1231
|
-
border-radius: 10px;
|
|
1232
|
-
background: transparent;
|
|
1233
|
-
color: var(--text-secondary);
|
|
1234
|
-
font-family: inherit;
|
|
1235
|
-
font-size: 13px;
|
|
1236
|
-
font-weight: 500;
|
|
1237
|
-
cursor: pointer;
|
|
1238
|
-
text-align: left;
|
|
1239
|
-
min-width: 0;
|
|
1240
|
-
opacity: 1;
|
|
1241
|
-
transition: background 0.15s, color 0.15s, opacity 0.15s;
|
|
1242
|
-
}
|
|
1243
|
-
|
|
1244
|
-
.session-top-action .lucide,
|
|
1245
|
-
.session-top-action svg {
|
|
1246
|
-
width: 14px;
|
|
1247
|
-
height: 14px;
|
|
1248
|
-
flex-shrink: 0;
|
|
1249
|
-
}
|
|
1250
|
-
|
|
1251
|
-
.session-top-action-icon {
|
|
1252
|
-
width: 18px;
|
|
1253
|
-
height: 18px;
|
|
1254
|
-
flex-shrink: 0;
|
|
1255
|
-
border-radius: 4px;
|
|
1256
|
-
object-fit: cover;
|
|
1257
|
-
}
|
|
1258
|
-
|
|
1259
|
-
.session-top-action:hover {
|
|
1260
|
-
background: var(--sidebar-hover);
|
|
1261
|
-
color: var(--text);
|
|
1262
|
-
opacity: 1;
|
|
1263
|
-
}
|
|
1264
|
-
|
|
1265
|
-
.session-top-action:focus-visible {
|
|
1266
|
-
outline: 2px solid var(--accent);
|
|
1267
|
-
outline-offset: 2px;
|
|
1268
|
-
}
|
|
1269
|
-
|
|
1270
|
-
/* Primary creation action with an adjacent icon-only provider selector. */
|
|
1271
|
-
.session-top-action-split {
|
|
1272
|
-
display: flex;
|
|
1273
|
-
flex-wrap: nowrap;
|
|
1274
|
-
align-items: stretch;
|
|
1275
|
-
gap: 0;
|
|
1276
|
-
min-width: 0;
|
|
1277
|
-
}
|
|
1278
|
-
|
|
1279
|
-
.session-top-action-split .split-main {
|
|
1280
|
-
flex: 1 1 auto;
|
|
1281
|
-
width: auto;
|
|
1282
|
-
min-width: 0;
|
|
1283
|
-
padding: 0 9px;
|
|
1284
|
-
gap: 6px;
|
|
1285
|
-
font-size: 12px;
|
|
1286
|
-
line-height: 1.2;
|
|
1287
|
-
border: 1px solid var(--border-subtle);
|
|
1288
|
-
background: color-mix(in srgb, var(--sidebar-hover) 46%, transparent);
|
|
1289
|
-
color: var(--text);
|
|
1290
|
-
font-weight: 500;
|
|
1291
|
-
white-space: normal;
|
|
1292
|
-
text-align: left;
|
|
1293
|
-
border-radius: 9px 0 0 9px;
|
|
1294
|
-
}
|
|
1295
|
-
|
|
1296
|
-
.session-top-action-split .split-main:hover {
|
|
1297
|
-
border-color: var(--border);
|
|
1298
|
-
background: var(--sidebar-hover);
|
|
1299
|
-
}
|
|
1300
|
-
|
|
1301
|
-
.session-top-action-split .split-provider {
|
|
1302
|
-
flex: 0 0 26px;
|
|
1303
|
-
width: 26px;
|
|
1304
|
-
min-width: 26px;
|
|
1305
|
-
padding: 0;
|
|
1306
|
-
border: 1px solid var(--border-subtle);
|
|
1307
|
-
border-left-color: var(--border);
|
|
1308
|
-
background: color-mix(in srgb, var(--sidebar-hover) 46%, transparent);
|
|
1309
|
-
border-radius: 0 9px 9px 0;
|
|
1310
|
-
display: inline-flex;
|
|
1311
|
-
align-items: center;
|
|
1312
|
-
gap: 2px;
|
|
1313
|
-
justify-content: center;
|
|
1314
|
-
}
|
|
1315
|
-
|
|
1316
|
-
.session-top-action-split .split-provider:hover {
|
|
1317
|
-
background: var(--sidebar-hover);
|
|
1318
|
-
}
|
|
1319
|
-
|
|
1320
|
-
.session-create-provider-icon {
|
|
1321
|
-
width: 16px;
|
|
1322
|
-
height: 16px;
|
|
1323
|
-
margin-right: 0;
|
|
1324
|
-
border-radius: 4px;
|
|
1325
|
-
object-fit: cover;
|
|
1326
|
-
}
|
|
1327
|
-
|
|
1328
|
-
.session-create-provider-chevron {
|
|
1329
|
-
display: inline-flex;
|
|
1330
|
-
}
|
|
1331
|
-
|
|
1332
|
-
.session-create-provider-chevron .lucide,
|
|
1333
|
-
.session-create-provider-chevron svg {
|
|
1334
|
-
width: 14px;
|
|
1335
|
-
height: 14px;
|
|
1336
|
-
}
|
|
1337
|
-
|
|
1338
|
-
.session-create-provider[aria-expanded="true"] {
|
|
1339
|
-
background: var(--sidebar-hover);
|
|
1340
|
-
}
|
|
1341
|
-
|
|
1342
878
|
.session-favorites-section {
|
|
1343
879
|
min-height: 6px;
|
|
1344
880
|
margin: 0 8px;
|
|
@@ -1366,24 +902,6 @@
|
|
|
1366
902
|
background: var(--sidebar-bg);
|
|
1367
903
|
}
|
|
1368
904
|
|
|
1369
|
-
.session-favorites-divider {
|
|
1370
|
-
position: relative;
|
|
1371
|
-
margin: 0 12px 2px;
|
|
1372
|
-
height: 18px;
|
|
1373
|
-
border-radius: 999px;
|
|
1374
|
-
}
|
|
1375
|
-
|
|
1376
|
-
.session-favorites-divider::before {
|
|
1377
|
-
content: "";
|
|
1378
|
-
position: absolute;
|
|
1379
|
-
left: 0;
|
|
1380
|
-
right: 0;
|
|
1381
|
-
top: 50%;
|
|
1382
|
-
height: 1px;
|
|
1383
|
-
background: var(--border-subtle, var(--border));
|
|
1384
|
-
transform: translateY(-50%);
|
|
1385
|
-
}
|
|
1386
|
-
|
|
1387
905
|
.session-favorites-section.drag-hover,
|
|
1388
906
|
.session-regular-drop.drag-hover {
|
|
1389
907
|
background: color-mix(in srgb, var(--accent) 10%, transparent);
|
|
@@ -1398,11 +916,6 @@
|
|
|
1398
916
|
color: var(--text);
|
|
1399
917
|
}
|
|
1400
918
|
|
|
1401
|
-
.session-favorites-divider.drag-hover::before {
|
|
1402
|
-
background: var(--accent);
|
|
1403
|
-
height: 2px;
|
|
1404
|
-
}
|
|
1405
|
-
|
|
1406
919
|
.session-regular-drop {
|
|
1407
920
|
min-height: 12px;
|
|
1408
921
|
border-radius: 12px;
|
|
@@ -1449,18 +962,11 @@
|
|
|
1449
962
|
|
|
1450
963
|
/* --- Session presence avatars (multi-user) --- */
|
|
1451
964
|
.session-presence {
|
|
1452
|
-
display: flex;
|
|
965
|
+
display: inline-flex;
|
|
1453
966
|
align-items: center;
|
|
1454
|
-
flex
|
|
1455
|
-
|
|
1456
|
-
|
|
1457
|
-
|
|
1458
|
-
.session-item .session-presence {
|
|
1459
|
-
position: absolute;
|
|
1460
|
-
right: 30px;
|
|
1461
|
-
top: 50%;
|
|
1462
|
-
transform: translateY(-50%);
|
|
1463
|
-
margin-right: 0;
|
|
967
|
+
flex: 0 0 auto;
|
|
968
|
+
min-width: 0;
|
|
969
|
+
margin-left: 1px;
|
|
1464
970
|
}
|
|
1465
971
|
|
|
1466
972
|
.session-presence-avatar {
|
|
@@ -1472,6 +978,7 @@
|
|
|
1472
978
|
object-fit: cover;
|
|
1473
979
|
transition: filter 0.15s;
|
|
1474
980
|
}
|
|
981
|
+
.session-presence-avatar + .session-presence-avatar { margin-left: -6px; }
|
|
1475
982
|
|
|
1476
983
|
.session-presence-avatar:hover {
|
|
1477
984
|
filter: brightness(1.3);
|
|
@@ -1517,36 +1024,12 @@
|
|
|
1517
1024
|
.session-ctx-item.session-ctx-delete { color: var(--error); }
|
|
1518
1025
|
.session-ctx-item.session-ctx-delete:hover { background: var(--error-8); }
|
|
1519
1026
|
|
|
1520
|
-
/* --- New-session vendor picker --- */
|
|
1521
|
-
.session-new-menu { min-width: 200px; }
|
|
1522
|
-
.session-new-vendor-row { display: flex; align-items: stretch; }
|
|
1523
|
-
.session-new-vendor-row .session-new-vendor { flex: 1 1 auto; min-width: 0; }
|
|
1524
|
-
.session-new-set-default { border: 0; background: transparent; color: var(--text-dimmer); padding: 0 8px; font-size: 10px; cursor: pointer; }
|
|
1525
|
-
.session-new-set-default:hover { color: var(--text); background: rgba(var(--overlay-rgb), 0.05); }
|
|
1526
|
-
.session-new-set-default:disabled { opacity: 0.55; cursor: wait; }
|
|
1527
|
-
.session-new-preference-status { padding: 6px 10px; color: var(--error); font-size: 11px; }
|
|
1528
|
-
.session-new-fallback-note { color: var(--text-muted); border-bottom: 1px solid var(--border); }
|
|
1529
|
-
|
|
1530
1027
|
.session-ctx-sep {
|
|
1531
1028
|
height: 1px;
|
|
1532
1029
|
margin: 4px 0;
|
|
1533
1030
|
background: var(--border);
|
|
1534
1031
|
}
|
|
1535
1032
|
|
|
1536
|
-
.session-new-vendor .session-new-vendor-name { flex: 1 1 auto; min-width: 0; }
|
|
1537
|
-
.session-new-vendor.active { color: var(--text); font-weight: 600; }
|
|
1538
|
-
|
|
1539
|
-
/* Uninstalled vendors stay clickable on purpose: the click opens the
|
|
1540
|
-
vendor's homepage instead of creating a session. */
|
|
1541
|
-
.session-new-vendor.disabled { opacity: 0.45; }
|
|
1542
|
-
.session-new-vendor.disabled:hover { opacity: 0.7; }
|
|
1543
|
-
|
|
1544
|
-
.session-new-vendor-note {
|
|
1545
|
-
font-size: 11px;
|
|
1546
|
-
color: var(--text-dimmer);
|
|
1547
|
-
white-space: nowrap;
|
|
1548
|
-
}
|
|
1549
|
-
|
|
1550
1033
|
/* --- Session inline rename --- */
|
|
1551
1034
|
.session-rename-input {
|
|
1552
1035
|
width: 100%;
|
package/lib/public/index.html
CHANGED
|
@@ -208,13 +208,7 @@
|
|
|
208
208
|
</div>
|
|
209
209
|
<div id="sidebar">
|
|
210
210
|
<div id="sidebar-tools">
|
|
211
|
-
<div
|
|
212
|
-
<span class="sidebar-section-label">Tools</span>
|
|
213
|
-
<span class="sidebar-tools-hint" data-palette="session" title="Show keyboard hotkeys"></span>
|
|
214
|
-
<button type="button" class="tool-palette-edit-btn" data-palette="session" aria-label="Edit tool palette" title="Edit palette"><i data-lucide="pencil"></i></button>
|
|
215
|
-
</div>
|
|
216
|
-
<div id="session-actions"></div>
|
|
217
|
-
<div id="session-actions-hidden" class="tool-palette-hidden-section hidden"></div>
|
|
211
|
+
<div id="session-actions" role="group" aria-label="Tools"></div>
|
|
218
212
|
<!-- Repository placard. Hidden until a real Git repository is
|
|
219
213
|
confirmed, so non-Git projects and pending detection show
|
|
220
214
|
nothing rather than an empty block. -->
|
|
@@ -228,13 +222,7 @@
|
|
|
228
222
|
<div id="sidebar-sessions-header">
|
|
229
223
|
<div id="sessions-header-content">
|
|
230
224
|
<div class="sidebar-sessions-header-row">
|
|
231
|
-
<span class="sidebar-section-label">Sessions</span>
|
|
232
|
-
<span id="session-filter-count" class="session-filter-count hidden"></span>
|
|
233
|
-
<div id="session-header-search-inline" class="sidebar-sessions-search-inline hidden">
|
|
234
|
-
<input id="session-header-search-input" type="text" placeholder="Search sessions..." autocomplete="off" spellcheck="false" />
|
|
235
|
-
<button id="session-header-search-clear" type="button" aria-label="Clear search"><i data-lucide="x"></i></button>
|
|
236
|
-
</div>
|
|
237
|
-
<button id="session-header-search-btn" type="button" aria-label="Search sessions" title="Search sessions"><i data-lucide="search"></i></button>
|
|
225
|
+
<span class="sidebar-section-label sidebar-label-sr">Sessions</span>
|
|
238
226
|
</div>
|
|
239
227
|
</div>
|
|
240
228
|
<div id="files-header-content" class="hidden"></div>
|
|
@@ -294,13 +282,7 @@
|
|
|
294
282
|
<button id="mate-sidebar-toggle-btn" class="sidebar-collapse-btn" title="Collapse sidebar"><i data-lucide="panel-left-close"></i></button>
|
|
295
283
|
</div>
|
|
296
284
|
<div id="mate-sidebar-tools-wrap">
|
|
297
|
-
<div
|
|
298
|
-
<span class="sidebar-section-label">Tools</span>
|
|
299
|
-
<span class="sidebar-tools-hint" data-palette="mate" title="Show keyboard hotkeys"></span>
|
|
300
|
-
<button type="button" class="tool-palette-edit-btn" data-palette="mate" aria-label="Edit tool palette" title="Edit palette"><i data-lucide="pencil"></i></button>
|
|
301
|
-
</div>
|
|
302
|
-
<div id="mate-sidebar-tools"></div>
|
|
303
|
-
<div id="mate-sidebar-tools-hidden" class="tool-palette-hidden-section hidden"></div>
|
|
285
|
+
<div id="mate-sidebar-tools" role="group" aria-label="Tools"></div>
|
|
304
286
|
</div>
|
|
305
287
|
<div id="mate-sidebar-conversations">
|
|
306
288
|
<div class="mate-sidebar-sessions-header">
|