Nimblesite / Nimblesite/Basilisk
Shipwright: verify Zed extension reads shipwright.json + checks expectedVersion
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 54
- Forks
- 3
- PR merge metrics
- No merged PRs in 30d
Description
Problem
basilisk-zed/src/lib.rs downloads the latest GitHub release and tracks cached_binary_version, but never reads shipwright.json (or deployment-toolkit.json) to learn the expected version, and never verifies the running server's version against an expected value from the manifest.
```rust
// src/lib.rs
let (path, version) = Self::download_binary()?;
self.cached_binary_version = Some(version);
// ...later:
if logic::is_newer_version(current, &latest_release.version) { /* warn */ }
```
Per [SWR-VERSION-LSP], IDE hosts must verify the LSP server's version (from InitializeResult.serverInfo.version) against the expectedVersion declared in shipwright.json. Per [SWR-IDE-ERROR], mismatches must be surfaced with expected, found, and path.
Spec citations
[SWR-VERSION-LSP]— verify server version from initialize metadata[SWR-IDE-ERROR]— error surface for mismatches[SWR-VERSION-CONTRACT]— manifest is the source of truth for expected version
Spec references
The Shipwright deployment specs are at https://github.com/Nimblesite/Shipwright (private repo). Use Playwright (mcp__playwright__browser_navigate) in an authenticated browser to view them.
- https://github.com/Nimblesite/Shipwright/blob/package-deployment/docs/specs/binary-version-contract.md
- https://github.com/Nimblesite/Shipwright/blob/package-deployment/docs/specs/ide-extension-deployment.md
Acceptance criteria
- Zed extension parses
shipwright.json(after rename — see manifest-rename issue) on startup - Reads
expectedVersionfor thebasiliskcomponent (resolves${PRODUCT_VERSION}) - Compares against
InitializeResult.serverInfo.versionafter LSP initialize - On mismatch with
hosts.zed.onMismatch: error, surfaces a notification with expected, found, and binary path; refuses to use the server - Existing
is_newer_versionGitHub-release check kept as a separate informational warning
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in basilisk-zed/src/lib.rs, then review the referenced Shipwright version-contract and IDE-extension specs in an authenticated browser with Playwright. Trace startup, binary download, and LSP initialization, keeping the existing is_newer_version warning separate. Done means the acceptance criteria are met, including the expected, found, and binary path notification on mismatch.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- devtools
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100