Skip to content

Feature Requests

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

830 Topics 5.1k Posts
  • Site Metrics

    2
    +1
    1 Votes
    2 Posts
    46 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
    45 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
    306 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
    107 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
    159 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
    104 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
    296 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
    328 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
    127 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
    291 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
    393 Views
    barisB
    It will actually be 3.9.0 so we can release the translation strings.
  • Prioritized flags

    3
    0 Votes
    3 Posts
    186 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
    163 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.
  • Discouragement and user discipline

    4
    +0
    2 Votes
    4 Posts
    271 Views
    DownPWD
    @julian said in Discouragement and user discipline: @DownPW definitely a nice candidate for a plugin. Though keep in mind that if the griefed user logs out of their account, then they would instantly know that their account is flagged for slow down since access would be quick for guests. Sure but in get's mode, the user don't bother us The goal would really be to discourage a troll from remaining on the site as a registered user. For example, in our forum, we allow maximum expression and only censor when strictly necessary. Many trolls are very intelligent ((weird right? ) and know how to follow the rules while being extremely annoying. --> This kind of thing would be great...
  • 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
    234 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.