Releases: fedify-dev/fedify
Fedify 1.9.1
Released on October 31, 2025.
@fedify/testing
-
Fixed JSR publishing hanging indefinitely at the processing stage by hiding complex type exports from the public API. The JSR type analyzer struggled with complex type dependencies when analyzing the
MockFederation,TestFederation,TestContext, andSentActivitytypes, causing indefinite hangs during the processing stage. [#468]- Breaking change:
MockFederationclass is no longer exported from the public API. UsecreateFederation()factory function instead. TestFederation<TContextData>,TestContext<TContextData>, andSentActivityinterfaces are no longer exported from the public API, but their types are still inferred fromcreateFederation()return type and can be used via TypeScript's type inference.
- Breaking change:
@fedify/cli
- Fixed
fedifycommand failing on Windows withPermissionDeniederror when trying to locate or execute package managers during initialization. The CLI now properly handles *.cmd and *.bat files on Windows by invoking them throughcmd /c. [#463]
Fedify 1.8.14
Released on October 19, 2025.
@fedify/testing
- Fixed JSR publishing hanging indefinitely at the processing stage. The issue was caused by TypeScript function overload signatures in
MockContextandMockFederationclasses that triggered a bug in JSR's type analyzer. All method overloads have been removed and simplified to useanytypes where necessary. [#468, #470]
@fedify/cli
- Fixed
fedifycommand failing on Windows withPermissionDeniederror when trying to locate or execute package managers during initialization. The CLI now properly handles *.cmd and *.bat files on Windows by invoking them throughcmd /c. [#463]
Fedify 1.9.0
Released on October 14, 2025.
@fedify/fedify
-
Implemented FEP-fe34 origin-based security model to protect against content spoofing attacks and ensure secure federation practices. The security model enforces same-origin policy for ActivityPub objects and their properties, preventing malicious actors from impersonating content from other servers. [#440]
- Added
crossOriginoption to Activity Vocabulary property accessors (get*()methods) with three security levels:"ignore"(default, logs warning and returnsnull),"throw"(throws error), and"trust"(bypasses checks). - Added
LookupObjectOptions.crossOriginoption tolookupObject()function andContext.lookupObject()method for controlling cross-origin validation. - Embedded objects are now validated against their parent object's origin and only trusted when they share the same origin or are explicitly marked as trusted.
- Property hydration now respects origin-based security, automatically performing remote fetches when embedded objects have different origins.
- Internal trust tracking system maintains security context throughout object lifecycles (construction, cloning, and property access).
- Added
-
Added
withIdempotency()method to configure activity idempotency strategies for inbox processing. This addresses issue #441 where activities with the same ID sent to different inboxes were incorrectly deduplicated globally instead of per-inbox. [#441]- Added
IdempotencyStrategytype. - Added
IdempotencyKeyCallbacktype. - Added
InboxListenerSetters.withIdempotency()method. - By default,
"per-origin"strategy is used for backward compatibility. This will change to"per-inbox"in Fedify 2.0. We recommend explicitly setting the strategy to avoid unexpected behavior changes.
- Added
-
Fixed handling of ActivityPub objects containing relative URLs. The Activity Vocabulary classes now automatically resolve relative URLs by inferring the base URL from the object's
@idor document URL, eliminating the need for manualbaseUrlspecification in most cases. This improves interoperability with ActivityPub servers that emit relative URLs in properties likeicon.urlandimage.url. [#411, #443 by Jiwon Kwon] -
Added TypeScript support for all RFC 6570 URI Template expression types in dispatcher path parameters. Previously, only simple string expansion (
{identifier}) was supported in TypeScript types, while the runtime already supported all RFC 6570 expressions. Now TypeScript accepts all expression types including{+identifier}(reserved string expansion, recommended for URI identifiers),{#identifier}(fragment expansion),{.identifier}(label expansion),{/identifier}(path segments),{;identifier}(path-style parameters),{?identifier}(query component), and{&identifier}(query continuation). [#426, #446 by Jiwon Kwon]- Added
Rfc6570Expression<TParam>type helper. - Updated all dispatcher path type parameters to accept RFC 6570 expressions:
setActorDispatcher(),setObjectDispatcher(),setInboxDispatcher(),setOutboxDispatcher(),setFollowingDispatcher(),setFollowersDispatcher(),setLikedDispatcher(),setFeaturedDispatcher(),setFeaturedTagsDispatcher(),setInboxListeners(),setCollectionDispatcher(), andsetOrderedCollectionDispatcher().
- Added
-
Added inverse properties for collections to Vocabulary API. [FEP-5711, #373, #381 by Jiwon Kwon]
new Collection()constructor now acceptslikesOfoption.- Added
Collection.likesOfIdproperty. - Added
Collection.getLikesOf()method. new Collection()constructor now acceptssharesOfoption.- Added
Collection.sharedOfIdproperty. - Added
Collection.getSharedOf()method. new Collection()constructor now acceptsrepliesOfoption.- Added
Collection.repliesOfIdproperty. - Added
Collection.getRepliesOf()method. new Collection()constructor now acceptsinboxOfoption.- Added
Collection.inboxOfIdproperty. - Added
Collection.getInboxOf()method. new Collection()constructor now acceptsoutboxOfoption.- Added
Collection.outboxOfIdproperty. - Added
Collection.getOutboxOf()method. new Collection()constructor now acceptsfollowersOfoption.- Added
Collection.followersOfIdproperty. - Added
Collection.getFollowersOf()method. new Collection()constructor now acceptsfollowingOfoption.- Added
Collection.followingOfIdproperty. - Added
Collection.getFollowingOf()method. new Collection()constructor now acceptslikedOfoption.- Added
Collection.likedOfIdproperty. - Added
Collection.getLikedOf()method.
-
Changed how
parseSoftware()function handles non-Semantic Versioning number strings ontryBestEffortmode. [#353, #365 by Hyeonseo Kim] -
Separated modules from
@fedify/fedify/xinto dedicated packages to improve modularity and reduce bundle size. The existing integration functions in@fedify/fedify/xare now deprecated and will be removed in version 2.0.0. [#375 by Chanhaeng Lee]- Deprecated
@fedify/fedify/x/cfworkersin favor of@fedify/cfworkers. - Deprecated
@fedify/fedify/x/denokvin favor of@fedify/denokv. - Deprecated
@fedify/fedify/x/honoin favor of@fedify/hono. - Deprecated
@fedify/fedify/x/sveltekitin favor of@fedify/sveltekit.
- Deprecated
-
Extended
Linkfrom@fedify/fedify/webfingerto support OStatus 1.0 Draft 2. [#402, #404 by Hyeonseo Kim]- Added an optional
templatefield to theLinkinterface. - Changed the
hreffield optional from theLinkinterface according to RFC 7033 Section 4.4.4.3.
- Added an optional
-
Added
Federatable.setWebFingerLinksDispatcher()method to set additional links to WebFinger. [#119, #407 by HyeonseoKim] -
Added CommonJS support alongside ESM for better NestJS integration and broader Node.js ecosystem compatibility. This eliminates the need for Node.js's
--experimental-require-moduleflag and resolves dual package hazard issues. [#429, #431]
@fedify/cli
-
Added
Next.jsoption tofedify initcommand. This option allows users to initialize a new Fedify project with Next.js integration. [#313 by Chanhaeng Lee] -
Changed how
fedify nodeinfocommand handles non-Semantic Versioning number strings on-b/--best-effortmode. Now it uses the same logic as theparseSoftware()function in the @fedify/fedify package, which allows it to parse non-Semantic Versioning number strings more flexibly. [#353, #365 by Hyeonseo Kim]] -
Added
-T/--timeoutoption tofedify lookupcommand. This option allows users to specify timeout in seconds for network requests to prevent hanging on slow or unresponsive servers. [[#258], #372 by Hyunchae Kim]
@fedify/amqp
- Added CommonJS support alongside ESM for better compatibility with CommonJS-based Node.js applications. [#429, #431]
@fedify/cfworkers
- Created Cloudflare Workers integration as the @fedify/cfworkers package. Separated from
@fedify/fedify/x/cfworkersto improve modularity and reduce bundle size. [#375 by Chanhaeng Lee]
@fedify/denokv
- Created Deno KV integration as the @fedify/denokv package. Separated from
@fedify/fedify/x/denokvto improve modularity and reduce bundle size. [#375 by Chanhaeng Lee]
@fedify/elysia
- Added CommonJS support alongside ESM for better compatibility with CommonJS-based Node.js applications. [#429, #431]
@fedify/express
- Added CommonJS support alongside ESM for better compatibility with CommonJS-based Node.js applications. [#429, #431]
@fedify/fastify
Fedify 1.8.13
Released on October 10, 2025.
@fedify/fedify
- Fixed inconsistent encoding/decoding of URI template identifiers with special characters. Updated uri-template-router to version 1.0.0, which properly decodes percent-encoded characters in URI template variables according to RFC 6570. This resolves issues where identifiers containing URIs (e.g.,
https%3A%2F%2Fexample.com) were being inconsistently decoded in dispatcher callbacks and double-encoded in collection URLs. [#416]
Fedify 1.8.12
Released on September 20, 2025.
@fedify/sqlite
- Fixed bundling issues where incorrect import paths to node_modules were included in the bundled output. The @js-temporal/polyfill dependency was moved from
devDependenciestodependenciesto ensure proper bundling.
Fedify 1.8.11
Released on September 17, 2025.
- Improved the AT Protocol URI workaround to handle all DID methods and edge cases. The fix now properly percent-encodes any authority component in
at://URIs, supportingdid:web,did:key, and other DID methods beyond justdid:plc. Also handles URIs without path components correctly. [#436]
Fedify 1.7.13
Released on September 17, 2025.
- Improved the AT Protocol URI workaround to handle all DID methods and edge cases. The fix now properly percent-encodes any authority component in
at://URIs, supportingdid:web,did:key, and other DID methods beyond justdid:plc. Also handles URIs without path components correctly. [#436]
Fedify 1.6.12
Released on September 17, 2025.
- Improved the AT Protocol URI workaround to handle all DID methods and edge cases. The fix now properly percent-encodes any authority component in
at://URIs, supportingdid:web,did:key, and other DID methods beyond justdid:plc. Also handles URIs without path components correctly. [#436]
Fedify 1.5.9
Released on September 17, 2025.
- Improved the AT Protocol URI workaround to handle all DID methods and edge cases. The fix now properly percent-encodes any authority component in
at://URIs, supportingdid:web,did:key, and other DID methods beyond justdid:plc. Also handles URIs without path components correctly. [#436]
Fedify 1.4.17
Released on September 17, 2025.
- Improved the AT Protocol URI workaround to handle all DID methods and edge cases. The fix now properly percent-encodes any authority component in
at://URIs, supportingdid:web,did:key, and other DID methods beyond justdid:plc. Also handles URIs without path components correctly. [#436]