@unity-china/codely-cli 1.0.0-beta.39 → 1.0.0-beta.41

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.
@@ -0,0 +1,761 @@
1
+ :root {
2
+ color-scheme: dark;
3
+
4
+ --bg: #0f111a;
5
+ --panel: #151a27;
6
+ --panel-2: #101521;
7
+ --border: rgba(255, 255, 255, 0.08);
8
+ --text: rgba(255, 255, 255, 0.92);
9
+ --muted: rgba(255, 255, 255, 0.62);
10
+ --subtle: rgba(255, 255, 255, 0.12);
11
+
12
+ --accent: #7aa2f7;
13
+ --accent-2: #bb9af7;
14
+ --ok: #9ece6a;
15
+ --warn: #e0af68;
16
+ --err: #f7768e;
17
+
18
+ --shadow: 0 16px 50px rgba(0, 0, 0, 0.45);
19
+ --radius: 8px;
20
+ --radius-sm: 6px;
21
+
22
+ --mono:
23
+ ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono',
24
+ 'Courier New', monospace;
25
+ --sans:
26
+ ui-sans-serif, system-ui, -apple-system, Segoe UI, Roboto, Helvetica, Arial,
27
+ 'Apple Color Emoji', 'Segoe UI Emoji';
28
+ }
29
+
30
+ * {
31
+ box-sizing: border-box;
32
+ }
33
+
34
+ html,
35
+ body {
36
+ height: 100%;
37
+ }
38
+
39
+ #app {
40
+ height: 100%;
41
+ min-height: 0;
42
+ }
43
+
44
+ body {
45
+ margin: 0;
46
+ background:
47
+ radial-gradient(1200px 800px at 10% 0%, #1b2140 0%, transparent 60%),
48
+ radial-gradient(900px 700px at 90% 10%, #2a1b40 0%, transparent 55%),
49
+ var(--bg);
50
+ color: var(--text);
51
+ font-family: var(--sans);
52
+ overflow: hidden;
53
+ }
54
+
55
+ a {
56
+ color: var(--accent);
57
+ text-decoration: none;
58
+ }
59
+ a:hover {
60
+ text-decoration: underline;
61
+ }
62
+
63
+ button,
64
+ input,
65
+ textarea {
66
+ font-family: inherit;
67
+ }
68
+
69
+ .app {
70
+ height: 100%;
71
+ display: flex;
72
+ padding: 12px;
73
+ min-height: 0;
74
+ min-width: 0;
75
+ position: relative;
76
+ overflow: hidden;
77
+ }
78
+
79
+ .main {
80
+ flex: 1;
81
+ background:
82
+ linear-gradient(180deg, rgba(255, 255, 255, 0.03), transparent),
83
+ var(--panel-2);
84
+ border: 1px solid var(--border);
85
+ border-radius: var(--radius);
86
+ box-shadow: var(--shadow);
87
+ overflow: hidden;
88
+ display: flex;
89
+ flex-direction: column;
90
+ min-height: 0;
91
+ min-width: 0;
92
+ position: relative;
93
+ }
94
+
95
+ .btn {
96
+ display: inline-flex;
97
+ align-items: center;
98
+ justify-content: center;
99
+ gap: 8px;
100
+ padding: 8px 12px;
101
+ border-radius: var(--radius-sm);
102
+ border: 1px solid var(--border);
103
+ background: rgba(255, 255, 255, 0.03);
104
+ color: var(--text);
105
+ cursor: pointer;
106
+ font-size: 12px;
107
+ }
108
+ .btn:hover {
109
+ background: rgba(255, 255, 255, 0.06);
110
+ }
111
+ .btn:active {
112
+ transform: translateY(1px);
113
+ }
114
+ .btn.primary {
115
+ background: linear-gradient(
116
+ 135deg,
117
+ rgba(122, 162, 247, 0.2),
118
+ rgba(187, 154, 247, 0.16)
119
+ );
120
+ border-color: rgba(122, 162, 247, 0.35);
121
+ }
122
+ .btn.danger {
123
+ background: rgba(247, 118, 142, 0.12);
124
+ border-color: rgba(247, 118, 142, 0.28);
125
+ }
126
+
127
+ .content {
128
+ flex: 1;
129
+ overflow-y: auto;
130
+ padding: 10px 18px 80px;
131
+ min-height: 0;
132
+ min-width: 0;
133
+ overflow-anchor: auto;
134
+ scroll-padding-bottom: 80px;
135
+ }
136
+
137
+ .content > * {
138
+ margin-bottom: 8px;
139
+ }
140
+
141
+ .content > * {
142
+ margin-bottom: 12px;
143
+ }
144
+
145
+ .user-message {
146
+ padding: 4px 0;
147
+ color: var(--text);
148
+ font-weight: 500;
149
+ }
150
+
151
+ .assistant-message {
152
+ padding: 4px 0;
153
+ }
154
+
155
+ .md {
156
+ font-size: 13px;
157
+ line-height: 1.55;
158
+ color: var(--text);
159
+ }
160
+ .md p {
161
+ margin: 0 0 10px;
162
+ white-space: pre-wrap;
163
+ }
164
+ .md h1,
165
+ .md h2,
166
+ .md h3,
167
+ .md h4 {
168
+ margin: 14px 0 8px;
169
+ line-height: 1.25;
170
+ }
171
+ .md h1 {
172
+ font-size: 18px;
173
+ }
174
+ .md h2 {
175
+ font-size: 16px;
176
+ }
177
+ .md h3 {
178
+ font-size: 14px;
179
+ }
180
+ .md h4 {
181
+ font-size: 13px;
182
+ color: rgba(255, 255, 255, 0.86);
183
+ }
184
+ .md ul,
185
+ .md ol {
186
+ margin: 0 0 10px 18px;
187
+ padding: 0;
188
+ }
189
+ .md li {
190
+ margin: 4px 0;
191
+ white-space: pre-wrap;
192
+ }
193
+ .md code.inline {
194
+ font-family: var(--mono);
195
+ font-size: 12px;
196
+ padding: 2px 6px;
197
+ border-radius: 8px;
198
+ border: 1px solid var(--border);
199
+ background: rgba(255, 255, 255, 0.04);
200
+ color: rgba(187, 154, 247, 0.95);
201
+ }
202
+ .md pre {
203
+ margin: 10px 0;
204
+ padding: 12px;
205
+ border-radius: 14px;
206
+ border: 1px solid var(--border);
207
+ background: rgba(0, 0, 0, 0.3);
208
+ overflow: auto;
209
+ font-family: var(--mono);
210
+ font-size: 12px;
211
+ line-height: 1.5;
212
+ }
213
+ .md pre code {
214
+ font-family: var(--mono);
215
+ }
216
+ .md hr {
217
+ border: none;
218
+ border-top: 1px solid var(--border);
219
+ margin: 14px 0;
220
+ }
221
+ .md table {
222
+ width: 100%;
223
+ border-collapse: collapse;
224
+ margin: 10px 0;
225
+ font-size: 12px;
226
+ }
227
+ .md th,
228
+ .md td {
229
+ border: 1px solid var(--border);
230
+ padding: 8px 10px;
231
+ vertical-align: top;
232
+ }
233
+ .md th {
234
+ background: rgba(255, 255, 255, 0.03);
235
+ color: rgba(255, 255, 255, 0.86);
236
+ }
237
+ .md blockquote {
238
+ margin: 10px 0;
239
+ padding: 8px 10px;
240
+ border-left: 3px solid rgba(122, 162, 247, 0.5);
241
+ background: rgba(122, 162, 247, 0.06);
242
+ border-radius: 10px;
243
+ color: rgba(255, 255, 255, 0.86);
244
+ }
245
+
246
+ .think {
247
+ margin: 8px 0;
248
+ }
249
+ .think summary {
250
+ cursor: pointer;
251
+ padding: 4px 0;
252
+ color: rgba(255, 255, 255, 0.7);
253
+ font-size: 11px;
254
+ font-weight: 600;
255
+ user-select: none;
256
+ opacity: 0.8;
257
+ letter-spacing: 0.05em;
258
+ }
259
+ .think summary:hover {
260
+ opacity: 1;
261
+ }
262
+ .think.active {
263
+ margin: 12px 0;
264
+ }
265
+ .think-header {
266
+ font-size: 11px;
267
+ color: rgba(255, 255, 255, 0.7);
268
+ font-weight: 600;
269
+ margin-bottom: 6px;
270
+ opacity: 0.8;
271
+ letter-spacing: 0.05em;
272
+ }
273
+ .think-content,
274
+ .think pre {
275
+ margin: 0;
276
+ padding: 4px 0;
277
+ border: none;
278
+ background: transparent;
279
+ color: rgba(255, 255, 255, 0.7);
280
+ font-family: var(--mono);
281
+ font-size: 12px;
282
+ line-height: 1.3;
283
+ white-space: pre-wrap;
284
+ word-break: break-all;
285
+ }
286
+
287
+ .tool-card {
288
+ margin: 12px 0;
289
+ border-radius: var(--radius);
290
+ border: 1px solid var(--border);
291
+ background: rgba(255, 255, 255, 0.02);
292
+ overflow: hidden;
293
+ }
294
+
295
+ .planning-indicator {
296
+ font-size: 11px;
297
+ color: var(--muted);
298
+ margin: 12px 0;
299
+ font-style: italic;
300
+ background: linear-gradient(90deg, var(--muted), var(--text), var(--muted));
301
+ background-size: 200% 100%;
302
+ -webkit-background-clip: text;
303
+ -webkit-text-fill-color: transparent;
304
+ animation: shimmer-text 2s infinite linear;
305
+ opacity: 0.6;
306
+ }
307
+
308
+ @keyframes shimmer-text {
309
+ 0% {
310
+ background-position: 200% 0;
311
+ }
312
+ 100% {
313
+ background-position: -200% 0;
314
+ }
315
+ }
316
+
317
+ .shimmer {
318
+ display: none;
319
+ }
320
+
321
+ @keyframes shimmer-pulse {
322
+ 0% {
323
+ background-position: 200% 0;
324
+ transform: scale(0.9);
325
+ opacity: 0.4;
326
+ }
327
+ 50% {
328
+ transform: scale(1.1);
329
+ opacity: 0.8;
330
+ }
331
+ 100% {
332
+ background-position: -200% 0;
333
+ transform: scale(0.9);
334
+ opacity: 0.4;
335
+ }
336
+ }
337
+ .tool-card-header {
338
+ display: flex;
339
+ align-items: center;
340
+ justify-content: space-between;
341
+ gap: 10px;
342
+ padding: 6px 10px;
343
+ background: rgba(255, 255, 255, 0.03);
344
+ border-bottom: 1px solid var(--border);
345
+ }
346
+ .tool-card-title {
347
+ display: flex;
348
+ align-items: center;
349
+ gap: 10px;
350
+ min-width: 0;
351
+ }
352
+ .tool-kind {
353
+ font-family: var(--mono);
354
+ font-size: 11px;
355
+ padding: 3px 7px;
356
+ border-radius: 999px;
357
+ border: 1px solid var(--border);
358
+ color: var(--muted);
359
+ background: rgba(255, 255, 255, 0.03);
360
+ }
361
+ .tool-status {
362
+ font-size: 11px;
363
+ color: var(--muted);
364
+ }
365
+ .tool-card-body {
366
+ padding: 10px 12px;
367
+ }
368
+ .diff {
369
+ border-radius: var(--radius-sm);
370
+ border: 1px solid var(--border);
371
+ background: rgba(0, 0, 0, 0.26);
372
+ overflow: auto;
373
+ max-height: 420px;
374
+ }
375
+ .diff pre {
376
+ margin: 0;
377
+ padding: 10px 12px;
378
+ font-family: var(--mono);
379
+ font-size: 12px;
380
+ line-height: 1.45;
381
+ }
382
+ .diff .add {
383
+ color: rgba(158, 206, 106, 0.95);
384
+ }
385
+ .diff .del {
386
+ color: rgba(247, 118, 142, 0.95);
387
+ }
388
+ .diff .meta {
389
+ color: rgba(122, 162, 247, 0.92);
390
+ }
391
+ .diff .hunk {
392
+ color: rgba(224, 175, 104, 0.95);
393
+ }
394
+
395
+ .composer {
396
+ border-top: 1px solid var(--border);
397
+ padding: 12px;
398
+ background: var(--panel-2);
399
+ position: relative;
400
+ z-index: 10;
401
+ flex-shrink: 0;
402
+ }
403
+ .composer-inner {
404
+ display: block;
405
+ }
406
+ .input-wrap {
407
+ position: relative;
408
+ border: 1px solid var(--border);
409
+ border-radius: var(--radius);
410
+ background: rgba(255, 255, 255, 0.03);
411
+ /* Allow the slash command autocomplete popover to render outside the input. */
412
+ overflow: visible;
413
+ transition: all 0.2s;
414
+ }
415
+ .input-wrap:focus-within {
416
+ border-color: rgba(122, 162, 247, 0.5);
417
+ box-shadow: 0 0 0 4px rgba(122, 162, 247, 0.12);
418
+ }
419
+ textarea {
420
+ width: 100%;
421
+ min-height: 44px;
422
+ max-height: 180px;
423
+ resize: none;
424
+ padding: 11px 44px 11px 12px;
425
+ border: none;
426
+ background: transparent;
427
+ color: var(--text);
428
+ outline: none;
429
+ font-size: 13px;
430
+ line-height: 1.45;
431
+ display: block;
432
+ }
433
+
434
+ .composer-references {
435
+ display: flex;
436
+ flex-wrap: wrap;
437
+ gap: 6px;
438
+ padding: 8px 12px 0;
439
+ background: transparent;
440
+ }
441
+
442
+ .ref-chip {
443
+ display: inline-flex;
444
+ align-items: center;
445
+ gap: 6px;
446
+ padding: 4px 10px;
447
+ background: rgba(255, 255, 255, 0.05);
448
+ border: 1px solid var(--border);
449
+ border-radius: 6px;
450
+ font-size: 11px;
451
+ font-weight: 500;
452
+ color: var(--muted);
453
+ max-width: 200px;
454
+ }
455
+
456
+ .ref-label {
457
+ overflow: hidden;
458
+ text-overflow: ellipsis;
459
+ white-space: nowrap;
460
+ }
461
+
462
+ .ref-chip.file {
463
+ background: rgba(255, 255, 255, 0.08);
464
+ }
465
+
466
+ .ref-chip.link {
467
+ background: rgba(255, 255, 255, 0.08);
468
+ }
469
+
470
+ .ref-chip.default {
471
+ background: rgba(255, 255, 255, 0.04);
472
+ }
473
+
474
+ .ref-remove {
475
+ background: none;
476
+ border: none;
477
+ color: inherit;
478
+ cursor: pointer;
479
+ padding: 0;
480
+ font-size: 14px;
481
+ display: flex;
482
+ align-items: center;
483
+ justify-content: center;
484
+ opacity: 0.5;
485
+ width: 14px;
486
+ height: 14px;
487
+ }
488
+
489
+ .ref-remove:hover {
490
+ opacity: 1;
491
+ }
492
+
493
+ .composer-submit {
494
+ position: absolute;
495
+ right: 8px;
496
+ bottom: 8px;
497
+ width: 28px;
498
+ height: 28px;
499
+ border-radius: 6px;
500
+ border: none;
501
+ background: rgba(255, 255, 255, 0.1);
502
+ color: var(--text);
503
+ display: flex;
504
+ align-items: center;
505
+ justify-content: center;
506
+ cursor: pointer;
507
+ transition: all 0.2s;
508
+ z-index: 20;
509
+ opacity: 0.8;
510
+ }
511
+
512
+ .composer-submit:hover {
513
+ opacity: 1;
514
+ background: rgba(255, 255, 255, 0.15);
515
+ }
516
+
517
+ .composer-submit:active {
518
+ transform: scale(0.92);
519
+ }
520
+
521
+ .composer-submit.busy {
522
+ background: rgba(255, 255, 255, 0.15);
523
+ opacity: 1;
524
+ color: var(--err);
525
+ }
526
+
527
+ .composer-submit svg {
528
+ display: block;
529
+ }
530
+ .composer-footer {
531
+ display: flex;
532
+ align-items: center;
533
+ justify-content: space-between;
534
+ margin-top: 8px;
535
+ gap: 12px;
536
+ }
537
+
538
+ .composer-footer-right {
539
+ display: flex;
540
+ align-items: center;
541
+ gap: 12px;
542
+ }
543
+
544
+ .workspace-info {
545
+ font-size: 11px;
546
+ color: rgba(255, 255, 255, 0.35);
547
+ overflow: hidden;
548
+ text-overflow: ellipsis;
549
+ white-space: nowrap;
550
+ max-width: 50%;
551
+ }
552
+
553
+ .hint {
554
+ font-size: 11px;
555
+ color: rgba(255, 255, 255, 0.35);
556
+ font-weight: normal;
557
+ white-space: nowrap;
558
+ }
559
+
560
+ .status-bar {
561
+ display: flex;
562
+ align-items: center;
563
+ gap: 8px;
564
+ cursor: pointer;
565
+ padding: 4px 8px;
566
+ border-radius: var(--radius-sm);
567
+ transition: background 0.2s;
568
+ }
569
+ .status-bar:hover {
570
+ background: rgba(255, 255, 255, 0.04);
571
+ }
572
+
573
+ .status-text {
574
+ font-size: 11px;
575
+ color: var(--err);
576
+ opacity: 0.9;
577
+ }
578
+
579
+ .status-dot {
580
+ width: 10px;
581
+ height: 10px;
582
+ border-radius: 50%;
583
+ background: var(--subtle);
584
+ box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.04);
585
+ }
586
+ .status-dot.connected {
587
+ background: var(--ok);
588
+ box-shadow: 0 0 8px rgba(158, 206, 106, 0.4);
589
+ }
590
+ .status-dot.connecting {
591
+ background: var(--warn);
592
+ animation: pulse 1.5s infinite ease-in-out;
593
+ }
594
+ .status-dot.disconnected {
595
+ background: var(--err);
596
+ box-shadow: 0 0 8px rgba(247, 118, 142, 0.4);
597
+ }
598
+
599
+ @keyframes pulse {
600
+ 0% {
601
+ opacity: 0.4;
602
+ transform: scale(0.85);
603
+ }
604
+ 50% {
605
+ opacity: 1;
606
+ transform: scale(1.05);
607
+ }
608
+ 100% {
609
+ opacity: 0.4;
610
+ transform: scale(0.85);
611
+ }
612
+ }
613
+
614
+ .autocomplete {
615
+ position: absolute;
616
+ left: 0;
617
+ right: 0;
618
+ bottom: calc(100% + 8px);
619
+ z-index: 50;
620
+ border: 1px solid var(--border);
621
+ background: rgba(20, 24, 35, 0.95);
622
+ backdrop-filter: blur(12px);
623
+ border-radius: 12px;
624
+ overflow: hidden;
625
+ box-shadow: 0 10px 40px rgba(0, 0, 0, 0.5);
626
+ max-height: 320px;
627
+ display: flex;
628
+ flex-direction: column;
629
+ }
630
+
631
+ .ac-header {
632
+ padding: 8px 12px;
633
+ font-size: 11px;
634
+ font-weight: 700;
635
+ color: var(--muted);
636
+ text-transform: uppercase;
637
+ letter-spacing: 0.1em;
638
+ border-bottom: 1px solid var(--border);
639
+ background: rgba(255, 255, 255, 0.02);
640
+ }
641
+
642
+ .ac-item {
643
+ padding: 8px 12px;
644
+ display: flex;
645
+ flex-direction: column;
646
+ gap: 2px;
647
+ cursor: pointer;
648
+ border-bottom: 1px solid rgba(255, 255, 255, 0.03);
649
+ }
650
+
651
+ .ac-item:last-child {
652
+ border-bottom: none;
653
+ }
654
+
655
+ .ac-item:hover,
656
+ .ac-item.active {
657
+ background: rgba(122, 162, 247, 0.12);
658
+ }
659
+
660
+ .ac-name code {
661
+ font-family: var(--mono);
662
+ font-size: 13px;
663
+ font-weight: 600;
664
+ color: var(--accent);
665
+ }
666
+
667
+ .ac-desc {
668
+ font-size: 12px;
669
+ color: var(--muted);
670
+ overflow: hidden;
671
+ text-overflow: ellipsis;
672
+ white-space: nowrap;
673
+ }
674
+
675
+ .ac-item.active .ac-desc {
676
+ color: var(--text);
677
+ }
678
+
679
+ .modal-backdrop {
680
+ position: fixed;
681
+ inset: 0;
682
+ background: rgba(0, 0, 0, 0.55);
683
+ display: flex;
684
+ align-items: center;
685
+ justify-content: center;
686
+ padding: 18px;
687
+ z-index: 9999;
688
+ }
689
+ .modal {
690
+ width: min(1100px, 96vw);
691
+ max-height: 90vh;
692
+ overflow: hidden;
693
+ border-radius: 18px;
694
+ border: 1px solid var(--border);
695
+ background: rgba(16, 21, 33, 0.96);
696
+ box-shadow: var(--shadow);
697
+ display: flex;
698
+ flex-direction: column;
699
+ }
700
+ .modal-header {
701
+ padding: 12px 14px;
702
+ border-bottom: 1px solid var(--border);
703
+ display: flex;
704
+ align-items: center;
705
+ justify-content: space-between;
706
+ gap: 10px;
707
+ }
708
+ .modal-header h2 {
709
+ margin: 0;
710
+ font-size: 13px;
711
+ font-weight: 650;
712
+ }
713
+ .modal-body {
714
+ display: grid;
715
+ grid-template-columns: 1fr 1fr;
716
+ gap: 12px;
717
+ padding: 12px;
718
+ overflow: auto;
719
+ }
720
+ .modal-pane {
721
+ border: 1px solid var(--border);
722
+ border-radius: 14px;
723
+ overflow: hidden;
724
+ background: rgba(0, 0, 0, 0.18);
725
+ }
726
+ .modal-pane .pane-title {
727
+ padding: 10px 12px;
728
+ border-bottom: 1px solid var(--border);
729
+ font-size: 12px;
730
+ color: var(--muted);
731
+ }
732
+ .modal-pane textarea {
733
+ border: none;
734
+ border-radius: 0;
735
+ background: transparent;
736
+ padding: 12px;
737
+ min-height: 320px;
738
+ max-height: none;
739
+ outline: none;
740
+ font-family: var(--mono);
741
+ font-size: 12px;
742
+ }
743
+ .modal-footer {
744
+ padding: 12px 14px;
745
+ border-top: 1px solid var(--border);
746
+ display: flex;
747
+ justify-content: flex-end;
748
+ gap: 10px;
749
+ }
750
+
751
+ @media (max-width: 980px) {
752
+ .app {
753
+ grid-template-columns: 1fr;
754
+ }
755
+ .sidebar {
756
+ display: none;
757
+ }
758
+ .modal-body {
759
+ grid-template-columns: 1fr;
760
+ }
761
+ }