Output jobs and releases

Named output jobs and gated releases with a version stamp, notes and a zip.

An output job is a named list of output steps kept in the .kicad_pro (softforge.outputJobs). Without your own, a project has fab (Gerbers, drill), assembly (position files, BOM, an assembly PDF of F.Fab and B.Fab with the outline), docs (documentation set and one board PDF with a page per layer), panel (the panel’s outputs), webviewer (the static web viewer folder) and all (every output, the web viewer included). Step kinds: gerber, drill, position, bom, pdfSch, pdfPcb, svg, dxf, step, glb, odb, ipc2581, ipcd356, netlist, docset, panel, reqReport, webviewer (the web viewer folder; skipped with a notice when the viewer bundle is missing) and custom (a shell command with ${board}, ${schematic}, ${out} placeholders, or a registry command id with args). File names follow a template, ${project}-${version}-${kind} by default (also ${job}, ${date}, ${variant}); a job writes into its own folder, manifest.json lists every file with its size and SHA-256, and zip: true packs the folder. Run a job from the Plot dialog’s Output jobs section (pick, Run, progress, Open folder) or with edsnx jobs run fab --out out.

Electronics Designer: Release… opens the Release dialog: the version (the next patch is suggested), the checks gate — ERC, DRC (errors and unrouted), requirements, a DFM profile, test access %, panel DRC and a clean git working tree — each ✓ or ✗ with its detail, the output jobs to run and their contents, and Notes. Fix gate opens the first failing check; Release (tag v…) is enabled when the gate passes (or with Force). A release:

  1. stamps the version: the REVISION text variable (title blocks show it as ${REVISION}), softforge.release.version in the .kicad_pro, and every drawing of the project: the board, every schematic sheet (the hierarchy and the other sheets of the folder), the documentation sheets of *.kicad_doc.json and the generated panel boards. A file with a title block gets its rev; a file without one gets a plain Rev <version> text (board: on F.Fab under the outline’s lower-left corner; sheet: the page’s lower-left corner), replaced by the next release. release.json lists each file and how it was stamped (stamps);
  2. runs the jobs into releases/<version>/ (by default fab, assembly, docs and webviewer);
  3. writes release-notes.md: the commits since the last v* tag, the board changes against that tag (the review diff: added, removed, moved, changed items), the gate table and the outputs, with a link to the web viewer’s index.html first. It is plain Markdown: edit it afterwards;
  4. writes release.json and <project>-<version>.zip with everything;
  5. with Commit stamped files (--commit, off by default) commits the stamped files (.kicad_pro, board, schematics, panel boards) as “Release ”, and with Tag (--tag) runs git tag -a v<version> (git errors are reported). Without --commit the stamped files stay modified in the working tree, so the tag points at the commit before the stamp and the next release’s git gate fails until you commit them. The releases/ folder is never committed: add it to .gitignore or commit it yourself.

The Project view lists releases under Releases (notes, package, job folders).

sh
edsnx release plan --version 1.4.0 --gate drc,erc,dfm:jlcpcb-4,git   # the gate only, nothing written
edsnx release run --version 1.4.0 --jobs fab,assembly,docs,panel --gate drc,erc,dfm:jlcpcb-4 --commit --tag
edsnx release list
edsnx jobs list

Gate tokens: erc, drc, req, dfm (active profile) or dfm:<profile>, test:<min %>, panel, git, none. A failing gate refuses the release and names the failing entry; --force releases anyway.

Documentation for Electronics Designer 2.3.60.