Skip to content

Shared dialog, backup policy, and Restore last walks to the first save - #4

Open
SomerledDesign wants to merge 18 commits into
mainfrom
cursor/m4c-dialog-slice-3529
Open

SomerledDesign wants to merge 18 commits into
mainfrom
cursor/m4c-dialog-slice-3529

Conversation

@SomerledDesign

@SomerledDesign SomerledDesign commented Nov 7, 2026 •

Copy link
Copy Markdown
Owner

Two packages

KiCad's addon guide keeps a plugin archive and a library archive separate. tools/make_pcm_zip.py now writes both. The mixed zip is not the package to install.

Install the libraries zip first, then the plugin zip, with Plugin and Content Manager > Install from File. Restart KiCad.

  1. StripForge-libraries-0.2.1-pcm.zip — type library, id com.github.somerleddesign.stripforge.libraries. sha256 d330372d6148e0802a694e74c54ab87c53b975b1de09f7e7a3e584aaffb9cdcb, 10826951 bytes.
  2. StripForge-0.2.1-pcm.zip — type plugin, id com.github.somerleddesign.stripforge, runtime ipc. sha256 7964fe70f5c66fbc5bf43fcab9cd1e02be74de5ac36a4b471d069f0b7c383f7b, 651874 bytes.

The KiCad manual says a library package is added to the global tables with the PCM_ nickname prefix by default. That was not clicked here. Check Manage Footprint Libraries and Manage Symbol Libraries. If the rows are PCM_StripForge, rename them to StripForge. If they are missing, add nickname StripForge at:

  • ${KICAD10_3RD_PARTY}/footprints/com_github_somerleddesign_stripforge_libraries/StripForge.pretty
  • ${KICAD10_3RD_PARTY}/symbols/com_github_somerleddesign_stripforge_libraries/StripForge.kicad_sym

3D models have no library table. Each straight Link_P* footprint names ${KICAD10_3RD_PARTY}/3dmodels/com_github_somerleddesign_stripforge_libraries/StripForge.3dshapes/Link_P*.step. The .wrl is the same basename beside it. That variable is the PCM location, not KICAD10_3DMODEL_DIR.

A new straight link copies the footprint, so it inherits that model. The build does not assign a model. The plugin keeps a private copy of the footprints under plugins/ so it can build without the library table. The 3D bytes are only in the libraries package. No path points at Dropbox. The model bytes are unchanged from the Dropbox zip 102cd79069ac8f684e6645be05665308aefcc18914a7a74783c134af2f2cfe6e.

Checks

