Skip to content

Releases: Delta-Proto/delta-gerber

Release 1.1.3

24 Apr 11:44

Choose a tag to compare

Delta Gerber 1.1.3

Download and Run

java -jar delta-gerber-1.1.3-jar-with-dependencies.jar

Open http://localhost:938 — requires Java 17+.

What's New

Altium 25.8.1 Format Spec Compatibility

Altium 25.8.1 emits %FSAX44Y44*% without the L/T zero-suppression flag. The parser regex silently failed, leaving copper/silk/mask/outline invisible in the realistic view — only the drill layer survived.

  • L/T and A/I flags now optional in FS blocks, defaulting to L / A per the current Gerber spec, with a warning logged when missing.

Robust Outline Loop Closure

The bidirectional chaining from 1.1.2 still mis-closed outlines built from many short segments — mouse-bite teeth, V-score rails, arc-approximated polylines.

  • Must leave the tolerance ball before a close counts — prevents sub-tolerance seeds from closing on iteration 0.
  • Prefer continuation over closure when an unused segment matches at least as well as snapping back — prevents premature closure mid-chain.

Realistic PNG Thumbnails

New /api/gerber/thumbnail endpoint and public `MultiLayerSVGRenderer` API for rasterised realistic views. Intended for project-list UIs that show many boards at once, where inlining full realistic SVGs is prohibitive.

  • `POST /api/gerber/thumbnail?side=top|bottom&width=&height=` — returns an 8-bit RGBA PNG with transparent background.
  • Board-aspect-ratio output with a scaled visible margin (3% of max outline dimension, floored at 1.5 mm).
  • New API: `renderRealisticSide(layers, side[, mirrorBottom])`, `renderRealisticSidePng(layers, side, widthPx[, heightPx][, mirrorBottom])`, `rasterizeSvgToPng(svg, widthPx, heightPx)`.
  • PNG Top / PNG Bottom buttons in the bundled web viewer.

Real Bottom View in PNG Downloads

The PNG bottom view is now horizontally mirrored by default, so the download shows the real underside of the board (flipped around its Y axis) rather than the top-looking-down perspective. Callers can opt out via the 5-argument `renderRealisticSidePng` overload.

Dependency & Plugin Upgrades

All dependencies and Maven plugins refreshed to their latest stable versions — no source changes required.

  • Batik 1.19, SLF4J 2.0.17, Logback 1.5.32, JUnit Jupiter 5.14.3, and all Maven plugins current.

Full changelog: v1.1.2...v1.1.3

Release 1.1.2

23 Apr 11:42

Choose a tag to compare

Delta Gerber 1.1.2

Download and Run

java -jar delta-gerber-1.1.2-jar-with-dependencies.jar

Open http://localhost:938 — requires Java 17+.

What's New

Fragmented Outline Chaining

Board outlines drawn as D02/D01 segment pairs (notably from Altium, which writes many segments in reverse direction) previously fragmented into disconnected subpaths — only end-to-start chaining was attempted, so any segment written backwards broke the chain. The realistic renderer then clipped against a broken outline and dropped pads, silkscreen, or the entire board silhouette.

  • Bidirectional chaining — each unused segment is matched to the running head on either endpoint, reversing the segment's direction (and arc sweep) when its end matches.
  • Nearest-neighbor matching with 0.1 mm tolerance — tolerates Altium's ~50 µm gaps between straight-edge endpoints and the tangent points of adjacent corner arcs. Well below typical PCB feature sizes (≥0.3 mm drills/slots/tabs), so distinct outline features can't fuse.
  • Multi-loop outlines — outlines with cutouts (mounting holes, internal slots, keepouts) emit separate closed subpaths instead of collapsing to a single broken loop.

Full changelog: v1.1.1...v1.1.2

Release 1.1.1

20 Apr 13:13

Choose a tag to compare

Delta Gerber 1.1.1

Download and Run

java -jar delta-gerber-1.1.1-jar-with-dependencies.jar

Open http://localhost:938 — requires Java 17+.

What's New

KiCad Gerber X2 Drill Support

