activity/CHANGELOG.md

8.1 KiB

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.