Commit Graph
44 Commits
Author SHA1 Message Date
Federico Jaramillo Martinez 242911331a docs: document global provider policy and extension registration rejection 2026-07-22 09:36:32 +02:00
Federico Jaramillo Martinez a9bcfe25ff fix: preserve plugin manifest compatibility 2026-07-13 12:29:21 +02:00
Federico Jaramillo Martinez a493949c2a docs: document reverse proxy path prefixes 2026-07-12 23:28:20 +02:00
Federico Jaramillo Martinez d72b14f40a feat: add manual PI WEB update checks 2026-07-12 23:21:43 +02:00
Federico Jaramillo Martinez 21c58fe656 fix: serve plugin SVG assets with correct MIME type 2026-07-12 22:39:41 +02:00
Pi Web Agent a2bfd3657d Merge remote-tracking branch 'origin/main' into feat/docker-runtime-host-admin
# Conflicts:
#	src/client/src/api.ts
#	src/client/src/api/parsers.test.ts
#	src/shared/piWebStatusParsing.test.ts
2026-07-02 20:52:50 +00:00
Pi Web Agent 14d0b0f181 docs: keep Docker setup docs scoped 2026-07-02 20:47:39 +00:00
Federico Jaramillo Martinez 64b2b32705 feat: target settings to selected machine 2026-07-02 13:28:03 +02:00
Federico Jaramillo Martinez 3df4041bd7 feat: manage Pi packages on selected machines 2026-07-01 21:54:18 +02:00
Federico Jaramillo Martinez 889672ff53 feat: add session runtime reload command 2026-07-01 19:32:52 +02:00
Federico Jaramillo Martinez 8ade238228 feat: add Pi package management settings 2026-07-01 15:34:34 +02:00
Pi Web Agent 01c75298f9 fix: keep federated docker updates tab visible 2026-06-29 16:12:40 +00:00
Pi Web Agent bd28c93cfe feat: unify Docker entrypoint 2026-06-29 11:27:47 +00:00
Federico Jaramillo Martinez cb13af4b88 feat: add manual session cleanup 2026-06-26 15:57:12 +02:00
Federico Jaramillo Martinez 9980027cee feat: expose prompt helper to workspace panels 2026-06-24 23:59:39 +02:00
Federico Jaramillo Martinez a0dd9e1cd7 Merge branch 'main' into cleanup/plugin-api-scope 2026-06-24 08:49:49 +02:00
Federico Jaramillo Martinez d825e5d626 docs: use extensionless canonical URLs 2026-06-15 23:16:52 +02:00
Federico Jaramillo Martinez 3742bcc962 refactor(plugin-api): trim plugin API scope to grounded capabilities
Builds on marcus's plugin-api-completeness work. Narrows the new plugin
surface to capabilities that expose real, otherwise-unreachable pi-web
functionality, and drops invented/duplicative surfaces:

Kept:
- files.writeFile / deleteFile / moveFile (genuine workspace mutation,
  federated, path-safe)
- prompt.insertText / getText / getSelection (editor state access)

Dropped:
- attachments.* (insertFileReference/getAttachedFiles/removeFileReference):
  getAttachedFiles invented a structured-attachment notion pi-web does not
  have and duplicated prompt.getText() + a regex with a false email-safety
  claim; insert/removeFileReference were thin sugar over readFile +
  insertText that plugins can compose themselves.
- prompt.onPaste / onKeyDown: an incomplete two-event hook system shaped
  around a single use case, overlapping the editor's native image-paste
  handling. Deferred until a real editor event/hook surface is designed.
- prompt.focus: redundant and buggier duplicate of the existing
  focusPrompt() (silently no-ops when not on the chat view). Focus stays
  as focusPrompt().

Security fix:
- deleteWorkspaceFile now resolves the parent via realpath + ensureInside
  before lstat/unlink, closing a symlinked-parent-directory escape that
  allowed deleting files outside the workspace (write/move already did
  this). Final path component is still not resolved, so deleting a symlink
  removes the link, not its target. Adds a regression test.

Docs and the registry test mock updated to match the trimmed surface.
2026-06-14 23:16:37 +02:00
marcus dde8675454 fix(plugin-api): federate workspace file mutations and trim PR scope 2026-06-14 15:03:23 +02:00
marcus 27a3b2b5ed feat: Plugin API Completeness — file mutations, prompt editor, and attachment APIs
- WorkspaceFiles: writeFile, deleteFile, moveFile with path safety
  - writeFile: text/binary, auto-create dirs, overwrite option
  - deleteFile: idempotent, uses lstat (removes symlinks not targets)
  - moveFile: unix mv semantics, overwrite defaults to false
  - All mutations auto-refreshFiles() in File Explorer
  - Symlink escape prevention via realpath(dirname) check

