Design files

The native .design.* files: opening, the compatibility cache for KiCad projects, migration and consolidation.

The Electronics Designer’s own format (.design.prj / .sch / .pcb / .sym / .fp / .doc / .panel / .req, reference docs/design-file-format.md) keeps the document and, after it, one line per edit: who, when and what. The editors work on it in two ways.

Opening a design file. Click a .design.pcb, .design.sch, .design.sym, .design.fp or .design.panel in the Explorer (or the Project view’s Design files node): it opens in the board, schematic, symbol, footprint or panel editor. A .design.doc opens read-only (its sheets and views); the .design.prj opens as JSON, validated against the shipped schema like every design file opened as text. Every edit appends an event to the file’s list: Ctrl+Z / Ctrl+Y move a cursor in that list (redo keeps the undone events until you make a new edit), and Ctrl+S appends the new lines, so a save is quick on any board and a git diff shows the edits one per line. Undoing past the last save and saving again rewrites the file whole. Electronics Designer: Create Baseline names the current state (an event too, one undo step).

KiCad projects: compatibility mode. A KiCad file of a KiCad project (a folder with a .kicad_pro) stays the file you edit and save. Next to it the Electronics Designer keeps a design cache, blinky.design.pcb beside blinky.kicad_pcb:

  • on open the KiCad file is imported (in memory; nothing is written). When the cache is in step it is reused; when the KiCad file changed outside the Electronics Designer the differences become events of the cache (marked as a resync), so the history is kept;
  • each edit becomes an event of the cache as well;
  • on save the KiCad file is written as before, then the cache (and the .design.prj for the project settings).

What the importer could not map (nodes kept as KiCad text, files outside KiCad’s own layout, 3D models left as a path) is listed in the Problems view and in a banner of the editor, once. softforge.edsnx.design.compatibilityCache: false turns the cache off; the KiCad files are untouched either way.

Migrating a project. Electronics Designer: Migrate Project to Design Files (Explorer or Project view context menu on a .kicad_pro, or edsnx design migrate blinky/ from a shell; --dry-run shows what would be written) gives every KiCad file of the folder its design file, keeping the history of a cache that is in step. The design files become authoritative: the Project view’s Schematic and Board nodes open them, and the KiCad files become an export target, written from the design files on every save so KiCad, kicad-cli and the fabrication outputs keep working. Electronics Designer: Open Design File (editor title bar) opens the design file behind the active KiCad editor. A KiCad file of a migrated project opened in the editor says so in a banner. Commit before migrating: it writes new files.

Consolidating. Electronics Designer: Consolidate Design File folds the list into the document: the file restarts with one consolidate record, the document saved first and its undo history cleared. It also runs on save once the list is longer than softforge.edsnx.design.consolidateAfter events (5000; 0 turns it off). edsnx design consolidate <file> does the same from a shell, and the agent session has session.consolidate and session.baseline.

softforge.edsnx.design.author sets the name recorded as by (default: the OS user name).

Documentation for Electronics Designer 2.3.60.