chore: prepare kicad-ipc-rs v0.1.0 release

This commit is contained in:
Milind Sharma 2026-02-20 23:53:21 +08:00
parent 5674b4f176
commit 29417d01aa
3 changed files with 35 additions and 44 deletions

4
Cargo.lock generated
View File

@ -168,8 +168,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2"
[[package]] [[package]]
name = "kicad-ipc" name = "kicad-ipc-rs"
version = "0.0.0" version = "0.1.0"
dependencies = [ dependencies = [
"nng", "nng",
"prost", "prost",

View File

@ -1,11 +1,22 @@
[package] [package]
name = "kicad-ipc" name = "kicad-ipc-rs"
version = "0.0.0" version = "0.1.0"
edition = "2021" edition = "2021"
license = "MIT" license = "MIT"
description = "Rust bindings for the KiCad IPC API" description = "Rust client library for the KiCad IPC API (async-first)"
repository = "https://github.com/kicad-oss/kicad-ipc-rust" repository = "https://github.com/Milind220/kicad-api-rust"
homepage = "https://github.com/Milind220/kicad-api-rust"
readme = "README.md" readme = "README.md"
keywords = ["kicad", "eda", "pcb", "ipc"]
categories = ["api-bindings", "asynchronous"]
include = [
"/src/**",
"/proto/**",
"/build.rs",
"/README.md",
"/LICENSE",
"/Cargo.toml",
]
[features] [features]
default = ["async"] default = ["async"]
@ -23,8 +34,3 @@ tracing = { version = "0.1.41", optional = true }
[build-dependencies] [build-dependencies]
prost-build = "0.14.1" prost-build = "0.14.1"
[[bin]]
name = "kicad-ipc-cli"
path = "test-scripts/kicad-ipc-cli.rs"
required-features = ["async"]

View File

@ -1,28 +1,24 @@
# KiCad IPC API Rust # kicad-ipc-rs
[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/Milind220/kicad-ipc-rust) [![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/Milind220/kicad-ipc-rust)
MIT-licensed Rust bindings for the KiCad IPC API. MIT-licensed Rust client library for the KiCad IPC API.
## Current Status ## Status
Early scaffold phase. Core architecture + step-by-step implementation plan: Alpha. `v0.1.0` release candidate.
- `/Users/milindsharma/Developer/kicad-oss/kicad-ipc-rust/prompts/IPC_RUST_EXECUTION_PLAN.md`
- `/Users/milindsharma/Developer/kicad-oss/kicad-ipc-rust/proto/README.md`
## Roadmap - Async API: implemented and usable.
- Sync/blocking wrapper API: planned, not shipped yet.
1. Async-first layered client (`v0.1.0`) - Real-world user testing: still limited.
2. Full PCB read surface + trace write capability (`v0.1.0`) - Issues and PRs welcome.
3. Blocking wrapper parity (`v0.2.0`)
## Local Testing ## Local Testing
- CLI runbook: `/Users/milindsharma/Developer/kicad-oss/kicad-ipc-rust/docs/TEST_CLI.md` - CLI runbook: `/Users/milindsharma/Developer/kicad-oss/kicad-ipc-rust/docs/TEST_CLI.md`
## Runtime Compatibility Notes (Current Test Rig) ## Runtime Compatibility Notes
- Last verified: 2026-02-20
- KiCad version (`kicad-ipc-cli version`): `10.0.0 (10.0.0-rc1)` - KiCad version (`kicad-ipc-cli version`): `10.0.0 (10.0.0-rc1)`
Commands wrapped in this crate but currently unhandled/unsupported by this KiCad build: Commands wrapped in this crate but currently unhandled/unsupported by this KiCad build:
@ -31,32 +27,13 @@ Commands wrapped in this crate but currently unhandled/unsupported by this KiCad
| --- | --- | --- | | --- | --- | --- |
| `RefreshEditor` | `AS_UNHANDLED` | KiCad responds `no handler available for request of type kiapi.common.commands.RefreshEditor`. | | `RefreshEditor` | `AS_UNHANDLED` | KiCad responds `no handler available for request of type kiapi.common.commands.RefreshEditor`. |
Deferred manual/runtime verification (implemented after 2026-02-20 while user unavailable): Runtime-verified operations include:
- `GetKiCadBinaryPath`
- `GetPluginSettingsPath`
- `SaveDocument`
- `SaveCopyOfDocument`
- `RevertDocument`
- `RunAction`
- `CreateItems` - `CreateItems`
- `UpdateItems` - `UpdateItems`
- `DeleteItems` - `DeleteItems`
- `ParseAndCreateItemsFromString`
- `SetNetClasses`
- `SetTextVariables`
- `UpdateBoardStackup`
- `InteractiveMoveItems`
## KiCad v10 RC1.1 API Completion Matrix ## KiCad v10 RC1.1 API Completion Matrix
Source of truth for this matrix:
- `/Users/milindsharma/Developer/kicad-oss/kicad-ipc-rust/proto/common/commands/base_commands.proto`
- `/Users/milindsharma/Developer/kicad-oss/kicad-ipc-rust/proto/common/commands/editor_commands.proto`
- `/Users/milindsharma/Developer/kicad-oss/kicad-ipc-rust/proto/common/commands/project_commands.proto`
- `/Users/milindsharma/Developer/kicad-oss/kicad-ipc-rust/proto/board/board_commands.proto`
- `/Users/milindsharma/Developer/kicad-oss/kicad-ipc-rust/proto/schematic/schematic_commands.proto`
Legend: Legend:
- `Implemented` = wrapped in current Rust client (`src/client.rs`). - `Implemented` = wrapped in current Rust client (`src/client.rs`).
- `Not yet` = exists in proto, not wrapped yet. - `Not yet` = exists in proto, not wrapped yet.
@ -169,3 +146,11 @@ Legend:
| --- | --- | | --- | --- |
| Dedicated footprint-editor command proto | None in current snapshot | | Dedicated footprint-editor command proto | None in current snapshot |
| Current path | Uses common editor/document commands via `DocumentType::DOCTYPE_FOOTPRINT` | | Current path | Uses common editor/document commands via `DocumentType::DOCTYPE_FOOTPRINT` |
## Roadmap
`v0.2.0` target:
- Add full sync/blocking wrapper API parity over async client.
- Expand runtime + integration testing coverage.
- Set up CI to run checks/tests on commits and PRs.
- Continue API hardening/docs/examples for stable `1.0` path.