jingyu9575 / tabs-to-bookmark-groups

(Work in progress) Firefox extension to save the tabs to a bookmark group and switch between different groups.
https://addons.mozilla.org/firefox/addon/tabs-to-bookmark-groups/
Mozilla Public License 2.0
4 stars 1 forks source link

First prototype #2

Closed jingyu9575 closed 4 years ago

jingyu9575 commented 5 years ago

@EstherMoellman So this is what I get as a prototype. It is currently unsigned.

For testing only. Data loss may happen. It cannot restore tabs after restarting browser yet.

It can now create bookmark groups and switch between them. Please check if it is:

If both are true, this project can be continued.


One important thing to decide is how to deal with window closing. If the last window is closed, Firefox will exit and extension does not have time to save the tabs.

The possible approaches are:

  1. Do not do anything. Instead, the user needs to use the built-in session restore. When the window is restored, the bookmark group can be reconnected.

    • Best performance
    • Relies on the built-in session restore. If it fails or the user does not restore, the last opened group will be lost.
  2. Save the current bookmark group whenever a tab changes.

    • Worse performance
    • Probably best stability
  3. Same as 2, but save to the extension storage instead.

    • Probably faster than the bookmark storage
    • If the extension storage is corrupted, the last opened group will be lost.

What do you think?

EstherMoellman commented 5 years ago

@jingyu9575 ... I have no words to describe my happiness with this your message, so I will brief by just saying: THANK YOU! From the bottom of my heart, thank you! 谢谢 !

I already downloaded the first version. Please give me some days, after testing it, I'll back with my feedback to you.

But answering your question: From an average user point of view, the ideal scenario always will be to have an automatic saving function. So, I tend to choose option 2 or 3. Of course I prefer best performance, but I still need more info from your side, before I decide myself between 2 or 3. For example, if I am right, at option 2 tabs will be saved as bookmark groups inside the browser (json file). In this case, this is a huge plus for the add-on, because users can edit bookmarks directly from the browser library. Not to mention, that this also will be great as a backup function, and users will be able to import/export everything... wonderful! You say this may have negative performance impact, but in the other hand this will keep the add-on simple, small, lightweight etc, and also this will avoid you to have to write a bookmark editor, a backup function etc. Here we may lose a bit performance, but we may win more functionality. But, if I am not right, and the bookmark edition/backup is easily possible to be done by saving tabs inside extension storage... then, probably I will choose option 3 (because according to you it has better performance).

Please, don't hesitate to contact me, if you believe I can help you.

Thanks again! :)

PS: The name "bookmark-group-switch" may confuse some users. They may think it is a "bookmarks" add-on. Some suggestions (you have the final word): Powerful Tab Groups Powerful Tab Session Groups Tabs As Bookmark Groups Tabs To Bookmark Groups Bookmarking Tabs in Groups Tab Manager Bookmark Groups Convert Tabs Into Bookmarks Groups

EstherMoellman commented 5 years ago

Hi again @jingyu9575 ! I am here with the result of the first test:

Before answering your first question, it is worth mentioning that I tested your first prototype (FP) from a very limited point of view, as a work-in-progress, first stage etc. So, I have not analyzed this FP as the final prototype. And I just focused at what you specifically asked me to test: So, yes, it seems stable enough (not corrupting) to be usable. And yes, it seems fast enough (for large number of tabs) to be practical (I tested with 1000 tabs and 20 groups).

If by "corrupted" you mean the lost of tabs, or add-on conflicts, or other conflicts etc, nope, I haven't seen this kind of corruption in this test. However, I did experience the following issues:

Positive points: Considering this was the first FP, I was expecting for something more raw, primitive, basic etc. And FP positively surprised me, because it seems pretty advanced.

Also, the main "bookmarking/closing" function works fine, making the browser more lightweight (FP consumes a maximum of ±500KB RAM with 1000 tabs), very responsive, no conflicts with browser functions (Containers, FPI, content blocking etc) as other similar add-ons have. It is important to stress that, I have not seen at FP, the bugs today I see at similar add-ons using "hiding/discarding". For example, with FP I never saw a lost tab, or a tab appearing at other group etc. By the way, I also tested FP with tons of other add-ons, and have not seen conflicts, zero problems.