- PluginPromptEditor: insertText, getText, getSelection, onPaste, onKeyDown, focus
  - Uses CM6 EditorView.domEventHandlers() via Compartment (not raw DOM)
  - Handlers registered before mount are preserved and applied on mount
  - First-to-consume-wins ordering for multi-plugin scenarios
  - insertText replaces selection (not inserts after)

- PluginAttachments: insertFileReference, getAttachedFiles, removeFileReference
  - insertFileReference validates file exists before inserting @path
  - Does not auto-focus editor (unlike prompt.insertText)
  - @file regex requires file extension to avoid matching emails

- Server endpoints: PUT /file, DELETE /file, POST /file/move
  - All work for local and federated machines

- Tests: 31 unit tests, 9 integration tests, 5 client tests
- Docs: 3 new sections in plugins.md
2026-06-14 15:03:23 +02:00
Federico Jaramillo Martinez c57f24dfa5 feat: support machine-specific plugins 2026-06-09 15:10:32 +02:00
Federico Jaramillo Martinez 271c9905f7 docs: document machine federation 2026-06-05 23:27:04 +02:00
Federico Jaramillo Martinez 058fdeea1b docs: clarify private plugin API copy 2026-06-05 21:07:37 +02:00
Federico Jaramillo Martinez 0d9d124237 fix(plugins): preserve deprecated panel terminal alias 2026-06-05 14:26:35 +02:00
Federico Jaramillo Martinez 4bc00102eb feat(plugins): add workspace file helpers to labels 2026-06-05 10:11:07 +02:00
Federico Jaramillo Martinez 0e64b812dd fix: prefer gateway plugins over remote duplicates 2026-06-05 09:53:33 +02:00
Federico Jaramillo Martinez b9be7de206 feat: load machine-scoped remote plugins 2026-06-05 09:29:48 +02:00
Federico Jaramillo Martinez f1c8f1f014 refactor(plugin-api): clean up workspace panel context 2026-06-04 15:38:18 +02:00
Federico Jaramillo Martinez e3533ebf1f feat: add public plugin workspace capabilities 2026-06-04 13:00:25 +02:00
Federico Jaramillo Martinez be02c3516f fix(plugins): rename updates plugin id 2026-06-03 22:53:37 +02:00
Federico Jaramillo Martinez 08f69d09c0 feat: bundle workspace tasks plugin 2026-06-03 22:31:36 +02:00
Federico Jaramillo Martinez 401dab69ad feat: support plugin mobile tab icons 2026-06-03 21:13:35 +02:00
Federico Jaramillo Martinez 824728174b feat: add native user service installs 2026-05-25 16:28:09 +02:00
Federico Jaramillo Martinez 711c4f3d98 feat: run workspace operations in terminals 2026-05-25 15:01:56 +02:00
Federico Jaramillo Martinez 1546143038 feat: add PWA install icon and uppercase branding 2026-05-23 20:50:45 +02:00
Federico Jaramillo Martinez 698a89948b feat(plugins): load workspace packages in dev 2026-05-21 09:41:46 +02:00
Federico Jaramillo Martinez c740ac3dcb refactor: simplify workspace panel terminal flow 2026-05-21 09:31:33 +02:00
Federico Jaramillo Martinez fb7903f3cb feat(plugins): add actions plugin package 2026-05-21 09:31:33 +02:00
Federico Jaramillo Martinez 9d4a0179d1 feat: deep link terminal selection 2026-05-21 09:31:33 +02:00
Federico Jaramillo Martinez e5bc87b7c1 feat: add terminal navigation action shortcut 2026-05-20 15:15:36 +02:00
Federico Jaramillo Martinez fb9e524e5b feat: build bundled plugins from TypeScript 2026-05-19 12:50:42 +02:00
Federico Jaramillo Martinez babb802912 feat: add Pi Web status panel 2026-05-19 09:27:10 +02:00
Federico Jaramillo Martinez 30995797ea feat: stabilize Pi Web plugin API 2026-05-17 22:46:44 +02:00
Federico Jaramillo Martinez c82486a2e5 Document Pi Web plugin API 2026-05-11 11:10:31 +02:00