Vertical Tabs

This is extended version of my Simple Vertical Tabs extension.You can categorize your tabs in groups, suspend groups, multiple select tabs with shift and control keys, drag and drop them at once.

Tips and tricks:- If you loose groups, don't worry, go to options and load last auto backup, but you have to hurry, because new backup will overwrite previous groups in 10 minutes!- To create a new group press little + icon, or drag some tabs directly to it and dragged tabs will be moved to newly created group.- When you drag tabs to + icon, the newly created group will try to get color from the favicon of the first dragged tab.- To add tabs to group, drag and drop to group on the left.- To remove tabs from group, drop tabs between + icon and first group.

- If there is empty space on tab list or pin list, double click to create a new tab.- Use Ctrl key and click on tabs to toggle selection.- Use Shift key and click to select tabs from the active to the clicked tab.- Hoover over tabs or pinned tabs, and press Ctrl+a to select all tabs.- Hoover over tabs or pinned tabs, and press Ctrl+i to invert selection.

- Remove group does not close the tabs, it moves them to uncategorized group, there is a separate option in menu for that.- To remove group with its tabs, press shift and click on the group, but you must be sure that sidebar is active, just click on anything in sidebar before doing this.

- To rename group, you can double click on groups labels, or select "Rename" from group menu.- To scroll to your search result click on arrows beside the searchbox. It will scroll to the first found tab.

- To de-select tabs click on empty space below tabs or beside pinned tabs, or eventually select all tabs with ctrl+a and invert selection with ctrl+i.

Current version (0)

Previous versions (26)

Hello, thank you for this wonderful extensions. One of the few reasons I chose to move to Opera back in the day.

As the people below have noted, I'd like to confirm that the following issues started appearing after Opera's latest updates.

1. I'm no longer able to get the context menu by right-clicking on a group. Hence, no way to change group name or color2. When I right-click on a tab and hover over the "Move to group:" option it doesn't list the existing groups for me to choose from like it used to.3. One tiny suggestion: currently, left-clicking on "Move to group:" closes the context menu. It would be cool if it resulted in group list sub menu being open instead.

1,2 are fixed, but for some reason it still hasn't been reviewed. I have submitted new version more than a month ago, but it still says "Vertical Tabs v1.8.8 was submitted. Awaiting moderation." in my addon's panel...3. You mean you want that group to be activated. Ok I will change that when I have time.

When using this extension together with Tab Suspender I see 'Loading...' instead of the title for suspended tabs. I just installed Tab Suspender, so not sure if it's specific to the current version. When I reload Vertical Tabs then only icons appear, no 'Loading...'.Please let me know if you need more information.

