pi-studio 0.5.57 → 0.5.59

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
@@ -1133,6 +1133,43 @@
1133
1133
  white-space: inherit;
1134
1134
  }
1135
1135
 
1136
+ .rendered-markdown .studio-copyable-block {
1137
+ position: relative;
1138
+ }
1139
+
1140
+ .rendered-markdown .studio-copy-block-btn {
1141
+ position: absolute;
1142
+ top: 8px;
1143
+ right: 8px;
1144
+ z-index: 4;
1145
+ padding: 3px 8px;
1146
+ border-radius: 999px;
1147
+ border: 1px solid var(--border-muted);
1148
+ background: var(--panel);
1149
+ color: var(--muted);
1150
+ font-family: var(--font-ui);
1151
+ font-size: 11px;
1152
+ font-weight: 700;
1153
+ line-height: 1.4;
1154
+ opacity: 0.25;
1155
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.16);
1156
+ cursor: pointer;
1157
+ pointer-events: auto;
1158
+ user-select: none;
1159
+ }
1160
+
1161
+ .rendered-markdown .studio-copy-block-btn:active {
1162
+ transform: translateY(1px);
1163
+ }
1164
+
1165
+ .rendered-markdown .studio-copyable-block:hover > .studio-copy-block-btn,
1166
+ .rendered-markdown .studio-copy-block-btn:focus-visible {
1167
+ opacity: 1;
1168
+ color: var(--text);
1169
+ border-color: var(--accent-soft-strong);
1170
+ background: var(--panel);
1171
+ }
1172
+
1136
1173
  .rendered-markdown :not(pre) > code {
1137
1174
  background: rgba(127, 127, 127, 0.13);
1138
1175
  border: 1px solid var(--md-codeblock-border);
@@ -2226,7 +2263,8 @@
2226
2263
  background: var(--panel-2);
2227
2264
  }
2228
2265
 
2229
- .review-note-delete-btn:not(:disabled) {
2266
+ .review-note-delete-btn:not(:disabled),
2267
+ #reviewNotesDeleteAllBtn:not(:disabled) {
2230
2268
  border-color: var(--warn-border);
2231
2269
  color: var(--warn);
2232
2270
  }
@@ -2276,3 +2314,516 @@
2276
2314
  grid-template-columns: 1fr;
2277
2315
  }
2278
2316
  }
