Breaking changes:
as2- Rename
link_tagstorender_content, and expand it to also HTML-escape plain textcontent, convert newlines to<br>, and convert leading spaces to . It now renders even when there are no indexed tags. The inlineRE: ...link for a quoted post is now rendered here too. (bridgy-fed#990 from_as1: Stop rendering inlineRE: ...link for quoted posts.
- Rename
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.
- Remove deprecated
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 no<or&characters. targets: don't add trailing slashes to output targets.
- Bug fix for converting HTML content to plain text when it includes square brackets (
as2address: fix handling of actor ids with a path prefix, eg Mastodon's newhttps://a.b/ap/users/123style.from_as1:- Preserve the input object's
@contextfield, and extend it, instead of overwriting it.
- Preserve the input object's
to_as1:- Handle multiply-valued
content. - Handle
nullelements inattachment. - For
UndoFollowactivities, populate the innerFollow's id (if any) in a newfollowIdfield on the resultingstop-followingactivity (snarfed/bridgy-fed#1631).
- Handle multiply-valued
atom:from_as1:- Include entry tags as
<category>elements. - If an object or activity doesn't have
url, fall back toidfor populatinglink rel="self".
- Include entry tags as
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.
- Support Payment Pointers in actors'
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<br>because Mastodon doesn't support HTML insummary.
- Add support for
- 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.
- Convert
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.
- Support NIP-71 video events (kinds 21, 22, 34235, 34236), converting them to notes with video attachments. Also extracts
Nostrconstructor: raiseValueErroron invalid relay URL.Nostr.query: skip NIP-42 AUTH challenge gracefully when noprivkeyis set.
Migrate tests from mox3 to unittest.mock.