updated, but now it's up to Opera moderators to update it here on the website. My other extension (Tree Tabs) is waiting for review since May of this year, with no response from admins. I'm worried it will be the same with this one :(

I'm not sure what the issue might be. I can do a periodic check if some tabs mismatch, and update/add/remove accordingly so all would work. Unfortunately I'm quite busy with tree tabs right now, so I can't fix it now. For now reloading sidebar should reload tabs. Remove non existing anymore and so on. Sorry about that.

stewunknown says:

Nov. 1, 2017

I am having the same issue, it is pretty disturbing, since i cannot 'trust' the extension to show my current tabs

I still can't find a proper fix for this issue.For example for me, it often happens if there is an update and I have opera://about/ open and when I restart opera from there.The other thing is that extension cannot be disabled in extensions page, I'm not talking about hiding sidebar, but about entire extension, because when my extension is disabled, it can't keep track of tabs and after restart, tabs data is lost. It must retain data in background page.As for you losing other websites settings, I have no idea what it can be, but I don't see correlation with my extension.

It's because you have older Opera. I think it was in Opera 43 or latest 44, they changed size to 16px. Do you have any particular reason to stick with older Opera? And funny fact is that in manifest.json it must sit under "default_icon": {"19": "16.png"} which is annoying.Problem is that I can't give 19px for newer Opera, since it gets blurry too. Not pixelated, which could work, but blurry just like you have it here!

EDITED

cvvar00 says:

April 28, 2017

I use 42 version (at 43, 44 for linux there is a bug in the interface). In the 45 version corrected, I'm waiting for a stable))). Thank you

kroppy says:

April 28, 2017

Ok, that's good to know. Too bad we can't make versions for specific Opera's builds, so yeah hang in there with me for a little more.Thank you for the report.

cvvar00 says:

April 28, 2017

Another thing: similarly for 38.png you need to make 24px (after installing the extension, the icon in the alert in the sidebar is also blurred)

Oh! It should, may be indeed something with OS setting, it should accept input encoding automatically... Does other extensions show same problem with titles? For example V7 tabs? Can you post me a link to one page?

Most of the time it doesn't allow me to type anything into the "Search Tabs" box - accessed via the 'magnifying glass' symbol on the Vertical Tabs toolbar. The few times it has let me enter a search term, it didn't seem to return any results.

Also, it isn't clear which tabs it would search - i.e. all open tabs in all Opera windows, or only the tabs in the current window? And it also isn't clear if it's supposed to search content on each tab or just the name or url of each tab...

It seems that there still is the bug with "tab activation".Not sure if it is the same thing as in change log, but in 1.8.0 (and now in 1.8.1) I faced with "stuck" tabs. It's impossible to activate or close them from sidebar. The only way to get rid of them is to switch to any other sidebar extension and then back.

It seems it also happens in Simple Vertical Tabs (Some changes in Opera itself?). And there is a chance to get invisible tab, that exists but not present in (Simple) Vertical Tabs.

Can you describe steps to reproduce? Maybe I will do a periodic check if some tabs disappeared or appeared and listeners did not catch up...

kroppy says:

Dec. 11, 2016

You are my best bug reporter so far :) Thank you :)

killymxi says:

Dec. 11, 2016

:)

It seems now that it usually happens with facebook.

In Simple Vertical Tabs:* open new tab (Speed Dial);* open facebook.Facebook page opens, but the corresponding tab vanishes from Simple Vertical Tabs, like it was closed.

In Vertical Tabs:* open new tab (Speed Dial);* open facebook.Facebook page opens, but the corresponding tab in Vertical Tabs still says "Speed Dial", and ignores any user interaction. You can switch to any other tab, but selecting this tab again does nothing, as well as close button or any context menu item.

Another case:* open new tab (Speed Dial);* open facebook;* switch to any other sidebar extension and back to Vertical Tabs - now this tab is reachable;* now close this tab.Although it is actually closed, it stays in the list and does nothing.

kroppy says:

Dec. 12, 2016

Good, I tested it and... hmmm, I don't know why but I can't reproduce none of the above... Do you open facebook from the speed dial page? Or from bookmarks? Does it happen on different pages? If you can reproduce it every single time maybe you have some extension that can cause it... Can you list me extensions you have? Maybe we can nail it to something so I can try to reproduce the bug.Thanks :)

kroppy says:

Dec. 12, 2016

Ah ok, you said "usually on facebook", so it happens on others sites too I guess. As for bug in 1.8.0 was with dropping pinned tabs to group. Tabs were unpinned, but were on the wrong list. Happily I fixed it fast, so bug was there only for 2 days.Anyway you can try to disable all other extensions one by one and try to reproduce the bug each time, but you can just list me your extensions so I can try that for you.

killymxi says:

Dec. 12, 2016

How I'm opening facebook - speed dial, type in first letters in address bar and use autocompletion, enter.

Tried to disable extensions with no success.

My best guess - something related to open/close animation. I will be able to check that once it will actually be possible to disable animation (see comment below). It isn't explaining what's wrong with Simple Vertical Tabs though.

killymxi says:

Dec. 12, 2016

Also checked if VT and SVT interfere with each other. No, disabling either one of them didn't solve an issue with other.

kroppy says:

Dec. 12, 2016

They shouldn't interfere with each other, so I'm not sure what's up.

kroppy says:

Dec. 19, 2016

