## [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

- 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 -->