Skip to content

Feature Requests

You have a cool idea about NodeBB? Post it here.

830 Topics 5.1k Posts
  • Discouragement and user discipline

    7
    +0
    2 Votes
    7 Posts
    355 Views
    DownPWD
    @Kosiak said in Discouragement and user discipline: @DownPW said in Discouragement and user discipline: Many trolls are very intelligent ((weird right? ) and know how to follow the rules while being extremely annoying. Maybe the problem is not with trolls, but with your rules or your idea of ​​who is a troll. Saying uncomfortable things does not mean being a bad person. I am radically against such a system, just as I am against any kind of shadow ban. If you are not happy with the user's behavior, just give him a warning. If you are not on the same page with him, block him. At least it is fair. Shadow bans and similar bullying are mean. oh no no no no. The problem does not come from me LOL You will see when spammers and trolls come to make you miserable on your forum despite the warnings, the private messages by being nice and all the possible ways of doing things well. Blocking him in his circumstances is absolutely... useless In these cases these kinds of options can save your life. The problem is not my definition of a troll but the troll itself
  • Site Metrics

    2
    +1
    1 Votes
    2 Posts
    108 Views
    codenamejessicaC
    OK! So I officially HATE programming for WebSockets!!! Also it finally freaking works now... [image: 1734265101425-95a2487f-053a-44d7-842e-ce34ee7e8d22-image.png] tl;dr Let me preface this by saying that I’m usually more on the backend and systems side of development, where things are a bit more predictable. I’m not constantly pushing or pulling data dynamically, so WebSockets haven’t been a major part of my daily grind. Most of my interactions with them have been limited to fixing something trivial like an nginx.conf issue (you know, the "why isn’t this reverse proxy working?!" moments) or tweaking configuration for an existing setup. But then I decided to dive into actually developing a WebSocket implementation in NodeJS. Oh boy, was that an adventure. And by "adventure," I mean the kind where you’re stranded in a forest with no map, no snacks, no tent, no friends, no legs, no arms, and it’s starting to rain. Let's take an adventure together, shall we? Here are the main pain points I’ve encountered so far: The State Management Rabbit Hole WebSockets are a beast (you know the real word I wanted to use) when it comes to managing states. You have to keep track of which clients are connected, what data they should receive, and when to clean up stale connections. It’s like maintaining a live orchestra while random musicians keep joining and leaving mid-performance. Error Handling is a Nightmare Oh, you thought HTTP error codes were frustrating? Wait until you try debugging a WebSocket connection that mysteriously drops, reconnects, or worse, stays open but doesn’t actually work. The lack of clear error feedback is maddening. Concurrency, But Make It Fun... Not! Handling multiple connections simultaneously in NodeJS isn’t terrible in theory. But in practice, juggling all these connections and ensuring they don’t block each other feels like spinning plates on fire. Forget one plate, and suddenly your server’s on the floor. Protocol Nuances WebSocket communication requires a careful dance of handshakes and messages. Forget one small step, and everything crumbles. I definitely spent more time than I’d like to admit chasing down handshake errors that turned out to be... drumroll... a header issue. Testing Is a Whole Other Can of Worms Writing tests for WebSocket functionality is challenging. Simulating client-server communication, ensuring reconnections work as intended, and validating edge cases is a slog. There’s no easy curl command for WebSockets. Port in Use We haven’t even started talking about port conflicts yet... Oh yeah, THAT was fun. Nothing like the good ol’ "Port 3001 in use". Wait, WHAT?! I run lsof -i :3001 to track down the culprit, and it returns... nothing. Absolutely nothing. Thanks, WebSocket! You’re really earning that love-hate badge today. I know WebSockets are powerful, especially for real-time communication like chat apps, live notifications, or... you know... dashboards. But wow, they don’t make it easy to appreciate their elegance during development. For now, I’ll begrudgingly admit that I’m learning a lot. But I’ll also happily admit that I’m counting down the days until this project is done.
  • Version info on Themes

    1
    0 Votes
    1 Posts
    59 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]
  • IPinfo

    2
    0 Votes
    2 Posts
    310 Views
    nhl.plN
    Sounds like a good addition to nodebb-plugin-spam-be-gone or a candidate for a new plugin.
  • Should have a option to do authentication using Keycloak

    3
    0 Votes
    3 Posts
    120 Views
    A
    Yes, I have tried the sso-oauth2-multiple plugin, and I am currently working on it. However, I am facing some issues. While the user credentials for login and registration are being stored in Keycloak, I am encountering the following errors: Refresh Token Error: 2024-11-21 18:49:12,101 WARN [org.keycloak.events] (executor-thread-17) type="REFRESH_TOKEN_ERROR", realmId="REDACTED", realmName="REDACTED", clientId="REDACTED", userId="null", ipAddress="0:0:0:0:0:0:0:1", error="invalid_token", reason="Token is not active", grant_type="refresh_token", client_auth_method="client-secret" Login Error: 2024-11-21 18:49:40,492 WARN [org.keycloak.events] (executor-thread-18) type="LOGIN_ERROR", realmId="REDACTED", realmName="REDACTED", clientId="REDACTED", userId="REDACTED", ipAddress="0:0:0:0:0:0:0:1", error="invalid_user_credentials", auth_method="openid-connect", auth_type="code", redirect_uri="http://localhost/REDACTED", code_id="REDACTED", username="REDACTED" also seeing the following errors in the console. [image: 1732199758383-a30c36a1-ccc1-4665-abe9-7a3ccb644333-image.png] These errors seem to suggest issues with either the refresh token being inactive or invalid user credentials during login. Do you have any suggestions on resolving these?
  • Real-time posting (socket) improvements

    4
    0 Votes
    4 Posts
    175 Views
    barisB
    It looks like this and yeah it is for registered users. [image: 1730513433494-11b8f777-e10c-49ec-b70d-2912e8029ad3-image.png]
  • Tags for posts in addition to topics

    21
    3 Votes
    21 Posts
    5k Views
    D
    today, i get same problem.
  • 0 Votes
    1 Posts
    112 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(', ')}]]`); } 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
  • I need a new language, and have the resources to translate it!

    8
    0 Votes
    8 Posts
    301 Views
    julianJ
    You can switch to the develop branch of NodeBB to access the translations now, or wait until v3.11.x is released, which will also contain the translations.
  • View recently read topics

    9
    1 Votes
    9 Posts
    340 Views
    eeeeeE
    Just my opinion but I can't see the use of seeing list of things Ive already read, and >99% of people wouldnt use it. Its better as a plugin (if required), because no point to make Core more complex with rarely (or never) used features. Any hours spent developing that would be 100x better spent on the 'elephant in the room' email signup issues.
  • Reporting In The Shoutbox

    1
    0 Votes
    1 Posts
    137 Views
    A
    Is there a feature to report messages in the shoutbox or chat system? quite curious
  • 2 Votes
    9 Posts
    1k Views
    omegaO
    'Course I think it calls for as an approach, the harmonisation of the topic post navigator for mobile devices with the bottom progress bar and pop-up post cycle preview cycle into the fruit machine way, right now it's like a mini version of the topic itself but with desktop timeline scroll, ultimately so many different things kinda doing the same thing differently if ya dig?
  • This topic is deleted!

    1
    0 Votes
    1 Posts
    4 Views
  • Service worker improvements

    7
    1 Votes
    7 Posts
    302 Views
    julianJ
    @bh4-tech with regards to the firebase plugin, it does still require use of a third-party software (that is, Firebase), which makes it difficult for some to use. The plugin was originally developed for two reasons: The desktop notifications plugin was unreliable on mobile devices. Initial work for the plugin was funded. However, after it was discovered that there was no compatibility with iOS, the funding dried up as we could not fulfil the client requirements. That's where this plugin stands now, there is no financial backing to continue work on it. However, looking into the MDN documentation, there is a new API that is finally getting broad adoption (as of 2023, anyway, so even better now): the Push API It could be that this will finally allow NodeBB to natively support push notifications that work reliably even when the browser is closed.
  • Widget for public Rooms

    8
    1 Votes
    8 Posts
    403 Views
    barisB
    It will actually be 3.9.0 so we can release the translation strings.
  • Prioritized flags

    3
    0 Votes
    3 Posts
    195 Views
    traarrrT
    Well, Iet me try some changes... will update here if successful
  • This topic is deleted!

    1
    0 Votes
    1 Posts
    2 Views
  • Admin Panel Functions - from Mobile

    1
    0 Votes
    1 Posts
    170 Views
    eeeeeE
    I had this issue a couple of years ago, when I was maintaining a site and away without a computer and only had mobile access. The issue is still there today so I'm asking that its considered / addressed? On mobile there is no way to drag the HMTL box over on the widget panel. It has to be done on a desktop, as cant even do on mobile browser in Desktop mode. You cant always pre-empt changes, and for example I am travelling for a week and cant add any topic.tpl widget without getting access to a computer. If the widget ACP interface could be reworked so it can be set-up without Desktop drag-and-drop it would be better.
  • ChatGpt plugin widgets

    5
    1 Votes
    5 Posts
    1k Views
    crazycellsC
    Hopefully, this plugin will be able to answer based on forum content in the near future... https://community.nodebb.org/topic/18197/nodebb-plugin-openai-nodebb-openai-plugin/
  • 0 Votes
    4 Posts
    243 Views
    julianJ
    @Andrey yes, I understand and see the advantages, I simply state that to do so would require a refactoring of the user muting logic. It is not something that is insurmountable, but it is something that we cannot do easily at this time. I would invite you to add it to the issue tracker, although I cannot promise a timeline at this time.