sidebery icon indicating copy to clipboard operation
sidebery copied to clipboard

[v5] Group Page ID Causes Groups to Be Invalid When Restored

Open megamorphg opened this issue 1 year ago • 6 comments

Is the id at the end of the group URL completely necessary? I think we did not have this before.

I've noticed that after restoring backups (from Tab Sesssion Manager) group pages do not restore properly due to the id at the end. For example: moz-extension://7faebdf4-d1e4-4bc7-a169-291088d1bce3/page.group/group.html#GROUPNAME:id:YZ6F3aOtrQ0N

I'm not quite sure why but it results in the group page just loading a blank black page. I have to recreate the dozens of groups I have in order for the id to be regenerated and the group page visible again.

Steps to reproduce

Restore a window from an old backup with group pages and group IDs that don't exist currently?

Expected behavior

Group pages from backups can be restored without IDs

Actual behavior

Group pages depend on IDs to restore properly and when restored from a backup result in blank pages for group pages

Debug info

Addon data

{ "settings": { "nativeScrollbars": true, "nativeScrollbarsThin": false, "nativeScrollbarsLeft": true, "selWinScreenshots": true, "updateSidebarTitle": true, "markWindow": false, "markWindowPreface": "[SB] ", "ctxMenuNative": false, "ctxMenuRenderInact": true, "ctxMenuRenderIcons": true, "ctxMenuIgnoreContainers": "", "navBarLayout": "vertical", "navBarInline": false, "navBarSide": "left", "hideAddBtn": false, "hideSettingsBtn": false, "navBtnCount": true, "hideEmptyPanels": true, "navActTabsPanelLeftClickAction": "new_tab", "navActBookmarksPanelLeftClickAction": "scroll", "navTabsPanelMidClickAction": "discard", "navBookmarksPanelMidClickAction": "convert", "navSwitchPanelsWheel": true, "groupLayout": "list", "skipEmptyPanels": true, "dndTabAct": true, "dndTabActDelay": 5000, "dndTabActMod": "alt", "dndExp": "pointer", "dndExpDelay": 50, "dndExpMod": "alt", "dndOutside": "data", "searchBarMode": "static", "warnOnMultiTabClose": "collapsed", "activateLastTabOnPanelSwitching": true, "showTabRmBtn": true, "hideInact": true, "activateAfterClosing": "prev", "activateAfterClosingGlobal": true, "activateAfterClosingNoFolded": true, "activateAfterClosingNoDiscarded": false, "askNewBookmarkPlace": true, "tabsRmUndoNote": true, "nativeHighlight": true, "tabsUnreadMark": true, "tabsUpdateMark": "all", "tabsReloadLimit": 3, "tabsReloadLimitNotif": false, "showNewTabBtns": true, "newTabBarPosition": "bottom", "tabsPanelSwitchActMove": true, "tabsUrlInTooltip": "full", "openSubPanelOnMouseHover": false, "colorizeTabs": true, "colorizeTabsSrc": "domain", "moveNewTabPin": "end", "moveNewTabParent": "first_child", "moveNewTabParentActPanel": true, "moveNewTab": "none", "pinnedTabsPosition": "left", "pinnedTabsList": true, "pinnedAutoGroup": false, "tabsTree": true, "groupOnOpen": true, "tabsTreeLimit": "none", "hideFoldedTabs": true, "autoFoldTabs": false, "autoFoldTabsExcept": 5, "autoExpandTabs": false, "rmChildTabs": "folded", "tabsChildCount": true, "tabsLvlDots": true, "discardFolded": true, "discardFoldedDelay": 10, "discardFoldedDelayUnit": "min", "tabsTreeBookmarks": true, "treeRmOutdent": "first_child", "colorizeTabsBranches": false, "colorizeTabsBranchesSrc": "domain", "warnOnMultiBookmarkDelete": "any", "autoCloseBookmarks": false, "autoRemoveOther": false, "highlightOpenBookmarks": true, "activateOpenBookmarkTab": true, "showBookmarkLen": true, "bookmarksRmUndoNote": true, "loadBookmarksOnDemand": true, "pinOpenedBookmarksFolder": true, "loadHistoryOnDemand": true, "fontSize": "xxl", "animations": true, "animationSpeed": "norm", "theme": "compact", "colorScheme": "ff", "sidebarCSS": false, "groupCSS": false, "snapNotify": true, "snapExcludePrivate": false, "snapInterval": 5, "snapIntervalUnit": "hr", "snapLimit": 50, "snapLimitUnit": "day", "hScrollAction": "switch_act_tabs", "navSwitchPanelsDelay": 128, "scrollThroughTabs": "panel", "scrollThroughVisibleTabs": true, "scrollThroughTabsSkipDiscarded": true, "scrollThroughTabsExceptOverflow": false, "scrollThroughTabsCyclic": true, "scrollThroughTabsScrollArea": -90, "autoMenuMultiSel": true, "multipleMiddleClose": true, "longClickDelay": 500, "wheelThreshold": false, "wheelThresholdX": 10, "wheelThresholdY": 60, "tabDoubleClick": "none", "tabsSecondClickActPrev": true, "shiftSelAct": true, "activateOnMouseUp": true, "tabLongLeftClick": "none", "tabLongRightClick": "duplicate", "tabCloseMiddleClick": "discard", "tabsPanelLeftClickAction": "none", "tabsPanelDoubleClickAction": "tab", "tabsPanelRightClickAction": "menu", "tabsPanelMiddleClickAction": "undo", "newTabMiddleClickAction": "new_child", "bookmarksLeftClickAction": "open_in_new", "bookmarksLeftClickActivate": true, "bookmarksLeftClickPos": "after", "bookmarksMidClickAction": "open_in_new", "bookmarksMidClickActivate": false, "bookmarksMidClickPos": "default", "syncName": "Firefox X470", "syncSaveSettings": true, "syncSaveCtxMenu": true, "syncSaveStyles": true, "syncSaveKeybindings": true }, "permissions": { "allUrls": true, "tabHide": true, "clipboardWrite": true, "webRequest": true, "webRequestBlocking": true }, "storage": { "size": "14.3 mb", "props": { "bookmarksRecentFolders": "31 b", "containers": "2.44 kb", "contextMenu": "1.39 kb", "expandedBookmarkFolders": "155 b", "favDomains": "270 kb", "favHashes": "18.9 kb", "favicons": "1.31 mb", "groupCSS": "2 b", "lastSnapTime": "13 b", "panelIndex": "1 b", "prevTabsDataCache": "229 kb", "profileID": "14 b", "settings": "3.58 kb", "sidebar": "4.29 kb", "sidebarCSS": "2 b", "snapshots": "12.2 mb", "tabsDataCache": "264 kb", "ver": "10 b" } }, "sidebar": { "panels": { "bookmarks": { "type": 1, "id": "bookmarks", "name": "len: 9", "iconSVG": "icon_bookmarks", "iconIMGSrc": "", "iconIMG": "", "color": "toolbar", "lockedPanel": false, "tempMode": false, "skipOnSwitching": false, "rootId": "root________", "viewMode": "tree", "autoConvert": false }, "history": { "type": 4, "id": "history", "name": "len: 7", "color": "toolbar", "iconSVG": "icon_clock", "tempMode": false, "lockedPanel": false, "skipOnSwitching": false, "viewMode": "history" }, "oPvtGQIvR9Am": { "type": 2, "id": "oPvtGQIvR9Am", "name": "len: 7", "color": "toolbar", "iconSVG": "icon_tabs", "iconIMGSrc": "", "iconIMG": "", "lockedPanel": false, "skipOnSwitching": false, "noEmpty": false, "newTabCtx": "none", "dropTabCtx": "none", "moveTabCtx": "none", "moveTabCtxNoChild": true, "urlRulesActive": false, "urlRules": "", "bookmarksFolderId": -1, "newTabBtns": [] }, "l57xRuBBu53N": { "type": 2, "id": "l57xRuBBu53N", "name": "len: 6", "color": "toolbar", "iconSVG": "icon_tabs", "iconIMGSrc": "", "iconIMG": "", "lockedPanel": false, "skipOnSwitching": false, "noEmpty": false, "newTabCtx": "none", "dropTabCtx": "none", "moveTabCtx": "none", "moveTabCtxNoChild": true, "urlRulesActive": false, "urlRules": "", "bookmarksFolderId": -1, "newTabBtns": [] }, "firefox-default": { "type": 2, "id": "firefox-default", "name": "len: 6", "color": "blue", "iconSVG": "icon_tabs", "iconIMGSrc": "", "iconIMG": "", "lockedPanel": false, "skipOnSwitching": false, "noEmpty": false, "newTabCtx": "none", "dropTabCtx": "none", "moveTabCtx": "none", "moveTabCtxNoChild": true, "urlRulesActive": false, "urlRules": "", "bookmarksFolderId": "v1-NPzNuzw9d", "newTabBtns": [] }, "77PJQY1X7zAm": { "type": 2, "id": "77PJQY1X7zAm", "name": "len: 6", "color": "turquoise", "iconSVG": "icon_tabs", "iconIMGSrc": "", "iconIMG": "", "lockedPanel": false, "skipOnSwitching": false, "noEmpty": false, "newTabCtx": "none", "dropTabCtx": "none", "moveTabCtx": "none", "moveTabCtxNoChild": true, "urlRulesActive": false, "urlRules": "", "bookmarksFolderId": -1, "newTabBtns": [] }, "Gi2njE8Dnlan": { "type": 2, "id": "Gi2njE8Dnlan", "name": "len: 6", "color": "green", "iconSVG": "icon_tabs", "iconIMGSrc": "", "iconIMG": "", "lockedPanel": false, "skipOnSwitching": false, "noEmpty": false, "newTabCtx": "none", "dropTabCtx": "none", "moveTabCtx": "none", "moveTabCtxNoChild": true, "urlRulesActive": false, "urlRules": "", "bookmarksFolderId": -1, "newTabBtns": [] }, "wdzkA8VBChsL": { "type": 2, "id": "wdzkA8VBChsL", "name": "len: 6", "color": "yellow", "iconSVG": "icon_tabs", "iconIMGSrc": "", "iconIMG": "", "lockedPanel": false, "skipOnSwitching": false, "noEmpty": false, "newTabCtx": "none", "dropTabCtx": "none", "moveTabCtx": "none", "moveTabCtxNoChild": true, "urlRulesActive": false, "urlRules": "", "bookmarksFolderId": -1, "newTabBtns": [] }, "Ak5q9G_7_hsL": { "type": 2, "id": "Ak5q9G_7_hsL", "name": "len: 6", "color": "orange", "iconSVG": "icon_tabs", "iconIMGSrc": "", "iconIMG": "", "lockedPanel": false, "skipOnSwitching": false, "noEmpty": false, "newTabCtx": "none", "dropTabCtx": "none", "moveTabCtx": "none", "moveTabCtxNoChild": true, "urlRulesActive": false, "urlRules": "", "bookmarksFolderId": -1, "newTabBtns": [] }, "tIpuOF5MEisL": { "type": 2, "id": "tIpuOF5MEisL", "name": "len: 6", "color": "red", "iconSVG": "icon_tabs", "iconIMGSrc": "", "iconIMG": "", "lockedPanel": false, "skipOnSwitching": false, "noEmpty": false, "newTabCtx": "none", "dropTabCtx": "none", "moveTabCtx": "none", "moveTabCtxNoChild": true, "urlRulesActive": false, "urlRules": "", "bookmarksFolderId": -1, "newTabBtns": [] }, "sIhAINvH6isL": { "type": 2, "id": "sIhAINvH6isL", "name": "len: 6", "color": "pink", "iconSVG": "icon_tabs", "iconIMGSrc": "", "iconIMG": "", "lockedPanel": false, "skipOnSwitching": false, "noEmpty": false, "newTabCtx": "none", "dropTabCtx": "none", "moveTabCtx": "none", "moveTabCtxNoChild": true, "urlRulesActive": false, "urlRules": "", "bookmarksFolderId": -1, "newTabBtns": [] }, "nNIxD1ytsrsL": { "type": 2, "id": "nNIxD1ytsrsL", "name": "len: 6", "color": "purple", "iconSVG": "icon_tabs", "iconIMGSrc": "", "iconIMG": "", "lockedPanel": false, "skipOnSwitching": false, "noEmpty": false, "newTabCtx": "none", "dropTabCtx": "none", "moveTabCtx": "none", "moveTabCtxNoChild": true, "urlRulesActive": false, "urlRules": "", "bookmarksFolderId": -1, "newTabBtns": [] } }, "nav": [ "search", "bookmarks", "history", "sd-XqcSsH9U_eJG", "sp-arYkJj_-YW8z", "sd-0RTG0nRBEA0E", "oPvtGQIvR9Am", "l57xRuBBu53N", "firefox-default", "77PJQY1X7zAm", "Gi2njE8Dnlan", "wdzkA8VBChsL", "Ak5q9G_7_hsL", "tIpuOF5MEisL", "sIhAINvH6isL", "nNIxD1ytsrsL", "sd-LG6U0Z8jb4ZE", "sp-0", "sd-0Ruoc0-VQ28E", "add_tp", "sd-uGNt_zOfLHJG", "remute_audio_tabs", "sd-wfp6yaNpcIJG", "collapse", "sd-apkhtLfLJqBF", "create_snapshot", "sd-Rrd5zW7r0JJG", "settings" ] }, "containers": [ { "id": "firefox-container-1", "name": "8", "icon": "...", "color": "blue", "proxified": false, "proxy": null, "includeHostsActive": true, "includeHosts": "34", "excludeHostsActive": false, "excludeHosts": "", "userAgentActive": false, "userAgent": "", "cookieStoreId": "firefox-container-1", "colorCode": "#37adff" }, { "id": "firefox-container-2", "name": "4", "icon": "...", "color": "orange", "proxified": false, "proxy": null, "includeHostsActive": true, "includeHosts": "30", "excludeHostsActive": false, "excludeHosts": "", "userAgentActive": false, "userAgent": "", "cookieStoreId": "firefox-container-2", "colorCode": "#37adff" }, { "id": "firefox-container-3", "name": "7", "icon": "...", "color": "green", "proxified": false, "proxy": null, "includeHostsActive": true, "includeHosts": "33", "excludeHostsActive": false, "excludeHosts": "", "userAgentActive": false, "userAgent": "", "cookieStoreId": "firefox-container-3", "colorCode": "#37adff" }, { "id": "firefox-container-4", "name": "8", "icon": "...", "color": "pink", "proxified": false, "proxy": null, "includeHostsActive": true, "includeHosts": "34", "excludeHostsActive": false, "excludeHosts": "", "userAgentActive": false, "userAgent": "", "cookieStoreId": "firefox-container-4", "colorCode": "#37adff" }, { "id": "firefox-container-6", "name": "3", "icon": "...", "color": "toolbar", "proxified": false, "proxy": null, "includeHostsActive": true, "includeHosts": "29", "excludeHostsActive": false, "excludeHosts": "", "userAgentActive": false, "userAgent": "", "cookieStoreId": "firefox-container-6", "colorCode": "#37adff" }, { "id": "firefox-container-7", "name": "21", "icon": "...", "color": "toolbar", "proxified": false, "proxy": null, "includeHostsActive": true, "includeHosts": "47", "excludeHostsActive": false, "excludeHosts": "", "userAgentActive": false, "userAgent": "", "cookieStoreId": "firefox-container-7", "colorCode": "#37adff" }, { "id": "firefox-container-8", "name": "11", "icon": "...", "color": "blue", "proxified": false, "proxy": null, "includeHostsActive": true, "includeHosts": "37", "excludeHostsActive": false, "excludeHosts": "", "userAgentActive": false, "userAgent": "", "cookieStoreId": "firefox-container-8", "colorCode": "#37adff" } ], "windows": [ { "state": "normal", "incognito": false, "tabsCount": 9 }, { "state": "maximized", "incognito": false, "tabsCount": 186 }, { "state": "fullscreen", "incognito": false, "tabsCount": 295 }, { "state": "minimized", "incognito": false, "tabsCount": 215 }, { "state": "maximized", "incognito": false, "tabsCount": 272 }, { "state": "normal", "incognito": false, "tabsCount": 109 }, { "state": "maximized", "incognito": false, "tabsCount": 465 }, { "state": "maximized", "incognito": false, "tabsCount": 233 } ], "bookmarks": { "bookmarksCount": 1951, "foldersCount": 255, "separatorsCount": 12, "maxDepth": 6 } }

