[GH-ISSUE #180] Usability issues, Firefox DE & Vivaldi & Chromium Inox on Arch, using WebDAV #170

Closed
opened 2026-02-25 22:36:21 +03:00 by kerem · 3 comments
Owner

Originally created by @lightdot on GitHub (Oct 2, 2018).
Original GitHub issue: https://github.com/floccusaddon/floccus/issues/180

First, thank you all for your time and efforts. A project like this is sorely needed.

These are the results of my quick usability research today. Perhaps it will be useful to someone.

Software versions

  • OS: Arch Linux 4.18.10
  • browser A: Firefox Developer Edition 63.0b10
  • browser B: Chromium 67.0.3396.87 with Inox patchset
  • browser C: Vivaldi 2.0.1309.29-3
  • floccus A: 3.0.8 (Firefox Add-on)
  • floccus B: 3.0.9 (Chrome Extension)
  • floccus C: 3.0.9 (Chrome Extension)
  • webDAV: Nginx 1.14.0 with extended webDAV module (v0.1.0).

My primary browser is Firefox DE, bookmarks have folders and separators, no tags.

When bookmarks are natively exported to JSON, the file size is a bit less than 1.5 MB, exported to HTML, file size is about 8 MB.

Steps to reproduce, 1st run, Firefox

  1. installed Floccus Add-on
  2. entered WebDAV credentials (URL without the trailing slash)
  3. entered the Bookmarks file path as simply "bookmarks.xbel"
  4. chose the "Bookmarks Toolbar" folder
  5. chose the "Reset cache" option
  6. manually triggered a sync.

Expected outcome, 1st run, Firefox

A "bookmarks.xbel" file created on the server.

Actual outcome, 1st run, Firefox

Intel i7-7500U pegged to the max for minutes until I finally killed the browser.

Looking at the server logs, WebDAV URL and Bookmark file path were joined without a separator, nothing was transferred to the server. Would have expected an error or a quicker timeout.

Steps to reproduce, 2nd run, Firefox

  1. adjusted the WebDAV URL to have a trailing slash
  2. created a "bookmarks" directory on the server
  3. entered the Bookmarks file path as "bookmarks/bookmarks.xbel"
  4. chose the "Bookmarks Toolbar" folder
  5. chose the "Reset cache" option
  6. manually triggered a sync.

Expected outcome, 2nd run, Firefox

A "bookmarks.xbel" file created on the server.

Actual outcome, 2nd run, Firefox

The XBEL file was successfully and quickly created.

Upon inspection, existing bookmark separators are recorded as [](data:) in the floccus.log file and actually created as <bookmark href="data:" id="<ID>"><title/></bookmark> in the XBEL.

I expected separators not to be supported yet, but they do get picked up.

Steps to reproduce, 3rd run, Chromium Inox

  1. installed the Floccus extension, entered WebDAV URL, credentials, path
  2. chose the "Bookmarks bar" folder
  3. chose the "Reset cache" option
  4. manually triggered a sync.

Expected outcome, 3rd run, Chromium Inox

Local "Bookmarks bar" folder populated from the XBEL on the server.

Actual outcome, 3rd run, Chromium Inox

Bookmarks are populated, folders are preserved, but:

  • sort order for all folders and bookmarks is lost
  • separator "data:" entries are recreated as actual empty bookmarks. Since the bookmarks sort order is lost, separator position within the folder is also lost.

Bookmarks and folders seem to just get sorted alphabetically.

Caveats

If empty "data:" bookmarks are deleted in Chromium, separators get deleted in Firefox eventually. Could be expected after seeing how the separators are handled, but still not good.

Steps to reproduce, 4th run, Vivaldi

  1. imported the Firefox bookmarks html backup manually (sort order preserved, separators lost here) into the "Bookmarks bar" folder
  2. installed the Floccus extension, entered WebDAV URL, credentials, path
  3. chose the "Bookmarks bar" folder
  4. chose the "Reset cache" option
  5. manually triggered a sync on both sides, Vivaldi and Firefox.

Expected outcome, 4th run, Vivaldi

Hoping for no changes on either side but expecting to have separators deleted in Firefox.

Actual outcome, 4th run, Vivaldi

Sort order in both Vivaldi and Firefox is preserved (at least for the short while I kept the test going), at least some separators are lost in Firefox after short a while. Expected, but again a show stopper.

Conclusion

Loss of the bookmarks sort order is a serious issue.

Separators aren't handled in a good way either.

As is, Floccus can't be used to keep larger categorized bookmark collections in sync between different browsers, not without data loss.

Temporary workaround

Don't try to sync the entire bookmark collection.

Create an empty "Bookmark Sync" folder and use it to shuttle new bookmarks back and forth across the void. Pick newly arrived bookmarks by hand and copy them where they belong.

If you attempt to sync more than two browsers through the same folder, be careful not to delete the new bookmarks before they are picked up on all locations.

Originally created by @lightdot on GitHub (Oct 2, 2018). Original GitHub issue: https://github.com/floccusaddon/floccus/issues/180 First, thank you all for your time and efforts. A project like this is sorely needed. These are the results of my quick usability research today. Perhaps it will be useful to someone. ### Software versions * OS: Arch Linux 4.18.10 * browser A: Firefox Developer Edition 63.0b10 * browser B: Chromium 67.0.3396.87 with Inox patchset * browser C: Vivaldi 2.0.1309.29-3 * floccus A: 3.0.8 (Firefox Add-on) * floccus B: 3.0.9 (Chrome Extension) * floccus C: 3.0.9 (Chrome Extension) * webDAV: Nginx 1.14.0 with extended webDAV module (v0.1.0). My primary browser is Firefox DE, bookmarks have folders and separators, no tags. When bookmarks are natively exported to JSON, the file size is a bit less than 1.5 MB, exported to HTML, file size is about 8 MB. ### Steps to reproduce, 1st run, Firefox 1. installed Floccus Add-on 2. entered WebDAV credentials (URL without the trailing slash) 3. entered the Bookmarks file path as simply "bookmarks.xbel" 4. chose the "Bookmarks Toolbar" folder 5. chose the "Reset cache" option 6. manually triggered a sync. ### Expected outcome, 1st run, Firefox A "bookmarks.xbel" file created on the server. ### Actual outcome, 1st run, Firefox Intel i7-7500U pegged to the max for minutes until I finally killed the browser. Looking at the server logs, WebDAV URL and Bookmark file path were joined without a separator, nothing was transferred to the server. Would have expected an error or a quicker timeout. ### Steps to reproduce, 2nd run, Firefox 1. adjusted the WebDAV URL to have a trailing slash 2. created a "bookmarks" directory on the server 3. entered the Bookmarks file path as "bookmarks/bookmarks.xbel" 4. chose the "Bookmarks Toolbar" folder 5. chose the "Reset cache" option 6. manually triggered a sync. ### Expected outcome, 2nd run, Firefox A "bookmarks.xbel" file created on the server. ### Actual outcome, 2nd run, Firefox The XBEL file was successfully and quickly created. Upon inspection, existing bookmark separators are recorded as `[](data:)` in the floccus.log file and actually created as `<bookmark href="data:" id="<ID>"><title/></bookmark>` in the XBEL. I expected separators not to be supported yet, but they do get picked up. ### Steps to reproduce, 3rd run, Chromium Inox 1. installed the Floccus extension, entered WebDAV URL, credentials, path 2. chose the "Bookmarks bar" folder 3. chose the "Reset cache" option 4. manually triggered a sync. ### Expected outcome, 3rd run, Chromium Inox Local "Bookmarks bar" folder populated from the XBEL on the server. ### Actual outcome, 3rd run, Chromium Inox Bookmarks are populated, folders are preserved, but: * sort order for all folders and bookmarks is lost * separator "data:" entries are recreated as actual empty bookmarks. Since the bookmarks sort order is lost, separator position within the folder is also lost. Bookmarks and folders seem to just get sorted alphabetically. #### Caveats If empty "data:" bookmarks are deleted in Chromium, separators get deleted in Firefox eventually. Could be expected after seeing how the separators are handled, but still not good. ### Steps to reproduce, 4th run, Vivaldi 1. imported the Firefox bookmarks html backup manually (sort order preserved, separators lost here) into the "Bookmarks bar" folder 2. installed the Floccus extension, entered WebDAV URL, credentials, path 3. chose the "Bookmarks bar" folder 4. chose the "Reset cache" option 5. manually triggered a sync on both sides, Vivaldi and Firefox. ### Expected outcome, 4th run, Vivaldi Hoping for no changes on either side but expecting to have separators deleted in Firefox. ### Actual outcome, 4th run, Vivaldi Sort order in both Vivaldi and Firefox is preserved (at least for the short while I kept the test going), at least some separators are lost in Firefox after short a while. Expected, but again a show stopper. ### Conclusion Loss of the bookmarks sort order is a serious issue. Separators aren't handled in a good way either. As is, Floccus can't be used to keep larger categorized bookmark collections in sync between different browsers, not without data loss. #### Temporary workaround Don't try to sync the entire bookmark collection. Create an empty "Bookmark Sync" folder and use it to shuttle new bookmarks back and forth across the void. Pick newly arrived bookmarks by hand and copy them where they belong. If you attempt to sync more than two browsers through the same folder, be careful not to delete the new bookmarks before they are picked up on all locations.
kerem closed this issue 2026-02-25 22:36:21 +03:00
Author
Owner

@marcelklehr commented on GitHub (Oct 4, 2018):

First up: Thank you for the in-depth documentation of your findings!

The problem with the WebDAV URL should be relatively easy to fix. Thanks for the heads up!

Separators are indeed a problem. The API that firefox adopted from chrome doesn't even specify separators (because chrome doesn't have that feature, of course), so the firefox team had to improvise. A workaround would be to simply hide those entries in browsers that don't have separators or cannot handle them the way firefox does.

