Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ActivityPub integration #11580

Draft
wants to merge 524 commits into
base: develop
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
524 commits
Select commit Hold shift + click to select a range
90e7d3a
fix: parse questions like a post
julianlam Mar 11, 2024
17c5592
fix: markAsRead to handle remote topics
julianlam Mar 11, 2024
ceab77e
fix: more duplicate detection in to/cc
julianlam Mar 11, 2024
8bf6130
Merge branch 'develop' into activitypub
julianlam Mar 11, 2024
5768a43
fix: handle fetch failures on helpers.query
julianlam Mar 11, 2024
ba3eae7
Merge branch 'develop' into activitypub
barisusakli Mar 12, 2024
9cd6b49
fix: AP S2S handling for /user/:userslug route
julianlam Mar 12, 2024
b1491ca
fix: specify param for api test for /world
julianlam Mar 12, 2024
eb8ff75
fix: only dereference id if it doesn't exist locally — fewer calls
julianlam Mar 12, 2024
01f7af9
fix: remove unused param in addParentPosts
julianlam Mar 12, 2024
4b2495b
fix: tests
julianlam Mar 12, 2024
52c143a
fix: template helper
julianlam Mar 12, 2024
f7c8967
refactor: use topics.post, topics.reply, and posts.edit in Create(Not…
julianlam Mar 12, 2024
338c568
fix: handle actor assertion failure if mocked profile does not have a…
julianlam Mar 13, 2024
519e025
feat: return count of new notes in assertTopic
julianlam Mar 13, 2024
c6624b6
chore: remove now-unused notes.assert
julianlam Mar 13, 2024
81b319f
fix: accidental saving of ephemeral _activitypub object into db, shou…
julianlam Mar 13, 2024
c5c0c47
chore: lint
julianlam Mar 13, 2024
0bfdbb6
feat: if Update(Note) is received for a post that does not already ex…
julianlam Mar 13, 2024
83392f3
feat: log all post edits to the event log, return eid when logging ev…
julianlam Mar 13, 2024
c346177
fix: tweak user.search to better handle local usernames with colons i…
julianlam Mar 13, 2024
ebd750b
fix: resolve toPid to local pid if able
julianlam Mar 14, 2024
e389aec
Merge branch 'develop' into activitypub
barisusakli Mar 14, 2024
7aa56c7
fix: filter out system tags and prune extra tags beyond number allowe…
julianlam Mar 14, 2024
0a2482c
fix: double-OP issue when remote reply comes in to local mainPid
julianlam Mar 14, 2024
44a183d
fix: typo
julianlam Mar 14, 2024
1a92239
fix: send topic notif on reply
julianlam Mar 14, 2024
ff6cc90
fix: bump mentions
julianlam Mar 14, 2024
ccd9c7e
fix: tweak maxTags handling
julianlam Mar 14, 2024
a84dba2
chore: up harmony
barisusakli Mar 14, 2024
7af0715
fix: circular object ref.
julianlam Mar 15, 2024
c76d401
fix: properly handle empty fields param
julianlam Mar 15, 2024
5f60f75
fix: restore accidentally removed calls to updateLocalRecipients and …
julianlam Mar 15, 2024
953231f
feat(activitypub): show world category in selectors
oplik0 Mar 18, 2024
1027c6e
Merge branch 'develop' into activitypub
barisusakli Mar 20, 2024
d75894e
feat: add TTL cache for Actors.assert
oplik0 Mar 20, 2024
5a2d17d
fix: regression that caused S2S calls to topics to return with a 404
julianlam Mar 21, 2024
c9985c5
Revert "fix: missing invocation of generatePostUrl in generateReplied…
julianlam Mar 21, 2024
6fa43b9
Revert "fix: urls in posts and announces"
julianlam Mar 21, 2024
2408ecd
fix: post urls to use prefix instead of linking out directly to orig…
julianlam Mar 21, 2024
2756aae
fix: bump harmony
julianlam Mar 21, 2024
17f62f2
feat: plumb pid into return data from posts.loadPostTools, add link t…
julianlam Mar 21, 2024
8f131b7
fix: issue where cid -1 appeared in all category searches
julianlam Mar 21, 2024
9a5d4ff
feat: rename 'world' category to 'uncategorized'
julianlam Mar 21, 2024
da2a1e2
fix: bump harmony
julianlam Mar 21, 2024
003c646
fix: resolve interoperability issues with Misskey, et al.
julianlam Mar 21, 2024
9c03e6e
fix: bump harmony
julianlam Mar 22, 2024
65bb866
fix: only send activitypub+json links via webfinger if activitypub is…
julianlam Mar 22, 2024
aafdefa
fix: use CategoryObject in admins-mods schema def
julianlam Mar 22, 2024
3cc99a1
feat: category handles, #12434
julianlam Mar 22, 2024
9dc20d0
feat: ability to update category handles
julianlam Mar 22, 2024
803975f
fix: send handle as category actor's preferredUsername, #12434
julianlam Mar 22, 2024
7df5cab
feat: have category actor send Announce(Note) activity on posts from …
julianlam Mar 22, 2024
e0f6b70
fix: restore userOrGroupExists, as alias to slugTaken
julianlam Mar 22, 2024
4ee8519
chore: move assertTopic to top of file, rename to assert
julianlam Mar 22, 2024
04c743e
feat: have category actor send Announce(Note) on remote replies to to…
julianlam Mar 22, 2024
bab41d1
fix: typo
julianlam Mar 22, 2024
1fb3c4f
fix: undefined object in notes.assert
julianlam Mar 22, 2024
2ffdbeb
Merge branch 'develop' into activitypub
barisusakli Mar 22, 2024
ac765f1
refactor: use one internal rejection method
julianlam Mar 25, 2024
2688b6b
feat: add assertion lock on activitypub.notes.assert
julianlam Mar 25, 2024
55e947a
feat: add checks to only continue with topic assertion if there is a …
julianlam Mar 26, 2024
017a57e
Merge branch 'develop' into activitypub
barisusakli Mar 26, 2024
550e522
chore: up harmony
barisusakli Mar 26, 2024
c2890a3
add 1 ||
barisusakli Mar 26, 2024
8dcdf8e
fix: #12444 add uncategorized topics counted stats to separate sorted…
julianlam Mar 26, 2024
0e2daa5
Merge branch 'develop' into activitypub
barisusakli Mar 26, 2024
dff5d1c
fix: getSortedTopics; filter out topics in cid -1 unless explicitly a…
julianlam Mar 26, 2024
5efe8ab
Revert "add 1 ||"
julianlam Mar 26, 2024
6c1a0fb
refactor: use getSortedSetUnion in syncUserInboxes instead
julianlam Mar 26, 2024
4fcd2bb
fix: skip notes.assert checks for Announce(Note) if it's a remote obj…
julianlam Mar 26, 2024
f078e1e
fix: lint
julianlam Mar 26, 2024
a38d0c1
Revert "refactor: use getSortedSetUnion in syncUserInboxes instead"
julianlam Mar 26, 2024
e0138cb
feat: follow redirects in API
oplik0 Mar 28, 2024
495d543
fix: redirect to /api/world for API requests
oplik0 Mar 28, 2024
3c6966f
feat: add more properties from /category to /world
oplik0 Mar 28, 2024
e266b44
feat: make the /api/world data more category-like
oplik0 Mar 28, 2024
a3dce46
fix: adjust world schema
oplik0 Mar 28, 2024
d1fa6a5
feat: sorting an filtering in /world
oplik0 Mar 28, 2024
2cbc391
fix: bump harmony
julianlam Mar 30, 2024
893788a
fix: updateLastOnlineTime for remote uids
julianlam Apr 2, 2024
e828e87
fix: have getCidsByPrivilege include cid -1 when set is categories:cid
julianlam Apr 2, 2024
1084f21
fix: show locally captured remote posts when browsing remote profiles
julianlam Apr 3, 2024
59709a3
fix: tests, save actor URL into userRemote hash
julianlam Apr 3, 2024
0b2faf2
Merge remote-tracking branch 'origin/develop' into activitypub
julianlam Apr 3, 2024
943cef6
feat: upgrade script to re-assert all known actors to save URL into h…
julianlam Apr 4, 2024
442e98e
fix: add timeout on activitypub.get, tweak upgrade script
julianlam Apr 4, 2024
166e3e2
fix: tweak upgrade script again
julianlam Apr 4, 2024
ae14602
fix: tweak upgrade script again
julianlam Apr 4, 2024
42bdffd
fix: maybe last tweak
julianlam Apr 4, 2024
983153f
fix: lol
julianlam Apr 4, 2024
f40df38
fix: actor assertion logic to ignore loopback urls
julianlam Apr 5, 2024
719bb0a
chore: add verbose logging to middleware.validate
julianlam Apr 5, 2024
86caf23
fix: bump mentions
julianlam Apr 5, 2024
cbfc8d2
fix: better handle null return from notes.assert
julianlam Apr 5, 2024
8003b00
Revert "feat: log all post edits to the event log, return eid when lo…
oplik0 Apr 5, 2024
9fc194e
feat: send unique identifiers for note activities
oplik0 Apr 5, 2024
5c1c1d2
fix: uppercase digest algorithm name for compatibility reasons
oplik0 Apr 6, 2024
cd8a91f
fix: make sort work with world filters
oplik0 Apr 6, 2024
d9eba6d
feat: basic AP Flag support
oplik0 Apr 6, 2024
e25f062
fix: use actor id in flags
oplik0 Apr 6, 2024
2d1524e
fix: early return on invalid actor
oplik0 Apr 6, 2024
c30c128
fix: support ldjson with ActivityStreams profile in actor queries
oplik0 Apr 8, 2024
4e0d7dd
feat: populate and send link tag/header respectively for activitypub-…
julianlam Apr 8, 2024
de83d6b
fix: pid via index calculation
julianlam Apr 8, 2024
8610753
fix: default to showing alternate as link to the post object
julianlam Apr 8, 2024
6b169e0
fix: bump mentions
julianlam Apr 9, 2024
464dd80
fix: additional verbose logging for signature verification
julianlam Apr 9, 2024
fcd5447
feat: sign public key requests
oplik0 Apr 9, 2024
d437d96
feat: filter out topics in cid -1 from tagged topics page, closes #12489
julianlam Apr 9, 2024
102c174
feat: resolve objects from ids in middleware
oplik0 Apr 9, 2024
b921f8d
refactor: use a helper to resolve actor URI
oplik0 Apr 9, 2024
72dbcfe
feat: add id to follows and verify accepts
oplik0 Apr 9, 2024
41f77f8
fix: handle resolved objects in flag
oplik0 Apr 9, 2024
b616820
fix: reject accepts of invalid follows and return when already following
oplik0 Apr 9, 2024
962c635
fix: use resolved object in likes
oplik0 Apr 9, 2024
e0166cc
fix: assume object is full object and not just id everywhere
oplik0 Apr 9, 2024
66b0d81
feat: send back follow id in Accept
oplik0 Apr 9, 2024
3cc09d2
feat: add ids for undoing follows
oplik0 Apr 9, 2024
c92b5e0
fix: use a slightly better error code to indicate object resolution f…
oplik0 Apr 10, 2024
465a46f
fix: send only the id into actors.assert
julianlam Apr 10, 2024
e0f542c
fix: #12493, send unescaped fullname through via AP if displayname is…
julianlam Apr 10, 2024
959e182
fix: throw errors when local objects don't exist
oplik0 Apr 10, 2024
b8daa02
fix: bump harmony
julianlam Apr 11, 2024
6fc6cc3
feat: note attachments via link preview plugin
julianlam Apr 11, 2024
8d0876b
fix: send hs2019 as algo (to match cavage-12, handle incoming algorit…
julianlam Apr 11, 2024
f5ea470
fix: handle remote userslugs with non-lowercase letters
julianlam Apr 11, 2024
525b7c2
feat: save remote post url into hash for use
julianlam Apr 11, 2024
f783338
fix: #12496, url in schema
julianlam Apr 11, 2024
4d23a83
fix: handle (created) and (expires) in http signatures
julianlam Apr 11, 2024
52271ca
fix: you scurvy cur!
julianlam Apr 11, 2024
18ba2e3
feat: noremalize actor property in middleware
oplik0 Apr 12, 2024
4d07ca4
feat: add id to profile updates
oplik0 Apr 12, 2024
c336590
fix: save modified actor back to req.body
julianlam Apr 12, 2024
bb4e418
fix: change default attachment type to Link, or Image if mediaType ma…
julianlam Apr 12, 2024
fdbd30d
feat: integrate post uploads into attachments for outgoing note mocks
julianlam Apr 12, 2024
50f31b2
fix: wrong variable name
julianlam Apr 12, 2024
64258da
fix: send userslug in preferredUsername
julianlam Apr 12, 2024
6befff5
fix: #12502, improper decrement
julianlam Apr 12, 2024
7c4ae8e
fix: #12505, convert relative urls in links and images into absolute …
julianlam Apr 12, 2024
9ab1a2d
feat: rescind post flags
oplik0 Apr 13, 2024
7bacbf7
feat: bulk purge flags
oplik0 Apr 13, 2024
2a2b855
feat: federate flag creation
oplik0 Apr 13, 2024
c1dfa8d
feat: send undo when rescinding/deleting a report
oplik0 Apr 13, 2024
a1a7fb7
feat: handle Undo(Flag)
oplik0 Apr 14, 2024
026449d
fix: support reporting remote content in Flag
oplik0 Apr 14, 2024
b7629c6
feat: send id back during accepts
julianlam Apr 15, 2024
b7ff7be
fix: actors.assert should return false if webfinger cannot resolve to…
julianlam Apr 15, 2024
59a9dd8
refactor: stub routes for category synchronization, refactor remote f…
julianlam Apr 15, 2024
407dda7
fix: add back reverse lookup for notes assertion checking via cids
julianlam Apr 15, 2024
1253ded
chore: minor cleanup
julianlam Apr 16, 2024
452cb0a
feat: utility functions to get local followers/counts given a remote …
julianlam Apr 16, 2024
49a64dc
fix: if the topic already existed in -1, move it to another category …
julianlam Apr 16, 2024
dce3344
fix: use system pseudo-user for topic move call
julianlam Apr 16, 2024
a9a7fd1
fix: handle Announce(Create(Note))
julianlam Apr 17, 2024
f802564
feat: resolve Crate and Announce activities
oplik0 Apr 17, 2024
3721f81
fix: icon:text and icon:bgColor for remote users
julianlam Apr 17, 2024
59021d8
fix: bump harmony
julianlam Apr 17, 2024
2ce3a11
feat: handle 1b14 announce for remote content too
julianlam Apr 20, 2024
ab055a7
feat: add id to Like
oplik0 Apr 22, 2024
3d1e2cd
fix: percent-encode outgoing webfinger requests
oplik0 Apr 25, 2024
8fd4ae2
test: use encoded parameters in webfinger tests
oplik0 Apr 25, 2024
7000166
fix: handle URI actor IDs
oplik0 Apr 25, 2024
844d140
refactor: use URLSearchParams instead of multiple encodeURIComponent
oplik0 Apr 25, 2024
1ecbf02
fix: handle requests to URI IDs correctly
oplik0 Apr 25, 2024
91c3434
Merge branch 'develop' into activitypub
barisusakli Apr 25, 2024
9829a53
Merge branch 'activitypub' of https://github.com/NodeBB/NodeBB into a…
barisusakli Apr 25, 2024
6964b1f
fix: update hasRelation condition to be true if cid is passed in in o…
julianlam Apr 25, 2024
a853dab
remove cid=-1
barisusakli Apr 25, 2024
ee67794
Merge branch 'activitypub' of https://github.com/NodeBB/NodeBB into a…
barisusakli Apr 25, 2024
dd71340
fix: don't look up webfinger when it's not necessary
oplik0 Apr 25, 2024
ed84eed
fix: better logic for choosing webfinger lookups
oplik0 Apr 25, 2024
7180819
Revert "fix: make sort work with world filters"
julianlam Apr 25, 2024
af324da
feat: remove `/world/all` route, add intro header to `/world`
julianlam Apr 25, 2024
e9df15b
Merge branch 'develop' into activitypub
julianlam Apr 26, 2024
5e77608
chore: lint
julianlam Apr 26, 2024
94eafe1
refactor: split activitypub tests to subfolder files
julianlam Apr 26, 2024
fd35dd1
make /top faster too
barisusakli Apr 26, 2024
c041108
dont show tags from cid=-1. clicking it doesnt show topics
barisusakli Apr 26, 2024
1ce986f
chore: up widgets
barisusakli Apr 26, 2024
40b9dab
fix: unintentional object pollution by buildForSelectCategories
julianlam Apr 26, 2024
7645365
tests: fix some but not all tests
julianlam Apr 26, 2024
4d77755
Merge branch 'develop' into activitypub
julianlam Apr 26, 2024
596a5e4
fix: update signature parsing logic to handle values with equal signs…
julianlam Apr 29, 2024
b7ad431
fix: have category sync routes return full api response, openapi sche…
julianlam Apr 29, 2024
cf291a5
feat: help modal for world page
julianlam Apr 29, 2024
b9d6aa4
feat: slightly better title generation
julianlam Apr 29, 2024
53b352d
refactor: remove unnecessary flag routes added in 9ab1a2d
oplik0 Apr 29, 2024
61a595d
feat: support rescinding user flags
oplik0 Apr 29, 2024
449ffd6
fix: remove unneeded `flagged` property in favour of flagId, use exis…
julianlam Apr 30, 2024
fc3f3a7
feat: openapi spec for acp category federation page
julianlam Apr 30, 2024
6ac5a77
fix: update title generator to include the punctuation, and also take…
julianlam Apr 30, 2024
5e20319
fix: post deletion of remote posts
julianlam May 1, 2024
119800d
refactor: post announce logic to save to separate zset instead of to …
julianlam May 1, 2024
3636dec
chore: debug log
julianlam May 1, 2024
0336e8f
fix: send id for category announces
oplik0 May 3, 2024
f24a1a3
dont show tags from cid -1
barisusakli May 3, 2024
ae589ad
Merge branch 'activitypub' of https://github.com/NodeBB/NodeBB into a…
barisusakli May 3, 2024
32d1adf
feat: add id to reject activity
oplik0 May 3, 2024
4b29a1b
refactor: context actor to serve an as:OrderedCollection instead of a…
julianlam May 3, 2024
1a21c8a
fix: if post count is less than posts per page, don't paginate in ord…
julianlam May 3, 2024
109f423
fix: partOf and type
julianlam May 3, 2024
05cdb7d
fix: send topic title in context object
julianlam May 3, 2024
8de2352
fix: notifications for tag followers not being sent if author is a re…
julianlam May 6, 2024
738d47c
fix: save followersUrl to remote user hashes
julianlam May 6, 2024
4e006ad
fix: bump composer-default
julianlam May 6, 2024
e341a5d
fix: bump harmony
julianlam May 6, 2024
807c3ea
feat: on post edit, also target anyone who announced the post and the…
julianlam May 6, 2024
4e7b12b
fix: if an unknown post is navigated to by a logged-in user, automati…
julianlam May 6, 2024
50bc9a3
feat: basic retry queue
oplik0 May 6, 2024
ea6e15b
refactor: use batch.processArray for sending AP messages
oplik0 May 6, 2024
729f0fc
fix: use batch.processArray properly
oplik0 May 6, 2024
4cbb1f2
feat: support the ability to search for posts and users by url
julianlam May 6, 2024
22b42f1
fix: handle retry queue invalidation across a cluster
oplik0 May 6, 2024
af98675
fix: remove unnecessary check and guard against unsupported URIs befo…
oplik0 May 6, 2024
a7aeabc
fix: ensure consistent return type from notes.assert
oplik0 May 7, 2024
9761526
feat: ability to query remote users by webfinger handle
julianlam May 7, 2024
ac74d9c
fix: inability to query local content via remote url
julianlam May 7, 2024
2cd9088
fix: bump harmony
julianlam May 7, 2024
0c0f01b
test: refactor tests to support additional Note tests
julianlam May 7, 2024
5e9d47a
feat: serve Tombstone objects for soft deleted posts
julianlam May 7, 2024
51089a3
fix: attach announcers and their followers to cc, not to targets, onl…
julianlam May 7, 2024
96db519
feat: on post delete, federate out an Update(Tombstone)
julianlam May 7, 2024
6f9fa66
fix: Update(Note) federation should only apply to local content
julianlam May 7, 2024
f404395
feat: handle receipt of Update(Tombstone)
julianlam May 7, 2024
43dfb60
fix: allow quoting AP posts, fixes #12545
oplik0 May 9, 2024
c973a9c
fix: encode most uses of pid to avoid more bugs like #12545
oplik0 May 9, 2024
fdba684
chore: some linting
julianlam May 8, 2024
ccd187e
feat: Note deletion logic and refactoring, #12551
julianlam May 9, 2024
baada2f
fix: tag notification if pid is not int
barisusakli May 10, 2024
336ea1e
fix: type error in attachment emptying method
julianlam May 10, 2024
eda97da
fix: unnecessary parseInt in post purge api method
julianlam May 10, 2024
9f44e99
fix: special logic for purge privilege checks
julianlam May 10, 2024
9fbd48b
fix: Posts.isMain cast pid to String instead
julianlam May 10, 2024
b67a7c3
fix: special handling for privsTopics.canPurge for remote posts
julianlam May 10, 2024
0a1ad87
fix: Topic.isOwner check to handle remote users
julianlam May 10, 2024
5bfde4c
fix: allow remote content to skip isReady check on topic creation/reply
julianlam May 10, 2024
d40d0b0
fix: canPurge logic fault
julianlam May 10, 2024
2d7ca48
fix: rename api.activitypub.create.post to .note()
julianlam May 10, 2024
b5b8903
fix: Notes.delete to delete announcer zsets too
julianlam May 10, 2024
1fa9346
refactor: #12553, buildRecipients so that it is separate from address…
julianlam May 10, 2024
129017f
fix: minor cleanup
julianlam May 10, 2024
70d2a62
Merge branch 'develop' into activitypub
barisusakli May 13, 2024
b106a6a
feat: added analytics.peek
julianlam May 14, 2024
4e9cd8e
feat: track incoming requests by id, analytics increment for some met…
julianlam May 14, 2024
228c917
chore: bump harmony
julianlam May 14, 2024
a005440
fix: remove .only
julianlam May 14, 2024
f93b237
fix: lint
julianlam May 14, 2024
78e11d6
chore: up mentions
barisusakli May 15, 2024
8cf9617
feat: passing in types to parsePost for more specific handling by plu…
julianlam May 17, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 3 additions & 1 deletion install/data/defaults.json
Expand Up @@ -189,5 +189,7 @@
"composer:allowPluginHelp": 1,
"maxReconnectionAttempts": 5,
"reconnectionDelay": 1500,
"disableCustomUserSkins": 0
"disableCustomUserSkins": 0,
"activitypubEnabled": 1,
"activitypubAllowLoopback": 0
}
8 changes: 8 additions & 0 deletions install/data/navigation.json
Expand Up @@ -41,6 +41,14 @@
"textClass": "d-lg-none",
"text": "[[global:header.popular]]"
},
{
"route": "/world",
"title": "[[global:header.world]]",
"enabled": true,
"iconClass": "fa-globe",
"textClass": "d-lg-none",
"text": "[[global:header.world]]"
},
{
"route": "/users",
"title": "[[global:header.users]]",
Expand Down
7 changes: 4 additions & 3 deletions install/package.json
Expand Up @@ -46,6 +46,7 @@
"bootswatch": "5.3.3",
"chalk": "4.1.2",
"chart.js": "4.4.2",
"cheerio": "^1.0.0-rc.12",
"cli-graph": "3.2.2",
"clipboard": "2.0.11",
"colors": "1.4.0",
Expand Down Expand Up @@ -98,12 +99,12 @@
"nodebb-plugin-dbsearch": "6.2.3",
"nodebb-plugin-emoji": "5.1.15",
"nodebb-plugin-emoji-android": "4.0.0",
"nodebb-plugin-markdown": "12.2.6",
"nodebb-plugin-mentions": "4.5.2",
"nodebb-plugin-markdown": "13.0.0-pre.3",
"nodebb-plugin-mentions": "4.5.3",
"nodebb-plugin-ntfy": "1.7.4",
"nodebb-plugin-spam-be-gone": "2.2.2",
"nodebb-rewards-essentials": "1.0.0",
"nodebb-theme-harmony": "1.2.55",
"nodebb-theme-harmony": "2.0.0-pre.23",
"nodebb-theme-lavender": "7.1.8",
"nodebb-theme-peace": "2.2.5",
"nodebb-theme-persona": "13.3.19",
Expand Down
18 changes: 18 additions & 0 deletions public/language/en-GB/activitypub.json
@@ -0,0 +1,18 @@
{
"world.name": "World",
"world.description": "",
"world.popular": "Popular topics",
"world.recent": "All topics",
"world.help": "Help",
"no-topics": "This forum doesn't know of any other topics yet.",

"help.title": "What is this page?",
"help.intro": "Welcome to your corner of the fediverse.",
"help.fediverse": "The \"fediverse\" is a network of interconnected applications and websites that all talk to one another and whose users can see each other. This forum is federated, and can interact with that social web (or \"fediverse\"). This page is your corner of the fediverse. It consists solely of topics created by — and shared from — users <strong>you</strong> follow.",
"help.build": "There might not be a lot of topics here to start; that's normal. You will start to see more content here over time when you start following other users.",
"help.federating": "Likewise, if users from outside of this forum start following <em>you</em>, then your posts will start appearing on those apps and websites as well.",
"help.next-generation": "This is the next generation of social media, start contributing today!",

"topic-event-announce-ago": "%1 shared <a href=\"%2\">this post</a> %3",
"topic-event-announce-on": "%1 shared <a href=\"%2\">this post</a> on %3"
}
15 changes: 15 additions & 0 deletions public/language/en-GB/admin/manage/categories.json
Expand Up @@ -7,6 +7,8 @@
"privileges": "Privileges",
"back-to-categories": "Back to categories",
"name": "Category Name",
"handle": "Category Handle",
"handle.help": "Your category handle is used as a representation of this category across other networks, similar to a username. A category handle must not match an existing username or user group.",
"description": "Category Description",
"bg-color": "Background Colour",
"text-color": "Text Colour",
Expand Down Expand Up @@ -37,6 +39,7 @@
"disable": "Disable",
"edit": "Edit",
"analytics": "Analytics",
"federation": "Federation",

"view-category": "View category",
"set-order": "Set order",
Expand Down Expand Up @@ -76,6 +79,18 @@
"analytics.topics-daily": "<strong>Figure 3</strong> &ndash; Daily topics created in this category</small>",
"analytics.posts-daily": "<strong>Figure 4</strong> &ndash; Daily posts made in this category</small>",

"federation.title": "Federation settings for \"%1\" category",
"federation.disabled": "Federation is disabled site-wide, so category federation settings are currently unavailable.",
"federation.disabled-cta": "Federation Settings &rarr;",
"federation.syncing-header": "Synchronization",
"federation.syncing-intro": "A category can follow a \"Group Actor\" via the ActivityPub protocol. If content is received from one of the actors listed below, it will be automatically added to this category.",
"federation.syncing-caveat": "N.B. Setting up syncing here establishes a one-way synchronization. NodeBB attempts to subscribe/follow the actor, but the reverse cannot be assumed.",
"federation.syncing-none": "This category is not currently following anybody.",
"federation.syncing-add": "Synchronize with...",
"federation.syncing-actorUri": "Actor",
"federation.syncing-follow": "Follow",
"federation.syncing-unfollow": "Unfollow",

"alert.created": "Created",
"alert.create-success": "Category successfully created!",
"alert.none-active": "You have no active categories.",
Expand Down
1 change: 1 addition & 0 deletions public/language/en-GB/admin/menu.json
Expand Up @@ -38,6 +38,7 @@
"settings/tags": "Tags",
"settings/notifications": "Notifications",
"settings/api": "API Access",
"settings/activitypub": "Federation (ActivityPub)",
"settings/sounds": "Sounds",
"settings/social": "Social",
"settings/cookies": "Cookies",
Expand Down
14 changes: 14 additions & 0 deletions public/language/en-GB/admin/settings/activitypub.json
@@ -0,0 +1,14 @@
{
"intro-lead": "What is Federation?",
"intro-body": "NodeBB is able to communicate with other NodeBB instances that support it. This is achieved through a protocol called <a href=\"https://activitypub.rocks/\">ActivityPub</a>. If enabled, NodeBB will also be able to communicate with other apps and websites that use ActivityPub (e.g. Mastodon, Peertube, etc.)",
"general": "General",
"enabled": "Enable Federation",
"enabled-help": "If enabled, will allow this NodeBB will be able to communicate with all Activitypub-enabled clients on the wider fediverse.",
"allowLoopback": "Allow loopback processing",
"allowLoopback-help": "Useful for debugging purposes only. You should probably leave this disabled.",

"server-filtering": "Filtering",
"count": "This NodeBB is currently aware of <strong>%1</strong> server(s)",
"server.filter-help": "Specify servers you would like to bar from federating with your NodeBB. Alternatively, you may opt to selectively <em>allow</em> federation with specific servers, instead. Both options are supported, although they are mutually exclusive.",
"server.filter-allow-list": "Use this as an Allow List instead"
}
10 changes: 9 additions & 1 deletion public/language/en-GB/error.json
Expand Up @@ -264,6 +264,7 @@

"topic-event-unrecognized": "Topic event '%1' unrecognized",

"category.handle-taken": "Category handle is already taken, please choose another.",
"cant-set-child-as-parent": "Can't set child as parent category",
"cant-set-self-as-parent": "Can't set self as parent category",

Expand All @@ -277,5 +278,12 @@
"api.500": "An unexpected error was encountered while attempting to service your request.",
"api.501": "The route you are trying to call is not implemented yet, please try again tomorrow",
"api.503": "The route you are trying to call is not currently available due to a server configuration",
"api.reauth-required": "The resource you are trying to access requires (re-)authentication."
"api.reauth-required": "The resource you are trying to access requires (re-)authentication.",

"activitypub.invalid-id": "Unable to resolve the input id, likely as it is malformed.",
"activitypub.get-failed": "Unable to retrieve the specified resource.",
"activitypub.pubKey-not-found": "Unable to resolve public key, so payload verification cannot take place.",
"activitypub.origin-mismatch": "The received object's origin does not match the sender's origin",
"activitypub.actor-mismatch": "The received activity is being carried out by an actor that is different from expected.",
"activitypub.not-implemented": "The request was denied because it or an aspect of it is not implemented by the recipient server"
}
6 changes: 6 additions & 0 deletions public/language/en-GB/flags.json
Expand Up @@ -84,11 +84,17 @@
"modal-reason-offensive": "Offensive",
"modal-reason-other": "Other (specify below)",
"modal-reason-custom": "Reason for reporting this content...",
"modal-notify-remote": "Forward this report to %1",
"modal-submit": "Submit Report",
"modal-submit-success": "Content has been flagged for moderation.",

