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)
The plugin is developed and tested on **Windows**. **Linux and macOS
are expected to work but are untested so far** — the code and the
dependency stack have been audited for all three OSes (KiCad builds
the plugin a private Python venv from `requirements.txt` on every
platform, from pre-built wheels only, no compiler needed), but nobody
has run the plugin there yet. Reports welcome! Steps 14 are the same
everywhere; OS specifics are spelled out per step and in *Platform
notes* below.
The plugin is developed and tested on **Windows**; **macOS works**
(field-tested on KiCad 10 after a round of mac-specific fixes).
**Linux is expected to work but is untested so far** — the code and
the dependency stack have been audited (KiCad builds the plugin a
private Python venv from `requirements.txt` on every platform, from
pre-built wheels only, no compiler needed), but nobody has run the
plugin there yet. Reports welcome! Steps 14 are the same everywhere;
OS specifics are spelled out per step and in *Platform notes* below.
1. **Enable the API server**: KiCad → Preferences → Plugins → check
*Enable KiCad API*.
@@ -78,15 +78,15 @@ notes* below.
- **Windows** is the development and test platform — everything in
this README was exercised here. KiCad's bundled Python is 3.13, so
the venv gets the current dependency stack.
- **macOS** — **untested** (audited only: dependency wheels, paths and
Python-version compatibility were checked, the plugin was never run
on a Mac). Requires macOS 12+ (KiCad's own minimum; Intel and Apple
Silicon — the dmg is universal). KiCad's bundled Python is **3.9**,
so pip resolves an older stack (numpy 2.0, scipy 1.13,
matplotlib 3.9, PySide6 6.9/6.10) that the plugin code is kept
compatible with. Expect plot and dialog windows to open **behind**
the KiCad window (they are raised best-effort) — check the Dock if
nothing seems to appear after a solve.
- **macOS** — **works** (field-tested on KiCad 10). Requires
macOS 12+ (KiCad's own minimum; Intel and Apple Silicon — the dmg
is universal). KiCad's bundled Python is **3.9**, so pip resolves
an older stack (numpy 2.0, scipy 1.13, matplotlib 3.9,
PySide6 6.9/6.10); the plugin code is kept 3.9-compatible (guarded
by a test) and the suite is also run against that older stack.
Plot and dialog windows may open **behind** the KiCad window (they
are raised best-effort) — check the Dock if nothing seems to appear
after a solve.
- **Linux** — **untested** (audited only, same caveat). The venv uses
the system Python (3.9+), so the stack matches your distribution.
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": [
{
"version": "1.2.2",
"version": "1.3.0",
"status": "stable",
"kicad_version": "10.0",
"runtime": "ipc"
+1 -1
View File
@@ -3,7 +3,7 @@
# the dependency list there in sync with [project.dependencies].
[project]
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)"
license = "GPL-3.0-or-later"
requires-python = ">=3.11"
Generated
+1 -1
View File
@@ -216,7 +216,7 @@ wheels = [
[[package]]
name = "fill-resistance"
version = "1.2.2"
version = "1.3.0"
source = { virtual = "." }
dependencies = [
{ name = "kicad-python" },