CodeNomad/scripts
Pascal André b4be76c978
feat(plugins): native package check and update (6/8) (#794)
## Behavior
Package-backed plugins in Status → Plugins get one compact action beside
their name. Activating it opens a menu naming the exact native
operation:
- **Check updates for {target}**: `PackageSearch` icon.
- **Update {target}**: `Download` icon, shown once the target is
outdated.

The tooltip states that an update changes the daemon-wide shared package
cache. Busy actions pulse but keep their own icon; `RefreshCw` stays
reserved for the list refresh. Global/Project activation switches are
unchanged. Local, builtin and SDK sources never offer package actions.

A package that fails before exporting a plugin ID stays visible as a
target-only row, with check/update and failure details in its tooltip.
No activation switch or fabricated ID is created, and the row is
replaced by the ordinary plugin row once native loading succeeds.

Pending admission is keyed by instance and target and survives
hiding/remounting. Failures toast only for the live owner. Every
completion invalidates the display snapshot, and nothing is replayed
automatically.

## Native boundary
Only `POST /api/plugin/check` and `POST /api/plugin/update` are added to
the instance allowlist. They go through the existing directory-ownership
and worktree-deletion admission, so a foreign location is refused
whether it is in the query or the body. Native OpenCode validates
targets against the current Location inventory and serializes updates
per target. There is no `location.reload` and no daemon restart.

## Validation
- Server and UI typechecks pass.
- `instance-proxy.test.ts`: 56/56, including owned check/update and
foreign query/body locations rejected before forwarding.
- Browser: `plugin-controls` and `plugin-packages` pass, 10/10
scenarios. Captures inspected for LTR, RTL, narrow and
failed-package-only layouts.
- `scripts/test-plugin-packages-native.mjs` passes on an isolated copy
of OpenCode 2.0.29 with a loopback npm registry. It covers 1.0.0 → 1.1.0
update detection, unknown-target rejection and native live reload, using
a private home/database/npm config/cache only.

## History
PRs 1–5 of this series were squash-merged into `dev`. This branch now
merges `dev` and carries only its own plugin-package changes plus review
fixes (25 files).

Size notes: the existing `http-server.ts`, `instance-proxy.test.ts` and
locale settings files exceed the size guidance.
2026-10-15 02:54:19 +02:00
..
fixtures fix(tauri): prevent macOS startup window event feedback (#821) 2026-10-01 14:58:32 +02:00
missions-child-environment feat(missions): native project coordination, briefings and tracking (#866) 2026-10-11 14:55:49 +02:00
recurring-simple-native feat(missions): native project coordination, briefings and tracking (#866) 2026-10-11 14:55:49 +02:00
winget build: ship the Linux deb from Electron and the Windows installer without a ZIP (#955) 2026-10-14 16:45:49 +02:00
benchmark-session-history.mjs fix(history): fill search pages and remove redundant counting (#839) 2026-10-03 11:36:04 +02:00
build-help.mjs docs(help): multilingual help site with in-app Help menu and palette entry (#859) 2026-10-14 22:44:56 +02:00
bump-version.js Fix bumpVersion script for both npm and tauri 2026-03-31 20:15:16 +01:00
compare-user-html-rendering.mjs fix(chat): display user HTML as literal source (#777) 2026-09-25 09:52:18 +02:00
desktop-server-resources.cjs feat(tauri): signed cross-platform updates with stable and preview feeds (#786) 2026-10-14 12:18:36 +02:00
desktop-server-resources.test.cjs feat(tauri): signed cross-platform updates with stable and preview feeds (#786) 2026-10-14 12:18:36 +02:00
native-fixture-diagnostics.mjs fix(ci): stabilize Windows native tests and artifact comments (#828) 2026-10-02 11:24:27 +02:00
native-fixture-diagnostics.test.mjs fix(ci): stabilize Windows native tests and artifact comments (#828) 2026-10-02 11:24:27 +02:00
native-fixture-guards.mjs feat(missions): native project coordination, briefings and tracking (#866) 2026-10-11 14:55:49 +02:00
native-fixture-guards.test.mjs feat(missions): native project coordination, briefings and tracking (#866) 2026-10-11 14:55:49 +02:00
native-product-fixture.mjs feat(plugins): native package check and update (6/8) (#794) 2026-10-15 02:54:19 +02:00
prepare-node-runtime.cjs feat(opencode): enforce stable runtime support and add managed setup 2026-09-20 16:09:36 +02:00
prepare-node-runtime.test.cjs feat(opencode): enforce stable runtime support and add managed setup 2026-09-20 16:09:36 +02:00
preview-git-history.mjs feat(files): unify Workspace, Changes and Commits with central previews (#797) 2026-10-01 11:10:50 +02:00
profile-outline-projection.mjs perf(ui): skip redundant outline and superseded Markdown work (#852) 2026-10-05 22:32:03 +02:00
profile-outline-responsiveness.mts fix: reduce compaction and cross-session responsiveness stalls 2026-10-02 00:40:45 +02:00
profile-streaming-responsiveness.mjs perf(ui): skip redundant outline and superseded Markdown work (#852) 2026-10-05 22:32:03 +02:00
profile-ui-motion.mjs fix(status): keep connected MCP indicators static at rest (#806) 2026-09-30 14:03:19 +02:00
run-session-pruning-native.mjs fix(ci): stabilize Windows native tests and artifact comments (#828) 2026-10-02 11:24:27 +02:00
smoke-packaged-resources.cjs feat(remote-control): add Remote Control over OpenTunnel alongside direct access (#668) 2026-10-09 12:43:25 +02:00
test-attachment-picker-desktop.mjs feat(composer): unify native device attachments and project references (#729) 2026-09-24 23:12:44 +02:00
test-automation-native.mjs fix(startup): restore saved sessions promptly and stop plugin heartbeat reloads (#712) 2026-09-19 12:39:23 +02:00
test-blank-session-cleanup-native.mjs fix(sessions): preserve populated sessions during automatic cleanup (#755) 2026-09-23 11:53:01 +02:00
test-compaction-isolation-native.mjs fix(pending): stop cold-worktree recovery fallback; qualify OpenCode 2.0.24 (#865) 2026-10-06 23:06:50 +02:00
test-electron-owner-close.mjs fix(electron): avoid destroyed window access on close (#785) 2026-09-28 13:12:07 +02:00
test-git-degraded-native.mjs feat(missions): native project coordination, briefings and tracking (#866) 2026-10-11 14:55:49 +02:00
test-git-init-native.mjs feat(files): initialize Git from the Files panel for plain folders (#933) 2026-10-13 03:11:00 +02:00
test-help-browser.mjs docs(help): multilingual help site with in-app Help menu and palette entry (#859) 2026-10-14 22:44:56 +02:00
test-help.mjs docs(help): multilingual help site with in-app Help menu and palette entry (#859) 2026-10-14 22:44:56 +02:00
test-missions-native-contract.mjs feat(missions): native project coordination, briefings and tracking (#866) 2026-10-11 14:55:49 +02:00
test-missions-native-family-control.mjs feat(missions): native project coordination, briefings and tracking (#866) 2026-10-11 14:55:49 +02:00
test-missions-native-trajectory.mjs feat(missions): native project coordination, briefings and tracking (#866) 2026-10-11 14:55:49 +02:00
test-missions-native.mjs feat(missions): native project coordination, briefings and tracking (#866) 2026-10-11 14:55:49 +02:00
test-native-event-relay.mjs fix: reduce compaction and cross-session responsiveness stalls 2026-10-02 00:40:45 +02:00
test-native-worktree-management.mjs fix(events): prevent relay timeout on worktree discovery waits (#837) 2026-10-03 04:04:03 +02:00
test-opencode-history-migration.mjs fix(opencode): qualify 2.0.15 and preserve generated proxy URLs (#752) 2026-09-23 12:56:03 +02:00
test-opencode-install-native.mjs fix(opencode): share host plugin runtime and require 2.0.27 (#920) 2026-10-12 16:42:07 +02:00
test-opencode-location-native.mjs feat(chat): preserve permission decisions and richer question receipts (#838) 2026-10-03 07:06:03 +02:00
test-opencode-proxy-native.mjs fix(opencode): qualify 2.0.22 and fence parent session creation (#830) 2026-10-02 15:47:14 +02:00
test-opencode-setup-desktop.mjs fix(opencode): retire private runtime fallback and restore first-run setup (#760) 2026-09-24 00:25:40 +02:00
test-opencode-setup-wsl.mjs test(opencode): certify bounded WSL setup and reload effects 2026-09-20 17:21:31 +02:00
test-opencode-upgrade-native.mjs fix(opencode): share host plugin runtime and require 2.0.27 (#920) 2026-10-12 16:42:07 +02:00
test-output-limit-native.mjs chore(opencode): qualify runtime 2.0.29 and align client/plugin pins (#948) 2026-10-14 15:06:35 +02:00
test-panel-extension-native.mjs feat(extensions): add bounded current-session assets for API 2 panels (#874) 2026-10-07 22:54:06 +02:00
test-pending-snapshot-native.mjs fix(pending): stop cold-worktree recovery fallback; qualify OpenCode 2.0.24 (#865) 2026-10-06 23:06:50 +02:00
test-permission-receipts-native.mjs feat(chat): preserve permission decisions and richer question receipts (#838) 2026-10-03 07:06:03 +02:00
test-plugin-packages-native.mjs feat(plugins): native package check and update (6/8) (#794) 2026-10-15 02:54:19 +02:00
test-plugin-runtime-native.mjs fix(opencode): share host plugin runtime and require 2.0.27 (#920) 2026-10-12 16:42:07 +02:00
test-promise-tool-failure-native.mjs chore(opencode): qualify runtime 2.0.29 and align client/plugin pins (#948) 2026-10-14 15:06:35 +02:00
test-prompt-skills-native.mjs feat(composer): native skill attachments (3/8) (#791) 2026-10-02 13:23:42 +02:00
test-provider-account-selection-native.mjs feat(accounts): native account controls and opt-in Codex quota selection (#793) 2026-10-02 17:36:23 +02:00
test-provider-accounts-native.mjs feat(accounts): native account controls and opt-in Codex quota selection (#793) 2026-10-02 17:36:23 +02:00
test-provider-usage-native.mjs fix(usage): use selected native V2 Codex credentials (#811) 2026-09-30 17:29:13 +02:00
test-recurring-simple-native.mjs feat(missions): native project coordination, briefings and tracking (#866) 2026-10-11 14:55:49 +02:00
test-release-workspace-version.mjs fix(release): retain local remote-tunnel dependency after version bumps (#907) 2026-10-10 16:48:17 +02:00
test-render-cost-audit.mjs fix: reduce compaction and cross-session responsiveness stalls 2026-10-02 00:40:45 +02:00
test-session-aside-native.mjs feat(chat): add native /btw side questions 2026-09-21 17:23:11 +02:00
test-session-environment-native.mjs feat(missions): native project coordination, briefings and tracking (#866) 2026-10-11 14:55:49 +02:00
test-session-fork-native.mjs feat(sessions): fork after user and assistant messages (#718) 2026-09-19 21:50:59 +02:00
test-session-history-native.mjs feat(extensions): add bounded current-session assets for API 2 panels (#874) 2026-10-07 22:54:06 +02:00
test-session-interrupt-native.mjs fix(sessions): keep Stop and double Escape from restarting the parent (#770) 2026-09-24 21:54:09 +02:00
test-session-navigation-native.mjs fix(ui): preserve semantic icons for historical timeline tools (#738) 2026-09-21 23:46:51 +02:00
test-session-pruning-native.mjs fix(ci): stabilize Windows native tests and artifact comments (#828) 2026-10-02 11:24:27 +02:00
test-session-pruning-ui.mjs test: stabilize three intermittent CI failures on dev (#941) 2026-10-14 10:58:24 +02:00
test-subagent-depth-settings-native.mjs feat(missions): native project coordination, briefings and tracking (#866) 2026-10-11 14:55:49 +02:00
test-tauri-f6.ps1 test(tauri): fence F6 fixture profiles and post-input liveness 2026-10-08 00:24:06 +02:00
test-tauri-input-deadlock.mjs fix(tauri): prevent Windows input reentrancy deadlocks (#773) 2026-09-24 21:02:20 +02:00
test-tauri-macos-window-result.test.mjs fix(tauri): prevent macOS startup window event feedback (#821) 2026-10-01 14:58:32 +02:00
test-tauri-macos-window.mjs fix(tauri): prevent macOS startup window event feedback (#821) 2026-10-01 14:58:32 +02:00
test-tauri-view-menu.mjs fix(tauri): keep View menus responsive through native focus changes (#748) 2026-09-22 18:18:47 +02:00
test-temporary-workspaces-native.mjs feat: temporary instances that are kept or discarded when closed (#899) 2026-10-09 20:59:13 +02:00
test-websearch-settings-native.mjs feat(settings): scoped web search configuration (4/8) (#792) 2026-10-02 14:49:18 +02:00
test-worktree-families-native.mjs feat(v2): manage session families across worktrees (#649) 2026-09-17 22:57:37 +02:00
verify-bundled-node.cjs build: bundle node runtime for desktop packages 2026-05-04 20:08:04 +01:00