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 655 commits into
base: develop
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
655 commits
Select commit Hold shift + click to select a range
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
4fd0d27
chore: bump markdown
julianlam May 21, 2024
e536223
Merge remote-tracking branch 'origin/develop' into activitypub
julianlam May 21, 2024
b6653d1
fix: have replies provide `name` when mocked
julianlam May 23, 2024
09e71e9
Merge branch 'develop' into activitypub
julianlam May 23, 2024
7c79e23
feat: add another sanitization round before federating to remove clas…
julianlam May 23, 2024
ff53f3c
feat: save remote user urls backreference
julianlam May 24, 2024
5ec2497
chore: bump mentions
julianlam May 24, 2024
f2e43e8
Merge remote-tracking branch 'origin/develop' into activitypub
julianlam May 27, 2024
547fc17
fix: update post cache clearing logic to call helper function
julianlam May 28, 2024
47406d1
fix: parse incoming HTML to remove useless classes too
julianlam May 30, 2024
4cec678
chore: bump harmony
julianlam Jun 3, 2024
76290e3
fix: bug that stopped remote users with dashes in their handle from b…
julianlam Jun 4, 2024
6f37825
fix: crash in mocks.profile
barisusakli Jun 4, 2024
300cf79
add max to caches to limit memory usage
barisusakli Jun 4, 2024
709c913
feat: pruning of stale notes older than 30 days with no engagement
julianlam Jun 4, 2024
9868a72
refactor: single cache.del call
barisusakli Jun 5, 2024
c4c3c20
chore: up mentions
barisusakli Jun 5, 2024
c680fa6
chore: update ap cron job config
julianlam Jun 5, 2024
119230d
Merge branch 'develop' into activitypub
barisusakli Jun 6, 2024
35eb2d0
fix: closes #12618, handle missing selector
barisusakli Jun 7, 2024
eaf4354
refactor: get rid of noop
barisusakli Jun 7, 2024
f8d9f64
fix: another crash
barisusakli Jun 7, 2024
ba2d184
refactor: comment out verbose logs
barisusakli Jun 7, 2024
2ae5857
refactor: remove verbose logs,
barisusakli Jun 7, 2024
29bf99a
Squashed commit of the following:
barisusakli Jun 7, 2024
d1625d5
refactor: change to info
barisusakli Jun 7, 2024
c6f2155
fix: incorrect use of .map on a Set
julianlam Jun 7, 2024
3dca79d
feat: allow user.exists to respond to requests for remote uids too
julianlam Jun 7, 2024
539300f
feat: remote user deletion logic, #12611
julianlam Jun 7, 2024
f83a367
fix: set
barisusakli Jun 7, 2024
d442251
Merge branch 'activitypub' of https://github.com/NodeBB/NodeBB into a…
barisusakli Jun 7, 2024
8d79096
fix: don't attempt user reset token cleaning if uid is not a number
julianlam Jun 7, 2024
4bb2c1a
feat: logic for remote user deletion, cronjob, and ACP options for pr…
julianlam Jun 7, 2024
6ecc791
fix: missing await on topic purge
julianlam Jun 7, 2024
b1f9ad5
Squashed commit of the following:
barisusakli Jun 7, 2024
6f831d1
Merge branch 'develop' into activitypub
barisusakli Jun 8, 2024
869df3c
refactor: unused winston
barisusakli Jun 8, 2024
1ac793e
Merge branch 'develop' into activitypub
barisusakli Jun 8, 2024
ded05b8
Merge branch 'develop' into activitypub
barisusakli Jun 9, 2024
dbd901d
chore: up markdown
barisusakli Jun 9, 2024
58668b4
chore: up markdown
barisusakli Jun 9, 2024
0d645c9
Merge branch 'develop' into activitypub
barisusakli Jun 9, 2024
7062513
fix: pid in api call
barisusakli Jun 10, 2024
3488a4b
refactor: suggest topics, use strings for tids
barisusakli Jun 10, 2024
4f2ccda
Merge branch 'develop' into activitypub
barisusakli Jun 10, 2024
dac2cd2
Merge branch 'develop' into activitypub
barisusakli Jun 10, 2024
bcfac00
fix: unintentional parseInt during post purge
julianlam Jun 10, 2024
57913be
Merge branch 'develop' into activitypub
barisusakli Jun 10, 2024
6272d05
fix: guard against infinite loop during topic purge batch call
julianlam Jun 10, 2024
ae3fa85
fix: handle missing fullname in actor removal logic
julianlam Jun 10, 2024
00c70ce
Merge branch 'develop' into activitypub
barisusakli Jun 10, 2024
eb6fe33
refactor: User.getUidsByUserslugs, so it works with multiple slugs
barisusakli Jun 10, 2024
a8d4197
parse teasers as plain text
barisusakli Jun 10, 2024
bad094e
chore: up mentions
barisusakli Jun 10, 2024
89465ec
fix: don't crash process on error in cronjobs
barisusakli Jun 10, 2024
634e9b0
fix typo
barisusakli Jun 10, 2024
552b07b
Merge branch 'develop' into activitypub
barisusakli Jun 11, 2024
2c87c6e
chore: up mentions
barisusakli Jun 11, 2024
7313d5c
feat: show category followers in category federation ACP page
julianlam Jun 11, 2024
34dcb44
Merge branch 'develop' into activitypub
barisusakli Jun 11, 2024
bb0360b
chore: commenting out logic that drops requests if the id has already…
julianlam Jun 11, 2024
42f514b
feat: add timestamp to most activity ids
oplik0 Jun 11, 2024
04b4c16
Merge branch 'develop' into activitypub
barisusakli Jun 11, 2024
194a9fc
add missing nconf
barisusakli Jun 11, 2024
f075a8c
Merge branch 'develop' into activitypub
barisusakli Jun 11, 2024
2b6e31a
chore: up mentions
barisusakli Jun 12, 2024
cdc6f9f
check if ap enabled
barisusakli Jun 12, 2024
f29214e
fix: skip follower count check if cid follower is found
julianlam Jun 12, 2024
b2d03da
refactor: dont need exist check, if post doesnt exist getPostData ret…
barisusakli Jun 12, 2024
a67e1b7
Merge branch 'activitypub' of https://github.com/NodeBB/NodeBB into a…
barisusakli Jun 12, 2024
3eca978
refactor: add method from mentions into core
barisusakli Jun 13, 2024
68c9165
chore: up mentions
barisusakli Jun 13, 2024
919b037
Merge branch 'develop' into activitypub
barisusakli Jun 13, 2024
578a53d
feat: #12589, add nodeinfo endpoint
barisusakli Jun 13, 2024
badb7e2
fix: post count
barisusakli Jun 13, 2024
acd1630
fix: move logic to move topic on note assertion earlier in the flow s…
julianlam Jun 13, 2024
101062c
fix: introduce artificial 5s delay for 1b12 announces
julianlam Jun 13, 2024
3567f55
feat: send cause to ap.get error handler, delete local account repres…
julianlam Jun 13, 2024
d9f1fa3
feat: plumb audience into _activitypub when mocking posts
julianlam Jun 13, 2024
b6ffc47
feat: check to/cc/audience for local category and put topic there ins…
julianlam Jun 13, 2024
f76a586
refactor: catch errors
barisusakli Jun 13, 2024
291bf7d
perf: move attachments to post hash
barisusakli Jun 13, 2024
c95075e
perf: '-inf' faster
barisusakli Jun 14, 2024
839928b
another one
barisusakli Jun 14, 2024
1219d7d
fix: minor adjustment in logic to work around relation logic
julianlam Jun 14, 2024
937caec
Merge branch 'develop' into activitypub
barisusakli Jun 14, 2024
6227ab9
refactor: actor pruning logic
julianlam Jun 14, 2024
18e5831
fix: eliminate infinite loop in actors.assert via user.getUsersFields
julianlam Jun 14, 2024
632ba51
Merge branch 'develop' into activitypub
barisusakli Jun 14, 2024
827a91e
Revert "fix: eliminate infinite loop in actors.assert via user.getUse…
julianlam Jun 14, 2024
691f691
debug: comment out actor assertion call in Users.getUsersFields
julianlam Jun 14, 2024
f6d4d56
chore: lint
julianlam Jun 14, 2024
e9a0d49
fix: missing openapi schema change
julianlam Jun 14, 2024
3f1b04e
Merge branch 'develop' into activitypub
barisusakli Jun 14, 2024
f5b856f
feat: assert actors when mocking post
julianlam Jun 14, 2024
be95b5b
fix: FEP 1b12 conformance, federate Announce(Create(Note)) instead of…
julianlam Jun 14, 2024
89d2363
fix: re-add sending of Announce(Note) for microblog support, #12434
julianlam Jun 14, 2024
6069bee
chore: make getParentChain logging verbose
julianlam Jun 14, 2024
931a0f0
chore: info -> verbose logging in ap inbox.js
julianlam Jun 14, 2024
c8bc6e5
fix: 1b12 conformance for inbox.create as well
julianlam Jun 14, 2024
6569066
feat: sending out 1b12-style Announce activities on incoming Create/U…
julianlam Jun 14, 2024
4030c09
fix: getCidByPid call returning improper values because a remote url …
julianlam Jun 14, 2024
15797f6
Merge branch 'develop' into activitypub
barisusakli Jun 15, 2024
c276aa1
Merge branch 'develop' into activitypub
barisusakli Jun 15, 2024
c231ab7
refactor: single db call
barisusakli Jun 15, 2024
d550dc2
Merge branch 'develop' into activitypub
barisusakli Jun 15, 2024
ddda8fe
encode both sides
barisusakli Jun 15, 2024
820d576
Merge branch 'develop' into activitypub
barisusakli Jun 15, 2024
ad22b54
perf: get rid of getPidByIndex, use postAtIndex
barisusakli Jun 15, 2024
6042f4a
test: add attachments
barisusakli Jun 15, 2024
bb6f978
Merge branch 'develop' into activitypub
barisusakli Jun 15, 2024
232fcc0
Merge branch 'develop' into activitypub
barisusakli Jun 17, 2024
18f9baf
chore: up harmony
barisusakli Jun 17, 2024
05b7828
Merge branch 'develop' into activitypub
barisusakli Jun 17, 2024
c021e7e
refactor: announces
barisusakli Jun 17, 2024
b540ecd
chore: up harmony
barisusakli Jun 17, 2024
a458bdd
serve nodeinfo/2.0.json as well
barisusakli Jun 17, 2024
4b8a9e5
fix: category follow schema test
julianlam Jun 17, 2024
d0a1ebc
feat: store encountered instances by last seen date
julianlam Jun 17, 2024
6e2178b
feat: instance-level allow andd deny list for federatioN
julianlam Jun 17, 2024
e6e6c2a
fix: null case handling
julianlam Jun 17, 2024
4eb998d
fix: send additional @context entry for `publicKey` support, fixes #1…
julianlam Jun 17, 2024
529cd37
Merge branch 'develop' into activitypub
barisusakli Jun 17, 2024
aae0b5b
chore: up harmony
barisusakli Jun 18, 2024
b3b34eb
Merge branch 'develop' into activitypub
barisusakli Jun 19, 2024
5a2fa52
fix: remove parseInt on users controller
barisusakli Jun 19, 2024
5981803
fix: improper sanitization and parsing in mocks.note
julianlam Jun 19, 2024
daed741
fix(deps): bump markdown
julianlam Jun 19, 2024
a3c6c87
fix: wrap ap note creation in setImmediate to let internal hooks have…
julianlam Jun 19, 2024
4b86b37
fix: openapi spec for v3 posts get
julianlam Jun 19, 2024
7fada44
fix: change setImmediate to a 5s timeout to give plugins (or anything…
julianlam Jun 19, 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
7 changes: 6 additions & 1 deletion install/data/defaults.json
Original file line number Diff line number Diff line change
Expand Up @@ -189,5 +189,10 @@
"composer:allowPluginHelp": 1,
"maxReconnectionAttempts": 5,
"reconnectionDelay": 1500,
"disableCustomUserSkins": 0
"disableCustomUserSkins": 0,
"activitypubEnabled": 1,
"activitypubAllowLoopback": 0,
"activitypubContentPruneDays": 30,
"activitypubUserPruneDays": 7,
"activitypubFilter": 0
}
8 changes: 8 additions & 0 deletions install/data/navigation.json
Original file line number Diff line number Diff line change
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
9 changes: 5 additions & 4 deletions install/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@
"bootswatch": "5.3.3",
"chalk": "4.1.2",
"chart.js": "4.4.3",
"cheerio": "^1.0.0-rc.12",
"cli-graph": "3.2.2",
"clipboard": "2.0.11",
"colors": "1.4.0",
Expand Down Expand Up @@ -99,12 +100,12 @@
"nodebb-plugin-dbsearch": "6.2.5",
"nodebb-plugin-emoji": "5.1.15",
"nodebb-plugin-emoji-android": "4.0.0",
"nodebb-plugin-markdown": "12.2.8",
"nodebb-plugin-mentions": "4.4.3",
"nodebb-plugin-markdown": "13.0.0-pre.8",
"nodebb-plugin-mentions": "4.6.6",
"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.59",
"nodebb-theme-harmony": "2.0.0-pre.27",
"nodebb-theme-lavender": "7.1.8",
"nodebb-theme-peace": "2.2.5",
"nodebb-theme-persona": "13.3.21",
Expand Down Expand Up @@ -195,4 +196,4 @@
"url": "https://github.com/barisusakli"
}
]
}
}
18 changes: 18 additions & 0 deletions public/language/en-GB/activitypub.json
Original file line number Diff line number Diff line change
@@ -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!",