"modal-confirm-rescind": "Rescind Report?",

"bulk-actions": "Bulk Actions",
"bulk-resolve": "Resolve Flag(s)",
"confirm-purge": "Are you sure you want to permanently delete these flags?",
"purge-cancelled": "Flag Purge Cancelled",
"bulk-purge": "Purge Flag(s)",
"bulk-success": "%1 flags updated",
"flagged-timeago": "Flagged <span class=\"timeago\" title=\"%1\"></span>",
"auto-flagged": "[Auto Flagged] Received %1 downvotes."
Expand Down
1 change: 1 addition & 0 deletions public/language/en-GB/global.json
Expand Up @@ -56,6 +56,7 @@
"header.navigation": "Navigation",
"header.manage": "Manage",
"header.drafts": "Drafts",
"header.world": "World",

"notifications.loading": "Loading Notifications",
"chats.loading": "Loading Chats",
Expand Down
7 changes: 6 additions & 1 deletion public/language/en-GB/notifications.json
Expand Up @@ -106,5 +106,10 @@
"notificationType-post-queue": "When a new post is queued",
"notificationType-new-post-flag": "When a post is flagged",
"notificationType-new-user-flag": "When a user is flagged",
"notificationType-new-reward": "When you earn a new reward"
"notificationType-new-reward": "When you earn a new reward",