Logs

n/a

megamorphg avatar Sep 23 '22 01:09 megamorphg

@mbnuqw could you explain what the ID at the end of the group page URL is for? I notice that if I duplicate a group page or replace the broken group page's ID with an existing ID, it works fine.

So this means that duplicate IDs are accepted. Is that valid for whatever original purpose this was setup for?

In order to fix this issue would it make sense to just have group pages check if the ID exists and if it doesn't just create the ID? Not sure what the purpose of these are for, so something would need to be designed around that.

megamorphg avatar Oct 07 '22 20:10 megamorphg

The ID at the end of URL right now is indeed not needed anymore, it's just a legacy part that will be removed. This blank page happens if the id of Sidebery addon (e.g. 67d1e951-b627-4f6e-b2a3-9f38b8557c64) is changed (e.g. after addon reinstalling). Changing the ID at the end of the URL doesn't affect anything (in my tests), so I'm not sure that I can reproduce your exact issue.

But I'll try to change the parsing of the group page URLs and add auto restoring, so let's see if this issue will be fixed in the next beta.

mbnuqw avatar Oct 08 '22 05:10 mbnuqw

You're kind of right but it wasn't the moz-extension ID or the group ID at the end. I double-checked the URL before and after reloading and it was exactly the same too!

It was mainly happening to groups that were restored that had an emoji in their title for example: moz-extension://7faebdf4-d1e4-4bc7-a169-291088d1bce3/page.group/group.html#Crypto%F0%9F%A4%91:id:alJocD6Uiw-E