The larger problem, as you noticed, is ordering. As XBEL preserves order, this would be possible to implement, but Nextcloud bookmarks currently has no way to store ordering. See #113 for the relevant issue. I am aware of this problem and will fix this, it'll just take some time :)

<!-- gh-comment-id:427101227 --> @marcelklehr commented on GitHub (Oct 4, 2018): First up: Thank you for the in-depth documentation of your findings! The problem with the WebDAV URL should be relatively easy to fix. Thanks for the heads up! Separators are indeed a problem. The API that firefox adopted from chrome doesn't even specify separators (because chrome doesn't have that feature, of course), so the firefox team had to improvise. A workaround would be to simply hide those entries in browsers that don't have separators or cannot handle them the way firefox does. The larger problem, as you noticed, is ordering. As XBEL preserves order, this would be possible to implement, but Nextcloud bookmarks currently has no way to store ordering. See #113 for the relevant issue. I am aware of this problem and will fix this, it'll just take some time :)
Author
Owner

@lightdot commented on GitHub (Oct 7, 2018):

The separator situation in Chromium/Chrome is unfortunate. Users have requested them on several occasions but apparently they won't be added.

There are how-to's online that suggest mitigating the lack of functionality by adding specially crafted bookmarks, using bookmarklets. These seem to be very popular with Chromium/Chrome users.

