openclacky 0.9.32 → 0.9.34

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.
@@ -339,6 +339,7 @@ body {
339
339
  flex: 1;
340
340
  white-space: nowrap;
341
341
  }
342
+
342
343
  /* ── Split button [+ ▾] ─────────────────────────────────────────────────── */
343
344
  .btn-split-wrap {
344
345
  position: relative;
@@ -386,7 +387,7 @@ body {
386
387
  position: absolute;
387
388
  top: calc(100% + 4px);
388
389
  right: 0;
389
- min-width: 150px;
390
+ min-width: 180px;
390
391
  background: var(--color-bg-card);
391
392
  border: 1px solid var(--color-border-primary);
392
393
  border-radius: 7px;
@@ -397,121 +398,20 @@ body {
397
398
  }
398
399
  .new-session-dropdown[hidden] { display: none; }
399
400
  .dropdown-item {
400
- padding: 7px 14px;
401
- font-size: 13px;
402
- color: var(--color-text-primary);
401
+ padding: 4px 10px;
402
+ font-size: 11px;
403
+ color: var(--color-text-secondary);
403
404
  cursor: pointer;
404
405
  white-space: nowrap;
405
- transition: background 0.12s;
406
+ transition: all 0.12s;
407
+ display: flex;
408
+ align-items: center;
406
409
  }
407
410
  .dropdown-item:hover {
408
411
  background: var(--color-bg-hover);
409
412
  color: var(--color-accent-primary);
410
413
  }
411
414
 
412
- .dropdown-divider {
413
- height: 1px;
414
- background: var(--color-border-primary);
415
- margin: 4px 0;
416
- }
417
-
418
- /* ── New Project inline panel ────────────────────────────────────────────── */
419
- .new-project-panel {
420
- overflow: hidden;
421
- max-height: 0;
422
- opacity: 0;
423
- transition: max-height 0.2s ease, opacity 0.15s ease;
424
- padding: 0 10px;
425
- }
426
- .new-project-panel.panel--open {
427
- max-height: 160px;
428
- opacity: 1;
429
- padding: 6px 10px 8px;
430
- }
431
-
432
- .new-project-card {
433
- border: 1px solid var(--color-accent-primary);
434
- border-radius: 8px;
435
- background: var(--color-bg-secondary);
436
- padding: 10px 12px 10px;
437
- display: flex;
438
- flex-direction: column;
439
- gap: 8px;
440
- }
441
-
442
- .new-project-title {
443
- font-size: 12px;
444
- font-weight: 600;
445
- color: var(--color-text-primary);
446
- }
447
-
448
- .new-project-field {
449
- display: flex;
450
- flex-direction: column;
451
- gap: 3px;
452
- }
453
-
454
- .new-project-label {
455
- font-size: 10px;
456
- color: var(--color-text-muted);
457
- font-weight: 500;
458
- letter-spacing: 0.2px;
459
- }
460
-
461
- .new-project-input {
462
- width: 100%;
463
- box-sizing: border-box;
464
- padding: 5px 8px;
465
- font-size: 12px;
466
- font-family: var(--font-mono, monospace);
467
- border: 1px solid var(--color-border-primary);
468
- border-radius: 5px;
469
- background: var(--color-bg-primary);
470
- color: var(--color-text-primary);
471
- outline: none;
472
- transition: border-color 0.15s;
473
- }
474
- .new-project-input:focus {
475
- border-color: var(--color-accent-primary);
476
- }
477
- .new-project-input::placeholder {
478
- color: var(--color-text-muted);
479
- }
480
-
481
- .new-project-actions {
482
- display: flex;
483
- justify-content: flex-end;
484
- gap: 6px;
485
- }
486
-
487
- .btn-new-project-cancel {
488
- padding: 4px 10px;
489
- font-size: 12px;
490
- border: 1px solid var(--color-border-primary);
491
- border-radius: 5px;
492
- background: transparent;
493
- color: var(--color-text-secondary);
494
- cursor: pointer;
495
- transition: background 0.12s;
496
- }
497
- .btn-new-project-cancel:hover {
498
- background: var(--color-bg-hover);
499
- }
500
-
501
- .btn-new-project-create {
502
- padding: 4px 12px;
503
- font-size: 12px;
504
- border: none;
505
- border-radius: 5px;
506
- background: var(--color-accent-primary);
507
- color: #fff;
508
- cursor: pointer;
509
- font-weight: 600;
510
- transition: opacity 0.12s;
511
- }
512
- .btn-new-project-create:hover { opacity: 0.88; }
513
- .btn-new-project-create:disabled { opacity: 0.5; cursor: not-allowed; }
514
-
515
415
  /* ── Session source badge ────────────────────────────────────────────────── */
516
416
  .session-badge {
517
417
  display: inline-block;
@@ -841,6 +741,82 @@ body {
841
741
  border-radius: 0 2px 2px 0;
842
742
  }
843
743
 
744
+ /* Actions button (⋯) on session list items — visible only on hover */
745
+ .session-actions-btn {
746
+ flex-shrink: 0;
747
+ display: none;
748
+ align-items: center;
749
+ justify-content: center;
750
+ width: 18px;
751
+ height: 18px;
752
+ background: transparent;
753
+ border: none;
754
+ border-radius: 3px;
755
+ color: var(--color-text-muted);
756
+ font-size: 14px;
757
+ line-height: 1;
758
+ cursor: pointer;
759
+ padding: 0;
760
+ margin-top: -3px;
761
+ transition: background .15s, color .15s;
762
+ font-weight: bold;
763
+ letter-spacing: -1px;
764
+ }
765
+ .session-item:hover .session-actions-btn { display: flex; }
766
+ .session-actions-btn:hover {
767
+ background: var(--color-bg-hover);
768
+ color: var(--color-text-primary);
769
+ }
770
+
771
+ /* Pin icon in session name */
772
+ .session-pin-icon {
773
+ flex-shrink: 0;
774
+ font-size: 11px;
775
+ opacity: 0.7;
776
+ margin-left: 2px;
777
+ }
778
+ .session-item.active .session-pin-icon {
779
+ opacity: 1;
780
+ }
781
+
782
+ /* Actions menu dropdown */
783
+ .session-actions-menu {
784
+ background: var(--color-bg-secondary);
785
+ border: 1px solid var(--color-border-primary);
786
+ border-radius: 6px;
787
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
788
+ padding: 3px;
789
+ min-width: 120px;
790
+ z-index: 1000;
791
+ animation: fadeIn 0.15s ease;
792
+ }
793
+ [data-theme="dark"] .session-actions-menu {
794
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.4);
795
+ }
796
+ .session-actions-menu-item {
797
+ padding: 6px 10px;
798
+ border-radius: 4px;
799
+ cursor: pointer;
800
+ color: var(--color-text-primary);
801
+ font-size: 12px;
802
+ transition: background .15s;
803
+ user-select: none;
804
+ }
805
+ .session-actions-menu-item:hover {
806
+ background: var(--color-bg-hover);
807
+ }
808
+ .session-actions-menu-item--danger {
809
+ color: var(--color-error);
810
+ }
811
+ .session-actions-menu-item--danger:hover {
812
+ background: var(--color-error-bg);
813
+ }
814
+
815
+ @keyframes fadeIn {
816
+ from { opacity: 0; transform: translateY(-4px); }
817
+ to { opacity: 1; transform: translateY(0); }
818
+ }
819
+
844
820
  /* Delete button on session list items — visible only on hover */
845
821
  .session-delete-btn {
846
822
  flex-shrink: 0;
@@ -1595,7 +1571,36 @@ body {
1595
1571
  }
1596
1572
  .msg-idle-status { color: var(--color-accent-primary); animation: pulse 1.2s infinite; }
1597
1573
  .msg-idle-status.msg-idle-done { color: var(--color-text-secondary); animation: none; opacity: 0.7; }
1598
- .msg-error { background: var(--color-error-bg); border: 1px solid var(--color-error); color: var(--color-error); align-self: flex-start; }
1574
+ .msg-error {
1575
+ background: rgba(255, 59, 48, 0.08);
1576
+ border: 1px solid rgba(255, 59, 48, 0.25);
1577
+ color: var(--color-error);
1578
+ align-self: flex-start;
1579
+ display: flex;
1580
+ flex-direction: column;
1581
+ gap: 12px;
1582
+ }
1583
+ .msg-error .retry-btn {
1584
+ align-self: flex-start;
1585
+ padding: 8px 16px;
1586
+ background: var(--color-bg-primary);
1587
+ color: var(--color-text-primary);
1588
+ border: 1px solid var(--color-border);
1589
+ border-radius: 6px;
1590
+ cursor: pointer;
1591
+ font-size: 14px;
1592
+ font-weight: 500;
1593
+ transition: all 0.2s;
1594
+ }
1595
+ .msg-error .retry-btn:hover:not(:disabled) {
1596
+ background: var(--color-bg-secondary);
1597
+ border-color: var(--color-accent-primary);
1598
+ color: var(--color-accent-primary);
1599
+ }
1600
+ .msg-error .retry-btn:disabled {
1601
+ opacity: 0.5;
1602
+ cursor: not-allowed;
1603
+ }
1599
1604
  .msg-success { color: var(--color-success); align-self: flex-start; font-size: 13px; }
1600
1605
  .tool-name { color: var(--color-warning); font-weight: 600; }
1601
1606
  .progress-msg { color: var(--color-accent-primary); font-size: 12px; align-self: center; animation: pulse 1.2s infinite; }
@@ -1874,13 +1879,8 @@ body {
1874
1879
  opacity: 1;
1875
1880
  }
1876
1881
 
1877
- /* Detail fields: hidden by default, revealed on hover */
1882
+ /* Show all fields by default, not just on hover */
1878
1883
  .sib-detail {
1879
- display: none;
1880
- align-items: center;
1881
- }
1882
-
1883
- #session-info-bar:hover .sib-detail {
1884
1884
  display: contents;
1885
1885
  }
1886
1886
 
@@ -1907,11 +1907,14 @@ body {
1907
1907
  }
1908
1908
 
1909
1909
  #sib-dir {
1910
- overflow: hidden;
1911
- text-overflow: ellipsis;
1912
- max-width: 220px;
1913
- flex-shrink: 1;
1914
- min-width: 0;
1910
+ flex-shrink: 0;
1911
+ cursor: pointer;
1912
+ border-radius: 3px;
1913
+ transition: all 0.15s ease;
1914
+ }
1915
+ #sib-dir:hover {
1916
+ background: var(--color-bg-hover);
1917
+ color: var(--color-accent-primary);
1915
1918
  }
