Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 5 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -69,11 +69,14 @@ jobs:
cat > "$RUNNER_TEMP/notes.md" <<'NOTES'
macOS Cargo integration for a Lithe preview with API 3 buildSystems 1, executableResolution 1, settings 2, buildProviders 1, serverProcess 1 and structured plugin diagnostics (litheLogging 1). Stable Lithe 0.6.7 does not offer litheLogging 1 and cannot start this version; keep using 0.1.1 there.

Changes in 0.1.2:
Changes in 0.1.3:
- Fixes the PATH given to Cargo on Windows-style hosts: the selected Cargo's directory is now joined with the platform path delimiter instead of a hard-coded colon.

Changes in 0.1.2 (still included):
- Structured diagnostics: the bundled Node SDK records one INFO for each successful metadata request and one ERROR for each failure on the plugins/io.github.lithe-idea.cargo-build/host channel of Lithe's log window, with duration and a stable failure code. Cargo output, metadata JSON, source and environment values never enter the log. The duplicate raw stderr and JSON error logging is removed.
- The Cargo path setting becomes the first of the host's ordered executable candidates (executableResolution 1), ahead of PATH discovery. A missing, non-executable or too-old selection still fails instead of falling back.

Requires Cargo 1.70+ and Node.js 20.3+. Not listed in Lithe Store yet; download the ZIP and install it from disk.
Requires Cargo 1.70+ and Node.js 20.3+. Listed in Lithe Store by a reviewed index pull request; the ZIP can also be installed from disk.

Preview status: automated integration and contract checks pass; native installation and full UI acceptance are pending. Windows is not supported. Published ZIP bytes must not be replaced.
NOTES
Expand Down
17 changes: 9 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,27 @@
Cargo is a community build plugin for Lithe. It uses Lithe's native Cargo
tool window and Build Output to build, check, test, clean, and run Rust projects.

**0.1.2 is a preview release.** Native disk-installation and full UI acceptance
**0.1.3 is a preview release.** Native disk-installation and full UI acceptance
are still pending. Automated integration and host compatibility run in this
repository's CI.
The plugin requires a Lithe preview with API 3 `buildSystems: 1`, `executableResolution: 1`, `settings: 2`,
`buildProviders: 1`, `serverProcess: 1` and structured plugin diagnostics (`litheLogging: 1`).
Stable Lithe 0.6.7 does not offer `litheLogging: 1` and cannot start 0.1.2. Windows is not supported yet.
Stable Lithe 0.6.7 does not offer `litheLogging: 1` and cannot start 0.1.3. Windows is not supported yet.

## Install

Install Rust/Cargo 1.70+ and Node.js 20.3+ first. Node runs the metadata provider;
Cargo and rust-analyzer are not bundled. Existing Rust language intelligence
continues to use Lithe's Rust language service.

Download `cargo-build-0.1.2-darwin.zip` from [Releases](https://github.com/Lithe-IDEA/lithe-plugin-cargo/releases).
Download `cargo-build-0.1.3-darwin.zip` from [Releases](https://github.com/Lithe-IDEA/lithe-plugin-cargo/releases).
Hosts without `litheLogging: 1` can keep using the 0.1.1 preview, which keeps its older host requirements.
In Lithe, choose Settings → Plugins → Install from Disk, select the ZIP,
review Cargo/Node and its permissions, and restart. Enable Cargo, open the
Cargo workspace root, then open the Cargo tool window and load the project model.
0.1.2 is not listed in [Lithe Store](https://github.com/Lithe-IDEA/Lithe-store) yet: the Store cannot
tell stable hosts without `litheLogging: 1` apart, so install it from disk.
0.1.3 is also listed in [Lithe Store](https://github.com/Lithe-IDEA/Lithe-store). The Store cannot
tell stable hosts without `litheLogging: 1` apart (it is not a `requires` capability), so a stable Lithe 0.6.7
user who installs it from the Store gets a Cargo backend that fails to start; stay on 0.1.1 there.

## Cargo path

Expand All @@ -34,7 +35,7 @@ same executable. A missing, non-executable or too-old selection fails visibly
instead of silently choosing a different Cargo installation. The executable's
parent directory is placed first on PATH for companion tools.

Version 0.1.2 requires a preview host with `buildSystems: 1`, `executableResolution: 1`, `settings: 2` and `litheLogging: 1`.
Version 0.1.3 requires a preview host with `buildSystems: 1`, `executableResolution: 1`, `settings: 2` and `litheLogging: 1`.
Its exact tested host revision is recorded in `sdk.lock.json`; older hosts keep
using the compatible 0.1.0 release through the Store. Existing published ZIPs
are immutable and are never replaced.
Expand All @@ -60,7 +61,7 @@ members or target sources outside the selected build root are refused. The host'

## Diagnostic logs

Version 0.1.2 requires a host offering `litheLogging: 1`. The vendored official
Version 0.1.3 requires a host offering `litheLogging: 1`. The vendored official
Node SDK sends typed `lithe/log` notifications to the host's v2 catalog and
writer, in the current session's
`plugins/io.github.lithe-idea.cargo-build/host` channel. The SDK records one
Expand Down Expand Up @@ -148,7 +149,7 @@ Published ZIP bytes are immutable: fixes require a new version.
The Store index records the repository URL, API requirements, release URL and
archive SHA-256. First inclusion and pre-releases use a reviewed Store pull request.

Version 0.1.2 migrates custom Cargo selection to the shared ordered executable
Versions 0.1.2 and later migrate custom Cargo selection to the shared ordered executable
candidates. Published 0.1.0/0.1.1 preview archives remain immutable. A compatible
host must advertise `executableResolution: 1`; the setting is a candidate ahead
of automatic PATH discovery, with empty values skipped and explicit failures
Expand Down
2 changes: 1 addition & 1 deletion io.github.lithe-idea.cargo-build/backend/main.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,6 @@
import { createBackend, PluginError } from './vendor/lithe-plugin-sdk/index.mjs';
import { registerCargoProvider } from './provider.mjs';

const backend = createBackend({ name: 'cargo-build', version: '0.1.2' });
const backend = createBackend({ name: 'cargo-build', version: '0.1.3' });
registerCargoProvider(backend, PluginError);
await backend.listen();
2 changes: 1 addition & 1 deletion io.github.lithe-idea.cargo-build/plugin.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"schemaVersion": 2,
"id": "io.github.lithe-idea.cargo-build",
"displayName": "Cargo",
"version": "0.1.2",
"version": "0.1.3",
"pluginAPIVersion": 3,
"requires": { "buildProviders": 1, "buildSystems": 1, "executableResolution": 1, "serverProcess": 1, "settings": 2 },
"vendor": { "id": "io.github.lithe-idea", "displayName": "Lithe Community", "signatureRequirement": "none" },
Expand Down
Loading