Bookmark JSON for the horizontal "separator":

            {
               "date_added": "<TIMESTAMPINMS>",
               "id": "<ID>",
               "meta_info": {
                  "last_visited_desktop": "<TIMESTAMPINMS>"
               },
               "name": "───────────",
               "type": "url",
               "url": "https://separator.mayastudios.com/index.php?t=horz"
            }

generated XBEL:

<bookmark href="https://separator.mayastudios.com/index.php?t=horz" id="<FLCID>"><title>───────────</title></bookmark>

In Vivaldi, separators are supported by the browser. Unsurprisingly, their actual format is a hack, similar to the above. From Vivaldi's Bookmark file:

            {
               "date_added": "<TIMESTAMPINMS>",
               "id": "<ID>",
               "meta_info": {
                  "Description": "separator"
               },
               "name": "---",
               "type": "url",
               "url": "http://bookmark.placeholder.url"
            }

generated XBEL:

<bookmark href="http://bookmark.placeholder.url/" id="<FLCID>"><title>---</title></bookmark>

So we have those two, and from Firefox, JSON:

{"guid":"<GUID>","title":"","index":<INDEX>,"dateAdded":<UNIXTIMESTAMP>,"lastModified":<UNIXTIMESTAMP>,"id":<ID>,"typeCode":3,"type":"text/x-moz-place-separator"}

generated XBEL:

<bookmark href="data:" id="<FLCID>"><title/></bookmark>

Translating the above three hackish separators to XBEL's <separator> element and back would IMHO be safe and cover a lot of users.

<!-- gh-comment-id:427683757 --> @lightdot commented on GitHub (Oct 7, 2018): The separator situation in Chromium/Chrome is unfortunate. Users [have requested them](https://bugs.chromium.org/p/chromium/issues/detail?id=7789) on several occasions but apparently they won't be added. There are how-to's online that suggest mitigating the lack of functionality by adding specially crafted bookmarks, using bookmarklets. [These](https://separator.mayastudios.com/?t=horz) seem to be very popular with Chromium/Chrome users. Bookmark JSON for the horizontal "separator": ```` { "date_added": "<TIMESTAMPINMS>", "id": "<ID>", "meta_info": { "last_visited_desktop": "<TIMESTAMPINMS>" }, "name": "───────────", "type": "url", "url": "https://separator.mayastudios.com/index.php?t=horz" } ```` generated XBEL: ```` <bookmark href="https://separator.mayastudios.com/index.php?t=horz" id="<FLCID>"><title>───────────</title></bookmark> ```` In Vivaldi, separators are supported by the browser. Unsurprisingly, their actual format is a hack, similar to the above. From Vivaldi's Bookmark file: ```` { "date_added": "<TIMESTAMPINMS>", "id": "<ID>", "meta_info": { "Description": "separator" }, "name": "---", "type": "url", "url": "http://bookmark.placeholder.url" } ```` generated XBEL: ```` <bookmark href="http://bookmark.placeholder.url/" id="<FLCID>"><title>---</title></bookmark> ```` So we have those two, and from Firefox, JSON: ```` {"guid":"<GUID>","title":"","index":<INDEX>,"dateAdded":<UNIXTIMESTAMP>,"lastModified":<UNIXTIMESTAMP>,"id":<ID>,"typeCode":3,"type":"text/x-moz-place-separator"} ```` generated XBEL: ```` <bookmark href="data:" id="<FLCID>"><title/></bookmark> ```` Translating the above three hackish separators to XBEL's ```<separator>``` element and back would IMHO be safe and cover a lot of users.
Author
Owner

@github-actions[bot] commented on GitHub (Mar 21, 2023):

This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.

<!-- gh-comment-id:1477738599 --> @github-actions[bot] commented on GitHub (Mar 21, 2023): This issue has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for related bugs.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/floccus#170
No description provided.