Releases: fedify-dev/fedify
Fedify 1.10.3
Released on February 1, 2026.
@fedify/fedify
- Fixed
traverseCollection()yielding no items when aCollectionhas an inlineCollectionPagein itsfirstproperty without an explicitid. This is common in Mastodon'srepliescollections. The function previously usedcollection.firstIdto determine pagination, which returnednullfor inline pages without anid, causing it to incorrectly fall into the non-paginated branch. [#550 by Lee Dogeon]
Fedify 1.9.5
Released on February 1, 2026.
@fedify/fedify
- Fixed
traverseCollection()yielding no items when aCollectionhas an inlineCollectionPagein itsfirstproperty without an explicitid. This is common in Mastodon'srepliescollections. The function previously usedcollection.firstIdto determine pagination, which returnednullfor inline pages without anid, causing it to incorrectly fall into the non-paginated branch. [#550 by Lee Dogeon]
Fedify 1.10.2
Released on January 23, 2026.
@fedify/testing
- Fixed
TestContext.getActorKeyPairs()returning empty array instead of calling registered key pairs dispatcher. The method now properly invokes the key pairs dispatcher when it is registered viasetKeyPairsDispatcher(). [#530]
Fedify 1.9.4
Released on January 23, 2026.
@fedify/testing
- Fixed
TestContext.getActorKeyPairs()returning empty array instead of calling registered key pairs dispatcher. The method now properly invokes the key pairs dispatcher when it is registered viasetKeyPairsDispatcher(). [#530]
Fedify 1.10.1
Released on January 22, 2026.
@fedify/testing
- Fixed
TestContext.getActor()andTestContext.getObject()returningnullinstead of calling registered dispatchers. The methods now properly invoke actor and object dispatchers when they are registered viasetActorDispatcher()andsetObjectDispatcher(). [#530]
Fedify 1.9.3
Released on January 22, 2026.
@fedify/testing
- Fixed
TestContext.getActor()andTestContext.getObject()returningnullinstead of calling registered dispatchers. The methods now properly invoke actor and object dispatchers when they are registered viasetActorDispatcher()andsetObjectDispatcher(). [#530]
Fedify 1.10.0
Released on December 24, 2025.
@fedify/fedify
-
Enhanced OpenTelemetry instrumentation with span events for capturing detailed activity data. Span events now record complete activity JSON payloads and verification status, enabling richer observability and debugging capabilities without relying solely on span attributes (which only support primitive values). [#323]
- Added
activitypub.activity.receivedspan event to theactivitypub.inboxspan, recording the full activity JSON, verification status (activity verified, HTTP signatures verified, Linked Data signatures verified), and actor information. - Added
activitypub.activity.sentspan event to theactivitypub.send_activityspan, recording the full activity JSON and target inbox URL. - Added
activitypub.object.fetchedspan event to theactivitypub.lookup_objectspan, recording the fetched object's type and complete JSON-LD representation.
- Added
-
Added OpenTelemetry spans for previously uninstrumented operations: [#323]
- Added
activitypub.fetch_documentspan for document loader operations, tracking URL fetching, HTTP redirects, and final document URLs. - Added
activitypub.verify_key_ownershipspan for cryptographic key ownership verification, recording actor ID, key ID, verification result, and the verification method used.
- Added
-
Added optional
list()method to theKvStoreinterface for enumerating entries by key prefix. This method takes an optionalprefixparameter; when omitted or empty, it returns all entries. This enables efficient prefix scanning which is useful for implementing features like distributed trace storage, cache invalidation by prefix, and listing related entries. [#498, #500]- Added
KvStoreListEntryinterface. - Implemented in
MemoryKvStore.
- Added
-
Added
FedifySpanExporterclass that persists ActivityPub activity traces to aKvStorefor distributed tracing support. This enables aggregating trace data across multiple nodes in a distributed deployment, making it possible to build debug dashboards that show complete request flows across web servers and background workers. [#497, #502]- Added
@fedify/fedify/otelmodule. - Added
FedifySpanExporterclass implementing OpenTelemetry'sSpanExporterinterface. - Added
TraceActivityRecordinterface for stored activity data, includingactorIdandsignatureDetailsfields for debug dashboard support. - Added
SignatureVerificationDetailsinterface for detailed signature verification information. - Added
TraceSummaryinterface for trace listing. - Added
FedifySpanExporterOptionsinterface. - Added
GetRecentTracesOptionsinterface. - Added
ActivityDirectiontype.
- Added
@fedify/nestjs
- Allowed Express 5 in the
expresspeer dependency range to support NestJS 11. [#492, #493 by Cho Hasang]
@fedify/sqlite
@fedify/postgres
@fedify/redis
@fedify/denokv
@fedify/cfworkers
Fedify 1.9.2
Released on December 20, 2025.
@fedify/fedify
- Fixed a ReDoS (Regular Expression Denial of Service) vulnerability in the document loader's HTML parsing. An attacker-controlled server could respond with a malicious HTML payload that blocked the event loop. [CVE-2025-68475]
@fedify/sqlite
- Fixed
SyntaxError: Identifier 'Temporal' has already been declarederror that occurred when usingSqliteKvStoreon Node.js or Bun. The error was caused by duplicateTemporalimports during the build process. [#487]
Fedify 1.8.15
Released on December 20, 2025.
@fedify/fedify
- Fixed a ReDoS (Regular Expression Denial of Service) vulnerability in the document loader's HTML parsing. An attacker-controlled server could respond with a malicious HTML payload that blocked the event loop. [CVE-2025-68475]
@fedify/sqlite
- Fixed
SyntaxError: Identifier 'Temporal' has already been declarederror that occurred when usingSqliteKvStoreon Node.js or Bun. The error was caused by duplicateTemporalimports during the build process. [#487]
Fedify 1.7.16
Released on December 20, 2025.
- Fixed a bug where the npm package failed to load at runtime with an error like
SyntaxError: The requested module '../types.js' does not provide an export named 'i'. This was a regression introduced in version 1.7.15.