Both in-zip metadata files validate against PCM schemas v1 and v2 (https://go.kicad.org/pcm/schemas/v1 and v2). Every path in both zips matches the allow-list in ci/validate/package.py of https://gitlab.com/kicad/addons/metadata. That script's full repository check also requires a download URL, which these local zips do not have, so that entry point was not run.

ruff check . and ruff format --check . passed. pytest -q: 399 passed, 8 skipped in 831.43s.

There is no KiCad here. Install from File was not clicked, and the 3D viewer was not opened. The LedSwitch25 acceptance zip is unchanged (cf5b92d393f2172d25f48329f92281ed4a41d2f8a8290fcf72f68dd8cbb09e6c, 25859 bytes). Not merged, not released, not installed.

Version stays 0.2.1.

Open in Web Open in Cursor 

SomerledDesign and others added 4 commits October 26, 2026 22:51
Everything StripForge writes goes into <project>/stripforge/; backups are
never-renamed timestamped zips (save points) pruned by backup_keep; new
Restore last plugin action and 'stripforge restore' CLI; output_dir and
backup_dir config keys; .gitignore template; docs and CHANGELOG.
…sideways

diagonal_links now defaults to false; with it on, a diagonal may move at
most max_diagonal_shift holes (new key, default 1) along the strip it
drops to. An unjoined net that a diagonal would have joined says so in
the report, with the shift needed and the setting to change. Fixture
regression tests keep their 0.2.x numbers via a diagonals-on copy of
x56.toml; new tests for the default, the one-hole shift and the hints.
StripForge: Dialog shows the saved settings, edits backup_policy, and
runs the existing actions through the same path as the toolbar. The
separate buttons stay. Default policy is move: save points are kept.
retention deletes older zips only when backup_keep is 1 or more, and a
config that only sets backup_keep does not start deleting.

Co-authored-by: somerledDesign <SomerledDesign@users.noreply.github.com>
@cursor cursor Bot mentioned this pull request Nov 7, 2026
5 of 7 tasks
cursoragent and others added 6 commits November 7, 2026 15:46
PR #3 stays the inspection note. This branch is the implementation.

Co-authored-by: somerledDesign <SomerledDesign@users.noreply.github.com>
ubuntu-latest is Ubuntu 26.04, and setup-python has no Python 3.9 there,
so the 3.9 job failed before pytest. The matrix stays 3.9, 3.11, and 3.12.

Co-authored-by: somerledDesign <SomerledDesign@users.noreply.github.com>
Origin is the centre of hole A1, not the outline corner. Save checks the
config before replacing the file and keeps comments and keys the tab does
not edit. Unsaved edits block the action buttons, so a build cannot run
on values that were only typed. The backup policy stays move unless the
Backup tab says otherwise.

Co-authored-by: somerledDesign <SomerledDesign@users.noreply.github.com>
Packaged icons and resources/icon.png have no iCCP or cHRM chunk, and
libpng 1.6.43 warns on none of the repo PNGs. Doc screenshots that do
carry an Apple Display profile are not in the PCM zip. No pixels changed.

Co-authored-by: somerledDesign <SomerledDesign@users.noreply.github.com>
Larger text, Smaller text, and Reset text size, plus Command or Ctrl
with plus, minus, and 0. The size is a per-user file, not stripboard.toml.
A trackpad pinch is applied only when wx sends a magnify or zoom gesture.

Co-authored-by: somerledDesign <SomerledDesign@users.noreply.github.com>
Each Restore last reloaded only the newest zip, so a later click unpacked
that same snapshot and the board never moved further. Step back one save
point at a time until the pre-build board, then stop without changing
files. Safety-copy the current board first and keep those copies out of
the walk.

Co-authored-by: somerledDesign <SomerledDesign@users.noreply.github.com>
@cursor cursor Bot changed the title Shared dialog and opt-in backup retention, on the M4c line Shared dialog, backup policy, and Restore last walks to the first save Nov 8, 2026
cursoragent and others added 8 commits November 8, 2026 03:18
Keep Kevin's current zip bytes as the only acceptance circuit. Tests check
the sha256, extract a fresh copy, and restore six times to that exact
board. TPI fixtures stay for unit tests. The archived toml is not rewritten.

Co-authored-by: somerledDesign <SomerledDesign@users.noreply.github.com>
Edit stripboard.toml opens the file the Board tab already uses, including
[bend], and writes the text as typed after the TOML parser and the existing
loader accept it. A bad edit or a file that changed on disk is left untouched.

Co-authored-by: somerledDesign <SomerledDesign@users.noreply.github.com>
The canonical zip stays unchanged. A disposable extract appends only
[bend] SW1 = 0.46 millimetres, then six builds and six restores return
the archived board bytes and keep every save point.

Co-authored-by: somerledDesign <SomerledDesign@users.noreply.github.com>
Keep the 53157-byte file as history. The new board still refuses to build:
SW1 is 0.920 mm off a hole, and the approved 0.46 mm bend does not cover it.

Co-authored-by: somerledDesign <SomerledDesign@users.noreply.github.com>
KiCad matches a footprint path to "/" plus the symbol uuid and reports that it cannot find a symbol for that W reference when they differ. Add links now keeps the uuid the footprint already stores, names the missing symbol and the W reference, and reads the separate build plus the project schematic when the open board has no W footprints.

Co-authored-by: somerledDesign <SomerledDesign@users.noreply.github.com>
…ugin.

KiCad extracts footprints, symbols, and 3dmodels from the package root into the third-party tree and adds the libraries. The zip now carries those directories, and each straight Link_P footprint points at a generated 0.8128 mm wire model.

Co-authored-by: somerledDesign <SomerledDesign@users.noreply.github.com>
The 32 STEP and WRL files are the current Dropbox set. Each Link_P footprint points at the matching STEP under ${KICAD10_3RD_PARTY}/3dmodels, and placing a link copies that footprint. The build does not attach a model on its own.

Co-authored-by: somerledDesign <SomerledDesign@users.noreply.github.com>
KiCad's addon guide keeps those as separate package types. The libraries package carries the footprints, the symbol, and the straight-link models, and the footprint model path uses that package's install id. The plugin keeps its private copy of the footprints.

Co-authored-by: somerledDesign <SomerledDesign@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants