Release 1.3.0
Build PCM package / build (push) Successful in 7s

macOS is now field-tested and working; the README platform notes say
so instead of untested. Linux remains audited-only.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
janik
2026-07-23 13:37:17 +07:00
parent 23edb39f52
commit 24fed64f83
5 changed files with 62 additions and 20 deletions
+17 -17
View File
@@ -30,14 +30,14 @@ SWIG API. Requires KiCad **10.0.1+**.
## Setup (one-time) ## Setup (one-time)
The plugin is developed and tested on **Windows**. **Linux and macOS The plugin is developed and tested on **Windows**; **macOS works**
are expected to work but are untested so far** — the code and the (field-tested on KiCad 10 after a round of mac-specific fixes).
dependency stack have been audited for all three OSes (KiCad builds **Linux is expected to work but is untested so far** — the code and
the plugin a private Python venv from `requirements.txt` on every the dependency stack have been audited (KiCad builds the plugin a
platform, from pre-built wheels only, no compiler needed), but nobody private Python venv from `requirements.txt` on every platform, from
has run the plugin there yet. Reports welcome! Steps 14 are the same pre-built wheels only, no compiler needed), but nobody has run the
everywhere; OS specifics are spelled out per step and in *Platform plugin there yet. Reports welcome! Steps 14 are the same everywhere;
notes* below. OS specifics are spelled out per step and in *Platform notes* below.
1. **Enable the API server**: KiCad → Preferences → Plugins → check 1. **Enable the API server**: KiCad → Preferences → Plugins → check
*Enable KiCad API*. *Enable KiCad API*.
@@ -78,15 +78,15 @@ notes* below.
- **Windows** is the development and test platform — everything in - **Windows** is the development and test platform — everything in
this README was exercised here. KiCad's bundled Python is 3.13, so this README was exercised here. KiCad's bundled Python is 3.13, so
the venv gets the current dependency stack. the venv gets the current dependency stack.
- **macOS** — **untested** (audited only: dependency wheels, paths and - **macOS** — **works** (field-tested on KiCad 10). Requires
Python-version compatibility were checked, the plugin was never run macOS 12+ (KiCad's own minimum; Intel and Apple Silicon — the dmg
on a Mac). Requires macOS 12+ (KiCad's own minimum; Intel and Apple is universal). KiCad's bundled Python is **3.9**, so pip resolves
Silicon — the dmg is universal). KiCad's bundled Python is **3.9**, an older stack (numpy 2.0, scipy 1.13, matplotlib 3.9,
so pip resolves an older stack (numpy 2.0, scipy 1.13, PySide6 6.9/6.10); the plugin code is kept 3.9-compatible (guarded
matplotlib 3.9, PySide6 6.9/6.10) that the plugin code is kept by a test) and the suite is also run against that older stack.
compatible with. Expect plot and dialog windows to open **behind** Plot and dialog windows may open **behind** the KiCad window (they
the KiCad window (they are raised best-effort) — check the Dock if are raised best-effort) — check the Dock if nothing seems to appear
nothing seems to appear after a solve. after a solve.
- **Linux** — **untested** (audited only, same caveat). The venv uses - **Linux** — **untested** (audited only, same caveat). The venv uses
the system Python (3.9+), so the stack matches your distribution. the system Python (3.9+), so the stack matches your distribution.
On **ARM64 (aarch64)** there are no pyamg wheels — On **ARM64 (aarch64)** there are no pyamg wheels —
+42
View File
@@ -0,0 +1,42 @@
The plugin now works on macOS. Results are unchanged from 1.2.2 for
the same board and settings - nothing in the numerics was touched;
this release is platform fixes and per-OS documentation.
macOS (field-tested on KiCad 10):
- Fixed a crash on launch. KiCad's macOS builds bundle Python 3.9,
and one module's type annotations were evaluated at import there
("unsupported operand type(s) for |: 'type' and 'NoneType'"). The
plugin now runs on 3.9, and a test walks every shipped module so
the incompatibility cannot silently return.
- Fixed every figure - the error figure included - refusing to render
with "Cannot load backend 'TkAgg' ... as 'qt' is currently
running". macOS' bundled Python ships tkinter, so matplotlib
preferred Tk while the selection dialog had already made the
process a Qt one. Qt (PySide6, a hard dependency) is now always
the first choice on every platform.
- A board in a read-only location - such as the demo projects opened
straight from the mounted installer image - no longer kills the run
when the results directory cannot be created next to the board.
Results fall back to a temp directory and the path is printed to
the Messages panel.
- The test suite additionally runs against the stack a Mac plugin
environment actually resolves (Python 3.9, numpy 2.0, scipy 1.13,
matplotlib 3.9, PySide6 6.10) - 140 tests on both stacks.
Linux:
- On ARM64 (aarch64) the plugin environment could never build: pyamg
publishes no wheels for that platform, KiCad installs wheels only,
and one unresolvable requirement fails the whole environment.
pyamg is now skipped there and the solver falls back to Jacobi-CG -
same results, noticeably slower on large grids. Linux as a whole
remains untested; reports welcome.
Documentation:
- Setup now gives dedicated instructions per operating system: which
interpreter path to check, how to deploy, and where the plugin's
Python environment lives on Windows, macOS and Linux (for the
delete-and-restart recovery). A platform-notes section records what
is actually tested on each OS and what to expect there.
+1 -1
View File
@@ -17,7 +17,7 @@
}, },
"versions": [ "versions": [
{ {
"version": "1.2.2", "version": "1.3.0",
"status": "stable", "status": "stable",
"kicad_version": "10.0", "kicad_version": "10.0",
"runtime": "ipc" "runtime": "ipc"
+1 -1
View File
@@ -3,7 +3,7 @@
# the dependency list there in sync with [project.dependencies]. # the dependency list there in sync with [project.dependencies].
[project] [project]
name = "fill-resistance" name = "fill-resistance"
version = "1.2.2" version = "1.3.0"
description = "DC resistance of copper zone fills and traces between two contacts (KiCad 10 plugin)" description = "DC resistance of copper zone fills and traces between two contacts (KiCad 10 plugin)"
license = "GPL-3.0-or-later" license = "GPL-3.0-or-later"
requires-python = ">=3.11" requires-python = ">=3.11"
Generated
+1 -1
View File
@@ -216,7 +216,7 @@ wheels = [
[[package]] [[package]]
name = "fill-resistance" name = "fill-resistance"
version = "1.2.2" version = "1.3.0"
source = { virtual = "." } source = { virtual = "." }
dependencies = [ dependencies = [
{ name = "kicad-python" }, { name = "kicad-python" },