KiCad 9 emits drill data as Gerber X2 files with .gbr extensions (e.g. board-PTH-drl.gbr, board-NPTH-drl.gbr) instead of classic Excellon. These files were previously classified as generic "other" layers and disappeared from the realistic PCB view — holes did not punch through the board.

  • Layer-type detection reads %TF.FileFunction — the Gerber X2 attribute that declares a file as a drill/route layer is now the authoritative signal. Recognizes Plated/NonPlated/PTH/NPTH/Drill/Route tokens and maps them to DRILL_PLATED / DRILL_NON_PLATED.
  • Filename fallback for -PTH-drl.gbr, -NPTH-drl.gbr, and *drill.gbr when no content has been scanned.
  • Realistic rendererMultiLayerSVGRenderer.renderRealistic() now populates the mech-mask from Gerber-backed drill layers as well as Excellon DrillDocuments, so holes punch through all stacked layers regardless of drill file format.

New GerberDocument API

  • getFileFunctionValues() — full comma-separated list of .FileFunction values (previously only the first token was exposed via getFileFunction()).
  • isDrillFileFunction() — true when .FileFunction declares the file as a Drill or Route layer.
  • isNonPlatedDrillFileFunction() — true for NPTH drill declarations.

Full changelog: v1.1.0...v1.1.1

Release 1.1.0

23 Mar 16:26

Choose a tag to compare

Delta Gerber 1.1.0

Download and Run

java -jar delta-gerber-1.1.0-jar-with-dependencies.jar

Open http://localhost:938 — requires Java 17+.

What's New

Embeddable Library API

  • getIndexHtml(), getLayerColor(), and renderRealisticSide() are now public static — can be called directly by host applications without reflection
  • API endpoints use /api/gerber/ prefix (/api/gerber/render, /api/gerber/arduino-uno-example.zip) for clean integration with host application routing
  • HTML viewer, example ZIP, and all resources available on the classpath for host applications to serve

DeltaProto Integration


Full changelog: v1.0.8...v1.1.0

Release 1.0.8

23 Mar 13:59

Choose a tag to compare

Delta Gerber 1.0.8

Download and Run

Download delta-gerber-1.0.8-jar-with-dependencies.jar below and run:

java -jar delta-gerber-1.0.8-jar-with-dependencies.jar

Then open http://localhost:938 in your browser. Requires Java 17+.

What's New

DeltaProto-Styled Web Viewer

  • Redesigned UI matching the DeltaProto visual identity
  • Light and dark mode with OS preference detection and manual toggle
  • "Try Example" button — loads a bundled Arduino Uno board instantly, no upload needed
  • Styled scrollbars following the active theme
  • Inter font for clean, modern typography

Web Viewer Improvements

  • Select all/none checkbox with tri-state indicator
  • Top / Bot quick-filter buttons to show only one side's layers
  • Hover-to-solo — hover a layer to preview it in isolation
  • Center-truncated filenames showing start + extension (e.g., `Flowstore_HM….GTL`)
  • Instant CSS tooltips with full filename on hover

Rendering Fixes

  • Empty outline handling — realistic renderer gracefully renders without board clipping when the outline file is empty
  • Altium mechanical layer detection — `.GM`, `.GM1`, `.GM2` recognized as potential outline layers
  • Smart outline validation — disconnected corner markers (D02 >= D01) correctly rejected as non-outline

Standalone JAR

This release includes a jar-with-dependencies (1.1 MB) — a single file you can download and run. No Maven, no build tools, no setup. Just `java -jar` and go.


Full changelog: v1.0.7...v1.0.8

Release 1.0.7

23 Mar 11:18

Choose a tag to compare

Delta Gerber 1.0.7

Web Viewer Rewrite

The web viewer has been rewritten with a stateless server architecture — the browser owns file data via IndexedDB, extracts ZIPs locally, and detects layer types client-side. The server is a pure render endpoint with no caching.

New UI Features

  • View tabs: All Layers / Board Top / Board Bottom with realistic PCB rendering
  • Layer type dropdowns with auto-detection from filename and content analysis
  • Select all/none checkbox with tri-state indicator (all / some / none)
  • Top / Bot quick-filter buttons to show only one side's layers
  • Hover-to-solo — hover a layer to preview it in isolation
  • Center-truncated filenames showing both start and extension (e.g., Flowstore_HM….GTL)
  • Instant tooltips on hover with full filename
  • Recent projects stored in IndexedDB with re-open support
  • Browser-side ZIP extraction using DecompressionStream API (no external libraries)

Parser Improvements

Deprecated Gerber Command Support

  • G54/G55 deprecated aperture select prefix (very common in legacy files)
  • G70/G71 deprecated unit commands (older files use these instead of %MO...%)
  • %IP...% image polarity (warns on NEG)
  • %OF...% image offset (warns on non-zero)
  • %IN/%LN/%AS/%MI/%SF/%IR deprecated commands (safely skipped)