Were you able to discover what is going on with this particular issue? I cant reproduce it :( I tried on different computers and nothing...

killymxi says:

Dec. 19, 2016

No luck here so far.I've noticed some correlation with Violentmonkey user scripts usage, but that's not solid yet.

kroppy says:

Dec. 19, 2016

Ok, thanks. Report if you find out some more.

kroppy says:

Dec. 29, 2016

I think I've found the case for the ghost tabs. It is related to new Opera, something changed in "chrome.tabs.onReplaced" event, now new replaced tab returns same id as the one that is being removed. Before it always returned 2 ids, one of the new tab, and other id of the tab that was being replaced. In new Opera id stays the same which can cause duplicated tab, and since there are 2 tabs with same id, my extension don't knows what to do with that situation and setups favicon to the original tab and then idiotically removes it, but the new "duplicated" tab remains blank without title and with blank icon. I will release a fix soon. I will be checking now if id is the same and if so, I will refresh favicon, index and title. Hopefully it will solve the issue.

killymxi says:

Dec. 31, 2016

Good news.But I should also note that this issue isn't reproducing for me for a while now.Either devs returned the old behaviour or it happens only in some conditions.In any case, it's better to be aware of such thing.

kroppy says:

Dec. 31, 2016

Yup, it happens "once i a while". Something specific must happen for the tab to be replaced. I noticed it when trying out my extension in Vivaldi with tabs discarding. When tab is discarded it's replaced with a tab with same id (but unloaded), that is when it happens. Same thing happens when I replace tab myself in Opera, so this is a new behavior in latest Chrome. So when Opera will introduce discarding it will happen with every single discarded tab. I have a patch ready and I will upload it in few days after some cleanup. By the way, if you are interested in Vivaldi, I will post how to run my extension on their forum (there is a lot of things that does not work though).

Best wishes for a new year :)

killymxi says:

Dec. 31, 2016

Haha. Once I've said that, I got this issue again.

I have Vivaldi as a second browser. And sidebar extensions is probably the most significant thing for me that it's lacking. If there is some workaround, I'll look into that.

Thanks. Happy new year :)

kroppy says:

Jan. 2, 2017

Update passed review. So if you, by any chance, still encounter this problem, please report me back. It would mean that there is something more to this.As for Vivaldi I can't login to the forum... I don't know why.But If you are interested I can describe here how you can run my extension in Vivaldi's web panel.

killymxi says:

Jan. 3, 2017

The issue is still happening from time to time. Maybe less frequent than before.

kroppy says:

Jan. 5, 2017

Oh no.... It should be ok now, but it still happens? Sorry for late response, I had no time recently. I will try to make some periodical check-ups for duplicated or orphan tabs, maybe this way I will be able to fix the problem.As for Vivaldi, here are the instructions how to install it.https://forum.vivaldi.net/topic/13261/vertical-tabs-extension-from-operaCheers.

lyxia says:

June 16, 2017

I am having this issue regularly, but don't know steps to reproduce it yet. This is the only extension I use (thank you for this!).

hmmmm... yes I think I know why and I will have to prevent that when detaching. This is because of new options, for now go to settings of the sidebar and chose one from the options beside the "When active tab was closed" select any other than "let Opera decide".I'm not 100% if it will keep you in group when you detach. I will check it out right now.

killymxi says:

Dec. 11, 2016

"Go back to the last active tab" was selected.It was "Classic Tabs" extension that was interfering in this case and caused the jump. Tried to turn it off and it worked out as expected.(Currently I'm using it just to open every tab next to active, including Speed Dial.)

kroppy says:

Dec. 12, 2016

I made an option for that as well hehe... There is a checkbox "open new tabs below active"

killymxi says:

Dec. 12, 2016

Missed that :)But now I'm trying to check it but it stays unchecked after reopening settings. And it isn't working.

killymxi says:

Dec. 12, 2016

At the same time, "animate opening and closing tabs" can not be deactivated.

kroppy says:

Dec. 12, 2016

