Commit Graph
16 Commits
Author SHA1 Message Date
Abeautifulsnow c040f9c9c3 fix(plugins): allow reinstalling rolled-back marketplace versions 2026-09-17 21:07:13 +08:00
Jinpy e4bda693fb feat(plugins): add interactive prompts and richer connection forms 2026-09-17 19:29:28 +08:00
弈秋 84019b4271 feat(plugins): add batch install update and uninstall actions 2026-09-17 19:27:53 +08:00
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 4c80d16e26 feat(plugins): polish plugin marketplace listing display 2026-09-15 22:13:13 +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 400ff6dd02 fix(plugins): restore workbench refresh and bootstrap 2026-09-14 23:01: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 05534fce32 feat(plugin): add shared stream bridge 2026-09-14 13:38:00 +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 b5072f1a3e feat(plugin): add plugin framework workflow 2026-09-13 10:39:17 +08:00