Related to the ForumWG topic of resolvable context collections, there are four FEPs that are currently in consideration:
FEP-7888: Demystifying the context property
FEP-400e: Publicly-appendable ActivityPub collections
Draft FEP-171b: Conversation Containers, an evolution of Conversation Containers
FEP-76ea: Conversation Threads
@[email protected] made a suggestion last month to hopefully reduce the number of moving parts:
Both FEP-400e and FEP-1b12 implementations: support FEP-7888 (context collection)
FEP-400e implementations: upgrade to Conversation Containers
FEP-1b12 implementations: add target property to Announce activity that points to context collection.
This takes FEP 400e out of the running (potentially). But the day after that last meeting, @[email protected] put together FEP 76ea, and now we're back to three.
My concern is that all three FEPs (7888, 171b, and 76ea) all share these distinct qualities:
They establish a conversational context for a given object
They federate out an Add on collection addition. (76ea also sends Remove)
They contain some concept of a context owner (attributedTo)
They differ on the following qualities:
7888/171b use context whereas 76ea uses a new property thr:thread
171b specifies a new object type Context
Collection items:
7888 sends objects in chronological order
171b sends activities in chronological order
76ea sends objects in reverse chronological order
In the lead up to the November WG meeting I'd like to address those differences. All three FEPs are in pre-draft or draft stages, and so I am hoping we can find some common ground and compromise.
Pinging interested parties (who were not already mentioned above) for comment:
@[email protected] @[email protected] @[email protected] @[email protected]
Does anyone know what the most broadly implemented standard is for signalling that a web page has an alternative ActivityPub endpoint?
What I found online (and with @[email protected] and @[email protected]'s input) was to deliver a Link header and set a <link> tag, but it doesn't seem to work (at least with Megalodon)...
This plugin allows adding user levels in the ACP based on reputation.
Originally built by https://github.com/lamcuongdat, I've updated it to work on 3.x and installed on this forum for testing. Available levels can be seen at https://community.nodebb.org/user-levels.
[image: 1684285988532-eb9e36b5-6373-4366-bfda-ba1cfcf2b67a-image.png]
[image: 1684286085844-eb67fba2-43a0-4302-b666-8723d5c24991-image.png]
[image: 1684286184081-a2dae40b-12b2-4fe4-946c-253aa036ce2f-image.png]
Repo & Issues:
https://github.com/NodeBB-Community/nodebb-plugin-user-level
Installation:
npm i @nodebb/nodebb-plugin-user-level
Note that I said "quoted posts", not "quote posts", don't @ me!
After the last WG meeting @[email protected] @[email protected] and I chatted a bit about how NodeBB handles quoted posts, but also in relation to quote posts. I thought that it was an interesting chat that merited further discussion; also because some of it was over my head.
When asked how NodeBB handles blockquotes specifically, I replied that blockquotes themselves are rather simple. We set a copy of the text wrapped in <blockquote>.
The rationale is simple: forums typically represent content in a linear fashion, and quoted posts are a handy way to reinforce subcontext within a topic. A typical topic/thread could have many separate discussions all happening together (aka thread drift), so quotes help others know what you're responding to. We don't have special handling or references to our blockquotes because there is a history in forums of edited blockquotes.
Perhaps you want to have a block quote and add some emphasis?
It's also better netiquette (god, that term is old) to trim down the quote to only the relevant parts.
Another upside is that a copy-paste of a post preserves that post to history. That can be useful if the quoted user tries to edit their post later, etc.
vis-a-vis the concept of "quote posts", which I take to mean an embedded post within a post, allowing for replies, likes, etc. How that is represented via ActivityPub is probably detailed in some FEP, but NodeBB doesn't implement that yet. It's a more complicated mechanism that requires a lot more thinking through, and to be honest, we haven't had the need for that in the 10+ years we've been building NodeBB.
So I have nodebb on my main domain, e.g. mysite.org
I want to put my own html page at mysite.org/extra
But browser says mysite.org/extra cant be reached, even though the subdurectory exists. Something in the nodebb install on main page is blocking it.
What is causing this and how do I get subdirectory usable?
I need the Norwegian Nynorsk localization. Using NodeBB in a public service i Norway, demand that you can choose between both. We will fokus on the user space translations, but we will problaby run trough the rest over time.
I see it has been requested for some time ago, and there are several different requests for some reason, but the placeholders hasn´t appeared so we can start working on it.
Howdy!
I was running 3.9.1 and just upgraded to 3.10.1. Both prior to the upgrade and now, I haven't been able to delete categories - which is what I believe "Purge Category" is meant to mean, but I don't see any documentation around this.
The Purge Category button seems to do nothing, in any category. I can't find any way to delete categories I don't want, and after creating a new test category I can't get rid of it either.
Am I missing something, or is there something I can do to find out why the button seems to do nothing? (This is happening in both Firefox & Chrome desktop versions on Linux, and when looking at the developer tools in Firefox there's not really anything that seems to happen anywhere when I click on the button - but, I'm not an expert at debugging sites, so I could easily be not doing the right things to get useful information out of it)
Not sure when exactly this started to happen, but I now get broken images on my site - for example
[image: 1720021017180-7aaa6a6c-0331-4a4e-81cd-2f3d4cb06bff-image.png]
According to the console, the original attachment is suffixed with -resized but I do not see a corresponding file, so the render fails.
/assets/uploads/files/1656084919400-blurred-resized.png does not exist, but /assets/uploads/files/1656084919400-blurred.png does.
Any ideas? Currently running 3.8.3.
Whilst not the same topic, there seems to be a relationship in the form of resized with this topic
https://community.nodebb.org/topic/12052/resized-images-are-sometimes-larger-than-before?_=1719996905071
Hi @bh4-tech let's keep the discussion here so as to not pollute the other thread.
To debug federation issues you'll need to check the server-side logs as events happen. You can use activitypub.academy to send yourself public and private posts, which should be parsed by your app. Likely there is some error or perhaps your privileges are not set up correctly.
Additional pages have been added to the NodeBB documentation regarding the following items:
Post visibility — how NodeBB handles incoming activities with public and non-public visibility, and how they are represented in NodeBB.
Conversational Contexts — how NodeBB builds out a conversational context when parsing incoming content.
Hi, we see increased numbers of these log entries in mongoDB
{"t":{"$date":"2024-10-09T09:30:16.143+02:00"},"s":"I", "c":"COMMAND", "id":51803, "ctx":"conn39","msg":"Slow query","attr":{"type":"command","ns":"nodebb.objects","command":{"find":"objects","
filter":{"_key":"topics:tid"},"sort":{"score":1},"projection":{"_id":0,"_key":0,"score":0},"skip":129000,"limit":500,"lsid":{"id":{"$uuid":"dedb7031-7a1d-4cc0-82ba-1a47d0d18b35"}},"$db":"nodebb"},"
planSummary":"IXSCAN { _key: 1, score: -1 }","planningTimeMicros":123,"cursorid":669374630645032835,"keysExamined":129101,"docsExamined":101,"fromMultiPlanner":true,"replanned":true,"replanReason":
"cached plan was less efficient than expected: expected trial execution to take 10001 reads but it took at least 100011 reads","nBatches":1,"numYields":244,"nreturned":101,"queryHash":"A3928A9F","p
lanCacheKey":"ED34AECF","queryFramework":"sbe","reslen":2821,"locks":{"FeatureCompatibilityVersion":{"acquireCount":{"r":245}},"Global":{"acquireCount":{"r":245}}},"storage":{"data":{"bytesRead":21
6878,"timeReadingMicros":195}},"cpuNanos":224969561,"remote":"127.0.0.1:54830","protocol":"op_msg","durationMillis":224}}
What is the proper way to check if indexes are setup correctly?
We have left cache sizes in nodeBB as default so far - do they impact those kind of issues?
I see Post Cache Hit Ratio only at 25%.
I assume increasing the post cache size has effect on mem needed for the node process?
Thanks
SK
This is my config for mongo and redis:
{
"url": "https://mydomain",
"secret": "mykey",
"database": "mongo",
"mongo": {
"host": "127.0.0.1",
"port": "27017",
"username": "nodebb",
"password": "nodebb",
"database": "nodebb",
"uri": ""
},
"port": ["8900","8901","8902"],
"bcrypt_rounds": "21",
"bind_address": "127.0.0.1",
"isCluster": "false",
"redis": {
"host": "127.0.0.1",
"port": "6379",
"password": "",
"database": "2"
},
"session_store": {
"name": "redis",
"host":"127.0.0.1",
"port":"6379",
"password": "",
"database": "1",
"tls": {}
}
}
I see a problem with data on NodeBB, ex: when i change site title in /admin/settings/general, it effect is true on FE and Admin. After 5 mins ( around), title will be changed to site title old, after 5 or 10 mins more, site title new back. Maybe, logic sync is not true?
Shooud i use "session_store" redis server for scale up with 10k users realtime? ( just thinking)
Hello,
I've recently encountered something of the most weird kind : user accounts are mixed up. What I mean is that for example, a user A can login to their account, with their username and password, but will have access to an account B, including settings, emails, posts and more.
It is a profound security issue, and is also causing great confusion.
I've had to restore a backup of the database a few months back, and this issue did not appear at the time. Some accounts do no appear to be affected, as mine for example is normal.
Did anyone else have this issue ? Can I do anything to resolve it ?
I was thinking of deleting all the accounts and re-creating them and inviting the users to reset their passwords en masse, for example by exporting all the users to a CSV and then re-inviting them, but I am not sure it will resolve the issue.
It seems as if the user's ID have been linked to two accounts. A strange case of data schyzophrenia.
The forum is also extremely slow and shows a very high mongoDB usage.
Thank you for your help,
Cheers
I'm currently running NodeBB 3.9.0.
I Need to impliment the saml in my nodebb forum and i have created a plugin for that and im getting the response of the saml on my code but i'm not able to do the user login or signup with that, i have confussion on that what hook's or plugin i need to use to make that login or signup work. i'm also sharing my code so that you can help better. @baris @julian
router.post('/assert', async function (req, res) {
const decodedResponse = Buffer.from(req.body.SAMLResponse, 'base64').toString('utf-8');
const parser = new xml2js.Parser();
const saml_response = await parser.parseStringPromise(decodedResponse);
const issuer = saml_response['saml2p:Response']['saml2:Issuer'][0];
const assertion = saml_response['saml2p:Response']['saml2:Assertion'][0];
const subject = assertion['saml2:Subject'][0];
const nameId = subject['saml2:NameID'][0];
const existingUser = await User.getUidByEmail(nameId._);
if (existingUser) {
await authenticationController.onSuccessfulLogin(req, existingUser.uid);
return res.redirect('/home');
} else {
// Create a new user
const newUser = {
fullname: 'testfullname',
username: 'testfullname',
email: nameId._,
created_at: new Date(),
};
const result = await db.client.collection('objects').insertOne(newUser);
if (result.insertedId) {
await User.setUserField(result.insertedId, 'email', newUser.email);
// await UserEmail.confirmByUid(result.insertedId);
await authenticationController.onSuccessfulLogin(req, result.insertedId);
return res.redirect('/');
} else {
return res.status(500).send('Error creating new user.');
}
}
});
I get the following error trying to upgrade:
Ubuntu 24.04, PostgreSQL 17.0.1
3. Checking installed plugins for updates...Checking installed plugins and themes for updates... (node:188205) [DEP0040] DeprecationWarning: The `punycode` module is deprecated. Please use a userland alternative instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
Warning: An unexpected error occured when attempting to verify plugin upgradability
Error occurred during upgrade: TypeError: fetch failed
at node:internal/deps/undici/undici:13185:13
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async call (/var/www/vhosts/domain/NodeBB/src/request.js:37:19)
at async getSuggestedModules (/var/www/vhosts/domain/NodeBB/src/cli/upgrade-plugins.js:78:27)
at async checkPlugins (/var/www/vhosts/domain/NodeBB/src/cli/upgrade-plugins.js:101:27)
at async upgradePlugins (/var/www/vhosts/domain/NodeBB/src/cli/upgrade-plugins.js:125:17)
at async Object.handler (/var/www/vhosts/domain/NodeBB/src/cli/upgrade.js:29:4)
at async runSteps (/var/www/vhosts/domain/NodeBB/src/cli/upgrade.js:55:5)
at async Object.runUpgrade [as upgrade] (/var/www/vhosts/domain/NodeBB/src/cli/upgrade.js:98:3)
2024-10-09T13:53:09.962Z [4567/188205] - error: uncaughtException: fetch failed
TypeError: fetch failed
at node:internal/deps/undici/undici:13185:13
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async call (/var/www/vhosts/domain/NodeBB/src/request.js:37:19)
at async getSuggestedModules (/var/www/vhosts/domain/NodeBB/src/cli/upgrade-plugins.js:78:27)
at async checkPlugins (/var/www/vhosts/domain/NodeBB/src/cli/upgrade-plugins.js:101:27)
at async upgradePlugins (/var/www/vhosts/domain/NodeBB/src/cli/upgrade-plugins.js:125:17)
at async Object.handler (/var/www/vhosts/domain/NodeBB/src/cli/upgrade.js:29:4)
at async runSteps (/var/www/vhosts/domain/NodeBB/src/cli/upgrade.js:55:5)
at async Object.runUpgrade [as upgrade] (/var/www/vhosts/domain/NodeBB/src/cli/upgrade.js:98:3) {"date":"Wed Oct 09 2024 15:53:09 GMT+0200 (Central European Summer Time)","error":{},"exception":true,"os":{"loadavg":[1.34,0.84,0.38],"uptime":91367.25},"process":{"argv":["/opt/plesk/node/22/bin/node","/var/www/vhosts/domain/NodeBB/nodebb","upgrade"],"cwd":"/var/www/vhosts/domain/NodeBB","execPath":"/opt/plesk/node/22/bin/node","gid":1003,"memoryUsage":{"arrayBuffers":66859,"external":3415358,"heapTotal":25841664,"heapUsed":22144224,"rss":96079872},"pid":188205,"uid":10011,"version":"v22.9.0"},"stack":"TypeError: fetch failed\n at node:internal/deps/undici/undici:13185:13\n at process.processTicksAndRejections (node:internal/process/task_queues:105:5)\n at async call (/var/www/vhosts/domain/NodeBB/src/request.js:37:19)\n at async getSuggestedModules (/var/www/vhosts/domain/NodeBB/src/cli/upgrade-plugins.js:78:27)\n at async checkPlugins (/var/www/vhosts/domain/NodeBB/src/cli/upgrade-plugins.js:101:27)\n at async upgradePlugins (/var/www/vhosts/domain/NodeBB/src/cli/upgrade-plugins.js:125:17)\n at async Object.handler (/var/www/vhosts/domain/NodeBB/src/cli/upgrade.js:29:4)\n at async runSteps (/var/www/vhosts/domain/NodeBB/src/cli/upgrade.js:55:5)\n at async Object.runUpgrade [as upgrade] (/var/www/vhosts/domain/NodeBB/src/cli/upgrade.js:98:3)","trace":[{"column":13,"file":"node:internal/deps/undici/undici","function":null,"line":13185,"method":null,"native":false},{"column":5,"file":"node:internal/process/task_queues","function":"process.processTicksAndRejections","line":105,"method":"processTicksAndRejections","native":false},{"column":19,"file":"/var/www/vhosts/domain/NodeBB/src/request.js","function":"async call","line":37,"method":null,"native":false},{"column":27,"file":"/var/www/vhosts/domain/NodeBB/src/cli/upgrade-plugins.js","function":"async getSuggestedModules","line":78,"method":null,"native":false},{"column":27,"file":"/var/www/vhosts/domain/NodeBB/src/cli/upgrade-plugins.js","function":"async checkPlugins","line":101,"method":null,"native":false},{"column":17,"file":"/var/www/vhosts/domain/NodeBB/src/cli/upgrade-plugins.js","function":"async upgradePlugins","line":125,"method":null,"native":false},{"column":4,"file":"/var/www/vhosts/domain/NodeBB/src/cli/upgrade.js","function":"async Object.handler","line":29,"method":"handler","native":false},{"column":5,"file":"/var/www/vhosts/domain/NodeBB/src/cli/upgrade.js","function":"async runSteps","line":55,"method":null,"native":false},{"column":3,"file":"/var/www/vhosts/domain/NodeBB/src/cli/upgrade.js","function":"async Object.runUpgrade [as upgrade]","line":98,"method":"runUpgrade [as upgrade]","native":false}]}
-
General Discussion
A place to talk about whatever you want
-
NodeBB Development
Stay tuned here to hear more about new releases and features of NodeBB!
-
Feature Requests
You have a cool idea about NodeBB? Post it here.
-
-
NodeBB Themes
A public listing of community themes created by the NodeBB community. -
Technical Support
Need help with installing or configuring NodeBB? Look here.
Copyright © 2024 NodeBB | Contributors