Milind Sharma
d9644312ef
refactor: modularize client API and finalize v10 assessment follow-ups ( #25 )
...
* feat: bump vendored KiCad protos to v10.0.0
* test: add protocol contract tests for board layer name
* docs: overhaul README and guide site
- Rewrite README with punchy opening, realistic examples, and cleaner structure
- Update status to Beta and version numbers to 0.4.1
- Remove redundant sections (roadmap, future work, guide site link)
- Simplify API matrix by removing redundant Status column
- Add CONTRIBUTING.md header with welcoming message
- Expand mdBook examples with real-world patterns:
- PCB analysis (unconnected nets, footprints)
- Automation (text variables, test points)
- CI/CD integration patterns
- Net class validation
- Selection manipulation
- Update mdBook intro with comparison table and clearer goals
- Update quickstart version numbers
- Suppress missing_docs warnings for internal modules (commands, envelope, transport)
- Format code with cargo fmt
* docs: complete library assessment report with verified findings
- Corrected baseline metrics (5448 LOC client.rs, 7903 non-generated total, 12766 overall)
- Added full non-generated source tree with LOC breakdown
- Expanded anti-pattern scan from 3 to 6 findings (AP-4 through AP-6)
- Added verified clean signals (zero production unwrap/expect/panic)
- Added transport architecture, feature flag, and model cross-dependency analysis
- Proposed concrete client.rs domain split into 8 modules
- Identified 5 new documentation issues (DR-2 through DR-6)
- Resolved DR-1 (version drift already fixed)
- Expanded risk register from 5 to 9 entries
- Updated prioritized action plan with corrected priorities
* fix: complete P0 action items from library assessment
- Fix clone_on_copy in client.rs map_text_shape (AP-1)
- Add clippy::enum_variant_names allow for generated proto code (AP-2)
- Fix bool_assert_comparison patterns in test assertions (AP-3)
- Fix broken README anchor in validation.md (DR-2)
- Remove docs/book/src/https: filesystem artifact (DR-3)
* refactor: split monolithic client.rs into domain modules
Split src/client.rs (5448 LOC) into src/client/ directory with 11 modules:
- mod.rs: core structs, builder, constants, send_command
- common.rs: ping, version, paths, documents, text vars, text geometry
- board.rs: nets, layers, origin, stackup, graphics, appearance, DRC
- selection.rs: get/add/remove/clear selection
- items.rs: CRUD, get by type/net/class, commit workflow
- document.rs: title block, save, revert, string serialization
- geometry.rs: bounding boxes, hit test, pad polygons, padstack, zones
- mappers.rs: all proto-to-model and model-to-proto conversions
- decode.rs: PCB item type decoding
- format.rs: selection detail formatting, debug utilities
- tests.rs: all unit tests
No public API changes. All existing tests pass.
Updated blocking parity test to scan split module files.
* refactor: add rpc! dispatch macro to reduce RPC boilerplate
Introduce rpc! macro in client/mod.rs that encapsulates the
pack → send_command → response_payload_as_any pattern repeated
across 57 RPC methods. Demonstrate usage in common.rs with 4
converted _raw methods.
* feat: complete P1/P2 action items from library assessment
- Add beginner examples: hello_kicad.rs and board_inspector.rs
- Add README prerequisites section with KiCad IPC API setup guide
- Add README examples section with run commands for all 3 examples
- Add protocol-contract tests: CMD/RES prefix validation, PCB types catalog
- Add module-level rustdoc to all client submodules
- All tests pass (default + blocking features)
* docs: update assessment report with completed action items
Mark resolved: AP-1/AP-2/AP-3 (clippy), DR-2 (anchor), DR-3 (artifact),
ST-1 (client.rs split), DR-5 (examples), DR-6 (prerequisites).
Mark mitigated: AP-4 (RPC boilerplate via rpc! macro).
Update baseline metrics to reflect 11-module client layout.
Update risk register, action plan status, and revision history.
* chore: finalize tier-1 API docs and modular client cleanup
Document the public client and blocking surfaces so strict rustdoc linting passes, while keeping tier-2/3 internals lightly scoped. Also clean stale modularization references and remove leftover split-refactor dead imports/helpers to reduce maintenance drift.
2026-03-29 20:54:49 +08:00
Milind Sharma
735384f0bc
feat: bump vendored KiCad protos to v10.0.0 ( #23 )
...
* feat: bump vendored KiCad protos to v10.0.0
* test: add protocol contract tests for board layer name
* docs: overhaul README and guide site
- Rewrite README with punchy opening, realistic examples, and cleaner structure
- Update status to Beta and version numbers to 0.4.1
- Remove redundant sections (roadmap, future work, guide site link)
- Simplify API matrix by removing redundant Status column
- Add CONTRIBUTING.md header with welcoming message
- Expand mdBook examples with real-world patterns:
- PCB analysis (unconnected nets, footprints)
- Automation (text variables, test points)
- CI/CD integration patterns
- Net class validation
- Selection manipulation
- Update mdBook intro with comparison table and clearer goals
- Update quickstart version numbers
- Suppress missing_docs warnings for internal modules (commands, envelope, transport)
- Format code with cargo fmt
2026-03-29 12:01:16 +08:00
Milind Sharma
b32eb7fa44
fix: reduce selection API lossiness in existing public methods ( #19 )
...
* fix(selection): preserve selection payload fidelity in existing APIs
* docs(selection): update deep-dump example for revised selection signatures
* docs(selection): document revised selection signatures and return models
2026-03-06 00:28:48 +08:00
Milind Sharma
9fbf833174
fix: decouple project commands from GetOpenDocuments and add KIPRJMOD fallback ( #16 )
...
* fix(api): use project doc context for text vars and add KIPRJMOD fallback
* fix(api): tighten project-path fallback and unhandled detection
2026-03-02 17:25:57 +08:00
Milind Sharma
0b078379bd
docs: add mdBook guide site and Pages deploy workflow ( #15 )
...
* docs(book): add mdBook guide scaffold and chapters
* fix(book): correct mdBook summary external link handling
* ci(docs): add mdBook build and pages deploy workflow
* docs(readme): document mdBook guide site and paths
* chore(gitignore): ignore mdbook output directory
* ci(docs): split mdbook build and deploy permissions
2026-02-28 13:15:33 +08:00
Milind Sharma
ed98f12c51
feat: expose via layer spans in typed model and CLI
2026-02-22 18:20:04 +08:00
Milind Sharma
a0271419cc
feat(blocking): ship full sync wrapper parity
2026-02-21 17:24:33 +08:00
Milind Sharma
cdf37bb7b6
feat(board): add InteractiveMoveItems API and CLI command
2026-02-20 18:59:02 +08:00
Milind Sharma
deb03b9c48
feat(board): add UpdateBoardStackup API and CLI command
2026-02-20 18:56:32 +08:00
Milind Sharma
0e8217fd8f
feat(project): add SetTextVariables API and CLI command
2026-02-20 18:48:38 +08:00
Milind Sharma
fff70f61c1
feat(project): add SetNetClasses API and CLI command
2026-02-20 18:45:41 +08:00
Milind Sharma
1c57eef959
feat(common): add ParseAndCreateItemsFromString API and CLI command
2026-02-20 18:40:42 +08:00
Milind Sharma
a2a3dbc771
feat(common): add DeleteItems API and CLI command
2026-02-20 18:38:48 +08:00
Milind Sharma
b26a04e392
feat(common): add UpdateItems API and CLI command
2026-02-20 18:36:18 +08:00
Milind Sharma
01ed710ae2
feat(common): add CreateItems API and CLI command
2026-02-20 18:34:23 +08:00
Milind Sharma
a29a573c6d
feat(common): add RunAction API and CLI command
2026-02-20 18:30:18 +08:00
Milind Sharma
e03bc9ab89
feat(common): add RevertDocument API and CLI command
2026-02-20 18:25:23 +08:00
Milind Sharma
14856ec9d6
feat(common): add SaveCopyOfDocument API and CLI command
2026-02-20 18:23:41 +08:00
Milind Sharma
1a7c125316
feat(common): add SaveDocument API and CLI command
2026-02-20 18:21:38 +08:00
Milind Sharma
7bd0313b30
feat(base): add GetPluginSettingsPath API and CLI command
2026-02-20 18:19:50 +08:00
Milind Sharma
e7390f6549
feat(base): add GetKiCadBinaryPath API and CLI command
2026-02-20 18:18:04 +08:00
Milind Sharma
3305de0a8e
feat(client): add RemoveFromSelection API and CLI command
2026-02-20 18:11:11 +08:00
Milind Sharma
9dac48ed87
feat(client): add AddToSelection API and CLI command
2026-02-20 18:08:45 +08:00
Milind Sharma
2867c4a874
feat(client): add ClearSelection API and CLI command
2026-02-20 18:05:05 +08:00
Milind Sharma
feb29250d0
feat(client): add RefillZones API and CLI command
2026-02-20 18:00:37 +08:00
Milind Sharma
a896a1c38e
feat(client): add InjectDrcError API and CLI command
2026-02-20 17:38:07 +08:00
Milind Sharma
909007f74b
feat(client): add SetBoardEditorAppearanceSettings API and CLI command
2026-02-20 17:31:10 +08:00
Milind Sharma
e147186fbf
feat(client): add SetBoardEnabledLayers API and CLI command
2026-02-20 17:20:00 +08:00
Milind Sharma
080d5cf537
feat(client): add SetBoardOrigin API and CLI command
2026-02-20 17:14:52 +08:00
Milind Sharma
438b4999b9
feat(client): add SetVisibleLayers API and CLI command
2026-02-20 17:06:58 +08:00
Milind Sharma
35f6773b11
feat(client): add SetActiveLayer API and CLI command
2026-02-20 16:58:11 +08:00
Milind Sharma
331910444d
feat(client): add RefreshEditor API and CLI command
2026-02-20 16:54:54 +08:00
Milind Sharma
aa406927a5
feat(client): add EndCommit API and CLI command
2026-02-20 16:51:27 +08:00
Milind Sharma
8e8033f07c
feat(client): add BeginCommit API and CLI command
2026-02-20 16:45:22 +08:00
Milind Sharma
e644eb0ac5
feat(base): add GetTextAsShapes API bindings
2026-02-20 14:24:05 +08:00
Milind Sharma
5fb0bdccdb
feat(base): add GetTextExtents API bindings
2026-02-20 14:20:27 +08:00
Milind Sharma
fc9a92502c
feat(project): add ExpandTextVariables API bindings
2026-02-20 14:16:56 +08:00
Milind Sharma
94581a7c6b
feat(project): add GetTextVariables API bindings
2026-02-20 14:15:26 +08:00
Milind Sharma
8ffdf4b2d6
feat(project): add GetNetClasses API bindings
2026-02-20 14:14:02 +08:00
Milind Sharma
3ce51e4a7d
chore(cli-docs): align commands with typed/raw api surface
2026-02-20 13:54:28 +08:00
Milind Sharma
21b66d5823
feat: add pad polygon and padstack presence read APIs
2026-02-19 12:51:06 +08:00
Milind Sharma
59bc0e7838
feat: add board reconstruction verification report tooling
2026-02-19 12:24:12 +08:00
Milind Sharma
1b54e688c1
feat: add item-id queries and geometry inspection APIs
2026-02-19 12:00:09 +08:00
Milind Sharma
08c2b6f919
feat: add selection detail and pad netlist APIs
2026-02-19 11:54:09 +08:00
Milind Sharma
7e76a1396d
feat: add selection summary query and CLI command
2026-02-18 23:37:34 +08:00
Milind Sharma
54c0bbf7b7
feat: add visible layers and board origin APIs
2026-02-18 23:34:18 +08:00
Milind Sharma
a109ba7463
feat: add initial PCB read APIs and CLI commands
2026-02-18 23:31:45 +08:00
Milind Sharma
5f37c40aec
docs: add test CLI runbook
2026-02-18 22:49:15 +08:00