Commit Graph
37 Commits
Author SHA1 Message Date
Abeautifulsnow 4b9a1c4d5c feat(plugins): add marketplace sort modes with release dates 2026-09-24 19:16:02 +08:00
jearhe 4c1eaa6b16 feat(plugins): open plugin workbench from context menu 2026-09-24 19:14:53 +08:00
ezreal dc22e8c974 feat(plugins): configurable plugin shortcut dock positions 2026-09-24 17:55:23 +08:00
Jinpy 92f92f6cdb feat(plugins): bridge clipboard reads with consent gate 2026-09-24 16:16:49 +08:00
Jinpy aefecd3841 feat(plugins): add command and menu contributions with bottom dock 2026-09-23 19:52:11 +08:00
jearhe d5a05a9884 feat(plugin): expose a read-only schema metadata host API 2026-09-23 12:51:23 +08:00
zipg 1566bb8a9f feat(plugins): analyze plugin data in the built-in AI panel 2026-09-22 15:04:33 +08:00
jearhe 78315c377a feat(plugin): add table-scoped context-menu contributions 2026-09-22 14:23:53 +08:00
t8y2 865b9fba84 feat(plugins): add host.storage bridge and document sidecar data dir 2026-09-21 11:41:58 +08:00
t8y2 943d5ec7dd feat(plugins): serve plugin UI assets over the dbx-plugin scheme
The workbench sandbox inlines only the entry script, so code-split
chunks had no runtime address and dynamic imports 404'd. Serve each
installed plugin's ui.root through dbx-plugin://localhost/<id>/<path>
(WebView2 maps the scheme to http://dbx-plugin.localhost), inject the
platform-correct form as the sandbox document <base>, and allow it in
the resource CSP. Reads reuse the registry's ui-asset validation
(traversal confinement, 32 MiB cap, sha256 etag) and answer CORS with
ACAO:* for the opaque-origin iframe; responses are no-store so plugin
updates land immediately.

Existing plugins are unaffected. Builds that emit relative asset URLs
(vite base "./" / webpack publicPath "./") additionally regain lazy
loading and font loading; documented for plugin authors in both
languages.
2026-09-21 02:49:05 +08:00
Jinpy bc490772eb feat(desktop): fileTransfer bridge for plugin workbench webviews 2026-09-21 02:03:12 +08:00
Abeautifulsnow cab674299a fix(plugins): check and update installed plugins with provenance guards 2026-09-21 00:09:50 +08:00
jearhe f909f85075 feat(plugins): expose read-only estimated plan host api 2026-09-20 17:15:52 +08:00
t8y2 faa8709266 feat(plugins): stream cancellable downloads to atomic local files
Refs: t8y2/dbx-plugin-s3#22
2026-09-20 04:09:15 +08:00
jearhe 4f3be8ccfb fix(plugin): resolve result-view by UI contribution 2026-09-20 01:32:23 +08:00
Jinpy b1b99eccfb feat(desktop): deliver font settings to plugin sandboxes 2026-09-19 19:13:30 +08:00
luo jiyin cf6467ab08 perf(ci): shard frontend checks and vitest suites 2026-09-19 12:39:20 +08:00
t8y2 3100a918cc feat(plugins): classify install beacons by kind and client id 2026-09-19 10:56:01 +08:00
Freedom 1321dc9b9d feat(plugins): improve connection lifecycle and session tabs 2026-09-18 22:10:37 +08:00
U1 d2fd783592 feat(plugins): pin installed plugins at the top 2026-09-18 20:05:02 +08:00
t8y2 bc00431834 feat(core): split foundational capabilities into dedicated crates 2026-09-18 13:00:56 +08:00
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