Releases: fedify-dev/fedify
Fedify 0.12.0
Released on July 24, 2024.
-
The
fedifycommand is now available on npm. [#104] -
Incoming activities are now queued before being dispatched to the inbox listener if the
queueoption is provided to thecreateFederation()function. [#70]- The type of
InboxListenercallback type's first parameter becameContext(wasRequestContext). - The type of
InboxErrorHandlercallback type's first parameter becameContext(wasRequestContext). - The type of
SharedInboxKeyDispatchercallback type's first parameter becameContext(wasRequestContext).
- The type of
-
Implemented fully customizable retry policy for failed tasks in the task queue. By default, the task queue retries the failed tasks with an exponential backoff policy with decorrelated jitter.
- Added
outboxRetryPolicyoption toCreateFederationOptionsinterface. - Added
inboxRetryPolicyoption toCreateFederationOptionsinterface. [#70] - Added
RetryPolicycallback type. - Added
RetryContextinterface. - Added
createExponentialBackoffPolicy()function. - Added
CreateExponentialBackoffPolicyOptionsinterface.
- Added
-
Federationobject now allows its task queue to be started manually. [#53]- Added
manuallyStartQueueoption toCreateFederationOptionsinterface. - Added
Federation.startQueue()method.
- Added
-
Made the router able to be insensitive to trailing slashes in the URL paths. [#81]
- Added
trailingSlashInsensitiveoption toCreateFederationOptionsinterface. - Added
RouterOptionsinterface. - Added an optional parameter to
new Router()constructor.
- Added
-
Added
ChatMessageclass to Activity Vocabulary API. [#85] -
Added
Moveclass to Activity Vocabulary API. [#65, #92 by Lee Dogeon] -
Added
Readclass to Activity Vocabulary API. [#65, #92 by Lee Dogeon] -
Added
Travelclass to Activity Vocabulary API. [#65, #92 by Lee Dogeon] -
Added
Viewclass to Activity Vocabulary API. [#65, #92 by Lee Dogeon] -
Added
TentativeAcceptclass to Activity Vocabulary API. [#65, #92 by Lee Dogeon] -
Added
TentativeRejectclass to Activity Vocabulary API. [#65, #92 by Lee Dogeon] -
Improved multitenancy (virtual hosting) support. [#66]
- Added
Context.hostnameproperty. - Added
Context.hostproperty. - Added
Context.originproperty. - The type of
ActorKeyPairsDispatcher<TContextData>'s first parameter becameContext(wasTContextData).
- Added
-
During verifying HTTP Signatures and Object Integrity Proofs, once fetched public keys are now cached. [#107]
- The
verifyRequest()function now caches the fetched public keys when thekeyCacheoption is provided. - The
verifyProof()function now caches the fetched public keys when thekeyCacheoption is provided. - The
verifyObject()function now caches the fetched public keys when thekeyCacheoption is provided. - Added
KeyCacheinterface. - Added
VerifyRequestOptions.keyCacheproperty. - Added
VerifyProofOptions.keyCacheproperty. - Added
VerifyObjectOptions.keyCacheproperty. - Added
FederationKvPrefixes.publicKeyproperty.
- The
-
The built-in document loaders now recognize JSON-LD context provided in an HTTP
Linkheader. [#6]- The
fetchDocumentLoader()function now recognizes theLinkheader with thehttp://www.w3.org/ns/json-ld#contextlink relation. - The
getAuthenticatedDocumentLoader()function now returns a document loader that recognizes theLinkheader with thehttp://www.w3.org/ns/json-ld#contextlink relation.
- The
-
Deprecated
Federation.sendActivity()method. UseContext.sendActivity()method instead. -
The last parameter of
Federation.sendActivity()method is no longer optional. Also, it now takes the requiredcontextDataoption. -
Removed
Context.getHandleFromActorUri()method which was deprecated in version 0.9.0. UseContext.parseUri()method instead. -
Removed
@fedify/fedify/httpsigmodule which was deprecated in version 0.9.0. Use@fedify/fedify/sigmodule instead.- Removed
sign()function. - Removed
verify()function. - Removed
VerifyOptionsinterface.
- Removed
-
Fixed a bug where the
lookupWebFinger()function had incorrectly queried if the givenresourcewas a URL starts withhttp:or had a non-default port number. -
Fixed a SSRF vulnerability in the built-in document loader. [CVE-2024-39687]
- The
fetchDocumentLoader()function now throws an error when the given URL is not an HTTP or HTTPS URL or refers to a private network address. - Added an optional second parameter to the
fetchDocumentLoader()function, which can be used to allow fetching private network addresses. - The
getAuthenticatedDocumentLoader()function now returns a document loader that throws an error when the given URL is not an HTTP or HTTPS URL or refers to a private network address. - Added an optional second parameter to the
getAuthenticatedDocumentLoader()function, which can be used to allow fetching private network addresses.
- The
-
Added
fedify initsubcommand. [#105] -
Added more log messages using the LogTape library. Currently the below logger categories are used:
["fedify", "federation", "queue"]
Fedify 0.11.3
Released on July 15, 2024.
- Fixed a bug where use of
Federation.setInboxDispatcher()afterFederation.setInboxListeners()had caused aRouterErrorto be thrown even if the paths match. [#101 by Fabien O'Carroll]
Fedify 0.11.2
Released on July 9, 2024.
-
Fixed a vulnerability of SSRF via DNS rebinding in the built-in document loader. [CVE-2024-39687]
- The
fetchDocumentLoader()function now throws an error when the given domain name has any records referring to a private network address. - The
getAuthenticatedDocumentLoader()function now returns a document loader that throws an error when the given domain name has any records referring to a private network address.
- The
Fedify 0.10.2
Released on July 9, 2024.
-
Fixed a vulnerability of SSRF via DNS rebinding in the built-in document loader. [CVE-2024-39687]
- The
fetchDocumentLoader()function now throws an error when the given domain name has any records referring to a private network address. - The
getAuthenticatedDocumentLoader()function now returns a document loader that throws an error when the given domain name has any records referring to a private network address.
- The
Fedify 0.9.3
Released on July 9, 2024.
-
Fixed a vulnerability of SSRF via DNS rebinding in the built-in document loader. [CVE-2024-39687]
- The
fetchDocumentLoader()function now throws an error when the given domain name has any records referring to a private network address. - The
getAuthenticatedDocumentLoader()function now returns a document loader that throws an error when the given domain name has any records referring to a private network address.
- The
Fedify 0.11.1
Released on July 5, 2024.
-
Fixed a SSRF vulnerability in the built-in document loader. [CVE-2024-39687]
- The
fetchDocumentLoader()function now throws an error when the given URL is not an HTTP or HTTPS URL or refers to a private network address. - The
getAuthenticatedDocumentLoader()function now returns a document loader that throws an error when the given URL is not an HTTP or HTTPS URL or refers to a private network address.
- The
Fedify 0.10.1
Released on July 5, 2024.
-
Fixed a SSRF vulnerability in the built-in document loader. [CVE-2024-39687]
- The
fetchDocumentLoader()function now throws an error when the given URL is not an HTTP or HTTPS URL or refers to a private network address. - The
getAuthenticatedDocumentLoader()function now returns a document loader that throws an error when the given URL is not an HTTP or HTTPS URL or refers to a private network address.
- The
Fedify 0.9.2
Released on July 5, 2024.
-
Fixed a SSRF vulnerability in the built-in document loader. [CVE-2024-39687]
- The
fetchDocumentLoader()function now throws an error when the given URL is not an HTTP or HTTPS URL or refers to a private network address. - The
getAuthenticatedDocumentLoader()function now returns a document loader that throws an error when the given URL is not an HTTP or HTTPS URL or refers to a private network address.
- The
Fedify 0.11.0
Released on June 29, 2024.
-
Improved runtime type error messages for Activity Vocabulary API. [#79]
-
Added
suppressErroroption to dereferencing accessors of Activity Vocabulary classes. -
Added more collection dispatchers. [#78]
- Added
Federation.setInboxDispatcher()method. [#71] - Added
Federation.setLikedDispatcher()method. - Added
Context.getLikedUri()method. - Added
{ type: "liked"; handle: string }case toParseUriResulttype. - Renamed
linkedproperty (which was a typo) tolikedinApplication,Group,Organization,Person, andServiceclasses. - Added
Federation.setFeaturedDispatcher()method. - Added
Context.getFeaturedUri()method. - Added
{ type: "featured"; handle: string }case toParseUriResulttype. - Added
Federation.setFeaturedTagsDispatcher()method. - Added
Context.getFeaturedTagsUri()method. - Added
{ type: "featuredTags"; handle: string }case toParseUriResulttype.
- Added
-
Frequently used JSON-LD contexts are now preloaded. [#74]
-
The
fetchDocumentLoader()function now preloads the following JSON-LD contexts: -
The default
rulesforkvCache()function are now 5 minutes for all URLs.
-
-
Added
Inviteclass to Activity Vocabulary API. [#65, #80 by Randy Wressell] -
Added
Joinclass to Activity Vocabulary API. [#65, #80 by Randy Wressell] -
Added
Leaveclass to Activity Vocabulary API. [#65, #80 by Randy Wressell] -
Added
Listenclass to Activity Vocabulary API. [#65, #80 by Randy Wressell] -
Added
Offerclass to Activity Vocabulary API. [#65, #76 by Lee Dogeon] -
The below properties of
CollectionandCollectionPagein Activity Vocabulary API now do not acceptLinkobjects:Collection.currentCollection.firstCollection.lastCollectionPage.partOfCollectionPage.nextCollectionPage.prev
-
Added
featuredproperty toActortypes in Activity Vocabulary API. [#78]- Added
Application.getFeatured()method. - Added
Application.featuredIdproperty. new Application()constructor now acceptsfeaturedoption.Application.clone()method now acceptsfeaturedoption.- Added
Group.getFeatured()method. - Added
Group.featuredIdproperty. new Group()constructor now acceptsfeaturedoption.Group.clone()method now acceptsfeaturedoption.- Added
Organization.getFeatured()method. - Added
Organization.featuredIdproperty. new Organization()constructor now acceptsfeaturedoption.Organization.clone()method now acceptsfeaturedoption.- Added
Person.getFeatured()method. - Added
Person.featuredIdproperty. new Person()constructor now acceptsfeaturedoption.Person.clone()method now acceptsfeaturedoption.- Added
Service.getFeatured()method. - Added
Service.featuredIdproperty. new Service()constructor now acceptsfeaturedoption.Service.clone()method now acceptsfeaturedoption.
- Added
-
Added
featuredTagsproperty toActortypes in Activity Vocabulary API. [#78]- Added
Application.getFeaturedTags()method. - Added
Application.featuredTagsIdproperty. new Application()constructor now acceptsfeaturedTagsoption.Application.clone()method now acceptsfeaturedTagsoption.- Added
Group.getFeaturedTags()method. - Added
Group.featuredTagsIdproperty. new Group()constructor now acceptsfeaturedTagsoption.Group.clone()method now acceptsfeaturedTagsoption.- Added
Organization.getFeaturedTags()method. - Added
Organization.featuredTagsIdproperty. new Organization()constructor now acceptsfeaturedTagsoption.Organization.clone()method now acceptsfeaturedTagsoption.- Added
Person.getFeaturedTags()method. - Added
Person.featuredTagsIdproperty. new Person()constructor now acceptsfeaturedTagsoption.Person.clone()method now acceptsfeaturedTagsoption.- Added
Service.getFeaturedTags()method. - Added
Service.featuredTagsIdproperty. new Service()constructor now acceptsfeaturedTagsoption.Service.clone()method now acceptsfeaturedTagsoption.
- Added
-
Added
targetproperty toActivityclass in Activity Vocabulary API.- Added
Activity.getTarget()method. - Added
Activity.getTargets()method. - Added
Activity.targetIdproperty. - Added
Activity.targetIdsproperty. new Activity()constructor now acceptstargetoption.new Activity()constructor now acceptstargetsoption.Activity.clone()method now acceptstargetoption.Activity.clone()method now acceptstargetsoption.
- Added
-
Added
resultproperty toActivityclass in Activity Vocabulary API.- Added
Activity.getResult()method. - Added
Activity.getResults()method. - Added
Activity.resultIdproperty. - Added
Activity.resultIdsproperty. new Activity()constructor now acceptsresultoption.new Activity()constructor now acceptsresultsoption.Activity.clone()method now acceptsresultoption.Activity.clone()method now acceptsresultsoption.
- Added
-
Added
originproperty toActivityclass in Activity Vocabulary API.- Added
Activity.getOrigin()method. - Added
Activity.getOrigins()method. - Added
Activity.originIdproperty. - Added
Activity.originIdsproperty. new Activity()constructor now acceptsoriginoption.new Activity()constructor now acceptsoriginsoption.Activity.clone()method now acceptsoriginoption.Activity.clone()method now acceptsoriginsoption.
- Added
-
Added
instrumentproperty toActivityclass in Activity Vocabulary API.- Added
Activity.getInstrument()method. - Added
Activity.getInstruments()method. - Added
Activity.instrumentIdproperty. - Added
Activity.instrumentIdsproperty. new Activity()constructor now acceptsinstrumentoption.new Activity()constructor now acceptsinstrumentsoption.Activity.clone()method now acceptsinstrumentoption.Activity.clone()method now acceptsinstrumentsoption.
- Added
-
The
itemsproperty ofOrderedCollectionandOrderedCollectionPagein Activity Vocabulary API is now represented asorderedItems(wasitems) in JSON-LD. -
The key pair or the key pair for signing outgoing HTTP requests made from the shared inbox now can be configured. This improves the compatibility with other ActivityPub implementations that require authorized fetches (i.e., secure mode).
- Added
SharedInboxKeyDispatchertype. - Renamed
InboxListenerSetterinterface toInboxListenerSetters. - Added
InboxListenerSetters.setSharedKeyDispatcher()method.
- Added
-
Followed up the change in
eddsa-jcs-2022specification for Object Integrity Proofs. [FEP-8b32, #54]
Fedify 0.10.0
Released on June 18, 2024.
Starting with this release, Fedify, previously distributed under AGPL 3.0, is now distributed under the MIT License to encourage wider adoption.
-
Besides RSA-PKCS#1-v1.5, Fedify now supports Ed25519 for signing and verifying the activities. [#55]
- Added an optional parameter to
generateCryptoKeyPair()function,algorithm, which can be either"RSASSA-PKCS1-v1_5"or"Ed25519". - The
importJwk()function now accepts Ed25519 keys. - The
exportJwk()function now exports Ed25519 keys. - The
importSpki()function now accepts Ed25519 keys. - The
exportJwk()function now exports Ed25519 keys.
- Added an optional parameter to
-
Now multiple key pairs can be registered for an actor. [FEP-521a, #55]
- Added
Context.getActorKeyPairs()method. - Deprecated
Context.getActorKey()method. UseContext.getActorKeyPairs()method instead. - Added
ActorKeyPairinterface. - Added
ActorCallbackSetters.setKeyPairsDispatcher()method. - Added
ActorKeyPairsDispatchertype. - Deprecated
ActorCallbackSetters.setKeyPairDispatcher()method. - Deprecated
ActorKeyPairDispatchertype. - Deprecated the third parameter of the
ActorDispatchercallback type. UseContext.getActorKeyPairs()method instead.
- Added
-
Added
Multikeyclass to Activity Vocabulary API. [FEP-521a, #55]- Added
importMultibaseKey()function. - Added
exportMultibaseKey()function.
- Added
-
Added
assertionMethodproperty to theActortypes in the Activity Vocabulary API. [FEP-521a, #55]- Added
Application.getAssertionMethod()method. - Added
Application.getAssertionMethods()method. new Application()constructor now acceptsassertionMethodoption.new Application()constructor now acceptsassertionMethodsoption.Application.clone()method now acceptsassertionMethodoption.Application.clone()method now acceptsassertionMethodsoption.- Added
Group.getAssertionMethod()method. - Added
Group.getAssertionMethods()method. new Group()constructor now acceptsassertionMethodoption.new Group()constructor now acceptsassertionMethodsoption.Group.clone()method now acceptsassertionMethodoption.Group.clone()method now acceptsassertionMethodsoption.- Added
Organization.getAssertionMethod()method. - Added
Organization.getAssertionMethods()method. new Organization()constructor now acceptsassertionMethodoption.new Organization()constructor now acceptsassertionMethodsoption.Organization.clone()method now acceptsassertionMethodoption.Organization.clone()method now acceptsassertionMethodsoption.- Added
Person.getAssertionMethod()method. - Added
Person.getAssertionMethods()method. new Person()constructor now acceptsassertionMethodoption.new Person()constructor now acceptsassertionMethodsoption.Person.clone()method now acceptsassertionMethodoption.Person.clone()method now acceptsassertionMethodsoption.- Added
Service.getAssertionMethod()method. - Added
Service.getAssertionMethods()method. new Service()constructor now acceptsassertionMethodoption.new Service()constructor now acceptsassertionMethodsoption.Service.clone()method now acceptsassertionMethodoption.Service.clone()method now acceptsassertionMethodsoption.
- Added
-
Added
DataIntegrityProofclass to Activity Vocabulary API. [FEP-8b32, #54] -
Added
proofproperty to theObjectclass in the Activity Vocabulary API. [FEP-8b32, #54]- Added
Object.getProof()method. - Added
Object.getProofs()method. new Object()constructor now acceptsproofoption.new Object()constructor now acceptsproofsoption.Object.clone()method now acceptsproofoption.Object.clone()method now acceptsproofsoption.
- Added
-
Implemented Object Integrity Proofs. [FEP-8b32, #54]
- If there are any Ed25519 key pairs, the
Context.sendActivity()andFederation.sendActivity()methods now make Object Integrity Proofs for the activity to be sent. - If the incoming activity has Object Integrity Proofs, the inbox listener now verifies them and ignores HTTP Signatures (if any).
- Added
signObject()function. - Added
SignObjectOptionsinterface. - Added
createProof()function. - Added
CreateProofOptionsinterface. - Added
verifyObject()function. - Added
VerifyObjectOptionsinterface. - Added
verifyProof()function. - Added
VerifyProofOptionsinterface. - Added
fetchKey()function. - Added
FetchKeyOptionsinterface. - Added
SenderKeyPairinterface. - The type of
Federation.sendActivity()method's first parameter becameSenderKeyPair[](was{ keyId: URL; privateKey: CryptoKey }). - The
Context.sendActivity()method's first parameter now acceptsSenderKeyPair[]as well.
- If there are any Ed25519 key pairs, the
-
In the future,
Federationclass will become an interface. For the forward compatibility, the following changes are made:- Added
createFederation()function. - Added
CreateFederationOptionsinterface. - Deprecated
new Federation()constructor. UsecreateFederation()function instead. - Deprecated
FederationParametersinterface.
- Added
-
Added
Arriveclass to Activity Vocabulary API. [#65, #68 by Randy Wressell] -
Added
Questionclass to Activity Vocabulary API. -
Added
contextoption toObject.toJsonLd()method. This applies to any subclasses of theObjectclass too. -
Deprecated
treatHttpsoption inFederationParametersinterface. Instead, use the x-forwarded-fetch library to recognize theX-Forwarded-HostandX-Forwarded-Protoheaders. -
Removed the
Federation.handle()method which was deprecated in version 0.6.0. -
Removed the
integrateHandlerOptions()function from@fedify/fedify/x/freshwhich was deprecated in version 0.6.0. -
Ephemeral actors and inboxes that the
fedify inboxcommand spawns are now more interoperable with other ActivityPub implementations.- Ephemeral actors now have the following properties:
summary,following,followers,outbox,manuallyApprovesFollowers, andurl. - Improved the compatibility of the
fedify inboxcommand with Misskey and Mitra.
- Ephemeral actors now have the following properties:
-
Added more log messages using the LogTape library. Currently the below logger categories are used:
["fedify", "sig", "proof"]["fedify", "sig", "key"]["fedify", "vocab", "lookup"]["fedify", "webfinger", "lookup"]