chore: v0.1.38

This commit is contained in:
l0ng-ai committed 2026-11-06 23:23:32 +08:00
1 parent abdbc39d0d
commit 9c5372c7ab
14 files changed
+166 -49

No files matched your search

Generated
+37 -37
View File
@@ -4106,7 +4106,7 @@ checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954"
[[package]]
name = "ide-agent"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"dunce",
"encoding_rs",
@@ -4129,7 +4129,7 @@ dependencies = [
[[package]]
name = "ide-analysis"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"ast-grep-core",
"ide-core",
@@ -4143,7 +4143,7 @@ dependencies = [
[[package]]
name = "ide-android"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"ide-core",
"serde",
@@ -4154,7 +4154,7 @@ dependencies = [
[[package]]
name = "ide-build"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"blake3",
"dirs 6.0.0",
@@ -4170,7 +4170,7 @@ dependencies = [
[[package]]
name = "ide-clipboard"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"objc2 0.6.5",
"objc2-app-kit 0.3.2",
@@ -4179,7 +4179,7 @@ dependencies = [
[[package]]
name = "ide-core"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"dunce",
"encoding_rs",
@@ -4196,7 +4196,7 @@ dependencies = [
[[package]]
name = "ide-coverage"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"ide-core",
"ide-run",
@@ -4210,7 +4210,7 @@ dependencies = [
[[package]]
name = "ide-dap"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"futures",
"ide-core",
@@ -4230,7 +4230,7 @@ dependencies = [
[[package]]
name = "ide-db"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"bb8",
"dirs 6.0.0",
@@ -4257,7 +4257,7 @@ dependencies = [
[[package]]
name = "ide-docker"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"ide-core",
"serde",
@@ -4270,7 +4270,7 @@ dependencies = [
[[package]]
name = "ide-extension"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"base64 0.22.1",
"blake3",
@@ -4290,7 +4290,7 @@ dependencies = [
[[package]]
name = "ide-fonts"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"objc2-core-foundation",
"objc2-core-text",
@@ -4302,7 +4302,7 @@ dependencies = [
[[package]]
name = "ide-github"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"ide-core",
"ide-vcs",
@@ -4315,7 +4315,7 @@ dependencies = [
[[package]]
name = "ide-host"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"base64 0.22.1",
"criterion",
@@ -4376,7 +4376,7 @@ dependencies = [
[[package]]
name = "ide-http"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"ide-core",
"parking_lot",
@@ -4394,7 +4394,7 @@ dependencies = [
[[package]]
name = "ide-index"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"blake3",
"criterion",
@@ -4416,7 +4416,7 @@ dependencies = [
[[package]]
name = "ide-jsonrpc"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"encoding_rs",
"futures",
@@ -4433,7 +4433,7 @@ dependencies = [
[[package]]
name = "ide-language"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"blake3",
"criterion",
@@ -4489,7 +4489,7 @@ dependencies = [
[[package]]
name = "ide-lsp"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"dunce",
"futures",
@@ -4515,7 +4515,7 @@ dependencies = [
[[package]]
name = "ide-notebook"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"futures",
"ide-core",
@@ -4538,7 +4538,7 @@ dependencies = [
[[package]]
name = "ide-plugin"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"blake3",
"ide-core",
@@ -4559,7 +4559,7 @@ dependencies = [
[[package]]
name = "ide-profiler"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"ide-core",
"ide-run",
@@ -4572,7 +4572,7 @@ dependencies = [
[[package]]
name = "ide-remote"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"globset",
"ide-core",
@@ -4590,7 +4590,7 @@ dependencies = [
[[package]]
name = "ide-run"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"dunce",
"encoding_rs",
@@ -4613,7 +4613,7 @@ dependencies = [
[[package]]
name = "ide-sdk"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"dunce",
"ide-core",
@@ -4632,7 +4632,7 @@ dependencies = [
[[package]]
name = "ide-search"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"criterion",
"globset",
@@ -4652,7 +4652,7 @@ dependencies = [
[[package]]
name = "ide-spell"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"ide-core",
"parking_lot",
@@ -4665,7 +4665,7 @@ dependencies = [
[[package]]
name = "ide-ssh"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"dirs 6.0.0",
"flate2",
@@ -4687,7 +4687,7 @@ dependencies = [
[[package]]
name = "ide-syntax"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"ide-core",
"ide-language",
@@ -4702,7 +4702,7 @@ dependencies = [
[[package]]
name = "ide-terminal"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"ide-core",
"libc",
@@ -4715,7 +4715,7 @@ dependencies = [
[[package]]
name = "ide-text"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"criterion",
"ide-core",
@@ -4728,7 +4728,7 @@ dependencies = [
[[package]]
name = "ide-tools"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"flate2",
"hex",
@@ -4749,7 +4749,7 @@ dependencies = [
[[package]]
name = "ide-vcs"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"blake3",
"dunce",
@@ -4770,7 +4770,7 @@ dependencies = [
[[package]]
name = "ide-vfs"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"chardetng",
"dunce",
@@ -4792,7 +4792,7 @@ dependencies = [
[[package]]
name = "ide-web"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"ide-core",
"open",
@@ -4808,7 +4808,7 @@ dependencies = [
[[package]]
name = "ide-workspace"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"blake3",
"dunce",
@@ -6357,7 +6357,7 @@ dependencies = [
[[package]]
name = "openidea"
version = "0.1.37"
version = "0.1.38"
dependencies = [
"base64 0.22.1",
"blake3",
+1 -1
View File
@@ -5,7 +5,7 @@ members = ["crates/*", "src-tauri"]
exclude = ["sdk", "plugins"]
[workspace.package]
version = "0.1.37"
version = "0.1.38"
edition = "2024"
rust-version = "1.96"
license = "Apache-2.0"
+1 -1
View File
@@ -2,7 +2,7 @@
"name": "openidea",
"private": true,
"description": "An open-source IDE inspired by IntelliJ IDEA",
"version": "0.1.37",
"version": "0.1.38",
"license": "Apache-2.0",
"type": "module",
"scripts": {
@@ -1,4 +1,4 @@
package openidea:plugin@1.1.0;
package openidea:plugin@1.2.0;
/// Workbench events, delivered in batches to `event-handler.handle`.
interface events {
@@ -1,4 +1,4 @@
package openidea:plugin@1.1.0;
package openidea:plugin@1.2.0;
interface lifecycle {
use types.{context, error};
@@ -1,4 +1,4 @@
package openidea:plugin@1.1.0;
package openidea:plugin@1.2.0;
/// Writes to the IDE log, tagged with the plugin id.
interface log {
@@ -17,16 +17,54 @@ interface ui {
command: option<string>,
}
record pick-item {
/// Returned when the item is chosen.
key: string,
label: string,
description: option<string>,
}
/// A context key's value, as `when` clauses compare it.
variant context-value {
flag(bool),
/// A finite number.
number(f64),
/// At most 1024 bytes.
text(string),
}
/// Shows a notification balloon in the window the current command or
/// event came from (every window when there is none).
show-notification: func(level: notification-level, title: string, body: string);
/// Shows or updates the plugin's status bar item `id` in every window.
set-status-item: func(id: string, item: status-item);
remove-status-item: func(id: string);
/// Sets the plugin's context key `key`, which `when` clauses test as
/// `plugin.<id>.<key>`, in the window the current command or event came
/// from (every window when there is none). A window's value takes
/// precedence over the global one. `key` is 1-64 of `A-Za-z0-9_-`; at most
/// 100 keys; they go away when the plugin stops.
set-context: func(key: string, value: context-value) -> result<_, error>;
/// Removes the key `set-context` set in the same scope.
remove-context: func(key: string);
/// Copies `text` to the system clipboard. Requires `clipboard`.
copy-to-clipboard: func(text: string) -> result<_, error>;
/// Opens an `http://` or `https://` URL in the user's default browser.
open-url: func(url: string) -> result<_, error>;
/// Shows a list in the window the current command or event came from and
/// waits for the key of the chosen item, or `none` when the user dismisses
/// it. Needs no capability. Returns `invalid` outside a command or event of
/// a window (including in editor providers). Waiting doesn't count against
/// the call's budget.
pick: func(title: string, items: list<pick-item>) -> result<option<string>, error>;
/// Like `pick`, with any number of items chosen.
pick-many: func(title: string, items: list<pick-item>) -> result<option<list<string>>, error>;
/// Asks for a line of text, pre-filled with `value`; `none` when dismissed.
/// Same rules as `pick`.
input: func(prompt: string, value: option<string>) -> result<option<string>, error>;
/// Asks for confirmation with OK and Cancel: `true` on OK, `false` on
/// Cancel or Escape. Same rules as `pick`.
confirm: func(title: string, body: string) -> result<bool, error>;
}
/// Persistent key-value storage of the plugin (survives restarts and idle
@@ -0,0 +1,60 @@
package openidea:[email protected];
/// Cross-file associations a plugin publishes for the files it declares under
/// `[[contributes.documentIndexers]]`. The host calls `index` in cancellable
/// background batches (on project open, then for changed files), keeps the
/// project-wide graph, and answers Go to Declaration and gutter markers from
/// it without calling the plugin again. Requires `project.read`; trusted
/// projects only.
interface document-indexer {
use types.{range};
/// A symbol the host's syntax support found in the document.
record symbol {
name: string,
/// class, interface, method, field, … as in the structure view.
kind: string,
/// The enclosing symbol's name.
container: option<string>,
range: range,
}
/// The document to index: the editor's text while it is open, else the file's.
record document {
/// Absolute path.
path: string,
text: string,
symbols: list<symbol>,
}
/// A range of the document tied to a key the plugin chooses
/// (`com.example.UserMapper#findById`, say). Keys are compared as is.
record anchor {
key: string,
range: range,
}
/// Keys starting with `prefix` also resolve as if they started with
/// `target`; both end with `#`. A mapper that extends another finds the
/// inherited statements this way.
record alias {
prefix: string,
target: string,
}
/// What one document contributes; replaces its previous edges.
record edges {
/// Where keys are declared.
definitions: list<anchor>,
/// Ranges that go to the definitions of their key (Go to Declaration,
/// Ctrl/⌘-click). Elsewhere the language server answers as usual.
references: list<anchor>,
aliases: list<alias>,
/// Gutter icons on their first line that go to the definitions of their key.
markers: list<anchor>,
}
/// At most 4,096 definitions and references and 256 aliases per document;
/// a document over the limits is reported as not indexed.
index: func(doc: document) -> edges;
}
@@ -1,4 +1,4 @@
package openidea:plugin@1.1.0;
package openidea:plugin@1.2.0;
/// Problems in files, shown in the editor and the Problems view.
interface diagnostics {
@@ -7,7 +7,7 @@
/// or processes beyond WASI's clocks and randomness; everything else goes
/// through the imports below, gated by the capabilities granted in
/// `plugin.toml` (a missing one returns `error::denied`).
package openidea:plugin@1.1.0;
package openidea:plugin@1.2.0;
world plugin {
import log;
@@ -50,6 +50,12 @@ world plugin-views {
export view-provider;
}
/// A plugin with a document indexer (`[[contributes.documentIndexers]]`).
world plugin-indexing {
include plugin;
export document-indexer;
}
/// Only the `syntax-provider` export: guests generate it next to `plugin`
/// (the component tools merge both into one component).
world syntax {
@@ -65,3 +71,8 @@ world editor-providers {
world views-provider {
export view-provider;
}
/// Only the `document-indexer` export, generated next to `plugin` like `syntax`.
world indexing {
export document-indexer;
}
@@ -1,4 +1,4 @@
package openidea:plugin@1.1.0;
package openidea:plugin@1.2.0;
/// Editor features a plugin provides for the languages it declares under
/// `[[contributes.providers]]` (the host calls only declared kinds). They run
@@ -1,4 +1,4 @@
package openidea:plugin@1.1.0;
package openidea:plugin@1.2.0;
/// Shared types. Positions are 0-based lines and UTF-16 code unit columns,
/// as in the editor and LSP.
@@ -1,4 +1,4 @@
package openidea:plugin@1.1.0;
package openidea:plugin@1.2.0;
/// Declarative views: tool windows declared
/// under `[[contributes.views]]` and custom editors under
@@ -127,6 +127,9 @@ interface views {
/// The view (or every custom editor of that id) shows outdated content:
/// the IDE renders it again.
refresh: func(view: string);
/// Brings one of the plugin's own views to the front in the window the
/// current command or event came from; `invalid` outside one.
reveal: func(view: string) -> result<_, error>;
/// Sends a message to the script of a view's `html` body.
post-message: func(view: string, message: string) -> result<_, error>;
/// Opens a terminal tab in the window the call came from, running
@@ -1,4 +1,4 @@
package openidea:plugin@1.1.0;
package openidea:plugin@1.2.0;
interface workspace {
use types.{error};
@@ -59,6 +59,11 @@ interface invocation {
project: func() -> option<project>;
/// The window's focused editor.
editor: func() -> option<text-editor>;
/// The files and folders the command was run on (a multi-selection in
/// a file tree, for instance), as absolute paths.
/// Empty when it was not run on any, or when the menu was for a tab
/// without a file (a virtual document).
selected-paths: func() -> list<string>;
}
}
+1 -1
View File
@@ -1,7 +1,7 @@
{
"$schema": "https://schema.tauri.app/config/2",
"productName": "OpenIDEA",
"version": "0.1.37",
"version": "0.1.38",
"identifier": "ai.l0ng.openidea",
"build": {
"beforeDevCommand": "pnpm dev",