2317
+
2318
+ /* Opt-in editor-side layout refresh prototype. Enabled with ?uiRefresh=1 or localStorage piStudio.uiRefresh=1. */
2319
+ body.studio-ui-refresh {
2320
+ font-size: 14px;
2321
+ }
2322
+
2323
+ body.studio-ui-refresh > header {
2324
+ padding: 9px 14px;
2325
+ gap: 10px;
2326
+ }
2327
+
2328
+ body.studio-ui-refresh h1 {
2329
+ font-size: 17px;
2330
+ }
2331
+
2332
+ body.studio-ui-refresh .app-logo {
2333
+ font-size: 20px;
2334
+ }
2335
+
2336
+ body.studio-ui-refresh .app-subtitle {
2337
+ font-size: 11px;
2338
+ }
2339
+
2340
+ body.studio-ui-refresh > header .controls {
2341
+ gap: 6px;
2342
+ }
2343
+
2344
+ body.studio-ui-refresh > header button,
2345
+ body.studio-ui-refresh > header .file-label,
2346
+ body.studio-ui-refresh #responseActions button,
2347
+ body.studio-ui-refresh #responseActions select {
2348
+ padding: 6px 8px;
2349
+ font-size: 13px;
2350
+ }
2351
+
2352
+ body.studio-ui-refresh main {
2353
+ gap: 10px;
2354
+ padding: 10px;
2355
+ }
2356
+
2357
+ body.studio-ui-refresh footer {
2358
+ padding: 8px 10px;
2359
+ font-size: 12px;
2360
+ }
2361
+
2362
+ .studio-ui-refresh-toggle {
2363
+ opacity: 0.9;
2364
+ }
2365
+
2366
+ .studio-ui-refresh-toggle:not(:disabled):hover {
2367
+ opacity: 1;
2368
+ }
2369
+
2370
+ body.studio-ui-refresh[data-studio-mode="editor-only"] #leftSectionHeader .section-header-main::before,
2371
+ body.studio-ui-refresh[data-studio-mode="editor-only"] #rightSectionHeader .section-header-main::before {
2372
+ content: none;
2373
+ display: none;
2374
+ }
2375
+
2376
+ body.studio-ui-refresh #leftSectionHeader,
2377
+ body.studio-ui-refresh #rightSectionHeader {
2378
+ position: relative;
2379
+ z-index: 30;
2380
+ display: grid;
2381
+ gap: 7px;
2382
+ background: transparent;
2383
+ padding: 8px 10px 7px;
2384
+ overflow: visible;
2385
+ }
2386
+
2387
+ body.studio-ui-refresh #leftSectionHeader {
2388
+ grid-template-columns: 1fr;
2389
+ align-items: stretch;
2390
+ }
2391
+
2392
+ body.studio-ui-refresh #rightSectionHeader {
2393
+ grid-template-columns: minmax(0, 1fr) auto;
2394
+ align-items: center;
2395
+ }
2396
+
2397
+ body.studio-ui-refresh .studio-refresh-utility-left,
2398
+ body.studio-ui-refresh .studio-refresh-pane-identity,
2399
+ body.studio-ui-refresh .studio-refresh-pane-tools,
2400
+ body.studio-ui-refresh .studio-refresh-title-group,
2401
+ body.studio-ui-refresh .studio-refresh-context-group,
2402
+ body.studio-ui-refresh .studio-refresh-action-line {
2403
+ display: flex;
2404
+ align-items: center;
2405
+ gap: 7px;
2406
+ min-width: 0;
2407
+ flex-wrap: wrap;
2408
+ }
2409
+
2410
+ body.studio-ui-refresh .studio-refresh-header-top,
2411
+ body.studio-ui-refresh .studio-refresh-header-utility {
2412
+ display: grid;
2413
+ grid-template-columns: minmax(0, 1fr) auto;
2414
+ align-items: center;
2415
+ gap: 10px;
2416
+ min-width: 0;
2417
+ }
2418
+
2419
+ body.studio-ui-refresh .studio-refresh-pane-identity {
2420
+ display: grid;
2421
+ grid-template-columns: auto minmax(0, 1fr);
2422
+ align-items: center;
2423
+ column-gap: 10px;
2424
+ row-gap: 6px;
2425
+ }
2426
+
2427
+ body.studio-ui-refresh .studio-refresh-title-group,
2428
+ body.studio-ui-refresh .studio-refresh-context-group,
2429
+ body.studio-ui-refresh .studio-refresh-utility-left {
2430
+ flex-wrap: nowrap;
2431
+ }
2432
+
2433
+ body.studio-ui-refresh .studio-refresh-context-group,
2434
+ body.studio-ui-refresh .studio-refresh-utility-left {
2435
+ overflow: hidden;
2436
+ white-space: nowrap;
2437
+ }
2438
+
2439
+ body.studio-ui-refresh .studio-refresh-title-group {
2440
+ gap: 3px;
2441
+ }
2442
+
2443
+ body.studio-ui-refresh .studio-refresh-pane-tools {
2444
+ justify-content: flex-end;
2445
+ flex-wrap: nowrap;
2446
+ }
2447
+
2448
+ body.studio-ui-refresh .studio-refresh-sep {
2449
+ display: inline-block;
2450
+ width: 1px;
2451
+ height: 18px;
2452
+ background: var(--border-muted);
2453
+ margin: 0 1px;
2454
+ flex: 0 0 1px;
2455
+ }
2456
+
2457
+ body.studio-ui-refresh .studio-refresh-icon {
2458
+ width: 17px;
2459
+ height: 17px;
2460
+ stroke: currentColor;
2461
+ stroke-width: 1.85;
2462
+ stroke-linecap: round;
2463
+ stroke-linejoin: round;
2464
+ fill: none;
2465
+ pointer-events: none;
2466
+ }
2467
+
2468
+ body.studio-ui-refresh #leftSectionHeader select,
2469
+ body.studio-ui-refresh #leftSectionHeader button,
2470
+ body.studio-ui-refresh #rightSectionHeader select,
2471
+ body.studio-ui-refresh #rightSectionHeader button,
2472
+ body.studio-ui-refresh .studio-refresh-toolbar button,
2473
+ body.studio-ui-refresh .studio-refresh-toolbar select {
2474
+ border-color: transparent;
2475
+ background: transparent;
2476
+ font-size: 14px;
2477
+ }
2478
+
2479
+ body.studio-ui-refresh #leftSectionHeader select:hover,
2480
+ body.studio-ui-refresh #leftSectionHeader button:not(:disabled):hover,
2481
+ body.studio-ui-refresh #rightSectionHeader select:hover,
2482
+ body.studio-ui-refresh #rightSectionHeader button:not(:disabled):hover,
2483
+ body.studio-ui-refresh .studio-refresh-toolbar button:not(:disabled):hover,
2484
+ body.studio-ui-refresh .studio-refresh-toolbar select:not(:disabled):hover {
2485
+ background: var(--panel-2);
2486
+ }
2487
+
2488
+ body.studio-ui-refresh #leftSectionHeader #editorViewSelect,
2489
+ body.studio-ui-refresh #rightSectionHeader #rightViewSelect {
2490
+ font-size: 15px;
2491
+ font-weight: 750;
2492
+ padding: 3px 5px;
2493
+ max-width: 230px;
2494
+ }
2495
+
2496
+ body.studio-ui-refresh .studio-refresh-static-title {
2497
+ color: var(--text);
2498
+ font-size: 15px;
2499
+ font-weight: 700;
2500
+ padding: 3px 5px;
2501
+ max-width: 230px;
2502
+ white-space: nowrap;
2503
+ }
2504
+
2505
+ body.studio-ui-refresh #leftFocusBtn,
2506
+ body.studio-ui-refresh #rightFocusBtn {
2507
+ width: 32px;
2508
+ min-width: 32px;
2509
+ min-height: 32px;
2510
+ padding: 0;
2511
+ color: var(--muted);
2512
+ align-items: center;
2513
+ justify-content: center;
2514
+ }
2515
+
2516
+ body.studio-ui-refresh #sourceBadge,
2517
+ body.studio-ui-refresh #resourceDirBtn,
2518
+ body.studio-ui-refresh #resourceDirLabel {
2519
+ border-color: transparent;
2520
+ background: transparent;
2521
+ padding: 4px 6px;
2522
+ font-size: 14px;
2523
+ border-radius: 8px;
2524
+ }
2525
+
2526
+ body.studio-ui-refresh #sourceBadge {
2527
+ color: var(--text);
2528
+ max-width: min(34rem, 54vw);
2529
+ min-width: 0;
2530
+ overflow: hidden;
2531
+ text-overflow: ellipsis;
2532
+ white-space: nowrap;
2533
+ }
2534
+
2535
+ body.studio-ui-refresh #resourceDirBtn,
2536
+ body.studio-ui-refresh #resourceDirLabel,
2537
+ body.studio-ui-refresh #reviewNotesBtn,
2538
+ body.studio-ui-refresh #outlineBtn,
2539
+ body.studio-ui-refresh #scratchpadBtn,
2540
+ body.studio-ui-refresh .studio-refresh-tool-tab {
2541
+ color: var(--text);
2542
+ }
2543
+
2544
+ body.studio-ui-refresh #resourceDirInputWrap.visible {
2545
+ display: inline-flex;
2546
+ }
2547
+
2548
+ body.studio-ui-refresh #syncBadge {
2549
+ display: inline-flex;
2550
+ align-items: center;
2551
+ gap: 6px;
2552
+ min-height: 26px;
2553
+ border: 0;
2554
+ border-radius: 999px;
2555
+ padding: 3px 9px;
2556
+ background: var(--panel-2);
2557
+ color: var(--muted);
2558
+ opacity: 1;
2559
+ }
2560
+
2561
+ body.studio-ui-refresh #syncBadge[hidden] {
2562
+ display: none !important;
2563
+ }
2564
+
2565
+ body.studio-ui-refresh #syncBadge::before {
2566
+ content: "";
2567
+ width: 7px;
2568
+ height: 7px;
2569
+ border-radius: 999px;
2570
+ background: var(--success, #22c55e);
2571
+ box-shadow: 0 0 0 3px color-mix(in srgb, var(--success, #22c55e) 14%, transparent);
2572
+ }
2573
+
2574
+ body.studio-ui-refresh #reviewNotesBtn,
2575
+ body.studio-ui-refresh #outlineBtn,
2576
+ body.studio-ui-refresh #scratchpadBtn,
2577
+ body.studio-ui-refresh #exportPdfBtn,
2578
+ body.studio-ui-refresh .studio-refresh-tool-tab {
2579
+ font-weight: 500;
2580
+ padding: 6px 9px;
2581
+ border-radius: 9px;
2582
+ }
2583
+
2584
+ body.studio-ui-refresh #exportPdfBtn {
2585
+ background: var(--panel-2);
2586
+ color: var(--text);
2587
+ border-color: transparent;
2588
+ }
2589
+
2590
+ body.studio-ui-refresh #reviewNotesBtn.is-active,
2591
+ body.studio-ui-refresh #outlineBtn.is-active,
2592
+ body.studio-ui-refresh #scratchpadBtn.has-content,
2593
+ body.studio-ui-refresh #reviewNotesBtn.has-content {
2594
+ background: var(--accent-soft);
2595
+ color: var(--accent);
2596
+ border-color: transparent;
2597
+ }
2598
+
2599
+ body.studio-ui-refresh .source-wrap {
2600
+ padding: 0;
2601
+ gap: 0;
2602
+ }
2603
+
2604
+ body.studio-ui-refresh .source-meta {
2605
+ display: block;
2606
+ padding: 0;
2607
+ border-bottom: 1px solid var(--border-muted);
2608
+ position: relative;
2609
+ z-index: 20;
2610
+ overflow: visible;
2611
+ }
2612
+
2613
+ body.studio-ui-refresh .source-body {
2614
+ padding: 8px;
2615
+ }
2616
+
2617
+ body.studio-ui-refresh .studio-refresh-toolbar {
2618
+ position: relative;
2619
+ padding: 9px 12px 10px;
2620
+ overflow: visible;
2621
+ }
2622
+
2623
+ body.studio-ui-refresh .studio-refresh-toolbar-main {
2624
+ display: grid;
2625
+ grid-template-columns: minmax(0, 1fr) auto;
2626
+ gap: 12px;
2627
+ align-items: start;
2628
+ min-width: 0;
2629
+ }
2630
+
2631
+ body.studio-ui-refresh .studio-refresh-toolbar-actions {
2632
+ display: grid;
2633
+ gap: 7px;
2634
+ justify-items: start;
2635
+ min-width: 0;
2636
+ }
2637
+
2638
+ body.studio-ui-refresh .studio-refresh-toolbar-state {
2639
+ display: grid;
2640
+ gap: 7px;
2641
+ justify-items: end;
2642
+ align-content: start;
2643
+ min-width: max-content;
2644
+ }
2645
+
2646
+ body.studio-ui-refresh .studio-refresh-chip {
2647
+ display: inline-flex;
2648
+ align-items: center;
2649
+ gap: 6px;
2650
+ border-radius: 9px;
2651
+ color: var(--text);
2652
+ white-space: nowrap;
2653
+ padding: 6px 9px;
2654
+ font-size: 14px;
2655
+ }
2656
+
2657
+ body.studio-ui-refresh .studio-refresh-chip::after {
2658
+ content: "⌄";
2659
+ color: var(--muted);
2660
+ font-size: 15px;
2661
+ line-height: 1;
2662
+ transform: translateY(-1px);
2663
+ }
2664
+
2665
+ body.studio-ui-refresh .studio-refresh-chip.is-open {
2666
+ background: var(--panel-2);
2667
+ color: var(--text);
2668
+ }
2669
+
2670
+ body.studio-ui-refresh .studio-refresh-menu-anchor {
2671
+ position: relative;
2672
+ display: inline-flex;
2673
+ align-items: center;
2674
+ overflow: visible;
2675
+ }
2676
+
2677
+ body.studio-ui-refresh .studio-refresh-menu {
2678
+ position: absolute;
2679
+ top: calc(100% + 8px);
2680
+ right: 0;
2681
+ width: min(420px, calc(100vw - 48px));
2682
+ padding: 10px;
2683
+ border: 1px solid var(--border);
2684
+ border-radius: 12px;
2685
+ background: var(--panel);
2686
+ box-shadow: 0 18px 46px rgba(0, 0, 0, 0.32);
2687
+ z-index: 100;
2688
+ }
2689
+
2690
+ body.studio-ui-refresh .studio-refresh-review-anchor .studio-refresh-menu {
2691
+ width: min(360px, calc(100vw - 48px));
2692
+ left: auto;
2693
+ right: 0;
2694
+ }
2695
+
2696
+ body.studio-ui-refresh .studio-refresh-view-anchor .studio-refresh-menu {
2697
+ width: min(320px, calc(100vw - 48px));
2698
+ }
2699
+
2700
+ body.studio-ui-refresh .studio-refresh-menu[hidden] {
2701
+ display: none !important;
2702
+ }
2703
+
2704
+ body.studio-ui-refresh .studio-refresh-menu-section {
2705
+ padding: 8px 0 6px;
2706
+ border-top: 1px solid var(--border-muted);
2707
+ }
2708
+
2709
+ body.studio-ui-refresh .studio-refresh-menu-section:first-child {
2710
+ border-top: 0;
2711
+ padding-top: 0;
2712
+ }
2713
+
2714
+ body.studio-ui-refresh .studio-refresh-menu-heading {
2715
+ margin: 0 6px 6px;
2716
+ color: var(--muted);
2717
+ font-size: 11px;
2718
+ font-weight: 700;
2719
+ text-transform: uppercase;
2720
+ letter-spacing: 0.08em;
2721
+ }
2722
+
2723
+ body.studio-ui-refresh .studio-refresh-menu-item {
2724
+ display: flex;
2725
+ align-items: center;
2726
+ gap: 8px;
2727
+ padding: 4px 0;
2728
+ min-width: 0;
2729
+ }
2730
+
2731
+ body.studio-ui-refresh .studio-refresh-menu-item > button,
2732
+ body.studio-ui-refresh .studio-refresh-menu-item > select {
2733
+ width: 100%;
2734
+ justify-content: flex-start;
2735
+ text-align: left;
2736
+ border-color: transparent;
2737
+ background: transparent;
2738
+ color: var(--text);
2739
+ }
2740
+
2741
+ body.studio-ui-refresh .studio-refresh-menu #critiqueBtn {
2742
+ justify-content: flex-start;
2743
+ text-align: left;
2744
+ }
2745
+
2746
+ body.studio-ui-refresh .studio-refresh-menu-item > button:not(:disabled):hover,
2747
+ body.studio-ui-refresh .studio-refresh-menu-item > select:not(:disabled):hover {
2748
+ background: var(--panel-2);
2749
+ }
2750
+
2751
+ body.studio-ui-refresh #copyDraftBtn:only-child {
2752
+ min-height: 32px;
2753
+ padding: 5px 9px;
2754
+ }
2755
+
2756
+ body.studio-ui-refresh #sendRunBtn,
2757
+ body.studio-ui-refresh #queueSteerBtn,
2758
+ body.studio-ui-refresh #loadResponseBtn:not([hidden]) {
2759
+ height: 30px;
2760
+ min-height: 30px;
2761
+ padding: 4px 10px;
2762
+ font-size: 13px;
2763
+ line-height: 1.2;
2764
+ border-radius: 8px;
2765
+ }
2766
+
2767
+ body.studio-ui-refresh #sendRunBtn {
2768
+ min-width: 9.2rem;
2769
+ }
2770
+
2771
+ body.studio-ui-refresh #queueSteerBtn {
2772
+ min-width: auto;
2773
+ }
2774
+
2775
+ body.studio-ui-refresh #queueSteerBtn:not(:disabled) {
2776
+ background: var(--accent);
2777
+ border-color: var(--accent);
2778
+ color: var(--accent-contrast);
2779
+ font-weight: 600;
2780
+ }
2781
+
2782
+ body.studio-ui-refresh #queueSteerBtn:not(:disabled):hover {
2783
+ background: var(--accent);
2784
+ filter: brightness(0.95);
2785
+ }
2786
+
2787
+ body.studio-ui-refresh .studio-refresh-review-btn.request-stop-active {
2788
+ background: var(--error);
2789
+ border-color: var(--error);
2790
+ color: var(--error-contrast);
2791
+ font-weight: 600;
2792
+ }
2793
+
2794
+ body.studio-ui-refresh .studio-refresh-review-btn.request-stop-active::after {
2795
+ content: none;
2796
+ }
2797
+
2798
+ body.studio-ui-refresh .studio-refresh-menu #critiqueBtn.request-stop-active {
2799
+ background: var(--error);
2800
+ border-color: var(--error);
2801
+ color: var(--error-contrast);
2802
+ font-weight: 600;
2803
+ }
2804
+
2805
+ @media (max-width: 1280px) {
2806
+ body.studio-ui-refresh #rightSectionHeader,
2807
+ body.studio-ui-refresh .studio-refresh-header-top,
2808
+ body.studio-ui-refresh .studio-refresh-header-utility,
2809
+ body.studio-ui-refresh .studio-refresh-toolbar-main,
2810
+ body.studio-ui-refresh .studio-refresh-pane-identity {
2811
+ grid-template-columns: 1fr;
2812
+ }
2813
+
2814
+ body.studio-ui-refresh .studio-refresh-pane-tools,
2815
+ body.studio-ui-refresh .studio-refresh-toolbar-state {
2816
+ justify-content: flex-start;
2817
+ justify-items: start;
2818
+ }
2819
+
2820
+ body.studio-ui-refresh .studio-refresh-pane-tools,
2821
+ body.studio-ui-refresh .studio-refresh-title-group,
2822
+ body.studio-ui-refresh .studio-refresh-utility-left {
2823
+ flex-wrap: wrap;
2824
+ }
2825
+
2826
+ body.studio-ui-refresh .studio-refresh-toolbar-state {
2827
+ min-width: 0;
2828
+ }
2829
+ }