Sorry for late response, I was busy.Tested and all options work here. Which leads me to your localstorage being broken... But reinstalled and... well I see some nasty problems :(Toolbar is not showing and some options are missing.It will be a long week to hunt for bugs :(

kroppy says:

Dec. 17, 2016

Ok, missing tollbar is fixed. But all options work here on all computers I have at hand... I can't find a way to reproduce your bug. Can you post me your localstorage file? Unless you don't want to reveal suspended groups, only those are readable, all the rest is in form of a hash. If you are on windows it should be:C:\Users\%USERNAME%\AppData\Roaming\Opera Software\Opera Stable\Local Storage\eknjllkeehiiakhmgjjdoempaocgemkg.localstorage

killymxi says:

Dec. 19, 2016

Oh! Stupid me. I'm so used to autosaved settings, I forgot about "Apply" and "Reset" buttons.It seems that reset is solved my issue with settings not being saved.

But I also noticed that closing currently active tab is still being animated, despite unchecked option.

kroppy says:

Dec. 19, 2016

Oh gosh! Glad to hear that :) I was literally pulling my hair out lol!For animation, is it only on active tab or on all tabs?I've put back a little delay, but it should not animate. Since I have to activate different tab before closing, otherwise Opera would activate something I don't want, for example a tab in a different group. Nonetheless I will investigate it.Thanks for the report :)

killymxi says:

Dec. 19, 2016

Hmm. Can't reproduce anymore.Only for active tab it was like this for a while, but now it works as it should.

Check out the new feature from Vivaldi browser:Same domain tabs selection.I believe it could be made simplier and easier for discovery, like having context menu item somewhere (at the momnent they have Ctrl + double click).But it seems very usefull in conjunction with tab groups.

Possible alternative (and more flexible in some sense) is to make possible to use search field as filter. This, too, will allow to find all related tabs quickly.

