pi-studio 0.5.44 → 0.5.45
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/CHANGELOG.md +13 -0
- package/README.md +2 -1
- package/client/studio-client.js +1230 -71
- package/client/studio.css +317 -6
- package/index.ts +444 -19
- package/package.json +1 -1
package/client/studio.css
CHANGED
|
@@ -225,12 +225,18 @@
|
|
|
225
225
|
filter: brightness(0.95);
|
|
226
226
|
}
|
|
227
227
|
|
|
228
|
-
#scratchpadBtn.has-content
|
|
228
|
+
#scratchpadBtn.has-content,
|
|
229
|
+
#reviewNotesBtn.has-content,
|
|
230
|
+
#reviewNotesBtn.is-active {
|
|
229
231
|
border-color: var(--accent);
|
|
230
232
|
color: var(--accent);
|
|
231
233
|
font-weight: 600;
|
|
232
234
|
}
|
|
233
235
|
|
|
236
|
+
#reviewNotesBtn.is-active {
|
|
237
|
+
background: var(--accent-soft);
|
|
238
|
+
}
|
|
239
|
+
|
|
234
240
|
.section-header select {
|
|
235
241
|
font-weight: 600;
|
|
236
242
|
font-size: 14px;
|
|
@@ -313,6 +319,51 @@
|
|
|
313
319
|
min-height: 0;
|
|
314
320
|
}
|
|
315
321
|
|
|
322
|
+
.source-body {
|
|
323
|
+
display: flex;
|
|
324
|
+
gap: 12px;
|
|
325
|
+
flex: 1 1 auto;
|
|
326
|
+
min-height: 0;
|
|
327
|
+
align-items: stretch;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
.source-primary {
|
|
331
|
+
display: flex;
|
|
332
|
+
flex: 1 1 auto;
|
|
333
|
+
min-width: 0;
|
|
334
|
+
min-height: 0;
|
|
335
|
+
flex-direction: column;
|
|
336
|
+
gap: 8px;
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
.review-notes-dock-wrap {
|
|
340
|
+
flex: 0 0 clamp(300px, 34%, 420px);
|
|
341
|
+
min-width: 280px;
|
|
342
|
+
min-height: 0;
|
|
343
|
+
display: flex;
|
|
344
|
+
border: 1px solid var(--border);
|
|
345
|
+
border-radius: 10px;
|
|
346
|
+
background: var(--panel);
|
|
347
|
+
box-shadow: var(--panel-shadow);
|
|
348
|
+
overflow: hidden;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
.review-notes-dock-wrap[hidden] {
|
|
352
|
+
display: none !important;
|
|
353
|
+
}
|
|
354
|
+
|
|
355
|
+
.review-notes-dock {
|
|
356
|
+
width: 100%;
|
|
357
|
+
min-height: 0;
|
|
358
|
+
display: flex;
|
|
359
|
+
flex-direction: column;
|
|
360
|
+
border: 0;
|
|
361
|
+
border-radius: 0;
|
|
362
|
+
overflow: hidden;
|
|
363
|
+
background: var(--panel);
|
|
364
|
+
box-shadow: none;
|
|
365
|
+
}
|
|
366
|
+
|
|
316
367
|
.source-meta {
|
|
317
368
|
display: flex;
|
|
318
369
|
align-items: center;
|
|
@@ -338,6 +389,24 @@
|
|
|
338
389
|
white-space: nowrap;
|
|
339
390
|
}
|
|
340
391
|
|
|
392
|
+
.source-badge-button {
|
|
393
|
+
cursor: pointer;
|
|
394
|
+
transition: border-color 120ms ease, color 120ms ease, background 120ms ease;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
.source-badge-button:not(:disabled):hover,
|
|
398
|
+
.source-badge-button:not(:disabled):focus-visible {
|
|
399
|
+
border-color: var(--accent);
|
|
400
|
+
color: var(--text);
|
|
401
|
+
background: var(--accent-soft);
|
|
402
|
+
outline: none;
|
|
403
|
+
}
|
|
404
|
+
|
|
405
|
+
.source-badge-button:disabled {
|
|
406
|
+
cursor: default;
|
|
407
|
+
opacity: 0.75;
|
|
408
|
+
}
|
|
409
|
+
|
|
341
410
|
.sync-badge.sync {
|
|
342
411
|
border-color: var(--border-muted);
|
|
343
412
|
color: var(--muted);
|
|
@@ -417,6 +486,7 @@
|
|
|
417
486
|
}
|
|
418
487
|
|
|
419
488
|
.editor-highlight-wrap {
|
|
489
|
+
--editor-review-note-gutter-width: 0px;
|
|
420
490
|
--editor-line-number-gutter-width: 0px;
|
|
421
491
|
position: relative;
|
|
422
492
|
display: flex;
|
|
@@ -430,16 +500,71 @@
|
|
|
430
500
|
overscroll-behavior: none;
|
|
431
501
|
}
|
|
432
502
|
|
|
503
|
+
.editor-review-note-gutter,
|
|
433
504
|
.editor-line-number-gutter {
|
|
434
505
|
position: absolute;
|
|
435
506
|
inset: 0 auto 0 0;
|
|
436
|
-
width: var(--editor-line-number-gutter-width);
|
|
437
507
|
overflow: hidden;
|
|
438
|
-
border-right: 1px solid var(--border-muted);
|
|
439
508
|
background: var(--panel-2);
|
|
509
|
+
z-index: 0;
|
|
510
|
+
}
|
|
511
|
+
|
|
512
|
+
.editor-review-note-gutter {
|
|
513
|
+
width: var(--editor-review-note-gutter-width);
|
|
514
|
+
border-right: 1px solid var(--border-muted);
|
|
515
|
+
z-index: 2;
|
|
516
|
+
}
|
|
517
|
+
|
|
518
|
+
.editor-review-note-gutter-content {
|
|
519
|
+
min-height: 100%;
|
|
520
|
+
padding: 10px 4px;
|
|
521
|
+
}
|
|
522
|
+
|
|
523
|
+
.editor-review-note-row {
|
|
524
|
+
display: flex;
|
|
525
|
+
align-items: center;
|
|
526
|
+
justify-content: center;
|
|
527
|
+
min-height: 1.45em;
|
|
528
|
+
}
|
|
529
|
+
|
|
530
|
+
.editor-review-note-marker {
|
|
531
|
+
width: 18px;
|
|
532
|
+
min-width: 18px;
|
|
533
|
+
height: 18px;
|
|
534
|
+
border-radius: 999px;
|
|
535
|
+
border: 1px solid transparent;
|
|
536
|
+
padding: 0;
|
|
537
|
+
display: inline-flex;
|
|
538
|
+
align-items: center;
|
|
539
|
+
justify-content: center;
|
|
540
|
+
font-size: 10px;
|
|
541
|
+
line-height: 1;
|
|
542
|
+
font-weight: 700;
|
|
543
|
+
color: var(--accent);
|
|
544
|
+
background: var(--accent-soft);
|
|
545
|
+
cursor: pointer;
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
.editor-review-note-marker.has-multiple {
|
|
549
|
+
width: auto;
|
|
550
|
+
min-width: 18px;
|
|
551
|
+
padding: 0 4px;
|
|
552
|
+
border-color: var(--accent);
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
.editor-review-note-marker:hover,
|
|
556
|
+
.editor-review-note-marker:focus-visible {
|
|
557
|
+
border-color: var(--accent);
|
|
558
|
+
filter: brightness(0.96);
|
|
559
|
+
outline: none;
|
|
560
|
+
}
|
|
561
|
+
|
|
562
|
+
.editor-line-number-gutter {
|
|
563
|
+
left: var(--editor-review-note-gutter-width);
|
|
564
|
+
width: var(--editor-line-number-gutter-width);
|
|
565
|
+
border-right: 1px solid var(--border-muted);
|
|
440
566
|
color: var(--muted);
|
|
441
567
|
pointer-events: none;
|
|
442
|
-
z-index: 0;
|
|
443
568
|
}
|
|
444
569
|
|
|
445
570
|
.editor-line-number-gutter-content {
|
|
@@ -486,13 +611,14 @@
|
|
|
486
611
|
margin: 0;
|
|
487
612
|
border: 0;
|
|
488
613
|
border-radius: 8px;
|
|
489
|
-
padding: 10px 10px 10px calc(10px + var(--editor-line-number-gutter-width));
|
|
614
|
+
padding: 10px 10px 10px calc(10px + var(--editor-review-note-gutter-width) + var(--editor-line-number-gutter-width));
|
|
490
615
|
overflow: auto;
|
|
491
616
|
pointer-events: none;
|
|
492
617
|
white-space: pre-wrap;
|
|
493
618
|
word-break: normal;
|
|
494
619
|
overflow-wrap: break-word;
|
|
495
620
|
overscroll-behavior: none;
|
|
621
|
+
scrollbar-width: none;
|
|
496
622
|
font-family: var(--font-mono);
|
|
497
623
|
font-size: 13px;
|
|
498
624
|
line-height: 1.45;
|
|
@@ -501,6 +627,12 @@
|
|
|
501
627
|
background: transparent;
|
|
502
628
|
}
|
|
503
629
|
|
|
630
|
+
.editor-highlight::-webkit-scrollbar {
|
|
631
|
+
width: 0;
|
|
632
|
+
height: 0;
|
|
633
|
+
display: none;
|
|
634
|
+
}
|
|
635
|
+
|
|
504
636
|
#sourceText {
|
|
505
637
|
position: relative;
|
|
506
638
|
z-index: 1;
|
|
@@ -513,7 +645,7 @@
|
|
|
513
645
|
resize: none;
|
|
514
646
|
outline: none;
|
|
515
647
|
overscroll-behavior: none;
|
|
516
|
-
padding: 10px 10px 10px calc(10px + var(--editor-line-number-gutter-width));
|
|
648
|
+
padding: 10px 10px 10px calc(10px + var(--editor-review-note-gutter-width) + var(--editor-line-number-gutter-width));
|
|
517
649
|
}
|
|
518
650
|
|
|
519
651
|
#sourceText.highlight-active {
|
|
@@ -1572,10 +1704,189 @@
|
|
|
1572
1704
|
filter: brightness(0.95);
|
|
1573
1705
|
}
|
|
1574
1706
|
|
|
1707
|
+
.review-notes-dock .scratchpad-header {
|
|
1708
|
+
padding: 12px 14px 10px;
|
|
1709
|
+
}
|
|
1710
|
+
|
|
1711
|
+
.review-notes-dock .scratchpad-header h2 {
|
|
1712
|
+
font-size: 15px;
|
|
1713
|
+
}
|
|
1714
|
+
|
|
1715
|
+
.review-notes-dock .scratchpad-description {
|
|
1716
|
+
font-size: 11px;
|
|
1717
|
+
line-height: 1.4;
|
|
1718
|
+
word-break: normal;
|
|
1719
|
+
overflow-wrap: normal;
|
|
1720
|
+
}
|
|
1721
|
+
|
|
1722
|
+
.review-notes-inline-token {
|
|
1723
|
+
display: inline-block;
|
|
1724
|
+
white-space: nowrap;
|
|
1725
|
+
font-family: var(--font-mono);
|
|
1726
|
+
}
|
|
1727
|
+
|
|
1728
|
+
.review-notes-toolbar {
|
|
1729
|
+
display: flex;
|
|
1730
|
+
align-items: center;
|
|
1731
|
+
justify-content: space-between;
|
|
1732
|
+
gap: 12px;
|
|
1733
|
+
flex-wrap: wrap;
|
|
1734
|
+
padding: 10px 14px;
|
|
1735
|
+
border-bottom: 1px solid var(--border);
|
|
1736
|
+
background: var(--panel-2);
|
|
1737
|
+
box-shadow: inset 0 -1px 0 var(--border-muted);
|
|
1738
|
+
}
|
|
1739
|
+
|
|
1740
|
+
.review-notes-empty {
|
|
1741
|
+
padding: 14px;
|
|
1742
|
+
font-size: 13px;
|
|
1743
|
+
line-height: 1.5;
|
|
1744
|
+
color: var(--muted);
|
|
1745
|
+
border-bottom: 1px solid var(--border-muted);
|
|
1746
|
+
background: var(--panel);
|
|
1747
|
+
}
|
|
1748
|
+
|
|
1749
|
+
.review-notes-empty[hidden] {
|
|
1750
|
+
display: none !important;
|
|
1751
|
+
}
|
|
1752
|
+
|
|
1753
|
+
.review-notes-list {
|
|
1754
|
+
display: flex;
|
|
1755
|
+
flex: 1 1 auto;
|
|
1756
|
+
min-height: 0;
|
|
1757
|
+
flex-direction: column;
|
|
1758
|
+
gap: 12px;
|
|
1759
|
+
padding: 14px;
|
|
1760
|
+
overflow: auto;
|
|
1761
|
+
background: var(--panel);
|
|
1762
|
+
}
|
|
1763
|
+
|
|
1764
|
+
.review-notes-dock-footer {
|
|
1765
|
+
display: flex;
|
|
1766
|
+
justify-content: flex-end;
|
|
1767
|
+
padding: 10px 14px 12px;
|
|
1768
|
+
border-top: 1px solid var(--border);
|
|
1769
|
+
background: var(--panel-2);
|
|
1770
|
+
box-shadow: inset 0 1px 0 var(--border-muted);
|
|
1771
|
+
}
|
|
1772
|
+
|
|
1773
|
+
.review-notes-dock-footer .scratchpad-actions {
|
|
1774
|
+
width: 100%;
|
|
1775
|
+
justify-content: space-between;
|
|
1776
|
+
}
|
|
1777
|
+
|
|
1778
|
+
.review-note-card {
|
|
1779
|
+
border: 1px solid var(--border-muted);
|
|
1780
|
+
border-radius: 12px;
|
|
1781
|
+
background: var(--panel-2);
|
|
1782
|
+
padding: 12px;
|
|
1783
|
+
display: flex;
|
|
1784
|
+
flex-direction: column;
|
|
1785
|
+
gap: 10px;
|
|
1786
|
+
}
|
|
1787
|
+
|
|
1788
|
+
.review-note-card-header {
|
|
1789
|
+
display: flex;
|
|
1790
|
+
align-items: flex-start;
|
|
1791
|
+
justify-content: space-between;
|
|
1792
|
+
gap: 12px;
|
|
1793
|
+
flex-wrap: wrap;
|
|
1794
|
+
}
|
|
1795
|
+
|
|
1796
|
+
.review-note-card-title {
|
|
1797
|
+
display: flex;
|
|
1798
|
+
flex-direction: column;
|
|
1799
|
+
gap: 4px;
|
|
1800
|
+
min-width: 0;
|
|
1801
|
+
}
|
|
1802
|
+
|
|
1803
|
+
.review-note-anchor {
|
|
1804
|
+
font-size: 12px;
|
|
1805
|
+
font-weight: 600;
|
|
1806
|
+
color: var(--text);
|
|
1807
|
+
}
|
|
1808
|
+
|
|
1809
|
+
.review-note-quote {
|
|
1810
|
+
font-size: 12px;
|
|
1811
|
+
color: var(--muted);
|
|
1812
|
+
font-family: var(--font-mono);
|
|
1813
|
+
white-space: pre-wrap;
|
|
1814
|
+
word-break: break-word;
|
|
1815
|
+
}
|
|
1816
|
+
|
|
1817
|
+
.review-note-card-actions {
|
|
1818
|
+
display: inline-flex;
|
|
1819
|
+
align-items: center;
|
|
1820
|
+
gap: 8px;
|
|
1821
|
+
flex-wrap: wrap;
|
|
1822
|
+
justify-content: flex-end;
|
|
1823
|
+
}
|
|
1824
|
+
|
|
1825
|
+
.review-note-card textarea {
|
|
1826
|
+
width: 100%;
|
|
1827
|
+
min-height: 92px;
|
|
1828
|
+
border-radius: 8px;
|
|
1829
|
+
border: 0;
|
|
1830
|
+
padding: 10px 12px;
|
|
1831
|
+
background: var(--panel);
|
|
1832
|
+
color: var(--text);
|
|
1833
|
+
font-family: var(--font-mono);
|
|
1834
|
+
font-size: 13px;
|
|
1835
|
+
line-height: 1.5;
|
|
1836
|
+
resize: vertical;
|
|
1837
|
+
outline: none;
|
|
1838
|
+
box-shadow: inset 0 0 0 1px var(--border-muted);
|
|
1839
|
+
}
|
|
1840
|
+
|
|
1841
|
+
.review-note-card textarea:focus {
|
|
1842
|
+
box-shadow: inset 0 0 0 1px var(--accent), 0 0 0 2px var(--accent-soft);
|
|
1843
|
+
}
|
|
1844
|
+
|
|
1845
|
+
.review-note-card-footer {
|
|
1846
|
+
display: flex;
|
|
1847
|
+
align-items: center;
|
|
1848
|
+
justify-content: space-between;
|
|
1849
|
+
gap: 12px;
|
|
1850
|
+
flex-wrap: wrap;
|
|
1851
|
+
}
|
|
1852
|
+
|
|
1853
|
+
.review-note-timestamp {
|
|
1854
|
+
font-size: 11px;
|
|
1855
|
+
color: var(--muted);
|
|
1856
|
+
}
|
|
1857
|
+
|
|
1858
|
+
#reviewNotesAddBtn:not(:disabled) {
|
|
1859
|
+
background: var(--accent);
|
|
1860
|
+
border-color: var(--accent);
|
|
1861
|
+
color: var(--accent-contrast);
|
|
1862
|
+
font-weight: 600;
|
|
1863
|
+
}
|
|
1864
|
+
|
|
1865
|
+
#reviewNotesAddBtn:not(:disabled):hover {
|
|
1866
|
+
filter: brightness(0.95);
|
|
1867
|
+
}
|
|
1868
|
+
|
|
1869
|
+
.review-note-delete-btn:not(:disabled) {
|
|
1870
|
+
border-color: var(--warn-border);
|
|
1871
|
+
color: var(--warn);
|
|
1872
|
+
}
|
|
1873
|
+
|
|
1575
1874
|
#status.error { color: var(--error); }
|
|
1576
1875
|
#status.warning { color: var(--warn); }
|
|
1577
1876
|
#status.success { color: var(--ok); }
|
|
1578
1877
|
|
|
1878
|
+
@media (max-width: 1200px) {
|
|
1879
|
+
.source-body {
|
|
1880
|
+
flex-direction: column;
|
|
1881
|
+
}
|
|
1882
|
+
|
|
1883
|
+
.review-notes-dock-wrap {
|
|
1884
|
+
flex: 0 0 auto;
|
|
1885
|
+
min-width: 0;
|
|
1886
|
+
max-height: min(42vh, 420px);
|
|
1887
|
+
}
|
|
1888
|
+
}
|
|
1889
|
+
|
|
1579
1890
|
@media (max-width: 980px) {
|
|
1580
1891
|
footer {
|
|
1581
1892
|
grid-template-columns: 1fr;
|