## [0.360] - 2026-05-06
### Features
- *(cli)* Bundling + short aliases (-c for --compact, -s for --strict)
### Other
- Merge tag 'v0.352' into devel
Tagged for release. v0.352
## [0.352] - 2026-05-06
### Bug Fixes
- *(cli)* Stop short -v from being shadowed by global --version|-V
### Other
- Release v0.352 - fix iabtcvf2 cli tool that mix -v with -V
- Update changelog
- Merge tag 'v0.351' into devel
Tagged for release. v0.351
## [0.351] - 2026-05-06
### Bug Fixes
- Restore --version / -V + bump to v0.351
- *(ci)* Drop unused pod2markdown install and use latest Perl in release.yml
### Documentation
- Track Phase 5 (CMP Validation) in TODO.md
- Test::Warn refactor, bug-tracker footer, Docker image name fix
### Other
- Merge branch 'release/0.351'
- Merge tag 'v0.350' into devel
Tagged for release. v0.350
## [0.350] - 2026-05-06
### Bug Fixes
- Coerce Math::BigInt fallback values to plain scalars in BitUtils
### Features
- Add --version and -V options to CLI
### Other
- Merge branch 'release/0.350'
- Remove docs
- Update changelog, bump version
- Remove broken badges
- Phase 1: TCF v2.3 Support & Logic Alignment (Re-issue)
* docs: update TCF version mentions to v2.3 in constants
* feat: Phase 1 implementation (predicates, vendor_id filter, CLI options)
* feat: enforce TCF v2.2/v2.3 legal restrictions on Legitimate Interest
* feat: add --strict option to CLI dump and enforce TCF v2.3 rules
* chore: prepare for v0.350 release (Phase 1)
* chore: consolidate documentation to README.md and remove README.pod
* chore: simplify docker tagging (version and latest only)
* chore: final Phase 1 refinements (POD, logic fixes, golden file)
* chore: establish strict operational boundaries for agents in AGENTS.md
* feat: add automated release workflow for CPAN and GitHub Releases
* docs: update AGENTS.md with automated release flow and Phase 1 features
* fix: improve TO_JSON isolation and fix predicates tests
* fix: robust regex for CLI isolation test
* fix: satisfy perl critic and tidy in CI
* Vendor segment parser cleanup (stacked on #44)
* fix: align core bitfield/range data_size to slice length
Both _parse_bitfield and _parse_range_section previously passed the
full core_data bit-length as data_size while passing a sliced \$data.
This made the BitField/RangeSection size validation lenient for
truncated cores: malformed inputs would stumble forward and croak deep
in _parse_publisher_section with a misleading "missing 'core_data'"
error instead of failing fast at the bitfield boundary.
Align with the pattern already used in _parse_vendor_bitfield_or_range
so data_size faithfully describes what the callee receives.
* feat: defensive segment-type check in vendor-segment helper
_parse_vendor_bitfield_or_range now accepts an expected_segment_type
argument and croaks if the payload header disagrees. Brings parity
with PublisherTC->Parse and protects against future refactors that
might bypass _decode_tc_string_segments routing.
* docs: explain single-return shape of vendor-segment helper
* fix: short-circuit MaxVendorId=0 in vendor-segment helper
Per IAB TCF v2 spec, MaxVendorId=0 means the field is unused.
Previously, a segment with max_id=0 and IsRangeEncoding=1 would
fall into RangeSection->Parse and either parse spurious range
entries or croak from the 31-byte minimum-size guard.
Now we return an empty BitField immediately, preserving
has_vendor_disclosure() semantics while making contains() return
falsey for any vendor id.
* docs: refresh plan with current line numbers and rebase notes
* docs: regenerate README from POD and remove changelog merge noise
Phase 1 added several public methods (is_v22_plus, is_v23,
disclosed_vendor, has_vendor_disclosure, allowed_vendor,
has_publisher_restrictions) and two Parse options (TCF v2.3
strict-mode behaviour, vendor_id JSON filter), all documented in
the .pm POD but missing from README.md. Regenerated README.md via
the documented workflow (`pod2markdown lib/GDPR/IAB/TCFv2.pm > README.md`).
Also removed two leaked lines from a prior merge commit message
(`# Conflicts:` / `#\tCHANGELOG.md`) that git-cliff had swept into
the v0.350 "Other" section.
* docs: expand CONTRIBUTING with full Git Flow release procedure
The previous "FOR RELEASE MANAGER" section was a 12-line stub.
Replaced with a comprehensive guide covering:
- Prerequisites: Pod::Markdown, git-cliff, git-flow CLI,
PAUSE secrets configuration
- Versioning convention (0.XYZ, v-prefix only on tags)
- Step-by-step release (10 steps), each with side-by-side
git-flow and vanilla-git commands
- What .github/workflows/release.yml does on tag push
- Hotfix release procedure (skips devel)
Added `=encoding utf8` so podchecker accepts the em-dashes used
throughout the new section.
* docs: explain why we don't document the draft-release pattern
Adds a "Pre-release review" subsection that calls out two reasons
the draft GitHub Release pattern doesn't actually buy us anything
on this project:
1. PAUSE upload is irreversible, so reviewing the GitHub Release
before it ships only protects the rendered notes page, not the
CPAN-distributed artifact.
2. release.yml hard-codes draft: false in the softprops step and
listens only on push.tags, so naively adding a draft step would
either close the review window in 3 minutes or skip release.yml
entirely (API-created tags don't trigger push events).
Points readers at the existing PR-based vanilla-git path in step 8 as
the actual review gate, and notes the workflow tweak required if
someone later wants to support drafts properly.
- Merge devel into Phase 2 and resolve CHANGELOG conflict
- Merge feat/phase-1-tcf-v23-segments into devel
## [0.340] - 2026-05-05
### Other
- Merge feat/phase-0-core-logic into devel
## [0.330] - 2026-05-05
### Bug Fixes
- Allow non-standard semver in Docker tags
### Other
- Unified Docker Distribution (iabtcfv2)
## [0.320] - 2026-05-05
### Bug Fixes
- Resolve subroutine name mismatch and incorrect parameter passing in CLI
### Documentation
- Improve CLI help system with subcommand-specific documentation
### Other
- Centralized Quality Checks (xt/ & Makefile)
## [0.310] - 2026-05-05
### Features
- Implement unified subcommand-based CLI and bump version to 0.310
## [0.300] - 2026-05-05
### Bug Fixes
- Fix yaml lint issues
### Documentation
- Update changelog for Phase 2
- Update changelog for Phase 1
### Other
- Independent iabtcf-dump CLI utility
- Merge Phase 1 updates
- Merge Phase 0 updates
- Update documentation
- Update doc
- Merge test fix
- Fix test expectation for aligned TO_JSON
- Merge updated Golden File
- Update Golden File for TCF v2.3
- Merge TO_JSON alignment
- Align TO_JSON output
- Refactor Validator to reduce complexity (fix perlcritic)
- Phase 2: The Validator Interface
- Phase 1: TCF v2.3 & Segment Robustness
- Add Golden File Test System baseline
- Phase 0: Core Logic Expansion (Fixed linting & tidy)
- Phase 0: Core Logic Expansion (Fixed linting & tidy)
- Phase 0: Core Logic Expansion
- Normalize macos
- Update changelog
## [0.203] - 2025-04-21
### Bug Fixes
- Fix tests with tap
- Fix perl tidy issue
### Other
- Update changelog
- Bump version to v0.203
- Try fix workflow linux last try
- Try fix workflow linux
- Try refactor linux tests
- Run perltidy on code
- Merge remote-tracking branch 'refs/remotes/origin/devel' into devel
- Update windows.yml
try fix windows
- Update linux.yml
install git and curl
- Update linux.yml
force install linux in older versions
- Update linux.yml
try fix images
## [0.202] - 2025-04-21
### Other
- Bump version
- Bump version
- Improve error message
- Update CONTRIBUTING.pod
fix branch again
- Update CONTRIBUTING.pod
fix branch again
- Merge tag 'v0.201' into devel
Tagged for release. v0.201
## [0.201] - 2023-12-20
### Other
- Merge branch 'release/0.201'
- Promote new version
- Bump version
- Change how we redefine subroutines
- Small fixes
- Merge tag 'v0.200' into devel
Tagged for release. v0.200
## [0.200] - 2023-12-17
### Bug Fixes
- Fix manifest
- Fix issue #25
### Other
- Merge branch 'release/0.200'
- Update manifest
- Promote new version
- Add missing changes
- Refactor publisher restrictions
* add named parameters on check_publisher_restriction method
* add new method
* improve test
* Revert "improve test"
This reverts commit ae7274e49ad0b767b158beadd9ce73e07a5eb836.
* fix format
* fix pod
* Update Publisher.pm
Remove char
* Update PublisherRestrictions.pm
Remove char
* tidy test
* remove bad chars
* try remove all bad chars
- Increase tests
- Add range section cache
* add initial code
* reorg code
* rename test
* add unit tests
* add pod
* update readme
- Merge tag 'v0.100' into devel
Tagged for release. v0.100
## [0.100] - 2023-12-15
### Bug Fixes
- Fix workflows
### Other
- Merge branch 'release/0.100'
- Tidy file
- Update manifest
- Promote new version
- Remove unused code
- Add support to publisher tc
* add code to handle publisher tc, start to implement #13
* add missing changes
* some refactor
* add example
* update pod
* add unit tests
* add unit tests
* force read the first segment as core string
* verify unit tests
* narrow unit test
* narrow unit test 2
* continue search
* fix unit test
- Prepare code to decode other sections
- Fetch other sections of the tcstring
- Group publisher section
- Group constants
- Add strict mode
- Merge tag 'v0.084' into devel
Tagged for release. v0.084
### Refactor
- Refactor code, regroup logic
- Refactor code: group vendor section
## [0.084] - 2023-12-14
### Other
- Merge branch 'release/0.084'
- Update manifest
- Promote new version
- Bump version
- Fix but index out of bonds while parsing range based consent strings
* add unit test to trigger bug #20
* add fix
* add changes file
- Merge tag 'vv0.083' into devel
Tagged for release. vv0.083
## [0.083] - 2023-12-13
### Bug Fixes
- Fix pod 2
- Fix pod
- Fix changes
### Other
- Merge branch 'release/v0.083'
- Update manifest
- Bump version
- Revert "try fix links"
This reverts commit e5fb435f3d78beb07ef44b434282724c4f0270ec.
- Revert "try 2"
This reverts commit dca6f2f25344bbd226f8ef79780414f57b378f1a.
- Try 2
- Try fix links
- Merge branch 'devel' of github.com:peczenyj/GDPR-IAB-TCFv2 into devel
- Refactor bitfield & others
* increase performance in 17% on TO_JSON method when it is bitfield by limit data size
* small refactor on range section
* continue refactor on bitfield, range section and publisher restriction
* refactor offsets
* add changes
* refactor offset / data_size
* verify if offset exists on range section Parse method
* fix tidy
* restrict bitfield data
* tidy code
- Restrict bitfield data
- Reset readme
- Merge branch 'devel' of github.com:peczenyj/GDPR-IAB-TCFv2 into devel
- Update README.pod
Try fix link to method
- Format changes
- Increase performance on range section
performance improvement on range objects
## [0.082] - 2023-12-12
### Bug Fixes
- Fix perltidy
- Fix example in pod
- Fix pod
- Fix issue #17
- Fix pod
- Fix typo in exception, add more bit check
- Fix pod json fields
- Fix format
### Other
- Bump version to 0.082
- Update changes
- Add small refactor on safe functions
- Revert "refactor purposes and special feature opt in internals"
This reverts commit af62cf3873f673bcc0f790a2523a036042ec34d6.
- Rename options
- Start refactor
- Remove useless method
- Update changes
- Update changes
- Increase TO_JSON performance by 17% on bitfields and 70% on range based
- Add new tests
- Update changelog
- Rename property
- Change bitutils to return the offset of the next piece of information
- Improve bitutils to also return next offset in array context via wantarray
### Refactor
- Refactor purposes and special feature opt in internals
## [0.081] - 2023-12-11
### Bug Fixes
- Fix pod
### Other
- Bump version
- Start to fix issue #17
## [0.08] - 2023-12-10
### Bug Fixes
- Fix makefile
- Fix typo
- Fix pod and readme
### Other
- Update manifest
- Bump version
- Finish TO_JSON method
- Add tests and small refactors in code
- Add missing changes
- Add TO_JSON and tc_string method
- Add TO_JSON method
- Remove = character from base64 validation, since the url version does not have it
- Substitute hardcoded numeric offsets by constants
- Update issue templates
- Create CODE_OF_CONDUCT.md
add coc
- Add missing function on perldoc
- Update TCFv2.pm
add badges
- Update README.pod
add new bagdes
- Update perlcritic.yml
retry perlcritic
- Update perlcritic.yml
try different approach
- Update perlcritic.yml
try again
- Create perlcritic.yml
- Update TCFv2.pm
update badges
- Delete .appveyor.yml
remove appveyor
- Update README.pod
update badges
- Rename macos.yaml to macos.yml
rename file
- Update linux.yml
fix 2
- Update linux.yml
fix linux
- Update linux.yml
improve linux tests
- Create macos.yaml
add tests on macos
- Create windows.yml
add tests on windows
- Create perltidy.yml
add perldity
- Update TCFv2.pm
fix typo in badges
- Update README.pod
fix pod
- Update README.pod
fix typo
- Update linux.yml
try fix git config
- Update linux.yml
add coveralls repo token on secret
- Update linux.yml
- Update linux.yml
update action
- Add test pod and fix small typos
- Explain changes
- Add version on changes file
## [0.07] - 2023-12-07
### Bug Fixes
- Fix unit tests again
- Fix unit test
- Fix type validation
- Fix pod
### Other
- Simplify code
- Remove usage of // operation
- Revert "fix unit test"
This reverts commit c56400f41b1f71f516d999786ec88f1144945f48.
- Update manifest
- Bump version
- Merge branch 'main' of github.com:peczenyj/GDPR-IAB-TCFv2
- Update TCFv2.pm
Fix pod
- Update README.pod
Fix pod
- Update changelog
- Update readme
- Add publisher restriction check and fix issue #11
- Check if string is a base64 url encoded string before parse it and fix issue #3
## [0.06] - 2023-12-06
### Other
- Update docs
- Bump version to 0.06
- Update changes
- Add wantarray on created and last_updated methods
- Add coveralls badge
- Update linux.yml
add coveralls
- Add badge
- Add appveyor
- Push new constants and docs
- Merge branch 'main' of github.com:peczenyj/GDPR-IAB-TCFv2
- Update linux.yml
rename
- Add new readme
- Update readme
- Add special features as constants
- Add purposes constants, fix issue #2
- Simplify ctor
- Add comments
- Add small changes in code
## [0.051] - 2023-12-05
### Bug Fixes
- Fix readme
- Fix readme
- Fix branch name
- Fix pod
- Fix contributing file
### Other
- Release version 0.051
## [0.05] - 2023-12-05
### Other
- Add missing changes
## [0.0.5] - 2023-12-05
### Bug Fixes
- Fix module format
- Fix test matrix
- Fix manifest
- Fix issue #9 by trying to use MIME::Base64->can("decode_base64url") or use a fallback
### Other
- Bump version
- Try to force mininum perl 5.8
- Try make it work on perl 5.8
- Try even older version
- Try again
- Small refactors
- Try fix markdown format
## [0.0.4] - 2023-12-04
### Bug Fixes
- Fix issue #8
- Fix dependency
### Other
- Add manifest
- Add contributing file
- Add changelog
- Update version
## [0.0.3] - 2023-12-04
### Other
- Add manifest
- Improve doc
- Complete pod documentation
- Add full support to vendor consent and vendor legitimate interest, ias bitfield or range sections. fix issue #1
- Complete code, add support to bitfields
- Add more methods
## [0.0.2] - 2023-12-03
### Other
- Update code, add skip
- Rename readme
- Improve documentation
- Skip .github dir
- Update license
- Add github meta
## [0.0.1] - 2023-12-02
### Other
- Add github workflow
- Add makefile.pl
- Add *.bak on .gitignore
- Remove .bak
- Add some properties and tests
- Initial commit
<!-- generated by git-cliff -->