@firstpick/pi-package-webui 0.1.8 → 0.2.0
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/README.md +27 -24
- package/WEBUI_TUI_NATIVE_PARITY.json +666 -0
- package/bin/pi-webui.mjs +686 -29
- package/package.json +6 -3
- package/public/app.js +1007 -94
- package/public/index.html +36 -18
- package/public/styles.css +286 -82
- package/start-webui.ps1 +323 -0
- package/start-webui.sh +461 -0
- package/tests/mobile-static.test.mjs +126 -12
- package/tests/native-parity.test.mjs +148 -0
package/public/index.html
CHANGED
|
@@ -162,14 +162,14 @@
|
|
|
162
162
|
</button>
|
|
163
163
|
</div>
|
|
164
164
|
<div class="side-panel-body">
|
|
165
|
-
<section class="side-panel-section" data-side-panel-section="controls">
|
|
165
|
+
<section class="side-panel-section collapsed" data-side-panel-section="controls">
|
|
166
166
|
<h2>
|
|
167
|
-
<button id="sidePanelSectionToggleControls" class="side-panel-section-toggle" type="button" aria-expanded="
|
|
167
|
+
<button id="sidePanelSectionToggleControls" class="side-panel-section-toggle" type="button" aria-expanded="false" aria-controls="sidePanelSectionControls" aria-label="Expand Controls section" title="Expand Controls section" data-side-panel-section-toggle="controls">
|
|
168
168
|
<span class="side-panel-section-label">Controls</span>
|
|
169
169
|
<span class="side-panel-section-chevron" aria-hidden="true">›</span>
|
|
170
170
|
</button>
|
|
171
171
|
</h2>
|
|
172
|
-
<div id="sidePanelSectionControls" class="side-panel-section-content">
|
|
172
|
+
<div id="sidePanelSectionControls" class="side-panel-section-content" hidden>
|
|
173
173
|
<div class="side-panel-controls">
|
|
174
174
|
<div class="control-field">
|
|
175
175
|
<label for="modelSelect">Model</label>
|
|
@@ -216,6 +216,10 @@
|
|
|
216
216
|
<div id="networkStatus" class="network-status closed">Local only</div>
|
|
217
217
|
<button id="openNetworkButton" type="button">Open to network</button>
|
|
218
218
|
</div>
|
|
219
|
+
<div class="control-field server-control-field">
|
|
220
|
+
<label>Server</label>
|
|
221
|
+
<button id="stopServerButton" class="danger" type="button" title="Stop the Pi Web UI server and disconnect all browser clients" aria-label="Stop the Pi Web UI server">Stop Server</button>
|
|
222
|
+
</div>
|
|
219
223
|
<div class="control-field notification-control-field">
|
|
220
224
|
<span class="control-label">Notifications</span>
|
|
221
225
|
<label class="toggle-control" for="agentDoneNotificationsToggle">
|
|
@@ -229,58 +233,72 @@
|
|
|
229
233
|
</div>
|
|
230
234
|
</div>
|
|
231
235
|
</section>
|
|
232
|
-
<section class="side-panel-section" data-side-panel-section="optional-features">
|
|
236
|
+
<section class="side-panel-section collapsed" data-side-panel-section="optional-features">
|
|
233
237
|
<h2>
|
|
234
|
-
<button id="sidePanelSectionToggleOptionalFeatures" class="side-panel-section-toggle" type="button" aria-expanded="
|
|
238
|
+
<button id="sidePanelSectionToggleOptionalFeatures" class="side-panel-section-toggle" type="button" aria-expanded="false" aria-controls="sidePanelSectionOptionalFeatures" aria-label="Expand Optional features section" title="Expand Optional features section" data-side-panel-section-toggle="optional-features">
|
|
235
239
|
<span class="side-panel-section-label">Optional features</span>
|
|
236
240
|
<span class="side-panel-section-chevron" aria-hidden="true">›</span>
|
|
237
241
|
</button>
|
|
238
242
|
</h2>
|
|
239
|
-
<div id="sidePanelSectionOptionalFeatures" class="side-panel-section-content">
|
|
243
|
+
<div id="sidePanelSectionOptionalFeatures" class="side-panel-section-content" hidden>
|
|
240
244
|
<div id="optionalFeaturesBox" class="optional-features-box muted">Checking optional features…</div>
|
|
241
245
|
</div>
|
|
242
246
|
</section>
|
|
243
|
-
<section class="side-panel-section" data-side-panel-section="
|
|
247
|
+
<section class="side-panel-section collapsed" data-side-panel-section="codex-usage">
|
|
248
|
+
<h2>
|
|
249
|
+
<button id="sidePanelSectionToggleCodexUsage" class="side-panel-section-toggle" type="button" aria-expanded="false" aria-controls="sidePanelSectionCodexUsage" aria-label="Expand Codex Usage section" title="Expand Codex Usage section" data-side-panel-section-toggle="codex-usage">
|
|
250
|
+
<span class="side-panel-section-label">Codex Usage</span>
|
|
251
|
+
<span class="side-panel-section-chevron" aria-hidden="true">›</span>
|
|
252
|
+
</button>
|
|
253
|
+
</h2>
|
|
254
|
+
<div id="sidePanelSectionCodexUsage" class="side-panel-section-content" hidden>
|
|
255
|
+
<div class="codex-usage-actions">
|
|
256
|
+
<button id="refreshCodexUsageButton" type="button">Refresh usage</button>
|
|
257
|
+
</div>
|
|
258
|
+
<div id="codexUsageBox" class="codex-usage-box muted">Checking Codex usage…</div>
|
|
259
|
+
</div>
|
|
260
|
+
</section>
|
|
261
|
+
<section class="side-panel-section collapsed" data-side-panel-section="session">
|
|
244
262
|
<h2>
|
|
245
|
-
<button id="sidePanelSectionToggleSession" class="side-panel-section-toggle" type="button" aria-expanded="
|
|
263
|
+
<button id="sidePanelSectionToggleSession" class="side-panel-section-toggle" type="button" aria-expanded="false" aria-controls="sidePanelSectionSession" aria-label="Expand Session section" title="Expand Session section" data-side-panel-section-toggle="session">
|
|
246
264
|
<span class="side-panel-section-label">Session</span>
|
|
247
265
|
<span class="side-panel-section-chevron" aria-hidden="true">›</span>
|
|
248
266
|
</button>
|
|
249
267
|
</h2>
|
|
250
|
-
<div id="sidePanelSectionSession" class="side-panel-section-content">
|
|
268
|
+
<div id="sidePanelSectionSession" class="side-panel-section-content" hidden>
|
|
251
269
|
<dl id="stateDetails" class="details"></dl>
|
|
252
270
|
</div>
|
|
253
271
|
</section>
|
|
254
|
-
<section class="side-panel-section" data-side-panel-section="queue">
|
|
272
|
+
<section class="side-panel-section collapsed" data-side-panel-section="queue">
|
|
255
273
|
<h2>
|
|
256
|
-
<button id="sidePanelSectionToggleQueue" class="side-panel-section-toggle" type="button" aria-expanded="
|
|
274
|
+
<button id="sidePanelSectionToggleQueue" class="side-panel-section-toggle" type="button" aria-expanded="false" aria-controls="sidePanelSectionQueue" aria-label="Expand Queue section" title="Expand Queue section" data-side-panel-section-toggle="queue">
|
|
257
275
|
<span class="side-panel-section-label">Queue</span>
|
|
258
276
|
<span class="side-panel-section-chevron" aria-hidden="true">›</span>
|
|
259
277
|
</button>
|
|
260
278
|
</h2>
|
|
261
|
-
<div id="sidePanelSectionQueue" class="side-panel-section-content">
|
|
279
|
+
<div id="sidePanelSectionQueue" class="side-panel-section-content" hidden>
|
|
262
280
|
<div id="queueBox" class="queue-box muted">No queued messages.</div>
|
|
263
281
|
</div>
|
|
264
282
|
</section>
|
|
265
|
-
<section class="side-panel-section" data-side-panel-section="commands">
|
|
283
|
+
<section class="side-panel-section collapsed" data-side-panel-section="commands">
|
|
266
284
|
<h2>
|
|
267
|
-
<button id="sidePanelSectionToggleCommands" class="side-panel-section-toggle" type="button" aria-expanded="
|
|
285
|
+
<button id="sidePanelSectionToggleCommands" class="side-panel-section-toggle" type="button" aria-expanded="false" aria-controls="sidePanelSectionCommands" aria-label="Expand Commands section" title="Expand Commands section" data-side-panel-section-toggle="commands">
|
|
268
286
|
<span class="side-panel-section-label">Commands</span>
|
|
269
287
|
<span class="side-panel-section-chevron" aria-hidden="true">›</span>
|
|
270
288
|
</button>
|
|
271
289
|
</h2>
|
|
272
|
-
<div id="sidePanelSectionCommands" class="side-panel-section-content">
|
|
290
|
+
<div id="sidePanelSectionCommands" class="side-panel-section-content" hidden>
|
|
273
291
|
<div id="commandsBox" class="commands-box muted">Loading…</div>
|
|
274
292
|
</div>
|
|
275
293
|
</section>
|
|
276
|
-
<section class="side-panel-section" data-side-panel-section="events">
|
|
294
|
+
<section class="side-panel-section collapsed" data-side-panel-section="events">
|
|
277
295
|
<h2>
|
|
278
|
-
<button id="sidePanelSectionToggleEvents" class="side-panel-section-toggle" type="button" aria-expanded="
|
|
296
|
+
<button id="sidePanelSectionToggleEvents" class="side-panel-section-toggle" type="button" aria-expanded="false" aria-controls="sidePanelSectionEvents" aria-label="Expand Events section" title="Expand Events section" data-side-panel-section-toggle="events">
|
|
279
297
|
<span class="side-panel-section-label">Events</span>
|
|
280
298
|
<span class="side-panel-section-chevron" aria-hidden="true">›</span>
|
|
281
299
|
</button>
|
|
282
300
|
</h2>
|
|
283
|
-
<div id="sidePanelSectionEvents" class="side-panel-section-content">
|
|
301
|
+
<div id="sidePanelSectionEvents" class="side-panel-section-content" hidden>
|
|
284
302
|
<div id="eventLog" class="event-log"></div>
|
|
285
303
|
</div>
|
|
286
304
|
</section>
|
package/public/styles.css
CHANGED
|
@@ -808,6 +808,83 @@ body.side-panel-collapsed .terminal-tabs-shell {
|
|
|
808
808
|
background: rgba(var(--ctp-crust-rgb), 0.46);
|
|
809
809
|
box-shadow: inset 0 1px 0 rgba(255,255,255,0.035), 0 0 1rem rgba(148, 226, 213, 0.05);
|
|
810
810
|
}
|
|
811
|
+
.codex-usage-actions {
|
|
812
|
+
display: flex;
|
|
813
|
+
justify-content: flex-end;
|
|
814
|
+
margin-bottom: 0.48rem;
|
|
815
|
+
}
|
|
816
|
+
.codex-usage-actions button {
|
|
817
|
+
min-height: 34px;
|
|
818
|
+
padding: 0.32rem 0.58rem;
|
|
819
|
+
font-size: 0.72rem;
|
|
820
|
+
}
|
|
821
|
+
.codex-usage-box {
|
|
822
|
+
display: grid;
|
|
823
|
+
gap: 0.58rem;
|
|
824
|
+
padding: 0.72rem;
|
|
825
|
+
border: 1px solid rgba(180, 190, 254, 0.16);
|
|
826
|
+
border-radius: 0.85rem;
|
|
827
|
+
background: rgba(var(--ctp-crust-rgb), 0.50);
|
|
828
|
+
box-shadow: inset 0 1px 0 rgba(255,255,255,0.035), 0 0 1rem rgba(203, 166, 247, 0.05);
|
|
829
|
+
}
|
|
830
|
+
.codex-usage-summary {
|
|
831
|
+
display: flex;
|
|
832
|
+
flex-wrap: wrap;
|
|
833
|
+
justify-content: space-between;
|
|
834
|
+
gap: 0.35rem 0.55rem;
|
|
835
|
+
align-items: baseline;
|
|
836
|
+
}
|
|
837
|
+
.codex-usage-plan {
|
|
838
|
+
color: rgba(var(--ctp-text-rgb), 0.94);
|
|
839
|
+
font-weight: 900;
|
|
840
|
+
}
|
|
841
|
+
.codex-usage-fetched,
|
|
842
|
+
.codex-usage-detail,
|
|
843
|
+
.codex-usage-reset {
|
|
844
|
+
color: rgba(var(--ctp-subtext-rgb), 0.70);
|
|
845
|
+
font-size: 0.72rem;
|
|
846
|
+
line-height: 1.35;
|
|
847
|
+
}
|
|
848
|
+
.codex-usage-unavailable,
|
|
849
|
+
.codex-usage-warning {
|
|
850
|
+
color: var(--ctp-yellow);
|
|
851
|
+
font-weight: 800;
|
|
852
|
+
}
|
|
853
|
+
.codex-usage-bucket {
|
|
854
|
+
display: grid;
|
|
855
|
+
gap: 0.32rem;
|
|
856
|
+
}
|
|
857
|
+
.codex-usage-row {
|
|
858
|
+
display: flex;
|
|
859
|
+
justify-content: space-between;
|
|
860
|
+
gap: 0.6rem;
|
|
861
|
+
align-items: center;
|
|
862
|
+
}
|
|
863
|
+
.codex-usage-label {
|
|
864
|
+
min-width: 0;
|
|
865
|
+
color: rgba(var(--ctp-text-rgb), 0.86);
|
|
866
|
+
font-size: 0.78rem;
|
|
867
|
+
font-weight: 800;
|
|
868
|
+
overflow-wrap: anywhere;
|
|
869
|
+
}
|
|
870
|
+
.codex-usage-percent {
|
|
871
|
+
color: var(--ctp-teal);
|
|
872
|
+
font-size: 0.82rem;
|
|
873
|
+
}
|
|
874
|
+
.codex-usage-meter {
|
|
875
|
+
overflow: hidden;
|
|
876
|
+
height: 0.5rem;
|
|
877
|
+
border: 1px solid rgba(180, 190, 254, 0.14);
|
|
878
|
+
border-radius: 999px;
|
|
879
|
+
background: rgba(var(--ctp-surface-rgb), 0.26);
|
|
880
|
+
}
|
|
881
|
+
.codex-usage-meter-fill {
|
|
882
|
+
display: block;
|
|
883
|
+
height: 100%;
|
|
884
|
+
border-radius: inherit;
|
|
885
|
+
background: linear-gradient(90deg, var(--ctp-green), var(--ctp-yellow), var(--ctp-peach));
|
|
886
|
+
box-shadow: 0 0 0.85rem rgba(148, 226, 213, 0.20);
|
|
887
|
+
}
|
|
811
888
|
.optional-feature-row {
|
|
812
889
|
display: grid;
|
|
813
890
|
grid-template-columns: minmax(0, 1fr) auto;
|
|
@@ -1608,19 +1685,26 @@ button.footer-meta {
|
|
|
1608
1685
|
display: grid;
|
|
1609
1686
|
gap: 0.62rem;
|
|
1610
1687
|
padding: 0.72rem;
|
|
1688
|
+
overflow: hidden;
|
|
1611
1689
|
white-space: normal;
|
|
1612
|
-
border-color: rgba(245, 194, 231, 0.
|
|
1690
|
+
border-color: rgba(245, 194, 231, 0.62);
|
|
1691
|
+
border-left: 0.28rem solid rgba(245, 194, 231, 0.88);
|
|
1613
1692
|
background:
|
|
1614
|
-
radial-gradient(circle at 4% 0%, rgba(245, 194, 231, 0.
|
|
1615
|
-
radial-gradient(circle at 96% 12%, rgba(148, 226, 213, 0.
|
|
1616
|
-
linear-gradient(145deg, rgba(var(--ctp-crust-rgb), 0.
|
|
1693
|
+
radial-gradient(circle at 4% 0%, rgba(245, 194, 231, 0.22), transparent 16rem),
|
|
1694
|
+
radial-gradient(circle at 96% 12%, rgba(148, 226, 213, 0.14), transparent 18rem),
|
|
1695
|
+
linear-gradient(145deg, rgba(var(--ctp-crust-rgb), 0.98), rgba(var(--ctp-mantle-rgb), 0.92));
|
|
1696
|
+
box-shadow:
|
|
1697
|
+
0 0 0 1px rgba(var(--ctp-crust-rgb), 0.94),
|
|
1698
|
+
0 1rem 2.2rem rgba(0, 0, 0, 0.36),
|
|
1699
|
+
inset 0 0 1.2rem rgba(245, 194, 231, 0.07);
|
|
1617
1700
|
}
|
|
1618
1701
|
.release-aur-widget {
|
|
1619
|
-
border-color: rgba(250, 179, 135, 0.
|
|
1702
|
+
border-color: rgba(250, 179, 135, 0.62);
|
|
1703
|
+
border-left-color: rgba(250, 179, 135, 0.88);
|
|
1620
1704
|
background:
|
|
1621
|
-
radial-gradient(circle at 4% 0%, rgba(250, 179, 135, 0.
|
|
1622
|
-
radial-gradient(circle at 96% 12%, rgba(166, 227, 161, 0.
|
|
1623
|
-
linear-gradient(145deg, rgba(var(--ctp-crust-rgb), 0.
|
|
1705
|
+
radial-gradient(circle at 4% 0%, rgba(250, 179, 135, 0.20), transparent 16rem),
|
|
1706
|
+
radial-gradient(circle at 96% 12%, rgba(166, 227, 161, 0.14), transparent 18rem),
|
|
1707
|
+
linear-gradient(145deg, rgba(var(--ctp-crust-rgb), 0.98), rgba(var(--ctp-mantle-rgb), 0.92));
|
|
1624
1708
|
}
|
|
1625
1709
|
.release-aur-widget .release-npm-kicker { color: var(--ctp-peach); }
|
|
1626
1710
|
.release-npm-header {
|
|
@@ -1664,9 +1748,9 @@ button.footer-meta {
|
|
|
1664
1748
|
padding: 0.16rem 0.5rem;
|
|
1665
1749
|
overflow: hidden;
|
|
1666
1750
|
color: var(--ctp-yellow);
|
|
1667
|
-
border: 1px solid rgba(249, 226, 175, 0.
|
|
1751
|
+
border: 1px solid rgba(249, 226, 175, 0.32);
|
|
1668
1752
|
border-radius: 999px;
|
|
1669
|
-
background: rgba(var(--ctp-crust-rgb), 0.
|
|
1753
|
+
background: rgba(var(--ctp-crust-rgb), 0.72);
|
|
1670
1754
|
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
|
|
1671
1755
|
font-size: 0.72rem;
|
|
1672
1756
|
font-weight: 800;
|
|
@@ -1681,61 +1765,150 @@ button.footer-meta {
|
|
|
1681
1765
|
font-size: 0.76rem;
|
|
1682
1766
|
font-weight: 850;
|
|
1683
1767
|
}
|
|
1768
|
+
.release-npm-stream-header {
|
|
1769
|
+
display: flex;
|
|
1770
|
+
align-items: center;
|
|
1771
|
+
gap: 0.46rem;
|
|
1772
|
+
min-width: 0;
|
|
1773
|
+
padding: 0.36rem 0.52rem;
|
|
1774
|
+
border: 1px solid rgba(137, 180, 250, 0.26);
|
|
1775
|
+
border-radius: 0.62rem;
|
|
1776
|
+
color: rgba(var(--ctp-text-rgb), 0.92);
|
|
1777
|
+
background: rgba(var(--ctp-crust-rgb), 0.76);
|
|
1778
|
+
box-shadow: inset 0 0 0 1px rgba(var(--ctp-text-rgb), 0.04);
|
|
1779
|
+
font-size: 0.72rem;
|
|
1780
|
+
font-weight: 900;
|
|
1781
|
+
letter-spacing: 0.09em;
|
|
1782
|
+
text-transform: uppercase;
|
|
1783
|
+
}
|
|
1784
|
+
.release-npm-stream-dot {
|
|
1785
|
+
flex: 0 0 auto;
|
|
1786
|
+
width: 0.55rem;
|
|
1787
|
+
height: 0.55rem;
|
|
1788
|
+
border-radius: 999px;
|
|
1789
|
+
background: var(--ctp-green);
|
|
1790
|
+
box-shadow: 0 0 0.72rem rgba(166, 227, 161, 0.62);
|
|
1791
|
+
}
|
|
1792
|
+
.release-npm-stream-dot.live { animation: release-npm-live-pulse 1.35s ease-in-out infinite; }
|
|
1793
|
+
.release-npm-stream-title {
|
|
1794
|
+
min-width: 0;
|
|
1795
|
+
overflow: hidden;
|
|
1796
|
+
text-overflow: ellipsis;
|
|
1797
|
+
white-space: nowrap;
|
|
1798
|
+
}
|
|
1799
|
+
.release-npm-stream-count {
|
|
1800
|
+
margin-left: auto;
|
|
1801
|
+
color: rgba(var(--ctp-subtext-rgb), 0.84);
|
|
1802
|
+
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
|
|
1803
|
+
font-size: 0.68rem;
|
|
1804
|
+
font-weight: 850;
|
|
1805
|
+
letter-spacing: 0;
|
|
1806
|
+
text-transform: none;
|
|
1807
|
+
white-space: nowrap;
|
|
1808
|
+
}
|
|
1684
1809
|
.release-npm-terminal {
|
|
1685
1810
|
max-height: min(34rem, 42vh);
|
|
1686
1811
|
min-height: 5.25rem;
|
|
1687
1812
|
overflow: auto;
|
|
1688
|
-
padding: 0.
|
|
1689
|
-
border: 1px solid rgba(
|
|
1813
|
+
padding: 0.78rem 0.62rem;
|
|
1814
|
+
border: 1px solid rgba(137, 180, 250, 0.42);
|
|
1690
1815
|
border-radius: 0.78rem;
|
|
1816
|
+
color: rgba(var(--ctp-text-rgb), 0.96);
|
|
1691
1817
|
background:
|
|
1692
|
-
linear-gradient(180deg, rgba(
|
|
1693
|
-
radial-gradient(circle at 0 0, rgba(148, 226, 213, 0.
|
|
1694
|
-
box-shadow:
|
|
1818
|
+
linear-gradient(180deg, rgba(3, 4, 10, 0.98), rgba(var(--ctp-crust-rgb), 0.96)),
|
|
1819
|
+
radial-gradient(circle at 0 0, rgba(148, 226, 213, 0.10), transparent 15rem);
|
|
1820
|
+
box-shadow:
|
|
1821
|
+
inset 0 0 0 1px rgba(var(--ctp-text-rgb), 0.05),
|
|
1822
|
+
inset 0 0 1.7rem rgba(0, 0, 0, 0.42);
|
|
1695
1823
|
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
|
|
1696
1824
|
font-size: 0.78rem;
|
|
1697
|
-
line-height: 1.
|
|
1825
|
+
line-height: 1.5;
|
|
1698
1826
|
overscroll-behavior: contain;
|
|
1699
1827
|
}
|
|
1700
1828
|
.release-npm-line {
|
|
1701
|
-
|
|
1702
|
-
|
|
1703
|
-
|
|
1829
|
+
display: block;
|
|
1830
|
+
width: max-content;
|
|
1831
|
+
min-width: 100%;
|
|
1832
|
+
min-height: 1.5em;
|
|
1833
|
+
margin: 0 -0.18rem;
|
|
1834
|
+
padding: 0 0.42rem;
|
|
1835
|
+
border-left: 2px solid rgba(var(--ctp-overlay-rgb), 0.24);
|
|
1836
|
+
color: rgba(var(--ctp-text-rgb), 0.94);
|
|
1704
1837
|
white-space: pre;
|
|
1705
1838
|
}
|
|
1706
|
-
.release-npm-line
|
|
1707
|
-
.release-npm-line.
|
|
1708
|
-
.release-npm-line.
|
|
1709
|
-
.release-npm-line.
|
|
1710
|
-
.release-npm-line.
|
|
1711
|
-
.release-npm-line.
|
|
1712
|
-
.release-npm-line.
|
|
1839
|
+
.release-npm-line:nth-child(odd) { background: rgba(var(--ctp-text-rgb), 0.025); }
|
|
1840
|
+
.release-npm-line.command { color: var(--ctp-sky); border-left-color: rgba(137, 220, 235, 0.68); }
|
|
1841
|
+
.release-npm-line.target { color: var(--ctp-pink); border-left-color: rgba(245, 194, 231, 0.72); font-weight: 850; }
|
|
1842
|
+
.release-npm-line.pass { color: var(--ctp-green); border-left-color: rgba(166, 227, 161, 0.72); }
|
|
1843
|
+
.release-npm-line.fail { color: var(--ctp-red); border-left-color: rgba(243, 139, 168, 0.78); }
|
|
1844
|
+
.release-npm-line.warn { color: var(--ctp-yellow); border-left-color: rgba(249, 226, 175, 0.74); }
|
|
1845
|
+
.release-npm-line.info { color: rgba(var(--ctp-subtext-rgb), 0.88); border-left-color: rgba(186, 194, 222, 0.44); }
|
|
1846
|
+
.release-npm-line.event { color: var(--ctp-mauve); border-left-color: rgba(203, 166, 247, 0.72); }
|
|
1713
1847
|
.release-npm-controls {
|
|
1714
|
-
color: rgba(var(--ctp-subtext-rgb), 0.
|
|
1848
|
+
color: rgba(var(--ctp-subtext-rgb), 0.78);
|
|
1715
1849
|
font-size: 0.75rem;
|
|
1716
1850
|
line-height: 1.35;
|
|
1717
1851
|
}
|
|
1718
1852
|
.release-npm-log-widget .release-npm-terminal {
|
|
1719
1853
|
max-height: min(42rem, 52vh);
|
|
1720
1854
|
}
|
|
1855
|
+
@keyframes release-npm-live-pulse {
|
|
1856
|
+
0%, 100% { opacity: 0.58; transform: scale(0.82); }
|
|
1857
|
+
50% { opacity: 1; transform: scale(1.08); }
|
|
1858
|
+
}
|
|
1859
|
+
@media (prefers-reduced-motion: reduce) {
|
|
1860
|
+
.release-npm-stream-dot.live { animation: none; }
|
|
1861
|
+
}
|
|
1721
1862
|
.todo-widget {
|
|
1722
1863
|
display: grid;
|
|
1723
|
-
gap: 0
|
|
1724
|
-
|
|
1864
|
+
gap: 0;
|
|
1865
|
+
margin: 0.16rem 0;
|
|
1866
|
+
padding: 0.42rem 0.5rem;
|
|
1725
1867
|
white-space: normal;
|
|
1726
|
-
border-color: rgba(137, 180, 250, 0.
|
|
1868
|
+
border-color: rgba(137, 180, 250, 0.28);
|
|
1727
1869
|
background:
|
|
1728
|
-
radial-gradient(circle at 4% 0%, rgba(137, 180, 250, 0.
|
|
1729
|
-
linear-gradient(145deg, rgba(var(--ctp-crust-rgb), 0.
|
|
1870
|
+
radial-gradient(circle at 4% 0%, rgba(137, 180, 250, 0.14), transparent 10rem),
|
|
1871
|
+
linear-gradient(145deg, rgba(var(--ctp-crust-rgb), 0.86), rgba(var(--ctp-base-rgb), 0.68));
|
|
1730
1872
|
}
|
|
1873
|
+
.todo-widget[open] {
|
|
1874
|
+
gap: 0.36rem;
|
|
1875
|
+
padding-bottom: 0.5rem;
|
|
1876
|
+
}
|
|
1877
|
+
.todo-widget-summary {
|
|
1878
|
+
display: grid;
|
|
1879
|
+
gap: 0.32rem;
|
|
1880
|
+
min-width: 0;
|
|
1881
|
+
color: rgba(var(--ctp-text-rgb), 0.84);
|
|
1882
|
+
cursor: pointer;
|
|
1883
|
+
list-style: none;
|
|
1884
|
+
}
|
|
1885
|
+
.todo-widget-summary::-webkit-details-marker { display: none; }
|
|
1731
1886
|
.todo-widget-header {
|
|
1732
1887
|
display: flex;
|
|
1733
1888
|
align-items: center;
|
|
1734
|
-
gap: 0.
|
|
1889
|
+
gap: 0.34rem;
|
|
1735
1890
|
min-width: 0;
|
|
1736
1891
|
}
|
|
1892
|
+
.todo-widget-toggle {
|
|
1893
|
+
display: inline-grid;
|
|
1894
|
+
place-items: center;
|
|
1895
|
+
width: 1rem;
|
|
1896
|
+
height: 1rem;
|
|
1897
|
+
flex: 0 0 auto;
|
|
1898
|
+
color: rgba(var(--ctp-subtext-rgb), 0.78);
|
|
1899
|
+
font-size: 0.98rem;
|
|
1900
|
+
font-weight: 950;
|
|
1901
|
+
line-height: 1;
|
|
1902
|
+
transition: transform 0.16s ease, color 0.16s ease;
|
|
1903
|
+
}
|
|
1904
|
+
.todo-widget[open] .todo-widget-toggle {
|
|
1905
|
+
color: var(--ctp-blue);
|
|
1906
|
+
transform: rotate(90deg);
|
|
1907
|
+
}
|
|
1737
1908
|
.todo-widget-title {
|
|
1909
|
+
min-width: 0;
|
|
1738
1910
|
color: var(--ctp-blue);
|
|
1911
|
+
font-size: 0.72rem;
|
|
1739
1912
|
font-weight: 950;
|
|
1740
1913
|
letter-spacing: 0.08em;
|
|
1741
1914
|
text-transform: uppercase;
|
|
@@ -1744,58 +1917,68 @@ button.footer-meta {
|
|
|
1744
1917
|
.todo-widget-meta {
|
|
1745
1918
|
display: inline-flex;
|
|
1746
1919
|
align-items: center;
|
|
1747
|
-
min-height: 1.
|
|
1748
|
-
padding: 0.
|
|
1749
|
-
border: 1px solid rgba(137, 180, 250, 0.
|
|
1920
|
+
min-height: 1.08rem;
|
|
1921
|
+
padding: 0.06rem 0.34rem;
|
|
1922
|
+
border: 1px solid rgba(137, 180, 250, 0.22);
|
|
1750
1923
|
border-radius: 999px;
|
|
1751
|
-
background: rgba(var(--ctp-crust-rgb), 0.
|
|
1752
|
-
font-size: 0.
|
|
1924
|
+
background: rgba(var(--ctp-crust-rgb), 0.44);
|
|
1925
|
+
font-size: 0.66rem;
|
|
1753
1926
|
font-weight: 850;
|
|
1927
|
+
line-height: 1;
|
|
1754
1928
|
}
|
|
1755
1929
|
.todo-widget-count { color: var(--ctp-green); }
|
|
1756
1930
|
.todo-widget-meta { color: var(--ctp-yellow); }
|
|
1757
1931
|
.todo-widget-progress {
|
|
1758
|
-
height: 0.
|
|
1932
|
+
height: 0.26rem;
|
|
1759
1933
|
overflow: hidden;
|
|
1760
1934
|
border-radius: 999px;
|
|
1761
|
-
background: rgba(var(--ctp-surface-rgb), 0.
|
|
1762
|
-
box-shadow: inset 0 0 0 1px rgba(180, 190, 254, 0.
|
|
1935
|
+
background: rgba(var(--ctp-surface-rgb), 0.70);
|
|
1936
|
+
box-shadow: inset 0 0 0 1px rgba(180, 190, 254, 0.08);
|
|
1763
1937
|
}
|
|
1764
1938
|
.todo-widget-progress-fill {
|
|
1765
1939
|
display: block;
|
|
1766
1940
|
height: 100%;
|
|
1767
1941
|
border-radius: inherit;
|
|
1768
1942
|
background: linear-gradient(90deg, var(--ctp-blue), var(--ctp-teal), var(--ctp-green));
|
|
1769
|
-
box-shadow: 0 0 0.
|
|
1943
|
+
box-shadow: 0 0 0.65rem rgba(148, 226, 213, 0.34);
|
|
1944
|
+
}
|
|
1945
|
+
.todo-widget-body {
|
|
1946
|
+
display: grid;
|
|
1947
|
+
gap: 0.3rem;
|
|
1948
|
+
max-height: min(13rem, 28vh);
|
|
1949
|
+
overflow: auto;
|
|
1950
|
+
padding-right: 0.12rem;
|
|
1951
|
+
overscroll-behavior: contain;
|
|
1770
1952
|
}
|
|
1771
1953
|
.todo-widget-list {
|
|
1772
1954
|
display: grid;
|
|
1773
|
-
gap: 0.
|
|
1955
|
+
gap: 0.24rem;
|
|
1774
1956
|
margin: 0;
|
|
1775
1957
|
padding: 0;
|
|
1776
1958
|
list-style: none;
|
|
1777
1959
|
}
|
|
1778
1960
|
.todo-widget-item {
|
|
1779
1961
|
display: grid;
|
|
1780
|
-
grid-template-columns: 1.
|
|
1962
|
+
grid-template-columns: 1.05rem minmax(0, 1fr);
|
|
1781
1963
|
align-items: start;
|
|
1782
|
-
gap: 0.
|
|
1964
|
+
gap: 0.34rem;
|
|
1783
1965
|
min-width: 0;
|
|
1784
|
-
color: rgba(var(--ctp-text-rgb), 0.
|
|
1966
|
+
color: rgba(var(--ctp-text-rgb), 0.90);
|
|
1967
|
+
font-size: 0.78rem;
|
|
1785
1968
|
}
|
|
1786
1969
|
.todo-widget-marker {
|
|
1787
1970
|
display: inline-grid;
|
|
1788
1971
|
place-items: center;
|
|
1789
|
-
width:
|
|
1790
|
-
height:
|
|
1791
|
-
margin-top: 0.
|
|
1792
|
-
border: 1px solid rgba(180, 190, 254, 0.
|
|
1793
|
-
border-radius: 0.
|
|
1972
|
+
width: 0.92rem;
|
|
1973
|
+
height: 0.92rem;
|
|
1974
|
+
margin-top: 0.08rem;
|
|
1975
|
+
border: 1px solid rgba(180, 190, 254, 0.30);
|
|
1976
|
+
border-radius: 0.3rem;
|
|
1794
1977
|
color: #11111b;
|
|
1795
|
-
font-size: 0.
|
|
1978
|
+
font-size: 0.62rem;
|
|
1796
1979
|
font-weight: 950;
|
|
1797
1980
|
line-height: 1;
|
|
1798
|
-
background: rgba(var(--ctp-surface-rgb), 0.
|
|
1981
|
+
background: rgba(var(--ctp-surface-rgb), 0.86);
|
|
1799
1982
|
}
|
|
1800
1983
|
.todo-widget-item.done .todo-widget-marker {
|
|
1801
1984
|
border-color: transparent;
|
|
@@ -1813,11 +1996,11 @@ button.footer-meta {
|
|
|
1813
1996
|
.todo-widget-text {
|
|
1814
1997
|
min-width: 0;
|
|
1815
1998
|
overflow-wrap: anywhere;
|
|
1816
|
-
line-height: 1.
|
|
1999
|
+
line-height: 1.28;
|
|
1817
2000
|
}
|
|
1818
2001
|
.todo-widget-footer {
|
|
1819
2002
|
color: rgba(var(--ctp-subtext-rgb), 0.64);
|
|
1820
|
-
font-size: 0.
|
|
2003
|
+
font-size: 0.68rem;
|
|
1821
2004
|
}
|
|
1822
2005
|
.chat {
|
|
1823
2006
|
position: relative;
|
|
@@ -1923,11 +2106,12 @@ button.footer-meta {
|
|
|
1923
2106
|
box-shadow: 0 0.8rem 1.8rem rgba(var(--ctp-crust-rgb), 0.34), inset 0 1px 0 rgba(255,255,255,0.045);
|
|
1924
2107
|
}
|
|
1925
2108
|
.message.action-enter {
|
|
1926
|
-
animation: action-card-slide-in
|
|
2109
|
+
animation: action-card-slide-in 340ms cubic-bezier(0.16, 1, 0.3, 1) both;
|
|
1927
2110
|
}
|
|
1928
2111
|
@keyframes action-card-slide-in {
|
|
1929
|
-
|
|
1930
|
-
|
|
2112
|
+
0% { opacity: 0; transform: translate3d(0, 1.45rem, 0) scale(0.985); }
|
|
2113
|
+
60% { opacity: 1; }
|
|
2114
|
+
100% { opacity: 1; transform: translate3d(0, 0, 0) scale(1); }
|
|
1931
2115
|
}
|
|
1932
2116
|
.message::before {
|
|
1933
2117
|
content: "";
|
|
@@ -1959,11 +2143,6 @@ button.footer-meta {
|
|
|
1959
2143
|
color: var(--ctp-mauve);
|
|
1960
2144
|
text-shadow: 0 0 0.8rem rgba(203, 166, 247, 0.22);
|
|
1961
2145
|
}
|
|
1962
|
-
.message.thinking.streaming.complete .message-role::after {
|
|
1963
|
-
content: " done";
|
|
1964
|
-
color: var(--ctp-green);
|
|
1965
|
-
text-shadow: 0 0 0.7rem var(--glow-teal);
|
|
1966
|
-
}
|
|
1967
2146
|
.message.extension,
|
|
1968
2147
|
.message.native,
|
|
1969
2148
|
.message.notice {
|
|
@@ -2457,10 +2636,6 @@ summary { cursor: pointer; color: var(--warning); }
|
|
|
2457
2636
|
letter-spacing: 0.14em;
|
|
2458
2637
|
text-shadow: 0 0 0.7rem var(--glow-teal);
|
|
2459
2638
|
}
|
|
2460
|
-
.thinking-block.streaming-thinking.complete > summary::after {
|
|
2461
|
-
content: " done";
|
|
2462
|
-
color: var(--ctp-green);
|
|
2463
|
-
}
|
|
2464
2639
|
.thinking-text {
|
|
2465
2640
|
color: rgba(var(--ctp-text-rgb), 0.82);
|
|
2466
2641
|
margin-top: 0.55rem;
|
|
@@ -3470,33 +3645,62 @@ summary { cursor: pointer; color: var(--warning); }
|
|
|
3470
3645
|
}
|
|
3471
3646
|
.release-npm-meta,
|
|
3472
3647
|
.release-npm-actions { justify-content: flex-start; }
|
|
3648
|
+
.release-npm-stream-header {
|
|
3649
|
+
padding: 0.3rem 0.42rem;
|
|
3650
|
+
font-size: 0.66rem;
|
|
3651
|
+
letter-spacing: 0.07em;
|
|
3652
|
+
}
|
|
3653
|
+
.release-npm-stream-count { font-size: 0.62rem; }
|
|
3473
3654
|
.release-npm-terminal {
|
|
3474
3655
|
max-height: min(28dvh, 16rem);
|
|
3475
3656
|
min-height: 4rem;
|
|
3476
|
-
padding: 0.52rem;
|
|
3657
|
+
padding: 0.52rem 0.42rem;
|
|
3477
3658
|
font-size: 0.72rem;
|
|
3478
3659
|
}
|
|
3660
|
+
.release-npm-line {
|
|
3661
|
+
margin: 0 -0.12rem;
|
|
3662
|
+
padding: 0 0.32rem;
|
|
3663
|
+
}
|
|
3479
3664
|
.release-npm-pill { max-width: 100%; }
|
|
3480
3665
|
.todo-widget {
|
|
3481
|
-
gap: 0
|
|
3482
|
-
margin: 0.
|
|
3483
|
-
padding: 0.
|
|
3484
|
-
border-radius: 0.
|
|
3666
|
+
gap: 0;
|
|
3667
|
+
margin: 0.12rem 0;
|
|
3668
|
+
padding: 0.36rem 0.42rem;
|
|
3669
|
+
border-radius: 0.66rem;
|
|
3670
|
+
}
|
|
3671
|
+
.todo-widget[open] {
|
|
3672
|
+
gap: 0.28rem;
|
|
3673
|
+
padding-bottom: 0.42rem;
|
|
3485
3674
|
}
|
|
3486
|
-
.todo-widget-
|
|
3487
|
-
.todo-widget-
|
|
3675
|
+
.todo-widget-summary { gap: 0.24rem; }
|
|
3676
|
+
.todo-widget-header { gap: 0.26rem; }
|
|
3677
|
+
.todo-widget-toggle {
|
|
3678
|
+
width: 0.9rem;
|
|
3679
|
+
height: 0.9rem;
|
|
3680
|
+
font-size: 0.88rem;
|
|
3681
|
+
}
|
|
3682
|
+
.todo-widget-title { font-size: 0.66rem; }
|
|
3488
3683
|
.todo-widget-count,
|
|
3489
|
-
.todo-widget-meta {
|
|
3490
|
-
|
|
3684
|
+
.todo-widget-meta {
|
|
3685
|
+
min-height: 0.98rem;
|
|
3686
|
+
padding: 0.04rem 0.28rem;
|
|
3687
|
+
font-size: 0.6rem;
|
|
3688
|
+
}
|
|
3689
|
+
.todo-widget-progress { height: 0.22rem; }
|
|
3690
|
+
.todo-widget-body {
|
|
3691
|
+
gap: 0.24rem;
|
|
3692
|
+
max-height: min(9rem, 20dvh);
|
|
3693
|
+
}
|
|
3694
|
+
.todo-widget-list { gap: 0.2rem; }
|
|
3491
3695
|
.todo-widget-item {
|
|
3492
|
-
grid-template-columns:
|
|
3493
|
-
gap: 0.
|
|
3494
|
-
font-size: 0.
|
|
3696
|
+
grid-template-columns: 0.98rem minmax(0, 1fr);
|
|
3697
|
+
gap: 0.28rem;
|
|
3698
|
+
font-size: 0.74rem;
|
|
3495
3699
|
}
|
|
3496
3700
|
.todo-widget-marker {
|
|
3497
|
-
width: 0.
|
|
3498
|
-
height: 0.
|
|
3499
|
-
font-size: 0.
|
|
3701
|
+
width: 0.82rem;
|
|
3702
|
+
height: 0.82rem;
|
|
3703
|
+
font-size: 0.58rem;
|
|
3500
3704
|
}
|
|
3501
3705
|
.chat {
|
|
3502
3706
|
padding: 0.62rem 0.58rem;
|