@firstpick/pi-package-webui 0.3.7 → 0.3.9

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 CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  Local browser UI for [Pi coding agent](https://www.npmjs.com/package/@earendil-works/pi-coding-agent).
4
4
 
5
- ![Pi Web UI main window showing multi-tab chat, controls, theme picker, and local status](https://unpkg.com/@firstpick/pi-package-webui/images/Main_Window_v0.1.7.png)
5
+ ![Pi Web UI main window showing multi-tab chat, controls, theme picker, and local status](https://unpkg.com/@firstpick/pi-package-webui/images/WebUI_v0.3.7.png)
6
6
 
7
7
  Pi Web UI gives you a local browser companion for Pi: multi-tab chat, streaming output, model controls, uploads, slash-command helpers, workspace navigation, and optional extension widgets.
8
8
 
@@ -158,6 +158,7 @@ Optional companions:
158
158
  - `@firstpick/pi-prompts-git-pr` — guided Git commit/push workflow.
159
159
  - `@firstpick/pi-extension-release-npm` — NPM publish menu and release widgets.
160
160
  - `@firstpick/pi-extension-release-aur` — AUR publish menu and release widgets.
161
+ - `@firstpick/pi-extension-safety-guard` — interactive guardrails for dangerous bash commands and protected file edits.
161
162
  - `@firstpick/pi-extension-setup-skills` — TUI `/skills` setup command alongside WebUI-native skill toggles.
162
163
  - `@firstpick/pi-extension-todo-progress` — todo-progress rendering.
163
164
  - `@firstpick/pi-extension-tools` — TUI `/tools` active-tool manager alongside WebUI-native tool toggles.
@@ -235,7 +235,7 @@
235
235
  "priority": "P1",
236
236
  "sensitive": true,
237
237
  "guards": ["trusted-context", "confirmation", "feature-flag"],
238
- "currentBehavior": "Browser shows non-secret guidance only.",
238
+ "currentBehavior": "Browser selector lists provider auth status from GET /api/auth-providers but still directs OAuth/API-key login to the Pi TUI.",
239
239
  "targetBehavior": "Support OAuth/device-code/API-key providers through server AuthStorage; API keys only over trusted contexts and never browser storage/logs/transcripts."
240
240
  },
241
241
  {
@@ -244,12 +244,12 @@
244
244
  "category": "native-command",
245
245
  "title": "Provider logout",
246
246
  "command": { "name": "logout", "description": "Remove provider authentication" },
247
- "webStatus": "degraded",
247
+ "webStatus": "implemented",
248
248
  "priority": "P1",
249
249
  "sensitive": true,
250
250
  "guards": ["confirmation", "feature-flag"],
251
- "currentBehavior": "Browser shows guidance only.",
252
- "targetBehavior": "List auth.json credentials only, label env/config credentials as not removable here, confirm per provider, and refresh auth/model state."
251
+ "currentBehavior": "Browser selector lists auth.json credentials only, confirms per provider, and removes them through localhost-only POST /api/auth-logout.",
252
+ "targetBehavior": "Keep auth.json-only removal with env/config credentials labeled as not removable from the Web UI."
253
253
  },
254
254
  {
255
255
  "id": "/new",
@@ -287,8 +287,8 @@
287
287
  "priority": "P1",
288
288
  "sensitive": true,
289
289
  "guards": ["confirmation", "feature-flag"],
290
- "currentBehavior": "Partial browser selector supports current/all scope and switch.",
291
- "targetBehavior": "Add sort/path/named toggles, metadata rename, safe trash delete, active/open tab guards, and compact path default."
290
+ "currentBehavior": "Browser selector supports current/all scope, switch, metadata rename, and localhost-only safe delete with open-tab/active-session guards.",
291
+ "targetBehavior": "Add sort/path/named toggles and compact path default."
292
292
  },
293
293
  {
294
294
  "id": "/reload",
@@ -517,7 +517,7 @@
517
517
  "priority": "P1",
518
518
  "sensitive": true,
519
519
  "guards": ["confirmation"],
520
- "currentBehavior": "Switch endpoint validates .jsonl path, opens SessionManager, and sends RPC switch_session.",
520
+ "currentBehavior": "Switch endpoint validates .jsonl path, confines it to the configured Pi session directory, opens SessionManager, and sends RPC switch_session.",
521
521
  "targetBehavior": "Preserve tab-scoped switch and add richer selector metadata."
522
522
  },
523
523
  {
@@ -525,24 +525,24 @@
525
525
  "kind": "session-action",
526
526
  "category": "session",
527
527
  "title": "Resume rename metadata",
528
- "webStatus": "unsupported",
528
+ "webStatus": "implemented",
529
529
  "priority": "P1",
530
530
  "sensitive": false,
531
531
  "guards": ["feature-flag"],
532
- "currentBehavior": "No Web UI resume rename endpoint.",
533
- "targetBehavior": "Append-only session_info metadata rename without file rename."
532
+ "currentBehavior": "POST /api/session-rename appends session_info metadata through SessionManager.appendSessionInfo without renaming the .jsonl file; target paths are confined to the Pi session directory.",
533
+ "targetBehavior": "Keep append-only session_info metadata rename without file rename."
534
534
  },
535
535
  {
536
536
  "id": "session.resume.delete",
537
537
  "kind": "session-action",
538
538
  "category": "session",
539
539
  "title": "Resume safe delete",
540
- "webStatus": "unsupported",
540
+ "webStatus": "implemented",
541
541
  "priority": "P1",
542
542
  "sensitive": true,
543
543
  "guards": ["confirmation", "feature-flag"],
544
- "currentBehavior": "No Web UI session delete endpoint.",
545
- "targetBehavior": "Trash/noninvasive delete with active/open-tab guards and confirmation."
544
+ "currentBehavior": "POST /api/session-delete is localhost-only, requires confirmed: true, blocks active/open-tab sessions, confines targets to the Pi session directory, and prefers trash with unlink fallback.",
545
+ "targetBehavior": "Keep trash/noninvasive delete with active/open-tab guards and confirmation."
546
546
  },
547
547
  {
548
548
  "id": "extension-ui.notify",
@@ -657,36 +657,36 @@
657
657
  "kind": "native-command-adapter",
658
658
  "category": "foundation",
659
659
  "title": "Native command adapter response shape",
660
- "webStatus": "unsupported",
660
+ "webStatus": "implemented",
661
661
  "priority": "P0",
662
662
  "sensitive": false,
663
663
  "guards": ["none"],
664
- "currentBehavior": "Native command handling is split between frontend selectors and server switch cases with inconsistent result shape.",
665
- "targetBehavior": "Central server-authoritative adapter response supporting transcript cards, toasts/events, tab metadata, downloads/open URLs, clipboard text, warnings/confirmations, refresh hints, and degraded/unavailable states."
664
+ "currentBehavior": "Server-native slash commands route through lib/native-command-adapter.mjs with a shared response envelope (status, cards, toasts, warnings, refresh, download, copyText, tab metadata). Frontend applyNativeSlashCommandEffects consumes the adapter shape.",
665
+ "targetBehavior": "Keep the centralized adapter current as new native slash commands and selector flows are added."
666
666
  },
667
667
  {
668
668
  "id": "security.trust-boundaries",
669
669
  "kind": "security-guard",
670
670
  "category": "foundation",
671
671
  "title": "Sensitive native feature trust boundaries",
672
- "webStatus": "degraded",
672
+ "webStatus": "implemented",
673
673
  "priority": "P0",
674
674
  "sensitive": true,
675
675
  "guards": ["localhost", "trusted-context", "confirmation"],
676
- "currentBehavior": "Some endpoints are localhost-gated; native parity features do not yet share a common policy.",
677
- "targetBehavior": "Shared localhost/trusted-context/confirmation policy for login/logout/share/import/export/quit/bash/optional installs/network exposure."
676
+ "currentBehavior": "lib/trust-boundaries.mjs centralizes localhost route gating (including network open/close), native-command guard evaluation, and remote-shell warnings for LAN clients. Session switch/rename/delete paths are confined to the Pi session directory. Sensitive slash commands return blocked adapter cards instead of raw HTTP errors.",
677
+ "targetBehavior": "Extend the shared policy to remaining sensitive native flows (login/logout/share/import/quit) and explicit confirmation UI where required."
678
678
  },
679
679
  {
680
680
  "id": "tests.native-parity-harness",
681
681
  "kind": "test-harness",
682
682
  "category": "foundation",
683
683
  "title": "Native parity helper/endpoint tests",
684
- "webStatus": "degraded",
684
+ "webStatus": "implemented",
685
685
  "priority": "P0",
686
686
  "sensitive": false,
687
687
  "guards": ["none"],
688
- "currentBehavior": "Static tests exist; no focused native parity matrix/helper harness yet.",
689
- "targetBehavior": "Fixture-driven server helper tests first, lightweight HTTP endpoint tests where request semantics matter, and fake RPC tab adapters in normal CI."
688
+ "currentBehavior": "tests/native-parity-harness.test.mjs exercises trust-boundaries and native-command-adapter helpers against WEBUI_TUI_NATIVE_PARITY.json fixtures, and tests/http-endpoints-harness.test.mjs boots the real server with a fake pi RPC stub to cover command routing, bash queue serialization, session-dir confinement, and localhost trust guards over HTTP.",
689
+ "targetBehavior": "Extend HTTP endpoint coverage to SSE events, tab lifecycle (create/patch/close), and session selector flows."
690
690
  }
691
691
  ]
692
692
  }