Releases: nMoncho/faradn
Releases · nMoncho/faradn
Release list
v1.0.0-RC2
chore: add visual reference for the two hardware tests we've
v1.0.0-RC1
Features
- ffi add C, Python, and Rust examples (b6538 Gustavo De Micheli)
- core add support for italics (5bc05 Gustavo De Micheli)
- core support multiple fonts, coming from the capabitilies db, instead of from the hardcoded list (6924b Gustavo De Micheli)
- core support colspan and styles on tables (eafd0 Gustavo De Micheli)
- core use only CodePages supported by the loaded profile, not the hardcoded list (cfcc5 Gustavo De Micheli)
- core load
PrinterProfilefrom capabilities database (a0133 Gustavo De Micheli) - core generate capabilities configuration file from
github.com/receipt-print-hq/escpos-printer-dbwith a script (ba957 Gustavo De Micheli) - core switch code pages on the fly during the print job (59769 Gustavo De Micheli)
- core align table cell content (798d4 Gustavo De Micheli)
- core preserve whitespace on
<pre>elements (4d4de Gustavo De Micheli) - core render list markers on list elements (6f066 Gustavo De Micheli)
- core add configuration options for barcodes and QR codes, such as height and HRI position (46288 Gustavo De Micheli)
- core send a status-read as pre-flight with timeout (dfeef Gustavo De Micheli)
- cli list usb devices with a vendor name, if exists in
vendors.conf(20bda Gustavo De Micheli) - core implement pure Java PNG decoder so images can be print with binary (7a9c3 Gustavo De Micheli)
- include Windows binary and FFI (eb428 Gustavo De Micheli)
- add Foreign Function Interface (ffi) so the project can be embedded in other languages, such as C or Rust (8fba2 Gustavo De Micheli)
- build CLI with GraalVM (47efb Gustavo De Micheli)
- add remaining blocks, like Image, QR, BarCodes (897c0 Gustavo De Micheli)
- introduce
Transportas a way to parametrize where the printer is located (ca744 Gustavo De Micheli) - render e2e ticket on real hardware (01b1f Gustavo De Micheli)
Bug Fixes
- update release workflow (ebeda Gustavo De Micheli)
- core fix failing tests on paper-cut at end of job (8b304 Gustavo De Micheli)
- core avoid double cutting if job already has a cut (9d5b4 Gustavo De Micheli)
- cli update GraalVM JNI and Resource configuration to actually be able to print with binary (cc809 Gustavo De Micheli)
- update CI matrix to use the latest macOS intel-base variant
macos-26(79b02 Gustavo De Micheli)
Dependency updates
- bump softprops/action-gh-release from 2 to 3 (a44a4 dependabot[bot])
- bump actions/setup-java from 4 to 5 (95a2b dependabot[bot])
- bump actions/checkout from 4 to 7 (2099b dependabot[bot])
- bump the maven-dependencies group with 21 updates (1d903 dependabot[bot])
Other changes
Update README: architecture, supported HTML, honest status and roadmap
- Documents the pipeline (HTML -> DOM -> Block IR -> renderer), the
- supported tags/CSS/barcode markup with their printer effects, and a
- roadmap reflecting the plan (renderer, word wrap, character-grid
- tables, code pages, capability database, raster fallback).
- Also fixes the usage example: Printer.of("") never existed; the API
- is Printer.from(vendorId) returning Optional. Document.of -> from too.
- Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
d9941 Gustavo De Micheli 2026-07-09 16:56:03
Cover Utils.findStyleValue and IR construction rules with unit tests
- UtilsTest pins down the style-declaration parser: values with and
- without trailing semicolons, multiple declarations, whitespace
- tolerance, case-insensitive property names, whole-name matching
- (text-decoration vs text-decoration-line), and malformed declarations.
- BlockValidationTest asserts every IR record's contract: rejected null
- or empty components, Paragraph's defensive copy and immutable runs,
- Barcode's symbology default, and Feed's positive line count.
- Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
f2d79 Gustavo De Micheli 2026-07-09 16:55:01
Test the IR: ComputedStyle resolution and HTML-to-Block translation
- ComputedStyleTest covers tag defaults, CSS overrides (including
- font-weight: normal beating <b>), no-op italic identity, inheritance,
- size validation, and a regression for style attributes without a
- trailing semicolon.
- BlockBuilderTest asserts HTML-to-IR as plain objects: run splitting
- and merging, whitespace collapsing, block boundaries (<br>, <hr>,
- block tags), alignment inheritance, style unwinding, and barcode
- subtree consumption. The existing HTML resources (paragraph, ticket01,
- barcode) now serve as golden IR tests instead of println drivers.
- Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
f1f71 Gustavo De Micheli 2026-07-09 13:52:20
Add BlockBuilder: HTML to IR translation with an explicit style stack
- Walks the body with a jsoup NodeVisitor and a Deque<ComputedStyle>:
- push the combined style entering each element, pop leaving it. This
- replaces the statesByElement map + parent-walking rollback of the old
- visitors with symmetric push/pop.
-
- Block-level tags, <br>, <hr>, <img> and barcodes flush pending
- inline runs into a Paragraph; alignment comes from the first run's
- computed style
-
- Barcodes are recognized both as a <bar-code> element and as the
- bar-code BEM class used by the existing test resources, with the
- symbology taken from the symbology attribute or bar-code--<name>
- modifier class
-
- Whitespace is normalized HTML-style: runs collapse to one space,
- spaces at block boundaries drop, and inter-run separators attach to
- the preceding run so styled runs don't start with invisible styled
- characters
-
- Consecutive runs with identical styles merge
- Document gains blocks(), the IR entry point renderers will consume.
- Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
f00e0 Gustavo De Micheli 2026-07-09 13:50:51
Add the IR: sealed Block hierarchy with style-resolved text runs
- The intermediate representation between the jsoup DOM and printer
- bytes. ESC/POS is line-oriented, so the IR is a flat List<Block>
- rather than a box-model tree:
-
- Paragraph: inline TextRuns + block-level alignment
-
- ImageBlock, Barcode (from the <bar-code> custom element)
-
- Rule, Feed, Cut
- TextRun carries text plus a fully resolved ComputedStyle, so renderers
- only diff consecutive runs to emit minimal state changes; no style
- inheritance or events survive into the IR. Tables are a future Block
- subtype and should not require touching any of these.
- Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ba7b1 Gustavo De Micheli 2026-07-09 13:42:21
Add ComputedStyle: resolved, printer-realizable style model
- First piece of the new IR. An immutable record holding only properties
- ESC/POS can realize: bold, underline, width/height multiples (1-8 per
- GS !), alignment, invert. No italic on purpose - most ESC/POS printers
- have no italic command; emulation is a per-printer renderer decision.
- process(Element) computes the style entered by an element: tag defaults
- (b/strong/u/h1-h3/center) first, inline CSS (font-weight,
- text-decoration, text-align) second, so CSS wins over tags. Returns
- 'this' when nothing changes so transitions are detectable by identity.
- Supporting fixes:
-
- Utils.findStyleValue: the regex required a literal ';' after the
- value ([;$] is a character class, not an end anchor), so
- style="text-align: center" without a trailing semicolon never
- matched. Replaced with a declaration split.
-
- formatter-maven-plugin 2.18.0 -> 2.23.0 and eclipse-formatter.xml
- co...