Skip to content

Releases: minlux/dymon

v2.5.0

Choose a tag to compare

@github-actions github-actions released this 01 Jul 03:58

USB Printer Discovery (Windows)

Both dymon_srv and dymon_pbm now accept --usb discover on Windows.
It lists all USB printers registered with usbprint.sys, showing the
friendly name, device path, and the exact --usb argument to use.
Useful for diagnosing USB connectivity issues when the printer is not found.

Fix USB Printer Usage (Windows)

dymon_srv --usb vid_XXXX was always failing with "Can't find any USB
connected DYMO" due to a stale &argv[1][4] left over from before the
argtable3 refactor. The correct dev variable (from argUsb->sval[0])
is now passed to usbprint_get_devicename. dymon_pbm was unaffected.
error: no signature found

v2.4.0

Choose a tag to compare

@github-actions github-actions released this 24 Jun 06:46

Changelog

V2.4.0

Synchronous operation

dymon_srv now processes POST /labels and POST /pbm synchronously.
Requests block until printing completes and the HTTP response reflects the
actual outcome of the operation.

Meaningful HTTP status codes

  • 200 OK — label(s) printed successfully
  • 503 Service Unavailable — printer could not be reached (connect failed)
  • 500 Internal Server Error — printer was reached but print job failed mid-way

The JSON response body mirrors the status:
{"status":"OK"}, {"status":"Service Unavailable"}, {"status":"Internal Server Error"}

Printer reachability test (ping)

New test requests allow callers to check whether a printer is available
without actually printing anything:

  • POST /labels with body [{}] or [{"ip":"<address>"}] (no "text" field)
  • POST /pbm with an empty body

Both return 200 if the printer is reachable, 503 if not.

Internally this uses a new Dymon::ping() method implemented in the base
class, which does a connect + immediate disconnect with no side effects.
It works across all backends (network, USB, file) without any per-class
changes.

v2.3.1

Choose a tag to compare

@github-actions github-actions released this 18 Jun 06:01

Changelog

V2.3.1

Hostname support for --net and POST /labels

The --net option now accepts hostnames (e.g. my-printer.local) in addition
to IP addresses. Previously only dotted-decimal IP addresses were accepted.
The same applies to the "ip" property of JSON objects sent to POST /labels
on dymon_srv — hostnames are resolved there as well.
Internally, inet_addr() was replaced with getaddrinfo() in both the Linux
and Win32 network backends, enabling DNS/mDNS resolution before connecting on
port 9100.

macOS support

  • Fixed the build on macOS (Linux sources are used, Apple Clang compatibility).
  • Added macos-setup.sh: a setup script that auto-installs Xcode Command Line
    Tools, Homebrew, and CMake, then builds the project and runs a mock print
    test end-to-end.

Addon: Deutsche Post Internetmarke (addons/briefmarke/)

New Python helper script extract_datamatrix.py that extracts the DataMatrix
code from a Deutsche Post Internetmarke PDF and converts it to a P4 PBM file.
The resulting PBM can be printed directly with dymon_pbm, effectively
printing a postage stamp on a label.

v2.3.0

Choose a tag to compare

@github-actions github-actions released this 26 Mar 15:27

V2.3.0

First tagged release.

Automated Windows builds via GitHub Actions

A GitHub Actions workflow (.github/workflows/release.yml) was introduced.
Pushing a v* tag now automatically cross-compiles Windows x64 binaries
(dymon_pbm.exe, dymon_srv.exe, txt2pbm.exe) using MinGW-w64, packages
them into dymon-windows-x64.zip, and publishes a GitHub release with the
zip attached as a download asset.

Key features at this release

  • dymon_srv HTTP print server with POST /labels (JSON) and POST /pbm
    (raw or base64 P4 PBM) endpoints; accepts a single object or array of objects.
  • txt2pbm tool to convert formatted text (with markup) into a P4 PBM file.
  • dymon_pbm tool to print a P4 PBM file directly from the command line.
  • --dir flag on dymon_srv to write labels as PBM files to a directory
    instead of printing (useful for testing without hardware).
  • meta field in POST /labels payload, stored as a PBM comment when using
    --dir mode.
  • LabelWriter 450 support via --model 450.
  • /wpm proxy endpoint to reach the REST API from an HTTPS context via
    window.postMessage.
  • OpenAPI description of the REST endpoints (doc/dymon_srv.yaml).