1916
1919
 
1917
1920
  #sib-mode { opacity: 0.7; flex-shrink: 0; }
@@ -1919,6 +1922,68 @@ body {
1919
1922
  #sib-tasks,
1920
1923
  #sib-cost { flex-shrink: 0; }
1921
1924
 
1925
+ /* Model name dropdown in session info bar */
1926
+ #sib-model-wrap {
1927
+ position: relative;
1928
+ }
1929
+ .sib-model-clickable {
1930
+ cursor: pointer;
1931
+ border-radius: 3px;
1932
+ transition: all 0.15s ease;
1933
+ }
1934
+ .sib-model-clickable:hover {
1935
+ background: var(--color-bg-hover);
1936
+ opacity: 1 !important;
1937
+ color: var(--color-accent-primary);
1938
+ }
1939
+ .sib-model-dropdown {
1940
+ position: fixed;
1941
+ /* Position will be calculated dynamically via JavaScript */
1942
+ min-width: 200px;
1943
+ max-width: 280px;
1944
+ background: var(--color-bg-secondary);
1945
+ border: 1px solid var(--color-border-primary);
1946
+ border-radius: 8px;
1947
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.4);
1948
+ z-index: 1000;
1949
+ max-height: 300px;
1950
+ overflow-y: auto;
1951
+ }
1952
+ .sib-model-option {
1953
+ padding: 9px 14px;
1954
+ font-size: 12px;
1955
+ color: var(--color-text-primary);
1956
+ cursor: pointer;
1957
+ transition: background-color 0.15s ease;
1958
+ font-family: var(--font-mono, monospace);
1959
+ display: flex;
1960
+ align-items: center;
1961
+ justify-content: space-between;
1962
+ }
1963
+ .sib-model-option:hover {
1964
+ background: var(--color-bg-hover);
1965
+ color: var(--color-accent-primary);
1966
+ }
1967
+ .sib-model-option.current {
1968
+ background: var(--color-bg-hover);
1969
+ font-weight: 600;
1970
+ }
1971
+ .sib-model-option .model-badge {
1972
+ font-size: 9px;
1973
+ padding: 2px 5px;
1974
+ border-radius: 3px;
1975
+ margin-left: 8px;
1976
+ opacity: 0.8;
1977
+ }
1978
+ .sib-model-option .model-badge.default {
1979
+ background: rgba(63, 185, 80, 0.12);
1980
+ color: #2da44e;
1981
+ }
1982
+ .sib-model-option .model-badge.lite {
1983
+ background: rgba(59, 130, 246, 0.1);
1984
+ color: var(--color-accent-primary);
1985
+ }
1986
+
1922
1987
  /* ── Input area (wraps preview strip + input bar) ────────────────────────── */
