v1.0.0 2020-07-09

* Rename Callbacks to FederatingCallbacks in FederatingProtocol.
* Rename Callbacks to SocialCallbacks in SocialProtocol.
* Rename NewID to NewID on the Database interface.
* Added approx. 200 unit tests at ~70% LOC coverage.
* More fixes where nil pointers would be dereferenced.
* Modified programmatic delivery to be lenient instead of strict.
* Even more 'astool' bugfixes to handle multiple vocabulary code generation.
* Added request lifecycle hooks to allow implementations greater control when
      using the 'context' standard library package and its 'Context'.
* Fixed bugs in programmatic delivery, handling rare forms of HTTP successes,
      handling of JSON-LD's @context, race conditions.
* Provide a Mastodon-compliant http-signatures Transport implementation, when
      using the github.com/go-fed/httpsig library.
* Support programmatic sending of Activities
* Added support for 3 vocabularies in addition to ActivityStreams: toot
      (Mastodon), security v1, and ForgeFed.
* Modify 'astool' to address quirky logic and underspecification in various
      vocabulary definitions.
* Fixed bugs in the 'astool' logic.
* Added more helpful functions to the code generated by 'astool'.
* Inbox forwarding bug fixes.
* Migrate to go modules.

2019-02-24

* Removed 'tools'.
* Removed 'vocab'.
* Removed 'deliver'.
* Created the new 'astool' for code-generating any ActivityStreams vocabulary.
* The 'streams' package has entirely been redesigned and regenerated.
* The 'pub' package has been redesigned to be extensible, and has had concepts
      previously abstracted, such as security, removed in favor of opaque
      methods that are up to the application to implement.
* This succinct summary betrays the size, scope, and effort into rethinking
      this ActivityPub library.

v0.4.0 2018-11-17

* The 'streams' package now has constructors for each of its generated types.
* The README now lists WriteFreely instead of Write.as as a user of this
      library, though Write.as does also use go-fed. WriteFreely is the open-
      source fork of the proprietary Write.as.
* The 'tools/exp' subdirectory contains a half-built work-in-progress tool that
      will be used to generate the v1.X versions of this library. It does not
      materially affect the v0.X versions' functionality nor its code
      generation. Its presence is merely a consequence of the go-fed/activity
      maintainer [continuing to] fail at using git branches.

v0.3.0 2018-08-21

* Interfaces in 'vocab' now properly contain all of the unknown methods
      available for all properties. These methods were available on the structs
      themselves but only partially listed in the interfaces. Specifically,
      multiply-typed properties (regardless of being functional or not) were
      omitted.
* 'pub' now supports Announce activities' default behavior. Upon receiving an
      Announce activity via S2S, it is added to the 'shares' property of
      object(s) owned in the application.
* Add the missing 'shares' property to 'vocab.Object' and its child types as
      well as 'streams.Object' and its child types. It is an ActivityPub
      specific property not a part of the ActivityStreams specification.
* The Callbackers for the SocialAPI and FederateAPI can have additional
      methods of the form 'X(c context.Context, s *streams.X) error' where X is
      a Core or Extended type not already a part of the Callbacker interface.
      This lets client applications decide which Activity types need further
      handling, without being burdened of implementing unused stub methods. The
      new Activities supported have no default behavior supported by 'pub',
      except for the Announce activity as desribed above. An exhaustive list of
      Activities that can be X (as mentioned above) are:
          - Announce
          - Arrive
          - Dislike
          - Flag
          - Ignore
          - Invite
          - Join
          - Leave
          - Listen
          - Move
          - Offer
          - Question
          - Read
          - TentativeAccept
          - TentativeReject
          - Travel
          - View
* The 'vocab' package now properly generates Intransitive Activity subtype
      structs such that they are now convertible to the
      vocab.IntransitiveActivityType interface.
* Types in the 'vocab' package now support setting, getting, removing, and
      testing existence for unknown properties (extended properties).

v0.2.1 2018-08-19

* Request body is now correctly copied when sending federation messages.
* Change RWType and FollowResponse to bool and uint8, respectively.
* Update README with applications using the go-fed/activity library.
* Update README with links to official implementation reports for go-fed.
* Add unit test to document behavior when maxDeliveryDepth is set to zero.

v0.2.0 2018-08-04

* Begin FederateAPI unofficial implementation report.
* All 'vocab.Object' types and types extending from 'vocab.Object' now have an
      'IsPublic' method that will return true if the 'to', 'bto', 'cc', or 'bcc'
      properties have the ActivityPub special Public collection IRI. The
      'streams' types also have a corresponding 'IsPublic' method.
* Use 'OrderedCollection' as the default type for 'likes', 'liked',
      'following', and 'followers' properties if the actor or object does not
      have an IRI, 'Collection', or 'OrderedCollection' set for these
      properties.
* Examine the IRI of 'objects' when applying the Origin Check policy for Update
      and Delete activities.
* If a federated Activity was already received, do not execute its side effects
      a second time.
* Add 'Like' activities to the 'likes' collection, instead of adding the
      actors. This was a specification-violating behavior.
* No longer try to fetch IRIs when deduping by IRI.
* Remove unused methods from fed_test.go.
* Fix Media Type header detection for ActivityPub messages.
* Improve code generation to remove 230,000 lines of code from the vocab
      package.
* Add list of contributors to CONTRIBUTING.md.
* README examples are tagged with golang syntax highlighting.

v0.1.1 2018-06-13

* Begin SocialAPI unofficial implementation report.
* Improved HTTP header detection for ActivityPub requests.
* Activities added to outboxes are now Set (in addition to the outbox itself).
* Fixed panic where the 'bcc' and 'bto' properties were improperly guarded.
* Fixed authn/authz shadowing when serving ActivityStream objects, causing only
      HTTP Signatures to be enforced.
* Under certain circumstances, IRIs will be fetched when an Add Activity is
      received. This behavior is a stepping stone towards a comprehensive
      solution in a future patch.
* SocialAPI Undo Activity has actors enforced the same way as the FederatedAPI.
* IRI normalization: Objects, Activities, and Links will no longer be duplicated
      when added to Collection types. Instead, IRIs are added.
* Serving ActivityStream objects will now remove the 'bcc' and 'bto' properties.
* Serving a Tombstone ActivityStream response now uses the HTTP 410 Gone status
      code.
* The 'vocab' and 'streams' subpackages now generate code to multiple files
      instead of a single large one.
* The 'deliverer' subpackage now has test coverage.

v0.1.0 2018-05-30

* Initial release of the 'deliverer' subpackage.
* Initial release of the 'pub' subpackage.
* Initial release of the 'streams' subpackage.
* Initial release of the 'tools' subpackage.
* Initial release of the 'vocab' subpackage.
* Support for ActivityStream static types in Go.
* Support for ActivityStream serialization and deserialization.
* Support for ActivityPub POST and GET to actor inboxes.
* Support for ActivityPub POST and GET to actor outboxes.
* Support for SocialAPI, FederatedAPI, or both for inbox and outboxes.
* Support for ActivityPub GET to fetch ActivityStreams.
* Support for HTTP Signature verification.
* Support for basic SocialAPI Activity behaviors.
* Support for basic FederatedAPI Activity behaviors.
* Support for Application-customized authn/authz behaviors.
* Support for Tombstone for Delete Activities.
* Test 'vocab' against examples in the spec.
* Test 'streams' against the test repository.
* Test 'pub' with over >100 end-to-end black box tests.
