@@ -7,6 +7,94 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77
88## [ Unreleased]
99
10+ ## [ 0.2.0] ( https://github.com/KarpelesLab/anydcode/compare/v0.1.4...v0.2.0 ) - 2026-09-18
11+
12+ ### Other
13+
14+ - read the fixed patterns before paying for a whole grid
15+ - imgproc, image: primitives survive absurd sizes, radii and non-finite geometry
16+ - sampler believes a rune only if the whole 11x11 grid is that rune
17+ - sampler checks the solid edge columns before sampling a grid
18+ - bounded fiducial flood; aztec, microqr, rmqr: stop flooding the page
19+ - imgproc, aztec: bound finder/bullseye hit clustering on textures
20+ - analyse the symbol under a mask of its own quad
21+ - bars at 45 degrees are not finder patterns
22+ - noise- and shift-tolerant hint matching; docs
23+ - live path: regression tests; UPC-E vote floor; Aztec blank-region reads
24+ - pipeline, detect: read stacked codes from linear regions; grow matrix boxes
25+ - demo, wasm, scan1d: reliable live decode loop; axis refinement
26+ - qr, appclip: stop paying for false hypotheses on code-free frames
27+ - try the largest few dark components as the symbol
28+ - rotation-normalised box fill; liveeval diagnostics
29+ - orientation-aware locator with local binarization
30+ - expand macro codewords on decode; canonical mask for no-op forcing
31+ - corner-forced masks and Reed-Solomon error correction
32+ - fix decoder overflow panic and encoder silent truncation
33+ - reject out-of-range metadata instead of panicking
34+ - make numeral and byte modes conform to AIMD014
35+ - fix 144x144 Reed-Solomon block interleave
36+ - reject unsupported layer counts; add fuzz, capacity and RS tests
37+ - decode latched Punct mode and FLG(n) escapes
38+ - fix orientation marks to the ISO/IEC 24778 pattern
39+ - exhaustive Text sub-mode transition round-trip test
40+ - no-panic fuzz for Code 49 and Codablock F payload reconstruction
41+ - decode Numeric Encodation
42+ - a single-row Expanded Stacked symbol is the linear symbol
43+ - code16k, codablockf: honour FNC4 extended ASCII when decoding
44+ - use the Code 16K pattern 211133 for symbol value 106
45+ - implement Expanded encodation methods 3-14
46+ - reject Omnidirectional/Limited values beyond the GTIN range
47+ - enforce the 928-codeword symbol limit when choosing a geometry
48+ - deterministic no-panic fuzz for the stacked and DataBar decoders
49+ - decode the 913 byte shift inside Text compaction
50+ - reject a truncated Expanded method-1 header instead of panicking
51+ - decode modes 5/6 as set C with implied Shift B
52+ - scan1d, pipeline: scan along any axis; band-averaged profiles
53+ - treat M1's EC codewords as detection-only
54+ - reject undefined mode indicators instead of truncating
55+ - qr, rmqr: reject ECI assignment numbers above 999999
56+ - cross-check EC-block, alignment and remainder tables in a test
57+ - make mask penalty rule 4 symmetric about 50% dark
58+ - report content errors instead of retrying every format
59+ - support ECI; report FNC1 symbols as unsupported, not empty
60+ - deterministic no-panic fuzzing for QR, Micro QR, rMQR and Han Xin
61+ - qr, microqr, rmqr: reject Kanji trail bytes that alias another character
62+ - microqr, rmqr: keep empty segments; reject invalid numeric groups
63+ - reject numeric groups that are not valid decimal numbers
64+ - reject out-of-range numeric groups instead of panicking
65+ - pad M1/M3 with 0xEC/0x11 codewords per ISO/IEC 18004
66+ - scan1d, pipeline: segment scanlines into spans; accept 1D reads by consensus
67+ - deterministic no-panic / re-encodable sweep over linear and postal decoders
68+ - validate the termination bar
69+ - apply FNC4 (extended ASCII) when reconstructing the payload
70+ - decode rows cropped to their last bar
71+ - itf, codabar, twoof5: bound wide elements and require narrow 2-of-5 spaces
72+ - code39, code11: decode symbols printed at up to a 3:1 wide: narrow ratio
73+ - use the standard two-module gap for one-track symbols
74+ - reject POSTNET/PLANET/RM4SCC layouts with no data character
75+ - reject an unparseable customer information field
76+ - only accept canonical intermediate fields
77+ - reject out-of-range post code values instead of panicking
78+ - reject out-of-range codewords instead of panicking
79+ - reject non-BCD bit groups and payload-less rows on decode
80+ - check the all-codes decode-only and scan-only slices too
81+ - reject surplus positional arguments
82+ - scale resamples the edge instead of whitening the border
83+ - decode_payload requires the color stream
84+ - refuse PNGs that declare gigantic dimensions
85+ - do not panic when stdout is closed early
86+ - align CLI list text, README 1D note and doc comments with the code
87+ - MatrixBuf::new reports overflowing dimensions as a capacity error
88+ - composite PNG alpha over white before scanning
89+ - reject absurd --scale instead of panicking or exhausting memory
90+ - strict option parsing (flags, --, unknown options)
91+ - encode hosts of the form appclip.<tld >
92+ - keep leading zeros of numeric URL components
93+ - reject non-ASCII near the scheme prefix instead of panicking
94+ - liveeval (end-to-end live pipeline evaluation) and scantime
95+ - gate decoding on ring structure and the template byte
96+ - require quiet zones in the width-ratio reader; search every offset
97+
1098### Fixed
1199
12100- ** Live detection.** On camera-like scenes the locate → crop → decode loop read about
0 commit comments