30 Commits
Author SHA1 Message Date
jearhe 4e144035b1 feat(plugin): expose stable contribution identity 2026-10-07 00:13:30 +08:00
lxk955 b10ecd096c feat(editor): add CJK fallback fonts to monospace stacks 2026-10-04 09:55:44 +08:00
二丫讲梵 e6edd02bbe feat(ai): add plugin recommendations and agent context 2026-09-27 12:04:09 +08:00
t8y2 90d1d94a04 fix(plugins): clear dev-host lint regressions 2026-09-24 14:01:25 +08:00
t8y2 865b9fba84 feat(plugins): add host.storage bridge and document sidecar data dir 2026-09-21 11:41:58 +08:00
Jinpy b1b99eccfb feat(desktop): deliver font settings to plugin sandboxes 2026-09-19 19:13:30 +08:00
zipg aa4e0a30fd fix(plugin-cli): honor CARGO_BUILD_TARGET artifact paths when packaging 2026-09-19 08:52:16 +08:00
Freedom 1321dc9b9d feat(plugins): improve connection lifecycle and session tabs 2026-09-18 22:10:37 +08:00
t8y2 31ca3f773a fix(plugins): cache release builds and align scaffold workflows 2026-09-17 23:51:53 +08:00
Jinpy e4bda693fb feat(plugins): add interactive prompts and richer connection forms 2026-09-17 19:29:28 +08:00
t8y2 4a42a2bd29 chore(plugin-cli): release 0.1.9 2026-09-16 16:27:58 +08:00
t8y2 193e9e898d fix(dev-host): close debug pages without a confirmation modal
Closing a workbench page popped a centered confirm dialog that locked
the entire shell (busy gate) until answered. Developers who clicked the
tab's close button and immediately went for the connection list found
every button dead and reported the page as impossible to reopen. Debug
pages are stateless and rebuild on reopen, so the close now happens
immediately; destructive actions (delete connection, disconnect,
backend rebuild) keep their confirmations.
2026-09-16 16:26:58 +08:00
t8y2 dade7c39b5 chore(plugin-cli): release 0.1.8 2026-09-16 15:29:41 +08:00
t8y2 0239d2c56b feat(dev-host): persist the auto-reload preference across restarts
Auto-reload lived only in the dev host process, so every restart reset
it to off and re-enabling it cost a confirmation dialog each session.
The setting now persists to settings.json in the development data
directory (same atomic write pattern as connections.json) and is
restored — and re-armed — at startup.
2026-09-16 15:29:39 +08:00
t8y2 3496451ca4 chore(plugin-cli): refresh Cargo.lock for 0.1.7 2026-09-16 15:16:31 +08:00
t8y2 9fca87c744 chore(plugin-cli): release 0.1.7
Ships the dev-host manifest hot reload: manifest.json edits (version
bumps, field changes) no longer strand the running dev host on a stale
identity check.
2026-09-16 15:13:37 +08:00
t8y2 2c4f2091a6 fix(dev-host): reload manifest.json instead of failing the identity check
The dev host read manifest.json once at startup and froze that copy in
the Sidecar, while the backend watcher happily rebuilt the binary on any
source edit. Editing the manifest while the host ran — a routine version
bump during a release, for example — then made every restart compare the
fresh binary against the stale in-memory manifest and fail with "Sidecar
identity or protocol does not match manifest" until the whole dev host
was restarted.

Two layers of fixing: the project root now watches manifest.json and hot
swaps the in-memory copy (plus secret-key collection), and the sidecar
handshake re-reads the manifest from disk before declaring a mismatch, so
the check can no longer race the watcher. A genuinely disagreeing
manifest still fails the handshake.
2026-09-16 15:10:06 +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
t8y2 bd9e784d90 fix(plugin-cli): isolate Go backend module builds 2026-09-14 23:38:34 +08:00
t8y2 a04b424e37 fix(plugin-cli): normalize Windows Go workspace paths 2026-09-14 23:01:04 +08:00
t8y2 e84e49fa28 feat(plugin-cli): refresh bundled Go SDK 2026-09-14 22:37:57 +08:00
t8y2 b288a6b5f4 feat(plugin-sdk): support framed binary transfers 2026-09-14 22:11:20 +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 ba65d4a0e0 docs(plugin): expand development guide and README links 2026-09-14 10:06:18 +08:00
t8y2 8cd5372e22 chore(plugin-cli): prepare 0.1.3 release 2026-09-14 00:44:03 +08:00
t8y2 e8e1ece80d feat(plugins): display manifest icons in dev host 2026-09-14 00:44:02 +08:00
t8y2 68afe61693 fix(plugin-cli): release version 0.1.2 2026-09-13 18:37:29 +08:00
t8y2 b5072f1a3e feat(plugin): add plugin framework workflow 2026-09-13 10:39:17 +08:00