Label generator: gap, position and a back side

This commit is contained in:
2026-08-21 09:09:14 -04:00
parent 5a58d33623
commit 44432c9b5a
3 changed files with 312 additions and 145 deletions

View File

@@ -10,6 +10,37 @@ ADR-007 and ADR-002.
## [Unreleased]
### Added
- **The code generator can print a back side.** A badge card is two-sided and
the generator only ever emitted one page per card. The Back side section
turns on a second page per card carrying either the same code again, a fixed
block of text, its own per-row content (CSV `back` / `backlabel`), or
nothing. Page order is a choice, because the two kinds of printer want
opposite things: **interleaved** front-back-front-back for a duplex card
printer, **grouped** all-fronts-then-all-backs for a single-sided printer
that gets its stack flipped and reloaded. Getting that backwards prints
perfectly readable cards with the wrong back on every one, which is why the
order is pinned by tests rather than by looking at the preview.
- **The gap between a code and its caption is its own control.** It was the
quiet zone doing double duty: closing up a caption meant shaving the clear
space a scanner needs, and the only way to get a code to scan was to push the
caption away from it. Quiet zone now means only the code's own margin; gap
means only the distance to the caption, and adds to the quiet zone rather
than eating into it. Every stock preset carries a gap that suits it.
- **Contents can be positioned inside the label without moving the label.**
Align and Vertical place the code and caption block anywhere on the stock,
and Content X/Y nudge it from there. The existing X/Y nudge kept its
behaviour and is now labelled Media X/Y: it moves the whole printed area, for
a printer whose origin is off, which is a different problem from composing a
label.
### Changed
- CSV parsing and page building moved out of the generator component into
`plugins/tools/frontend/labelPages.js`, where the column contract and the
two-sided page order are covered by tests.
## [0.12.0] - 2026-08-20
Printers become a property of the bay rather than of whoever last walked up to a