Commit Graph
18 Commits
Author SHA1 Message Date
t8y2 048b9ed291 feat(plugins): add host.copy bridge for plugin clipboard writes
Plugin workbenches run in a sandbox="allow-scripts" iframe with an opaque
origin, so every scripted clipboard path (async Clipboard API, offscreen
textarea + execCommand) is denied there — plugins could not copy share
links to the system clipboard. The bridge now exposes host.copy: the
workbench host reuses copyToClipboard (Tauri clipboard-manager on desktop,
Web Clipboard with a legacy fallback on web hosts), and the sandbox iframe
additionally gets allow="clipboard-write" so engines that honor the
delegation can write directly.

The dev host matches production: its debug page answers host.copy in the
top-level document and its plugin iframes carry the same allow attribute.
No new plugin permission is required, so old hosts keep installing new
plugins and old plugins simply never call the method.
2026-09-16 14:29:47 +08:00
zipg 3c8ae159fb feat(ui): route Ctrl+F search by focused surface 2026-09-15 23:20:05 +08:00
zipg 4c80d16e26 feat(plugins): polish plugin marketplace listing display 2026-09-15 22:13:13 +08:00
t8y2 6a6f7712c1 feat(plugins): report install beacon after successful installs 2026-09-15 20:57:58 +08:00
t8y2 94bcbc1631 feat(plugins): install marketplace packages via dbx deep link 2026-09-15 17:55:04 +08:00
t8y2 08c163fe32 feat(plugins): count marketplace downloads and installs 2026-09-15 14:24:11 +08:00
t8y2 99738c160c feat(plugins): add certified badge and polish marketplace card layout 2026-09-15 13:39:25 +08:00
t8y2 c4952adb98 feat(plugins): add host.saveFile bridge for plugin downloads
Plugin iframes cannot trigger downloads: WKWebView cancels
shouldPerformDownload navigations when no host download handler is
registered, so blob-anchor downloads were silent no-ops on desktop.
The bridge now accepts a transferred ArrayBuffer (512 MiB cap, base64
fallback) and persists it through the native save dialog
(plugin-dialog + plugin-fs on Tauri, top-level anchor on web hosts),
resolving null when the user cancels.
2026-09-15 11:37:51 +08:00
t8y2 f852a57673 fix(plugins): remove static icons from marketplace action buttons 2026-09-15 11:15:43 +08:00
t8y2 1ea822b80e feat(plugins): add marketplace banner, docs link and card polish 2026-09-15 01:27:32 +08:00
t8y2 a81ae9f455 feat(plugins): add install-from-url for plugin packages 2026-09-15 01:16:04 +08:00
Jinpy 3d1b84831f fix(plugins): stabilize plugin integration 2026-09-14 21:03:47 +08:00
t8y2 f1cc68a4ba fix(plugin): prevent theme flash in embedded workbenches 2026-09-14 14:43:02 +08:00
t8y2 5ed03ca2b2 fix(plugin): close plugin tabs safely and hide load flash 2026-09-13 13:08:15 +08:00
t8y2 bcd1aafb33 feat(plugins): support custom plugin icons 2026-09-13 12:49:18 +08:00
t8y2 7b7d21f54f fix(plugin): defer restored tabs until manual refresh 2026-09-13 12:35:04 +08:00
t8y2 84e8bab622 fix(plugin): restore marketplace card grid 2026-09-13 10:51:18 +08:00
t8y2 b5072f1a3e feat(plugin): add plugin framework workflow 2026-09-13 10:39:17 +08:00