Repository navigation
Releases: thousandflowers/qr-multi-imgs
Releases · thousandflowers/qr-multi-imgs
Release list
v1.6.0
Changelog
- 106cb9d Merge pull request #10 from thousandflowers/feat/webui-local-server
- e2e8539 Merge pull request #11 from thousandflowers/chore/release-without-a-secret
- 1c21850 Merge pull request #12 from thousandflowers/chore/note-v150-never-cut
- b4604be Merge pull request #3 from thousandflowers/feat/goreleaser-brews
- 5370369 Merge pull request #6 from thousandflowers/feat/corpusgen
- fca0bbe Merge pull request #7 from thousandflowers/chore/release-v1.5.0
- 9ee673c Merge pull request #8 from thousandflowers/feat/multi-path-and-formats
- 2f14987 Merge pull request #9 from thousandflowers/chore/honest-readme-and-version
- f53af88 chore: discoverability pass - README audit, community files, launch copy (#4)
- 251168a chore: ignore the local mirror-headroom probe
- 5ce0428 chore: prepare v1.5.0
- ab91a4e chore: untrack scanner/zz_mirror_probe_test.go
- 37b068f feat: Apple Vision returns every code it finds, with locations
- 4b1b6c6 feat: add ScanDecodedImage seam and a ground-truth corpus benchmark
- 0ae54c6 feat: add cmd/corpusgen to bootstrap a manifest from unlabelled images
- f65c480 feat: decode every QR in an image, not just the first
- 3994bef feat: list row reports how many other codes an image holds
- ed8a862 feat: manifest expresses several codes per image, harness scores per code
- ebbd369 feat: on macOS, scan every format the system can decode
- 09e7e09 feat: optional pure-Go HEIC behind -tags heic, and NEF on macOS
- 2d2f30b feat: publish homebrew formula to public tap on release
- 47eac6e feat: read QR codes out of PDFs, every page
- 73cbdb4 feat: scan several folders and files in one pass, and read TIFF
- a80a7a7 feat: web UI over a local API, hosted on Pages or served by the binary
- 43a0139 fix: HEIC images decode on macOS instead of being skipped or erroring
- cee132d fix: build tags exclude both Vision files under CGO_ENABLED=0
- 05cb44c fix: correct the benchmark claim, stamp the version, guard the release
- b976015 fix: stop making a release depend on a secret that does not exist
- 5fd51da perf: stop the strategy loop on finder-pattern evidence
v1.4.1
Changelog
- 4bea2c4 chore: bump version to 1.4.1
v1.4.0
Changelog
- aeeb87a feat: macOS Vision QR backend for real-world photos
v1.3.0
Changelog
- 0194e88 ci: trigger Codecov upload with token
- 5056822 feat: exact payload + color-channel decode strategies
- 233aa5d feat: live scan progress bar + empty-folder crash fix
- 2adbbb8 feat: pure-Go QR detection - 100% on benchmark, zbarimg-free
- 3503ac5 feat: webp/bmp support + CLI helper extraction + coverage
- 2974717 fix(ci): skip clipboard assertion on non-darwin
- af075b6 fix(test): skip deleteDirUnwritable on Windows (chmod 0444 dir is not enforced there)
- 971b4ee fix: codecov-action v5 uses 'files' not 'file'
- 69890e7 fix: gocyclo, gofmt, and Windows test failures
- 35a5aa2 fix: proper Codecov v5 setup and coverage in repo root
- fbd5d05 fix: skip Codecov on Windows, write coverage to runner.temp
- 31681da fix: skip Windows-incompatible permission tests
- 77e0eb1 fix: use ./coverage.txt to avoid Windows Go 1.26 bug
- 5dd3460 fix: use coverage.txt extension for Windows compat
- 6850d51 fix: use explicit package paths instead of ./...
- 6322067 fix: write coverage to runner.temp, copy to workspace for Codecov
- 2803b99 fix: write coverprofile to runner temp dir
v1.2.0
v1.1.0 - 100% detection, 20x faster, QR format picker
What's new
- 100% detection rate (3332/3332) - new .npy mask fallback decodes QR from the mask image via zbarimg, catching everything gozxing misses
- ~20x faster scanning - parallel worker pool (6 workers) drops benchmark from 7m35s to ~23s (140 img/s)
- QR format picker - when recreating QR codes, choose between PNG, JPG, or SVG output
- SVG QR export - clean vector QR code generation without dependencies
Breaking
- Recreate QR now prompts for format before generating files
- Scan speed improvements may change Result ordering (now non-deterministic per run)
Files changed
.gitignore | 1 +
README.md | 26 +--
exporter/exporter.go | 110 +++++++++--
exporter/exporter_test.go | 60 ++++++
main.go | 82 ++++++---
scanner/npy.go | 82 +++++++++
scanner/scanner.go | 120 ++++++++-----
7 files changed, 364 insertions(+), 117 deletions(-)
create mode 100644 scanner/npy.go
v1.0.0 - Go rewrite, stable
First stable release of the Go rewrite (TUI with Bubble Tea, gozxing decoder).
Highlights
- Interactive TUI: type or drag a folder, per-image progress, summary table
- JSON / CSV / TXT export of scan results
- QR code generation (
--make) - Cross-platform clipboard + disk-space guard
- Exporter: unknown formats now error out instead of silently writing nothing; CSV flush errors no longer swallowed
- New exporter test suite (round-trip JSON/CSV/TXT + QR PNG scan-back)
Why 1.0.0
The Python era reached v0.9.0; the Go rewrite restarted at v0.1.0. 1.0.0 restores monotonic version ordering so brew upgrade behaves.
v0.1.0 - initial release
First release of qr-multi-imgs.
Install
bash <(curl -sL https://raw.githubusercontent.com/thousandflowers/qr-multi-imgs/main/install.sh)Or with Go: go install github.com/thousandflowers/qr-multi-imgs@latest
Assets
- Darwin (macOS): arm64 (Apple Silicon) + amd64 (Intel)
- Linux: amd64 + arm64
v0.9.0
Production-readiness release:
New features
- pip install via pyproject.toml + MANIFEST.in
- --quiet / -q: suppress progress output for scripting
- --version: print version and exit
- Single file mode: qr-multi-imgs image.png works
- stdin/pipe support: cat image.png | qr-multi-imgs --path -
- Exit code 4: EC_NO_QR now 4 (distinct from EC_ERROR=2)
- EXAMPLES section in --help output
Documentation
- Rewritten README with benchmarks, real-world use cases, safety & performance docs
- CI badge, exit codes table, barcode/structured/scannability documentation
- Detection pipeline diagram
CI
- Package install via pyproject.toml (tests pip install path)
- Syntax check + type-check (best-effort via basedpyright)
v0.8.0
Polish pass:
- NO_COLOR env var + --no-color flag
- Dynamic terminal width detection
- Real timeout enforcement in detect_qr()
- Short-circuit detection pipeline after 10 failed attempts
- _make_args() helper eliminates Namespace duplication
- _spinner_text() restored