"activitypub.announce": "<strong>%1</strong> shared your post in <strong>%2</strong> to their followers.",
"activitypub.announce-dual": "<strong>%1</strong> and <strong>%2</strong> shared your post in <strong>%3</strong> to their followers.",
"activitypub.announce-triple": "<strong>%1</strong>, <strong>%2</strong> and <strong>%3</strong> shared your post in <strong>%4</strong> to their followers.",
"activitypub.announce-multiple": "<strong>%1</strong>, <strong>%2</strong> and %3 others shared your post in <strong>%4</strong> to their followers."
}
2 changes: 2 additions & 0 deletions public/language/en-GB/pages.json
Expand Up @@ -42,6 +42,8 @@
"flags": "Flags",
"flag-details": "Flag %1 Details",

"world": "World",

"account/edit": "Editing \"%1\"",
"account/edit/password": "Editing password of \"%1\"",
"account/edit/username": "Editing username of \"%1\"",
Expand Down
1 change: 1 addition & 0 deletions public/language/en-GB/topic.json
Expand Up @@ -152,6 +152,7 @@
"bookmarks.has-no-bookmarks": "You haven't bookmarked any posts yet.",

"copy-permalink": "Copy Permalink",
"go-to-original": "View Original Post",

"loading-more-posts": "Loading More Posts",
"move-topic": "Move Topic",
Expand Down
1 change: 1 addition & 0 deletions public/language/en-GB/user.json
Expand Up @@ -60,6 +60,7 @@
"chat-with": "Continue chat with %1",
"new-chat-with": "Start new chat with %1",
"flag-profile": "Flag Profile",
"profile-flagged": "Already flagged",
"follow": "Follow",
"unfollow": "Unfollow",
"more": "More",
Expand Down
8 changes: 8 additions & 0 deletions public/openapi/components/schemas/CategoryObject.yaml
Expand Up @@ -8,6 +8,14 @@ CategoryObject:
name:
type: string
description: The category's name/title
handle:
type: string
description: |
An URL-safe name/handle used to represent the category over federated networks (e.g. ActivityPub).

