Skip to content

Signex v0.7.0

Choose a tag to compare

@github-actions github-actions released this 22 Apr 12:46

⚠️ Licensing notice (added 2026-04-29)

This release contained KiCad-derived code (the kicad-parser and
kicad-writer crates, 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 / .snxpcb formats.
  • 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-erc crate 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)
  • ErcContext abstraction + rule metadata infrastructure
  • Shortcuts: F8 Run ERC, F9 AutoFocus, Alt+A Annotate, Shift+Alt+A Reset & 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-field String buffer)
  • 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.svg viewBox: 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.exe icon + DPI manifest embedded at build time via winres
  • Pure-Python fallback for build-icons.shtools/build_icons.py, no rsvg-convert / magick / inkscape needed

Refactors

  • signex-engine/src/lib.rs split into semantic modules
  • kicad-writer migrated from wln! string formatting to full SExpr AST (kicad-parser/sexpr_builderkicad-writer/sexpr_render)
  • Named constants for PCB magic numbers; lib_symbol unit 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_net is now O(N) via quantised HashSet (was O(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