But what I most loved was the possibility to manage tabs directly from the bookmark library. This is perfect! It is so functional, so convenient, so practical. In my opinion there is no need to build inside FP a tab/group editor. Many similar add-ons do that, I don't know why, there is no need, editing tabs and groups directly from the bookmark library is enough. And also it can backup there everything, allowing to import/export etc.

Finally and back to your second question (with regards to option 1, 2 or 3): If I well understood you, your question is based in a rare case, only when all the tabs are closed, the browser will close, and FP may not save the last group... right? I say "rare", because users having tab-groups add-on, normally close Firefox from a group of tabs. It is rare to have a group with zero tabs. But anyway, in this scenario my answer is: As I always said, performance always will be my preference. And you said that "option 1" may have the best performance. So, I wonder if it will be possible to keep the "option 1", but before Firefox closes showing a kind of FP' banner popup, asking the user if he wants to save the last tab or group? Or what about if FP behaves as Firefox behaves, that closes the last tab, but when Firefox is launched again, automatically it opens in a new tab: Is not possible to FP to create a tab or to keep the last tab, when all the tabs are closed and Firefox is closed? If it is not possible to do that, then I will remain with my answer to you in my previous message, preferring "option 2" or "3".

I hope my test will be useful to you. Also, I hope I answered your questions. Please, keep counting with me! You're doing an excellent job. Thank you once again! : )

jingyu9575 commented 5 years ago

The name "bookmark-group-switch" may confuse some users

As your suggested, the extension has been renamed to "Tabs to Bookmark Groups". The extension ID also changes, so installing the new version will not update the old one. Also, the new extension cannot find the groups created by the old extension.

If you do not need the old group data, you can just remove the old one. Otherwise, you'll need to migrate:

  1. Install the new version and click the button once.
  2. Move the group folders from the old place to the new place. The "markers", both the old one and the new one, should not be moved.
  3. Keep the old version installed for a while. (you can remove the button from the toolbar.) The reason will be explained in the next post.
jingyu9575 commented 5 years ago

So, yes, it seems stable enough [...] fast enough

Then I think the project is worth continuing.


The issues:

the first time a bookmark is open, it seems that FP opens all the saved bookmarks at once

Could you give more details? When the extension is first installed, there shouldn't be any groups, and it should not be possible to switch at all. Are you seeing this problem when creating the first group by clicking "+", and switching to it?

The extension find the bookmarks by searching for its "marker". Is the marker accidentally moved?

图片

prefer pinned tabs autonomous, working universally, independently of any group

The option "Exclude pinned tabs" is added (default to disabled).

Unfortunately FP doesn't remember last active tab per group

Not sure what is happening. FP should be remember it.

yM7uVTRkaH

Are you seeing different behaviors?

just in some groups, it changes the order of the opened tabs

Probably browser issues. Are the orders in the bookmarks correct? I'd like to know:

Also, is one of your tabs using the "confirm leave" dialog?

图片

The desirable behavior will be to open just the last active tab

Are you suggesting to discard/unload the inactive tabs? An option is added (default to enabled).

jingyu9575 commented 5 years ago

Now there are design considerations:

your question is based in a rare case, only when all the tabs are closed, the browser will close

No, this problem happens when the user close the window by clicking the red "x". When the window is closed, Firefox exits and extensions do not have the time to save the tabs.

If all the tabs are closed one by one, I think the user is choosing to remove all the tabs in the group manually, and the group shouldn't be saved in this case.

I do not know any way to delay Firefox from exiting.


Unfortunately FP doesn't remember last active tab per group

Currently, the extension remembers the last active tab of a group, by transforming the URL of the bookmark. Instead of saving http://127.0.0.2, the extension will save moz-extension://...?url=http://127.0.0.2&active=1if the tab is active. When the user switch back to this group, the extension convert the URL back to http://127.0.0.2 and activate it.

