* 2024-08-19

Release =v4.0.0= has been tagged.

This release contains breaking changes.

Minimum Go version required to use =go-vcr= is set to =1.22=.

The import path for =recorder= and =cassette= packages has changed and now they
reside in:

- =gopkg.in/dnaeon/go-vcr.v4/pkg/cassette=
- =gopkg.in/dnaeon/go-vcr.v4/pkg/recorder=

Only version =2= of the cassette format is now supported.

The =recorder.Options= struct has been removed. Instead of it, we can now use
functional options to configure the recorder.

The following =recorder.Option= functions may be used to configure the recorder.

- =recorder.WithCassette= - sets the name of the cassette
- =recorder.WithMode= - sets the mode of the recorder
- =recorder.WithRealTransport= - sets the underlying transport used by =go-vcr=.
- =recorder.WithBlockUnsafeMethods= - blocks unsafe methods, if set to =true=.
- =recorder.WithSkipRequestLatency= - simulates request/response latency, if set to =true=.
- =recorder.WithPassthrough= - configures passthrough handlers
- =recorder.WithHook= - configures recorder hooks
- =recorder.WithMatcher= - configures the matcher to be used
- =recorder.WithReplayableInteractions= - allows interactions to be replayed multiple times, if set to =true=.

The =cassette.OnRequestReplayFunc= type has been removed. Instead of it, users
should use a =recorder.BeforeResponseReplayHook=.

The =cassette.DefaultMatcher= is now stricter. See [[https://github.com/dnaeon/go-vcr/pull/98][#98]] and [[https://github.com/dnaeon/go-vcr/pull/99][#99]] for more details.

Added support for blocking Unsafe HTTP Methods. The definition of Safe Methods
comes from [[https://datatracker.ietf.org/doc/html/rfc9110#name-safe-methods][RFC 9110, section 9.2.1]]. See [[https://github.com/dnaeon/go-vcr/pull/100][#100]] for more details.

Added support for server-side recording and replaying. See [[https://github.com/dnaeon/go-vcr/pull/101][#101]] for more
details.

* 2024-03-13

Release =v3.2.0= has been tagged.

Added helper method =Interaction.WasReplayed()= and a new hook kind, which will
execute hooks when the recorder is about to be stopped - =OnRecorderStopHook=.

See [[https://github.com/dnaeon/go-vcr/issues/91][#91]] and [[https://github.com/dnaeon/go-vcr/issues/92][#92]] for more details.

* 2022-10-25

Release =v3.1.2= has been tagged.

New field called =DiscardOnSave= has been added to the
=cassette.Interaction= type, which allows for a hook to set it to
=true=, and as a result to discard the interaction from saving it on
disk.

See [[https://github.com/dnaeon/go-vcr/issues/80][#80]] for more details.

* 2022-09-27

Release =v3.1.1= has been tagged.

Cassettes with no recorded interactions will be saved on
disk. Previous behaviour was to skip saving the cassette at all.

See [[https://github.com/dnaeon/go-vcr/pull/79][PR #79]] for more details.

* 2022-08-23

Release =v3.1.0= has been tagged.

**NOTE**: This version contains breaking API change.

Summary of changes since previous release.

- The =recorder.FilterFunc= has been removed. It is now replaced by
  =recorder.HookFunc= type.
- The =Recorder.AddFilter()= and =Recorder.AddPreSaveFilter()= methods
  have been removed. They are now replaced by the =Recorder.AddHook()=
  method.
- Added different kinds of hooks supported by the recorder -
  =AfterCaptureHook=, =BeforeSaveHook= and =BeforeResponseReplayHook=.

* 2022-08-20

Release =v3.0.1= has been tagged.

Minor updates, adding two new utility methods to the recorder, which
can be used to inspect the state of the recorder and the cassette.

- =IsRecording()=
- =IsNewCassette()=

See issue #76

* 2022-08-19

=go-vcr v3= has been released and tagged as =v3.0.0=.

**NOTE**: This release is not backwards-compatible with previous
versions of the cassettes. If you are upgrading to =v3= you should
re-create your test cassettes.

A summary of changes for this release:

- API has been refactored and cleaned up
- Custom recorder options are now specified as =recorder.Options=
- The recorder modes which are now supported are =ModeRecordOnly=,
  =ModeRecordOnce=, =ModeReplayOnly=, =ModeReplayWithNewEpisodes= and
  =ModePassthrough=. Please refer to the API documentation for more
  details on their use cases
- In order to create recorders with custom options you should use the
  =recorder.NewWithOptions= function from now on
- The default mode of the recorder is now =ModeRecordOnce=
- =ModeDisabled= has been removed and is now replaced by
  =ModePassthrough=
- Cassette format has been changed and the supported version of the
  cassette from now on is =v2=.
- Additional fields have been added to the cassette to allow
  developers to create more complex matchers based on the existing
  fields
- Each interaction in the cassette now has a unique integer id,
  specifying the position of the interaction in the cassette. See
  issue #22
- Utility method on the recorder can now return a pre-configured HTTP
  client with the recorder's transport - =GetDefaultClient()=
- CI/CD pipeline has been transferred to Github actions
- Closed out some long standing issues
- Extended and refactored test cases
- etc

* 2022-08-16

=v2.3.0= has been released.

- Cleaned up =v2= package structure
- Switched from =gopkg.in/yaml.v2= to =gopkg.in/yaml.v3=
- Package import path for =go-vcr= has changed from
  =github.com/dnaeon/go-vcr= to =gopkg.in/dnaeon/go-vcr.v2=. See #73
- =v2= of =go-vcr= resides in the =v2= branch, which is now the default
- Fixed a regression where the default mode of the recorder has been
  changed. See issue #72

* 2022-08-15

=v2.1.0= has been released.

Switch to =gopkg.in/yaml.v3=.

See issues #70 and #71

* 2021-06-24

=go-vcr= has been tagged =v2.0.1=.

This release contains a breaking change. When upgrading to =v2.0.0=
make sure that you re-create your cassettes.

A new flag of the =recorder.Recorder= (=SkipRequestLatency=) is
supported which allows to skip latency simulation during replay.

See #63 for more details.

* 2018-11

Version =v1.0.0=. has been released

* 2015-12

Initial version of =go-vcr=.
