Commit Graph
64 Commits
Author SHA1 Message Date
Jeff Scott Ward 84a485d62e feat: add OMP runtime support 2026-06-26 12:49:58 -04:00
Federico Jaramillo Martinez cb13af4b88 feat: add manual session cleanup 2026-06-26 15:57:12 +02:00
Federico Jaramillo Martinez 790b36f0ea docs: improve screenshot gallery 2026-06-25 15:50:45 +02:00
Federico Jaramillo Martinez e46d9ecbf8 feat: add safe manual workspace uploads 2026-06-25 15:16:44 +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 c2e2a29847 docs: add PI WEB configuration reference 2026-06-23 19:58:36 +02:00
Federico Jaramillo Martinez 8ceadb2a62 docs: replace demo animation with screenshots 2026-06-23 14:12:09 +02:00
Federico Jaramillo Martinez d825e5d626 docs: use extensionless canonical URLs 2026-06-15 23:16:52 +02:00
Federico Jaramillo Martinez 36800ff41a docs: simplify sitemap to minimal URL list
Drop lastmod/changefreq/priority (stale or ignored signals) and remove
the plugins.md entry, leaving a low-maintenance <loc>-only sitemap.
2026-06-15 02:00:36 +02:00
Federico Jaramillo Martinez 0486baec9b fix: use relative static asset redirects 2026-06-15 01:34:20 +02:00
Federico Jaramillo Martinez 18127996f1 docs: improve Pi web UI SEO positioning 2026-06-15 01:27:34 +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 71510444c4 Merge remote-tracking branch 'origin/main' into investigate/issue-12-session-dir
# Conflicts:
#	src/client/src/api.ts
#	src/client/src/api/clients.ts
#	src/client/src/api/federatedRouteContract.test.ts
#	src/server/sessions/piSessionService.ts
#	src/server/sessions/sessionRoutes.ts
2026-06-10 20:43:10 +02:00
Federico Jaramillo Martinez 06052ea5ec fix: respect Pi session directories by cwd 2026-06-10 20:26:51 +02:00
Federico Jaramillo Martinez c57f24dfa5 feat: support machine-specific plugins 2026-06-09 15:10:32 +02:00
Federico Jaramillo Martinez 25d8188970 fix(docs): keep mobile header controls visible 2026-06-07 12:52:21 +02:00
Federico Jaramillo Martinez 0ae0bdf432 docs: refine fleet guide 2026-06-05 23:40:16 +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 fdd2cf2390 fix: improve file mention suggestions without ripgrep 2026-05-31 20:04:59 +02:00
Federico Jaramillo Martinez 50906617a0 feat: add pi-web version reporting 2026-05-28 21:33:14 +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 4bfd4acd40 docs: add persistent agent positioning 2026-05-25 14:26:22 +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 13bb8e4227 feat: add dash favicon 2026-05-21 15:52:17 +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 1a91094a5b Move docs deployment to Cloudflare 2026-05-21 09:17:58 +02:00
cloudflare-workers-and-pages[bot] 8840160cfd Add Cloudflare Workers configuration 2026-05-20 21:16:17 +00:00
Federico Jaramillo Martinez e5bc87b7c1 feat: add terminal navigation action shortcut 2026-05-20 15:15:36 +02:00
Federico Jaramillo Martinez 32182a5539 fix: support pi package service entrypoints 2026-05-19 16:56:28 +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 1d8dba9bca fix: make keep control icon visible 2026-05-18 08:37:32 +02:00
Federico Jaramillo Martinez 30995797ea feat: stabilize Pi Web plugin API 2026-05-17 22:46:44 +02:00