图片

This is why you need the old version for a while if the groups are migrated; the URL transform is different for the different installs, and the active tab's URL will be lost without the old version.

Now, this method has a disadvantage that the user cannot see or edit the URL directly in the built-in bookmark manager.

I'm thinking an alternative way to mark the active tab, by prefixing the title with e.g. :

Mozilla
Google
▶ Facebook
Twitter

We can also use 📌 for pinned tabs if they are saved.

The advantages are:

The disadvantages are:

What do you think?

EstherMoellman commented 5 years ago

@jingyu9575 ... it is so exciting to see progress! Thank you! I already downloaded the new version. Please, give me some days to test. I'll be back with the results, and also answering all your great questions/comments. Thanks again! : )

EstherMoellman commented 5 years ago

Hi @jingyu9575 !

First of all, I want to say that latest First Prototype (FP)' version seems very stable... I got a very nice impression. Also, performance seems nice (average low RAM = ±500KB, very sporadically spiking to 1MB), and the browser remains responsive most of the time. In addition, until now I haven't seen conflicts between FP and Firefox' functions (or with other add-ons), and I never saw the kind of bugs I everyday see at add-ons using "hiding/discarding". Yeah, below I'll describe a bunch of details, and this may give the negative impression that FP is buggy, or unstable etc. It is not! And I want to make this very clear. Of course, is a "FP", so is natural to find details to be polished. But in my opinion, I only found small details. Very nice @jingyu9575 ! Good job! And thank you always! : )

I'm not sure if I already mentioned it, but you may want to know that my tests are on Windows 10 (latest version) + Firefox Nightly (latest version). For tests I always use a clean FF' Nightly, with default settings/preferences, and I just add some add-ons in order to test possible conflicts with FP. On average, I run my tests with at least 20 tab-groups, having around 15 tabs each group, and some groups having 30 - 60 - 90 tabs. It is a pretty stress test.

MY REPORT ABOUT LATEST FP' VERSION:

1) Similar to previous FP' version, I believe I found a kind of bug, it happens only once, after FP' installation. These are the steps to reproduce the possible bug: a) Before installing FP, open several tabs b) Install latest FP c) Create several new groups (from FP' icon menu) 4) Move to another new created group (from FP' icon menu) => FP will ask to save current tabs in a group => save by creating a new group named “X” (any name) => group “X” should be saved, but group "X" won't appear (not at FP' icon menu, nor at bookmarks), seems group "X" is not created at all, and tabs are deleted/disappear/lost.

2) Firefox' "about:XXXX" pages are not saved.

3) Empty/blank tabs are not saved.

4) Another possible bug: Every-time a group opens, tabs are opened in inverted order. FP remembers tabs order, but just inverts tab order every-time a group is opened. It is an improvement compared to past FP' version, where tabs were opened in different order (not just inverted order). Now the order is remembered, but is opened in inverse order. For example, if Group "A" has tab 1, tab 2 and tab 3, FP opens tab 3, tab 2 and tab 1. And the next time Group "A" is visited, FP opens tab 1, tab 2, tab 3. Always FP opens in the right order, in the second visit of same group FP inverts order, third visit right order, fourth inverted etc. One right, one inverted. And if I jump from one group to another, while keeping the sidebar open showing bookmarks, I can perfectly see that always FP saves tabs in inverted order. It seems to me that this is the possible bug, exactly when FP closes, always saving in inverted order (that's the reason why when the group is reopened, always tabs are in inverted order).

5) Last active tab per group is remembered by FP (this is perfect!). However, if the last active tab was a pinned tab, FP opens the last active unpinned tab.

6) If pinned tabs is unchecked at FF' options (to not exclude), and if the user has pinned tabs, and he goes to FP' options and changes pinned tabs to exclude, then all pinned tabs become unpinned. Desirable behavior will be to keep the original pinned tabs. In my opinion, "to exclude" pinned tabs at FP' options should means to keep any tab pinned at group "Y", but to hide these pinned tabs when user moves to group "Z". Pinned tabs should remain pinned, they just go hidden when "exclude" is checked, and user changes group.

