fedify 2.1.0#273908
Merged
BrewTestBot merged 2 commits intomainfrom Mar 24, 2026
Merged
Conversation
daeho-ro
approved these changes
Mar 24, 2026
Contributor
|
🤖 An automated task has requested bottles to be published to this PR. Caution Please do not push to this PR branch before the bottle commits have been pushed, as this results in a state that is difficult to recover from. If you need to resolve a merge conflict, please use a merge commit. Do not force-push to this PR branch. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Created by
brew bumpCreated with
brew bump-formula-pr.release notes
Added
InboxListenerSetters.onUnverifiedActivity()so applications can inspect inbound activities whose signatures could not be verified and optionally return a custom response instead of the default401 Unauthorized. This is useful for cases likeDeletedeliveries from actors whose signing keys now return404 Not Foundor410 Gone. Added the supporting public typesUnverifiedActivityHandlerandUnverifiedActivityReason. [#472, #611]Added
verifyRequestDetailed()plus the public typesVerifyRequestDetailedResult,VerifyRequestFailureReason, andFetchKeyErrorResultso applications can distinguish unsigned requests, invalid signatures, and key-fetch failures during HTTP signature verification. [#611]OpenTelemetry spans/events and
FedifySpanExportersignature details now expose HTTP signature failure reasons and key-fetch failure details for inbound activities. [#611]Fixed
RequestContext.getSignedKeyOwner()to returnnullinstead of throwing an error when the remote server requires authorized fetch and returns401 Unauthorizedfor the key owner lookup. Previously, this caused a500 Internal Server Errorwhen interoperating with servers like GoToSocial that have authorized fetch enabled. [#473, #589]Added RFC 9421 §5
Accept-Signaturenegotiation for both outbound and inbound paths. On the outbound side,doubleKnock()now parsesAccept-Signaturechallenges from401responses and retries with a compatible RFC 9421 signature before falling back to legacy spec-swap. On the inbound side, a newInboxChallengePolicyoption inFederationOptionsenables emittingAccept-Signatureheaders on inbox401responses, with optional one-time nonce support for replay protection. [#583, #584, #626 by ChanHaeng Lee]@fedify/vocab-runtime
Added
Decimal, a branded string type for exactxsd:decimalvalues, along withisDecimal(),canParseDecimal(), andparseDecimal()for checking and validating XML Schema decimal lexical forms without introducing a decimal arithmetic dependency.isDecimal()performs a strict lexical-form check, whilecanParseDecimal()andparseDecimal()apply XML Schema whitespace normalization first. This lays the runtime groundwork for precision-safe marketplace and measurement values such as those needed by FEP-0837. [#617, #640]Updated the preloaded https://gotosocial.org/ns JSON-LD context to match the current GoToSocial v0.21+ namespace, adding new type terms (
LikeRequest,LikeAuthorization, etc.) and property terms (automaticApproval,manualApproval,interactingObject, etc.) while retaining deprecated terms (always,approvalRequired) for backward compatibility. [#453, #622]Added optional
FetchError.responseso callers can inspect the original failed HTTP response when remote document or key fetches return an HTTP error (such as404 Not Foundor410 Gone). This enables higher-level APIs to distinguish transport failures from specific HTTP fetch failures. [#611]@fedify/cli
Added
--reverseoption tofedify lookupto reverse presentation order of emitted results. It now works across default multi-input lookup,--traversecollection traversal output, and--recurseobject chains, while preserving existing fetch/error semantics. [#607, #609]Fixed
fedify lookupprinting separators with extra quotes between adjacent objects/items in some output paths (e.g., recurse/traverse flows). Separators are now printed as plain text consistently. [#608]Added
--recurseand--recurse-depthoptions tofedify lookupfor recursively following object relationships (e.g., reply chains viareplyTarget/inReplyTo, and quote chains viaquoteUrland quote IRIs).--traverseand--recurseare now mutually exclusive,--recurse-depthdepends on--recurse, and--suppress-errorsnow works in recurse mode as best-effort lookup. [#606, #608]Hardened
fedify lookupby disallowing private/localhost document loads by default. For local-development workflows,-p/--allow-private-address(orlookup.allowPrivateAddress = truein config) can re-enable private address access for explicit lookup/traverse requests. This option does not apply to recursive fetches, which always disallow private addresses. [#608]@fedify/vocab
Added GoToSocial interaction controls vocabulary for expressing who can like, reply to, or announce posts and for approving interactions. [#453, #622]
InteractionPolicyandInteractionRuletypeless value classes.LikeRequest,ReplyRequest, andAnnounceRequestactivity types for requesting interaction approval.LikeAuthorization,ReplyAuthorization, andAnnounceAuthorizationtypes for proving approved interactions.Object.interactionPolicy,Object.approvedBy,Object.getLikeAuthorization()/Object.likeAuthorizationId,Object.getReplyAuthorization()/Object.replyAuthorizationId, andObject.getAnnounceAuthorization()/Object.announceAuthorizationId.Fixed
Endpoints.toJsonLd()to no longer emit invalid"type": "as:Endpoints"in the serialized JSON-LD. Theas:Endpointstype does not exist in the ActivityStreams vocabulary, and its presence caused validation failures on implementations like browser.pub. [#576]Fixed
Source.toJsonLd()to no longer emit invalid"type": "as:Source"in the serialized JSON-LD. Theas:Sourcetype does not exist in the ActivityStreams vocabulary either.@fedify/vocab-tools
Added
xsd:decimalsupport to the vocabulary code generator. Properties with that range are now generated asDecimalin TypeScript, serialized asxsd:decimalJSON-LD literals, validated throughcanParseDecimal()when checking input data, and normalized throughparseDecimal()when decoded. Code generation now also rejects property ranges that mixxsd:stringandxsd:decimal, since both map to runtime strings and would make serialization ambiguous. [#617, #640]Added
typelessfield to the type YAML schema. When set totrue, the generatedtoJsonLd()method does not emit@type(ortypein compact form) in the serialized JSON-LD. This is useful for types that are not real vocabulary types but rather anonymous object structures.@fedify/init
Changed
fedify initto add"temporal"todeno.json's"unstable"field only when the installed Deno version is earlier than 2.7.0. On Deno 2.7.0 or later, it is no longer added.fedify initnow omits the"unstable"field entirely when no unstable feature is required for the generated Deno project.Supported Astro as a web framework option in
fedify init, with runtime-specific templates for Deno, Bun, and Node.js environments. [#50 by ChanHaeng Lee]@fedify/astro
@fedify/astropackage for integrating Fedify with Astro. It providesfedifyIntegration()for Vite SSR configuration andfedifyMiddleware()for request handling. [#50 by Chanhaeng Lee]@fedify/mysql
Added
MysqlMessageQueueclass to the@fedify/mysqlpackage, a MySQL/MariaDB-backedMessageQueueimplementation. It uses periodic polling (SELECT … FOR UPDATE SKIP LOCKED) to deliver messages and MySQL advisory locks (GET_LOCK/RELEASE_LOCK) for ordering-key serialization. Supports delayed delivery, ordering keys,enqueueMany(), and concurrent workers. Requires MySQL 8.0+ or MariaDB 10.6+. [#586, #599]Added
@fedify/mysqlpackage, a MySQL/MariaDB-backedKvStoreimplementation. It providesMysqlKvStore, which stores key–value pairs in a MySQL table using themysql2driver. Supports TTL, prefix listing, and compare-and-swap (cas()) operations. [#585, #597]View the full release notes at https://github.com/fedify-dev/fedify/releases/tag/2.1.0.