Original release notes
Breaking changes:
as2- Rename
link_tagstorender_content, and expand it to also HTML-escape plain textcontent, convert newlines to `
, and convert leading spaces to . It now renders even when there are no indexed tags. The inline RE: ...` link for a quoted post is now rendered here too. (bridgy-fed#990
from_as1: Stop rendering inlineRE: ...link for quoted posts.nostr:verifynow raisesValueErroron failure instead of returningFalse.- Rename
signtohash_and_sign. reddit:- Remove deprecated
Reddit.praw_to_actor,user_to_actor,praw_to_object, andpraw_to_activitymethod aliases.
Non-breaking changes:
- Packaging: migrate from
setup.pytopyproject.toml. - Start on Farcaster support! (snarfed/bridgy-fed#447).
- Speed up
to_as1conversions: parse HTML content lazily inSource.postprocess_object(only whenfirst_link_to_attachmentis set), drop a redundanttrim_nullspass inas2andnostrto_as1, and copy the input via JSON round trip instead ofcopy.deepcopyinas2.to_as1(snarfed/bridgy-fed#2488). as1:- Bug fix for converting HTML content to plain text when it includes square brackets (
[and]) (snarfed/bridgy-fed#1605). - Optimize
is_content_htmlto avoid full HTML parsing in most cases, eg whencontenthas noelements. - If an object or activity doesn't have
url, fall back toidfor populatinglink rel="self". bluesky:- Convert
applicationandserviceactors to/from the Blueskybotself-label. from_as1:- Support Payment Pointers in actors'
monetizationproperty. If that value starts with$, eg$wallet.com/user, it's converted tohttps://, eghttps://wallet.com/user. - De-dupe
tagsin outputsite.standard.documentrecords. - Limit DM (
chat.bsky.convo.defs#messageInput) output to record embeds only, not other types. - Convert raw domains in
mentiontags to home page URLs inapp.bsky.richtext.facet#link.uri. - Posts with more than 4 images now use
app.bsky.embed.galleryinstead ofapp.bsky.embed.images. to_as1:- Add support for
site.standard.documentrecords, converting them to AS1articleobjects. - Add support for
site.standard.publicationrecords, converting them to AS1personobjects. - Populate
widthandheighton AS1 image objects fromaspectRatioinapp.bsky.embed.imagesandapp.bsky.embed.images#viewembeds. - Support
app.bsky.embed.galleryandapp.bsky.embed.gallery#viewembeds. - Join multiple content warnings with
;instead of `
because [Mastodon doesn't support HTML in summary`](https://github.com/mastodon/mastodon/issues/34079#issuecomment-2703397374).
- New
Bluesky.from_auth(auth_entity, client_metadata=None)classmethod: creates aBlueskyinstance from anoauth_dropins.bluesky.BlueskyAuthentity, handling both legacy app password sessions and OAuth DPoP tokens. microformats2:from_as1: convertstream.duration(int seconds) to ISO 8601 duration string for thedurationmf2 property; also accept ISO 8601 strings passed through from AS1.to_as1: fixquotation-ofh-cite attachments to haveobjectTypenote, enabling correct quote post conversion to ActivityPub (snarfed/bridgy-fed#1146).nostr:from_as1: fix crash when converting anarticleobject with noid.to_as1:- Support NIP-71 video events (kinds 21, 22, 34235, 34236), converting them to notes with video attachments. Also extracts
imetaimage(thumbnail) andduration, the top-levelpublished_attag, and the top-levelalttag (as a fallbackdisplayNameon the first video/audio attachment). - Stop converting Nostr
summaryto AS1summary. Nostrconstructor: raiseValueErroron invalid relay URL.Nostr.query: skip NIP-42 AUTH challenge gracefully when noprivkeyis set.
Migrate tests from mox3 to unittest.mock.


