Skip to content
  • 4 Votes
    1 Posts
    25 Views
    julianJ
    The full minutes from the Forum and Threaded Discussions Task Force monthly meeting (held on 5 December) can be found at this Google Docs link The minutes are also inline below. Apologies in advance if I misrepresented anybody or missed any crucial bits of information. December 2024 Minutes Forum and Threaded Discussions Task Force --- Housekeeping Julian noted that the event description in the SWICG calendar calls for a monthly meeting from 1700 to 1800 UTC, although the scheduled time is pegged to 1300 to 1400 Eastern Time (observing DST). Dmitri (absent from meeting) to update event description as:Article and Mastodon treatment of non-notes Darius provided an update – been under the weather and busy with some other work-related items, but: Mastodon team cautiously optimistic about upstream PR, some concerns were voiced over things like inline images Hopefully by next month will have something more concrete to show to them; re: demo package Evan (@[email protected]) planning to get some people together in-person, to work together at FOSDEM in Brussels (Feb 2025); specifically to address long-form text issue Discussions about this in the task force would be considered the crucial pre-work Darius will update the group if something happens before January (re: code or PR package) A test instance up and running, Darius plans to make it more accessible for others to check out Silverpill’s FEP 171b is now an official draft, open for comments on SocialHub No specifics, just a news item. Context collections FEP Convergence Rationale for recommendation outlined in meeting agenda. Evan (@[email protected]) and a (@[email protected]) met up just prior to the WG meeting to discuss and work out differences between their FEPs; main notes: Using context to represent a reply tree is good Restricting usage of context is not the goal of 7888 or the ForumWG Co-exists well with 76ea’s thr:thread property to denote a reply tree, etc. Recommending use of as:context is one good way forward Evan recommends that the “should” in the proposal be changed to a “may” PROPOSAL: Publishers SHOULD use `context` for grouping related objects in a thread (but this is not the only way to use context). RESOLVED with 8 ayes, no nays, and no abstentions Brainstorming focus items for 2025 Emelia (@[email protected]) – multiple contexts? a (@[email protected]) : we need to also handle the fact that some contexts may not resolve Emelia: as:context can be an array of values in JSON-LD a: inReplyTo can have multiple values too; but in general, on the producing side we generate a single value – generally expect context/thread to remain the same (singular values) Sebi: "we thought a lot about multiple contexts" - led us to the conclusion of using profiles/describes property; per spec can only have one value Julian: Handling when implementors (e.g. lemmy/piefed) don't have the concept of topics a: there are multiple different models of how items are grouped together; reply tree model works for large part of the fediverse; mastodon has concept of reply tree represented internally as a conversation (vs context); this could be expanded into a conversation having an owner, etc.; mastodon has the conceptual ground to build upon Evan: reply trees work well on microblogs, blog comment trees, threaded posting systems, forums; other applications expect a more serial model... messenger/chat systems, where ordering of objects is not in a tree, no explicit relation between them; hashtags, locations, few other ways to use context Emelia: clarify overlap between replies collection and context collection? a: in general will include both ancestors and descendants; could add filters, look at tags, etc. to get subsets. If you are querying by context, you are looking for all objects related by said context Evan: full tree Julian: Mastodon reply-tree service proposed (https://github.com/NeuromatchAcademy/mastodon/pull/44) Julian: worried about scalability and performance of a backend service iterating through an entire reply tree; advocates that retrieving as:context is more performant especially if we build in some tooling for synchronization and member checking Emelia: historical reports of harassment due to `inReplyTo`; when looking at context including descendents, then how do we generate the tree? Evan: fep 76ea goes into detail about how reply trees can be managed a: answer is "who has the authority?"; who decides what goes into the collection? the `attributedTo` actor. For the replies collection, this exists IN PARALLEL TO `context`; in some ways a subset of the thread; could be a point of contention for systems that expect all objects to exist in general vs. conversation oriented Julian: upends expectation that objects are independent Darius: does this relate to announce leaking? recommendations that you not forward the entire object, just the ids Emelia: related but different; announce leaking -- should only ever do objects by ref (by the id) a: the paradigm shift is more social rather than technical -- that you cannot just rely on inReplyTo to prove that an object is approved some duplication as context includes replies, but they are distinct collections. They are decided by different authorities. `replies` is decided by whoever wrote the post Ted (@[email protected]): This sounds a lot like reinventing netnews, without taking the lessons that were learned from it; blurring the ideas of message store/relay/display; for all of this to work, the system has to pick up all replies, and let the client filter. Julian/a: anything specific to share? lessons, etc. – definitely of interest in not repeating the same mistakes
  • Happy Friday Everyone!

    General Discussion
    1
    0 Votes
    1 Posts
    32 Views
    codenamejessicaC
    As another week comes to a close, let's take a moment to celebrate our accomplishments and recharge for the exciting challenges ahead. Whether you're coding a new feature, troubleshooting a tricky bug, or strategizing your next business move, remember this: You are capable of amazing things. The world of development is a dynamic one, filled with constant learning, problem-solving, and innovation. It demands resilience, creativity, and a growth mindset. Embrace the challenges that come your way, for they are opportunities to learn and grow. Remember the passion that ignited your journey. Whether you're driven by the thrill of building something new, the desire to solve real-world problems, or the dream of creating a successful business, hold onto that fire. Let it fuel your perseverance and inspire you to push beyond your limits. The road to success is rarely linear. There will be setbacks, doubts, and moments of frustration. But even in the face of adversity, never lose sight of your goals. Trust in your abilities, learn from your mistakes, and keep moving forward. We are all part of a vibrant and supportive community. Reach out to your fellow developers, share your knowledge, and seek inspiration from others. Collaboration can spark new ideas, accelerate your progress, and remind you that you're not alone on this journey. As you head into the weekend, take time to relax, recharge, and reflect on your achievements. Celebrate the progress you've made, no matter how small. You deserve it. Here's to a weekend filled with joy, inspiration, and well-deserved rest. Have a fantastic Friday and an even better week ahead! Codename: Jessica Linux Enthusiast | Adventurer | Smart Ass My Site | Join the Forum [image: 9wqynsG.png] [image: endpoint?url=https%3A%2F%2Fquotes.codenamejessica.com%2Frandom-quote&cacheSeconds=10&style=for-the-badge]
  • Version info on Themes

    Feature Requests
    1
    0 Votes
    1 Posts
    26 Views
    codenamejessicaC
    Currently while looking in the Admin-Appearances-Themes, you will see the Themes that are available, but no version information. Is there a way we can apply the version information under or beside the name so we can determine if we are out of date? Plug-Ins have a nice list, although I have not been able to see anything for the Themes. Codename: Jessica Linux Enthusiast | Adventurer | Smart Ass My Site | Join the Forum [image: 9wqynsG.png] [image: endpoint?url=https%3A%2F%2Fquotes.codenamejessica.com%2Frandom-quote&cacheSeconds=10&style=for-the-badge]
  • 5 Votes
    1 Posts
    25 Views
    julianJ
    As reported initially by @[email protected], there are some posts from Lemmy that didn't make it over to NodeBB. This turned out to be an issue with how content was parsed by NodeBB if source.content was also present. The code has been updated so that if a content source of type text/markdown is provided, then that source is used instead of the generated HTML. Outside of Lemmy, this also applies to any implementor (snac2 maybe?) that also implements the source.content property.
  • Popular is wrong and don't work!

    Bug Reports
    1
    0 Votes
    1 Posts
    33 Views
    D
    i'm using NodeBB v3.10.3. Popular work well when i start to use. In the one day, i don't know why Popular don't work although i try to click to topics for update topics views. Site don't show any data when i chose: day, week, month [image: 1733200643197-5161646d-203a-441a-b031-788314c75d08-image.png] When i chose: All time, site response data but it's not true by views. this is my congfig: { "url": "https://mywebsite", "secret": "{mykey}", "database": "mongo", "mongo": { "host": "{ip}", "port": "27017", "username": "nodebbv3", "password": "mypass", "database": "nodebbv3", "uri": "" }, "port": ["4567","4568","4569"], "bind_address": "0.0.0.0", "isCluster": "true", "redis": { "host": "127.0.0.1", "port": "6379", "password": "mypass", "database": "2" }, "upload_path":"/public/uploads", "session_store": { "name": "redis", "host":"127.0.0.1", "port":"6379", "password": "mypass", "database": "1", "tls": {} } }
  • changes not reflecting

    Unsolved Technical Support
    1
    0 Votes
    1 Posts
    18 Views
    p pbP
    Changes are not reflecting on the local URL after I make updates to the code. Even after completely deleting the views folder and modifying the category.json file, restarting NodeBB, and refreshing the URL, no changes are visible. and url is still opening
  • 0 Votes
    1 Posts
    33 Views
    juseJ
    issues I wanted to implement DOM hook-like functionality for post pages, so I found this plugin called [nodebb-plugin-markdown-toc] But issues came up.... Since I don’t know how to write plugins and I’m not very familiar with the Harmony template, I can’t modify the front-end display of this plugin to look the way I want it to. Does anyone have any good ideas on how to modify it to make it look more appropriate? my css now /*********TOC*******/ .toc{background-color:var(--bs-container-background-color);border:1px solid #374646;box-shadow:2px 2px 3px rgba(0,0,0,0.1882352941);font-size:0.8rem !important;margin-bottom:1rem;border:1px solid rgba(0,0,0,0.125);border-radius:0.25rem;position:fixed;top:285px;left:-185px;margin-left:240px;min-width:120px;max-width:260px;padding-bottom:5px;display:inline-block;z-index:100;max-height:640px;overflow-x:hidden;overflow-y:overlay;transition:scrollbar-color 0.3s ease-out} .toc::before{content:"主题目录:";line-height:20px;text-decoration:none;text-indent:2em;margin-bottom:5px;padding:0px;font-size:12px;background-color:rgba(0,0,0,0.03);border-top:1px solid rgba(0,0,0,0.125);border-bottom:1px solid rgba(0,0,0,0.06);display:block;height:20px} .toc a{color:var(--bs-body-color-bright,var(--base06,var(--bs-body-color)))} .toc a{background:none!important;text-decoration:none!important} .toc ul{padding:0px!important;margin-bottom:0px!important;} .toc ul ul{padding-left:0.8rem!important} .toc li{list-style-position:inside;display:block;overflow:hidden;padding-right:6px!important;list-style-type:disc!important} .toc li{border-bottom:1px solid rgba(0,0,0,0.06)} .toc li li{border:none!important} .tocli a{text-decoration:none!important;word-break:break-all;word-break:break-all;overflow:hidden} .toc::-webkit-scrollbar{width:8px} .toc::-webkit-scrollbar-track{background:gba(248,249,250,0.8);border-radius:100px} .toc::-webkit-scrollbar-thumb{background-image:linear-gradient(180deg,#D0368A 0%,#708AD4 99%);box-shadow:inset 2px 2px 5px 0 rgba(#fff,0.5);border-radius:100px} @media(max-width:600px){.toc{position:unset;margin:3px auto;width:100%;min-width:50%!important;max-width:98%!important;border:1px solid #ddd;font-size:12px!important;font-family:nb,"microsoft yahei light"!important;display:inline-block} } Preview [image: 1732814143016-snipaste_2024-11-29_01-15-32.png] [image: 1732814192898-snipaste_2024-11-29_01-16-21.png] My website Preview https://bbs.aiink.cn/topic/10 https://bbs.aiink.cn/post/37 https://bbs.aiink.cn/topic/3
  • 3.11.0 Upgrade Support

    Pinned Technical Support
    1
    0 Votes
    1 Posts
    76 Views
    barisB
    If you have problems upgrading to 3.11.0 you can ask for help here.
  • Add a back to top button

    General Discussion
    1
    2 Votes
    1 Posts
    63 Views
    juseJ
    Preview [image: 1732462025632-111.gif] custom CSS/SASS .back-to-top-btn{display:none;position:fixed;bottom:20px;right:200px;z-index:99;border:none;outline:none;background-color:#EB686466;color:white;cursor:pointer;width:50px;height:50px;border-radius:50%;display:flex;justify-content:center;align-items:center} .back-to-top-btn:hover{background-color:#EB6864} @media (max-width:768px){.back-to-top-btn{right:20px;bottom:116px}} custom Javascript // 获取按钮元素 const backToTopButton = document.getElementById('back-to-top-btn'); // 当用户向下滚动超过一定的距离时,显示按钮 window.addEventListener('scroll', function() { if (window.pageYOffset > 200) { // 这个值可以根据你的需求调整 backToTopButton.style.display = 'block'; } else { backToTopButton.style.display = 'none'; } }); // 当用户点击按钮时,平滑滚动回顶部 backToTopButton.addEventListener('click', function() { window.scrollTo({top: 0, behavior: 'smooth'}); }); custom header or use 【nodebb-plugin-customize】plugin,edit footer.tpl add <button id="back-to-top-btn" class="back-to-top-btn"><i class="fas fa-arrow-up"></i></button>
  • Does nodebb have a plugin like DOM Tree?

    Plugin Requests
    1
    0 Votes
    1 Posts
    48 Views
    juseJ
    like this [image: 1732282083034-snipaste_2024-11-22_21-27-43.png] or [image: 1732282134821-snipaste_2024-11-22_21-28-46.png]
  • 0 Votes
    1 Posts
    93 Views
    루루
    Hello, as the title says, how do I calculate the total size of files in use in nodebb? I'm trying to use a CDN like s3, but when I searched, I found that I had to read all objects in the bucket and calculate the file size like this. Is there no other way to find out the total size of files in use in nodebb? https://stackoverflow.com/questions/32192391/how-do-i-find-the-total-size-of-my-aws-s3-storage-bucket-or-folder
  • 0 Votes
    1 Posts
    100 Views
    D
    in this file: src/controllers/uploads.js:154 uploadsController.uploadFile = async function (uid, uploadedFile) { if (plugins.hooks.hasListeners('filter:uploadFile')) { return await plugins.hooks.fire('filter:uploadFile', { file: uploadedFile, uid: uid, folder: 'files', }); } if (!uploadedFile) { throw new Error('[[error:invalid-file]]'); } const isAdmin = await user.isAdministrator(uid); if (!isAdmin && uploadedFile.size > meta.config.maximumFileSize * 1024) { throw new Error(`[[error:file-too-big, ${meta.config.maximumFileSize}]]`); } const allowed = file.allowedExtensions(); const extension = path.extname(uploadedFile.name).toLowerCase(); if (allowed.length > 0 && (!extension || extension === '.' || !allowed.includes(extension))) { throw new Error(`[[error:invalid-file-type, ${allowed.join('&#44; ')}]]`); } const currentDate = new Date(); const year = currentDate.getFullYear() + ''; const month = String(currentDate.getMonth() + 1).padStart(2, '0') + ''; const date = String(currentDate.getDate()).padStart(2, '0') + ''; const random = Math.random().toString(36).substring(2, 4); const dirPath = path.join('files', year, month, date, random); return await saveFileToLocal(uid, dirPath, uploadedFile); }; i thinks this is good for files manager
  • 4 Votes
    1 Posts
    110 Views
    julianJ
    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.
  • SSO SAML

    NodeBB Plugins
    1
    0 Votes
    1 Posts
    152 Views
    N
    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.'); } } });
  • Gallery plugin

    Plugin Requests
    1
    0 Votes
    1 Posts
    113 Views
    A
    I saw some discussions for this before, but it seems like it never has been pursued. Would it be possible to create a plugin which enables a forum wide gallery? Similar to what other forums offer. Features: Upload images outside of topics Create and manage albums Allow users to comment and like images Widget to display latest images Notify image/album owners of new comments/likes How complex is this? Would this be interesting for the nodeBB team to integrate as an offical plugin? I would more than happy drop in a few hundred bucks to get this going, eventually multiple people would want to hop in.
  • Socket connection issue

    Moved Technical Support
    1
    0 Votes
    1 Posts
    102 Views
    Hai Rong DuH
    @julian excuse me, I have some problems with connecting socket. In database have table session and i think _csrf will be equal to the value of column sid in table session is that correct ? Nut now i want to integration nodebb with my auth service. And i create new front-end for my service. I can connected socket in localhost but i can't connected to socket when i build nodebb edited to development environment. Can you give me some advice or suggestions?
  • Reporting In The Shoutbox

    Feature Requests
    1
    0 Votes
    1 Posts
    123 Views
    A
    Is there a feature to report messages in the shoutbox or chat system? quite curious
  • Is there a way to set up a Time-To-Live for a post?

    General Discussion
    1
    0 Votes
    1 Posts
    121 Views
    D
    Is there a way to set up a Time-To-Live for a post? For example, I want to have an option for a post to display for exactly 'X' hours (selectable between 1 and 72 hours) after it is posted and then not display anymore automatically. Post still in the database and still viewable by poster (only), but gone from main forum.