pi-studio 0.9.0 → 0.9.2

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
@@ -59,6 +59,30 @@
59
59
  flex-wrap: wrap;
60
60
  }
61
61
 
62
+ .zen-mode-btn {
63
+ font-weight: inherit;
64
+ white-space: nowrap;
65
+ }
66
+
67
+ body.studio-zen-mode > header {
68
+ padding: 8px 12px;
69
+ }
70
+
71
+ body.studio-zen-mode .app-subtitle {
72
+ display: none;
73
+ }
74
+
75
+ body.studio-zen-mode > header .controls > :not(#zenModeBtn) {
76
+ display: none !important;
77
+ }
78
+
79
+ body.studio-zen-mode #zenModeBtn {
80
+ background: var(--panel);
81
+ border-color: var(--control-border);
82
+ color: var(--text);
83
+ font-weight: inherit;
84
+ }
85
+
62
86
  .export-preview-controls {
63
87
  position: relative;
64
88
  display: inline-flex;
@@ -465,6 +489,11 @@
465
489
  background: var(--reference-badge-bg, var(--panel));
466
490
  }
467
491
 
492
+ body.studio-zen-mode .reference-meta,
493
+ body.studio-zen-mode #responseActions {
494
+ display: none !important;
495
+ }
496
+
468
497
  body.studio-ui-refresh #rightPane .reference-meta .source-badge {
469
498
  border-color: var(--border-subtle);
470
499
  color: var(--studio-info-text, var(--muted));
@@ -1479,6 +1508,14 @@
1479
1508
  font-size: 12px;
1480
1509
  }
1481
1510
 
1511
+ .rendered-markdown .studio-pdf-card-title-group {
1512
+ min-width: 0;
1513
+ flex: 1 1 auto;
1514
+ display: inline-flex;
1515
+ align-items: center;
1516
+ gap: 8px;
1517
+ }
1518
+
1482
1519
  .rendered-markdown .studio-pdf-card-title {
1483
1520
  min-width: 0;
1484
1521
  overflow: hidden;
@@ -1488,12 +1525,72 @@
1488
1525
  color: var(--text);
1489
1526
  }
1490
1527
 
