Revision history for Text-Names-Abbreviate

0.03	Sun Jun 21 07:08:25 EDT 2026
	[ Enhancements ]
	- Extract _normalize_name and _extract_parts as private helpers
	- Add Readonly constants for all format/style/separator magic strings
	- Enforce encapsulation with Sub::Private on internal helpers
	- Add full POD: LIMITATIONS, MESSAGES, FORMAL SPECIFICATION, PSEUDOCODE
	- Add locale test suite (t/locales.t) with BAIL_OUT sanity, per-locale croak checks
	[ Bug Fixes ]
	- abbreviate(): default format dropped a last name of literally "0"
	  (e.g. "John 0" gave "J." instead of "J. 0"). The final ternary was
	  gating on the truthiness of $last_name instead of length($last_name);
	  "0" is the one non-empty Perl string that is falsy. Found via mutation
	  testing (xt/mutant_*.t survivor COND_INV_362_2)
	[ Tests ]
	- Latest test dashboard
	- Remove hardcoded test count from t/30-basics.t
	- Remove redundant Test::Exception from t/extended_tests.t
	- Remove redundant Test::Deep from t/function.t
	- Fix missing semicolon in t/extended_tests.t
	- Add t/mutant_killers.t: regression tests for the "0" last-name fix
	  above, plus a property-based guard documenting that COND_INV_362_2 is
	  an equivalent mutant once the fix is applied
	- Skip the "alarm not cancelled by abbreviate" subtest in t/unit.t on
	  Windows, where alarm() is not reliably implemented
	[ Build ]
	- Move Readonly to PREREQ_PM (used in module, not just tests)
	- Add Sub::Private to PREREQ_PM

0.02	Mon Apr 20 20:25:46 EDT 2026
	Use Params::Get
	Added fuzz testing in GitHub Actions
	Fixed "abbreviate('0')" which gave a Usage error
	Fixed edge cases
	Expanded on the documentation
	Wrote a fuller test suite

0.01	Wed May 28 21:01:16 EDT 2025
        First draft
