Releases: Shane32/QRCoder
v1.7.0
New Features
Performance Enhancements
- optimise: remove unnecessary
BitArray
by @TimothyMakkison in #607 - Reduced some allocations in
QRCodeGenerator
(NETCORE_APP only) by @gfoidl in #595 - PngByteQRCode: use
ArrayPool.Rent
to preventbyte[]
allocation by @TimothyMakkison in #615 - Optimize compression/decompression and add tests by @Shane32 in #611
- Change PdfByteQRCode to draw rectangles instead of embed JPGs by @Shane32 in #635
- Optimize PDF path algorithm by using RLE by @Shane32 in #650
- Add postscript renderer optimizations by @Shane32 in #651
- Add optimization to GetRawData by @Shane32 in #653
- Add ASCII renderer optimizations by @Shane32 in #652
- Add path-based SVG rendering with RLE encoding to reduce file size and memory usage by @Shane32 in #655
- optimise: fill
QRCode
with one colour by @TimothyMakkison in #626 - Optimize QRCoder.GetGraphic performance by @Shane32 in #658
Bug Fixes
- Fixed reason length for BezahlCode Generator by @MatzeSch in #603
- Fix vCard bugs; import RFCs by @Shane32 in #621
- Add support for SHA256 and SHA512 algorithms in One Time Password generation by @Shane32 in #620
- Fix: Make BIC optional for Girocode Version 2 by @Shane32 in #622
- Fix ECC level Q for micro QR codes; add various tests to improve code coverage by @Shane32 in #649
Documentation Changes
- fix Build and NuGet Badges by @T0biii in #589
- Fix typo in README.md and clarify some wording by @darkermango in #604
- Transition to Shane32 repo and remove EOL notice by @Shane32 in #608
- Update repo links; use main readme for NuGet by @Shane32 in #619
- Add XML comments on all public members where missing by @Shane32 in #629
- Rewrite README.md by @Shane32 in #660
Refactoring and Other Changes
- Raised version counter to 1.6.1 for next release by @codebude in #572
- Split alphanumeric encoding from QRCodeGenerator, split encoding tables by @Shane32 in #590
- Pin .NET SDK to 8.x for local/CI builds by @Shane32 in #591
- Run CI tests in parallel by @Shane32 in #609
- Update testing to only test .NET Standard and LTS versions by @Shane32 in #614
- Fix #if conditional to match rest of application by @Shane32 in #613
- Simplify WriteScanlines by @Shane32 in #612
- Add PNG benchmarks by @Shane32 in #616
- Review all ifdefs; add net standard 2.1 target by @Shane32 in #618
- Update CI workflow for pushing to master by @Shane32 in #623
- Migrate all assertions to Shouldly syntax; use visual regression checks by @Shane32 in #624
- Hide approval files in Solution Explorer by @Shane32 in #627
- Cleanup project files; configure Directory.Build.props by @Shane32 in #628
- Fix tests & code coverage reporting by @Shane32 in #633
- Enable implicit usings by @Shane32 in #631
- Enable nullable reference types and improve null handling across multiple files by @Shane32 in #630
- Update CI workflows and project files for improved package management and versioning by @Shane32 in #632
- Add bash shell specification for package publishing steps in CI workflows by @Shane32 in #636
- Fix path separator in NuGet push command for GitHub packages by @Shane32 in #637
- Fix CI tests for most frameworks by @Shane32 in #641
- Fix API approvals within CI workflows by @Shane32 in #642
- Make Postscript renderer deterministic by @Shane32 in #643
- Fix transposition problem with small ASCII renderer by @Shane32 in #645
- Reference System.Drawing.Common for all targets by @Shane32 in #639
- Enable recommended analyzers; use invariant culture throughout by @Shane32 in #640
- Add transposition tests by @Shane32 in #644
- Enable SVG tests by @Shane32 in #654
- Add QRCode renderer benchmark; add menu system to benchmarks by @Shane32 in #659
- Update version extraction logic for release workflows by @Shane32 in #662
New Contributors
- @T0biii made their first contribution in #589
- @darkermango made their first contribution in #604
- @TimothyMakkison made their first contribution in #607
- @MatzeSch made their first contribution in #603
- @gfoidl made their first contribution in #595
Full Changelog: v1.6.0...v1.7.0
v1.6.0
What has changed
- [Enhancement] Huge performance (runtime and memory) optimization in
QrCodeGenerator
(PRs #509, #519, #520, #521, #524, #530, #532) - [Enhancement] Big performance (runtime and memory) optimization in
BitmapByteQRCode
(PR #566) - [Enhancement] Added ECC level mismatch detection when using payloads from payload generator (PR #526)
- [Enhancement] Implementation of encoding constraints (EccLevel, EciMode) in SwissQRCode and GiroCode payloads to enforce that the payloads comply with the specifications of the respective standards (PR #533)
- [Enhancement] Added support for trimming (
IsTrimmable
project property) (PR #539) - [Enhancement] Added XML comments (code documentation) to all public members (PR #561)
- [Enhancement] Added new/third overload to
PngByteQRCode
that accepts colors as System.Drawing.Color (PR #564) - [Enhancement] Updated the Bitmap header from BITMAPCOREHEADER to BITMAPINFOHEADER in
BitmapByteQRCode
(PR #565) - [Refactoring] Restructured
QRCodeGenerator
classes into separate files and partially restructured code for better manageability (PRs #516, #528, #531) - [Refactoring] Restructured
PayloadGenerator
classes into separate files for better manageability (PR #556) - [Refactoring] Restructured the
PayloadGeneratorTests
into separate files for better manageability (PR #569) - [Refactoring] Removed category attribute from tests as it is no longer used/useful (PR #568)
- [Refactoring] Improved code documentation by adding comments to generator methods (PR #517)
- [Refactoring] Refactored and cleaned up the (needed for backwards compatibility) Stream- and String extension methods (PR #534)
- [Refactoring] Added nullable reference type (NRT) metadata to all possible members (PR #559)
- [Refactoring] Removed not longer necessary framework overrides in project files (PR #560)
- [Refactoring] Reformatted code and added
dotnet format
toolchain (PR #562) - [Note] Added performance benchmark project to ensure that future enhancement don't affect performance negatively (PRs #508, #510)
Breaking Changes
- If the function
GenerateQrCode(payload, eccLevel)
is called and the payload has set an ECC level "X" that differs from the ECC level from the parametereccLevel
, the QRCoder now throws anArgumentOutOfRangeException
to prevent the contract violation in the context of the payload. (Previously, the EccLevel was taken fromeccLevel
parameter without further checking, which in the worst case could lead to unreadable payloads.)
Deprecations
- class
QRCoder.Extensions.CustomExtensions
- class
QRCoder.Extensions.StringValueAttribute
NuGet Package (QRCoder): https://www.nuget.org/packages/QRCoder/1.6.0
NuGet Package (QRCoder.Xaml): https://www.nuget.org/packages/QRCoder.Xaml/1.6.0
Full Release Notes: https://github.com/codebude/QRCoder/wiki/Release-notes
Full Changelog: v1.5.1...v1.6.0
Special thanks for PRs and support goes to: @Shane32, @gfoidl, @csturm83, @Apflkuacha
v1.5.1
What has changed
- [Bugfix] The
SupportedOSPlatformAttribute
attributes were missing in the 1.5.0 build. Fixed build steps in workflows. (PRs #504, #505) - [Note] Added automated API approval tests to ensure that all changes to the public APIs are deliberate and documented (PR #504)
NuGet Package (QRCoder): https://www.nuget.org/packages/QRCoder/1.5.1
NuGet Package (QRCoder.Xaml): https://www.nuget.org/packages/QRCoder.Xaml/1.5.1
Full Release Notes: https://github.com/codebude/QRCoder/wiki/Release-notes
Full Changelog: v1.5.0...v1.5.1
Special thanks for PRs and support goes to: @Shane32 and the GraphQL for .NET project.
v1.5.0
What has changed
- [Enhancement] Added support for explicit WPA2 in
PayloadGenerator.Wifi
(PR #494) - [Enhancement] Added Linux support for
PostscriptQRCode
(PR #493) - [Enhancement] Added Linux support under .NET5 (or greater) for
SvgQRCode
incl. logo handling (PRs #490, #491) - [Enhancement] Improved README.MD and the examples in it (PRs #456, #481)
- [Enhancement] Optimized performance of
GenerateQrCode
-function for payloads of typebyte[]
(PR #438) - [Enhancement] Added another overload of
GetGraphic()
to theASCIIQrCode
-renderer that allows to render smaller representations of the QR code graphic by pressing two rows of modules into one char (PR #384 with inspiration from #430) - [Enhancement] Added support for UTC DateTimes and DateTimeOffsets in
CalenderEvent
-payload generator (PR #499) - [Enhancement] Added support for non-Windows platforms on .NET6+ (or newer) in
Base64QRCode
(PR #495) - [Update] Updated the allowed character set for contacts/addresses in
PayloadGenerator.SwissQRCode
(PR #432) - [Update] Updated the valid country code list by
XK
for contacts/addresses inPayloadGenerator.SwissQRCode
(PR #497) - [Bugfix] Changed linebreak behaviour after
StrdBkgInf
-field inPayloadGenerator.SwissQRCode
as it is additional instead of optional since SwissQRCode standard version 2.2 (PR #411) - [Bugfix] Fixed bug in placement of finder patterns in
ArtQrCode
-renderer that occured when quietzones should be drawn and a customfinderPatternImage
was set at the same time (PR #474) - [Bugfix] Fixed use of
pixelSizeFactor
inArtQrCode
-renderer, which had no effect before (PR #408) - [Bugfix]
PayloadGenerator.Url
didn't handle upper-case input correctly (PR #447) - [Bugfix] Fixed bug in
ASCIIQRCode
renderer that lead to mirrored/false rendering of ASCII QR codes (PR #476) - [Bugfix] Added missing url encoding of the issuer field in
OneTimePassword
payload generator (PR #391) - [Bugfix] Fixed 300 byte limit validator in PaymentOrder payload generator. Now only mandatory fields will be inspected. (PR #498)
- [Bugfix] Fixed bug that lead to wrongly placed logo backgrounds when rendering a
SvgQRCode
with logo and disabled quietzones at the same time. (PR #502)
NuGet Package (QRCoder): https://www.nuget.org/packages/QRCoder/1.5.0
NuGet Package (QRCoder.Xaml): https://www.nuget.org/packages/QRCoder.Xaml/1.5.0
Full Release Notes: https://github.com/codebude/QRCoder/wiki/Release-notes
Full Changelog: v1.4.3...v1.5.0
Special thanks for PRs and support goes to: @Shane32, @MarkusG, @PolnerA, @Timwi, @josh-, @doggy8088, @mharen, @Tragen, @HolyOne, @gfoidl, @RamonaFrickCH, @koaqiu, @hbdbim, @gliljas
v1.4.3
What has changed
- [Enhancement] Added
net6.0
andnet6.0-windows
as target frameworks to avoid conflicts on applications that use QRCoder while targeting net6.0 on non-Windows platforms. (PRs #358, #359; Commits 2c78d05, 84afafc) - [Enhancement] Decoupled
XamlQRCode
fromQRCoder
-main, to avoid unnecessary Windows-dependencies on non-Windos platforms. (PRs #358, #359; Commits 2c78d05, 84afafc)
NuGet Package (QRCoder): https://www.nuget.org/packages/QRCoder/1.4.3
NuGet Package (QRCoder.Xaml): https://www.nuget.org/packages/QRCoder.Xaml/1.4.3
Full Release Notes: https://github.com/codebude/QRCoder/wiki/Release-notes
Full Changelog: https://github.com/codebude/QRCoder/commits/v1.4.3
v1.4.2
What has changed
- [Feature] New renderer called "ArtQrCode" for rendering QR codes with dots and background pictures (PRs #295, #344)
- [Feature] Added new payload generator called "RussiaPaymentOrder", following the 56042:2014-standard, that can be used to generate QR codes for payment purposes. (PR #338)
- [Feature] Support for .NET5 (PR #286)
- [Feature] Added strong-name signing (PR #331)
- [Feature] New parameter/option to render a logo on SvgQrCodes (PRs #281, #346, #347)
- [Enhancement] Added 'organization' and 'organization title' to the ContactData payload generator (PRs #276, #325)
- [Enhancement] Added DataTooLong exception to warn users for too long payloads in combination with too small requestVersion-parameter (Commit 49d5b35)
- [Enhancement] Improved performance and reduced filesize for SvgQrCodes (PR #265)
- [Enhancement] Switched to new Whatsapp url scheme (https:/wa.me/...) in Whatsapp payload generator (PR #333)
- [Enhancement] Added optional parameter to disable HEX-style escpaing in WiFi payload generator (PR #334)
- [Enhancement] Added a new parameter for AsciiQrCode that allows suppression of the quiet zone/border around the code (PR #339)
- [Enhancement] Added a new parameter for PngByteQRCode that allows suppression of the quiet zone/border around the code (PR #350)
- [Enhancement] Improved coding of the Mail/SMS/MMS payload generators (PR #349)
- [Bugfix] In some cases AsciiQrCodes weren't rendered well/lines were missing (PR #339)
- [Bugfix] The parameter
iconBorderWith
on the QRCode-renderer stopped working (from QRCoder 1.4.0 on). It got fixed and works again. In addition a new parameter callediconBackgroundColor
was added, which allows to set the background color of an icon. (PR #351)
NuGet Package: https://www.nuget.org/packages/QRCoder/1.4.2
Full Release Notes: https://github.com/codebude/QRCoder/wiki/Release-notes
Full Changelog: https://github.com/codebude/QRCoder/commits/v1.4.2