1491
- .rendered-markdown .studio-pdf-card-link {
1528
+ .rendered-markdown .studio-pdf-card-actions {
1529
+ flex: 0 0 auto;
1530
+ display: inline-flex;
1531
+ align-items: center;
1532
+ gap: 8px;
1533
+ }
1534
+
1535
+ .rendered-markdown .studio-pdf-card-link,
1536
+ .rendered-markdown .studio-pdf-card-action {
1492
1537
  flex: 0 0 auto;
1493
1538
  font-size: 12px;
1494
1539
  font-weight: 600;
1495
1540
  }
1496
1541
 
1542
+ .rendered-markdown a.studio-pdf-card-link {
1543
+ min-height: 29px;
1544
+ display: inline-flex;
1545
+ align-items: center;
1546
+ padding: 0 7px;
1547
+ border: 1px solid transparent;
1548
+ border-radius: 7px;
1549
+ color: var(--studio-info-text, var(--muted));
1550
+ text-decoration: none;
1551
+ line-height: 1.2;
1552
+ }
1553
+
1554
+ .rendered-markdown a.studio-pdf-card-link:hover,
1555
+ .rendered-markdown a.studio-pdf-card-link:focus-visible {
1556
+ background: var(--panel);
1557
+ color: var(--text);
1558
+ border-color: var(--control-border);
1559
+ text-decoration: none;
1560
+ }
1561
+
1562
+ .rendered-markdown button.studio-pdf-card-action {
1563
+ min-height: 0;
1564
+ padding: 3px 7px;
1565
+ border-radius: 7px;
1566
+ background: transparent;
1567
+ color: var(--studio-info-text, var(--muted));
1568
+ border-color: transparent;
1569
+ line-height: 1.2;
1570
+ }
1571
+
1572
+ .rendered-markdown button.studio-pdf-card-action:not(:disabled):hover,
1573
+ .rendered-markdown button.studio-pdf-card-action:focus-visible {
1574
+ background: var(--panel);
1575
+ color: var(--text);
1576
+ border-color: var(--control-border);
1577
+ }
1578
+
1579
+ .rendered-markdown button.studio-pdf-card-focus {
1580
+ width: 29px;
1581
+ min-width: 29px;
1582
+ min-height: 29px;
1583
+ padding: 0;
1584
+ display: inline-flex;
1585
+ align-items: center;
1586
+ justify-content: center;
1587
+ }
1588
+
1589
+ .rendered-markdown button.studio-pdf-card-focus .studio-refresh-icon {
1590
+ width: 15px;
1591
+ height: 15px;
1592
+ }
1593
+
1497
1594
  .rendered-markdown .studio-pdf-card-caption {
1498
1595
  padding: 8px 10px 0;
1499
1596
  color: var(--studio-info-text, var(--muted));
@@ -1514,6 +1611,162 @@
1514
1611
  background: #fff;
1515
1612
  }
1516
1613
 
1614
+ body.studio-pdf-focus-open {
1615
+ overflow: hidden;
1616
+ }
1617
+
1618
+ .studio-pdf-focus-overlay {
1619
+ position: fixed;
1620
+ inset: 0;
1621
+ z-index: 70;
1622
+ display: flex;
1623
+ align-items: center;
1624
+ justify-content: center;
1625
+ padding: clamp(12px, 2.4vw, 28px);
1626
+ background: var(--backdrop-bg);
1627
+ backdrop-filter: blur(3px);
1628
+ }
1629
+
1630
+ .studio-pdf-focus-overlay[hidden] {
1631
+ display: none !important;
1632
+ }
1633
+
1634
+ .studio-pdf-focus-dialog {
1635
+ width: min(96vw, 1440px);
1636
+ height: min(92vh, 1080px);
1637
+ min-height: 420px;
1638
+ display: flex;
1639
+ flex-direction: column;
1640
+ border: 1px solid var(--panel-border);
1641
+ border-radius: 14px;
1642
+ background: var(--panel);
1643
+ box-shadow: 0 24px 70px var(--shadow-color);
1644
+ overflow: hidden;
1645
+ }
1646
+
1647
+ .studio-pdf-focus-dialog:fullscreen {
1648
+ width: 100vw;
1649
+ height: 100vh;
1650
+ border-radius: 0;
1651
+ border: 0;
1652
+ }
1653
+
1654
+ .studio-pdf-focus-header {
1655
+ flex: 0 0 auto;
1656
+ display: flex;
1657
+ align-items: center;
1658
+ justify-content: space-between;
1659
+ gap: 12px;
1660
+ padding: 9px 12px;
1661
+ border-bottom: 1px solid var(--panel-border);
1662
+ background: var(--panel-2);
1663
+ }
1664
+
1665
+ .studio-pdf-focus-title-group {
1666
+ min-width: 0;
1667
+ flex: 1 1 auto;
1668
+ display: inline-flex;
1669
+ align-items: center;
1670
+ gap: 8px;
1671
+ }
1672
+
1673
+ .studio-pdf-focus-title {
1674
+ min-width: 0;
1675
+ overflow: hidden;
1676
+ text-overflow: ellipsis;
1677
+ white-space: nowrap;
1678
+ font-size: 13px;
1679
+ font-weight: 600;
1680
+ color: var(--text);
1681
+ }
1682
+
1683
+ .studio-pdf-focus-actions {
1684
+ flex: 0 0 auto;
1685
+ display: inline-flex;
1686
+ align-items: center;
1687
+ gap: 8px;
1688
+ }
1689
+
1690
+ .studio-pdf-focus-link,
1691
+ .studio-pdf-focus-btn {
1692
+ font-size: 12px;
1693
+ font-weight: 600;
1694
+ white-space: nowrap;
1695
+ }
1696
+
1697
+ .studio-pdf-focus-link {
1698
+ min-height: 29px;
1699
+ display: inline-flex;
1700
+ align-items: center;
1701
+ padding: 0 8px;
1702
+ border: 1px solid transparent;
1703
+ border-radius: 8px;
1704
+ color: var(--studio-info-text, var(--muted));
1705
+ text-decoration: none;
1706
+ }
1707
+
1708
+ .studio-pdf-focus-link:hover,
1709
+ .studio-pdf-focus-link:focus-visible {
1710
+ background: var(--panel);
1711
+ border-color: var(--control-border);
1712
+ color: var(--text);
1713
+ text-decoration: none;
1714
+ }
1715
+
1716
+ .studio-pdf-focus-btn {
1717
+ display: inline-flex;
1718
+ align-items: center;
1719
+ gap: 6px;
1720
+ padding: 5px 8px;
1721
+ border-radius: 8px;
1722
+ background: transparent;
1723
+ border-color: transparent;
1724
+ color: var(--studio-info-text, var(--muted));
1725
+ }
1726
+
1727
+ .studio-pdf-focus-btn:not(:disabled):hover,
1728
+ .studio-pdf-focus-btn:focus-visible {
1729
+ background: var(--panel);
1730
+ border-color: var(--control-border);
1731
+ color: var(--text);
1732
+ }
1733
+
1734
+ .studio-pdf-focus-btn .studio-refresh-icon {
1735
+ width: 14px;
1736
+ height: 14px;
1737
+ }
1738
+
1739
+ .studio-pdf-focus-fullscreen,
1740
+ .studio-pdf-focus-close {
1741
+ width: 29px;
1742
+ min-width: 29px;
1743
+ min-height: 29px;
1744
+ padding: 0;
1745
+ justify-content: center;
1746
+ gap: 0;
1747
+ }
1748
+
1749
+ .studio-pdf-focus-fullscreen .studio-refresh-icon,
1750
+ .studio-pdf-focus-close .studio-refresh-icon {
1751
+ width: 15px;
1752
+ height: 15px;
1753
+ }
1754
+
1755
+ .studio-pdf-focus-frame-slot {
1756
+ flex: 1 1 auto;
1757
+ min-height: 0;
1758
+ display: flex;
1759
+ }
1760
+
1761
+ .studio-pdf-focus-frame {
1762
+ flex: 1 1 auto;
1763
+ width: 100%;
1764
+ min-height: 0;
1765
+ height: auto !important;
1766
+ border: 0;
1767
+ background: #fff;
1768
+ }
1769
+
1517
1770
  .rendered-markdown .studio-html-artifact-shell {
1518
1771
  display: flex;
1519
1772
  flex-direction: column;
@@ -2292,7 +2545,8 @@
2292
2545
  background: var(--error-soft);
2293
2546
  }
2294
2547
 
2295
- .repl-journal {
2548
+ .repl-journal,
2549
+ .repl-mirror {
2296
2550
  border: 1px solid var(--panel-border);
2297
2551
  border-radius: 10px;
2298
2552
  background: var(--panel-2);
@@ -2302,7 +2556,12 @@
2302
2556
  gap: 10px;
2303
2557
  }
2304
2558
 
2305
- .repl-journal-compact {
2559
+ .repl-mirror {
2560
+ background: var(--panel);
2561
+ }
2562
+
2563
+ .repl-journal-compact,
2564
+ .repl-mirror-compact {
2306
2565
  padding: 7px 9px;
2307
2566
  background: var(--panel);
2308
2567
  }
@@ -2367,65 +2626,159 @@
2367
2626
  justify-content: flex-end;
2368
2627
  }
2369
2628
 
2629
+ .repl-journal-compact-actions,
2630
+ .repl-studio-below-actions {
2631
+ display: flex;
2632
+ justify-content: flex-end;
2633
+ }
2634
+
2635
+ .repl-studio-below-actions {
2636
+ margin-top: -4px;
2637
+ }
2638
+
2370
2639
  .repl-journal-list {
2640
+ --repl-studio-prompt-width: 3.2em;
2641
+ --repl-studio-column-gap: 8px;
2371
2642
  display: flex;
2372
2643
  flex-direction: column;
2373
- gap: 10px;
2644
+ gap: 0;
2645
+ border: 1px solid var(--panel-border);
2646
+ border-radius: 10px;
2647
+ background: var(--panel);
2648
+ padding: 10px 12px;
2649
+ box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.015);
2374
2650
  }
2375
2651
 
2376
2652
  .repl-journal-card {
2377
- border: 1px solid var(--border-subtle);
2378
- border-radius: 9px;
2379
- background: var(--panel);
2380
- padding: 10px;
2381
2653
  display: flex;
2382
2654
  flex-direction: column;
2383
- gap: 8px;
2655
+ gap: 1px;
2384
2656
  }
2385
2657
 
2386
- .repl-journal-card-header {
2387
- display: flex;
2388
- align-items: center;
2389
- gap: 8px;
2390
- flex-wrap: wrap;
2658
+ .repl-studio-entry {
2659
+ position: relative;
2660
+ padding: 2px 8.5em 6px 0;
2661
+ background: transparent;
2391
2662
  }
2392
2663
 
2393
- .repl-journal-section {
2394
- display: flex;
2395
- flex-direction: column;
2396
- gap: 4px;
2664
+ .repl-studio-entry:last-child {
2665
+ padding-bottom: 2px;
2666
+ }
2667
+
2668
+ .repl-studio-entry:has(.repl-studio-output-row) {
2669
+ padding-bottom: 6px;
2397
2670
  }
2398
2671
 
2399
- .repl-journal-label {
2672
+ .repl-studio-entry-meta {
2673
+ position: absolute;
2674
+ top: 3px;
2675
+ right: 0;
2676
+ max-width: 8.1em;
2677
+ overflow: hidden;
2678
+ text-overflow: ellipsis;
2679
+ white-space: nowrap;
2400
2680
  color: var(--muted);
2401
2681
  font-size: 11px;
2402
- font-weight: 700;
2403
- text-transform: uppercase;
2404
- letter-spacing: 0.04em;
2682
+ line-height: 1.25;
2683
+ opacity: 0.55;
2684
+ text-align: right;
2405
2685
  }
2406
2686
 
2407
- .repl-journal-prose,
2408
- .repl-journal-code,
2409
- .repl-journal-output {
2410
- margin: 0;
2411
- border-radius: 7px;
2412
- padding: 8px 10px;
2413
- background: var(--panel-2);
2414
- color: var(--text);
2687
+ .repl-studio-banner {
2688
+ margin: 0 0 8px;
2689
+ padding: 0 0 8px;
2690
+ border-bottom: 1px solid var(--border-subtle);
2691
+ color: var(--muted);
2692
+ font-family: var(--font-mono);
2693
+ font-size: var(--studio-working-font-size);
2694
+ line-height: 1.45;
2415
2695
  white-space: pre-wrap;
2416
- overflow-wrap: anywhere;
2417
2696
  }
2418
2697
 
2419
- .repl-journal-code,
2420
- .repl-journal-output {
2698
+ .repl-studio-code-row,
2699
+ .repl-studio-output-row {
2700
+ display: grid;
2701
+ grid-template-columns: var(--repl-studio-prompt-width) minmax(0, 1fr);
2702
+ gap: var(--repl-studio-column-gap);
2703
+ align-items: start;
2704
+ }
2705
+
2706
+ .repl-studio-prompt,
2707
+ .repl-studio-output-label {
2708
+ font-family: var(--font-mono);
2709
+ font-size: var(--studio-working-font-size);
2710
+ line-height: 1.45;
2711
+ text-align: right;
2712
+ user-select: none;
2713
+ }
2714
+
2715
+ .repl-studio-output-label {
2716
+ color: var(--muted);
2717
+ opacity: 0.82;
2718
+ }
2719
+
2720
+ .repl-studio-input,
2721
+ .repl-studio-output {
2722
+ margin: 0;
2723
+ padding: 0;
2724
+ border: 0;
2725
+ border-radius: 0;
2726
+ background: transparent;
2727
+ color: var(--text);
2421
2728
  font-family: var(--font-mono);
2422
2729
  font-size: var(--studio-working-font-size);
2423
2730
  line-height: 1.45;
2731
+ white-space: pre-wrap;
2732
+ overflow-wrap: anywhere;
2733
+ box-shadow: none;
2734
+ }
2735
+
2736
+ .repl-studio-output-row {
2737
+ margin-top: 2px;
2424
2738
  }
2425
2739
 
2426
- .repl-journal-prose {
2740
+ .repl-studio-output {
2741
+ color: var(--text);
2742
+ }
2743
+
2744
+ #rightPane .repl-journal-list .repl-studio-input,
2745
+ #rightPane .repl-journal-list .repl-studio-output,
2746
+ #rightPane .repl-journal-list .repl-studio-code,
2747
+ #rightPane .repl-journal-list .repl-studio-input.response-markdown-highlight,
2748
+ #rightPane .repl-journal-list .repl-studio-code.response-markdown-highlight {
2749
+ margin: 0 !important;
2750
+ padding: 0 !important;
2751
+ border: 0 !important;
2752
+ border-radius: 0 !important;
2753
+ background: transparent !important;
2754
+ box-shadow: none !important;
2755
+ font-size: var(--studio-working-font-size) !important;
2756
+ line-height: 1.45 !important;
2757
+ }
2758
+
2759
+ .repl-studio-note {
2760
+ margin-left: calc(var(--repl-studio-prompt-width) + var(--repl-studio-column-gap));
2761
+ color: var(--text);
2427
2762
  font-size: 13px;
2428
2763
  line-height: 1.45;
2764
+ white-space: pre-wrap;
2765
+ }
2766
+
2767
+ .repl-studio-empty,
2768
+ .repl-studio-pending {
2769
+ margin-left: calc(var(--repl-studio-prompt-width) + var(--repl-studio-column-gap));
2770
+ color: var(--muted);
2771
+ font-size: 12px;
2772
+ font-style: italic;
2773
+ }
2774
+
2775
+ .repl-journal-card-header,
2776
+ .repl-journal-section,
2777
+ .repl-journal-label,
2778
+ .repl-journal-prose,
2779
+ .repl-journal-code,
2780
+ .repl-journal-output {
2781
+ /* Kept for exported/older markup compatibility. */
2429
2782
  }
2430
2783
 
2431
2784
  footer {
@@ -2566,6 +2919,18 @@
2566
2919
  background: var(--panel);
2567
2920
  }
2568
2921
 
2922
+ body.studio-zen-mode footer {
2923
+ min-height: 28px;
2924
+ padding: 5px 12px;
2925
+ grid-template-columns: minmax(0, 1fr);
2926
+ grid-template-areas: "status";
2927
+ }
2928
+
2929
+ body.studio-zen-mode .footer-meta,
2930
+ body.studio-zen-mode .shortcut-hint {
2931
+ display: none !important;
2932
+ }
2933
+
2569
2934
  body.scratchpad-open {
2570
2935
  overflow: hidden;
2571
2936
  }
@@ -2997,6 +3362,10 @@
2997
3362
  gap: 5px;
2998
3363
  }
2999
3364
 
3365
+ body.studio-ui-refresh.studio-zen-mode > header {
3366
+ padding: 7px 12px;
3367
+ }
3368
+
3000
3369
  body.studio-ui-refresh > header button,
3001
3370
  body.studio-ui-refresh > header .file-label,
3002
3371
  body.studio-ui-refresh #responseActions button,
@@ -3110,7 +3479,7 @@
3110
3479
  flex: 0 0 1px;
3111
3480
  }
3112
3481
 
3113
- body.studio-ui-refresh .studio-refresh-icon {
3482
+ .studio-refresh-icon {
3114
3483
  width: 15px;
3115
3484
  height: 15px;
3116
3485
  stroke: currentColor;
@@ -3250,6 +3619,21 @@
3250
3619
  border-radius: 8px;
3251
3620
  }
3252
3621
 
3622
+ body.studio-zen-mode #reviewNotesBtn,
3623
+ body.studio-zen-mode #outlineBtn,
3624
+ body.studio-zen-mode #scratchpadBtn,
3625
+ body.studio-zen-mode #exportPreviewControls,
3626
+ body.studio-zen-mode #exportPdfBtn,
3627
+ body.studio-zen-mode .studio-refresh-tool-tab,
3628
+ body.studio-zen-mode .studio-refresh-toolbar-state,
3629
+ body.studio-zen-mode .studio-refresh-toolbar-actions .studio-refresh-action-line:nth-child(n+2),
3630
+ body.studio-zen-mode .source-actions-row:nth-child(n+2),
3631
+ body.studio-zen-mode #copyDraftBtn,
3632
+ body.studio-zen-mode #openCompanionBtn,
3633
+ body.studio-zen-mode #sendEditorBtn {
3634
+ display: none !important;
3635
+ }
3636
+
3253
3637
  body.studio-ui-refresh #reviewNotesBtn,
3254
3638
  body.studio-ui-refresh #outlineBtn,
3255
3639
  body.studio-ui-refresh #scratchpadBtn,