"announcers": "Announcers",
"announcers-x": "Announcers (%1)"
}
19 changes: 19 additions & 0 deletions public/language/en-GB/admin/manage/categories.json
Original file line number Diff line number Diff line change
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,22 @@
"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",
"federation.followers": "Remote users following this category",
"federation.followers-handle": "Handle",
"federation.followers-id": "ID",
"federation.followers-none": "No followers.",

"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
Original file line number Diff line number Diff line change
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
20 changes: 20 additions & 0 deletions public/language/en-GB/admin/settings/activitypub.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"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",
"pruning": "Content Pruning",
"content-pruning": "Days to keep remote content",
"content-pruning-help": "Note that remote content that has received engagement (a reply or a upvote/downvote) will be preserved. (0 for disabled)",
"user-pruning": "Days to cache remote user accounts",
"user-pruning-help": "Remote user accounts will only be pruned if they have no posts. Otherwise they will be re-retrieved. (0 for disabled)",
"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-help-hostname": "Enter just the instance hostname below (e.g. <code>example.org</code>), separated by line breaks.",
"server.filter-allow-list": "Use this as an Allow List instead"
}
10 changes: 9 additions & 1 deletion public/language/en-GB/error.json
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
Expand Up @@ -449,6 +449,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
Original file line number Diff line number Diff line change
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 @@ -326,5 +328,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'
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
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
followers:
type: array
items:
type: object
properties:
userslug:
type: string
description: An URL-safe variant of the username (i.e. lower-cased, spaces removed, etc.)
example: dragon-fruit
picture:
type: string
description: A URL pointing to a picture to be used as the user's avatar
example: 'https://images.unsplash.com/photo-1560070094-e1f2ddec4337?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=256&h=256&q=80'
nullable: true
uid:
type: number
description: A user identifier
example: 1
selectedCategory:
$ref: ../../../../../components/schemas/CategoryObject.yaml#/CategoryObject
- $ref: ../../../../../components/schemas/CommonProps.yaml#/CommonProps
2 changes: 2 additions & 0 deletions public/openapi/read/topic/topic_id.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,8 @@ get:
type: boolean
downvoted:
type: boolean
attachments:
type: array
replies:
type: object
properties:
Expand Down