Cloudron makes it easy to run web apps like WordPress, Nextcloud, GitLab on your server. Find out more or install now.


Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Bookmarks
  • Search
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo

Cloudron Forum

Apps | Demo | Docs | Install
  1. Cloudron Forum
  2. Discuss
  3. Cloudron 9.0 (beta) bug reports

Cloudron 9.0 (beta) bug reports

Scheduled Pinned Locked Moved Discuss
198 Posts 31 Posters 10.8k Views 26 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • T Teiluj

    Another UI thing:

    • on the users page (https://my.demo.cloudron.io/#/users), if any user belongs to a lot of groups, then you need to scroll horizontally to access the "..." edit menu for any user:

    image.png

    However, in doing so, you loose sight of the user/username and thus it becomes challenging to edit the right user.
    Additionally, the horizontal scroll bar indication, only appears at the bottom of the user list, not the bottom of the page.
    Hence, if you have a good number of users:

    • you first need to realize that the edit menu is hidden because of horizontal scrolling.
    • Then you need to get to the bottom of the list to access the horizontal scroll bar
    • Scroll horizontally
    • Then you need to scroll back up to the user that you wish to edit, but then can but sure anymore since the username is hidden.

    Currently, your best best in this situation is to search for the specific user hopping that you have enough information to do so.

    Potentially, the "..." edit menu should "float" at the end of the line and be accessible at all time, without horizontal scrolling necessary.

    Hopefully this makes sense.

    nebulonN Offline
    nebulonN Offline
    nebulon
    Staff
    wrote last edited by
    #185

    @Teiluj thanks for reporting the group overflowing in the users view. We have changed that now to only display the group count for a start until we find some better solution to deal with the vastly varying size that column would require.

    hexbinH 1 Reply Last reply
    1
    • luckowL luckow

      Is there a reason to set the 2FA button in the user profile to โ€œdisplay:noneโ€? Cloudron v. 9.0.13

      image.png

      girishG Do not disturb
      girishG Do not disturb
      girish
      Staff
      wrote last edited by
      #186

      @luckow said in Cloudron 9.0 (beta) bug reports:

      Is there a reason to set the 2FA button in the user profile to โ€œdisplay:noneโ€? Cloudron v. 9.0.13

      was a bug, fixed now. thanks for reporting.

      1 Reply Last reply
      2
      • M msbt

        Two UI things:

        • If a server requires a reboot, would be nice to be able to do that directly from the notification popup (in 8 you had the dedicated notifications page where you you push the button)
        • After deleting a mailbox, I got back to the /#/mailboxes view but all accounts just show "Loading..." and nothing happens. Would be cool if it remembered the mailbox size or at least start collecting the data again.
        girishG Do not disturb
        girishG Do not disturb
        girish
        Staff
        wrote last edited by
        #187

        @msbt said in Cloudron 9.0 (beta) bug reports:

        After deleting a mailbox, I got back to the /#/mailboxes view but all accounts just show "Loading..." and nothing happens. Would be cool if it remembered the mailbox size or at least start collecting the data again.

        this is fixed in https://git.cloudron.io/platform/box/-/commit/3a760282f15259f461e0db4181883ac9d82aac06

        1 Reply Last reply
        3
        • luckowL luckow

          @necrevistonnezr oh! a bad beast ๐Ÿ™‚

          hexbinH Offline
          hexbinH Offline
          hexbin
          wrote last edited by
          #188

          @luckow @necrevistonnezr "untamed" either way ๐Ÿ˜‰

          1 Reply Last reply
          0
          • nebulonN nebulon

            @Teiluj thanks for reporting the group overflowing in the users view. We have changed that now to only display the group count for a start until we find some better solution to deal with the vastly varying size that column would require.

            hexbinH Offline
            hexbinH Offline
            hexbin
            wrote last edited by
            #189

            @nebulon Some UX-friendly approaches for the several table-related issues:

            • Scrollable table wrappers (check)
            • Consequently (tables can grow infinitely wide) limit column lengths with CSS to a readable size, e. g. max-width: 40ch; word-wrap: break-word;
            • Consequently (rows can then have variable heights) top-align table cells
            • Support orientation in table rows with either alternating backgrounds or subtle horizontal borders (hover bg is already helpful - but only when your device has a hover state)
            • Wrap all concatenated data with markup (like group names in the users table, unlike aliases in the mailbox table) - reserving us the option to set entries inline or stacked. Ideally, use invisible list markup - commas can be added with CSS
            hexbinH 1 Reply Last reply
            1
            • hexbinH hexbin

              @nebulon Some UX-friendly approaches for the several table-related issues:

              • Scrollable table wrappers (check)
              • Consequently (tables can grow infinitely wide) limit column lengths with CSS to a readable size, e. g. max-width: 40ch; word-wrap: break-word;
              • Consequently (rows can then have variable heights) top-align table cells
              • Support orientation in table rows with either alternating backgrounds or subtle horizontal borders (hover bg is already helpful - but only when your device has a hover state)
              • Wrap all concatenated data with markup (like group names in the users table, unlike aliases in the mailbox table) - reserving us the option to set entries inline or stacked. Ideally, use invisible list markup - commas can be added with CSS
              hexbinH Offline
              hexbinH Offline
              hexbin
              wrote last edited by
              #190

              Available screen space

              Still focusing on tables, but to consider in general:

              • When the task focus is on working with complex tables, the space should not be limited for the sake of the design

              -> Let the content width be a subject of user preference: make .content max-width (900px) class-dependent and offer a per-user or per-session toggle to swap a body class. The design looks good without the max-width, so there's really not much to change

              • Sidebar consumes too much space in narrow viewports (already mentioned here in this thread)

              -> Option to reduce the sidebar width to the width of the icons (see Discourse or GitLab ๐Ÿ˜‰

              1 Reply Last reply
              0
              • nebulonN Offline
                nebulonN Offline
                nebulon
                Staff
                wrote last edited by
                #191

                @hexbin thanks a lot for the detailed info. We have reworked those table columns with better widths then and also made some of the tables table-layout: fixed; to actually be able to control that overflow behavior.

                For "Wrap all concatenated data with markup", is this similar to the custom option to overwrite style based on user adding custom css? We currently don't have that option to customize like that, but it was also requested for other things already.

                Finally for the sidebar, we will see how to make that collapsable. It would certainly help on "nowadays" laptops around the 14" screens.

                1 Reply Last reply
                0
                • humptydumptyH Offline
                  humptydumptyH Offline
                  humptydumpty
                  wrote last edited by humptydumpty
                  #192

                  Thank you for adding a "back" button on login pages. I keep my tabs pinned and that causes the OIDC string to expire and I had to manually delete that string from the URL. Now, I can simply click on back and then sign in. Less hassle now. ๐Ÿ‘๐Ÿ‘

                  image.png

                  1 Reply Last reply
                  4
                  • robiR Offline
                    robiR Offline
                    robi
                    wrote last edited by
                    #193

                    Is it time to revisit my list of ~20 UX issues?

                    Conscious tech

                    1 Reply Last reply
                    1
                    • humptydumptyH Offline
                      humptydumptyH Offline
                      humptydumpty
                      wrote last edited by humptydumpty
                      #194

                      One more suggestion if I may. Clear the search box when you click on the logo in the top left.

                      Use case: You search for an app. To see the rest of your apps, you have to delete what you searched for or refresh the page which has a "reload" time and isn't instant. Clearing the input search box by pressing on the logo is faster and feels more natural.

                      image.png

                      Edit: Chatgpt spat out this code, don't shoot me ๐Ÿ™‚

                      Clear search when clicking the Cloudron logo

                      // Clears the dashboard search field on logo click or ESC key
                      function enableClearSearchIntegration() {
                        const searchInput = document.querySelector('input.pankow-text-input[placeholder="Search Apps"]');
                        const logo = document.querySelector('.sidebar-logo');
                      
                        if (!searchInput) return;
                      
                        // ---- LOGO CLICK HANDLER ----
                        if (logo && !logo.dataset._cloudronClearSearch) {
                          logo.dataset._cloudronClearSearch = "1";
                      
                          logo.addEventListener("click", () => {
                            clearSearch(searchInput);
                          }, true);
                        }
                      
                        // ---- ESC KEY HANDLER ----
                        if (!window._cloudronClearSearchEsc) {
                          window._cloudronClearSearchEsc = true;
                      
                          document.addEventListener("keydown", (event) => {
                            if (event.key === "Escape") {
                              clearSearch(searchInput);
                            }
                          });
                        }
                      }
                      
                      // Clears the input and triggers Cloudron filtering
                      function clearSearch(searchInput) {
                        searchInput.value = "";
                        searchInput.dispatchEvent(new Event("input", { bubbles: true }));
                        searchInput.dispatchEvent(new Event("change", { bubbles: true }));
                      }
                      
                      // Run once on initial load
                      enableClearSearchIntegration();
                      
                      // Re-run when the SPA updates the DOM (Cloudron dashboard is an SPA)
                      const observer = new MutationObserver(enableClearSearchIntegration);
                      observer.observe(document.body, { childList: true, subtree: true });
                      
                      

                      Edit 2: fixed the code as we didn't use the right class selector for the logo. I tested it in the console and the code works as intended!
                      Edit 3: fixed the code again to use the proper selector for the search box. NOW it's ready ๐Ÿ™‚
                      Edit 4: added support for escape key clear action thanks @robi

                      Recording 2025-12-03 160333.gif

                      robiR 1 Reply Last reply
                      0
                      • humptydumptyH humptydumpty

                        One more suggestion if I may. Clear the search box when you click on the logo in the top left.

                        Use case: You search for an app. To see the rest of your apps, you have to delete what you searched for or refresh the page which has a "reload" time and isn't instant. Clearing the input search box by pressing on the logo is faster and feels more natural.

                        image.png

                        Edit: Chatgpt spat out this code, don't shoot me ๐Ÿ™‚

                        Clear search when clicking the Cloudron logo

                        // Clears the dashboard search field on logo click or ESC key
                        function enableClearSearchIntegration() {
                          const searchInput = document.querySelector('input.pankow-text-input[placeholder="Search Apps"]');
                          const logo = document.querySelector('.sidebar-logo');
                        
                          if (!searchInput) return;
                        
                          // ---- LOGO CLICK HANDLER ----
                          if (logo && !logo.dataset._cloudronClearSearch) {
                            logo.dataset._cloudronClearSearch = "1";
                        
                            logo.addEventListener("click", () => {
                              clearSearch(searchInput);
                            }, true);
                          }
                        
                          // ---- ESC KEY HANDLER ----
                          if (!window._cloudronClearSearchEsc) {
                            window._cloudronClearSearchEsc = true;
                        
                            document.addEventListener("keydown", (event) => {
                              if (event.key === "Escape") {
                                clearSearch(searchInput);
                              }
                            });
                          }
                        }
                        
                        // Clears the input and triggers Cloudron filtering
                        function clearSearch(searchInput) {
                          searchInput.value = "";
                          searchInput.dispatchEvent(new Event("input", { bubbles: true }));
                          searchInput.dispatchEvent(new Event("change", { bubbles: true }));
                        }
                        
                        // Run once on initial load
                        enableClearSearchIntegration();
                        
                        // Re-run when the SPA updates the DOM (Cloudron dashboard is an SPA)
                        const observer = new MutationObserver(enableClearSearchIntegration);
                        observer.observe(document.body, { childList: true, subtree: true });
                        
                        

                        Edit 2: fixed the code as we didn't use the right class selector for the logo. I tested it in the console and the code works as intended!
                        Edit 3: fixed the code again to use the proper selector for the search box. NOW it's ready ๐Ÿ™‚
                        Edit 4: added support for escape key clear action thanks @robi

                        Recording 2025-12-03 160333.gif

                        robiR Offline
                        robiR Offline
                        robi
                        wrote last edited by
                        #195

                        @humptydumpty use if the Esc key is also a good way.

                        Conscious tech

                        humptydumptyH 1 Reply Last reply
                        1
                        • robiR robi

                          @humptydumpty use if the Esc key is also a good way.

                          humptydumptyH Offline
                          humptydumptyH Offline
                          humptydumpty
                          wrote last edited by
                          #196

                          @robi code revised and escape key support added ๐Ÿ™‚

                          1 Reply Last reply
                          1
                          • scookeS Online
                            scookeS Online
                            scooke
                            wrote last edited by scooke
                            #197

                            Here's weird bug. Many of my apps have the green arrow indicating an update. So I go to the app and update it... it restarts... and the green arrow persists. Some apps need "updating" 2 times, some need three times, before the green arrow goes away. I've tried refreshing the page in between, but that green arrow persists. Previously on 8 (I forget which version but almost all of them) an app would have the green arrow, but if it had been updated already, pressing the Update button would produce an error message that the app can't be downgraded. Now, on 9.0.12, these apps just keep updating until the green arrow disappears (so far, NEVER after one update).

                            EDIT: I noticed that the update process was trying to backup the app to a non-existent destination (I had changed), and thus, it appears, the Update process would just fail, or stop, at that point with no notice or alert or anything. So I fixed that, and the apps backed up, and THEN, for some of them, the green arrow would persist, but in this case it was accurate because another update was indeed waiting (e.g, git went from 137.1 to 1.37.2). But, at least two had the backups work but are still showing a green arrow with the same version showing as the previous attempt (1 WP and Bookstack).

                            A life lived in fear is a life half-lived

                            1 Reply Last reply
                            0
                            • fbartelsF Offline
                              fbartelsF Offline
                              fbartels
                              App Dev
                              wrote last edited by
                              #198

                              I have not seen it reported here and am also not able to reproduce it on the demo system, but when i search for an app and enter the second character the dashboard breaks with a javascript error.

                              Kooha-2025-12-04-09-13-22.gif

                              utils-Cb1Rvih8.js:548 Already activated
                              index-D64usbhx.js:41926 Cloudron dashboard v9.0.13
                              index-D64usbhx.js:781 image loading failed, try to load /img/appicon_fallback.png
                              index-D64usbhx.js:781 image loading failed, try to load /img/appicon_fallback.png
                              style-D04uIdi2.js:2200 TypeError: Cannot read properties of undefined (reading 'toLocaleLowerCase')
                                  at index-D64usbhx.js:2339:295
                                  at wrappedFn (style-D04uIdi2.js:1051:19)
                                  at Array.filter (<anonymous>)
                                  at apply$1 (style-D04uIdi2.js:1059:27)
                                  at Proxy.filter (style-D04uIdi2.js:930:12)
                                  at ComputedRefImpl.fn (index-D64usbhx.js:2335:25)
                                  at refreshComputed (style-D04uIdi2.js:614:29)
                                  at get value (style-D04uIdi2.js:1740:5)
                                  at Proxy.<anonymous> (index-D64usbhx.js:2525:45)
                                  at renderComponentRoot (style-D04uIdi2.js:5499:17)
                              logError @ style-D04uIdi2.js:2200
                              handleError @ style-D04uIdi2.js:2194
                              renderComponentRoot @ style-D04uIdi2.js:5533
                              componentUpdateFn @ style-D04uIdi2.js:6728
                              run @ style-D04uIdi2.js:465
                              runIfDirty @ style-D04uIdi2.js:498
                              callWithErrorHandling @ style-D04uIdi2.js:2142
                              flushJobs @ style-D04uIdi2.js:2313
                              Promise.then
                              queueFlush @ style-D04uIdi2.js:2245
                              queueJob @ style-D04uIdi2.js:2240
                              effect2.scheduler @ style-D04uIdi2.js:6764
                              trigger @ style-D04uIdi2.js:488
                              endBatch @ style-D04uIdi2.js:546
                              notify @ style-D04uIdi2.js:779
                              trigger @ style-D04uIdi2.js:766
                              set value @ style-D04uIdi2.js:1589
                              createVNode.onUpdate:modelValue._cache.<computed>._cache.<computed> @ index-D64usbhx.js:2477
                              callWithErrorHandling @ style-D04uIdi2.js:2142
                              callWithAsyncErrorHandling @ style-D04uIdi2.js:2149
                              emit @ style-D04uIdi2.js:5388
                              set @ style-D04uIdi2.js:5341
                              set value @ style-D04uIdi2.js:1635
                              createElementBlock.onUpdate:modelValue._cache.<computed>._cache.<computed> @ style-D04uIdi2.js:16237
                              (anonymous) @ style-D04uIdi2.js:10083
                              
                              1 Reply Last reply
                              0
                              Reply
                              • Reply as topic
                              Log in to reply
                              • Oldest to Newest
                              • Newest to Oldest
                              • Most Votes


                              • Login

                              • Don't have an account? Register

                              • Login or register to search.
                              • First post
                                Last post
                              0
                              • Categories
                              • Recent
                              • Tags
                              • Popular
                              • Bookmarks
                              • Search