Repository navigation
Freshcoat v0.4.0 — CLI, vector PDFs, and live booleans
Freshcoat 0.4.0 adds a command line for rendering templates and exporting workspaces, vector PDF output, and live boolean operations. It also brings a unified renderer API, more drawing and text features, and improvements to Studio's data editing and export workflow. This release includes changes since v0.3.0.
Highlights
- The
freshcoatCLI: render a template, render once per spreadsheet row, or run a workspace export preset to images, ZIPs, or PDFs. Validate and inspect templates and workspaces, pack portable templates, and use JS/TS modules to generate templates. Exports support worker threads, dry runs, a font cache, and record statuses for retrying failures. (#176, #180–#186, #198) - Vector PDFs: keep supported shapes, strokes, gradients, and text as vectors, with embedded TrueType/OpenType fonts and selectable text. Effects that need raster output use the existing CanvasKit painter and report a warning. Font subsetting and sharing across pages reduce file size; non-ASCII text extraction is fixed. (#179, #195, #199)
- Live booleans: union, subtract, intersect, and exclude retain editable operands, including nested booleans. Results follow edits, visibility, variants, and resizing. Figma imports preserve supported boolean operations, including rectangles with uniformly rounded, smoothed corners; unsupported combinations flatten with a diagnostic. (#190, #194, #196, #200, #204)
- More drawing and typography: procedural pattern fills, backdrop blur, text along circles and arbitrary paths, gradient and trimmed strokes, rounded vector corners, SVG filters, and improved radial gradients and text decorations. (#117–#119, #129–#139)
- More reliable rendering: corrected blend/effect composition, group isolation and mask coverage, software fallback when WebGL creation fails, missing-character preflight, and lower memory use and repeated work in text, SVG, painting, and large exports. (#103–#116, #125, #128, #188, #192, #193, #197)
Freshcoat Studio and Figma
- Spreadsheet-style data editing adds block copy/paste, fill down, bulk values, find/replace, and column filters. Dataset view state survives section changes. (#150)
- Sized variants, selection by photo shape, and per-record photo framing make templates adapt to different images. Variant dropdowns and fallback choices simplify dataset bindings. (#140, #160)
- Image placeholders and image-field bindings, field pickers and autocomplete, improved pen and vector-point editing, canvas context menus, and safer undo, deletes, and drops improve design work. (#143, #146, #151, #157, #187)
- Recent-workspace thumbnails, clearer import issues, revised export settings, export-job visibility and recovery, and printer-profile measurement from a photo improve the workflow from import to print. (#141, #142, #145, #147–#149)
- Figma boolean colorways now track operand changes, and Studio's variant hit-testing, operand snapping, and saved boolean caches are corrected. (#200)
SDK migration
This minor release includes public API changes:
- Use
createRenderer({ ck, fonts, load, ... })to own rendering resources, and choose encoded bytes, pixels, or canvas output per render. Load CanvasKit through@freshcoat-js/engine/nodeor@freshcoat-js/engine/browser. - Replace coatfile's
render(template, values, options, runtime)withrenderTemplate(renderer, template, values, options).renderCompiledalso takes the renderer first. - The engine's
headlessandruntimesubpaths and coatfile'sheadlessandbrowsersubpaths are removed, along with the old environment/runtime assembly APIs. - Barcode encoding is part of
compile(). Remove encoder registration; useencodeBarcodefrom@freshcoat-js/coatfilewhen encoding directly. The oldcoatfile/barcodesubpath and encoder registry are removed. Template frames now exposeFrameWarning[], combining paint, compile, and print warnings.
See the 0.4 migration guide for replacements and before/after examples.
The coatfile format advances to 1.6, independently of package versions. Existing templates remain readable; older applications can drop new fields when re-saving newer files. Workspace archives using variant fallback are written as format 1.1. Apple Numbers (.numbers) import is no longer supported; CSV/TSV, Excel, and OpenDocument spreadsheet import remain available.
Packages and downloads
The engine, for-print, coatfile, workspace, CLI, and Figma plugin share version 0.4.0. Workspace and CLI join the npm release set in this release.
npm install -g @freshcoat-js/cli@0.4.0
freshcoat render card.coat --set displayName=Alex --out out
freshcoat render club.coatworkspace --preset "All cards" --out cards.zipFor SDK usage, install the packages your application needs:
npm install @freshcoat-js/engine@0.4.0 @freshcoat-js/for-print@0.4.0 @freshcoat-js/coatfile@0.4.0 @freshcoat-js/workspace@0.4.0Downloads include five npm package tarballs and freshcoat-figma-plugin-0.4.0.zip. To install the Figma development bundle, extract the ZIP and import its manifest.json in Figma desktop.
Full changelog: v0.3.0...v0.4.0
