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
8 changes: 6 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -67,9 +67,13 @@ jobs:
exit 0
fi
cat > "$RUNNER_TEMP/notes.md" <<'NOTES'
macOS Cargo integration for a Lithe preview with API 3 buildSystems 2, settings 2, buildProviders 1 and serverProcess 1 support.
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.

Adds a native Cargo executable path setting: select a file or leave it empty for discovery. Metadata, builds, tests, run and clean share the selected executable; an invalid selection fails instead of falling back. Requires Cargo 1.70+ and Node.js 20.3+. Existing workspace/package tasks and Release, Features and Offline options remain available.
Changes in 0.1.2:
- 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.

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
20 changes: 10 additions & 10 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,26 +3,26 @@
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 unreleased preview source.** Native disk-installation and full UI acceptance
**0.1.2 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` and `serverProcess: 1`. Windows is not supported yet.
`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.

## 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.

For this branch, build `dist/cargo-build-0.1.2-darwin.zip` with `node scripts/package.mjs`.
The published 0.1.1 preview remains available from [Releases](https://github.com/Lithe-IDEA/lithe-plugin-cargo/releases)
and keeps its older host requirements.
Download `cargo-build-0.1.2-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.
After the [Lithe Store](https://github.com/Lithe-IDEA/Lithe-store) entry is merged,
compatible preview builds can also install it from the plugin marketplace.
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.

## Cargo path

Expand All @@ -34,7 +34,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` and `settings: 2`.
Version 0.1.2 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 +60,7 @@ members or target sources outside the selected build root are refused. The host'

## Diagnostic logs

This branch requires a host offering `litheLogging: 1`. The vendored official
Version 0.1.2 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 +148,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.

The 0.1.2 source migrates custom Cargo selection to the shared ordered executable
Version 0.1.2 migrates 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
Loading