==================================================
Changes from 2016-08-16 00:00:00 +0000 to present.
==================================================

-------------------------------------------
version 1.0100 at 2026-08-14 04:19:17 +0000
-------------------------------------------

  Change: e8e7ebfea48b4328933da9cf26d8683d160a0ab1
  Author: Dean Hamstead <dean@fragfest.com.au>
  Date : 2026-07-31 01:01:42 +0000

    feat: add head and options HTTP methods (#38)

    * feat: add head and options HTTP methods

    * test: add tests for head and options verbs

    * docs: improve POD, fix broken examples, update verb lists

    * refactor: consolidate verb methods into _request_with_params and
    _encode_params 

  Change: 24390bd523c0493a531863d2efa5b76897e5c150
  Author: Dean Hamstead <dean@fragfest.com.au>
  Date : 2026-07-06 00:46:10 +0000

    refactor: consolidate headers handling into _headers and
    _headers_content_type 

  Change: f47c8bd368e59f7642354e364a5c83a9f466dffb
  Author: Dean Hamstead <dean@fragfest.com.au>
  Date : 2026-07-06 00:46:10 +0000

    fix: stop sending Content-Type header on GET requests 

  Change: a2ba104c312d9faf1fd4ac217f4bf0315a74c5b2
  Author: Dean Hamstead <dean@fragfest.com.au>
  Date : 2026-07-06 00:46:10 +0000

    test: verify all HTTP methods do not mutate caller arguments

    Uses Clone + is_deeply to snapshot inputs before each method call and
    compare after. Covers get, post, put, patch, delete. 

  Change: 2040e521c79166ad453f17f5cd76261628c22ba4
  Author: Dean Hamstead <dean@fragfest.com.au>
  Date : 2026-07-02 11:28:49 +0000

    fix: stop sending Content-Type header on DELETE requests

    DELETE requests have no body, so sending Content-Type is incorrect
    and rejected by some APIs. This is a breaking change -- callers that
    relied on the old behavior must set Content-Type explicitly via the
    headers argument. 

  Change: 31a4c80e9fa96ff8e6c1802012a2b98fe5340f7c
  Author: Dean Hamstead <dean@fragfest.com.au>
  Date : 2026-06-27 12:58:48 +0000

    Update README.md and Makefile.PL 

  Change: a81303e325319cfff1bd1f201988330c87b7a2bb
  Author: Dean Hamstead <dean@fragfest.com.au>
  Date : 2026-06-27 12:58:48 +0000

    ci: add GitHub Actions workflow for dzil test 

  Change: 907960582728121b1c799a32230d7b81e0deeb46
  Author: Dean Hamstead <dean@fragfest.com.au>
  Date : 2026-06-27 12:58:48 +0000

    fix: restore headers propagation broken by _headers // change 

  Change: 019f25d3b6458a57696ecef112d26a713e30ea68
  Author: Dean Hamstead <dean@fragfest.com.au>
  Date : 2026-06-26 14:20:52 +0000

    fix: guard Response type-check against non-object values 

  Change: cfdcafe6ad3bea7fe50d194bfa65cff7c6df5588
  Author: Dean Hamstead <dean@fragfest.com.au>
  Date : 2026-06-26 00:55:30 +0000

    Use defined-or instead of logical-or for default headers

    ||= replaced undef, 0, and '' with {} silently, hiding invalid
    non-hashref values from the is_plain_hashref validation croak.
    Changed to // which only replaces undef, allowing invalid values like
    0 and '' to properly produce an error. 

  Change: 2519adc310e18a92013cc9e44471f658ad5bb215
  Author: Dean Hamstead <dean@fragfest.com.au>
  Date : 2026-06-25 22:26:08 +0000

    fix: use PATCH from HTTP::Request::Common

    - Import PATCH from HTTP::Request::Common - Rewrite patch method to
    match post/put pattern - Bump HTTP::Message minimum from 6.06 to 6.13
    - Add test verifying method, URL, Content-Type, and body - Expand
    =head2 patch POD with signature and example 

  Change: 1ec7fbdb8b911fb0d9f2a5e6c8ecdfa856cceceb
  Author: Dean Hamstead <dean@fragfest.com.au>
  Date : 2026-06-25 22:22:12 +0000

    Fix loose _url regex allowing http-prefixed paths to bypass base_url

    The regex /^http/ matched any path starting with 'http' (e.g.
    'http:/evil.com/api'), treating it as an absolute URL and bypassing
    base_url. Tightened to m{^https?://} so only valid scheme-prefixed
    URLs are treated as absolute. 

  Change: 76c96e2772fd45b666daf79ba99ec4ae5a89563d
  Author: Dean Hamstead <dean@fragfest.com.au>
  Date : 2026-06-25 21:24:17 +0000

    Use decoded_content instead of content in default deserializer

    Switch from ->content to ->decoded_content so that Content-Encoding
    (e.g. gzip) is properly handled before JSON deserialization. Without
    this, gzipped response bodies would be passed as raw compressed bytes
    to the JSON decoder, causing a parse failure.

    Also adds a test with a gzipped response to cover this path.

    Consistent with WebService::Client::Response::data() which already
    uses decoded_content (commit d133246). 

  Change: 2c49537f167712a523c3e18745a99f2d82cd1be8
  Author: Dean Hamstead <dean@fragfest.com.au>
  Date : 2026-06-25 21:22:50 +0000

    Fix each() iterator corruption in _php_params

    Replace each() with keys() + index to avoid corrupting the hash's
    internal iterator. When _php_params was called on a hashref that was
    also being externally iterated with each(), the two iterators would
    interfere, causing skipped keys and wrong query strings. 

  Change: 12070a010dfb7d84811f797c1d1bf900555d659f
  Author: Dean Hamstead <dean@fragfest.com.au>
  Date : 2026-06-25 01:23:02 +0000

    Fix #25 - URL-encode query params in get(), add array_query_style
    attribute

    - Replace manual query string building with URI->query_form_hash

    for proper RFC 3986 encoding - Add array_query_style attribute
    (default 'php', option 'rfc')

    to control how array params are serialized in query strings - Use
    Ref::Util::is_plain_* instead of bare ref eq checks - Document
    array_query_style in POD - Expand test coverage for both param styles 

  Change: f44b7afcdc9304e4a07550b1cff424b7cef9b6b4
  Author: Nicolas R <nicolas@atoomic.org>
  Date : 2020-11-05 20:43:57 +0000

    Add Test::LWP::UserAgent to TestRequires 

  Change: bda2c08d624930acd9cf89458c8e4918c20be787
  Author: Nicolas R <nicolas@atoomic.org>
  Date : 2020-11-05 20:41:52 +0000

    Add a basic .gitignore file 

  Change: dc19d609ab78e7afde772fb4e4a6fb93e193bbc4
  Author: Nicolas R <nicolas@atoomic.org>
  Date : 2020-11-05 20:41:06 +0000

    Avoid cruft files in release

    Note that the last release 1.0001 includes files like foo.pl and
    stocks.pl. These files should not have been part of the tarball as
    they are not versionned in git.

    Switch to Git::GatherDir to avoid such mistakes in the future. 

  Change: b9c286dc6a80a8d9ca0f73dfa98ad09a671549ba
  Author: Nicolas R <nicolas@atoomic.org>
  Date : 2020-10-22 01:48:54 +0000

    Use some colors for README.md

    use Perl syntax highlighting when possible 

  Change: 4a79563ed493b02688f767697a518df47d719621
  Author: Naveed Massjouni <nmassjouni@harmonia.com>
  Date : 2020-07-05 16:20:44 +0000

    Fix #20 deserializer typo in POD documentation 

-------------------------------------------
version 1.0001 at 2020-04-08 04:17:18 +0000
-------------------------------------------

  Change: 8fc9dc47c82cf792d28360d52b7424bd2e4c5b1c
  Author: Naveed Massjouni <nmassjouni@harmonia.com>
  Date : 2020-04-08 00:17:18 +0000

    v1.0001 

  Change: d13324674f010a713a13af4e9a743d9720995b5b
  Author: Naveed Massjouni <nmassjouni@harmonia.com>
  Date : 2020-04-08 00:13:35 +0000

    Get the decoded_content of the http response in v2 mode 

  Change: 8ce8aa6ace3638d2c63e60d36ad487db37d0e5bd
  Author: Naveed Massjouni <nmassjouni@harmonia.com>
  Date : 2020-04-07 22:22:36 +0000

    Add an example of how to use the v2 mode 

-------------------------------------------
version 1.0000 at 2020-04-08 01:49:43 +0000
-------------------------------------------

  Change: a57076bc37dd1916dbc4ba9209ff5b082201e8db
  Author: Naveed Massjouni <nmassjouni@harmonia.com>
  Date : 2020-04-07 21:49:43 +0000

    v1.0000 

  Change: 69b2cf1de001eddb6c13a9326b55be8341711d37
  Author: Naveed Massjouni <nmassjouni@harmonia.com>
  Date : 2019-11-04 19:28:04 +0000

    Update README and Makefile 

  Change: 335e2f1886cdb2c5b6229f8d8a3f4760ff034dbe
  Author: Naveed Massjouni <nmassjouni@harmonia.com>
  Date : 2019-11-04 16:25:16 +0000

    Add ok() method to Response class 

  Change: f0c573987142d3418965440f03a2ffac96eac508
  Author: Naveed Massjouni <nmassjouni@harmonia.com>
  Date : 2019-11-04 16:24:45 +0000

    Set the default mode to be an empty string 

  Change: 7483f92e5cdc8cb006ad4cbea4cd91b3752eb32d
  Author: Naveed Massjouni <naveed@vt.edu>
  Date : 2019-10-30 16:53:58 +0000

    Add a new operating mode that always returns a response object (#19)

    This is to address issue #11. djzort suggested adding a mode where
    the http response is always returned. 

  Change: 2cc9f986ed2d1889f0ea2718c1bfffef4e0c64b2
  Author: Naveed Massjouni <naveed@vt.edu>
  Date : 2019-10-26 14:43:09 +0000

    Merge pull request #16 from ZipRecruiter/nawglan/authordeps

    add authordep entries in dist.ini for missing development requires. 

  Change: 46cff5dab359d38e0ba20c77e757c7c9a39cc153
  Author: Naveed Massjouni <naveed@vt.edu>
  Date : 2019-10-26 14:40:40 +0000

    Merge pull request #17 from ZipRecruiter/add-test-for-get

    Adds a test for successful path GET functionality, including
    deserialâ¦ 

  Change: 0f89f68a186b10dd9692e16af433fdfae49d1d1a
  Author: Naveed Massjouni <naveed@vt.edu>
  Date : 2019-04-03 15:01:54 +0000

    Merge pull request #15 from ZipRecruiter/kwalitee-minimumperl

    Add [MinimumPerl] to dist.ini 

  Change: 923f98d84dbfaa46d5d54033dba2a8f3b3574de7
  Author: Naveed Massjouni <naveed@vt.edu>
  Date : 2019-04-03 10:08:44 +0000

    Merge pull request #14 from ZipRecruiter/kwalitee-provides

    Add [MetaProvides::Package] to dist.ini 

  Change: 4203d86199fe04f14c628980de62b4690892ca07
  Author: nalabelle <nalabelle@gmail.com>
  Date : 2018-07-18 20:11:44 +0000

    Adds a test for successful path GET functionality, including
    deserialization into list 

  Change: 1a0de516b88a550757f95dd49df5cc6949e9c537
  Author: Desmond Daignault <nawglan@cpan.org>
  Date : 2018-07-18 21:46:59 +0000

    add authordep entries in dist.ini for missing development requires. 

  Change: 06bde4856347f02a147183cc0a282d7dccaead02
  Author: Kivanc Yazan <kyzn@cpan.org>
  Date : 2018-07-18 18:38:39 +0000

    Add [MetaProvides::Package] to dist.ini

    Without it, META.yml file is missing {provides}, which was reported
    as an "experimental issue" at
    https://cpants.cpanauthors.org/dist/WebService-Client 

  Change: 9cce32c5ca91f756e3d7a0eb0f06798cdd24f68d
  Author: Kivanc Yazan <kyzn@cpan.org>
  Date : 2018-07-18 18:29:55 +0000

    Add [MinimumPerl] to dist.ini

    Without it, META.yml file is missing {requires}{perl}, which was
    reported as an "extra issue" at
    https://cpants.cpanauthors.org/dist/WebService-Client 

-------------------------------------------
version 0.0601 at 2017-06-08 19:41:46 +0000
-------------------------------------------

  Change: 0702964927fbd2eca02ed81d8c869f9fcb4791ee
  Author: Naveed Massjouni <nmassjouni@harmonia.com>
  Date : 2017-06-08 15:41:46 +0000

    v0.0601 

  Change: a86219e52830ddddad430beecca5dea4a8599d3e
  Author: Naveed Massjouni <nmassjouni@harmonia.com>
  Date : 2017-06-08 15:39:18 +0000

    Fix #13, a json bug. 

-------------------------------------------
version 0.0600 at 2017-06-02 17:49:44 +0000
-------------------------------------------

  Change: abead5f53270b3c68d7c35688075ed20ce319058
  Author: Naveed Massjouni <nmassjouni@harmonia.com>
  Date : 2017-06-02 13:49:44 +0000

    v0.0600 

  Change: 680e0cbcd6b8647dede2ec51c735d657d1ab52c3
  Author: Naveed Massjouni <naveedm9@gmail.com>
  Date : 2017-06-01 10:05:15 +0000

    Merge pull request #12 from djzort/json_object

    Use a JSON object 

  Change: 99adcec2638b7dde6ab46354d9682d848781f1b0
  Author: Dean Hamstead <dean@fragfest.com.au>
  Date : 2017-06-01 21:13:27 +0000

    Use a json object, so it can be tweaked.

    Inspired by https://github.com/ironcamel/WebService-Client/pull/1 

  Change: 515233834f2cb257b4eda7c6eedb47ae8e29f47a
  Author: Dean Hamstead <dean@fragfest.com.au>
  Date : 2017-06-01 21:12:35 +0000

    Some suggestions only 

  Change: 270b4e77cda0ee03898143c6edfa2ec0e91b0d15
  Author: Dean Hamstead <dean@fragfest.com.au>
  Date : 2017-06-01 20:44:40 +0000

    Bump year 

  Change: 4c896c03328f2e43edff98a716cd794550d8f5a0
  Author: Naveed Massjouni <nmassjouni@harmonia.com>
  Date : 2017-04-26 10:16:46 +0000

    v0.0502 

  Change: b349c3555fc9d5ec367d1077cc439e8236e64c65
  Author: Naveed Massjouni <naveedm9@gmail.com>
  Date : 2017-04-26 10:09:48 +0000

    Merge pull request #10 from ByteFoundryAU/master

    use JSON::MaybeXS, this means JSON can go faster 

  Change: 8b5ff5fb2b87998c983e84db8cb3501b31f47c4c
  Author: Dean Hamstead <dean@fragfest.com.au>
  Date : 2017-04-26 08:20:08 +0000

    use JSON::MaybeXS, this means JSON can go faster 

  Change: cb77e11a9ef475abdec69f2be270b21ae0c94946
  Author: Naveed Massjouni <naveedm9@gmail.com>
  Date : 2015-12-16 04:01:11 +0000

    Merge pull request #9 from ironcamel/validate-retries

    validate that retries is a nonnegative int 

  Change: 7da3fef8d44008b78080151b9ae8fa26c83a8311
  Author: Naveed Massjouni <naveed@vt.edu>
  Date : 2015-12-16 03:49:32 +0000

    validate that retries is a nonnegative int 

================================================
Plus 9 releases after 2016-08-16 00:00:00 +0000.
================================================
