Revision history for Concierge-Auth

v0.5.0  2026-07-05
    - BREAKING: Concierge::Auth is now a thin backend factory, not a
      monolithic password-auth implementation. All prior OO methods
      (confirm/reject/reply, validateID/validatePwd/validateFile,
      checkID/deleteID/checkPwd/setPwd/resetPwd, setFile/rmFile/clearFile,
      encryptPwd, pfile, the gen_* wrappers) are removed outright -- no
      deprecation shims. Code calling Concierge::Auth directly (rather
      than through Concierge.pm) will need to migrate to the new backend
      contract below.
    - Added Concierge::Auth::Base: the domain-level contract every backend
      must implement -- authenticate, is_id_known, enroll,
      change_credentials, revoke (returning { success, message, ... }
      hashrefs) -- plus working default implementations of the Generator
      methods (gen_uuid, gen_random_id, gen_random_token,
      gen_random_string, gen_word_phrase, gen_token, gen_crypt_token),
      inherited for free unless a backend overrides them.
    - Added Concierge::Auth::Pwd: the built-in password-file backend,
      implementing Concierge::Auth::Base on top of the previous
      file-backed primitives (now private to this module).
      Concierge::Auth->new now requires backend => 'Concierge::Auth::Pwd'
      (or another conforming backend class) instead of configuring a
      password file directly.
    - Fixed packaging: MANIFEST and Makefile.PL were missing
      lib/Concierge/Auth/Base.pm and lib/Concierge/Auth/Pwd.pm (both new
      in this release) from PM/provides -- would have shipped a CPAN
      distribution missing required modules.
    - Ported full t/ suite to the new contract; added factory-specific
      coverage (missing backend, unloadable backend class, backend
      constructor failure).

v0.4.5  2026-05-25
    - Fix t/05-generators.t: skip dict-dependent subtest on systems without
      /usr/share/dict/web2 (Linux CPAN tester failure)

v0.4.4  2026-05-25
    - Expand test coverage across all test files

v0.4.3  2026-02-17
    - Version Bump for CPAN

v0.4.2  2026-02-17
    - Further deprecation steps for gen_token and gen_crypt_token

v0.4.3  2026-02-17
    - Removed gen_crypt_token and gen_token from exports, tests, and documentation
    - Removed unused Time::HiRes import from Generators.pm
    - Deprecated subs remain as internal aliases (will be removed in a future release)

v0.4.2  2026-02-17
    - Fixed documentation referring to gen_crypt_token deprecation

v0.4.1  2026-02-17
    - Deprecated gen_crypt_token (now aliases gen_random_token)
    - crypt() is non-portable; returned undef on some CPAN tester platforms

v0.4.0  2026-02-15
    - Fixed distribution issue with MANIFEST.SKIP

v0.3.5 2026-02-14
    - Fix infinite loop in gen_word_phrase when dictionary file unavailable (CI hang)

v0.3.4 2026-02-12
    - Rebuilt tarball with GNU tar (fixes PaxHeader issue on CPAN)

v0.3.3 2026-02-12
    - gen_uuid now generates v4 UUIDs using Crypt::PRNG (no longer shells out to uuidgen)
    - Added gen_random_id for hex-encoded cryptographic random IDs
    - Added generator test suite (t/05-generators.t)

v0.3.2 2026-02-11
    - Corrected dependency list in distro

v0.3.1 2026-02-11
    - Documentation improvements

v0.19.0 2026-02-10
    - Initial CPAN release
    - Argon2 password hashing with Bcrypt legacy validation
    - File-based password storage with file locking
    - Token and random value generation (Concierge::Auth::Generators)