1923
1988
  #ws-disconnect-hint {
1924
1989
  position: absolute;
@@ -2701,6 +2766,69 @@ body {
2701
2766
  color: var(--color-accent-primary);
2702
2767
  }
2703
2768
 
2769
+ /* Model name combobox */
2770
+ .model-name-combobox {
2771
+ position: relative;
2772
+ display: flex;
2773
+ gap: 0;
2774
+ }
2775
+ .model-name-combobox .model-name-input {
2776
+ flex: 1;
2777
+ border-top-right-radius: 0;
2778
+ border-bottom-right-radius: 0;
2779
+ border-right: none;
2780
+ }
2781
+ .model-name-combobox .model-name-dropdown-btn {
2782
+ background: var(--color-bg-primary);
2783
+ border: 1px solid var(--color-border-primary);
2784
+ border-top-right-radius: 6px;
2785
+ border-bottom-right-radius: 6px;
2786
+ color: var(--color-text-secondary);
2787
+ padding: 0 8px;
2788
+ cursor: pointer;
2789
+ flex-shrink: 0;
2790
+ display: flex;
2791
+ align-items: center;
2792
+ justify-content: center;
2793
+ transition: all 0.15s ease;
2794
+ }
2795
+ .model-name-combobox .model-name-dropdown-btn:hover {
2796
+ background: var(--color-bg-hover);
2797
+ color: var(--color-text-primary);
2798
+ }
2799
+ .model-name-dropdown {
2800
+ position: absolute;
2801
+ top: calc(100% + 4px);
2802
+ left: 0;
2803
+ right: 0;
2804
+ background: var(--color-bg-secondary);
2805
+ border: 1px solid var(--color-border-primary);
2806
+ border-radius: 8px;
2807
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.3);
2808
+ max-height: 280px;
2809
+ overflow-y: auto;
2810
+ z-index: 1000;
2811
+ }
2812
+ .model-dropdown-option {
2813
+ padding: 8px 12px;
2814
+ font-size: 13px;
2815
+ color: var(--color-text-primary);
2816
+ cursor: pointer;
2817
+ transition: background-color 0.15s ease;
2818
+ font-family: 'SF Mono', 'Monaco', 'Inconsolata', 'Fira Code', 'Courier New', monospace;
2819
+ }
2820
+ .model-dropdown-option:hover {
2821
+ background: var(--color-bg-hover);
2822
+ color: var(--color-accent-primary);
2823
+ }
2824
+ .model-dropdown-empty {
2825
+ padding: 12px;
2826
+ font-size: 12px;
2827
+ color: var(--color-text-secondary);
2828
+ text-align: center;
2829
+ font-style: italic;
2830
+ }
2831
+
2704
2832
  /* Model card footer */