The workaround was:

  1. go to the URL bar and then just press Enter to re-try the URL. It will do nothing
  2. Press reload button. Tab reloads properly

Directly pressing the reload button didn't work.

Anyway, kind of annoying but glad I have a simple workaround although it seems like it isn't due to Sidebery itself but Tab Session Manager's restoration process itself (which in itself isn't that great since the cloud backup doesn't work and tree structure is lost sometimes), an Add-On, or maybe a Firefox upgrade bug since this never happened before the last 2 upgrades.

Anyway, removing the Group ID would be great if it's not needed.

megamorphg avatar Oct 08 '22 14:10 megamorphg

I updated init process of the group pages and its URL in v5.0.0b28, so I hope this issue is fixed. Could you check if the problem is still present?

mbnuqw avatar Nov 01 '22 18:11 mbnuqw

This problem seems fixed now and groups load fine with a simple refresh.

After this upgrade I noticed that new groups no longer have the unnecessary ":id:random_string" suffixed. However, pre-existing groups still have the id suffixed (although the rest of the renaming from page.group to sidebery worked successfully). Would suggest to make the script that updates the Group URLs to:

  • remove this id as well
  • all group pages become unsuspended at once during the upgrade (and do not go back to suspended). During the upgrade it took a few minutes for Firefox to lag thru this. Would suggest to not activate the tabs if possible for script updates

megamorphg avatar Nov 02 '22 00:11 megamorphg

  • Automatically remove these :id:...s - will be added in next beta
  • Not activate group tabs on upgrade - reasonable, will try to update group url only on tab activation

mbnuqw avatar Nov 02 '22 10:11 mbnuqw