Signex v0.7.0
⚠️ Licensing notice (added 2026-04-29)This release contained KiCad-derived code (the
kicad-parserand
kicad-writercrates, plus the KiCad netlist exporter in
signex-output) shipped under Apache-2.0 in error. Those parts of
the codebase derive from KiCad's GPL-3.0 source and should have
been released under KiCad's reciprocal terms.From v0.9.0 onwards, KiCad I/O is moved to a separate
GPL-3.0-licensed companion tool: signex-kicad-import.
The main signex repository is Apache-2.0 clean and contains no
KiCad-derived code.See issue #62 for
context.What this means for you:
- This release remains available for historical use, but
please prefer v0.9.0 (or later) for new installations.- If you have existing KiCad project files, install
signex-kicad-import
alongside Signex Community to convert them to native
.snxsch/.snxpcbformats.- Apache consumers (embedders / redistributors) of Signex Community
Edition get a clean Apache codebase from v0.9.0 forward — no GPL
aggregation in their build closure.
Signex v0.7.0 — Validation, ERC, multi-window
The schematic-phase release. Adds ERC & validation, project-wide annotation, real multi-window architecture via iced::daemon, per-window engine/canvas, borderless chrome, and a full Signex brand rollout. Every v0.7.x sub-feature ships under this one tag — no 0.7.1 / 0.7.2 patches.
ERC & validation
- New
signex-erccrate with 11 rule kinds (run()single-sheet,run_with_project()cross-sheet) - Project-wide ERC across open, cached, and unopened sheets
- Cross-sheet BadHierSheetPin: parent pins ↔ child hier-labels, both directions
- ERC markers rendered as overlays — zero KiCad schema drift
- Messages panel with E/W/I severity pips and per-sheet cached results
- Altium-style ERC dialog + Preferences panel (per-rule Error / Warning / Info / Off grid)
ErcContextabstraction + rule metadata infrastructure- Shortcuts:
F8Run ERC,F9AutoFocus,Alt+AAnnotate,Shift+Alt+AReset & Renumber
Annotation
- Project-wide change list parsed from every sheet in the project
- Altium two-column Annotate dialog with Reset All / Reset & Renumber / Reset Duplicates
- Per-symbol lock, draggable modals
- Power-port skip in both annotation and change list
- Design → Annotation submenu matching Altium's layout
Multi-window (iced::daemon)
- Borderless main window + OS-decorated secondary windows
- Modals, tabs, and panels all detach into real OS windows
- Per-window engine:
document_state.engines: HashMap<PathBuf, Engine>— every open tab keeps its Engine loaded so undocked tabs edit independently - Per-window canvas:
interaction_state.canvases: HashMap<window::Id, SchematicCanvas>— pan / zoom / selection / render cache per window document_state.window_active_path: HashMap<window::Id, PathBuf>— each undocked-tab window can show a different tab- Canvas events routed via
CanvasEventInWindow { window_id, event } - macOS: process exits when main window closes
Editor & tools
- Lasso freehand select (Altium), bbox child-sheet hit, detached-field support
- Tab / panel drag-reorder with visual feedback
- Reorder picker polish — gray-X cursor while armed, Esc-cancel visible
- Unified gray-X placement cursor across every armed tool
- TAB-during-placement for Line / Rect / Circle / Arc / Polygon (width + fill pre-configured)
- Editable drawing Properties panel with live DrawingPreview canvas
- Stroke colour per drawing (round-trips in KiCad format)
- Erasable numeric
text_input(per-fieldStringbuffer) - Context-aware menus — Annotate / ERC / Save / Edit gated by
has_schematic/ selection - Net-colour pen — strict-hit snap, union-find flood, render-only overrides, undo stack
- Move / z-order engine commands —
MoveSymbolAbsolute,ReorderObjects(Front / Back / JustAbove / JustBelow) - Active Bar — BringToFront / SendToBack + BringToFrontOf / SendToBackOf pickers
- Reset Duplicate Designators (project-wide, undoable for open tabs)
- Arc (3-click) + Polygon (click-by-click) placement tools
Hierarchical sheets
- Double-click a sheet block → opens the child schematic
- Sheet-pin snaps to all four edges of the hierarchical sheet block
- Sheet-pin interactions + Altium label-style option
Borderless chrome & brand
- Custom title bar: wordmark + menus + drag zone + search bar + min / max / close
- Per-monitor v2 DPI manifest (no bitmap stretching on hi-DPI)
- Roboto UI font (panels / toolbars / menus / dialogs); Iosevka stays the canvas font
- Windows 11 DWM rounded corners + drop shadow via
DwmSetWindowAttribute(silent no-op on Win10 and non-Windows) - Diagonal resize hit zones (NW / NE / SW / SE) via Stack overlay — keeps content y-origin natural
- Header logo bumped 74×24 → 96×31 for readability
Icons & installer
- Signex brand SVGs (mark, wordmark, logo variants)
- Panton Bold wordmark regenerated from actual font (not fallback outlines)
- Tighter
signex-mark.svgviewBox: S fills ~97 % of icon canvas (was ~58 %) - Regenerated installer artifacts: Windows
.ico(multi-size), macOS.icns, Linux PNGs - Runtime window icon embedded via
iced::window::Icon signex.exeicon + DPI manifest embedded at build time viawinres- Pure-Python fallback for
build-icons.sh—tools/build_icons.py, no rsvg-convert / magick / inkscape needed
Refactors
signex-engine/src/lib.rssplit into semantic moduleskicad-writermigrated fromwln!string formatting to full SExpr AST (kicad-parser/sexpr_builder→kicad-writer/sexpr_render)- Named constants for PCB magic numbers;
lib_symbolunit round-trip fix - Wire rendering chains connected segments into polylines (rounded corners)
- Font-size constants corrected, hidden refs and pin-name rotation fixed
Merged-in dependencies
- v0.6.1 render fixes (font scale, pin numbers, power-ref visibility)
- v0.6.2 AST sexpr pipeline
- v0.6.3 macOS runner pin (
macos-14) - v0.6.4 per-OS installers (
.exe,.dmg,.deb,.AppImage) - Node.js 24 Actions bump
Performance
expand_to_netis nowO(N)via quantisedHashSet(wasO(P²·N²))
Installers
| Platform | Artifact |
|---|---|
| Windows x64 | signex-setup-x86_64-0.7.0.exe |
| Windows ARM64 | signex-setup-aarch64-0.7.0.exe |
| macOS Apple Silicon | signex-macos-aarch64-0.7.0.dmg |
| Linux (Debian / Ubuntu) | signex_0.7.0_amd64.deb |
| Linux (distro-agnostic) | Signex-0.7.0-x86_64.AppImage |
| Portable Windows | signex-windows-{x86_64,aarch64}-0.7.0.zip |
| Portable Linux | signex-linux-x86_64-0.7.0.tar.gz |
SHA-256 checksums: SHA256SUMS.txt.
Full Changelog: v0.6.4...v0.7.0