@hienlh/ppm 0.18.9 → 0.18.10
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/.spike/group-protected-probe.ts +21 -0
- package/.spike/tunnel.err +22 -42
- package/.spike/w.err +26 -94
- package/CHANGELOG.md +12 -0
- package/assets/skills/ppm/SKILL.md +1 -1
- package/assets/skills/ppm/references/http-api.md +1 -1
- package/dist/web/assets/{ai-resource-editor-DFCuNe-P.js → ai-resource-editor-mdDKG-rw.js} +1 -1
- package/dist/web/assets/{chat-tab-flMPLoKb.js → chat-tab-C060A94y.js} +3 -3
- package/dist/web/assets/{code-editor-C2VQbXzw.js → code-editor-WELegzdp.js} +2 -2
- package/dist/web/assets/{conflict-editor-CdH_h0vD.js → conflict-editor-fRTU3f1o.js} +1 -1
- package/dist/web/assets/{csv-preview-CY_454vd.js → csv-preview-D1d0cxOJ.js} +1 -1
- package/dist/web/assets/{database-viewer-BCZOTrPT.js → database-viewer-DevnWTV4.js} +1 -1
- package/dist/web/assets/{diff-viewer-BwfMN-nW.js → diff-viewer-DGxVg1pD.js} +1 -1
- package/dist/web/assets/{docx-preview-D3Sdh_aT.js → docx-preview-Cx-zLwAw.js} +1 -1
- package/dist/web/assets/{explorer-body-BKOMM566.js → explorer-body-j_4hVc34.js} +1 -1
- package/dist/web/assets/{explorer-window-content-Bbzijk8t.js → explorer-window-content-DdrGwk3w.js} +1 -1
- package/dist/web/assets/{extension-webview-CuOQrHIS.js → extension-webview-BH_mWYMe.js} +1 -1
- package/dist/web/assets/format-bytes-BE_W3UBg.js +1 -0
- package/dist/web/assets/{git-log-panel-DcV7PhqW.js → git-log-panel-CfpXRJcP.js} +1 -1
- package/dist/web/assets/{glide-data-grid-Cehfgrzc.js → glide-data-grid-n4ox_uev.js} +1 -1
- package/dist/web/assets/{group-chat-tab-BVPYxjz-.js → group-chat-tab-dYuuknLN.js} +1 -1
- package/dist/web/assets/{image-preview-D-Ok10eZ.js → image-preview-Ss38ex8g.js} +1 -1
- package/dist/web/assets/index-BiTiXgBZ.css +2 -0
- package/dist/web/assets/{index-CerSxGdf.js → index-Ch8l9de-.js} +5 -5
- package/dist/web/assets/{keybindings-store-aIY40k2o.js → keybindings-store-CDfTjwZX.js} +1 -1
- package/dist/web/assets/{markdown-renderer-pVzBdkpl.js → markdown-renderer-B317vEys.js} +1 -1
- package/dist/web/assets/{markdown-renderer-I89kyQhe.js → markdown-renderer-CpRlpLHw.js} +1 -1
- package/dist/web/assets/{mobile-explorer-sheet-5Uj9ZMM9.js → mobile-explorer-sheet-D1Bv9UCT.js} +1 -1
- package/dist/web/assets/{notification-store-DJ-OtAG3.js → notification-store-KwTAZT8b.js} +1 -1
- package/dist/web/assets/overview-panel-BxDohIEa.js +1 -0
- package/dist/web/assets/{pdf-preview-Di5xHFyT.js → pdf-preview-dwRe54ht.js} +1 -1
- package/dist/web/assets/{postgres-viewer-CR6VpTrX.js → postgres-viewer-BWZLW7kI.js} +1 -1
- package/dist/web/assets/process-table-CI-fnVsy.js +1 -0
- package/dist/web/assets/resolve-theme-B9ABAH_3.js +1 -0
- package/dist/web/assets/{settings-tab-jbiQwozX.js → settings-tab-mPxrKkfm.js} +1 -1
- package/dist/web/assets/{sql-query-editor-BPYsJDsn.js → sql-query-editor-BwPjEaP9.js} +1 -1
- package/dist/web/assets/{sqlite-viewer-Bq9ZJA2y.js → sqlite-viewer-Cs-_D942.js} +1 -1
- package/dist/web/assets/{system-monitor-body-CKEYWyN9.js → system-monitor-body-CV7-0hZG.js} +2 -2
- package/dist/web/assets/{system-monitor-tab-WjhFFHyM.js → system-monitor-tab-Ce-8Axhh.js} +1 -1
- package/dist/web/assets/{system-monitor-window-content-CMiISeoC.js → system-monitor-window-content-CetwYOQy.js} +1 -1
- package/dist/web/assets/{team-member-sheet-oY5EkH53.js → team-member-sheet-CjgaQjsZ.js} +2 -2
- package/dist/web/assets/{team-member-window-content-yCBeI_5X.js → team-member-window-content-DNJiYWS7.js} +1 -1
- package/dist/web/assets/{terminal-tab-BxHtMR7h.js → terminal-tab-DF7521sT.js} +1 -1
- package/dist/web/assets/{tool-cards-BcGrk1zk.js → tool-cards-DCAXGDJI.js} +2 -2
- package/dist/web/assets/{use-monaco-theme-CGucu3fb.js → use-monaco-theme-DSCdlrjO.js} +1 -1
- package/dist/web/assets/{use-open-team-member-DdrRXj-M.js → use-open-team-member-H4k74HnV.js} +1 -1
- package/dist/web/assets/{use-websocket-C-Rxv8JN.js → use-websocket-iJfc7EbK.js} +1 -1
- package/dist/web/assets/{video-preview-DYAbbmd0.js → video-preview-B0ZWpX0F.js} +1 -1
- package/dist/web/index.html +3 -3
- package/dist/web/sw.js +1 -1
- package/package.json +1 -1
- package/src/web/components/system/build-kill-request.ts +28 -1
- package/src/web/components/system/chart-scale.ts +3 -3
- package/src/web/components/system/kill-confirm-dialog.tsx +44 -28
- package/src/web/components/system/metric-chart-canvas.tsx +1 -2
- package/src/web/components/system/process-columns-grid.ts +39 -29
- package/src/web/components/system/process-group-row.tsx +31 -8
- package/src/web/components/system/process-row.tsx +6 -7
- package/src/web/components/system/process-table-model.ts +4 -22
- package/src/web/components/system/process-table-toolbar.tsx +12 -43
- package/src/web/components/system/process-table.tsx +22 -63
- package/src/web/components/system/sortable-header.tsx +33 -8
- package/src/web/components/system/system-monitor-body.tsx +1 -1
- package/src/web/components/system/use-column-widths.ts +91 -0
- package/src/web/components/system/use-process-kill.ts +100 -0
- package/src/web/styles/globals.css +5 -3
- package/src/web/theme/builtin/aurora.ts +8 -5
- package/dist/web/assets/format-bytes-Dk7B73B7.js +0 -1
- package/dist/web/assets/index-DRA_OpWY.css +0 -2
- package/dist/web/assets/overview-panel-Cgi3UPY1.js +0 -1
- package/dist/web/assets/process-table-DL6shbzt.js +0 -1
- package/dist/web/assets/resolve-theme-IdhSR-gx.js +0 -1
- package/src/web/components/system/sparkline-canvas.tsx +0 -63
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// How many groups would the whole-app kill button be enabled for, per the live snapshot?
|
|
2
|
+
import { Database } from "bun:sqlite";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
import { resolve } from "node:path";
|
|
5
|
+
import { isGroupProtected } from "../src/web/components/system/build-kill-request.ts";
|
|
6
|
+
|
|
7
|
+
const db = new Database(resolve(homedir(), ".ppm", "ppm.dev.db"), { readonly: true });
|
|
8
|
+
const row = db.query("SELECT value FROM config WHERE key = 'auth'").get() as { value: string } | null;
|
|
9
|
+
const token = row ? JSON.parse(row.value)?.token : undefined;
|
|
10
|
+
const res = await fetch("http://localhost:8081/api/system/resources?processes=1", { headers: token ? { Authorization: `Bearer ${token}` } : {} });
|
|
11
|
+
const snap = (await res.json()).data;
|
|
12
|
+
const byPid = new Map(snap.processes.map((p: any) => [p.pid, p]));
|
|
13
|
+
let enabled = 0, disabled = 0;
|
|
14
|
+
const protectedNames = new Map<string, number>();
|
|
15
|
+
for (const g of snap.groups) {
|
|
16
|
+
const members = g.pids.map((pid: number) => byPid.get(pid)).filter(Boolean);
|
|
17
|
+
if (isGroupProtected(members)) { disabled++; for (const m of members) if (m.protected) protectedNames.set(m.name, (protectedNames.get(m.name) ?? 0) + 1); }
|
|
18
|
+
else enabled++;
|
|
19
|
+
}
|
|
20
|
+
console.log({ groups: snap.groups.length, enabled, disabled, processes: snap.processes.length, protectedProcs: snap.processes.filter((p: any) => p.protected).length });
|
|
21
|
+
console.log("protected names in disabled groups:", [...protectedNames].slice(0, 12));
|
package/.spike/tunnel.err
CHANGED
|
@@ -1,42 +1,22 @@
|
|
|
1
|
-
2026-09-
|
|
2
|
-
2026-09-
|
|
3
|
-
2026-09-
|
|
4
|
-
2026-09-
|
|
5
|
-
2026-09-
|
|
6
|
-
2026-09-
|
|
7
|
-
2026-09-
|
|
8
|
-
2026-09-
|
|
9
|
-
2026-09-
|
|
10
|
-
2026-09-
|
|
11
|
-
2026-09-
|
|
12
|
-
2026-09-
|
|
13
|
-
2026-09-
|
|
14
|
-
2026-09-
|
|
15
|
-
2026-09-
|
|
16
|
-
2026-09-
|
|
17
|
-
2026-09-
|
|
18
|
-
2026-09-
|
|
19
|
-
2026-09-
|
|
20
|
-
2026-09-
|
|
21
|
-
2026-09-
|
|
22
|
-
2026-09-
|
|
23
|
-
2026-09-04T16:05:08Z ERR error="stream 2085 canceled by remote with error code 0" connIndex=0 event=1 ingressRule=0 originService=http://localhost:5173
|
|
24
|
-
2026-09-04T16:05:08Z ERR Request failed error="stream 2085 canceled by remote with error code 0" connIndex=0 dest=https://thereafter-appreciate-dreams-parliamentary.trycloudflare.com/api/system/resources/stream?token=123123 event=0 ip=198.41.192.47 type=http
|
|
25
|
-
2026-09-04T16:13:19Z ERR error="Unable to reach the origin service. The service may be down or it may not be responding to traffic from cloudflared: EOF" connIndex=0 event=1 ingressRule=0 originService=http://localhost:5173
|
|
26
|
-
2026-09-04T16:13:19Z ERR Request failed error="Unable to reach the origin service. The service may be down or it may not be responding to traffic from cloudflared: EOF" connIndex=0 dest=https://thereafter-appreciate-dreams-parliamentary.trycloudflare.com/ws/global?token=123123 event=0 ip=198.41.192.47 type=ws
|
|
27
|
-
2026-09-04T16:13:20Z ERR error="Unable to reach the origin service. The service may be down or it may not be responding to traffic from cloudflared: EOF" connIndex=0 event=1 ingressRule=0 originService=http://localhost:5173
|
|
28
|
-
2026-09-04T16:13:20Z ERR Request failed error="Unable to reach the origin service. The service may be down or it may not be responding to traffic from cloudflared: EOF" connIndex=0 dest=https://thereafter-appreciate-dreams-parliamentary.trycloudflare.com/ws/project/ppm/terminal/dacbd4e9-6317-4634-85e8-ed0ffd7b1205?token=123123 event=0 ip=198.41.192.47 type=ws
|
|
29
|
-
2026-09-04T16:13:20Z ERR error="Unable to reach the origin service. The service may be down or it may not be responding to traffic from cloudflared: EOF" connIndex=0 event=1 ingressRule=0 originService=http://localhost:5173
|
|
30
|
-
2026-09-04T16:13:20Z ERR Request failed error="Unable to reach the origin service. The service may be down or it may not be responding to traffic from cloudflared: EOF" connIndex=0 dest=https://thereafter-appreciate-dreams-parliamentary.trycloudflare.com/ws/extensions?token=123123 event=0 ip=198.41.192.47 type=ws
|
|
31
|
-
2026-09-04T16:13:22Z ERR error="Unable to reach the origin service. The service may be down or it may not be responding to traffic from cloudflared: EOF" connIndex=0 event=1 ingressRule=0 originService=http://localhost:5173
|
|
32
|
-
2026-09-04T16:13:22Z ERR Request failed error="Unable to reach the origin service. The service may be down or it may not be responding to traffic from cloudflared: EOF" connIndex=0 dest=https://thereafter-appreciate-dreams-parliamentary.trycloudflare.com/ws/global?token=123123 event=0 ip=198.41.192.47 type=ws
|
|
33
|
-
2026-09-04T16:13:23Z ERR error="Unable to reach the origin service. The service may be down or it may not be responding to traffic from cloudflared: EOF" connIndex=0 event=1 ingressRule=0 originService=http://localhost:5173
|
|
34
|
-
2026-09-04T16:13:23Z ERR Request failed error="Unable to reach the origin service. The service may be down or it may not be responding to traffic from cloudflared: EOF" connIndex=0 dest=https://thereafter-appreciate-dreams-parliamentary.trycloudflare.com/ws/project/ppm/terminal/dacbd4e9-6317-4634-85e8-ed0ffd7b1205?token=123123 event=0 ip=198.41.192.47 type=ws
|
|
35
|
-
2026-09-04T16:13:23Z ERR error="Unable to reach the origin service. The service may be down or it may not be responding to traffic from cloudflared: EOF" connIndex=0 event=1 ingressRule=0 originService=http://localhost:5173
|
|
36
|
-
2026-09-04T16:13:23Z ERR Request failed error="Unable to reach the origin service. The service may be down or it may not be responding to traffic from cloudflared: EOF" connIndex=0 dest=https://thereafter-appreciate-dreams-parliamentary.trycloudflare.com/ws/extensions?token=123123 event=0 ip=198.41.192.47 type=ws
|
|
37
|
-
2026-09-04T16:13:27Z ERR error="Unable to reach the origin service. The service may be down or it may not be responding to traffic from cloudflared: EOF" connIndex=0 event=1 ingressRule=0 originService=http://localhost:5173
|
|
38
|
-
2026-09-04T16:13:27Z ERR Request failed error="Unable to reach the origin service. The service may be down or it may not be responding to traffic from cloudflared: EOF" connIndex=0 dest=https://thereafter-appreciate-dreams-parliamentary.trycloudflare.com/ws/global?token=123123 event=0 ip=198.41.192.47 type=ws
|
|
39
|
-
2026-09-04T16:13:28Z ERR error="Unable to reach the origin service. The service may be down or it may not be responding to traffic from cloudflared: EOF" connIndex=0 event=1 ingressRule=0 originService=http://localhost:5173
|
|
40
|
-
2026-09-04T16:13:28Z ERR Request failed error="Unable to reach the origin service. The service may be down or it may not be responding to traffic from cloudflared: EOF" connIndex=0 dest=https://thereafter-appreciate-dreams-parliamentary.trycloudflare.com/ws/project/ppm/terminal/dacbd4e9-6317-4634-85e8-ed0ffd7b1205?token=123123 event=0 ip=198.41.192.47 type=ws
|
|
41
|
-
2026-09-04T16:13:28Z ERR error="Unable to reach the origin service. The service may be down or it may not be responding to traffic from cloudflared: EOF" connIndex=0 event=1 ingressRule=0 originService=http://localhost:5173
|
|
42
|
-
2026-09-04T16:13:28Z ERR Request failed error="Unable to reach the origin service. The service may be down or it may not be responding to traffic from cloudflared: EOF" connIndex=0 dest=https://thereafter-appreciate-dreams-parliamentary.trycloudflare.com/ws/extensions?token=123123 event=0 ip=198.41.192.47 type=ws
|
|
1
|
+
2026-09-04T18:56:09Z INF Thank you for trying Cloudflare Tunnel. Doing so, without a Cloudflare account, is a quick way to experiment and try it out. However, be aware that these account-less Tunnels have no uptime guarantee, are subject to the Cloudflare Online Services Terms of Use (https://www.cloudflare.com/website-terms/), and Cloudflare reserves the right to investigate your use of Tunnels for violations of such terms. If you intend to use Tunnels in production you should use a pre-created named tunnel by following: https://developers.cloudflare.com/cloudflare-one/connections/connect-apps
|
|
2
|
+
2026-09-04T18:56:09Z INF Requesting new quick Tunnel on trycloudflare.com...
|
|
3
|
+
2026-09-04T18:56:13Z INF +--------------------------------------------------------------------------------------------+
|
|
4
|
+
2026-09-04T18:56:13Z INF | Your quick Tunnel has been created! Visit it at (it may take some time to be reachable): |
|
|
5
|
+
2026-09-04T18:56:13Z INF | https://cancellation-harold-more-tigers.trycloudflare.com |
|
|
6
|
+
2026-09-04T18:56:13Z INF +--------------------------------------------------------------------------------------------+
|
|
7
|
+
2026-09-04T18:56:13Z INF Cannot determine default configuration path. No file [config.yml config.yaml] in [~/.cloudflared ~/.cloudflare-warp ~/cloudflare-warp]
|
|
8
|
+
2026-09-04T18:56:13Z INF Version 2025.8.1 (Checksum b5d598b00cc3a28cabc5812d9f762819334614bae452db4e7f23eefe7b081556)
|
|
9
|
+
2026-09-04T18:56:13Z INF GOOS: windows, GOVersion: go1.24.2, GoArch: amd64
|
|
10
|
+
2026-09-04T18:56:13Z INF Settings: map[ha-connections:1 no-autoupdate:true protocol:quic url:http://localhost:5173]
|
|
11
|
+
2026-09-04T18:56:13Z INF cloudflared will not automatically update on Windows systems.
|
|
12
|
+
2026-09-04T18:56:13Z INF Generated Connector ID: f47e931b-a8fd-4f00-8ca3-408da700752e
|
|
13
|
+
2026-09-04T18:56:13Z INF Initial protocol quic
|
|
14
|
+
2026-09-04T18:56:13Z INF ICMP proxy will use 192.168.1.35 as source for IPv4
|
|
15
|
+
2026-09-04T18:56:13Z INF ICMP proxy will use 2405:4802:bfda:8c0::7ef in zone Wi-Fi as source for IPv6
|
|
16
|
+
2026-09-04T18:56:13Z ERR Cannot determine default origin certificate path. No file cert.pem in [~/.cloudflared ~/.cloudflare-warp ~/cloudflare-warp]. You need to specify the origin certificate path by specifying the origincert option in the configuration file, or set TUNNEL_ORIGIN_CERT environment variable originCertPath=
|
|
17
|
+
2026-09-04T18:56:13Z INF cloudflared does not support loading the system root certificate pool on Windows. Please use --origin-ca-pool <PATH> to specify the path to the certificate pool
|
|
18
|
+
2026-09-04T18:56:13Z INF ICMP proxy will use 192.168.1.35 as source for IPv4
|
|
19
|
+
2026-09-04T18:56:13Z INF Tunnel connection curve preferences: [X25519MLKEM768 CurveP256] connIndex=0 event=0 ip=198.41.200.193
|
|
20
|
+
2026-09-04T18:56:13Z INF ICMP proxy will use 2405:4802:bfda:8c0::7ef in zone Wi-Fi as source for IPv6
|
|
21
|
+
2026-09-04T18:56:13Z INF Starting metrics server on 127.0.0.1:20242/metrics
|
|
22
|
+
2026-09-04T18:56:13Z INF Registered tunnel connection connIndex=0 connection=c174dc70-ed73-417c-9fba-25c88a9c9c0e event=0 ip=198.41.200.193 location=sin11 protocol=quic
|
package/.spike/w.err
CHANGED
|
@@ -1,96 +1,28 @@
|
|
|
1
1
|
$ bun run vite --config vite.config.ts
|
|
2
|
-
(node:
|
|
2
|
+
(node:15420) [DEP0147] DeprecationWarning: In future versions of Node.js, fs.rmdir(path, { recursive: true }) will be removed. Use fs.rm(path, { recursive: true }) instead
|
|
3
3
|
(Use `node --trace-deprecation ...` to show where the warning was created)
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
at TCP.onStreamRead (node:internal/stream_base_commons:218:20)
|
|
30
|
-
11:13:18 PM [vite] ws proxy error:
|
|
31
|
-
Error: read ECONNRESET
|
|
32
|
-
at TCP.onStreamRead (node:internal/stream_base_commons:218:20)
|
|
33
|
-
11:13:18 PM [vite] ws proxy error:
|
|
34
|
-
Error: read ECONNRESET
|
|
35
|
-
at TCP.onStreamRead (node:internal/stream_base_commons:218:20)
|
|
36
|
-
11:13:18 PM [vite] ws proxy error:
|
|
37
|
-
Error: read ECONNRESET
|
|
38
|
-
at TCP.onStreamRead (node:internal/stream_base_commons:218:20)
|
|
39
|
-
11:13:18 PM [vite] http proxy error: /api/system/resources/stream?token=123123&processes=1
|
|
40
|
-
Error: read ECONNRESET
|
|
41
|
-
at TCP.onStreamRead (node:internal/stream_base_commons:218:20)
|
|
42
|
-
11:13:18 PM [vite] ws proxy error:
|
|
43
|
-
Error: read ECONNRESET
|
|
44
|
-
at TCP.onStreamRead (node:internal/stream_base_commons:218:20)
|
|
45
|
-
11:13:19 PM [vite] ws proxy error:
|
|
46
|
-
AggregateError [ECONNREFUSED]:
|
|
47
|
-
at internalConnectMultiple (node:net:1122:18)
|
|
48
|
-
at afterConnectMultiple (node:net:1689:7)
|
|
49
|
-
11:13:20 PM [vite] ws proxy error:
|
|
50
|
-
AggregateError [ECONNREFUSED]:
|
|
51
|
-
at internalConnectMultiple (node:net:1122:18)
|
|
52
|
-
at afterConnectMultiple (node:net:1689:7)
|
|
53
|
-
11:13:20 PM [vite] ws proxy error:
|
|
54
|
-
AggregateError [ECONNREFUSED]:
|
|
55
|
-
at internalConnectMultiple (node:net:1122:18)
|
|
56
|
-
at afterConnectMultiple (node:net:1689:7)
|
|
57
|
-
11:13:22 PM [vite] http proxy error: /api/health
|
|
58
|
-
AggregateError [ECONNREFUSED]:
|
|
59
|
-
at internalConnectMultiple (node:net:1122:18)
|
|
60
|
-
at afterConnectMultiple (node:net:1689:7)
|
|
61
|
-
11:13:22 PM [vite] http proxy error: /api/system/resources/stream/5277a4ee/ping
|
|
62
|
-
AggregateError [ECONNREFUSED]:
|
|
63
|
-
at internalConnectMultiple (node:net:1122:18)
|
|
64
|
-
at afterConnectMultiple (node:net:1689:7)
|
|
65
|
-
11:13:22 PM [vite] ws proxy error:
|
|
66
|
-
AggregateError [ECONNREFUSED]:
|
|
67
|
-
at internalConnectMultiple (node:net:1122:18)
|
|
68
|
-
at afterConnectMultiple (node:net:1689:7)
|
|
69
|
-
11:13:23 PM [vite] ws proxy error:
|
|
70
|
-
AggregateError [ECONNREFUSED]:
|
|
71
|
-
at internalConnectMultiple (node:net:1122:18)
|
|
72
|
-
at afterConnectMultiple (node:net:1689:7)
|
|
73
|
-
11:13:23 PM [vite] ws proxy error:
|
|
74
|
-
AggregateError [ECONNREFUSED]:
|
|
75
|
-
at internalConnectMultiple (node:net:1122:18)
|
|
76
|
-
at afterConnectMultiple (node:net:1689:7)
|
|
77
|
-
11:13:27 PM [vite] ws proxy error:
|
|
78
|
-
AggregateError [ECONNREFUSED]:
|
|
79
|
-
at internalConnectMultiple (node:net:1122:18)
|
|
80
|
-
at afterConnectMultiple (node:net:1689:7)
|
|
81
|
-
11:13:28 PM [vite] ws proxy error:
|
|
82
|
-
AggregateError [ECONNREFUSED]:
|
|
83
|
-
at internalConnectMultiple (node:net:1122:18)
|
|
84
|
-
at afterConnectMultiple (node:net:1689:7)
|
|
85
|
-
11:13:28 PM [vite] ws proxy error:
|
|
86
|
-
AggregateError [ECONNREFUSED]:
|
|
87
|
-
at internalConnectMultiple (node:net:1122:18)
|
|
88
|
-
at afterConnectMultiple (node:net:1689:7)
|
|
89
|
-
11:13:32 PM [vite] http proxy error: /api/system/resources/stream/5277a4ee/ping
|
|
90
|
-
AggregateError [ECONNREFUSED]:
|
|
91
|
-
at internalConnectMultiple (node:net:1122:18)
|
|
92
|
-
at afterConnectMultiple (node:net:1689:7)
|
|
93
|
-
11:13:33 PM [vite] http proxy error: /api/health
|
|
94
|
-
AggregateError [ECONNREFUSED]:
|
|
95
|
-
at internalConnectMultiple (node:net:1122:18)
|
|
96
|
-
at afterConnectMultiple (node:net:1689:7)
|
|
4
|
+
1:54:07 AM [vite] (client) [console.warn] [ws] WS not open (readyState=0) — queuing message
|
|
5
|
+
1:54:19 AM [vite] (client) [console.warn] Warning: Missing `Description` or `aria-describedby={undefined}` for {DialogContent}.
|
|
6
|
+
1:54:19 AM [vite] (client) [console.warn] Warning: Missing `Description` or `aria-describedby={undefined}` for {DialogContent}.
|
|
7
|
+
1:54:20 AM [vite] (client) [console.warn] [ws] WS not open (readyState=0) — queuing message
|
|
8
|
+
1:54:22 AM [vite] (client) [console.warn] [ws] WS not open (readyState=0) — queuing message
|
|
9
|
+
1:54:24 AM [vite] (client) [console.warn] [ws] WS not open (readyState=0) — queuing message
|
|
10
|
+
1:54:25 AM [vite] (client) [console.warn] [ws] WS not open (readyState=0) — queuing message
|
|
11
|
+
1:55:26 AM [vite] (client) [console.warn] [ws] WS not open (readyState=0) — queuing message
|
|
12
|
+
1:55:38 AM [vite] (client) [console.warn] Warning: Missing `Description` or `aria-describedby={undefined}` for {DialogContent}.
|
|
13
|
+
1:55:38 AM [vite] (client) [console.warn] Warning: Missing `Description` or `aria-describedby={undefined}` for {DialogContent}.
|
|
14
|
+
1:55:39 AM [vite] (client) [console.warn] Warning: Missing `Description` or `aria-describedby={undefined}` for {DialogContent}.
|
|
15
|
+
1:55:39 AM [vite] (client) [console.warn] Warning: Missing `Description` or `aria-describedby={undefined}` for {DialogContent}.
|
|
16
|
+
1:55:40 AM [vite] (client) [console.warn] [ws] WS not open (readyState=0) — queuing message
|
|
17
|
+
1:55:41 AM [vite] (client) [console.warn] [ws] WS not open (readyState=0) — queuing message
|
|
18
|
+
1:55:44 AM [vite] (client) [console.warn] [ws] WS not open (readyState=0) — queuing message
|
|
19
|
+
1:55:45 AM [vite] (client) [console.warn] [ws] WS not open (readyState=0) — queuing message
|
|
20
|
+
2:03:30 AM [vite] (client) [console.warn] [ws] WS not open (readyState=0) — queuing message
|
|
21
|
+
2:03:43 AM [vite] (client) [console.warn] Warning: Missing `Description` or `aria-describedby={undefined}` for {DialogContent}.
|
|
22
|
+
2:03:43 AM [vite] (client) [console.warn] Warning: Missing `Description` or `aria-describedby={undefined}` for {DialogContent}.
|
|
23
|
+
2:03:44 AM [vite] (client) [console.warn] Warning: Missing `Description` or `aria-describedby={undefined}` for {DialogContent}.
|
|
24
|
+
2:03:44 AM [vite] (client) [console.warn] Warning: Missing `Description` or `aria-describedby={undefined}` for {DialogContent}.
|
|
25
|
+
2:03:45 AM [vite] (client) [console.warn] [ws] WS not open (readyState=0) — queuing message
|
|
26
|
+
2:03:47 AM [vite] (client) [console.warn] [ws] WS not open (readyState=0) — queuing message
|
|
27
|
+
2:03:50 AM [vite] (client) [console.warn] [ws] WS not open (readyState=0) — queuing message
|
|
28
|
+
2:03:51 AM [vite] (client) [console.warn] [ws] WS not open (readyState=0) — queuing message
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.18.10] - 2026-09-05
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
- **End a whole app from System Monitor** — the × on a group row ends the app and all its helper processes in one confirm; groups holding a PPM or system process stay disabled.
|
|
7
|
+
- **Resizable process columns** — drag a header's right edge to resize CPU/RAM/Disk/GPU/Net, double-click to reset; widths are remembered per device.
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
- **Trend/Age column removed** from the process table — it starved the process name; uptime now shows in the name tooltip.
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- **Aurora Light surfaces are opaque again** — dropdowns, bottom sheets and stacked windows no longer let content bleed through; the pre-theme first paint matches too.
|
|
14
|
+
|
|
3
15
|
## [0.18.9] - 2026-09-04
|
|
4
16
|
|
|
5
17
|
### Added
|
|
@@ -71,4 +71,4 @@ This skill covers the `ppm` CLI, its HTTP API, and its config DB. It does **not*
|
|
|
71
71
|
- Third-party extensions (inspect via `ppm ext list`).
|
|
72
72
|
- The Claude Agent SDK internals (separate skill).
|
|
73
73
|
|
|
74
|
-
<!-- Generated for PPM v0.18.
|
|
74
|
+
<!-- Generated for PPM v0.18.10 at build time. Re-run `ppm export skill --install` to refresh. -->
|
|
@@ -309,4 +309,4 @@ _Base URL: `http://localhost:8080` (default; override via `ppm config set port <
|
|
|
309
309
|
- `ws://<host>/ws/terminal` — PTY terminal multiplexer
|
|
310
310
|
- `ws://<host>/ws/extensions` — extension host channel
|
|
311
311
|
|
|
312
|
-
<!-- Generated from src/server/routes/ for PPM v0.18.
|
|
312
|
+
<!-- Generated from src/server/routes/ for PPM v0.18.10 -->
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{S as t,x as n}from"./vendor-markdown-Ls5AcU91.js";import"./vendor-ui-CaeeFO0B.js";import{t as r}from"./save-C4z1p51e.js";import{s as i}from"./api-client-BSB14J4w.js";import"./vendor-mermaid-DrwG0NYt.js";import"./settings-store-C20lqh0G.js";import{n as a}from"./utils-DoY4yTP-.js";import{$n as o,A as s,M as c,N as l,On as u,Qn as d,j as f,k as p,kn as m,s as h}from"./index-
|
|
1
|
+
import{o as e}from"./rolldown-runtime-FhOqtrmT.js";import{S as t,x as n}from"./vendor-markdown-Ls5AcU91.js";import"./vendor-ui-CaeeFO0B.js";import{t as r}from"./save-C4z1p51e.js";import{s as i}from"./api-client-BSB14J4w.js";import"./vendor-mermaid-DrwG0NYt.js";import"./settings-store-C20lqh0G.js";import{n as a}from"./utils-DoY4yTP-.js";import{$n as o,A as s,M as c,N as l,On as u,Qn as d,j as f,k as p,kn as m,s as h}from"./index-Ch8l9de-.js";import{t as g}from"./use-monaco-theme-DSCdlrjO.js";var _=e(t(),1),v=n();function y({metadata:e}){let t=e?.filePath,n=e?.name,a=e?.resourceType??`skill`,y=e?.scope??`user`,x=e?.readOnly===!0,S=e?.shadowed===!0,C=e?.shadowedBy,w=e?.project??``,[T,E]=(0,_.useState)(``),[D,O]=(0,_.useState)(``),[k,A]=(0,_.useState)(!0),[j,M]=(0,_.useState)(null),[N,P]=(0,_.useState)(!1),F=g(),I=(0,_.useRef)(``),L=T!==D;(0,_.useEffect)(()=>{let e=!1;return A(!0),M(null),c(t,w).then(t=>{e||(E(t.content),O(t.content),I.current=t.content)}).catch(t=>{e||M(t.message)}).finally(()=>{e||A(!1)}),()=>{e=!0}},[t,w]);let R=(0,_.useCallback)(async()=>{if(x||N)return;let e=I.current;if(e!==D){P(!0);try{await l(t,e,w),O(e),E(e),i.success(`Saved`),f.getState().reload()}catch(e){i.error(e.message)}finally{P(!1)}}},[t,w,D,x,N]);(0,_.useEffect)(()=>{let e=e=>{(e.ctrlKey||e.metaKey)&&e.key.toLowerCase()===`s`&&(e.preventDefault(),R())};return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[R]);let z=s[a];return(0,v.jsxs)(`div`,{className:`flex h-full flex-col`,children:[(0,v.jsxs)(`div`,{className:`flex items-center gap-2 border-b border-border px-3 py-2 shrink-0`,children:[(0,v.jsx)(z,{className:`size-4 text-text-subtle`}),(0,v.jsx)(`span`,{className:`text-sm font-semibold`,children:n}),(0,v.jsx)(p,{scope:y}),L&&!x&&(0,v.jsx)(`span`,{className:`size-1.5 rounded-full bg-primary`,title:`Unsaved changes`}),(0,v.jsx)(`div`,{className:`flex-1`}),(0,v.jsxs)(`span`,{className:`hidden sm:block text-[11px] text-text-subtle`,children:[a,` · markdown`]}),!x&&(0,v.jsxs)(v.Fragment,{children:[(0,v.jsxs)(`button`,{onClick:()=>E(D),disabled:!L||N,className:`flex items-center gap-1 rounded px-2 py-1 text-xs text-text-secondary hover:bg-surface-elevated disabled:opacity-40`,children:[(0,v.jsx)(u,{className:`size-3.5`}),` Revert`]}),(0,v.jsxs)(`button`,{onClick:()=>void R(),disabled:!L||N,className:`flex items-center gap-1 rounded bg-primary px-2.5 py-1 text-xs font-medium text-primary-foreground hover:bg-primary/90 disabled:opacity-40`,children:[N?(0,v.jsx)(o,{className:`size-3.5 animate-spin`}):(0,v.jsx)(r,{className:`size-3.5`}),` Save`]})]})]}),x&&(0,v.jsx)(b,{icon:d,tone:`muted`,children:`Bundled resource — read-only. Duplicate it (from the AI Resources panel) to make an editable copy.`}),S&&C&&(0,v.jsxs)(b,{icon:m,tone:`warn`,children:[`This `,a,` is overridden by another “`,C.name,`” from a higher-priority source (`,C.source,`). It is currently inactive.`]}),(0,v.jsx)(`div`,{className:`min-h-0 flex-1`,children:k?(0,v.jsx)(`div`,{className:`flex h-full items-center justify-center`,children:(0,v.jsx)(o,{className:`size-5 animate-spin text-primary`})}):j?(0,v.jsx)(`div`,{className:`p-6 text-center text-sm text-destructive`,children:j}):(0,v.jsx)(h,{height:`100%`,language:`markdown`,theme:F,value:T,onChange:e=>{let t=e??``;I.current=t,E(t)},options:{readOnly:x,minimap:{enabled:!1},fontSize:13,wordWrap:`on`,scrollBeyondLastLine:!1,lineNumbers:`on`}})})]})}function b({icon:e,tone:t,children:n}){return(0,v.jsxs)(`div`,{className:a(`flex items-start gap-2 px-3 py-2 text-[12px] shrink-0 border-b border-border`,t===`warn`?`bg-amber-500/10 text-amber-300`:`bg-surface-elevated text-text-secondary`),children:[(0,v.jsx)(e,{className:`mt-0.5 size-3.5 shrink-0`}),(0,v.jsx)(`span`,{children:n})]})}export{y as AiResourceEditor};
|