Releases: fedify-dev/fedify
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
suppressError
option 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 toParseUriResult
type. - Renamed
linked
property (which was a typo) toliked
inApplication
,Group
,Organization
,Person
, andService
classes. - Added
Federation.setFeaturedDispatcher()
method. - Added
Context.getFeaturedUri()
method. - Added
{ type: "featured"; handle: string }
case toParseUriResult
type. - Added
Federation.setFeaturedTagsDispatcher()
method. - Added
Context.getFeaturedTagsUri()
method. - Added
{ type: "featuredTags"; handle: string }
case toParseUriResult
type.
- Added
-
Frequently used JSON-LD contexts are now preloaded. [#74]
-
The
fetchDocumentLoader()
function now preloads the following JSON-LD contexts: -
The default
rules
forkvCache()
function are now 5 minutes for all URLs.
-
-
Added
Invite
class to Activity Vocabulary API. [#65, #80 by Randy Wressell] -
Added
Join
class to Activity Vocabulary API. [#65, #80 by Randy Wressell] -
Added
Leave
class to Activity Vocabulary API. [#65, #80 by Randy Wressell] -
Added
Listen
class to Activity Vocabulary API. [#65, #80 by Randy Wressell] -
Added
Offer
class to Activity Vocabulary API. [#65, #76 by Lee Dogeon] -
The below properties of
Collection
andCollectionPage
in Activity Vocabulary API now do not acceptLink
objects:Collection.current
Collection.first
Collection.last
CollectionPage.partOf
CollectionPage.next
CollectionPage.prev
-
Added
featured
property toActor
types in Activity Vocabulary API. [#78]- Added
Application.getFeatured()
method. - Added
Application.featuredId
property. new Application()
constructor now acceptsfeatured
option.Application.clone()
method now acceptsfeatured
option.- Added
Group.getFeatured()
method. - Added
Group.featuredId
property. new Group()
constructor now acceptsfeatured
option.Group.clone()
method now acceptsfeatured
option.- Added
Organization.getFeatured()
method. - Added
Organization.featuredId
property. new Organization()
constructor now acceptsfeatured
option.Organization.clone()
method now acceptsfeatured
option.- Added
Person.getFeatured()
method. - Added
Person.featuredId
property. new Person()
constructor now acceptsfeatured
option.Person.clone()
method now acceptsfeatured
option.- Added
Service.getFeatured()
method. - Added
Service.featuredId
property. new Service()
constructor now acceptsfeatured
option.Service.clone()
method now acceptsfeatured
option.
- Added
-
Added
featuredTags
property toActor
types in Activity Vocabulary API. [#78]- Added
Application.getFeaturedTags()
method. - Added
Application.featuredTagsId
property. new Application()
constructor now acceptsfeaturedTags
option.Application.clone()
method now acceptsfeaturedTags
option.- Added
Group.getFeaturedTags()
method. - Added
Group.featuredTagsId
property. new Group()
constructor now acceptsfeaturedTags
option.Group.clone()
method now acceptsfeaturedTags
option.- Added
Organization.getFeaturedTags()
method. - Added
Organization.featuredTagsId
property. new Organization()
constructor now acceptsfeaturedTags
option.Organization.clone()
method now acceptsfeaturedTags
option.- Added
Person.getFeaturedTags()
method. - Added
Person.featuredTagsId
property. new Person()
constructor now acceptsfeaturedTags
option.Person.clone()
method now acceptsfeaturedTags
option.- Added
Service.getFeaturedTags()
method. - Added
Service.featuredTagsId
property. new Service()
constructor now acceptsfeaturedTags
option.Service.clone()
method now acceptsfeaturedTags
option.
- Added
-
Added
target
property toActivity
class in Activity Vocabulary API.- Added
Activity.getTarget()
method. - Added
Activity.getTargets()
method. - Added
Activity.targetId
property. - Added
Activity.targetIds
property. new Activity()
constructor now acceptstarget
option.new Activity()
constructor now acceptstargets
option.Activity.clone()
method now acceptstarget
option.Activity.clone()
method now acceptstargets
option.
- Added
-
Added
result
property toActivity
class in Activity Vocabulary API.- Added
Activity.getResult()
method. - Added
Activity.getResults()
method. - Added
Activity.resultId
property. - Added
Activity.resultIds
property. new Activity()
constructor now acceptsresult
option.new Activity()
constructor now acceptsresults
option.Activity.clone()
method now acceptsresult
option.Activity.clone()
method now acceptsresults
option.
- Added
-
Added
origin
property toActivity
class in Activity Vocabulary API.- Added
Activity.getOrigin()
method. - Added
Activity.getOrigins()
method. - Added
Activity.originId
property. - Added
Activity.originIds
property. new Activity()
constructor now acceptsorigin
option.new Activity()
constructor now acceptsorigins
option.Activity.clone()
method now acceptsorigin
option.Activity.clone()
method now acceptsorigins
option.
- Added
-
Added
instrument
property toActivity
class in Activity Vocabulary API.- Added
Activity.getInstrument()
method. - Added
Activity.getInstruments()
method. - Added
Activity.instrumentId
property. - Added
Activity.instrumentIds
property. new Activity()
constructor now acceptsinstrument
option.new Activity()
constructor now acceptsinstruments
option.Activity.clone()
method now acceptsinstrument
option.Activity.clone()
method now acceptsinstruments
option.
- Added
-
The
items
property ofOrderedCollection
andOrderedCollectionPage
in 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
SharedInboxKeyDispatcher
type. - Renamed
InboxListenerSetter
interface toInboxListenerSetters
. - Added
InboxListenerSetters.setSharedKeyDispatcher()
method.
- Added
-
Followed up the change in
eddsa-jcs-2022
specification 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
ActorKeyPair
interface. - Added
ActorCallbackSetters.setKeyPairsDispatcher()
method. - Added
ActorKeyPairsDispatcher
type. - Deprecated
ActorCallbackSetters.setKeyPairDispatcher()
method. - Deprecated
ActorKeyPairDispatcher
type. - Deprecated the third parameter of the
ActorDispatcher
callback type. UseContext.getActorKeyPairs()
method instead.
- Added
-
Added
Multikey
class to Activity Vocabulary API. [FEP-521a, #55]- Added
importMultibaseKey()
function. - Added
exportMultibaseKey()
function.
- Added
-
Added
assertionMethod
property to theActor
types in the Activity Vocabulary API. [FEP-521a, #55]- Added
Application.getAssertionMethod()
method. - Added
Application.getAssertionMethods()
method. new Application()
constructor now acceptsassertionMethod
option.new Application()
constructor now acceptsassertionMethods
option.Application.clone()
method now acceptsassertionMethod
option.Application.clone()
method now acceptsassertionMethods
option.- Added
Group.getAssertionMethod()
method. - Added
Group.getAssertionMethods()
method. new Group()
constructor now acceptsassertionMethod
option.new Group()
constructor now acceptsassertionMethods
option.Group.clone()
method now acceptsassertionMethod
option.Group.clone()
method now acceptsassertionMethods
option.- Added
Organization.getAssertionMethod()
method. - Added
Organization.getAssertionMethods()
method. new Organization()
constructor now acceptsassertionMethod
option.new Organization()
constructor now acceptsassertionMethods
option.Organization.clone()
method now acceptsassertionMethod
option.Organization.clone()
method now acceptsassertionMethods
option.- Added
Person.getAssertionMethod()
method. - Added
Person.getAssertionMethods()
method. new Person()
constructor now acceptsassertionMethod
option.new Person()
constructor now acceptsassertionMethods
option.Person.clone()
method now acceptsassertionMethod
option.Person.clone()
method now acceptsassertionMethods
option.- Added
Service.getAssertionMethod()
method. - Added
Service.getAssertionMethods()
method. new Service()
constructor now acceptsassertionMethod
option.new Service()
constructor now acceptsassertionMethods
option.Service.clone()
method now acceptsassertionMethod
option.Service.clone()
method now acceptsassertionMethods
option.
- Added
-
Added
DataIntegrityProof
class to Activity Vocabulary API. [FEP-8b32, #54] -
Added
proof
property to theObject
class in the Activity Vocabulary API. [FEP-8b32, #54]- Added
Object.getProof()
method. - Added
Object.getProofs()
method. new Object()
constructor now acceptsproof
option.new Object()
constructor now acceptsproofs
option.Object.clone()
method now acceptsproof
option.Object.clone()
method now acceptsproofs
option.
- 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
SignObjectOptions
interface. - Added
createProof()
function. - Added
CreateProofOptions
interface. - Added
verifyObject()
function. - Added
VerifyObjectOptions
interface. - Added
verifyProof()
function. - Added
VerifyProofOptions
interface. - Added
fetchKey()
function. - Added
FetchKeyOptions
interface. - Added
SenderKeyPair
interface. - 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,
Federation
class will become an interface. For the forward compatibility, the following changes are made:- Added
createFederation()
function. - Added
CreateFederationOptions
interface. - Deprecated
new Federation()
constructor. UsecreateFederation()
function instead. - Deprecated
FederationParameters
interface.
- Added
-
Added
Arrive
class to Activity Vocabulary API. [#65, #68 by Randy Wressell] -
Added
Question
class to Activity Vocabulary API. -
Added
context
option toObject.toJsonLd()
method. This applies to any subclasses of theObject
class too. -
Deprecated
treatHttps
option inFederationParameters
interface. Instead, use the x-forwarded-fetch library to recognize theX-Forwarded-Host
andX-Forwarded-Proto
headers. -
Removed the
Federation.handle()
method which was deprecated in version 0.6.0. -
Removed the
integrateHandlerOptions()
function from@fedify/fedify/x/fresh
which was deprecated in version 0.6.0. -
Ephemeral actors and inboxes that the
fedify inbox
command 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 inbox
command 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"]
Fedify 0.9.1
Released on June 13, 2024.
- Fixed a bug of Activity Vocabulary API that
clone()
method of Vocabulary classes had not cloned theid
property from the source object.
Fedify 0.9.0
Released on June 2, 2024.
-
Added
Tombstone
class to Activity Vocabulary API. -
Added
Hashtag
class to Activity Vocabulary API. [#48] -
Added
Emoji
class to Activity Vocabulary API. [#48] -
Added an actor handle normalization function.
- Added
normalizeActorHandle()
function. - Added
NormalizeActorHandleOptions
interface. - The
getActorHandle()
function now guarantees that the returned actor handle is normalized. - Added the second optional parameter to
getActorHandle()
function. - The return type of
getActorHandle()
function becamePromise<`@${string}@${string}` | `${string}@${string}`>
(wasPromise<`@${string}@${string}`>
).
- Added
-
Added
excludeBaseUris
option toContext.sendActivity()
andFederation.sendActivity()
methods.- Added
SendActivityOptions.excludeBaseUris
property. - Added
ExtractInboxesParameters.excludeBaseUris
property.
- Added
-
The
Context
now can parse URIs of objects, inboxes, and collections as well as actors.- Added
Context.parseUri()
method. - Added
ParseUriResult
type. - Deprecated
Context.getHandleFromActorUri()
method.
- Added
-
The time window for signature verification is now configurable. [#52]
- The default time window for signature verification is now a minute (was 30 seconds).
- Added
signatureTimeWindow
option toFederationParameters
interface. - Added
VerifyOptions
interface. - The signature of the
verify()
function is revamped; it now optionally takes aVerifyOptions
object as the second parameter.
-
Renamed the
@fedify/fedify/httpsig
module to@fedify/fedify/sig
, and also:- Deprecated
sign()
function. UsesignRequest()
instead. - Deprecated
verify()
function. UseverifyRequest()
instead. - Deprecated
VerifyOptions
interface. UseVerifyRequestOptions
instead.
- Deprecated
-
When signing an HTTP request, the
algorithm
parameter is now added to theSignature
header. This change improves the compatibility with Misskey and other implementations that require thealgorithm
parameter. -
Added more log messages using the LogTape library. Currently the below logger categories are used:
["fedify", "federation", "actor"]
["fedify", "federation", "http"]
["fedify", "sig", "http"]
["fedify", "sig", "key"]
["fedify", "sig", "owner"]