[0.380] - 2026-05-07
Features
- (constants) TCF v2.3 spec-aligned long-form aliases
Other
- Merge tag 'v0.370' into devel
Tagged for release. v0.370
Performance
- (range-section) Avoid O(n^2) hash rebuild in TO_JSON
[0.370] - 2026-05-06
Bug Fixes
- Avoid 32-bit IV overflow when decoding 36-bit timestamps
Other
- Release v0.370 add gdpr consent string validator package and subcommand.
- Phase 2: The Validator Interface (rebased + reviewed)
-
Phase 2: The Validator Interface
-
Refactor Validator to reduce complexity (fix perlcritic)
-
Phase 2: review fixups for the Validator interface
Three must-fix changes plus expanded test coverage that came out of the deep review on PR #35:
-
Encapsulation: _check_disclosed used to reach into the parser's private hash ($tc->{disclosed_vendors_data}). Replace with the public predicate $tc->has_vendor_disclosure (added in Phase 1).
-
Test regex bug (t/06-validator.t): qr/purpose 1.* | .purpose 7/ has an unescaped pipe inside qr//, so it parsed as alternation rather than a literal " | " separator. The test passed even when the $\-aware joining didn't work, leaving the headline feature unverified. Fix: qr/purpose 1.\Q | \E.*purpose 7/
-
POD: previously zero documentation. Phase 1 set the bar; add full POD for both modules with SYNOPSIS, DESCRIPTION, every constructor key, both methods, the boolean/stringification overloads, and the $\-aware separator behaviour.
Test coverage added for previously-uncovered paths:
- Pre-parsed GDPR::IAB::TCFv2 object as input
- Missing vendor_id (croak) plus override fill-in
- legitimate_interest_purpose_ids (pass + spec-forbidden P1)
- flexible_purpose_ids scalar form
- flexible_purpose_ids hashref form (both default_is_li values)
- strict-mode override (warn path via Test::Warn + croak path)
- validate_all accumulating reasons across all three rule families
MANIFEST: add lib/GDPR/IAB/TCFv2/Validator.pm, lib/GDPR/IAB/TCFv2/Validator/Result.pm, and t/06-validator.t (missing from the original Phase 2 commits).
t/06-validator.t now has 11 subtests (was 4); 8287 tests pass overall (was 8280). perlcritic + perltidy clean.
- refactor(validator): derive flexible-purpose default basis from membership
flexible_purpose_ids is now a flat ArrayRef[Int]. The default legal basis for each flexible purpose is derived structurally:
- Purpose in consent_purpose_ids AND flexible_purpose_ids -> flexible with default consent
- Purpose in legitimate_interest_purpose_ids AND flexible_purpose_ids -> flexible with default legitimate interest
This mirrors the IAB GVL vendor-entry schema 1:1 (purposes / legIntPurposes / flexiblePurposes) and removes the mixed-shape parameter that accepted both scalars and {purpose_id, default_is_li} hashrefs. Constructor builds a private _flexible_set hash for O(1) lookup; _check_consent_purposes and _check_li_purposes dispatch to is_vendor_allowed_for_flexible_purpose when the purpose is flexible.
The standalone _check_flexible_purposes helper is removed and its call site in _run_validation deleted. Failure reasons now read "(consent)" or "(legitimate interest)" -- the basis used for the check -- regardless of whether the purpose was flexible.
Tests in t/06-validator.t updated for the new shape:
-
The two old "flexible_purpose_ids - {scalar,hashref} form" subtests collapsed into one "derives default basis from membership" subtest covering both consent-default and LI-default flexible purposes plus a negative case.
-
The validate_all subtest reworked to demonstrate accumulation across consent + LI rules with one flexible purpose, using vendor 99 (out of range for both bitfields) so all rules fail.
-
feat(validator): croak on incoherent purpose-list configurations
Two configurations are now caught at construction time rather than silently producing strange validation outcomes:
- A purpose listed in both consent_purpose_ids and legitimate_interest_purpose_ids (GVL semantics treat those as mutually exclusive vendor declarations).
- A purpose listed in flexible_purpose_ids but neither of the other two lists (no default basis can be derived).
Both croak with explicit messages naming the offending purpose ID.
- feat(validator): add from_gvl_vendor_entry helper
Maps a parsed IAB GVL vendor entry hashref to the constructor arguments Validator->new expects. Field aliases:
id -> vendor_id purposes -> consent_purpose_ids legIntPurposes -> legitimate_interest_purpose_ids flexiblePurposes -> flexible_purpose_ids
Returns a list (key-value pairs) so callers can splat into the constructor and add extras:
my $v = GDPR::IAB::TCFv2::Validator->new( GDPR::IAB::TCFv2::Validator::from_gvl_vendor_entry($entry), strict => 1, );
Croaks only on missing 'id'. Missing list fields default to empty arrayrefs per the GVL schema (a vendor may legitimately have no LI or flexible purposes).
- docs(validator): rewrite flexible_purpose_ids POD for the new shape
Document the structural derivation of default basis (membership in consent_purpose_ids vs legitimate_interest_purpose_ids), the construction-time coherence checks that croak on incoherent inputs, and the new from_gvl_vendor_entry public function in a new =head1 FUNCTIONS section. SYNOPSIS updated to use the flat-int flexible_purpose_ids shape and shows the from_gvl_vendor_entry splat idiom.
- feat(validator): add min_policy_version rule
Optional min_policy_version constructor arg (positive int; undef = no check) gates validation by the parser's policy_version(). The check runs FIRST in the rule order -- before disclosed-vendor and the purpose checks -- because it's the most fundamental reason to reject a TC string. In fail-fast mode it short-circuits the rest; in validate_all mode the other rules still run and accumulate.
Failure reason: 'TC string policy version X is below required minimum Y'. Per-call override via validate($tc, min_policy_version => N) is supported, mirroring the other override-able knobs.
- feat(cli): flip dump warnings to opt-in; repurpose --quiet to silence stdout
Path D for the dump subcommand:
-
Add --enable-warnings|-w (default off). The previous --quiet flag silenced human-readable warnings on STDERR, which left CI/pipeline invocations noisy by default. Warnings are now off by default and must be opted into with -w.
-
Repurpose --quiet|-q to suppress all STDOUT for the run, which makes
if iabtcfv2 dump -q "$tc"; then ...a clean shell idiom — exit code reflects parse success, no output to discard.
Tests in t/09-predicates.t and t/10-cli-iabtcfv2.t are updated for the new defaults; POD for the dump subcommand documents the new flag and the new --quiet semantics.
Co-Authored-By: Claude Opus 4.7 noreply@anthropic.com
- feat(cli): add validate subcommand with JSON and text output modes
Implement the previously-stubbed iabtcfv2 validate subcommand. It wraps
GDPR::IAB::TCFv2::Validator with a CLI surface that mirrors the validator's
constructor:
-v|--vendor-id ID (required) -C|--consent-purposes 1,2,3 -L|--legitimate-interest-purposes 1,2,3 -F|--flexible-purposes 1,2,3 -d|--check-disclosed-vendors -s|--strict -m|--min-policy-version N -a|--all (validate_all instead of fail-fast)
Output is one JSON object per TC string by default, or human-readable
lines with -t|--text. Failure shape uses a singular reason in
fail-fast mode and a plural reasons array in --all mode.
Pipeline ergonomics match the dump subcommand: --json-array, --ignore-errors (parse only), --fail-fast (parse OR validation), --errors-to-stderr, --enable-warnings (off by default), --quiet (suppresses stdout, preserves exit code).
Exit codes: 0 = all valid; 1 = at least one parse or validation failure; 2 = bad CLI usage (missing --vendor-id, incoherent purpose lists, --text with --json-array).
Co-Authored-By: Claude Opus 4.7 noreply@anthropic.com
- docs(roadmap): plan Phases 6, 7, 8 in TODO.md
Three new phases tracked after the CMP validator (Phase 5):
-
Phase 6: GVL-aware Validator. Reintroduces the from_gvl_vendor_entry helper deferred from Phase 2 and adds a higher-level from_gvl loader plus a CLI --gvl flag.
-
Phase 7: features, special features, and special purposes. Extends Validator + CLI past the standard purpose taxonomy.
-
Phase 8: CLI configuration loading. Maps flags to environment variables and an optional .iabtcfv2rc / .env file with documented precedence.
Co-Authored-By: Claude Opus 4.7 noreply@anthropic.com
- revert(validator): defer from_gvl_vendor_entry to Phase 6
The from_gvl_vendor_entry helper was added speculatively in this branch but its only useful caller — feeding parsed GVL JSON into the validator — depends on the GVL infrastructure that lands in Phase 6 (see TODO.md). Removing it now keeps Phase 2's API surface focused on what is actually exercised by the validate subcommand.
The helper, its POD, and its dedicated subtest will be reintroduced together with the rest of the GVL surface in Phase 6.
Co-Authored-By: Claude Opus 4.7 noreply@anthropic.com
- style: perltidy t/10-cli-iabtcfv2.t
xt/tidy.t (Test::PerlTidy under .perltidyrc) was failing on the 'Perl latest on ubuntu' CI job for PR #54. Cosmetic-only reflow: column alignment between consecutive my() lines, splitting long arg-lists across multiple lines, breaking some closing parens onto their own line. No assertions changed.
Co-Authored-By: Claude Opus 4.7 noreply@anthropic.com
- fix(cli): declare =encoding utf8 in iabtcfv2 POD
The validate subcommand's "Exit codes" section uses em-dashes in its prose (B<0> — every input TC string was parsed...). Without an explicit =encoding directive, Test::Pod warns "Non-ASCII character seen before =encoding in '—'. Assuming UTF-8" and t/99-pod.t fails on smokers running Test::Pod with strict POD validation.
Add =encoding utf8 right after END so the entire POD block is declared as UTF-8. No prose changes.
Co-authored-by: Claude Opus 4.7 noreply@anthropic.com
- Merge tag 'v0.360' into devel
Tagged for release. v0.360
[0.360] - 2026-05-06
Features
- (cli) Bundling + short aliases (-c for --compact, -s for --strict)
Other
- Release v0.360 -- modernize iabtcfv2 cli
- 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:
- PAUSE upload is irreversible, so reviewing the GitHub Release before it ships only protects the rendered notes page, not the CPAN-distributed artifact.
- 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