@firstpick/pi-package-webui 0.1.9 → 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 +15 -0
- package/WEBUI_TUI_NATIVE_PARITY.json +666 -0
- package/bin/pi-webui.mjs +375 -28
- package/package.json +6 -3
- package/public/app.js +802 -94
- package/public/index.html +25 -21
- package/public/styles.css +209 -82
- package/start-webui.ps1 +323 -0
- package/start-webui.sh +461 -0
- package/tests/mobile-static.test.mjs +118 -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,72 +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="codex-usage">
|
|
247
|
+
<section class="side-panel-section collapsed" data-side-panel-section="codex-usage">
|
|
244
248
|
<h2>
|
|
245
|
-
<button id="sidePanelSectionToggleCodexUsage" class="side-panel-section-toggle" type="button" aria-expanded="
|
|
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">
|
|
246
250
|
<span class="side-panel-section-label">Codex Usage</span>
|
|
247
251
|
<span class="side-panel-section-chevron" aria-hidden="true">›</span>
|
|
248
252
|
</button>
|
|
249
253
|
</h2>
|
|
250
|
-
<div id="sidePanelSectionCodexUsage" class="side-panel-section-content">
|
|
254
|
+
<div id="sidePanelSectionCodexUsage" class="side-panel-section-content" hidden>
|
|
251
255
|
<div class="codex-usage-actions">
|
|
252
256
|
<button id="refreshCodexUsageButton" type="button">Refresh usage</button>
|
|
253
257
|
</div>
|
|
254
258
|
<div id="codexUsageBox" class="codex-usage-box muted">Checking Codex usage…</div>
|
|
255
259
|
</div>
|
|
256
260
|
</section>
|
|
257
|
-
<section class="side-panel-section" data-side-panel-section="session">
|
|
261
|
+
<section class="side-panel-section collapsed" data-side-panel-section="session">
|
|
258
262
|
<h2>
|
|
259
|
-
<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">
|
|
260
264
|
<span class="side-panel-section-label">Session</span>
|
|
261
265
|
<span class="side-panel-section-chevron" aria-hidden="true">›</span>
|
|
262
266
|
</button>
|
|
263
267
|
</h2>
|
|
264
|
-
<div id="sidePanelSectionSession" class="side-panel-section-content">
|
|
268
|
+
<div id="sidePanelSectionSession" class="side-panel-section-content" hidden>
|
|
265
269
|
<dl id="stateDetails" class="details"></dl>
|
|
266
270
|
</div>
|
|
267
271
|
</section>
|
|
268
|
-
<section class="side-panel-section" data-side-panel-section="queue">
|
|
272
|
+
<section class="side-panel-section collapsed" data-side-panel-section="queue">
|
|
269
273
|
<h2>
|
|
270
|
-
<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">
|
|
271
275
|
<span class="side-panel-section-label">Queue</span>
|
|
272
276
|
<span class="side-panel-section-chevron" aria-hidden="true">›</span>
|
|
273
277
|
</button>
|
|
274
278
|
</h2>
|
|
275
|
-
<div id="sidePanelSectionQueue" class="side-panel-section-content">
|
|
279
|
+
<div id="sidePanelSectionQueue" class="side-panel-section-content" hidden>
|
|
276
280
|
<div id="queueBox" class="queue-box muted">No queued messages.</div>
|
|
277
281
|
</div>
|
|
278
282
|
</section>
|
|
279
|
-
<section class="side-panel-section" data-side-panel-section="commands">
|
|
283
|
+
<section class="side-panel-section collapsed" data-side-panel-section="commands">
|
|
280
284
|
<h2>
|
|
281
|
-
<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">
|
|
282
286
|
<span class="side-panel-section-label">Commands</span>
|
|
283
287
|
<span class="side-panel-section-chevron" aria-hidden="true">›</span>
|
|
284
288
|
</button>
|
|
285
289
|
</h2>
|
|
286
|
-
<div id="sidePanelSectionCommands" class="side-panel-section-content">
|
|
290
|
+
<div id="sidePanelSectionCommands" class="side-panel-section-content" hidden>
|
|
287
291
|
<div id="commandsBox" class="commands-box muted">Loading…</div>
|
|
288
292
|
</div>
|
|
289
293
|
</section>
|
|
290
|
-
<section class="side-panel-section" data-side-panel-section="events">
|
|
294
|
+
<section class="side-panel-section collapsed" data-side-panel-section="events">
|
|
291
295
|
<h2>
|
|
292
|
-
<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">
|
|
293
297
|
<span class="side-panel-section-label">Events</span>
|
|
294
298
|
<span class="side-panel-section-chevron" aria-hidden="true">›</span>
|
|
295
299
|
</button>
|
|
296
300
|
</h2>
|
|
297
|
-
<div id="sidePanelSectionEvents" class="side-panel-section-content">
|
|
301
|
+
<div id="sidePanelSectionEvents" class="side-panel-section-content" hidden>
|
|
298
302
|
<div id="eventLog" class="event-log"></div>
|
|
299
303
|
</div>
|
|
300
304
|
</section>
|
package/public/styles.css
CHANGED
|
@@ -1685,19 +1685,26 @@ button.footer-meta {
|
|
|
1685
1685
|
display: grid;
|
|
1686
1686
|
gap: 0.62rem;
|
|
1687
1687
|
padding: 0.72rem;
|
|
1688
|
+
overflow: hidden;
|
|
1688
1689
|
white-space: normal;
|
|
1689
|
-
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);
|
|
1690
1692
|
background:
|
|
1691
|
-
radial-gradient(circle at 4% 0%, rgba(245, 194, 231, 0.
|
|
1692
|
-
radial-gradient(circle at 96% 12%, rgba(148, 226, 213, 0.
|
|
1693
|
-
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);
|
|
1694
1700
|
}
|
|
1695
1701
|
.release-aur-widget {
|
|
1696
|
-
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);
|
|
1697
1704
|
background:
|
|
1698
|
-
radial-gradient(circle at 4% 0%, rgba(250, 179, 135, 0.
|
|
1699
|
-
radial-gradient(circle at 96% 12%, rgba(166, 227, 161, 0.
|
|
1700
|
-
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));
|
|
1701
1708
|
}
|
|
1702
1709
|
.release-aur-widget .release-npm-kicker { color: var(--ctp-peach); }
|
|
1703
1710
|
.release-npm-header {
|
|
@@ -1741,9 +1748,9 @@ button.footer-meta {
|
|
|
1741
1748
|
padding: 0.16rem 0.5rem;
|
|
1742
1749
|
overflow: hidden;
|
|
1743
1750
|
color: var(--ctp-yellow);
|
|
1744
|
-
border: 1px solid rgba(249, 226, 175, 0.
|
|
1751
|
+
border: 1px solid rgba(249, 226, 175, 0.32);
|
|
1745
1752
|
border-radius: 999px;
|
|
1746
|
-
background: rgba(var(--ctp-crust-rgb), 0.
|
|
1753
|
+
background: rgba(var(--ctp-crust-rgb), 0.72);
|
|
1747
1754
|
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
|
|
1748
1755
|
font-size: 0.72rem;
|
|
1749
1756
|
font-weight: 800;
|
|
@@ -1758,61 +1765,150 @@ button.footer-meta {
|
|
|
1758
1765
|
font-size: 0.76rem;
|
|
1759
1766
|
font-weight: 850;
|
|
1760
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
|
+
}
|
|
1761
1809
|
.release-npm-terminal {
|
|
1762
1810
|
max-height: min(34rem, 42vh);
|
|
1763
1811
|
min-height: 5.25rem;
|
|
1764
1812
|
overflow: auto;
|
|
1765
|
-
padding: 0.
|
|
1766
|
-
border: 1px solid rgba(
|
|
1813
|
+
padding: 0.78rem 0.62rem;
|
|
1814
|
+
border: 1px solid rgba(137, 180, 250, 0.42);
|
|
1767
1815
|
border-radius: 0.78rem;
|
|
1816
|
+
color: rgba(var(--ctp-text-rgb), 0.96);
|
|
1768
1817
|
background:
|
|
1769
|
-
linear-gradient(180deg, rgba(
|
|
1770
|
-
radial-gradient(circle at 0 0, rgba(148, 226, 213, 0.
|
|
1771
|
-
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);
|
|
1772
1823
|
font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
|
|
1773
1824
|
font-size: 0.78rem;
|
|
1774
|
-
line-height: 1.
|
|
1825
|
+
line-height: 1.5;
|
|
1775
1826
|
overscroll-behavior: contain;
|
|
1776
1827
|
}
|
|
1777
1828
|
.release-npm-line {
|
|
1778
|
-
|
|
1779
|
-
|
|
1780
|
-
|
|
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);
|
|
1781
1837
|
white-space: pre;
|
|
1782
1838
|
}
|
|
1783
|
-
.release-npm-line
|
|
1784
|
-
.release-npm-line.
|
|
1785
|
-
.release-npm-line.
|
|
1786
|
-
.release-npm-line.
|
|
1787
|
-
.release-npm-line.
|
|
1788
|
-
.release-npm-line.
|
|
1789
|
-
.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); }
|
|
1790
1847
|
.release-npm-controls {
|
|
1791
|
-
color: rgba(var(--ctp-subtext-rgb), 0.
|
|
1848
|
+
color: rgba(var(--ctp-subtext-rgb), 0.78);
|
|
1792
1849
|
font-size: 0.75rem;
|
|
1793
1850
|
line-height: 1.35;
|
|
1794
1851
|
}
|
|
1795
1852
|
.release-npm-log-widget .release-npm-terminal {
|
|
1796
1853
|
max-height: min(42rem, 52vh);
|
|
1797
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
|
+
}
|
|
1798
1862
|
.todo-widget {
|
|
1799
1863
|
display: grid;
|
|
1800
|
-
gap: 0
|
|
1801
|
-
|
|
1864
|
+
gap: 0;
|
|
1865
|
+
margin: 0.16rem 0;
|
|
1866
|
+
padding: 0.42rem 0.5rem;
|
|
1802
1867
|
white-space: normal;
|
|
1803
|
-
border-color: rgba(137, 180, 250, 0.
|
|
1868
|
+
border-color: rgba(137, 180, 250, 0.28);
|
|
1804
1869
|
background:
|
|
1805
|
-
radial-gradient(circle at 4% 0%, rgba(137, 180, 250, 0.
|
|
1806
|
-
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));
|
|
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;
|
|
1807
1884
|
}
|
|
1885
|
+
.todo-widget-summary::-webkit-details-marker { display: none; }
|
|
1808
1886
|
.todo-widget-header {
|
|
1809
1887
|
display: flex;
|
|
1810
1888
|
align-items: center;
|
|
1811
|
-
gap: 0.
|
|
1889
|
+
gap: 0.34rem;
|
|
1812
1890
|
min-width: 0;
|
|
1813
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
|
+
}
|
|
1814
1908
|
.todo-widget-title {
|
|
1909
|
+
min-width: 0;
|
|
1815
1910
|
color: var(--ctp-blue);
|
|
1911
|
+
font-size: 0.72rem;
|
|
1816
1912
|
font-weight: 950;
|
|
1817
1913
|
letter-spacing: 0.08em;
|
|
1818
1914
|
text-transform: uppercase;
|
|
@@ -1821,58 +1917,68 @@ button.footer-meta {
|
|
|
1821
1917
|
.todo-widget-meta {
|
|
1822
1918
|
display: inline-flex;
|
|
1823
1919
|
align-items: center;
|
|
1824
|
-
min-height: 1.
|
|
1825
|
-
padding: 0.
|
|
1826
|
-
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);
|
|
1827
1923
|
border-radius: 999px;
|
|
1828
|
-
background: rgba(var(--ctp-crust-rgb), 0.
|
|
1829
|
-
font-size: 0.
|
|
1924
|
+
background: rgba(var(--ctp-crust-rgb), 0.44);
|
|
1925
|
+
font-size: 0.66rem;
|
|
1830
1926
|
font-weight: 850;
|
|
1927
|
+
line-height: 1;
|
|
1831
1928
|
}
|
|
1832
1929
|
.todo-widget-count { color: var(--ctp-green); }
|
|
1833
1930
|
.todo-widget-meta { color: var(--ctp-yellow); }
|
|
1834
1931
|
.todo-widget-progress {
|
|
1835
|
-
height: 0.
|
|
1932
|
+
height: 0.26rem;
|
|
1836
1933
|
overflow: hidden;
|
|
1837
1934
|
border-radius: 999px;
|
|
1838
|
-
background: rgba(var(--ctp-surface-rgb), 0.
|
|
1839
|
-
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);
|
|
1840
1937
|
}
|
|
1841
1938
|
.todo-widget-progress-fill {
|
|
1842
1939
|
display: block;
|
|
1843
1940
|
height: 100%;
|
|
1844
1941
|
border-radius: inherit;
|
|
1845
1942
|
background: linear-gradient(90deg, var(--ctp-blue), var(--ctp-teal), var(--ctp-green));
|
|
1846
|
-
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;
|
|
1847
1952
|
}
|
|
1848
1953
|
.todo-widget-list {
|
|
1849
1954
|
display: grid;
|
|
1850
|
-
gap: 0.
|
|
1955
|
+
gap: 0.24rem;
|
|
1851
1956
|
margin: 0;
|
|
1852
1957
|
padding: 0;
|
|
1853
1958
|
list-style: none;
|
|
1854
1959
|
}
|
|
1855
1960
|
.todo-widget-item {
|
|
1856
1961
|
display: grid;
|
|
1857
|
-
grid-template-columns: 1.
|
|
1962
|
+
grid-template-columns: 1.05rem minmax(0, 1fr);
|
|
1858
1963
|
align-items: start;
|
|
1859
|
-
gap: 0.
|
|
1964
|
+
gap: 0.34rem;
|
|
1860
1965
|
min-width: 0;
|
|
1861
|
-
color: rgba(var(--ctp-text-rgb), 0.
|
|
1966
|
+
color: rgba(var(--ctp-text-rgb), 0.90);
|
|
1967
|
+
font-size: 0.78rem;
|
|
1862
1968
|
}
|
|
1863
1969
|
.todo-widget-marker {
|
|
1864
1970
|
display: inline-grid;
|
|
1865
1971
|
place-items: center;
|
|
1866
|
-
width:
|
|
1867
|
-
height:
|
|
1868
|
-
margin-top: 0.
|
|
1869
|
-
border: 1px solid rgba(180, 190, 254, 0.
|
|
1870
|
-
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;
|
|
1871
1977
|
color: #11111b;
|
|
1872
|
-
font-size: 0.
|
|
1978
|
+
font-size: 0.62rem;
|
|
1873
1979
|
font-weight: 950;
|
|
1874
1980
|
line-height: 1;
|
|
1875
|
-
background: rgba(var(--ctp-surface-rgb), 0.
|
|
1981
|
+
background: rgba(var(--ctp-surface-rgb), 0.86);
|
|
1876
1982
|
}
|
|
1877
1983
|
.todo-widget-item.done .todo-widget-marker {
|
|
1878
1984
|
border-color: transparent;
|
|
@@ -1890,11 +1996,11 @@ button.footer-meta {
|
|
|
1890
1996
|
.todo-widget-text {
|
|
1891
1997
|
min-width: 0;
|
|
1892
1998
|
overflow-wrap: anywhere;
|
|
1893
|
-
line-height: 1.
|
|
1999
|
+
line-height: 1.28;
|
|
1894
2000
|
}
|
|
1895
2001
|
.todo-widget-footer {
|
|
1896
2002
|
color: rgba(var(--ctp-subtext-rgb), 0.64);
|
|
1897
|
-
font-size: 0.
|
|
2003
|
+
font-size: 0.68rem;
|
|
1898
2004
|
}
|
|
1899
2005
|
.chat {
|
|
1900
2006
|
position: relative;
|
|
@@ -2000,11 +2106,12 @@ button.footer-meta {
|
|
|
2000
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);
|
|
2001
2107
|
}
|
|
2002
2108
|
.message.action-enter {
|
|
2003
|
-
animation: action-card-slide-in
|
|
2109
|
+
animation: action-card-slide-in 340ms cubic-bezier(0.16, 1, 0.3, 1) both;
|
|
2004
2110
|
}
|
|
2005
2111
|
@keyframes action-card-slide-in {
|
|
2006
|
-
|
|
2007
|
-
|
|
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); }
|
|
2008
2115
|
}
|
|
2009
2116
|
.message::before {
|
|
2010
2117
|
content: "";
|
|
@@ -2036,11 +2143,6 @@ button.footer-meta {
|
|
|
2036
2143
|
color: var(--ctp-mauve);
|
|
2037
2144
|
text-shadow: 0 0 0.8rem rgba(203, 166, 247, 0.22);
|
|
2038
2145
|
}
|
|
2039
|
-
.message.thinking.streaming.complete .message-role::after {
|
|
2040
|
-
content: " done";
|
|
2041
|
-
color: var(--ctp-green);
|
|
2042
|
-
text-shadow: 0 0 0.7rem var(--glow-teal);
|
|
2043
|
-
}
|
|
2044
2146
|
.message.extension,
|
|
2045
2147
|
.message.native,
|
|
2046
2148
|
.message.notice {
|
|
@@ -2534,10 +2636,6 @@ summary { cursor: pointer; color: var(--warning); }
|
|
|
2534
2636
|
letter-spacing: 0.14em;
|
|
2535
2637
|
text-shadow: 0 0 0.7rem var(--glow-teal);
|
|
2536
2638
|
}
|
|
2537
|
-
.thinking-block.streaming-thinking.complete > summary::after {
|
|
2538
|
-
content: " done";
|
|
2539
|
-
color: var(--ctp-green);
|
|
2540
|
-
}
|
|
2541
2639
|
.thinking-text {
|
|
2542
2640
|
color: rgba(var(--ctp-text-rgb), 0.82);
|
|
2543
2641
|
margin-top: 0.55rem;
|
|
@@ -3547,33 +3645,62 @@ summary { cursor: pointer; color: var(--warning); }
|
|
|
3547
3645
|
}
|
|
3548
3646
|
.release-npm-meta,
|
|
3549
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; }
|
|
3550
3654
|
.release-npm-terminal {
|
|
3551
3655
|
max-height: min(28dvh, 16rem);
|
|
3552
3656
|
min-height: 4rem;
|
|
3553
|
-
padding: 0.52rem;
|
|
3657
|
+
padding: 0.52rem 0.42rem;
|
|
3554
3658
|
font-size: 0.72rem;
|
|
3555
3659
|
}
|
|
3660
|
+
.release-npm-line {
|
|
3661
|
+
margin: 0 -0.12rem;
|
|
3662
|
+
padding: 0 0.32rem;
|
|
3663
|
+
}
|
|
3556
3664
|
.release-npm-pill { max-width: 100%; }
|
|
3557
3665
|
.todo-widget {
|
|
3558
|
-
gap: 0
|
|
3559
|
-
margin: 0.
|
|
3560
|
-
padding: 0.
|
|
3561
|
-
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;
|
|
3674
|
+
}
|
|
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;
|
|
3562
3681
|
}
|
|
3563
|
-
.todo-widget-
|
|
3564
|
-
.todo-widget-title { font-size: 0.7rem; }
|
|
3682
|
+
.todo-widget-title { font-size: 0.66rem; }
|
|
3565
3683
|
.todo-widget-count,
|
|
3566
|
-
.todo-widget-meta {
|
|
3567
|
-
|
|
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; }
|
|
3568
3695
|
.todo-widget-item {
|
|
3569
|
-
grid-template-columns:
|
|
3570
|
-
gap: 0.
|
|
3571
|
-
font-size: 0.
|
|
3696
|
+
grid-template-columns: 0.98rem minmax(0, 1fr);
|
|
3697
|
+
gap: 0.28rem;
|
|
3698
|
+
font-size: 0.74rem;
|
|
3572
3699
|
}
|
|
3573
3700
|
.todo-widget-marker {
|
|
3574
|
-
width: 0.
|
|
3575
|
-
height: 0.
|
|
3576
|
-
font-size: 0.
|
|
3701
|
+
width: 0.82rem;
|
|
3702
|
+
height: 0.82rem;
|
|
3703
|
+
font-size: 0.58rem;
|
|
3577
3704
|
}
|
|
3578
3705
|
.chat {
|
|
3579
3706
|
padding: 0.62rem 0.58rem;
|