I'm not sure what exactly "the great tab suspender" does, but other "tab suspender" (with a yellow broom icon) works fine and is updated more frequently. I don't have enough time to fix compatibility with all of them. Sorry :(

Doesn't work. After installation and browser restart, all tabs continue to appear above the main window, not in a vertical column. Even clicking the plus in this extension creates a new tab in the old location.

Do you have sidebar turned on? Press Ctrl+Shift+S and turn on my extension (red icon with white strips).In chrome based browsers extensions cannot modify GUI, so it's impossible to remove tabs from the top. Displaying extension in a sidebar is maximum what we can do in Opera. Sorry, if you had high expectations, but it cannot be done. Pledge Opera developers to allow us (extensions developers) to hide "tabs strip", like in firefox. My extension creates a "webpage" that contains tabs list and commands browser to do operations on them. Like moving them around, close, activate, open and such. In Chrome/Chromium/Slimjet/SWRIron/Superbird/Vivaldi and other Chromium based browsers, this webpage can be displayed only in a popup or a separated window, but Opera was kind enough to allow us to put it in a sidebar.Hope that explains a little.

Somehow, the UI for this extension broke down on my install. Today, I think (I use too many browsers).

Opera 40.0.2308.62Windows 10.0.14393

Where is the backup file, so that I can save my tabs and try reinstalling the extension? Probably past the 10 or 30 minutes, but the bug could be UI only and the tabs still there (in suspended groups).

can you describe what happens with the gui? for now i can't help with storage file, since I'm not at home, I will tell you which file to copy when I'm back in 10 hours. For now try to go to options of vertical tabs (right click on vertical tabs icon and click on options in menu), then on the bottom there is reset button, try it first and report back.

kroppy says:

Sept. 27, 2016

I forgot to mention, it resets the toolbar and other options, but groups are safe. So don't worry

o8h7w says:

Sept. 28, 2016

Thanks for the fast response!

Reset did not help... is what I was about to write, but now the problem is gone. Maybe resetting the extension took considerably more time than the reloading of the settings page, which I first took as a hint that it was done.

What happened was that all GUI elements within the Vertical Tabs sidebar disappeared, left was one search box with hint "Search tabs" and another input box the same size but without the hint. I have a screenshot, but don't know how to get it to you. My V7 Bookmarks sidebar was fine.

kroppy says:

Sept. 28, 2016

ah, that's ok. It means that background script was not responding... I was thinking, maybe I should do some loading circle or something. Maybe clickable to reload background script if it hangs or something.

o8h7w says:

Sept. 28, 2016

I don't know the system, nor do I know JavaScript yet, otherwise I'd help you out. But a background script not responding... if it had been at max CPU usage, I would have noticed, as it did take several minutes. Perhaps it was waiting for my drive, which is inexplicably slow at times. If there was a loading circle to click I would've clicked it, and now it turned out that was not needed. Hmm... (scratching my beard)

kroppy says:

Oct. 3, 2016

I will be rolling out an update in few days, I did some optimizations to reduce frequency in saving and size of the local storage. Slow downs, especially at startup, might be caused by big changes in tabs count and order if the extension was disabled when changes were made. Since last few versions I'm "observing" each tabID and index, all tabs are then saved after few seconds, now I save all tabs not only those from groups, it is necessary to catch correct tabID after browser's restart, I need it for further features I will be implementing in the next few months. Like tabs color, title and other. I started working on a tree tabs, but I think I will release it as a separate "experimental" extension to avoid bugs in this one, but I don't promise anything yet.

Sorry for late response I was on holidays. I will do some tests when I have time (not tomorrow). You said it happened with a browser update (again), I hope Opera is not touching localstorage when updating. That would be just dumb... And no there is no limit of tabs nor groups, I have currently 1149 tabs with no problem. But I have observed one crash when there was an update, I had to re-enable extension. I couldn't find the cause tho.

kroppy says:

July 16, 2016

Now I see, with update to Opera 38.0.2220.41, something changes in localstorage, and data gets corrupted and I have no idea why. My groups are now gone too :/

kroppy says:

July 22, 2016

I have found probable cause of the problem, I've uploaded a fix already, but it's in queue to be released.

killymxi says:

Aug. 2, 2016

Interesting.It was able to withstand one restart with Opera update without losing groups.But (almost) all tabs now in reverse order (something that was in the end of list now on top of the list and vice versa).

kroppy says:

Aug. 2, 2016

Wow, that is strange! Did that happen in the last developer version? I will have to check that version too!

kroppy says:

Aug. 2, 2016

I started to work on a backup system for situations like this. Since it happens often since last few Opera versions.

kroppy says:

Aug. 2, 2016

For now I did a basic auto backup system, it saves everything every 30 minutes, if you happen to loose groups after restart, go quickly to vertical tabs options and press "Load last auto saved backup", but remember you only have 29 minutes before last backup will be overwritten.I will do a proper backup button sometime soon.

killymxi says:

Aug. 9, 2016

With 1.6.9, after recent browser update, groups got lost.Recovered with button in options.Just for info.

kroppy says:

Aug. 9, 2016

Ok, so auto recover system does not work, but at least recover button did work.

I have no idea why this happens, I checked storage file after one of updates and file had only 2 objects from tabs blob. it looks like browser is killing extension's process while it is still writing to hdd. It started happening with Opera 38 :(

I have some work to do this week and I wont be able to test autorecovering so bare with 1.6.9 and manual recover for a little bit longer.

killymxi says:

Aug. 26, 2016

I can confirm that groups recovery now seems to work.

kroppy says:

Aug. 27, 2016

Ok. In any case if something happens, please report as usual. Thanks

killymxi says:

Nov. 5, 2016

Vertical tabs 1.7.6Opera updated to 42.0.2392.0 during restart.All the groups information was lost again.And "Load last backup" button did nothing this time.

1.7.8Restart with update to 43.0.2423.0 - groups are empty once again.Recovery button - either I missed the timeframe when it should work, or it didn't work this time.

Moved some tabs to groups, restarted Opera one more time - tabs are fine in their groups this time.

kroppy says:

Nov. 30, 2016

Happened to me as well. I'm working now on another way to save data.It will take me some time tho.

kroppy says:

Nov. 30, 2016

I probably know why it happens, Chrome has #enable-fast-unload flag which kills tabs on some events, like update or so. But I can't see it in Opera. I'm sure it's there now by default since a while, but can't find it in Opera. I would try to turn it off, if the flag was there. Nonetheless, data gets truncated when update happens and this is the only thing that looks like could cause it.

When I have a new Window, the group which's not belongs to that windows shown and shows 0, I'm expected that group is hidden anyway from that window since it's not belong to that window, can you fix it anyway? Because when I suspend it, the group become 0 anyway even on the origin window. Thanks

I am aware of the issue. Keyup event is never fired when any other key is still pressed, and I don't know why. For that reason I made it to reset pressed keys when you take mouse cursor out of the sidebar. I will poke around a bit more to see if I can fix that somehow, or change the logic a bit.

Tab order is synchronized with the browser across all groups. Because of how it's implemented right now, this is the only way to keep order between sessions. When you drop tabs to another group all dragged tabs are moved to the end of the browser's tabs strip. I may think how to change it in the future but not now.

Random color for new group should not be completely random. It should be contrast enough with white letters.

It isn't clear when group label is in renaming state - there is no visual signs of that before you start typing. Cursor is set to the beginning of group name. Expected behaviour is to show white background and select the name, so when I start typing - it will be replaced.

Desirable feature - show some kind of dialogue for tab creation and editing, with name field and color selection.

I have no control over cursor and its position, it's from system. So I will think about a dialog in the future. Now I have some other bugs to polish out.

killymxi says:

April 8, 2016

Full name selection implemented. Thanks.

kroppy says:

April 8, 2016

I did what I could. When I have some more time I will see if I can do a little popup with name and color.

killymxi says:

June 20, 2016

Popup dialogue implemented. Thanks.

Next step is to implement better default colors (i.e. text on new groups should be contrast enough straight after group creation).

You can generate random color in HSV or HSL color space with limitations on one or two parameters. Or at least you can decide on black or white text color after checking the lightness of background color.

kroppy says:

June 22, 2016

And actually my brother was asking me if I could do that some time ago. So yes it`s on my to do list

Looks like a bug / unwanted behaviour: when I switch from "all tabs" to "uncategorized", it jumps to first tab instead of keeping me on the tab I was before (this tab is uncategorized so it's present in list).

It closes tabs that are contained in that group and after that, group is closed and saved. All suspended groups are on the bottom of the menu.

killymxi says:

March 29, 2016

I see no suspended groups at the bottom of menu. They are just gone after using this command.

kroppy says:

March 29, 2016

If you don't mind, can you suspend some groups and send me storage file from your profile for inspection? It should be C:\Users\Your User Name\AppData\Roaming\Opera Software\Opera Stable\Local Storage\chrome-extension_eknjllkeehiiakhmgjjdoempaocgemkg_0.localstorage

kroppy says:

March 29, 2016

Other thing you can try; Backup that file, try to delete it and recheck if the problem persists. But remember, by doing so all groups will be lost, you can eventually bookmark all groups one by one instead of backing up storage file... Let me know.

killymxi says:

March 29, 2016

Deleted file - problem persists after this.

Saved two file copies - before and after test group suspension.I had to remove all irrelevant tabs information from them to be able to share them (used http://sqlitebrowser.org/ to do that).Here is the archive with files: http://expirebox.com/download/60f28d40bae4eb6b69d3a87bfcd24104.html

kroppy says:

March 29, 2016

Thanks, I will look into this. For now don't use it until I find what can cause it.

kroppy says:

March 29, 2016

Ok, looks like suspended groups are not saved at all, both files have same size. The issue might be encoding, do your groups have UTF8 letters? For example Chinese, Japanese kanji, arabic, cyrilic and so on? I will look into it a bit more, since groups and suspended groups names are saved in the same manner, and it should work...

kroppy says:

March 29, 2016

Ok, I see "test1" there with duckduckgo in "after" file which is a good sign.

kroppy says:

March 29, 2016

Tested and your file works fine. Can you do one more test for me? Close browser and delete that file completely. And retry again. The thing is that extension keeps settings in memory, so if you had corrupted file it will restore itself. If it does not work let me know. I hope it does. Anyway do you have sync turned on? Or maybe there are some other factors like OS.

killymxi says:

March 30, 2016

This is how I've actually done it before sending - closed browser and deleted previous file. "test1" group was the only one I created in new file.

Sync is turned on for tabs and bookmarks.Reproduced on another PC (both have Windows 8.1).Opera 37.0.2171.0 developer on both PCs.

As for encoding: for me it looks like data stored not in utf8 but in two-byte encoding. Check with sqlite- or hex-editor.

(Interesting thing I've just discovered: when I edited tabs table, sqlitebrowser inserted more null bytes there, so in my files that blob looks like not 2 but 4 bytes per character. It's surprising they're work fine after that.)

kroppy says:

March 30, 2016

I use JSON.stringify and it is supposed to handle the encoding automatically when you type in the labels, but it looks like it's not the case... I think I will have to specify encoding, preferably to UTF16 for worst case scenarios... Thanks for the report.