7) Similar to previous issue "6)" above, if pinned tabs is unchecked at FF' options (to not exclude), and the user has not pinned tabs, but he starts using pinned tabs, and user goes to FP' options and sets pinned tabs to "exclude", then pinned tabs become unpinned.

8) Suggestions:

ANSWERING YOUR QUESTIONS/COMMENTS (following your same order):

Add-on' name: Just another suggestion for you... "TabGroups Manager"... it is a short name, more sticky, and focused on tab groups (not bookmarks).

I haven't seen in this latest FP' version, the issue I saw at previous FP (all saved bookmarks opening at FP' first launch). So, I suggest to forget this now. If it appears again, I will report to you (with details and steps to reproduce it).

I never had a case with the "Leave Page"/"Stay on Page" message, but I tested and saw no problem there. FP worked fantastic, I pressed the Firefox' red "x" close button while writing a post at Facebook, Firefox showed the message, I forced the close, restarted Firefox, and voilà, FP perfectly saved the Facebook' tab before Firefox closing. Fantastic! I tested 4 scenarios, and zero problems, FP always saved the tabs: a) When the "Leave Page"/"Stay on Page" message appeared b) When the group had only one tab c) When the group had lot of tabs d) When all tabs were manually closed. Again, in all the 4 cases, when I pressed the "red close button", after FF' restarting all the tabs were there, even the group was there. It seems to work perfectly! I can't reproduce the case you mentioned. If I'm wrong and you're right, and you still need to delay FF' closing, perhaps the use of a FF' preference can help? What about "asking before closing" (browser.tabs.warnOnCloseOtherTabs) or similar?

Also fantastic the two new options (pinned tabs + unload until select).

With regards to your explanation about "http://127.0.0.2&active=1"... sorry, I don't really understand if there is a problem. I understood your explanation. I saw the "active=1". And also understood your (nice) idea of identifying active tab with icon (pinned & unpinned). However, I'm not sure I understood why all this is needed at all. Previous FP' version is past. Latest FP' version seems to work fine. I don't need to migrate nothing, because I always use a new-Nightly-dummy-test. I'm not doing real-time or real-life tests with my own tabs/bookmarks (I plan to do that just few days before you upload the latest FP' version to AMO). So, each FP' version, for me is a totally new test scenario, no need to migrate nothing, and no fears to lose tabs, bookmarks etc. Now, I don't understand why anyone will need to edit the URL directly in the built-in bookmark manager looking for "active=1" or not. I mean, what is the worst case?: An user changes browser, or computer, or reinstalled FP etc, and "active=1" is changed or lost? That's all? This is the problem? Sorry my limitations here, I need more explanation from your side. If by chance this is the problem, I don't really think this will matter at all. It takes less than 5 second to choose a group, and to select a new active tab. Your 2 icons will be nice, but personally I don't believe this will be relevant info for users (unless I misunderstood your explanation).

I hope I covered everything you asked. If something is not clear from my side, or if I was negligent with your questions, please let me know. And keep counting on me! It is more than a pleasure to help you.

Excellent work @jingyu9575 !

Big hug! : )

PS: Please, allow me to start a list for AMO, enumerating the most important FP' functions and added-values:

EstherMoellman commented 5 years ago

Hi @jingyu9575 ! I hope everything is well with you and yours.

I would like to reconfirm you, that you still count with me for this project. IMO, this is still the best project, and I'm still in love with this project. You already did most of the work, so just need the final touches.

Please, take all the time you need. Whenever you feel ready to continue, please, count with me!

Thanks a lot!

jingyu9575 commented 5 years ago

@EstherMoellman I've been busy these days. You can see there aren't many updates on my other projects either. Hopefully I can get more free time later.

EstherMoellman commented 5 years ago

... please, please @jingyu9575 ... take all the time you need!