This value is separate from the `slug`, which is used specifically in the URL as a human-readable representation.

The handle is unique across-the-board between users/groups/categories.
description:
type: string
description: A variable-length description of the category (usually displayed underneath the category name)
Expand Down
9 changes: 9 additions & 0 deletions public/openapi/components/schemas/PostObject.yaml
Expand Up @@ -7,6 +7,15 @@ PostObject:
tid:
type: number
description: A topic identifier
toPid:
type: number
description: The post that this post is in reply to
nullable: true
url:
type: string
description: |
A permalink to the post content.
For posts received via ActivityPub, it is the url of the original piece of content.
content:
type: string
uid:
Expand Down
3 changes: 3 additions & 0 deletions public/openapi/components/schemas/UserObject.yaml
Expand Up @@ -443,6 +443,9 @@ UserObjectFull:
type: boolean
canFlag:
type: boolean
flagId:
type: number
nullable: true
canChangePassword:
type: boolean
isSelf:
Expand Down
4 changes: 4 additions & 0 deletions public/openapi/read.yaml
Expand Up @@ -100,6 +100,8 @@ paths:
$ref: 'read/admin/manage/categories/category_id.yaml'
"/api/admin/manage/categories/{category_id}/analytics":
$ref: 'read/admin/manage/categories/category_id/analytics.yaml'
"/api/admin/manage/categories/{category_id}/federation":
$ref: 'read/admin/manage/categories/category_id/federation.yaml'
"/api/admin/manage/privileges/{cid}":
$ref: 'read/admin/manage/privileges/cid.yaml'
/api/admin/manage/tags:
Expand Down Expand Up @@ -324,5 +326,7 @@ paths:
$ref: 'read/groups/slug.yaml'
"/api/groups/{slug}/members":
$ref: 'read/groups/slug/members.yaml'
"/api/world":
$ref: 'read/world.yaml'
/api/outgoing:
$ref: 'read/outgoing.yaml'
@@ -0,0 +1,41 @@
get:
tags:
- admin
summary: Get category anayltics
parameters:
- name: category_id
in: path
required: true
schema:
type: string
example: 1
responses:
"200":
description: ""
content:
application/json:
schema:
allOf:
- type: object
properties:
cid:
type: number
enabled:
type: number
description: Whether ActivityPub integration is enabled in site settings
name:
type: string
following:
type: array
items:
type: object
properties:
id:
type: string
description: The activity+json uri of the followed actor
approved:
type: boolean
description: Whether the follow request has been accepted
selectedCategory:
$ref: ../../../../../components/schemas/CategoryObject.yaml#/CategoryObject
- $ref: ../../../../../components/schemas/CommonProps.yaml#/CommonProps