@firstpick/pi-package-webui 0.3.2 → 0.3.4

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/public/styles.css CHANGED
@@ -1494,6 +1494,102 @@ body.side-panel-collapsed .terminal-tabs-shell {
1494
1494
  box-shadow: 0 0 1rem rgba(245, 194, 231, 0.20);
1495
1495
  }
1496
1496
 
1497
+ @media (min-width: 721px) {
1498
+ body.terminal-tabs-left .chat-panel {
1499
+ display: grid;
1500
+ grid-template-columns: clamp(13rem, 18vw, 19rem) minmax(0, 1fr);
1501
+ grid-template-rows: auto minmax(0, 1fr) auto auto auto auto auto;
1502
+ align-items: stretch;
1503
+ }
1504
+ body.terminal-tabs-left .terminal-tabs-shell {
1505
+ grid-column: 1;
1506
+ grid-row: 1 / -1;
1507
+ flex-direction: column;
1508
+ align-items: stretch;
1509
+ gap: 0.58rem;
1510
+ min-width: 0;
1511
+ min-height: 0;
1512
+ padding: 0.76rem;
1513
+ border-right: 1px solid rgba(180, 190, 254, 0.16);
1514
+ border-bottom: 0;
1515
+ background:
1516
+ linear-gradient(180deg, rgba(var(--ctp-crust-rgb), 0.96), rgba(var(--ctp-base-rgb), 0.82), rgba(var(--ctp-mantle-rgb), 0.92)),
1517
+ radial-gradient(circle at 0% 0%, rgba(245, 194, 231, 0.12), transparent 18rem);
1518
+ box-shadow: inset -1px 0 0 rgba(255,255,255,0.035), 0.45rem 0 1rem rgba(var(--ctp-crust-rgb), 0.18);
1519
+ }
1520
+ body.terminal-tabs-left.side-panel-collapsed .terminal-tabs-shell {
1521
+ padding-right: 0.76rem;
1522
+ }
1523
+ body.terminal-tabs-left .terminal-tabs {
1524
+ flex: 1 1 auto;
1525
+ flex-direction: column;
1526
+ align-items: stretch;
1527
+ min-height: 0;
1528
+ padding-right: 0.08rem;
1529
+ overflow-x: hidden;
1530
+ overflow-y: auto;
1531
+ }
1532
+ body.terminal-tabs-left .terminal-tabs.terminal-tabs-dense {
1533
+ flex-wrap: nowrap;
1534
+ max-height: none;
1535
+ overflow-x: hidden;
1536
+ overflow-y: auto;
1537
+ }
1538
+ body.terminal-tabs-left .terminal-tab,
1539
+ body.terminal-tabs-left .terminal-tabs.terminal-tabs-dense .terminal-tab {
1540
+ flex: 0 0 auto;
1541
+ width: 100%;
1542
+ min-width: 0;
1543
+ max-width: none;
1544
+ }
1545
+ body.terminal-tabs-left .terminal-tab-group-menu {
1546
+ --terminal-left-dropdown-bridge: 0.78rem;
1547
+ inset: 0 auto auto 100%;
1548
+ width: clamp(13rem, 18vw, 20rem);
1549
+ min-width: 13rem;
1550
+ max-width: min(22rem, calc(100vw - 2rem));
1551
+ padding-top: 0;
1552
+ padding-left: var(--terminal-left-dropdown-bridge);
1553
+ }
1554
+ body.terminal-tabs-left .terminal-new-tab-menu.composer-publish-menu {
1555
+ width: 100%;
1556
+ }
1557
+ body.terminal-tabs-left .terminal-new-tab-button,
1558
+ body.terminal-tabs-left .terminal-close-all-button {
1559
+ width: 100%;
1560
+ justify-content: flex-start;
1561
+ text-align: left;
1562
+ }
1563
+ body.terminal-tabs-left .terminal-new-tab-menu .composer-publish-menu-panel {
1564
+ --terminal-left-dropdown-bridge: 0.78rem;
1565
+ inset: 0 auto auto 100%;
1566
+ width: clamp(12rem, 16vw, 18rem);
1567
+ min-width: 12rem;
1568
+ padding-top: 0;
1569
+ padding-left: var(--terminal-left-dropdown-bridge);
1570
+ }
1571
+ body.terminal-tabs-left .terminal-close-all-button {
1572
+ margin-top: auto;
1573
+ }
1574
+ body.terminal-tabs-left .widget-area,
1575
+ body.terminal-tabs-left .chat,
1576
+ body.terminal-tabs-left .feedback-tray,
1577
+ body.terminal-tabs-left .jump-to-latest-button,
1578
+ body.terminal-tabs-left .statusbar,
1579
+ body.terminal-tabs-left .git-workflow-panel,
1580
+ body.terminal-tabs-left .composer {
1581
+ grid-column: 2;
1582
+ min-width: 0;
1583
+ }
1584
+ body.terminal-tabs-left .widget-area { grid-row: 1; }
1585
+ body.terminal-tabs-left .chat { grid-row: 2; }
1586
+ body.terminal-tabs-left .feedback-tray { grid-row: 3; }
1587
+ body.terminal-tabs-left .jump-to-latest-button { grid-row: 4; }
1588
+ body.terminal-tabs-left .statusbar { grid-row: 5; }
1589
+ body.terminal-tabs-left .git-workflow-panel { grid-row: 6; }
1590
+ body.terminal-tabs-left .composer { grid-row: 7; }
1591
+ }
1592
+
1497
1593
  .widget-area {
1498
1594
  flex: 0 0 auto;
1499
1595
  border-bottom: 1px solid rgba(180, 190, 254, 0.16);
@@ -1502,7 +1598,8 @@ body.side-panel-collapsed .terminal-tabs-shell {
1502
1598
  background: linear-gradient(90deg, rgba(203, 166, 247, 0.10), rgba(137, 180, 250, 0.05), rgba(148, 226, 213, 0.08));
1503
1599
  }
1504
1600
  .widget-area:has(.release-npm-live-widget .release-npm-output-details[open]),
1505
- .widget-area:has(.release-aur-live-widget .release-npm-output-details[open]) {
1601
+ .widget-area:has(.release-aur-live-widget .release-npm-output-details[open]),
1602
+ .widget-area:has(.app-runner-live-widget .release-npm-output-details[open]) {
1506
1603
  flex: 0 0 min(44rem, 68dvh);
1507
1604
  min-height: 0;
1508
1605
  overflow: auto;
@@ -1546,6 +1643,7 @@ body.side-panel-collapsed .terminal-tabs-shell {
1546
1643
  box-shadow: none;
1547
1644
  }
1548
1645
  .statusbar-git-footer {
1646
+ --footer-chip-min-width: 7.6rem;
1549
1647
  gap: 0.58rem;
1550
1648
  }
1551
1649
  .footer-line {
@@ -1559,6 +1657,12 @@ body.side-panel-collapsed .terminal-tabs-shell {
1559
1657
  flex-wrap: wrap;
1560
1658
  gap: 0.5rem;
1561
1659
  }
1660
+ .footer-line-main .footer-metric {
1661
+ flex: 1 1 var(--footer-chip-min-width);
1662
+ width: auto;
1663
+ min-width: 0;
1664
+ max-width: 100%;
1665
+ }
1562
1666
  .footer-line-meta {
1563
1667
  display: flex;
1564
1668
  flex-wrap: nowrap;
@@ -1566,14 +1670,14 @@ body.side-panel-collapsed .terminal-tabs-shell {
1566
1670
  color: rgba(var(--ctp-subtext-rgb), 0.76);
1567
1671
  }
1568
1672
  .footer-line-meta .footer-meta {
1569
- flex: 0 1 max-content;
1673
+ flex: 1 1 var(--footer-chip-min-width);
1674
+ width: auto;
1675
+ min-width: 0;
1676
+ max-width: 100%;
1570
1677
  }
1571
1678
  .footer-line-meta .footer-details-toggle {
1572
1679
  flex: 0 0 auto;
1573
1680
  }
1574
- .footer-workspace {
1575
- flex: 1 1 8rem;
1576
- }
1577
1681
  .footer-line-tui {
1578
1682
  align-items: center;
1579
1683
  gap: 0.5rem;
@@ -1851,10 +1955,6 @@ button.footer-meta {
1851
1955
  color: var(--ctp-pink);
1852
1956
  text-shadow: 0 0 0.55rem rgba(245, 194, 231, 0.18);
1853
1957
  }
1854
- .footer-changes,
1855
- .footer-git-extra {
1856
- flex: 0 0 auto;
1857
- }
1858
1958
  .footer-changes {
1859
1959
  border-color: rgba(249, 226, 175, 0.36);
1860
1960
  background: transparent;
@@ -1914,6 +2014,11 @@ button.footer-meta {
1914
2014
  align-items: flex-start;
1915
2015
  justify-content: space-between;
1916
2016
  gap: 1rem;
2017
+ flex-wrap: wrap;
2018
+ }
2019
+ .git-workflow-header > div:first-child {
2020
+ flex: 1 1 18rem;
2021
+ min-width: min(100%, 18rem);
1917
2022
  }
1918
2023
  .git-workflow-header strong {
1919
2024
  display: block;
@@ -1952,6 +2057,15 @@ button.footer-meta {
1952
2057
  letter-spacing: 0.08em;
1953
2058
  text-transform: uppercase;
1954
2059
  }
2060
+ button.git-workflow-step {
2061
+ min-width: auto;
2062
+ min-height: 2.15rem;
2063
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.035);
2064
+ }
2065
+ button.git-workflow-step:hover:not(:disabled) {
2066
+ border-color: rgba(203, 166, 247, 0.48);
2067
+ box-shadow: 0 0 0 1px rgba(203, 166, 247, 0.10), 0 0 1rem rgba(203, 166, 247, 0.14);
2068
+ }
1955
2069
  .git-workflow-step::before {
1956
2070
  content: "";
1957
2071
  position: absolute;
@@ -1960,7 +2074,8 @@ button.footer-meta {
1960
2074
  width: 0.52rem;
1961
2075
  height: 0.52rem;
1962
2076
  border-radius: 999px;
1963
- background: rgba(var(--ctp-overlay-rgb), 0.72);
2077
+ background: var(--ctp-yellow);
2078
+ box-shadow: 0 0 0.65rem rgba(249, 226, 175, 0.26);
1964
2079
  transform: translateY(-50%);
1965
2080
  }
1966
2081
  .git-workflow-step.active {
@@ -1970,8 +2085,8 @@ button.footer-meta {
1970
2085
  box-shadow: 0 0 1rem rgba(203, 166, 247, 0.16);
1971
2086
  }
1972
2087
  .git-workflow-step.active::before {
1973
- background: var(--ctp-pink);
1974
- box-shadow: 0 0 0.7rem var(--glow-pink);
2088
+ background: var(--ctp-yellow);
2089
+ box-shadow: 0 0 0.7rem rgba(249, 226, 175, 0.34);
1975
2090
  }
1976
2091
  .git-workflow-step.done {
1977
2092
  color: var(--ctp-green);
@@ -2002,6 +2117,39 @@ button.footer-meta {
2002
2117
  min-height: 2.15rem;
2003
2118
  padding: 0.45rem 0.72rem;
2004
2119
  }
2120
+ .git-workflow-actions button[data-tooltip] {
2121
+ position: relative;
2122
+ }
2123
+ .git-workflow-actions button[data-tooltip]::after {
2124
+ content: attr(data-tooltip);
2125
+ position: absolute;
2126
+ left: 0;
2127
+ bottom: calc(100% + 0.66rem);
2128
+ z-index: 32;
2129
+ width: min(28rem, calc(100vw - 3rem));
2130
+ max-width: min(28rem, calc(100vw - 3rem));
2131
+ padding: 0.62rem 0.72rem;
2132
+ border: 1px solid rgba(203, 166, 247, 0.28);
2133
+ border-radius: 0.75rem;
2134
+ color: var(--ctp-text);
2135
+ background: rgba(var(--ctp-crust-rgb), 0.96);
2136
+ box-shadow: 0 1rem 2.2rem rgba(var(--ctp-crust-rgb), 0.38), 0 0 1rem rgba(203, 166, 247, 0.18);
2137
+ font-size: 0.78rem;
2138
+ font-weight: 650;
2139
+ line-height: 1.35;
2140
+ letter-spacing: normal;
2141
+ text-align: left;
2142
+ white-space: pre-line;
2143
+ pointer-events: none;
2144
+ opacity: 0;
2145
+ transform: translateY(0.22rem);
2146
+ transition: opacity 140ms ease, transform 140ms ease;
2147
+ }
2148
+ .git-workflow-actions button[data-tooltip]:hover::after,
2149
+ .git-workflow-actions button[data-tooltip]:focus-visible::after {
2150
+ opacity: 1;
2151
+ transform: translateY(0);
2152
+ }
2005
2153
  .widget-area:empty { display: none; }
2006
2154
  .widget {
2007
2155
  background: rgba(var(--ctp-crust-rgb), 0.72);
@@ -2038,6 +2186,55 @@ button.footer-meta {
2038
2186
  linear-gradient(145deg, rgba(var(--ctp-crust-rgb), 0.98), rgba(var(--ctp-mantle-rgb), 0.92));
2039
2187
  }
2040
2188
  .release-aur-widget .release-npm-kicker { color: var(--ctp-peach); }
2189
+ .app-runner-widget {
2190
+ border-color: rgba(166, 227, 161, 0.62);
2191
+ border-left-color: rgba(166, 227, 161, 0.88);
2192
+ background:
2193
+ radial-gradient(circle at 4% 0%, rgba(166, 227, 161, 0.20), transparent 16rem),
2194
+ radial-gradient(circle at 96% 12%, rgba(137, 180, 250, 0.14), transparent 18rem),
2195
+ linear-gradient(145deg, rgba(var(--ctp-crust-rgb), 0.98), rgba(var(--ctp-mantle-rgb), 0.92));
2196
+ }
2197
+ .app-runner-widget .release-npm-kicker { color: var(--ctp-green); }
2198
+ .app-runner-status.done { color: var(--ctp-green); }
2199
+ .app-runner-status.failed,
2200
+ .app-runner-status.error { color: var(--ctp-red); }
2201
+ .app-runner-output-controls {
2202
+ display: flex;
2203
+ flex-wrap: wrap;
2204
+ align-items: center;
2205
+ justify-content: flex-start;
2206
+ gap: 0.56rem 0.62rem;
2207
+ min-width: 0;
2208
+ padding-top: 0.1rem;
2209
+ }
2210
+ .app-runner-output-actions,
2211
+ .app-runner-output-pills {
2212
+ display: flex;
2213
+ flex: 0 1 auto;
2214
+ flex-wrap: wrap;
2215
+ align-items: center;
2216
+ justify-content: flex-start;
2217
+ gap: 0.42rem;
2218
+ min-width: 0;
2219
+ }
2220
+ .app-runner-output-controls .release-npm-action {
2221
+ flex: 0 0 auto;
2222
+ min-height: 2.15rem;
2223
+ padding: 0.34rem 0.72rem;
2224
+ border-radius: 0.68rem;
2225
+ line-height: 1.1;
2226
+ }
2227
+ .app-runner-output-controls .app-runner-close-action {
2228
+ padding-inline: 0.82rem;
2229
+ font-weight: 900;
2230
+ }
2231
+ .app-runner-output-meta {
2232
+ flex: 1 1 16rem;
2233
+ min-width: min(100%, 12rem);
2234
+ overflow: hidden;
2235
+ text-overflow: ellipsis;
2236
+ white-space: nowrap;
2237
+ }
2041
2238
  .release-npm-header {
2042
2239
  display: grid;
2043
2240
  grid-template-columns: minmax(0, 1fr) auto auto;
@@ -2203,7 +2400,8 @@ button.footer-meta {
2203
2400
  overscroll-behavior: contain;
2204
2401
  }
2205
2402
  .release-npm-live-widget .release-npm-output-details[open] .release-npm-terminal,
2206
- .release-aur-live-widget .release-npm-output-details[open] .release-npm-terminal {
2403
+ .release-aur-live-widget .release-npm-output-details[open] .release-npm-terminal,
2404
+ .app-runner-live-widget .release-npm-output-details[open] .release-npm-terminal {
2207
2405
  height: clamp(15rem, 42dvh, 31rem);
2208
2406
  min-height: 0;
2209
2407
  }
@@ -2728,6 +2926,14 @@ button.footer-meta {
2728
2926
  padding: 0 0.9rem 0.85rem;
2729
2927
  border-top: 1px solid rgba(249, 226, 175, 0.12);
2730
2928
  }
2929
+ .message.toolResult .message-collapse[open] > .message-body,
2930
+ .message.bashExecution .message-collapse[open] > .message-body,
2931
+ .message.compactionSummary .message-collapse[open] > .message-body {
2932
+ max-height: min(42rem, 62dvh);
2933
+ overflow: auto;
2934
+ overscroll-behavior: contain;
2935
+ scrollbar-gutter: stable;
2936
+ }
2731
2937
  .tool-result-preview {
2732
2938
  padding: 0 0.9rem 0.85rem;
2733
2939
  border-top: 1px solid rgba(249, 226, 175, 0.10);
@@ -2789,6 +2995,12 @@ button.footer-meta {
2789
2995
  font-weight: 900;
2790
2996
  letter-spacing: 0.04em;
2791
2997
  }
2998
+ .tool-output-details[open] > .tool-output-code {
2999
+ max-height: min(34rem, 52dvh);
3000
+ overflow: auto;
3001
+ overscroll-behavior: contain;
3002
+ scrollbar-gutter: stable;
3003
+ }
2792
3004
  .tool-output-details[open] + .tool-output-preview {
2793
3005
  display: none;
2794
3006
  }
@@ -2811,7 +3023,10 @@ button.footer-meta {
2811
3023
  text-transform: uppercase;
2812
3024
  }
2813
3025
  .tool-raw-code {
2814
- max-height: 18rem;
3026
+ max-height: min(18rem, 42dvh);
3027
+ overflow: auto;
3028
+ overscroll-behavior: contain;
3029
+ scrollbar-gutter: stable;
2815
3030
  color: rgba(var(--ctp-text-rgb), 0.76);
2816
3031
  font-size: 0.78rem;
2817
3032
  }
@@ -3178,14 +3393,29 @@ summary { cursor: pointer; color: var(--warning); }
3178
3393
  color: rgba(var(--ctp-subtext-rgb), 0.72);
3179
3394
  font-size: 0.78rem;
3180
3395
  }
3396
+ .attachment-edit-button,
3181
3397
  .attachment-remove-button {
3182
3398
  min-height: 0;
3183
3399
  padding: 0.12rem 0.34rem;
3184
3400
  border-radius: 999px;
3401
+ box-shadow: none;
3402
+ }
3403
+ .attachment-edit-button {
3404
+ color: var(--ctp-blue);
3405
+ border-color: rgba(137, 180, 250, 0.32);
3406
+ background: rgba(137, 180, 250, 0.08);
3407
+ font-size: 0.75rem;
3408
+ font-weight: 900;
3409
+ }
3410
+ .attachment-edit-button:hover {
3411
+ color: #11111b;
3412
+ background: var(--ctp-blue);
3413
+ border-color: transparent;
3414
+ }
3415
+ .attachment-remove-button {
3185
3416
  color: var(--ctp-red);
3186
3417
  border-color: rgba(243, 139, 168, 0.32);
3187
3418
  background: rgba(243, 139, 168, 0.08);
3188
- box-shadow: none;
3189
3419
  }
3190
3420
  .attachment-remove-button:hover {
3191
3421
  color: #11111b;
@@ -3391,6 +3621,66 @@ summary { cursor: pointer; color: var(--warning); }
3391
3621
  .composer-native-command-menu.open .composer-native-command-button {
3392
3622
  border-color: rgba(203, 166, 247, 0.62);
3393
3623
  }
3624
+ .composer-app-runner-button {
3625
+ color: var(--ctp-green);
3626
+ border-color: rgba(166, 227, 161, 0.40);
3627
+ background:
3628
+ linear-gradient(120deg, rgba(166, 227, 161, 0.15), rgba(148, 226, 213, 0.10)),
3629
+ linear-gradient(180deg, rgba(var(--ctp-surface-rgb), 0.88), rgba(var(--ctp-crust-rgb), 0.88));
3630
+ }
3631
+ .composer-app-runner-button:hover,
3632
+ .composer-app-runner-button.menu-open {
3633
+ color: #11111b;
3634
+ background: linear-gradient(120deg, var(--ctp-green), var(--ctp-teal), var(--ctp-blue));
3635
+ border-color: transparent;
3636
+ }
3637
+ .composer-app-runner-button:disabled {
3638
+ opacity: 0.52;
3639
+ cursor: not-allowed;
3640
+ }
3641
+ .composer-app-runner-menu.open .composer-app-runner-button {
3642
+ border-color: rgba(166, 227, 161, 0.62);
3643
+ }
3644
+ .composer-app-runner-info-button {
3645
+ position: absolute;
3646
+ top: -0.48rem;
3647
+ right: -0.48rem;
3648
+ z-index: 2;
3649
+ flex: none;
3650
+ width: 1.95rem;
3651
+ min-width: 1.95rem;
3652
+ max-width: 1.95rem;
3653
+ height: 1.95rem;
3654
+ min-height: 1.95rem;
3655
+ padding: 0.28rem;
3656
+ overflow: hidden;
3657
+ opacity: 0;
3658
+ color: var(--ctp-teal);
3659
+ border-color: rgba(148, 226, 213, 0.34);
3660
+ border-radius: 999px;
3661
+ background:
3662
+ linear-gradient(120deg, rgba(148, 226, 213, 0.14), rgba(166, 227, 161, 0.08)),
3663
+ linear-gradient(180deg, rgba(var(--ctp-surface-rgb), 0.96), rgba(var(--ctp-crust-rgb), 0.96));
3664
+ box-shadow: none;
3665
+ pointer-events: none;
3666
+ transform: translateY(0.12rem) scale(0.86);
3667
+ transition: opacity 120ms ease, transform 140ms ease, border-color 140ms ease, box-shadow 140ms ease, background 140ms ease;
3668
+ }
3669
+ .composer-app-runner-menu.has-runners:hover .composer-app-runner-info-button,
3670
+ .composer-app-runner-menu.has-runners:focus-within .composer-app-runner-info-button,
3671
+ .composer-app-runner-info-button:focus-visible {
3672
+ opacity: 1;
3673
+ pointer-events: auto;
3674
+ transform: translateY(0) scale(1);
3675
+ box-shadow: 0 0 0 1px rgba(148, 226, 213, 0.08), 0 0.55rem 1.2rem rgba(0, 0, 0, 0.16);
3676
+ }
3677
+ .composer-app-runner-info-button:hover,
3678
+ .composer-app-runner-info-button:focus-visible {
3679
+ color: #11111b;
3680
+ border-color: transparent;
3681
+ background: linear-gradient(120deg, var(--ctp-teal), var(--ctp-green));
3682
+ transform: translateY(-1px);
3683
+ }
3394
3684
  .composer-options-button {
3395
3685
  color: var(--ctp-sky);
3396
3686
  border-color: rgba(137, 220, 235, 0.40);
@@ -3473,6 +3763,62 @@ summary { cursor: pointer; color: var(--warning); }
3473
3763
  background: linear-gradient(120deg, var(--ctp-mauve), var(--ctp-blue));
3474
3764
  box-shadow: 0 0 1rem rgba(203, 166, 247, 0.20);
3475
3765
  }
3766
+ .composer-app-runner-menu-panel {
3767
+ width: min(22rem, calc(100vw - 2rem));
3768
+ min-width: min(18rem, calc(100vw - 2rem));
3769
+ max-width: min(22rem, calc(100vw - 2rem));
3770
+ overflow-x: hidden;
3771
+ }
3772
+ .composer-app-runner-menu-item {
3773
+ display: grid;
3774
+ grid-template-columns: minmax(0, 1fr);
3775
+ place-items: start stretch;
3776
+ justify-content: start;
3777
+ gap: 0.14rem;
3778
+ box-sizing: border-box;
3779
+ width: 100%;
3780
+ min-width: 0;
3781
+ max-width: 100%;
3782
+ padding-inline: 0.72rem;
3783
+ color: var(--ctp-green);
3784
+ border-color: rgba(166, 227, 161, 0.32);
3785
+ background:
3786
+ linear-gradient(120deg, rgba(166, 227, 161, 0.12), rgba(148, 226, 213, 0.08)),
3787
+ var(--ctp-crust);
3788
+ text-align: left;
3789
+ }
3790
+ .composer-app-runner-menu-item:hover,
3791
+ .composer-app-runner-menu-item:focus-visible {
3792
+ color: #11111b;
3793
+ border-color: transparent;
3794
+ background: linear-gradient(120deg, var(--ctp-green), var(--ctp-teal));
3795
+ box-shadow: 0 0 1rem rgba(166, 227, 161, 0.20);
3796
+ }
3797
+ .app-runner-menu-item-label,
3798
+ .app-runner-menu-item-command {
3799
+ display: block;
3800
+ justify-self: stretch;
3801
+ min-width: 0;
3802
+ width: 100%;
3803
+ max-width: 100%;
3804
+ margin: 0;
3805
+ padding: 0;
3806
+ overflow: hidden;
3807
+ text-align: left;
3808
+ text-indent: 0;
3809
+ text-overflow: ellipsis;
3810
+ white-space: nowrap;
3811
+ }
3812
+ .app-runner-menu-item-command {
3813
+ color: rgba(var(--ctp-subtext-rgb), 0.78);
3814
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
3815
+ font-size: 0.68rem;
3816
+ font-weight: 800;
3817
+ }
3818
+ .composer-app-runner-menu-item:hover .app-runner-menu-item-command,
3819
+ .composer-app-runner-menu-item:focus-visible .app-runner-menu-item-command {
3820
+ color: rgba(17, 17, 27, 0.74);
3821
+ }
3476
3822
  .composer-options-menu-item {
3477
3823
  color: var(--ctp-sky);
3478
3824
  border-color: rgba(137, 220, 235, 0.32);
@@ -3559,6 +3905,20 @@ summary { cursor: pointer; color: var(--warning); }
3559
3905
  .composer-input-row button[data-tooltip].tooltip-open::before {
3560
3906
  transform: translate(-1.2rem, 0) rotate(45deg);
3561
3907
  }
3908
+ .composer-row .composer-git-button[data-tooltip]::after {
3909
+ left: 0;
3910
+ right: auto;
3911
+ }
3912
+ .composer-row .composer-git-button[data-tooltip]::before {
3913
+ left: 50%;
3914
+ right: auto;
3915
+ transform: translate(-50%, 0.24rem) rotate(45deg);
3916
+ }
3917
+ .composer-row .composer-git-button[data-tooltip]:hover::before,
3918
+ .composer-row .composer-git-button[data-tooltip]:focus-visible::before,
3919
+ .composer-row .composer-git-button[data-tooltip].tooltip-open::before {
3920
+ transform: translate(-50%, 0) rotate(45deg);
3921
+ }
3562
3922
  .composer-publish-menu:hover > .composer-publish-button[data-tooltip]::before,
3563
3923
  .composer-publish-menu:hover > .composer-publish-button[data-tooltip]::after,
3564
3924
  .composer-publish-menu:focus-within > .composer-publish-button[data-tooltip]::before,
@@ -3853,6 +4213,42 @@ summary { cursor: pointer; color: var(--warning); }
3853
4213
  .prompt-list-status.success { color: var(--ctp-green); }
3854
4214
  .prompt-list-status.warn { color: var(--ctp-yellow); }
3855
4215
  .prompt-list-status.error { color: var(--ctp-red); }
4216
+ .extension-dialog.attachment-text-dialog {
4217
+ width: min(176rem, calc(100vw - 1rem), calc(var(--visual-viewport-height, 100dvh) - 1rem));
4218
+ height: min(176rem, calc(100vw - 1rem), calc(var(--visual-viewport-height, 100dvh) - 1rem));
4219
+ max-height: none;
4220
+ overflow: hidden;
4221
+ aspect-ratio: 1 / 1;
4222
+ }
4223
+ .attachment-text-dialog form {
4224
+ display: grid;
4225
+ grid-template-rows: auto auto minmax(0, 1fr) auto auto;
4226
+ height: 100%;
4227
+ min-height: 0;
4228
+ gap: 0.78rem;
4229
+ }
4230
+ .attachment-text-meta,
4231
+ .attachment-text-status {
4232
+ min-height: 1.05rem;
4233
+ margin: 0;
4234
+ font-size: 0.78rem;
4235
+ font-weight: 800;
4236
+ line-height: 1.36;
4237
+ }
4238
+ .attachment-text-editor {
4239
+ min-height: 0;
4240
+ height: 100%;
4241
+ resize: none;
4242
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
4243
+ font-size: 0.9rem;
4244
+ line-height: 1.46;
4245
+ tab-size: 2;
4246
+ white-space: pre-wrap;
4247
+ overflow-x: hidden;
4248
+ overflow-wrap: anywhere;
4249
+ }
4250
+ .attachment-text-status.warn { color: var(--ctp-yellow); }
4251
+ .attachment-text-status.error { color: var(--ctp-red); }
3856
4252
  .commands-search {
3857
4253
  width: 100%;
3858
4254
  min-width: 0;
@@ -4056,6 +4452,196 @@ summary { cursor: pointer; color: var(--warning); }
4056
4452
  .dialog-options button { text-align: left; }
4057
4453
  .dialog-input { width: 100%; padding: 0.7rem; }
4058
4454
  .dialog-editor { width: 100%; min-height: 12rem; padding: 0.7rem; }
4455
+ .git-pr-dialog {
4456
+ width: min(64rem, calc(100vw - 1.5rem));
4457
+ }
4458
+ .git-pr-dialog form {
4459
+ display: grid;
4460
+ gap: 0.8rem;
4461
+ }
4462
+ .git-pr-field {
4463
+ display: grid;
4464
+ gap: 0.38rem;
4465
+ color: rgba(var(--ctp-subtext-rgb), 0.78);
4466
+ font-size: 0.78rem;
4467
+ font-weight: 900;
4468
+ letter-spacing: 0.08em;
4469
+ text-transform: uppercase;
4470
+ }
4471
+ .git-pr-body-editor {
4472
+ min-height: min(28rem, 52vh);
4473
+ line-height: 1.45;
4474
+ letter-spacing: normal;
4475
+ text-transform: none;
4476
+ }
4477
+ .git-pr-status.error { color: var(--ctp-red); }
4478
+
4479
+ .app-runner-info-dialog {
4480
+ width: min(52rem, calc(100vw - 2rem));
4481
+ border-color: rgba(166, 227, 161, 0.46);
4482
+ box-shadow: 0 2rem 5rem var(--shadow), 0 0 2rem rgba(166, 227, 161, 0.20);
4483
+ }
4484
+ .app-runner-info-dialog form {
4485
+ display: grid;
4486
+ gap: 0.75rem;
4487
+ }
4488
+ .app-runner-info-dialog h2 {
4489
+ margin-bottom: 0;
4490
+ color: var(--ctp-green);
4491
+ text-shadow: 0 0 1rem rgba(166, 227, 161, 0.18);
4492
+ }
4493
+ .app-runner-info-body {
4494
+ display: grid;
4495
+ gap: 0.78rem;
4496
+ max-height: min(56vh, 32rem);
4497
+ padding-right: 0.15rem;
4498
+ overflow: auto;
4499
+ overscroll-behavior: contain;
4500
+ }
4501
+ .app-runner-info-section {
4502
+ display: grid;
4503
+ gap: 0.48rem;
4504
+ padding: 0.78rem 0.86rem;
4505
+ border: 1px solid rgba(166, 227, 161, 0.18);
4506
+ border-radius: 0.86rem;
4507
+ background:
4508
+ radial-gradient(circle at 0% 0%, rgba(166, 227, 161, 0.10), transparent 12rem),
4509
+ rgba(var(--ctp-crust-rgb), 0.46);
4510
+ }
4511
+ .app-runner-info-section h3 {
4512
+ margin: 0;
4513
+ color: var(--ctp-teal);
4514
+ font-size: 0.92rem;
4515
+ letter-spacing: 0.04em;
4516
+ text-transform: uppercase;
4517
+ }
4518
+ .app-runner-info-list {
4519
+ display: grid;
4520
+ gap: 0.42rem;
4521
+ margin: 0;
4522
+ padding-left: 1.1rem;
4523
+ }
4524
+ .app-runner-info-list li {
4525
+ line-height: 1.42;
4526
+ }
4527
+ .app-runner-info-detected-list li {
4528
+ display: grid;
4529
+ gap: 0.16rem;
4530
+ }
4531
+ .app-runner-info-detected-list code {
4532
+ width: fit-content;
4533
+ max-width: 100%;
4534
+ padding: 0.14rem 0.42rem;
4535
+ overflow: hidden;
4536
+ color: var(--ctp-yellow);
4537
+ border: 1px solid rgba(249, 226, 175, 0.24);
4538
+ border-radius: 0.52rem;
4539
+ background: rgba(var(--ctp-crust-rgb), 0.68);
4540
+ text-overflow: ellipsis;
4541
+ white-space: nowrap;
4542
+ }
4543
+ .app-runner-section-title-row {
4544
+ display: flex;
4545
+ flex-wrap: wrap;
4546
+ gap: 0.5rem;
4547
+ align-items: center;
4548
+ justify-content: space-between;
4549
+ }
4550
+ .app-runner-section-title-row code,
4551
+ .app-runner-custom-item code {
4552
+ min-width: 0;
4553
+ max-width: 100%;
4554
+ overflow: hidden;
4555
+ color: var(--ctp-yellow);
4556
+ text-overflow: ellipsis;
4557
+ white-space: nowrap;
4558
+ }
4559
+ .app-runner-custom-list,
4560
+ .app-runner-custom-form {
4561
+ display: grid;
4562
+ gap: 0.55rem;
4563
+ }
4564
+ .app-runner-custom-empty,
4565
+ .app-runner-custom-item {
4566
+ padding: 0.62rem 0.7rem;
4567
+ border: 1px solid rgba(148, 226, 213, 0.16);
4568
+ border-radius: 0.74rem;
4569
+ background: rgba(var(--ctp-surface-rgb), 0.30);
4570
+ }
4571
+ .app-runner-custom-item {
4572
+ display: grid;
4573
+ grid-template-columns: minmax(0, 1fr) auto;
4574
+ gap: 0.6rem;
4575
+ align-items: center;
4576
+ }
4577
+ .app-runner-custom-item-details {
4578
+ display: grid;
4579
+ gap: 0.18rem;
4580
+ min-width: 0;
4581
+ }
4582
+ .app-runner-custom-item-actions,
4583
+ .app-runner-custom-form-actions {
4584
+ display: flex;
4585
+ flex-wrap: wrap;
4586
+ gap: 0.42rem;
4587
+ align-items: center;
4588
+ justify-content: flex-end;
4589
+ }
4590
+ .app-runner-custom-item-actions button,
4591
+ .app-runner-custom-form-actions button,
4592
+ .app-runner-custom-browse,
4593
+ .app-runner-file-browser-close {
4594
+ min-height: 2.25rem;
4595
+ padding: 0.38rem 0.68rem;
4596
+ border-radius: 0.64rem;
4597
+ }
4598
+ .app-runner-custom-field {
4599
+ display: grid;
4600
+ gap: 0.24rem;
4601
+ min-width: 0;
4602
+ color: rgba(var(--ctp-text-rgb), 0.82);
4603
+ font-size: 0.82rem;
4604
+ font-weight: 850;
4605
+ }
4606
+ .app-runner-custom-field small {
4607
+ font-weight: 650;
4608
+ }
4609
+ .app-runner-custom-path-row {
4610
+ display: grid;
4611
+ grid-template-columns: minmax(0, 1fr) auto;
4612
+ gap: 0.5rem;
4613
+ align-items: end;
4614
+ }
4615
+ .app-runner-custom-browse {
4616
+ align-self: end;
4617
+ color: var(--ctp-teal);
4618
+ border-color: rgba(148, 226, 213, 0.32);
4619
+ }
4620
+ .app-runner-file-browser {
4621
+ display: grid;
4622
+ gap: 0.5rem;
4623
+ padding: 0.62rem;
4624
+ border: 1px solid rgba(137, 180, 250, 0.18);
4625
+ border-radius: 0.78rem;
4626
+ background: rgba(var(--ctp-crust-rgb), 0.44);
4627
+ }
4628
+ .app-runner-file-browser-header {
4629
+ display: flex;
4630
+ gap: 0.5rem;
4631
+ align-items: center;
4632
+ justify-content: space-between;
4633
+ }
4634
+ .app-runner-file-browser-list {
4635
+ max-height: min(18rem, 34vh);
4636
+ }
4637
+ .app-runner-file-choice {
4638
+ color: var(--ctp-yellow);
4639
+ border-color: rgba(249, 226, 175, 0.22);
4640
+ }
4641
+ .app-runner-file-choice:hover,
4642
+ .app-runner-file-choice:focus-visible {
4643
+ background: linear-gradient(120deg, var(--ctp-yellow), var(--ctp-green));
4644
+ }
4059
4645
 
4060
4646
  .native-command-dialog {
4061
4647
  width: min(56rem, calc(100vw - 2rem));
@@ -4520,16 +5106,79 @@ summary { cursor: pointer; color: var(--warning); }
4520
5106
  @media (max-width: 1050px) {
4521
5107
  body { overflow: auto; }
4522
5108
  .layout,
4523
- body.side-panel-collapsed .layout { grid-template-columns: 1fr; height: auto; min-height: 100dvh; overflow: visible; }
4524
- .chat-panel { min-height: 70dvh; }
4525
- .side-panel { max-height: none; }
4526
- .footer-line-meta {
5109
+ body.side-panel-collapsed .layout {
5110
+ grid-template-columns: 1fr;
5111
+ height: auto;
5112
+ min-height: 100dvh;
5113
+ overflow: visible;
5114
+ }
5115
+ .chat-panel {
5116
+ height: calc(var(--visual-viewport-height, 100dvh) - 2rem);
5117
+ min-height: 0;
5118
+ max-height: calc(var(--visual-viewport-height, 100dvh) - 2rem);
5119
+ }
5120
+ .chat { flex-basis: 0; }
5121
+ body:not(.side-panel-collapsed) { overflow: hidden; }
5122
+ body:not(.side-panel-collapsed) .chat-panel {
5123
+ visibility: hidden;
5124
+ pointer-events: none;
5125
+ }
5126
+ .side-panel-backdrop {
5127
+ position: fixed;
5128
+ inset: 0;
5129
+ z-index: 110;
5130
+ display: block;
5131
+ width: 100%;
5132
+ min-height: 100%;
5133
+ padding: 0;
5134
+ border: 0;
5135
+ border-radius: 0;
5136
+ background: rgba(var(--ctp-crust-rgb), 0.62);
5137
+ box-shadow: none;
5138
+ backdrop-filter: blur(4px);
5139
+ }
5140
+ .side-panel-backdrop[hidden],
5141
+ body.side-panel-collapsed .side-panel-backdrop { display: none; }
5142
+ .side-panel-backdrop:hover,
5143
+ .side-panel-backdrop:active {
5144
+ transform: none;
5145
+ border-color: transparent;
5146
+ box-shadow: none;
5147
+ }
5148
+ .side-panel {
5149
+ position: fixed;
5150
+ z-index: 111;
5151
+ top: calc(0.5rem + env(safe-area-inset-top));
5152
+ right: 0.5rem;
5153
+ bottom: calc(0.5rem + env(safe-area-inset-bottom));
5154
+ left: 0.5rem;
4527
5155
  display: grid;
4528
- grid-template-columns: repeat(2, minmax(0, 1fr));
5156
+ max-height: none;
5157
+ border-radius: 0.95rem;
5158
+ }
5159
+ body.side-panel-collapsed .terminal-tabs-shell {
5160
+ padding-right: 4.85rem;
5161
+ }
5162
+ .side-panel-expand-button {
5163
+ top: calc(0.62rem + env(safe-area-inset-top));
5164
+ right: 0.7rem;
5165
+ z-index: 120;
5166
+ }
5167
+ .side-panel-body { overscroll-behavior: contain; }
5168
+ .footer-line-meta {
5169
+ display: flex;
5170
+ flex-wrap: wrap;
5171
+ gap: 0.5rem;
5172
+ }
5173
+ .footer-line-meta .footer-meta {
5174
+ flex: 1 1 var(--footer-chip-min-width);
5175
+ width: auto;
5176
+ min-width: 0;
5177
+ max-width: 100%;
4529
5178
  }
4530
- .footer-workspace { grid-column: 1 / -1; }
4531
- .footer-model { grid-column: 1; }
4532
- .footer-thinking { grid-column: 2; }
5179
+ .footer-workspace,
5180
+ .footer-model,
5181
+ .footer-thinking { grid-column: auto; }
4533
5182
  }
4534
5183
 
4535
5184
  @media (max-width: 720px), (max-device-width: 720px), (pointer: coarse) and (hover: none) {
@@ -4559,7 +5208,7 @@ summary { cursor: pointer; color: var(--warning); }
4559
5208
  padding: calc(0.12rem + env(safe-area-inset-top)) 0.42rem 0.12rem;
4560
5209
  overflow: visible;
4561
5210
  }
4562
- body.side-panel-collapsed .terminal-tabs-shell { padding-right: 2.75rem; }
5211
+ body.side-panel-collapsed .terminal-tabs-shell { padding-right: calc(44px + 0.8rem); }
4563
5212
  .terminal-tabs-toggle-button {
4564
5213
  display: block;
4565
5214
  width: min(14rem, calc(100vw - 8.8rem));
@@ -4589,6 +5238,7 @@ summary { cursor: pointer; color: var(--warning); }
4589
5238
  .side-panel-expand-button {
4590
5239
  top: calc(0.12rem + env(safe-area-inset-top));
4591
5240
  right: 0.42rem;
5241
+ z-index: 120;
4592
5242
  }
4593
5243
  .terminal-close-all-button {
4594
5244
  min-height: 28px;
@@ -4902,7 +5552,11 @@ summary { cursor: pointer; color: var(--warning); }
4902
5552
  grid-template-columns: 1fr;
4903
5553
  }
4904
5554
  body.footer-details-expanded .footer-line-meta .footer-meta { display: grid; }
4905
- .footer-metric { width: 100%; padding: 0.35rem 0.45rem; }
5555
+ .footer-line-main .footer-metric {
5556
+ width: 100%;
5557
+ min-width: 0;
5558
+ }
5559
+ .footer-metric { padding: 0.35rem 0.45rem; }
4906
5560
  .footer-details-toggle {
4907
5561
  display: block;
4908
5562
  min-height: 44px;
@@ -5069,7 +5723,7 @@ summary { cursor: pointer; color: var(--warning); }
5069
5723
  .side-panel-backdrop {
5070
5724
  position: fixed;
5071
5725
  inset: 0;
5072
- z-index: 18;
5726
+ z-index: 110;
5073
5727
  display: block;
5074
5728
  width: 100%;
5075
5729
  min-height: 100%;
@@ -5090,7 +5744,7 @@ summary { cursor: pointer; color: var(--warning); }
5090
5744
  }
5091
5745
  .side-panel {
5092
5746
  position: fixed;
5093
- z-index: 19;
5747
+ z-index: 111;
5094
5748
  top: calc(0.5rem + env(safe-area-inset-top));
5095
5749
  right: 0.5rem;
5096
5750
  bottom: calc(0.5rem + env(safe-area-inset-bottom));
@@ -5137,6 +5791,13 @@ summary { cursor: pointer; color: var(--warning); }
5137
5791
  .native-command-body { max-height: min(28rem, 54dvh); }
5138
5792
  .native-settings-grid,
5139
5793
  .native-tree-options { grid-template-columns: 1fr; }
5794
+ .app-runner-custom-item,
5795
+ .app-runner-custom-path-row { grid-template-columns: 1fr; }
5796
+ .app-runner-custom-item-actions,
5797
+ .app-runner-custom-form-actions { justify-content: stretch; }
5798
+ .app-runner-custom-item-actions button,
5799
+ .app-runner-custom-form-actions button,
5800
+ .app-runner-custom-browse { width: 100%; }
5140
5801
  .path-picker-current-row,
5141
5802
  .path-picker-create-row,
5142
5803
  .path-picker-search-row { grid-template-columns: 1fr; }