The last think I wanted was to push/rush you. Far away from that, my intention was to contact you just to confirm you that "I'm still with you in this project, taking the time it may take, if I can help... count on me". Even if you need to work on your other GitHub' projects etc, and you don't want or can't work on this project, this is perfectly fine!

In brief, when you feel ready to restart this great project... count on me!

Have a nice week! : )

EstherMoellman commented 4 years ago

Hi @jingyu9575 !

I'm writing you here at GitHub because I have not other place to wish you the best of the best for 2020... always thanking you for all your fantastic help during 2019... have a great 2020 to you and yours!

Big hug! : )

jingyu9575 commented 4 years ago

@EstherMoellman Happy new year!

EstherMoellman commented 4 years ago

Hi @jingyu9575 ! I hope all is well with you and yours.

Today I exchanged some messages with @stoically (great guy!), he's the Dev who built TemporaryContainers add-on. And I would like to share with you just one of @stoically ' comments.

In part, @stoically ' comment confirms what I tried to say to you time ago, explaining why "bookmarking/closing" tabs is much better than "hiding/discarding". This also confirms that "hiding/discarding" tabs may create privacy/security/performance issues... and conflicts with Firefox.

Sadly, time is passing, and every new Tab Manager add-on at AMO is still built based on "hiding/discarding". And the ugly "Session-Manager" add-ons are not even being updated, totally abandoned & dead. It's difficult for me to understand why Devs are not using "bookmarking/closing" for their Tab Manager add-ons.

@jingyu9575 , I really hope one day you will be able to finish "our" Tabs-To-Bookmark-Manager" using "bookmarking/closing". Specially because IMO, your first prototype is already 80% ready. A little investment of time may allow you to upload to AMO, the first version with the basic two functions: Bookmarking/Closing. And of course, you know that I'm still here at your disposal, always offering you my help.

Big hug! : )

jingyu9575 commented 4 years ago

@EstherMoellman Bad things are happening on one of my other extensions with 12k users. I was doing emergency workarounds these days. See jingyu9575/multithreaded-download-manager#126, jingyu9575/multithreaded-download-manager#128.

Now those issues are temporarily settled, I've got some time looking into this one. It's been a long time and I can't remember the exact issues, but I think the most severe ones are:

Is there anything I forgot? I think it is better to resolve the most important bugs first so we can get a usable release, then features can be built on it.

EstherMoellman commented 4 years ago

Hi @jingyu9575 ! Thank you for your contact. I'm glad you found an emergency workaround for your MultithreadedDownloadManager. Good job!

With regards to "our" fantastic project "TabsToBookmarkGroups", the most important needed fixes are:

1) Wrong tab order after restoring: Currently groups are always opened in inverse tab order. The needed fix should open tabs always in tab user order.

2) Pinned tabs: Currently pinned tabs are not saved as pinned tabs, so when a group opens, pinned tabs are opened as regular tabs. The needed fix should save the pinned tabs as pinned tabs. The ideal solution will be the creation of an user option, allowing to keep a pinned tab always grouped (closing the pinned tab when its group closes), or allowing to keep a pinned tab always ungrouped (always visible, never closes).

IMHO, if you can fix these two issues... then you'll be able to launch at AMO, the first official version of TabsToBookmarkGroups. These two fixes will make the add-on usable, not perfect, not complete, but totally 100% usable.... because main functions of this add-on are: a) Bookmarking b) Grouping c) Closing/Opening, and these two fixes will allow these 3 functions.

All the other details we were talking months ago, IMHO you can work on them in the future, at your own time, when you want and if you want. I'll will love to see more features included in this add-on. But I agree with you that this may be done along the time. Launching the add-on, working with its 3 core functions, this is now the only goal.

Thank you again and always count on me (I will love this add-on!) Big hug! : )

PS: I haven't seen unsaved groups on exiting.

jingyu9575 commented 4 years ago

the most important needed fixes are ...

I agree. This issue is getting too long to navigate. I'll close it and create new issues for individual tasks.