Closed Procyon-b closed 6 years ago
Thanks for reporting! Was this when you had a lot of tabs open, like you mentioned in the other thread? It does take some nonzero time to save, so if you hibernated while the save was in progress, strange things might have happened. I will add a spinner to 0.1.17 so you can at least see if that's the case.
Thanks for checking the error logs! Not all messages are on by default. Maybe I should add a "developer options" setting or magic hotkey :) . To enable, in the console, go to the middle iframe (tree.html), and say log.setLevel(log.levels.INFO)
. Or DEBUG if you really want messages! It uses the loglevel
library.
No it was not at the same time. But I had 4 windows with 2-5 tabs each and one more with 10 tabs. The events unfolded like this: the computer was in full hybernate mode. I woke it up, logged in, and started checking tabs. About 2-3 min in the process, I decided to close some of them. They were always focused and where done loading. I closed them by clicking on the tab, not using tabfern. Some of them, not all, did not disappear from tabfern list. Strangely, half an hour later, after reading https://cxw42.github.io/TabFern/ I decide to double click tabfern's icon (as writen on that page) to see what is the difference with a single click, and tabfern opened with the list fixed, but with 2 recovered windows added. The ones that contained ghost tabs.
It just happened again now. Chrome has been closed and restarted since last time. I had only one window opened, with 10 tabs. Windows was not swaping. I closed 7 of the tabs, and all became ghost. Then I double-clicked TF icon, nothing changed. Then I closed TF window and reopened it, Fixed but with "recovered tabs" added.
Edit: In fact it was 12 tabs, and 2 were closed "correctly".
Thanks for the detailed report! I tried reproducing with the same configuration and set of tabs but was not able to trigger the behaviour. I also looked through the source briefly and don't see the code path that gave you that result. Here's a picture of the four steps in turning on the full debug output in the developer console, if you're willing to do so---
Then I closed TF window and reopened it, Fixed but with "recovered tabs" added.
The tabs showing under "recovered" after closing and reopening the TF window means that TF thought those tabs were open in an unsaved window the last time the tree was saved. Saves happen automatically when tabs are added/deleted/moved.
You can also refresh the TabFern window (F5) to fix this sort of situation, rather than closing and re-opening TF.
On the windows with ghost tabs, when I click in tabfern past the ghost, the wrong tab is selected (depending on how many ghosts there are).
That makes sense. TF assumes that the list in the TF window matches the order of tabs in the Chrome window, so any difference between those two will cause the wrong tabs to be activated. I am working on relaxing that assumption as part of #35.
I have set the debug mode as asked. We will see if something happens. Note that chrome has updated today. I'm now running 68.0.3440.106. If it was a problem particular to the former version...
I'm running an old extension, and its behavior (when used in incognito mode) has change since my "return". I was previously running 67.0.3396.99
On the windows with ghost tabs, when I click in tabfern past the ghost, the wrong tab is selected (depending on how many ghosts there are).
That makes sense. TF assumes that the list in the TF window matches the order of tabs in the Chrome window
That's what I thought, but I wanted to describe the whole behavior. I had played with tabs order, and opening a tab at the right place with my alias extension.
It happened again. I have noticed that one tab was ghosted, and I knew that it was moments ago. But, not knowing what to look for (what was the tab.id ...), I was unabled to find the relevant information in the debug log. Fortunately, after that every closed tab became a ghost. So i maximized TF window to log a "Saved size" event. Then closed another tab, another ghost. Here is the log:
It's only cut and paste, sorry if it's not readable.
Saved size
tree.js:2204 {Tab removed: 599, removeinfo: {…}}Tab removed: 599removeinfo: {isWindowClosing: false, windowId: 86}__proto__: Object
tree.js:2193 {Tab activated: 625, activeinfo: {…}}
tree.js:2084 {Tab updated: 625, Index: 3, changeinfo: {…}, ctab: {…}}
tree.js:2084 {Tab updated: 625, Index: 3, changeinfo: {…}, ctab: {…}}
tree.js:2084 {Tab updated: 625, Index: 3, changeinfo: {…}, ctab: {…}}
tree.js:1765 {onfocus: j…y.Event, x_blurred: "undefined", y_blurred: "undefined"}
tree.js:2084 {Tab updated: 625, Index: 3, changeinfo: {…}, ctab: {…}}Index: 3Tab updated: 625changeinfo: {status: "complete"}ctab: {active: true, audible: false, autoDiscardable: true, discarded: false, favIconUrl: "https://www.w3counter.com/favicon.ico", …}active: trueaudible: falseautoDiscardable: truediscarded: falsefavIconUrl: "https://www.w3counter.com/favicon.ico"height: 663highlighted: trueid: 625incognito: falseindex: 3mutedInfo: {muted: false}pinned: falseselected: truestatus: "complete"title: "W3Counter: Global Web Stats - July 2018"url: "https://www.w3counter.com/globalstats.php?year=2018&month=7"width: 1280windowId: 86__proto__: Object__proto__: Object
tree.js:1765 {onfocus: j…y.Event, x_blurred: "undefined", y_blurred: "undefined"}
tree.js:1850 {Awaiting select: 1, elts: Array(10)}
tree.js:1765 {onfocus: j…y.Event, x_blurred: 129, y_blurred: 345, elts: Array(10)}
tab 599 is the ghost tab. It was the last tab of the window. tab 625 was the previous tab in that window. And it received focus.
This is not the first ghost, it's difficult to know if all ghosts had the same "error" or if ghosts >1 are a consequence of TF failing on ghost one.
Do you know if there is a way to timestamp console lines ?
Edit: the current tab is in bold in TF. But it was broken when it had ghosts. Even on windows without ghosts. Sometimes bold, most of the time not. And going back to a previously bold, not bold. After a refresh F5, everything is back to normal (obviously).
I don't know about timestamps for console lines. I did add a DEBUG-level log to each step of tabOnRemoved
, which is the function in question. Would you be willing to load v0.1.17-pre.1 unpacked? Check out branch v01h
and load .../tabfern
, which is the dev tree (.../webstore
is the deployed version). Make sure the log level is set to DEBUG, and then send me everything from Tab removed
to save tree
when it happens again. Thanks!
v0.1.17-pre.1 loaded and in debug
No ghost but I have noticed that the bold-style of the current tab is missing after a while. After a refresh F5, it goes back to normal.
(5 min after writing the lines above) : Something may be broken with the "bolding" without being related to ghosts. When I select/swap from one tab to another tab/window without using TF, multiples tabs get bolded.
Tabs count is low: 6 in total in 4 windows.
You are seeing a number of things I've not seen in the whole time TF has existed :D and I'm curious what the difference might be.
What I have done: F5 to reset TF window, log level to debug. Opened a 3rd window. Start focusing all windows one after another, and here is how it looked in TF. Clicking a tab in TF bolds only that line (unbolding all others).
I'll try in a new profile and let you know. [edit: see below]
Win 7 32bits, chrome 68.0.3440.106 extensions: ads killer plus, alias bookmarks x2 (+ local dev), "don't add CSE" (local), "awesome cookie manager", extension log, TF (local), quick shortcuts, stylus, tampermonkey, "I don't care about cookies", enhanced history (local) nothing tabs related.
log.setLevel(log.levels.DEBUG)
undefined
tree.js:1807 {Window created: 87, Restore?: "no", cwin: {…}}
tree.js:2223 {Tab created: 88, ctab: {…}}
tree.js:1116 {Bump of prune timer requested for: {…}, cwin: undefined}
tree.js:1128 {" Bumping prune timer for": {…}, cwin: undefined}
tree.js:2418 {Tab activated: 88, activeinfo: {…}}
tree.js:536 Saved tree
tree.js:2097 {merge check tab 88 win 87: {…}}
tree.js:1116 {Bump of prune timer requested for: {…}, cwin: undefined}
tree.js:1128 {" Bumping prune timer for": {…}, cwin: undefined}
tree.js:2296 {Tab updated: 88, Index: 0, changeinfo: {…}, ctab: {…}}
tree.js:536 Saved tree
tree.js:2296 {Tab updated: 88, Index: 0, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 88, Index: 0, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 88, Index: 0, changeinfo: {…}, ctab: {…}}
tree.js:2418 {Tab activated: 34, activeinfo: {…}}
Edit: Tried in a new profile. Same result.
Could this be chrome's fault ? I have a "problem" with another extension. When "Awesome cookie manager" popup window is opened in an incognito window, it used to display incognito cookies. Now, with this version of chrome, it always displays "normal" cookies. I can't see incognito cookies anymore.
It could most certainly be Chrome's fault :D :D . However, the Awesome cookie manager change may have been a change to that extension's incognito mode - see, e.g., here.
Last version of Awesome cookie manager is: 1.0.0.0 - September 22, 2016 It is definitively not the culprit.
Have you already played with multiple chrome versions on the same computer, or with installing an older version? All pages related to this issue are a bit outdated. Even binaries archives don't work properly or are more than 2 years old. I have finally found a copy of 67.0.3396.79, but don't know how to handle it properly with my current installation. I can't correctly extract its content without installing it.
TF v0.1.17-pre.1
Still happening in this version. It seems less frequent (than 0.1.16.1337). Usually I don't notice it immediately so I can't paste a relevant log here. This time I've seen it. Here is the console log.
tree.js:2429 {Tab removed: 302, removeinfo: {…}}
tree.js:2475 {Removing value: {…}, tabid: 302, removeinfo: {…}}
tree.js:2480 {Removing tree node: {…}, tabid: 302, removeinfo: {…}}
tree.js:2484 {Updating tab index values: "j2_10", tabid: 302, removeinfo: {…}}
tree.js:2489 {Tab index values updated: "j2_10", tabid: 302, removeinfo: {…}}
tree.js:2418 {Tab activated: 288, activeinfo: {…}}
tree.js:536 Saved tree
tree.js:2429 {Tab removed: 288, removeinfo: {…}}
tree.js:2475 {Removing value: {…}, tabid: 288, removeinfo: {…}}
tree.js:2480 {Removing tree node: {…}, tabid: 288, removeinfo: {…}}
tree.js:2484 {Updating tab index values: "j2_10", tabid: 288, removeinfo: {…}}
tree.js:2489 {Tab index values updated: "j2_10", tabid: 288, removeinfo: {…}}
tree.js:2418 {Tab activated: 259, activeinfo: {…}}
tree.js:536 Saved tree
tree.js:2429 {Tab removed: 259, removeinfo: {…}}
tree.js:2475 {Removing value: {…}, tabid: 259, removeinfo: {…}}
tree.js:2480 {Removing tree node: {…}, tabid: 259, removeinfo: {…}}
tree.js:2484 {Updating tab index values: "j2_10", tabid: 259, removeinfo: {…}}
tree.js:2489 {Tab index values updated: "j2_10", tabid: 259, removeinfo: {…}}
tree.js:2418 {Tab activated: 270, activeinfo: {…}}
tree.js:2296 {Tab updated: 270, Index: 10, changeinfo: {…}, ctab: {…}}
tree.js:536 Saved tree
tree.js:2296 {Tab updated: 270, Index: 10, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 270, Index: 10, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 270, Index: 10, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 270, Index: 10, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 270, Index: 10, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 270, Index: 10, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 270, Index: 10, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 270, Index: 10, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 270, Index: 10, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 270, Index: 10, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 270, Index: 10, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 270, Index: 10, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 270, Index: 10, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 270, Index: 10, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 270, Index: 10, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 270, Index: 10, changeinfo: {…}, ctab: {…}}
tree.js:2429 {Tab removed: 270, removeinfo: {…}}
tree.js:2456 {Bailing - no tab_node_id: 270, removeinfo: {…}}
tree.js:2418 {Tab activated: 271, activeinfo: {…}}
tree.js:2296 {Tab updated: 271, Index: 9, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 271, Index: 9, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 271, Index: 9, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 271, Index: 9, changeinfo: {…}, ctab: {…}}
tree.js:2429 {Tab removed: 271, removeinfo: {…}}
tree.js:2456 {Bailing - no tab_node_id: 271, removeinfo: {…}}
tree.js:2418 {Tab activated: 269, activeinfo: {…}}
tree.js:2296 {Tab updated: 269, Index: 8, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 269, Index: 8, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 269, Index: 8, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 269, Index: 8, changeinfo: {…}, ctab: {…}}
tree.js:2429 {Tab removed: 269, removeinfo: {…}}
tree.js:2456 {Bailing - no tab_node_id: 269, removeinfo: {…}}
tree.js:2418 {Tab activated: 268, activeinfo: {…}}
tree.js:2296 {Tab updated: 268, Index: 7, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 268, Index: 7, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 268, Index: 7, changeinfo: {…}, ctab: {…}}
tree.js:1953 {onfocus: j…y.Event, x_blurred: "undefined", y_blurred: "undefined"}
tree.js:2296 {Tab updated: 268, Index: 7, changeinfo: {…}, ctab: {…}}
tree.js:2038 {Awaiting select: 1, elts: Array(10)}
tree.js:1953 {onfocus: j…y.Event, x_blurred: 93, y_blurred: 247, elts: Array(10)}
tree.js:1795 {About to activate: 1}
tree.js:1953 {onfocus: j…y.Event, x_blurred: "undefined", y_blurred: "undefined"}
tree.js:1795 {About to activate: 1}
tree.js:2418 {Tab activated: 267, activeinfo: {…}}
tree.js:2296 {Tab updated: 267, Index: 6, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 267, Index: 6, changeinfo: {…}, ctab: {…}}
tree.js:2296 {Tab updated: 267, Index: 6, changeinfo: {…}, ctab: {…}}
tree.js:1953 {onfocus: j…y.Event, x_blurred: "undefined", y_blurred: "undefined"}
tree.js:1953 {onfocus: j…y.Event, x_blurred: "undefined", y_blurred: "undefined"}
tree.js:1953 {onfocus: j…y.Event, x_blurred: "undefined", y_blurred: "undefined"}
tree.js:1795 {About to activate: 1}
tree.js:1953 {onfocus: j…y.Event, x_blurred: "undefined", y_blurred: "undefined"}
See "tree.js:2456 {Bailing - no tab_node_id: 270, removeinfo: {…}}" ? I think it failed 2 or 3 tab "closing" events before this line appears.
By the way, I have discovered why "Awesome cookie manager" doesn't display incognito cookies. Either google has changed the default value of "incognito": "split" in the manifest file, or another setting has been modified. I don't know how to run an older copy of chrome alongside the normal installation, so I can't compare behaviors.
Thank you for the additional detail! Updated based on the logs --- please grab the latest. When you catch a Bailing...
message in the log, would you please look backwards? (Expand the "Object" entries if you didn't have the console open.) Whatever the ctab
# is (e.g,. 270
above), look for something like:
{Tab removed: 142, removeinfo: {…}}
{Removing value for ctab: 142, tab_val: {…}, removeinfo: {…}}
{Removing tree node j2_907 for ctab: 142, tab_node: {…}, tab_val: {…}, removeinfo: {…}}
{Updating tab index values after removing ctab: 142, window_node_id: "j2_905", removeinfo: {…}}
{Tab index values updated after removing ctab: 142, window_node_id: "j2_905", removeinfo: {…}}
Expand all and send me that log (obfuscate URLs if you want ;) ). I know this is tedious, but it's the best I can think of at the moment. My guess is that the tab is being removed prematurely.
Explanation: somehow, TF's internal record of the tab lost its connection to the node ID.
I will add some more error checking but am not able to do so right at the moment.
Here it is. Nothing related to 552 after that.
tree.js:2444 {Tab activated: 552, activeinfo: {…}}
Tab activated: 552
activeinfo: {tabId: 552, windowId: 432}
__proto__: Object
tree.js:2322 {Tab updated: 552, Index: 3, changeinfo: {…}, ctab: {…}}
Index: 3
Tab updated: 552
changeinfo: {discarded: false}
ctab:
active: true
audible: false
autoDiscardable: true
discarded: false
height: 663
highlighted: true
id: 552
incognito: true
index: 3
mutedInfo: {muted: false}
pinned: false
selected: true
status: "loading"
title: "Télécharger vos données : téléchargements"
url: "XXX"
width: 1280
windowId: 432
__proto__: Object
__proto__: Object
tree.js:2322 {Tab updated: 552, Index: 3, changeinfo: {…}, ctab: {…}}
Index: 3
Tab updated: 552
changeinfo: {status: "loading", url: "XXX"}
ctab:
active: true
audible: false
autoDiscardable: true
discarded: false
height: 663
highlighted: true
id:552
incognito: true
index: 3
mutedInfo: {muted: false}
pinned: false
selected: true
status: "loading"
title: "Télécharger vos données : téléchargements"
url: "XXX"
width: 1280
windowId: 432
__proto__: Object
__proto__: Object
tree.js:2455 {Tab removed: 552, removeinfo: {…}}
Tab removed: 552
removeinfo: {isWindowClosing: false, windowId: 432}
__proto__: Object
tree.js:2485 {Bailing, but it's probably OK - no tab_val for ctab: 552, tab_val: undefined, removeinfo: {…}}
Bailing, but it's probably OK - no tab_val for ctab: 552
removeinfo: {isWindowClosing: false, windowId: 432}
tab_val: undefined
__proto__: Object
Here is a new one. I wasn't browsing much. Watching a video on another site (not youtube), and closed this page (459). I have left the url unchanged, they are not private. That way you can see what changed. 454 is useless, but I left it in case. No event has been removed.
tree.js:562 Saved tree
tree.js:2576 Tab being replaced: added 459; removed 449
tabOnReplaced @ tree.js:2576
EventImpl.dispatchToListener @ extensions::event_bindings:403
publicClassPrototype.(anonymous function) @ extensions::utils:138
EventImpl.dispatch_ @ extensions::event_bindings:387
dispatchArgs @ extensions::event_bindings:260
dispatchEvent @ extensions::event_bindings:269
tree.js:2322 {Tab updated: 459, Index: 0, changeinfo: {…}, ctab: {…}}
Index: 0
Tab updated: 459
changeinfo: {discarded: true}
ctab:
active: false
audible: false
autoDiscardable: true
discarded: true
favIconUrl: "https://s.ytimg.com/yts/img/favicon_32-vflOogEID.png"
height: 0
highlighted: false
id: 459
incognito: false
index: 0
mutedInfo: {muted: false}
pinned: false
selected: false
status: "complete"
title: ""livrés à domicile" 5 mars 2018 - YouTube"
url: "https://www.youtube.com/results?search_query=%22livr%C3%A9s+%C3%A0+domicile%22+5+mars+2018"
width: 0
windowId: 443
__proto__: Object
__proto__: Object
tree.js:2455 {Tab removed: 454, removeinfo: {…}}
Tab removed: 454
removeinfo: {isWindowClosing: false, windowId: 12}
__proto__: Object
tree.js:2501 {Removing value for ctab: 454, tab_val: {…}, removeinfo: {…}}
Removing value for ctab: 454
removeinfo: {isWindowClosing: false, windowId: 12}
tab_val:
being_opened: null
index: 1
isOpen: true
isPinned: false
node_id: "j2_196"
raw_bullet: null
raw_favicon_url: "https://www.lindependant.fr/favicon.ico"
raw_title: "BD - Seuls dans vos cauchemars"
raw_url: "https://www.lindependant.fr/2018/08/21/bd-seuls-dans-vos-cauchemars,4679687.php"
tab:
active: false
audible: false
autoDiscardable: true
discarded: false
height: 0
highlighted: false
id: 454
incognito: false
index: 1
mutedInfo: {muted: false}
openerTabId: 13
pinned: false
selected: false
status: "loading"
title: ""
url: "https://www.lindependant.fr/2018/08/21/bd-seuls-dans-vos-cauchemars,4679687.php"
width: 0
windowId: 12
__proto__: Object
tab_id: 454
ty: "tab"
win_id: 12
Symbol(value_name): "195"
toString: ƒ value_toString()
__proto__: Object
tree.js:2506 {Removing tree node j2_196 for ctab: 454, tab_node: {…}, tab_val: {…}, removeinfo: {…}}
Removing tree node j2_196 for ctab: 454
removeinfo: {isWindowClosing: false, windowId: 12}
tab_node:
a_attr: {href: "#", id: "j2_196_anchor"}
children: []
children_d: []
data: null
icon: "https://www.lindependant.fr/favicon.ico"
id: "j2_196"
li_attr: {id: "j2_196", class: "tfs-open tf-tab", title: ""}
multitype: (2) ["tab", "open"]
original: {text: "Tab"}
parent: "j2_2"
parents: (2) ["j2_2", "#"]
state: {loaded: true, opened: false, selected: false, disabled: false}
text: "BD - Seuls dans vos cauchemars"
__proto__: Object
tab_val:
being_opened: null
index: 1
isOpen: true
isPinned: false
node_id: "j2_196"
raw_bullet: null
raw_favicon_url: "https://www.lindependant.fr/favicon.ico"
raw_title: "BD - Seuls dans vos cauchemars"
raw_url: "https://www.lindependant.fr/2018/08/21/bd-seuls-dans-vos-cauchemars,4679687.php"
tab:
active: false
audible: false
autoDiscardable: true
discarded: false
height: 0
highlighted: false
id: 454
incognito: false
index: 1
mutedInfo: {muted: false}
openerTabId: 13
pinned: false
selected: false
status: "loading"
title: ""
url: "https://www.lindependant.fr/2018/08/21/bd-seuls-dans-vos-cauchemars,4679687.php"
width: 0
windowId: 12
__proto__: Object
tab_id: 454
ty: "tab"
win_id: 12
Symbol(value_name): "195"
toString: ƒ value_toString()
__proto__: Object
tree.js:2510 {Updating tab index values after removing ctab: 454, window_node_id: "j2_2", removeinfo: {…}}
Updating tab index values after removing ctab: 454
removeinfo: {isWindowClosing: false, windowId: 12}
window_node_id: "j2_2"
__proto__: Object
tree.js:2515 {Tab index values updated after removing ctab: 454, window_node_id: "j2_2", removeinfo: {…}}
Tab index values updated after removing ctab: 454
removeinfo: {isWindowClosing: false, windowId: 12}
window_node_id: "j2_2"
__proto__: Object
tree.js:2444 {Tab activated: 455, activeinfo: {…}}
Tab activated: 455
activeinfo: {tabId: 455, windowId: 12}
__proto__: Object
tree.js:562 Saved tree
tree.js:1979 {onfocus: j…y.Event, x_blurred: "undefined", y_blurred: "undefined"}
onfocus: jQuery.Event {originalEvent: Event, type: "focus", isDefaultPrevented: ƒ, target: Window, currentTarget: Window, …}
x_blurred: "undefined"
y_blurred: "undefined
"__proto__: Object
tree.js:1821 {About to activate: 443}
About to activate: 443
__proto__: Object
tree.js:2444 {Tab activated: 459, activeinfo: {…}}
Tab activated: 459
activeinfo: {tabId: 459, windowId: 443}
__proto__: Object
tree.js:2322 {Tab updated: 459, Index: 0, changeinfo: {…}, ctab: {…}}
Index: 0
Tab updated: 459
changeinfo: {discarded: false}
ctab:
active: true
audible: false
autoDiscardable: true
discarded: false
favIconUrl: "https://s.ytimg.com/yts/img/favicon_32-vflOogEID.png"
height: 663
highlighted: true
id: 459
incognito: false
index: 0
mutedInfo: {muted: false}
pinned: false
selected: true
status: "loading"
title: ""livrés à domicile" 5 mars 2018 - YouTube"
url: "https://www.youtube.com/results?search_query=%22livr%C3%A9s+%C3%A0+domicile%22+5+mars+2018"
width: 1280
windowId: 443
__proto__: Object
__proto__: Object
tree.js:2322 {Tab updated: 459, Index: 0, changeinfo: {…}, ctab: {…}}
Index: 0
Tab updated: 459
changeinfo: {status: "loading", url: "https://www.youtube.com/results?search_query=%22livr%C3%A9s+%C3%A0+domicile%22+5+mars+2018"}
ctab:
active: true
audible: false
autoDiscardable: true
discarded: false
favIconUrl: "https://s.ytimg.com/yts/img/favicon_32-vflOogEID.png"
height: 663
highlighted: true
id: 459
incognito: false
index: 0
mutedInfo: {muted: false}
pinned: false
selected: true
status: "loading"
title: ""livrés à domicile" 5 mars 2018 - YouTube"
url: "https://www.youtube.com/results?search_query=%22livr%C3%A9s+%C3%A0+domicile%22+5+mars+2018"
width: 1280
windowId: 443
__proto__: Object
__proto__: Object
tree.js:2322 {Tab updated: 459, Index: 0, changeinfo: {…}, ctab: {…}}
Index: 0
Tab updated: 459
changeinfo: {favIconUrl: "https://s.ytimg.com/yts/img/favicon_32-vflOogEID.png"}
ctab:
active: true
audible: false
autoDiscardable: true
discarded: false
favIconUrl: "https://s.ytimg.com/yts/img/favicon_32-vflOogEID.png"
height: 663
highlighted: true
id: 459
incognito: false
index: 0
mutedInfo: {muted: false}
pinned: false
selected: true
status: "loading"
title: ""livrés à domicile" 5 mars 2018 - YouTube"
url: "https://www.youtube.com/results?search_query=%22livr%C3%A9s+%C3%A0+domicile%22+5+mars+2018"
width: 1280
windowId: 443
__proto__: Object
__proto__: Object
tree.js:2322 {Tab updated: 459, Index: 0, changeinfo: {…}, ctab: {…}}
Index: 0
Tab updated: 459
changeinfo: {title: "YouTube"}
ctab:
active: true
audible: false
autoDiscardable: true
discarded: false
favIconUrl: "https://s.ytimg.com/yts/img/favicon_32-vflOogEID.png"
height: 663
highlighted: true
id: 459
incognito: false
index: 0
mutedInfo: {muted: false}
pinned: false
selected: true
status: "loading"
title: "YouTube"
url: "https://www.youtube.com/results?search_query=%22livr%C3%A9s+%C3%A0+domicile%22+5+mars+2018"
width: 1280
windowId: 443
__proto__: Object
__proto__: Object
tree.js:2455 {Tab removed: 459, removeinfo: {…}}
Tab removed: 459
removeinfo: {isWindowClosing: false, windowId: 443}
__proto__: Object
tree.js:2485 {Bailing, but it's probably OK - no tab_val for ctab: 459, tab_val: undefined, removeinfo: {…}}
Bailing, but it's probably OK - no tab_val for ctab: 459
removeinfo: {isWindowClosing: false, windowId: 443}
tab_val: undefined
__proto__: Object
Thanks! I think I may have it. Right at the top of the log there is a "replaced". Those are not yet handled! Let me see what I can figure out. Do you happen to remember how you opened 459? I've never seen a Replaced event in my own use.
I have to say I don't know what it is. This is not the first instance of "replace" I see. I think I have seen it each time I had a ghost tab. I browser normally. IIRC that tab was opened from a bookmark: ctrl+click on bookmark. It is located in a bookmark folder on the bookmark bar.
Edit: can't reproduce it.
I also can't repro this morning, but I just pushed a first version of tabOnReplaced
based on what I have read here and here. Would you please pull the latest and see if the problem persists?
(Separately, I am adding i18n in #135. Would you by any chance be willing to contribute a French translation of the TabFern UI sometime, or any other languages you happen to know? Not urgent by any means; I am still converting code to access the translation files.)
about translation: No problem. I'll do it.
Do you plan on adding language support with the standard i18n (the user has no choice), or with an alternative like in tampermonkey. I have made my own in alias bookmarks. The advantage of my solution is that you can leave original language text in place, as long as you mark the tag containing it. My localize code is 30 lines long.
Translation: thank you! Would you please join me over at #135 for that discussion?
@Procyon-b Have you had a chance to try the updates in e236de5? If so, are you still seeing ghost tabs?
I'm now using the v0.1.17 release candidate (in /webstore
) and am hoping to be able to add this to the changelog for v0.1.17! However, if you are still seeing ghost tabs, I will release 0.1.17 and then try to nail this one down. Thanks!
No, sorry. I have not paid attention to this update. My mind had totally blanked that part when I read your message. I focused on the part about translations. Sorry.
The newer version is now in place.
Looks good. I see 3 "replaced" events. Each paired with "tab replacement", and no "bailing". No ghost tabs in TF.
Edit: I forgot to mention that TF is still bolding tabs for multiple windows at a time.
Last comment to confirm that I haven't seen any problem since I upgraded to 0.1.17-pre.3
@Procyon-b Thank you! I am planning to deploy 0.1.17 early next week.
chrome 68.0.3440.84 tabfern 0.1.16.1337
I have noticed that some tabs that I have closed moments ago are still in tabfern's list. The ghost tabs are in different windows. I have looked at the error log for the tabfern window as well as the background script. No errors. On the windows with ghost tabs, when I click in tabfern past the ghost, the wrong tab is selected (depending on how many ghosts there are).
Note that windows was hybernating. Has it somehow screwed chrome ? ...
Edit: I have moved this tab from a single-tab window to another one, and coincidently placed it on place of a ghost tab. Now tabfern identifies this tab (github) with the identity of the ghost tab