Files
nyaterm/docs/plugin-system-validation.md
T

86 lines
7.7 KiB
Markdown

# Plugin v1 validation
Developer tooling and diagnostics were subsequently completed; see
[the development guide](plugin-development.md) and the updated verification below.
Validated on Windows on 2026-10-03. Scope follows
[the implementation plan](plugin-system-plan.md).
| Requirement | Implementation and evidence |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Versioned manifest and contributions | Independent runtime validates API/engine versions, paths, permissions, panels and command/menu declarations. Frontend contribution tests verify enabled-version discovery and namespaced IDs. |
| Local package lifecycle | Package/registry tests cover traversal, case collisions, complete checksums, modified content, inspection digest, immutable versions, persisted grants, permission revocation, update, rollback and publisher continuity. |
| Permissions and scope | Rust gateway allowlists capabilities and combines grants with plugin version, window ownership, connected session and lock checks. Approved command/file operations revalidate scope before execution. Permission review is bound to the active version to reject stale dialogs after an update. |
| Isolated UI | Bridge tests cover unrelated/spoofed frames, opaque origin, fixed scope token, arbitrary native command attempts, duplicate IDs, oversized messages and disposal. IPC tests cover top-frame initialization and Tauri binary/channel/fallback serialization. |
| Workspace integration | Unified Plugins management panel, activity panels, floating/multiple panel layouts and terminal/connection menu contributions integrate with existing workspace components. Existing workspace and context-menu tests pass. |
| Native runtime | Real child-process tests exercise handshake identity, persistent reuse, reverse RPC, timeout recovery and crash cleanup. Framed transport tests verify binary round trips and size limits. Activation cancellation and application exit/lock cleanup are implemented. |
| Developer workflow | UI and native examples both build/package. The extracted native package initializes and returns counts 1 then 2 from the same executable process. UI SDK round-trip tests and browser smoke verify the authoring path. |
| Documentation | [Plugin guide](plugins.md) specifies installation, trust, package lifecycle, storage, manifest, UI API, native protocol, limitations and maintenance. |
Checks completed:
- `pnpm exec vitest run --maxWorkers=4`: **152 files / 964 tests passed**.
Default high parallelism exceeded the existing AI settings test's five-second
timeout; limiting workers passed the entire suite. Temporary reference projects
under `temp/` are now excluded from test discovery.
- `pnpm build`: frontend type checking, MCP sidecar build and production Vite build
passed. Existing Browserslist age and large-bundle notices remain.
- `pnpm lint`: passed; one existing dependency warning in `CommandSuggestions.tsx`
remains. Plugin frontend files have no lint diagnostics.
- Runtime Cargo tests: **9 unit tests and 2 real-process tests passed**.
- Runtime `cargo clippy --all-targets -- -D warnings`: passed.
- Tauri `cargo check --lib` and `cargo clippy --lib`: passed. Existing project-wide
Clippy warnings remain; plugin-module diagnostics were checked separately.
- Tauri plugin tests: **2 passed**, for atomic lifecycle admission and rendered IPC
script templates. The Windows library-test binary failed in the loader before
running any tests; a temporary copy with a Common Controls v6 activation manifest
ran both successfully. Production application files were not altered for this
workaround.
- Real Chrome smoke using the actual bridge, SDK and Session Toolbox files:
panel loading, selected-session request, theme propagation, opaque message origin,
fixed-scope routing, parent DOM isolation, blocked direct network and absent
child-frame IPC transport all passed. Native host calls were stubbed in this
browser check.
This validation does not include a manually operated packaged Tauri desktop build
or macOS/Linux WebView testing. The browser smoke uses HTTP asset serving with the
equivalent sandbox/CSP and mocked native commands; it does not exercise Tauri's
custom resource protocol or real terminal execution dialogs. Verify those in
desktop release QA. Native plugins remain trusted OS processes; the current
format has no cryptographic publisher signatures or marketplace.
## Developer tooling and diagnostics validation
Completed on Windows, 2026-10-03:
- Project creation: UI and Rust starters generated successfully. Three Node tests
cover external paths (including spaces), valid SDK references, invalid arguments
and refusal to overwrite existing source.
- Generated UI/Rust packages pass the real package validator. The Rust starter
builds in release mode. Extracted native-counter **1.0.1** and the generated
Rust package both complete their SDK handshake, return counts **1, 2** from a
persistent process, and exit cleanly on stdin EOF.
- Rust SDK: two wire tests cover bounded frames, binary round trips, clean EOF and
truncated input. Runtime: **10 unit tests + 5 process integration tests** pass
with `--features sdk-fixture`. SDK process tests cover JSONL/framed transport,
concurrent and reverse RPC, binary data, structured logs, request cancellation,
cancellation of timed-out reverse host calls, method errors, panic recovery,
crashes, and stderr collected during a failing initialization handshake.
- Diagnostic storage tests cover retention limits, UTF-8 truncation, credential
redaction, stop/restart generations, clearing and removal. The panel distinguishes
UI-only/disabled plugins and backend states; three frontend tests cover stopping,
refresh/copy/clear, untrusted log text and stale responses after locking.
- Frontend full suite: **153 files / 967 tests pass**. `pnpm build` and `pnpm lint`
pass; the existing CommandSuggestions hook warning remains.
- SDK/runtime Clippy with `--all-targets -- -D warnings` passes. Tauri library
Clippy/check passes; there are no plugin-module diagnostics, while existing
project-wide warnings remain.
- `pnpm i18n:check` still reports existing ordering issues in the AI text sections
of all four locales. Plugin sections were formatted independently to preserve
unrelated content. All four locales contain the same diagnostic keys.
The user reported successful desktop testing of the earlier native-counter
package. The new diagnostics controls have automated frontend coverage; the
updated 1.0.1 package is ready for desktop smoke testing. This does not claim
macOS/Linux validation or a full manual desktop lifecycle test.