New Features

  • %SR...% Step and Repeat execution for panelized boards
  • %AB...% Block Aperture recognition
  • UTF-8 BOM stripping in both Gerber and Excellon parsers
  • Excellon G02/G03 arc routing mode support

Compatibility Fixes

  • Altium Designer: Mechanical layer outline detection (.GM, .GM1, .GM2)
  • Smart outline detection: Empty files and disconnected corner markers correctly rejected
  • Empty outline fallback: Realistic renderer gracefully handles empty outline files instead of producing invisible output

Realistic Rendering Fixes

  • ViewBox now uses outline bounds instead of global bounds for tighter framing
  • Realistic renderer always uses its own hardcoded PCB colors (ignores layer display colors)
  • Soldermask opacity fixed to 0.75 (was incorrectly inheriting 0.85 from layer overlay view)

Visual Test

  • 12 new test cases covering deprecated G-codes, image polarity, offset, Step and Repeat, and UTF-8 BOM
  • Total: 127 visual test cases across 15 sections

Full changelog: v1.0.6...v1.0.7

Release 1.0.6

20 Mar 14:14

Choose a tag to compare

Changes

  • OC8 octagon aperture support — The parser now recognizes OCn aperture types (used by EAGLE for octagonal pads). It creates a PolygonAperture with n vertices and correct rotation so a flat edge is at the top, matching EAGLE's convention.
  • Realistic PCB rendering and interactive web viewer — New MultiLayerSVGRenderer.renderRealistic() method produces physically accurate top/bottom PCB views with proper layer stacking (FR4 substrate, copper, soldermask, silkscreen, drill holes). Includes a built-in HTTP server (GerberViewerServer) serving a single-page web app with pan/zoom, layer toggling, and ZIP file upload.
  • Coordinate format fix for large mm coordinates — Fixed parsing of Gerber files with large millimeter coordinate values.

Maven

<dependency>
    <groupId>com.deltaproto</groupId>
    <artifactId>delta-gerber</artifactId>
    <version>1.0.6</version>
</dependency>

v1.0.5

19 Mar 11:31

Choose a tag to compare

What's New

Cadence Allegro Support

Added support for parsing Gerber and drill files exported from Cadence Allegro, which use several non-standard extensions:

  • Drill files: Tool definitions via ;Holesize comments, M00 as tool separator, and repeat codes (R02X...) are now parsed correctly
  • Gerber files: Fixed a 25.4x scale error when %FSLAX25Y25*MOIN*% was treated as a single command, causing the MOIN (inches) unit declaration to be silently dropped

Maven Central

Available at:

<dependency>
    <groupId>com.deltaproto</groupId>
    <artifactId>delta-gerber</artifactId>
    <version>1.0.5</version>
</dependency>

Full changelog: v1.0.4...v1.0.5

Release 1.0.4

27 Feb 08:13

Choose a tag to compare

Delta Gerber 1.0.4

Changes

Gerber Format Spec Improvements

  • Trailing zero suppression support: Fixed the %FS directive regex to properly parse both leading (L) and trailing (T) zero suppression modes, as well as absolute (A) and incremental (I) notation. Previously only leading zero suppression was supported.

MM Normalization at Parse Time

  • All Gerber coordinates and aperture dimensions are now normalized to millimeters during parsing, matching what the Excellon drill parser already does. This ensures consistent units across all document types for rendering, DRC, and metric calculations.
  • Macro aperture primitives receive a unitFactor so dimensional parameters (diameters, widths, coordinates) are scaled to mm while angular and count parameters are preserved.

Modal D-Code Support

  • Fixed silent data loss for coordinate-only Gerber lines: The parser now correctly handles modal D-codes (D01/D02/D03). Coordinate statements without an explicit D-code reuse the last active D-code, matching the RS-274X specification. This fixes rendering of text strokes and other complex line sequences.

Other

  • Removed bundled logback.xml — libraries should not ship logging configuration.

Maven

<dependency>
    <groupId>com.deltaproto</groupId>
    <artifactId>delta-gerber</artifactId>
    <version>1.0.4</version>
</dependency>

Release 1.0.2

20 Feb 11:11

Choose a tag to compare

Fixes

  • Normalize Excellon drill coordinates and tool diameters to mm at parse time. Drill files using inch units had their coordinates and tool diameters stored in raw inches while Gerber layers use mm, causing drill holes to appear misaligned and 25.4x too small when rendered alongside Gerber layers in the multi-layer SVG viewer.