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/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;