2705
2833
  .model-card-footer {
2706
2834
  display: flex;
@@ -2776,6 +2904,136 @@ body {
2776
2904
  .btn-danger { background: var(--color-error); color: #fff; border: none; border-radius: 6px; padding: 8px 20px; cursor: pointer; }
2777
2905
  .btn-danger:hover { background: var(--color-error); }
2778
2906
 
2907
+ /* Prompt modal input */
2908
+ .prompt-modal-input {
2909
+ width: 100%;
2910
+ background: var(--color-bg-primary);
2911
+ border: 1px solid var(--color-border-primary);
2912
+ border-radius: 6px;
2913
+ padding: 10px 12px;
2914
+ font-size: 14px;
2915
+ color: var(--color-text-primary);
2916
+ font-family: inherit;
2917
+ outline: none;
2918
+ margin-bottom: 16px;
2919
+ transition: border-color 0.2s ease;
2920
+ }
2921
+ .prompt-modal-input:focus {
2922
+ border-color: var(--color-accent-primary);
2923
+ }
2924
+
2925
+ /* New Session Modal */
2926
+ .new-session-modal {
2927
+ max-width: 520px;
2928
+ }
2929
+ .modal-header {
2930
+ display: flex;
2931
+ align-items: center;
2932
+ justify-content: space-between;
2933
+ margin-bottom: 20px;
2934
+ }
2935
+ .modal-close-btn {
2936
+ background: transparent;
2937
+ border: none;
2938
+ font-size: 28px;
2939
+ line-height: 1;
2940
+ color: var(--color-text-secondary);
2941
+ cursor: pointer;
2942
+ padding: 0;
2943
+ width: 24px;
2944
+ height: 24px;
2945
+ display: flex;
2946
+ align-items: center;
2947
+ justify-content: center;
2948
+ }
2949
+ .modal-close-btn:hover {
2950
+ color: var(--color-text-primary);
2951
+ }
2952
+ .modal-body {
2953
+ display: flex;
2954
+ flex-direction: column;
2955
+ gap: 16px;
2956
+ }
2957
+ .modal-field {
2958
+ display: flex;
2959
+ flex-direction: column;
2960
+ gap: 6px;
2961
+ }
2962
+ .modal-label {
2963
+ font-size: 13px;
2964
+ font-weight: 500;
2965
+ color: var(--color-text-primary);
2966
+ }
2967
+ .modal-input, .modal-select {
2968
+ background: var(--color-bg-primary);
2969
+ border: 1px solid var(--color-border-primary);
2970
+ border-radius: 6px;
2971
+ color: var(--color-text-primary);
2972
+ padding: 9px 12px;
2973
+ font-size: 13px;
2974
+ font-family: inherit;
2975
+ width: 100%;
2976
+ }
2977
+ .modal-input:focus, .modal-select:focus {
2978
+ outline: none;
2979
+ border-color: var(--color-accent-primary);
2980
+ }
2981
+ .modal-select {
2982
+ cursor: pointer;
2983
+ appearance: none;
2984
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%238b949e' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
2985
+ background-repeat: no-repeat;
2986
+ background-position: right 12px center;
2987
+ padding-right: 32px;
2988
+ }
2989
+ .modal-input-row {
2990
+ display: flex;
2991
+ gap: 8px;
2992
+ }
2993
+ .modal-input-row .modal-input {
2994
+ flex: 1;
2995
+ }
2996
+ .modal-browse-btn {
2997
+ background: var(--color-bg-primary);
2998
+ border: 1px solid var(--color-border-primary);
2999
+ border-radius: 6px;
3000
+ padding: 0 12px;
3001
+ font-size: 16px;
3002
+ cursor: pointer;
3003
+ flex-shrink: 0;
3004
+ transition: all 0.15s ease;
3005
+ }
3006
+ .modal-browse-btn:hover {
3007
+ background: var(--color-bg-hover);
3008
+ }
3009
+ .modal-field-checkbox {
3010
+ display: flex;
3011
+ align-items: center;
3012
+ padding-top: 4px;
3013
+ }
3014
+ .modal-checkbox-label {
3015
+ display: flex;
3016
+ align-items: center;
3017
+ gap: 8px;
3018
+ cursor: pointer;
3019
+ font-size: 13px;
3020
+ color: var(--color-text-primary);
3021
+ }
3022
+ .modal-checkbox {
3023
+ width: 16px;
3024
+ height: 16px;
3025
+ cursor: pointer;
3026
+ accent-color: var(--color-accent-primary);
3027
+ }
3028
+ .modal-footer {
3029
+ display: flex;
3030
+ gap: 10px;
3031
+ justify-content: flex-end;
3032
+ margin-top: 20px;
3033
+ padding-top: 20px;
3034
+ border-top: 1px solid var(--color-border-primary);
3035
+ }
3036
+
2779
3037
  /* ── Form elements ───────────────────────────────────────────────────────── */
2780
3038
  .form-group { margin-bottom: 12px; }
2781
3039
  .form-label { font-size: 12px; color: var(--color-text-secondary); margin-bottom: 4px; display: block; }
@@ -5447,12 +5705,13 @@ body.setup-mode[data-theme="dark"] {
5447
5705
  #session-info-bar .sib-detail {
5448
5706
  display: contents;
5449
5707
  }
5450
- /* Hide less-important fields and their orphaned separators */
5708
+ /* Hide less-important fields and their separators (element + sib-sep-after-element pattern) */
5451
5709
  #sib-id,
5452
- .sib-sep-before-id,
5710
+ .sib-sep-after-id,
5453
5711
  #sib-dir,
5454
- #sib-mode-wrap,
5455
- .sib-sep-before-tasks {
5712
+ .sib-sep-after-dir,
5713
+ #sib-mode,
5714
+ .sib-sep-after-mode {
5456
5715
  display: none;
5457
5716
  }
5458
5717
  .sib-sep {