2.0.0-preview.3
Release date: 2026-07-08
✨ Features
- about: Update downloads now show visible progress with status, file name, downloaded bytes, total bytes, and percent; unknown total size uses an indeterminate progress state.
- about: Automatic installation now completes the visible WebUI download before calling the install endpoint; failed or cancelled downloads no longer continue into installation.
- about: The install confirmation dialog now closes after confirmation instead of covering the progress bar, and the progress card includes a cancel button for an in-progress update download.
- about: Update cache cleanup now removes cancelled
.downloadpartial files and clears consumed or leftover packages, one-time installer scripts, and staging directories after successful installs and on application startup, preventingdata/updatesfrom accumulating one package per version. - about: Automatic installation supports Linux
.tar.gz/.tgzmain application packages; the Linux update script preserves user directories, replaces WebUI assets, and restartsISkyPro. - about: The About page now links to the GitHub repository while keeping the docs, Release, and changelog links.
- webui: The sidebar version badge and About current-version field now read the backend runtime version, so temporary test versions and post-update restarts no longer depend on the WebUI-bundled changelog version.
- webui: Automatically opened WebUI URLs now include the current application version, and
index.htmlplus update API responses use no-cache/no-store headers to avoid showing stale frontend assets after an update restart. - package: Added the Linux x64 preview application package
ISkyPro-<version>-linux-x64.tar.gz; after extraction, users can runISkyProdirectly. Linux packages enable invariant globalization, do not require an additional ICU install, and exclude the Windows ISky v1 plugin host,message.dll, and Windows Service scripts. - plugins: Added ISky v1 / ISkyPro v2+ plugin tabs with count badges and remembered selection; the first load chooses the larger plugin set.
- plugins: The ISkyPro v2+ plugins tab shows Plugin SDK v2 protocol version, transport, permissions, command count, bot binding, queue metrics, recent errors, HTTP registration, and log entry points.
- gateway: WebSocket business-event receive is decoupled from plugin dispatch and QQBot HTTP sends, so the gateway read loop no longer waits on slow plugins or slow sends.
- gateway: Added business-event queue and outbound-send queue metrics for queued, in-flight, completed, dropped, failed, rate-limited, and last-error states.
- runtime: Non-Windows runtimes now protect WebUI tokens, Bot Secrets, and other runtime credentials with a local AES-GCM key stored at
data/iskypro.runtime.key, which is preserved with user data.
🧩 Plugin Development
- sdk: Added the Plugin SDK v2 protocol draft covering static manifests,
stdio-jsonrpctransport, JSON-RPC 2.0 length framing, initialize handshake, typed + raw events, andmessageReference. - sdk: Added
ISkyPro.PluginSdk.V2C# prototype interfaces andEchoPluginV2, covering typed fields,rawPayload, delayed replies, a non-message SDK method, and plugin logging. - sdk: Added Python / Node.js Plugin SDK v2 minimal packages and
stdio-jsonrpccross-language samples that wrapContent-Lengthframing, initialize, event ACK,invoke,log.write, and passive text replies. - sdk: Added a Go Plugin SDK v2 minimal module and
samples/stdio-go-plugin, wrappingstdio-jsonrpcframing, initialize, event ACK,context.Context,Invoke,LogWrite, andReplyText. - sdk: Added a QQBot API catalog stub generator that emits C#, Python, Node.js, and Go SDK method stubs from
qqbot-api.catalog.json, with tests that verify generated output stays in sync with the catalog. - qqbot-api: Added a QQBot API v2 method catalog and normalized OpenAPI client prototype covering core message, media, user, group, channel, member, and permission endpoints.
- v2-plugin: ISkyPro v2+ plugin dispatch now supports observer / command / filter modes, fast ACK, per-plugin bounded queues, command routing, filter timeout, and dispatch metrics.
- v2-plugin: Main now statically discovers
plugins-v2/*/manifest.json; valid Plugin SDK v2 packages appear in API snapshots asstopped, invalid manifests appear asinvalidManifestwith validation errors, and discovery does not execute unknown processes. - v2-plugin: ISkyPro v2+ plugin snapshots now include stdio runtime status fields such as state, processId, startedAt, lastExitAt, exitCode, crashCount, nextRestartAt, permissions, settingsAvailability, and packageDirectory.
- v2-plugin: Added a
stdio-jsonrpcJSON-RPC client and managed process start path; user-triggered start now launches the manifest command, sendsiskypro.initialize, validates pluginId/protocol/encoding/capabilities, and binds the successful process as a running client. - v2-plugin: stdout is now treated as a strict protocol channel, so ordinary stdout logs are rejected as protocol pollution; stderr is collected line by line into framework plugin logs.
- v2-plugin: Added real stop/restart/shutdown lifecycle for
stdio-jsonrpcplugins; stop sendsplugin.stop, kills the process tree after a short timeout, and user stop/disable/shutdown exits do not trigger automatic restart. - v2-plugin: Unexpected
stdio-jsonrpcexits now enterrestartPendingand reuse the v1 plugin crash window, delay, and consecutive-crash disable thresholds; a due-restart background service starts the plugin and reruns initialize. - v2-plugin: Added a Plugin SDK v2 runtime token service; tokens are bound to pluginId, instanceId, and process lifetime, delivered through initialize, and invalidated on stop, crash, and restart before issuing a new token.
- v2-plugin: Added an SDK API dispatcher that validates token, pluginId ownership, manifest permissions, and catalog defaultEnabled state before
log.write,users.getCurrentBot, and catalog methods;unsafe.rawOpenApiremains rejected by the global risk switch by default. - v2-plugin:
stdio-jsonrpcplugins now receiveevents.messageJSON-RPC events; Main mapsModernPluginMessageEventto a Plugin SDK v2 event envelope and mapsPluginSdkV2EventAckback into dispatch results. - v2-plugin: The
stdio-jsonrpcruntime now handles plugin-originated SDK API JSON-RPC requests / notifications, reusing runtime tokens, manifest permissions, and the API catalog dispatcher. - v2-plugin: Event ACK timeouts, pending requests during process exit, and plugin-rejected ACKs now update timeout/failure metrics; stderr and
log.writeplugin logs are truncated to 4096 characters. - v2-plugin: Added Plugin SDK v2 settings schema APIs and a WebUI auto form for string, number, boolean, select, path, and secret fields; config is saved in the plugin-isolated config directory, secret values are not echoed, and blank secret saves preserve the previous value.
- v2-plugin: The ISkyPro v2+ plugins tab now shows real stdio runtime state, PID, exit code, timeout metrics, and settings entry points;
settings.pageUrlremains limited to loopback HTTP URLs. - v2-plugin: The ISkyPro v2+ plugins tab now includes local zip upload installation for
stdio-jsonrpcplugins, with overwrite, start-after-install, post-install scan refresh, and backend rejection for path traversal, invalid manifests, non-stdio transports, and updates while running. - v2-plugin:
unsafe.rawOpenApiremains available only as a disabled-by-default experimental entry that requires explicit permission.
♻️ Compatibility
- v1-plugin: ISky v1 plugin ordered dispatch, return-value interception, x86 PluginHost isolation, and drag sorting are unaffected by the new plugin tabs.
- linux: Linux preview packages support the main process, WebUI, QQBot gateway, and ISkyPro v2+ plugins; ISky v1 plugins,
isky.exe, and themessage.dllcompatibility layer remain Windows-package only. - v2-plugin: HTTP ISkyPro v2+ plugin controls currently provide registry-level enable, disable, remove, and state refresh behavior;
stdio-jsonrpcstatic discovery, zip install, start, stop, restart, crash recovery, token auth, SDK API permission checks, event delivery, log observability, settings schema, Python / Node.js / Go minimal SDKs, and generators are wired, while Java SDKs and stable API naming remain future work.
📝 Docs
- docs: Updated
docs/reference/update-check.mdwith download task progress endpoints, status fields, and WebUI download/install flow. - docs: Updated Wiki quick start, FAQ, and SDK download pages with Linux preview package startup, systemd long-running deployment, Linux auto-update behavior, and the Windows-only boundary for ISky v1 plugins.
- docs: Updated
docs/reference/v2-plugin-sdk.mdwith the Plugin SDK v2 protocol, event model, permission model, SDK method naming, and language coverage status. - docs: Updated
docs/designs/pluginhost-message-dispatch.mdwith the ISky v1 / ISkyPro v2+ dispatch model, gateway business queue, and v2 plugin queue differences. - docs: The Wiki now includes quick start, QQBot event setup, Webhook and reverse proxy, Plugin SDK, FAQ, SDK downloads, and preview.3 changelog pages, with Chinese/English i18n support; the homepage now links to GitHub.
- docs: Compressed the Wiki homepage
/assets/yuki.pngbelow 512 KiB while preserving its original resolution, text clarity, and path. - release: Added a reusable version-release prompt covering Windows / Linux application packages, SDK packages, Wiki Release upload, and post-release verification.