ligarb 0.4.0 → 0.5.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: 8e697032ff94ff3c4a910343f29d6a977bd386afaa92dbcf4dbb0ca0108e70b2
4
+ data.tar.gz: d142ecba5fb0cb7287f2206e31309c40dff8016b216f79053669f5fa8bc59c47
5
5
  SHA512:
6
- metadata.gz: 9c9be72721b4753bcd00ac2bd5125bc7e4c5361f8c4773ca0c7183a4a0ca5ae80a663d82ac231a0e5b64d70e79f16f7af9de3367a857207d840cb7cf4f5efb6a
7
- data.tar.gz: 70a5189e3b2758b9a1c145ec34502a6402ec7b72f79454f7ed1bf56cfc0881d38a9f56fffbb7b5d96259b0e18151a5cf2dcaf4649ea97f1bb6ff0f49e0636c7d
6
+ metadata.gz: 6a24c126ae03426cd2361885244882a08b5e666cd112fa77b437225a48d954adb0ec2ea59d3c620b317a9549ea78efa17bfcde367c8aed9bd69be79f6b7f45b9
7
+ data.tar.gz: b77a95db5ec9f3541349d999b9c936ddad7b65df844a3ec15f0059698e05f8973cabde8ac2b3fe60598acfa43ab866c70162bee0c1ce46bc7350be41ec195253
data/assets/review.css ADDED
@@ -0,0 +1,665 @@
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
+ /* ── Messages ── */
207
+
208
+ .ligarb-messages {
209
+ flex: 1;
210
+ overflow-y: auto;
211
+ padding: 12px 16px;
212
+ }
213
+
214
+ .ligarb-message {
215
+ margin-bottom: 14px;
216
+ padding: 10px 12px;
217
+ border-radius: 8px;
218
+ font-size: 14px;
219
+ line-height: 1.6;
220
+ }
221
+
222
+ .ligarb-message-user {
223
+ background: var(--color-accent-light, #eff6ff);
224
+ margin-left: 20px;
225
+ }
226
+
227
+ .ligarb-message-assistant {
228
+ background: var(--color-code-bg, #f6f8fa);
229
+ margin-right: 20px;
230
+ }
231
+
232
+ .ligarb-message-role {
233
+ font-size: 11px;
234
+ font-weight: 700;
235
+ text-transform: uppercase;
236
+ color: var(--color-text-muted, #666);
237
+ margin-bottom: 4px;
238
+ }
239
+
240
+ .ligarb-message-content {
241
+ word-wrap: break-word;
242
+ }
243
+
244
+ .ligarb-message-content code {
245
+ background: var(--color-code-bg, #f0f0f0);
246
+ padding: 1px 4px;
247
+ border-radius: 3px;
248
+ font-size: 13px;
249
+ }
250
+
251
+ .ligarb-message-time {
252
+ font-size: 11px;
253
+ color: var(--color-text-muted, #999);
254
+ margin-top: 4px;
255
+ }
256
+
257
+ /* ── Patch display ── */
258
+
259
+ .ligarb-patch {
260
+ margin: 8px 0;
261
+ border-radius: 6px;
262
+ overflow: hidden;
263
+ font-family: var(--font-mono, monospace);
264
+ font-size: 12px;
265
+ line-height: 1.5;
266
+ border: 1px solid var(--color-border, #e0e0e0);
267
+ }
268
+
269
+ .ligarb-patch-toggle {
270
+ display: inline-block;
271
+ margin-top: 6px;
272
+ padding: 3px 10px;
273
+ font-size: 12px;
274
+ border: 1px solid var(--color-border, #e0e0e0);
275
+ border-radius: 4px;
276
+ background: var(--color-code-bg, #f6f8fa);
277
+ color: var(--color-accent, #2563eb);
278
+ cursor: pointer;
279
+ }
280
+
281
+ .ligarb-patch-toggle:hover {
282
+ background: var(--color-accent-light, #eff6ff);
283
+ }
284
+
285
+ .ligarb-patch-container {
286
+ display: none;
287
+ margin-top: 6px;
288
+ }
289
+
290
+ .ligarb-patch-container.open {
291
+ display: block;
292
+ }
293
+
294
+ .ligarb-patch-file {
295
+ padding: 4px 8px;
296
+ background: var(--color-bg-secondary, #f6f8fa);
297
+ color: var(--color-text-secondary, #586069);
298
+ font-size: 0.85em;
299
+ font-family: monospace;
300
+ border-bottom: 1px solid var(--color-border, #e0e0e0);
301
+ }
302
+
303
+ [data-theme="dark"] .ligarb-patch-file {
304
+ background: rgba(255, 255, 255, 0.05);
305
+ color: #8b949e;
306
+ }
307
+
308
+ .ligarb-patch-del {
309
+ padding: 6px 8px;
310
+ background: #ffeef0;
311
+ color: #b31d28;
312
+ white-space: pre-wrap;
313
+ }
314
+
315
+ .ligarb-patch-add {
316
+ padding: 6px 8px;
317
+ background: #e6ffec;
318
+ color: #22863a;
319
+ white-space: pre-wrap;
320
+ border-top: 1px solid var(--color-border, #e0e0e0);
321
+ }
322
+
323
+ [data-theme="dark"] .ligarb-patch-del {
324
+ background: rgba(179, 29, 40, 0.15);
325
+ color: #f97583;
326
+ }
327
+
328
+ [data-theme="dark"] .ligarb-patch-add {
329
+ background: rgba(34, 134, 58, 0.15);
330
+ color: #85e89d;
331
+ }
332
+
333
+ .ligarb-loading {
334
+ text-align: center;
335
+ color: var(--color-text-muted, #999);
336
+ padding: 20px;
337
+ font-size: 14px;
338
+ }
339
+
340
+ .ligarb-thinking {
341
+ opacity: 0.7;
342
+ }
343
+
344
+ .ligarb-dots::before {
345
+ content: '●●●';
346
+ letter-spacing: 2px;
347
+ animation: ligarb-blink 1.4s infinite;
348
+ font-size: 8px;
349
+ vertical-align: middle;
350
+ }
351
+
352
+ @keyframes ligarb-blink {
353
+ 0%, 80%, 100% { opacity: 0.2; }
354
+ 40% { opacity: 1; }
355
+ }
356
+
357
+ .ligarb-error {
358
+ background: #fef2f2;
359
+ color: #b91c1c;
360
+ border: 1px solid #fca5a5;
361
+ border-radius: 6px;
362
+ padding: 8px 12px;
363
+ font-size: 13px;
364
+ }
365
+
366
+ [data-theme="dark"] .ligarb-error {
367
+ background: #451a1a;
368
+ color: #fca5a5;
369
+ border-color: #7f1d1d;
370
+ }
371
+
372
+ /* ── File Attachment ── */
373
+
374
+ .ligarb-file-area {
375
+ display: flex;
376
+ align-items: flex-start;
377
+ gap: 6px;
378
+ margin-top: 6px;
379
+ flex-wrap: wrap;
380
+ }
381
+
382
+ .ligarb-file-btn {
383
+ background: none;
384
+ border: 1px solid var(--color-border, #e0e0e0);
385
+ border-radius: 4px;
386
+ padding: 2px 8px;
387
+ font-size: 16px;
388
+ cursor: pointer;
389
+ color: var(--color-text-muted, #666);
390
+ flex-shrink: 0;
391
+ line-height: 1.4;
392
+ }
393
+
394
+ .ligarb-file-btn:hover {
395
+ border-color: var(--color-accent, #2563eb);
396
+ color: var(--color-accent, #2563eb);
397
+ }
398
+
399
+ .ligarb-file-names {
400
+ display: flex;
401
+ flex-wrap: wrap;
402
+ gap: 4px;
403
+ flex: 1;
404
+ min-width: 0;
405
+ }
406
+
407
+ .ligarb-file-tag {
408
+ display: inline-flex;
409
+ align-items: center;
410
+ gap: 4px;
411
+ padding: 2px 8px;
412
+ background: var(--color-accent-light, #eff6ff);
413
+ border-radius: 4px;
414
+ font-size: 12px;
415
+ color: var(--color-text, #333);
416
+ max-width: 100%;
417
+ overflow: hidden;
418
+ text-overflow: ellipsis;
419
+ white-space: nowrap;
420
+ }
421
+
422
+ .ligarb-file-tag a {
423
+ color: var(--color-text-muted, #999);
424
+ text-decoration: none;
425
+ font-size: 14px;
426
+ flex-shrink: 0;
427
+ }
428
+
429
+ .ligarb-file-tag a:hover {
430
+ color: #c62828;
431
+ }
432
+
433
+ .ligarb-input.dragover {
434
+ border-color: var(--color-accent, #2563eb);
435
+ background: var(--color-accent-light, #eff6ff);
436
+ }
437
+
438
+ /* ── Input Area ── */
439
+
440
+ .ligarb-input-area {
441
+ padding: 12px 16px;
442
+ border-top: 1px solid var(--color-border, #e0e0e0);
443
+ flex-shrink: 0;
444
+ }
445
+
446
+ .ligarb-input {
447
+ width: 100%;
448
+ border: 1px solid var(--color-border, #e0e0e0);
449
+ border-radius: 6px;
450
+ padding: 8px 10px;
451
+ font-size: 14px;
452
+ font-family: inherit;
453
+ resize: vertical;
454
+ background: var(--color-bg, #fff);
455
+ color: var(--color-text, #333);
456
+ box-sizing: border-box;
457
+ }
458
+
459
+ .ligarb-input:focus {
460
+ outline: none;
461
+ border-color: var(--color-accent, #2563eb);
462
+ }
463
+
464
+ .ligarb-input:disabled {
465
+ opacity: 0.5;
466
+ }
467
+
468
+ .ligarb-actions {
469
+ display: flex;
470
+ gap: 8px;
471
+ margin-top: 8px;
472
+ }
473
+
474
+ .ligarb-btn {
475
+ padding: 6px 14px;
476
+ border-radius: 4px;
477
+ border: 1px solid var(--color-border, #e0e0e0);
478
+ font-size: 13px;
479
+ cursor: pointer;
480
+ background: var(--color-bg, #fff);
481
+ color: var(--color-text, #333);
482
+ transition: background 0.15s;
483
+ }
484
+
485
+ .ligarb-btn:hover {
486
+ background: var(--color-code-bg, #f6f8fa);
487
+ }
488
+
489
+ .ligarb-btn:disabled {
490
+ opacity: 0.4;
491
+ cursor: not-allowed;
492
+ }
493
+
494
+ .ligarb-btn-send {
495
+ background: var(--color-accent, #2563eb);
496
+ color: #fff;
497
+ border-color: var(--color-accent, #2563eb);
498
+ }
499
+
500
+ .ligarb-btn-send:hover {
501
+ opacity: 0.9;
502
+ background: var(--color-accent, #2563eb);
503
+ }
504
+
505
+ .ligarb-btn-approve {
506
+ background: #16a34a;
507
+ color: #fff;
508
+ border-color: #16a34a;
509
+ }
510
+
511
+ .ligarb-btn-approve:hover {
512
+ opacity: 0.9;
513
+ background: #16a34a;
514
+ }
515
+
516
+ /* ── Review List Panel ── */
517
+
518
+ #ligarb-list-panel {
519
+ position: fixed;
520
+ top: 0;
521
+ right: -380px;
522
+ width: 370px;
523
+ height: 100vh;
524
+ z-index: 10001;
525
+ background: var(--color-bg, #fff);
526
+ border-left: 1px solid var(--color-border, #e0e0e0);
527
+ box-shadow: -4px 0 16px rgba(0,0,0,0.1);
528
+ display: flex;
529
+ flex-direction: column;
530
+ transition: right 0.25s ease;
531
+ font-family: var(--font-sans, system-ui, sans-serif);
532
+ }
533
+
534
+ #ligarb-list-panel.open {
535
+ right: 0;
536
+ }
537
+
538
+ .ligarb-list-body {
539
+ flex: 1;
540
+ overflow-y: auto;
541
+ padding: 8px;
542
+ }
543
+
544
+ .ligarb-list-empty {
545
+ text-align: center;
546
+ color: var(--color-text-muted, #999);
547
+ padding: 30px;
548
+ font-size: 14px;
549
+ }
550
+
551
+ .ligarb-list-item {
552
+ padding: 10px 12px;
553
+ border-radius: 6px;
554
+ margin-bottom: 4px;
555
+ cursor: pointer;
556
+ transition: background 0.15s;
557
+ }
558
+
559
+ .ligarb-list-item:hover {
560
+ background: var(--color-code-bg, #f6f8fa);
561
+ }
562
+
563
+ .ligarb-list-item-header {
564
+ display: flex;
565
+ align-items: flex-start;
566
+ gap: 8px;
567
+ }
568
+
569
+ .ligarb-list-status {
570
+ flex-shrink: 0;
571
+ font-size: 10px;
572
+ }
573
+
574
+ .ligarb-list-open .ligarb-list-status {
575
+ color: #f59e0b;
576
+ }
577
+
578
+ .ligarb-list-applied .ligarb-list-status {
579
+ color: #16a34a;
580
+ }
581
+
582
+ .ligarb-list-closed .ligarb-list-status {
583
+ color: var(--color-text-muted, #999);
584
+ }
585
+
586
+ .ligarb-list-text {
587
+ font-size: 13px;
588
+ line-height: 1.4;
589
+ color: var(--color-text, #333);
590
+ overflow: hidden;
591
+ text-overflow: ellipsis;
592
+ white-space: nowrap;
593
+ }
594
+
595
+ .ligarb-list-item-meta {
596
+ font-size: 11px;
597
+ color: var(--color-text-muted, #999);
598
+ margin-top: 4px;
599
+ padding-left: 18px;
600
+ }
601
+
602
+ /* ── Review Highlights in Document ── */
603
+
604
+ mark.ligarb-highlight {
605
+ background: rgba(245, 158, 11, 0.25);
606
+ border-bottom: 2px solid #f59e0b;
607
+ cursor: pointer;
608
+ border-radius: 2px;
609
+ transition: background 0.15s;
610
+ }
611
+
612
+ mark.ligarb-highlight:hover {
613
+ background: rgba(245, 158, 11, 0.45);
614
+ }
615
+
616
+ /* ── Dark Mode ── */
617
+
618
+ [data-theme="dark"] #ligarb-reload,
619
+ [data-theme="dark"] #ligarb-list-btn {
620
+ background: var(--color-bg);
621
+ color: var(--color-text);
622
+ border-color: var(--color-border);
623
+ }
624
+
625
+ [data-theme="dark"] #ligarb-panel,
626
+ [data-theme="dark"] #ligarb-list-panel {
627
+ background: var(--color-bg);
628
+ border-color: var(--color-border);
629
+ }
630
+
631
+ [data-theme="dark"] .ligarb-message-user {
632
+ background: rgba(37, 99, 235, 0.15);
633
+ }
634
+
635
+ [data-theme="dark"] .ligarb-message-assistant {
636
+ background: var(--color-code-bg);
637
+ }
638
+
639
+ [data-theme="dark"] .ligarb-input {
640
+ background: var(--color-bg);
641
+ color: var(--color-text);
642
+ border-color: var(--color-border);
643
+ }
644
+
645
+ [data-theme="dark"] mark.ligarb-highlight {
646
+ background: rgba(245, 158, 11, 0.2);
647
+ border-bottom-color: #d97706;
648
+ }
649
+
650
+ [data-theme="dark"] mark.ligarb-highlight:hover {
651
+ background: rgba(245, 158, 11, 0.35);
652
+ }
653
+
654
+ /* ── Print: hide review UI ── */
655
+
656
+ @media print {
657
+ #ligarb-reload,
658
+ #ligarb-list-btn,
659
+ #ligarb-comment-btn,
660
+ #ligarb-panel,
661
+ #ligarb-list-panel,
662
+ mark.ligarb-highlight {
663
+ display: none !important;
664
+ }
665
+ }