ligarb 0.4.0 → 0.6.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ab265966761408e494e47dbc0e00d188d86d99d881be30d5055af5d2abe29ef0
4
- data.tar.gz: ecca92d4ca8f601b2c24be43694b92b5f56b37e1787f3c84540e37f2d111551f
3
+ metadata.gz: 4aa971885dcefac0f440b02705cc3cb0adb88fcbf21c38cc23bed207887f30dc
4
+ data.tar.gz: 155c53e158b727d4e7c5ef5b012b980e32106e54e737c8c55b4f3953c08caeb2
5
5
  SHA512:
6
- metadata.gz: 9c9be72721b4753bcd00ac2bd5125bc7e4c5361f8c4773ca0c7183a4a0ca5ae80a663d82ac231a0e5b64d70e79f16f7af9de3367a857207d840cb7cf4f5efb6a
7
- data.tar.gz: 70a5189e3b2758b9a1c145ec34502a6402ec7b72f79454f7ed1bf56cfc0881d38a9f56fffbb7b5d96259b0e18151a5cf2dcaf4649ea97f1bb6ff0f49e0636c7d
6
+ metadata.gz: a04d10091801975a7029c762a81fed663b685710634a29320b8f6cd0a149297627e1c6fc2d28efd0c69d6fd44576ec5c535764b88fdcd62411ad0ec4f06dae35
7
+ data.tar.gz: b60a0faef98596347c5c4e6b25b2737a00a47b9998124a562d2d1b918648e1ad46560008e84426cc216d286d6e432d528e14d9f3f1ac3be595cab1463c5fbc54
data/assets/review.css ADDED
@@ -0,0 +1,682 @@
1
+ /* ligarb serve — review UI styles */
2
+
3
+ /* ── Reload Button ── */
4
+
5
+ #ligarb-reload {
6
+ position: fixed;
7
+ bottom: 20px;
8
+ right: 20px;
9
+ z-index: 10000;
10
+ width: 44px;
11
+ height: 44px;
12
+ border-radius: 50%;
13
+ border: 1px solid var(--color-border, #e0e0e0);
14
+ background: var(--color-bg, #fff);
15
+ color: var(--color-text, #333);
16
+ font-size: 22px;
17
+ cursor: pointer;
18
+ box-shadow: 0 2px 8px rgba(0,0,0,0.12);
19
+ display: flex;
20
+ align-items: center;
21
+ justify-content: center;
22
+ transition: transform 0.2s, box-shadow 0.2s;
23
+ }
24
+
25
+ #ligarb-reload:hover {
26
+ transform: scale(1.1);
27
+ box-shadow: 0 4px 12px rgba(0,0,0,0.18);
28
+ }
29
+
30
+ #ligarb-reload.has-update {
31
+ animation: ligarb-pulse 1s ease-in-out infinite;
32
+ border-color: var(--color-accent, #2563eb);
33
+ color: var(--color-accent, #2563eb);
34
+ }
35
+
36
+ #ligarb-reload.refreshing {
37
+ animation: ligarb-spin 0.8s linear infinite;
38
+ opacity: 0.6;
39
+ pointer-events: none;
40
+ }
41
+
42
+ @keyframes ligarb-pulse {
43
+ 0%, 100% { box-shadow: 0 2px 8px rgba(37,99,235,0.2); }
44
+ 50% { box-shadow: 0 2px 16px rgba(37,99,235,0.5); }
45
+ }
46
+
47
+ @keyframes ligarb-spin {
48
+ from { transform: rotate(0deg); }
49
+ to { transform: rotate(360deg); }
50
+ }
51
+
52
+ /* ── Review List Button ── */
53
+
54
+ #ligarb-list-btn {
55
+ position: fixed;
56
+ bottom: 20px;
57
+ right: 74px;
58
+ z-index: 10000;
59
+ width: 44px;
60
+ height: 44px;
61
+ border-radius: 50%;
62
+ border: 1px solid var(--color-border, #e0e0e0);
63
+ background: var(--color-bg, #fff);
64
+ color: var(--color-text, #333);
65
+ font-size: 20px;
66
+ cursor: pointer;
67
+ box-shadow: 0 2px 8px rgba(0,0,0,0.12);
68
+ display: flex;
69
+ align-items: center;
70
+ justify-content: center;
71
+ transition: transform 0.2s;
72
+ }
73
+
74
+ #ligarb-list-btn:hover {
75
+ transform: scale(1.1);
76
+ }
77
+
78
+ #ligarb-list-btn.has-open {
79
+ border-color: #f59e0b;
80
+ color: #f59e0b;
81
+ animation: ligarb-nudge 2s ease-in-out 3;
82
+ }
83
+
84
+ @keyframes ligarb-nudge {
85
+ 0%, 100% { transform: scale(1); }
86
+ 15% { transform: scale(1.15); }
87
+ 30% { transform: scale(1); }
88
+ }
89
+
90
+ #ligarb-badge {
91
+ position: absolute;
92
+ top: -4px;
93
+ right: -4px;
94
+ background: #ef4444;
95
+ color: #fff;
96
+ font-size: 11px;
97
+ font-weight: 700;
98
+ min-width: 18px;
99
+ height: 18px;
100
+ border-radius: 9px;
101
+ display: flex;
102
+ align-items: center;
103
+ justify-content: center;
104
+ padding: 0 4px;
105
+ }
106
+
107
+ /* ── Comment Button (on text selection) ── */
108
+
109
+ #ligarb-comment-btn {
110
+ position: absolute;
111
+ z-index: 10001;
112
+ background: var(--color-accent, #2563eb);
113
+ color: #fff;
114
+ border: none;
115
+ border-radius: 4px;
116
+ padding: 4px 12px;
117
+ font-size: 13px;
118
+ cursor: pointer;
119
+ box-shadow: 0 2px 6px rgba(0,0,0,0.2);
120
+ }
121
+
122
+ #ligarb-comment-btn:hover {
123
+ opacity: 0.9;
124
+ }
125
+
126
+ /* ── Review Panel (Thread View) ── */
127
+
128
+ #ligarb-panel {
129
+ position: fixed;
130
+ top: 0;
131
+ right: -380px;
132
+ width: 370px;
133
+ height: 100vh;
134
+ z-index: 10002;
135
+ background: var(--color-bg, #fff);
136
+ border-left: 1px solid var(--color-border, #e0e0e0);
137
+ box-shadow: -4px 0 16px rgba(0,0,0,0.1);
138
+ display: flex;
139
+ flex-direction: column;
140
+ transition: right 0.25s ease;
141
+ font-family: var(--font-sans, system-ui, sans-serif);
142
+ }
143
+
144
+ #ligarb-panel.open {
145
+ right: 0;
146
+ }
147
+
148
+ .ligarb-panel-header {
149
+ display: flex;
150
+ align-items: center;
151
+ justify-content: space-between;
152
+ padding: 12px 16px;
153
+ border-bottom: 1px solid var(--color-border, #e0e0e0);
154
+ flex-shrink: 0;
155
+ }
156
+
157
+ .ligarb-panel-title {
158
+ font-weight: 600;
159
+ font-size: 15px;
160
+ }
161
+
162
+ .ligarb-panel-close {
163
+ background: none;
164
+ border: none;
165
+ font-size: 22px;
166
+ cursor: pointer;
167
+ color: var(--color-text-muted, #666);
168
+ padding: 0 4px;
169
+ line-height: 1;
170
+ }
171
+
172
+ .ligarb-panel-close:hover {
173
+ color: var(--color-text, #333);
174
+ }
175
+
176
+ .ligarb-panel-body {
177
+ display: flex;
178
+ flex-direction: column;
179
+ flex: 1;
180
+ overflow: hidden;
181
+ }
182
+
183
+ /* ── Context (selected text) ── */
184
+
185
+ .ligarb-context {
186
+ padding: 12px 16px;
187
+ border-bottom: 1px solid var(--color-border, #e0e0e0);
188
+ flex-shrink: 0;
189
+ }
190
+
191
+ .ligarb-selected-text {
192
+ font-style: italic;
193
+ color: var(--color-text-muted, #666);
194
+ font-size: 13px;
195
+ line-height: 1.5;
196
+ max-height: 80px;
197
+ overflow-y: auto;
198
+ }
199
+
200
+ .ligarb-meta {
201
+ font-size: 12px;
202
+ color: var(--color-text-muted, #999);
203
+ margin-top: 4px;
204
+ }
205
+
206
+ .ligarb-file-path {
207
+ font-size: 10px;
208
+ color: var(--color-text-muted, #999);
209
+ margin-top: 2px;
210
+ }
211
+
212
+ .ligarb-file-path summary {
213
+ cursor: pointer;
214
+ opacity: 0.5;
215
+ }
216
+
217
+ .ligarb-file-path code {
218
+ font-size: 10px;
219
+ word-break: break-all;
220
+ user-select: all;
221
+ }
222
+
223
+ /* ── Messages ── */
224
+
225
+ .ligarb-messages {
226
+ flex: 1;
227
+ overflow-y: auto;
228
+ padding: 12px 16px;
229
+ }
230
+
231
+ .ligarb-message {
232
+ margin-bottom: 14px;
233
+ padding: 10px 12px;
234
+ border-radius: 8px;
235
+ font-size: 14px;
236
+ line-height: 1.6;
237
+ }
238
+
239
+ .ligarb-message-user {
240
+ background: var(--color-accent-light, #eff6ff);
241
+ margin-left: 20px;
242
+ }
243
+
244
+ .ligarb-message-assistant {
245
+ background: var(--color-code-bg, #f6f8fa);
246
+ margin-right: 20px;
247
+ }
248
+
249
+ .ligarb-message-role {
250
+ font-size: 11px;
251
+ font-weight: 700;
252
+ text-transform: uppercase;
253
+ color: var(--color-text-muted, #666);
254
+ margin-bottom: 4px;
255
+ }
256
+
257
+ .ligarb-message-content {
258
+ word-wrap: break-word;
259
+ }
260
+
261
+ .ligarb-message-content code {
262
+ background: var(--color-code-bg, #f0f0f0);
263
+ padding: 1px 4px;
264
+ border-radius: 3px;
265
+ font-size: 13px;
266
+ }
267
+
268
+ .ligarb-message-time {
269
+ font-size: 11px;
270
+ color: var(--color-text-muted, #999);
271
+ margin-top: 4px;
272
+ }
273
+
274
+ /* ── Patch display ── */
275
+
276
+ .ligarb-patch {
277
+ margin: 8px 0;
278
+ border-radius: 6px;
279
+ overflow: hidden;
280
+ font-family: var(--font-mono, monospace);
281
+ font-size: 12px;
282
+ line-height: 1.5;
283
+ border: 1px solid var(--color-border, #e0e0e0);
284
+ }
285
+
286
+ .ligarb-patch-toggle {
287
+ display: inline-block;
288
+ margin-top: 6px;
289
+ padding: 3px 10px;
290
+ font-size: 12px;
291
+ border: 1px solid var(--color-border, #e0e0e0);
292
+ border-radius: 4px;
293
+ background: var(--color-code-bg, #f6f8fa);
294
+ color: var(--color-accent, #2563eb);
295
+ cursor: pointer;
296
+ }
297
+
298
+ .ligarb-patch-toggle:hover {
299
+ background: var(--color-accent-light, #eff6ff);
300
+ }
301
+
302
+ .ligarb-patch-container {
303
+ display: none;
304
+ margin-top: 6px;
305
+ }
306
+
307
+ .ligarb-patch-container.open {
308
+ display: block;
309
+ }
310
+
311
+ .ligarb-patch-file {
312
+ padding: 4px 8px;
313
+ background: var(--color-bg-secondary, #f6f8fa);
314
+ color: var(--color-text-secondary, #586069);
315
+ font-size: 0.85em;
316
+ font-family: monospace;
317
+ border-bottom: 1px solid var(--color-border, #e0e0e0);
318
+ }
319
+
320
+ [data-theme="dark"] .ligarb-patch-file {
321
+ background: rgba(255, 255, 255, 0.05);
322
+ color: #8b949e;
323
+ }
324
+
325
+ .ligarb-patch-del {
326
+ padding: 6px 8px;
327
+ background: #ffeef0;
328
+ color: #b31d28;
329
+ white-space: pre-wrap;
330
+ }
331
+
332
+ .ligarb-patch-add {
333
+ padding: 6px 8px;
334
+ background: #e6ffec;
335
+ color: #22863a;
336
+ white-space: pre-wrap;
337
+ border-top: 1px solid var(--color-border, #e0e0e0);
338
+ }
339
+
340
+ [data-theme="dark"] .ligarb-patch-del {
341
+ background: rgba(179, 29, 40, 0.15);
342
+ color: #f97583;
343
+ }
344
+
345
+ [data-theme="dark"] .ligarb-patch-add {
346
+ background: rgba(34, 134, 58, 0.15);
347
+ color: #85e89d;
348
+ }
349
+
350
+ .ligarb-loading {
351
+ text-align: center;
352
+ color: var(--color-text-muted, #999);
353
+ padding: 20px;
354
+ font-size: 14px;
355
+ }
356
+
357
+ .ligarb-thinking {
358
+ opacity: 0.7;
359
+ }
360
+
361
+ .ligarb-dots::before {
362
+ content: '●●●';
363
+ letter-spacing: 2px;
364
+ animation: ligarb-blink 1.4s infinite;
365
+ font-size: 8px;
366
+ vertical-align: middle;
367
+ }
368
+
369
+ @keyframes ligarb-blink {
370
+ 0%, 80%, 100% { opacity: 0.2; }
371
+ 40% { opacity: 1; }
372
+ }
373
+
374
+ .ligarb-error {
375
+ background: #fef2f2;
376
+ color: #b91c1c;
377
+ border: 1px solid #fca5a5;
378
+ border-radius: 6px;
379
+ padding: 8px 12px;
380
+ font-size: 13px;
381
+ }
382
+
383
+ [data-theme="dark"] .ligarb-error {
384
+ background: #451a1a;
385
+ color: #fca5a5;
386
+ border-color: #7f1d1d;
387
+ }
388
+
389
+ /* ── File Attachment ── */
390
+
391
+ .ligarb-file-area {
392
+ display: flex;
393
+ align-items: flex-start;
394
+ gap: 6px;
395
+ margin-top: 6px;
396
+ flex-wrap: wrap;
397
+ }
398
+
399
+ .ligarb-file-btn {
400
+ background: none;
401
+ border: 1px solid var(--color-border, #e0e0e0);
402
+ border-radius: 4px;
403
+ padding: 2px 8px;
404
+ font-size: 16px;
405
+ cursor: pointer;
406
+ color: var(--color-text-muted, #666);
407
+ flex-shrink: 0;
408
+ line-height: 1.4;
409
+ }
410
+
411
+ .ligarb-file-btn:hover {
412
+ border-color: var(--color-accent, #2563eb);
413
+ color: var(--color-accent, #2563eb);
414
+ }
415
+
416
+ .ligarb-file-names {
417
+ display: flex;
418
+ flex-wrap: wrap;
419
+ gap: 4px;
420
+ flex: 1;
421
+ min-width: 0;
422
+ }
423
+
424
+ .ligarb-file-tag {
425
+ display: inline-flex;
426
+ align-items: center;
427
+ gap: 4px;
428
+ padding: 2px 8px;
429
+ background: var(--color-accent-light, #eff6ff);
430
+ border-radius: 4px;
431
+ font-size: 12px;
432
+ color: var(--color-text, #333);
433
+ max-width: 100%;
434
+ overflow: hidden;
435
+ text-overflow: ellipsis;
436
+ white-space: nowrap;
437
+ }
438
+
439
+ .ligarb-file-tag a {
440
+ color: var(--color-text-muted, #999);
441
+ text-decoration: none;
442
+ font-size: 14px;
443
+ flex-shrink: 0;
444
+ }
445
+
446
+ .ligarb-file-tag a:hover {
447
+ color: #c62828;
448
+ }
449
+
450
+ .ligarb-input.dragover {
451
+ border-color: var(--color-accent, #2563eb);
452
+ background: var(--color-accent-light, #eff6ff);
453
+ }
454
+
455
+ /* ── Input Area ── */
456
+
457
+ .ligarb-input-area {
458
+ padding: 12px 16px;
459
+ border-top: 1px solid var(--color-border, #e0e0e0);
460
+ flex-shrink: 0;
461
+ }
462
+
463
+ .ligarb-input {
464
+ width: 100%;
465
+ border: 1px solid var(--color-border, #e0e0e0);
466
+ border-radius: 6px;
467
+ padding: 8px 10px;
468
+ font-size: 14px;
469
+ font-family: inherit;
470
+ resize: vertical;
471
+ background: var(--color-bg, #fff);
472
+ color: var(--color-text, #333);
473
+ box-sizing: border-box;
474
+ }
475
+
476
+ .ligarb-input:focus {
477
+ outline: none;
478
+ border-color: var(--color-accent, #2563eb);
479
+ }
480
+
481
+ .ligarb-input:disabled {
482
+ opacity: 0.5;
483
+ }
484
+
485
+ .ligarb-actions {
486
+ display: flex;
487
+ gap: 8px;
488
+ margin-top: 8px;
489
+ }
490
+
491
+ .ligarb-btn {
492
+ padding: 6px 14px;
493
+ border-radius: 4px;
494
+ border: 1px solid var(--color-border, #e0e0e0);
495
+ font-size: 13px;
496
+ cursor: pointer;
497
+ background: var(--color-bg, #fff);
498
+ color: var(--color-text, #333);
499
+ transition: background 0.15s;
500
+ }
501
+
502
+ .ligarb-btn:hover {
503
+ background: var(--color-code-bg, #f6f8fa);
504
+ }
505
+
506
+ .ligarb-btn:disabled {
507
+ opacity: 0.4;
508
+ cursor: not-allowed;
509
+ }
510
+
511
+ .ligarb-btn-send {
512
+ background: var(--color-accent, #2563eb);
513
+ color: #fff;
514
+ border-color: var(--color-accent, #2563eb);
515
+ }
516
+
517
+ .ligarb-btn-send:hover {
518
+ opacity: 0.9;
519
+ background: var(--color-accent, #2563eb);
520
+ }
521
+
522
+ .ligarb-btn-approve {
523
+ background: #16a34a;
524
+ color: #fff;
525
+ border-color: #16a34a;
526
+ }
527
+
528
+ .ligarb-btn-approve:hover {
529
+ opacity: 0.9;
530
+ background: #16a34a;
531
+ }
532
+
533
+ /* ── Review List Panel ── */
534
+
535
+ #ligarb-list-panel {
536
+ position: fixed;
537
+ top: 0;
538
+ right: -380px;
539
+ width: 370px;
540
+ height: 100vh;
541
+ z-index: 10001;
542
+ background: var(--color-bg, #fff);
543
+ border-left: 1px solid var(--color-border, #e0e0e0);
544
+ box-shadow: -4px 0 16px rgba(0,0,0,0.1);
545
+ display: flex;
546
+ flex-direction: column;
547
+ transition: right 0.25s ease;
548
+ font-family: var(--font-sans, system-ui, sans-serif);
549
+ }
550
+
551
+ #ligarb-list-panel.open {
552
+ right: 0;
553
+ }
554
+
555
+ .ligarb-list-body {
556
+ flex: 1;
557
+ overflow-y: auto;
558
+ padding: 8px;
559
+ }
560
+
561
+ .ligarb-list-empty {
562
+ text-align: center;
563
+ color: var(--color-text-muted, #999);
564
+ padding: 30px;
565
+ font-size: 14px;
566
+ }
567
+
568
+ .ligarb-list-item {
569
+ padding: 10px 12px;
570
+ border-radius: 6px;
571
+ margin-bottom: 4px;
572
+ cursor: pointer;
573
+ transition: background 0.15s;
574
+ }
575
+
576
+ .ligarb-list-item:hover {
577
+ background: var(--color-code-bg, #f6f8fa);
578
+ }
579
+
580
+ .ligarb-list-item-header {
581
+ display: flex;
582
+ align-items: flex-start;
583
+ gap: 8px;
584
+ }
585
+
586
+ .ligarb-list-status {
587
+ flex-shrink: 0;
588
+ font-size: 10px;
589
+ }
590
+
591
+ .ligarb-list-open .ligarb-list-status {
592
+ color: #f59e0b;
593
+ }
594
+
595
+ .ligarb-list-applied .ligarb-list-status {
596
+ color: #16a34a;
597
+ }
598
+
599
+ .ligarb-list-closed .ligarb-list-status {
600
+ color: var(--color-text-muted, #999);
601
+ }
602
+
603
+ .ligarb-list-text {
604
+ font-size: 13px;
605
+ line-height: 1.4;
606
+ color: var(--color-text, #333);
607
+ overflow: hidden;
608
+ text-overflow: ellipsis;
609
+ white-space: nowrap;
610
+ }
611
+
612
+ .ligarb-list-item-meta {
613
+ font-size: 11px;
614
+ color: var(--color-text-muted, #999);
615
+ margin-top: 4px;
616
+ padding-left: 18px;
617
+ }
618
+
619
+ /* ── Review Highlights in Document ── */
620
+
621
+ mark.ligarb-highlight {
622
+ background: rgba(245, 158, 11, 0.25);
623
+ border-bottom: 2px solid #f59e0b;
624
+ cursor: pointer;
625
+ border-radius: 2px;
626
+ transition: background 0.15s;
627
+ }
628
+
629
+ mark.ligarb-highlight:hover {
630
+ background: rgba(245, 158, 11, 0.45);
631
+ }
632
+
633
+ /* ── Dark Mode ── */
634
+
635
+ [data-theme="dark"] #ligarb-reload,
636
+ [data-theme="dark"] #ligarb-list-btn {
637
+ background: var(--color-bg);
638
+ color: var(--color-text);
639
+ border-color: var(--color-border);
640
+ }
641
+
642
+ [data-theme="dark"] #ligarb-panel,
643
+ [data-theme="dark"] #ligarb-list-panel {
644
+ background: var(--color-bg);
645
+ border-color: var(--color-border);
646
+ }
647
+
648
+ [data-theme="dark"] .ligarb-message-user {
649
+ background: rgba(37, 99, 235, 0.15);
650
+ }
651
+
652
+ [data-theme="dark"] .ligarb-message-assistant {
653
+ background: var(--color-code-bg);
654
+ }
655
+
656
+ [data-theme="dark"] .ligarb-input {
657
+ background: var(--color-bg);
658
+ color: var(--color-text);
659
+ border-color: var(--color-border);
660
+ }
661
+
662
+ [data-theme="dark"] mark.ligarb-highlight {
663
+ background: rgba(245, 158, 11, 0.2);
664
+ border-bottom-color: #d97706;
665
+ }
666
+
667
+ [data-theme="dark"] mark.ligarb-highlight:hover {
668
+ background: rgba(245, 158, 11, 0.35);
669
+ }
670
+
671
+ /* ── Print: hide review UI ── */
672
+
673
+ @media print {
674
+ #ligarb-reload,
675
+ #ligarb-list-btn,
676
+ #ligarb-comment-btn,
677
+ #ligarb-panel,
678
+ #ligarb-list-panel,
679
+ mark.ligarb-highlight {
680
+ display: none !important;
681
+ }
682
+ }