Important
The tracespace project is on an ✨indefinite hiatus✨, because I (@mcous):
- Haven't designed a PCB myself in years, so it's really hard to maintain my interest.
- No longer think JS nor SVG are the correct tools for the job of rendering PCBs on the web.
- Don't get paid to work on tracespace, nor do I have the energy/desire to seek out such sponsorship.
For these reasons, tracespace v5 is likely dead in the water, especially considering I've soured on the fundamental technical approach. I will not be taking tracespace v4 offline, but I will not be opening nor accepting new PRs for v5. See the main branch for the source code for the v4.
Since I'd like to jealously guard my ability to come back to this project at a future date with a wildly different approach, I am not interested in seeking new maintainers nor passing this project off to anyone else. Please fork the project if you're interested in taking tracespace forward in your own way! I'm happy to link to any forks here.
Welcome to tracespace v5! This version of tracespace is still in development, so documentation may not be accurate and package APIs may change without warning.
See the main branch for the current v4 release.
package | description | |
---|---|---|
@tracespace/cli | Use Gerber/drill files to create an SVG render of a finished PCB from the command line. | |
@tracespace/core | Use Gerber/drill files to create an SVG render of a finished PCB in Node.js or the browser. | |
@tracespace/fixtures | Sample Gerber/drill files for use as test fixtures. | |
@tracespace/identify-layers | Try to guess Gerber files' layer types based on filenames. | |
@tracespace/parser | Parse Gerber/drill files into abstract syntax trees. | |
@tracespace/plotter | Plot @tracespace/parser ASTs into image trees. | |
@tracespace/renderer | Render @tracespace/plotter image trees as SVGs | |
@tracespace/xml-id | XML element ID generation and sanitation utilities. |
I work on tracespace in my free time, so this roadmap should be taken with several grains of salt. While the new version is in development, pre-production versions of libraries will be periodically released under the next
tag in npm.
- New build tools based on vite and TypeScript
- Create @tracespace/parser package to generate unist abstract syntax trees
- Replaces gerber-parser from tracespace v4
- Create @tracespace/plotter package convert ASTs to image trees
- Replaces gerber-plotter from tracespace v4
- Create @tracespace/renderer package convert image trees to hast SVG trees
- Replaces gerber-to-svg from tracespace v4
- Rename whats-that-gerber to @tracespace/identify-layers
- Create @tracespace/core package to hold the core render pipeline
- Replaces pcb-stackup and pcb-stackup-core from tracespace v4
- Rewrite @tracespace/cli to use new render pipeline
- Rewrite https://tracespace.io/view/ to use new render pipeline
- Build documentation website for tracespace libraries
- Ensure all important Gerber / drill features are supported
- Release tracespace v5
The v5 release will attempt to fix / address the following open issues:
- Handle disagreements between filename type vs parsed type (#49)
- Reduce number of
<use>
tags in SVG output (#80) - Arc plotting should be more lenient (#82)
- Operation with non-existent tool should no-op with a warning (#83)
- Fails to detect units if format spec combined with units spec (#234)
- clipPath for outline breaks in Firefox if outline has clear layers (#302)
- gerberParser.parseSync clobbers filetype option (#306)
- Gerber file starting with newline incorrectly identified as drill file (#307)
- Generate consistent document size for all layers. (#324)
- G93 code in drill file rendered as drilled hole (#353)
- Allow soldermask layer to cover vias in board render (#399)
- tracespace.io/view - A Gerber viewer powered by the tracespace libraries
- kitspace.org - An electronics project sharing site with links to easily buy the required parts
- OpenHardware.io - A social site around open source hardware. Enables authors to sell and manufacture their boards.