diff --git a/..TODO/TODO.txt b/..TODO/TODO.txt
index 4e2bdfd..e62b767 100644
--- a/..TODO/TODO.txt
+++ b/..TODO/TODO.txt
@@ -1,49 +1,71 @@
-TOP PRIORITY:
-Add a shortcut to open tree tabs sidebar
undo close to restore trees (will work ONLY in firefox)
-
-
-
-Loading data using message
-
Close tab on Middle mouse click and not On Middle mouse down
-
Split Pin size in theme
+add groups scrolling arrows
add textbox for ungrouped name in options
-
-
-
-
-
-LOW PRIORITY:
-
option for scrollbar on the left
-folders
-
unread state?
-menu: collapse entire tree
-menu: expand tree
menu: copy urls of the selected tabs
menu: bookmark selected tabs/tree
menu: select all
menu: invert selection
menu: close above/close below
-
-options: Customising the context menu
+menu: Customising the context menu
+menu: move to group
+menu: Unload other
click on active to return to previous tab
-
sort tabs/tree
-
maybe filter tabs on search
+make tabs border width configurable, including size 0
+make tab spacing configurable, including 0 size
-make tabs border width configurable, including size 0
+font size
+hibernate group
-make tab spacing confiogurable, including 0 size
\ No newline at end of file
+double click on tab actions selection like double click to be able to expand child tab.
+ I want you to be able to display the tab number count on the right end
+customizable menu
+
+import session to unload tabs immediately
+bind groups to FF containers
+
+Unread Tabs Color/Style
+Give back group color (like it was before)
+
+
+- When a pinned tab refreshes, it constantly blinks red. Suggest changing that to match Firefox's solid little blue indicator. It's less eye-catching (annoying) and more consistent.
+
+folders collapsed by default or make this optional
+
+
+when actived tab located in folder, all tabs operation related with creating new tab (such as clone of tab in folder, new tab) must work only in current folder.
+
+New tab in selected folder!
+
+
+separate option for close folder (close or promote children)
+menu: unload tabs in folders
+
+menu: unload tabs must close real FF tabs, but your tabs must markeds like unloads and stay in list.
+
+Also all your tabs you can save in special folder of FF bookmarks and working from this place, where subdirs first level = groups for tab in left... Option for set base bookmark dir for addon can add to addon config.
+
+Whilst themes are apparently available, i couldn't just grab one via a drop-down which would make it easier.
+Accept BCH (BitcoinCash) donations as the FEES make it FAR more palatable to donate (a few cents vs a few dollars). I bet you're missing out on plenty of micro donations because Bitcoin fees are so high it's no longer micro, and ETH is too high too (though not as bad).
+
+- I also support the suggestion of integrating Tree Tabs with Firefox sync. I definitely would have a great use for this possibility.
+- Like many other commenters suggested, it would be wonderful to see some indication of the container a tab was opened in, if any. Getting an option to directly be able to chose to open a new tab in a container would also be very useful.
+
+
+I don't understand those from comments
+- add possibility open all tabs in folder in new left tab group with deleting this folder;
+- for economy memory your tabs must to makings (html code) during activating left tab group or during unfold folders/trees;
+- real FF tabs must creating and linking only after activate your tabs;
\ No newline at end of file
diff --git a/..Themes/Light and blue (by Guibuu).tt_theme b/..Themes/Light and blue (by Guibuu).tt_theme
new file mode 100644
index 0000000..47d2b07
--- /dev/null
+++ b/..Themes/Light and blue (by Guibuu).tt_theme
@@ -0,0 +1 @@
+{"ToolbarShow":false,"ColorsSet":{"tab_border":"#fafafa","tab_hover_border":"#d7d7d7","tab_discarded_hover_border":"#d7d7d7","tab_discarded_border":"#fafafa","tabs_menu_hover_border":"#d7d7d7","tabs_menu_hover_background":"#d7d7d7","close_hover_border":"#939394","tab_selected_border":"#70c0e7","tab_selected_hover_border":"#70c0e7","tab_active_border":"#70c0e7","tab_discarded_background":"#fafafa","tab_background":"#fafafa","tab_discarded_title_font_color":"#353535","tab_discarded_hover_title_font_color":"#353535","tab_selected_discarded_title_font_color":"#353535","tab_selected_discarded_hover_title_font_color":"#353535","tab_title_font_color":"#353535","tab_hover_title_font_color":"#353535","tab_selected_title_font_color":"#353535","tab_selected_hover_title_font_color":"#353535","tab_active_title_font_color":"#353535","tab_active_hover_title_font_color":"#353535","tab_active_selected_title_font_color":"#353535","tab_selected_active_hover_title_font_color":"#353535","tab_filtered_title_font_color":"#353535","tab_filtered_hover_title_font_color":"#353535","tab_filtered_active_title_font_color":"#353535","tab_filtered_active_hover_title_font_color":"#353535","tab_filtered_selected_title_font_color":"#353535","tab_filtered_selected_hover_title_font_color":"#353535","tab_filtered_selected_active_title_font_color":"#353535","tab_filtered_selected_active_hover_title_font_color":"#353535","tab_filtered_highlighted_search_title_font_color":"#353535","tab_filtered_highlighted_search_hover_title_font_color":"#353535","tab_filtered_active_highlighted_search_title_font_color":"#353535","tab_filtered_active_highlighted_search_hover_title_font_color":"#353535","tab_filtered_selected_highlighted_search_title_font_color":"#353535","tab_filtered_selected_highlighted_search_hover_title_font_color":"#353535","tab_filtered_selected_active_highlighted_search_title_font_color":"#353535","tab_filtered_selected_active_highlighted_search_hover_title_font_color":"#353535","tab_filtered_background":"#f8ea45","tab_filtered_active_background":"#f8ea45","tab_filtered_selected_background":"#b4e817","tab_filtered_selected_hover_background":"#96c113","tab_filtered_selected_active_background":"#b4e817","tab_filtered_selected_active_hover_background":"#96c113","tab_filtered_selected_hover_border":"#96c113","tab_filtered_selected_active_hover_border":"#96c113","tab_filtered_selected_border":"#b4e817","tab_filtered_selected_active_border":"#b4e817","tab_filtered_border":"#f8ea45","tab_filtered_active_border":"#f8ea45","tab_filtered_hover_border":"#d2cb00","tab_filtered_active_hover_border":"#d2cb00","tab_filtered_highlighted_search_background":"#ffa500","tab_filtered_highlighted_search_border":"#ffa500","tab_filtered_active_highlighted_search_border":"#ffa500","tab_filtered_active_highlighted_search_background":"#ffa500","tab_filtered_selected_highlighted_search_background":"#ffa500","tab_filtered_selected_highlighted_search_border":"#ffa500","tab_filtered_selected_active_highlighted_search_background":"#ffa500","tab_filtered_selected_active_highlighted_search_border":"#ffa500","tab_filtered_highlighted_search_hover_background":"#d78b00","tab_filtered_highlighted_search_hover_border":"#d78b00","tab_filtered_active_highlighted_search_hover_background":"#d78b00","tab_filtered_active_highlighted_search_hover_border":"#d78b00","tab_filtered_selected_highlighted_search_hover_background":"#d78b00","tab_filtered_selected_highlighted_search_hover_border":"#d78b00","tab_filtered_selected_active_highlighted_search_hover_background":"#d78b00","tab_filtered_selected_active_highlighted_search_hover_border":"#d78b00","children_padding_left":"8px","tab_list_background":"#fafafa"},"TabsSizeSetNumber":2,"theme_name":"Light and blue (by Guibuu)","theme_version":2,"toolbar":"
","unused_buttons":""}
\ No newline at end of file
diff --git a/..Themes/dark flat with colors by kroppy.tt_theme b/..Themes/dark flat with colors by kroppy.tt_theme
new file mode 100644
index 0000000..10ed3bc
--- /dev/null
+++ b/..Themes/dark flat with colors by kroppy.tt_theme
@@ -0,0 +1 @@
+{"ColorsSet":{"active_font_weight":"normal","attention_background":"#cf4010","attention_border":"#cf4010","button_background":"#484848","button_border":"#484848","button_hover_background":"#292929","button_hover_border":"#353535","button_icons":"#9e9e9e","button_icons_hover":"#9e9e9e","children_padding_left":"11px","close_hover_background":"#939394","close_hover_border":"#757676","close_hover_x":"#fbfcfe","close_x":"#dddddd","drag_indicator":"#d1d1d1","expand_closed_background":"#818181","expand_closed_border":"#818181","expand_lines":"#9d9d9d","expand_open_background":"#339bf3","expand_open_border":"#339bf3","filter_box_background":"#3c3c3c","filter_box_border":"#616161","filter_box_font":"#adadad","filter_clear_icon":"#adadad","group_list_background":"#3c3c3c","group_list_borders":"#616161","group_list_button_hover_background":"#292929","group_list_default_font_color":"#b1b1b1","pin_list_background":"#3b3b3b","pin_list_border_bottom":"#616161","scrollbar_height":"11px","scrollbar_thumb":"#484848","scrollbar_thumb_hover":"#353535","scrollbar_track":"#3b3b3b","scrollbar_width":"12px","tab_active_background":"#d8751b","tab_active_border":"#d8751b","tab_active_hover_background":"#b86316","tab_active_hover_border":"#b86316","tab_active_hover_title_font_color":"#e8e8e8","tab_active_hover_title_font_weight":"bold","tab_active_selected_background":"#3f7ebe","tab_active_selected_border":"#3f7ebe","tab_active_selected_title_font_color":"#e8e8e8","tab_active_selected_title_font_weight":"bold","tab_active_title_font_color":"#e8e8e8","tab_active_title_font_weight":"bold","tab_background":"#3b3b3b","tab_border":"#3b3b3b","tab_discarded_background":"#3b3b3b","tab_discarded_border":"#3b3b3b","tab_discarded_hover_background":"#292929","tab_discarded_hover_border":"#292929","tab_discarded_hover_title_font_color":"#646464","tab_discarded_title_font_color":"#646464","tab_filtered":"#827e00","tab_filtered_active_border":"#d2cb00","tab_filtered_active_highlighted_search_border":"#ed9900","tab_filtered_active_highlighted_search_hover_border":"#c68100","tab_filtered_active_hover_border":"#d2cb00","tab_filtered_active_hover_title_font_color":"#000000","tab_filtered_active_hover_title_font_weight":"bold","tab_filtered_active_title_font_color":"#000000","tab_filtered_active_title_font_weight":"bold","tab_filtered_border":"#e8e000","tab_filtered_highlighted":"#b37400","tab_filtered_highlighted_search_border":"#ed9900","tab_filtered_highlighted_search_hover_border":"#c68100","tab_filtered_hover_border":"#d2cb00","tab_filtered_selected":"#0f8079","tab_filtered_selected_active":"#1299a9","tab_filtered_selected_active_border":"#0f8079","tab_filtered_selected_active_highlighted_search_border":"#ed9900","tab_filtered_selected_active_highlighted_search_hover_background":"#c68100","tab_filtered_selected_active_highlighted_search_hover_border":"#c68100","tab_filtered_selected_active_hover_border":"#0d6d67","tab_filtered_selected_active_hover_title_font_color":"#cfcfcf","tab_filtered_selected_active_hover_title_font_weight":"normal","tab_filtered_selected_active_title_font_color":"#cfcfcf","tab_filtered_selected_active_title_font_weight":"normal","tab_filtered_selected_border":"#0f8079","tab_filtered_selected_highlighted_search_border":"#ed9900","tab_filtered_selected_highlighted_search_hover_border":"#c68100","tab_filtered_selected_hover_border":"#0d6d67","tab_header_border_radius":"0px","tab_hover_background":"#292929","tab_hover_border":"#292929","tab_hover_title_font_color":"#9f9f9f","tab_hover_title_font_weight":"normal","tab_list_background":"#3b3b3b","tab_selected_active_hover_background":"#356a9f","tab_selected_active_hover_border":"#356a9f","tab_selected_active_hover_title_font_color":"#e8e8e8","tab_selected_active_hover_title_font_weight":"bold","tab_selected_background":"#3f7ebe","tab_selected_border":"#3f7ebe","tab_selected_discarded_background":"#3f7ebe","tab_selected_discarded_border":"#3f7ebe","tab_selected_discarded_hover_background":"#356a9f","tab_selected_discarded_hover_border":"#356a9f","tab_selected_discarded_hover_title_font_color":"#3f3f3f","tab_selected_discarded_title_font_color":"#3f3f3f","tab_selected_hover_background":"#356a9f","tab_selected_hover_border":"#356a9f","tab_selected_hover_title_font_color":"#c7c7c7","tab_selected_hover_title_font_weight":"normal","tab_selected_title_font_color":"#c1c1c1","tab_selected_title_font_weight":"normal","tab_title":"#adadad","tab_title_active":"#cacaca","tab_title_discarded":"#7e7e7e","tab_title_font_color":"#9f9f9f","tab_title_font_style":"normal","tab_title_font_weight":"normal","tabs_menu_background":"#484848","tabs_menu_border":"#616161","tabs_menu_font":"#bfbfbf","tabs_menu_hover_background":"#292929","tabs_menu_hover_border":"#353535","tabs_menu_separator":"#616161","toolbar_background":"#484848","toolbar_border_bottom":"#616161"},"TabsMargins":"1","TabsSizeSetNumber":2,"ToolbarShow":true,"theme_name":"dark flat with colors by kroppy","theme_version":3,"toolbar":"","unused_buttons":""}
\ No newline at end of file
diff --git a/..Themes/legacy2 by luetage.tt_theme b/..Themes/legacy2 by luetage.tt_theme
new file mode 100644
index 0000000..ea339a2
--- /dev/null
+++ b/..Themes/legacy2 by luetage.tt_theme
@@ -0,0 +1 @@
+{"ToolbarShow":true,"ColorsSet":{"scrollbar_thumb":"#c4c4c4","scrollbar_thumb_hover":"#787878","scrollbar_track":"#ffffff","toolbar_background":"#f6f6f6","toolbar_border_bottom":"#cccccc","button_border":"#f6f6f6","button_background":"#f6f6f6","button_hover_border":"#ecebee","button_hover_background":"#ecebee","button_icons":"#000000","filter_box_background":"#fafafa","filter_box_border":"#cccccc","filter_box_font":"#333333","filter_clear_icon":"#000000","pin_list_border_bottom":"#cccccc","pin_list_background":"#ffffff","tab_list_background":"#ffffff","tab_background":"#f6f6f6","tab_border":"#d2d2d2","tab_hover_background":"#d6d5d8","tab_hover_border":"#878787","tab_selected_background":"#f6f6f6","tab_selected_border":"#00caa7","tab_selected_hover_border":"#00caa7","tab_selected_hover_background":"#d6d5d8","tab_filtered":"#ffa53b","tab_filtered_highlighted":"#ff8628","tab_filtered_selected":"#fff422","tab_filtered_selected_active":"#fff422","active_font_weight":"bold","tab_title":"#000000","tab_title_active":"#000000","tab_title_discarded":"#7e7e7e","drag_indicator":"#00caa7","close_x":"#3b3b3d","close_hover_x":"#000000","close_hover_border":"#939394","close_hover_background":"#b0adbd","expand_open_border":"#129071","expand_open_background":"#00caa7","expand_closed_border":"#969696","expand_closed_background":"#020202","expand_lines":"#129071","tabs_menu_font":"#333333","tabs_menu_background":"#fafafa","tabs_menu_border":"#bebebe","tabs_menu_hover_background":"#efefef","tabs_menu_hover_border":"#bebebe","tabs_menu_separator":"#efefef","scrollbar_height":"4px","scrollbar_width":"8px","tab_filtered_selected_border":"#00caa7","tab_filtered_selected_active_border":"#00caa7","tab_filtered_selected_hover_border":"#00caa7","tab_filtered_selected_active_hover_border":"#00caa7","tab_filtered_selected_background":"#e8e000","tab_filtered_selected_active_hover_background":"#d2cb00","tab_filtered_selected_hover_background":"#d2cb00","tab_filtered_selected_active_background":"#e8e000","tab_filtered_selected_highlighted_search_border":"#00caa7","tab_filtered_selected_highlighted_search_hover_border":"#00caa7","tab_filtered_selected_active_highlighted_search_border":"#00caa7","tab_filtered_selected_active_highlighted_search_hover_border":"#00caa7","tab_active_hover_background":"#1de6b4","tab_active_background":"#c7f4e2","tab_active_border":"#bebebe","tab_active_hover_border":"#bebebe","tab_active_selected_background":"#c7f4e2","tab_selected_active_hover_background":"#1de6b4","tab_active_selected_border":"#00caa7","tab_selected_active_hover_border":"#00caa7","tab_selected_discarded_border":"#00caa7","tab_selected_discarded_hover_border":"#00caa7","tab_selected_discarded_background":"#f6f6f6","tab_selected_discarded_hover_background":"#d7d7d7","tab_discarded_background":"#f6f6f6","children_padding_left":"8px"},"TabsSizeSetNumber":2,"theme_name":"legacy by luetage","theme_version":2,"toolbar":"","unused_buttons":""}
\ No newline at end of file
diff --git a/..files_ForTesting/manifest.json b/..files_ForTesting/manifest.json
index 64c5cec..925573d 100644
--- a/..files_ForTesting/manifest.json
+++ b/..files_ForTesting/manifest.json
@@ -14,7 +14,7 @@
"19": "icons/16.png",
"16": "icons/16.png"
},
- "permissions": [ "tabs", "sessions", "", "storage" ],
+ "permissions": [ "tabs", "sessions", "", "storage", "bookmarks" ],
"sidebar_action": {
"default_icon": {
diff --git a/..files_firefox/manifest.json b/..files_firefox/manifest.json
index 46fd2a4..0b90591 100644
--- a/..files_firefox/manifest.json
+++ b/..files_firefox/manifest.json
@@ -14,7 +14,7 @@
"19": "icons/16.png",
"16": "icons/16.png"
},
- "permissions": [ "tabs", "sessions", "", "storage" ],
+ "permissions": [ "tabs", "sessions", "", "storage", "bookmarks" ],
"sidebar_action": {
"default_icon": {
"16": "icons/16.png",
@@ -44,5 +44,5 @@
"page": "options.html",
"open_in_tab": true
},
- "version": "1.3"
+ "version": "1.5"
}
\ No newline at end of file
diff --git a/..files_opera/manifest.json b/..files_opera/manifest.json
index 21972c4..9c297d5 100644
--- a/..files_opera/manifest.json
+++ b/..files_opera/manifest.json
@@ -15,7 +15,7 @@
"19": "icons/16.png",
"16": "icons/16.png"
},
- "permissions": [ "tabs", "sessions", "", "storage" ],
+ "permissions": [ "tabs", "sessions", "", "storage", "bookmarks" ],
"sidebar_action": {
"default_icon": {
"19": "icons/16.png",
diff --git a/..files_vivaldi/manifest.json b/..files_vivaldi/manifest.json
index 7acbade..47600e2 100644
--- a/..files_vivaldi/manifest.json
+++ b/..files_vivaldi/manifest.json
@@ -14,7 +14,7 @@
"19": "icons/16.png",
"16": "icons/16.png"
},
- "permissions": [ "tabs", "sessions", "", "storage" ],
+ "permissions": [ "tabs", "sessions", "", "storage", "bookmarks" ],
"options_ui": {
"page": "options.html",
"open_in_tab": false
diff --git a/..legacy when needed/legacy.js b/..legacy when needed/legacy.js
new file mode 100644
index 0000000..b781c36
--- /dev/null
+++ b/..legacy when needed/legacy.js
@@ -0,0 +1,347 @@
+// Copyright (c) 2017 kroppy. All rights reserved.
+// Use of this source code is governed by a Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0) license
+// that can be found at https://creativecommons.org/licenses/by-nc-nd/4.0/
+
+function OldHashTab(tab){
+ if (tabs[tab.id] == undefined){
+ tabs[tab.id] = {ttid: "", hash: 0, h: 0, parent: tab.pinned ? "pin_list" : "tab_list", index: tab.index, expand: "n"};
+ }
+ var hash = 0;
+ if (tab.url.length === 0){
+ return 0;
+ }
+ for (var i = 0; i < tab.url.length; i++){
+ hash = (hash << 5)-hash;
+ hash = hash+tab.url.charCodeAt(i);
+ hash |= 0;
+ }
+ tabs[tab.id].h = hash;
+}
+
+
+function LoadV015(retry){
+ var loaded_options = {};
+ for (var parameter in DefaultPreferences) {
+ opt[parameter] = DefaultPreferences[parameter];
+ }
+ // set loaded options
+ if (localStorage.getItem("current_options") !== null){
+ loaded_options = JSON.parse(localStorage["current_options"]);
+ }
+ for (var parameter in opt) {
+ if (loaded_options[parameter] != undefined && opt[parameter] != undefined){
+ opt[parameter] = loaded_options[parameter];
+ }
+ }
+ SavePreferences();
+ if (localStorage.getItem("current_options") !== null){
+ localStorage.removeItem("current_options");
+
+ }
+
+ chrome.tabs.query({windowType: "normal"}, function(qtabs){
+ // create current tabs object
+ qtabs.forEach(function(Tab){
+ OldHashTab(Tab);
+ });
+
+ var reference_tabs = {};
+ var tabs_to_save = [];
+ var tabs_matched = 0;
+
+ // compare saved tabs from storage to current session tabs, but can be skipped if set in options
+ qtabs.forEach(function(Tab){
+ for (var t = 0; t < 9999; t++){
+ if (localStorage.getItem("t"+t) !== null){
+ var LoadedTab = JSON.parse(localStorage["t"+t]);
+ if (LoadedTab[1] === tabs[Tab.id].h && reference_tabs[LoadedTab[0]] == undefined){
+ reference_tabs[LoadedTab[0]] = Tab.id;
+ tabs[Tab.id].parent = LoadedTab[2];
+ tabs[Tab.id].index = LoadedTab[3];
+ tabs[Tab.id].expand = LoadedTab[4];
+ tabs_matched++;
+ break;
+ }
+
+ } else {
+ break;
+ }
+
+ }
+ });
+
+ // replace parents tabIds to new ones, for that purpose reference_tabs was made before
+ for (var tabId in tabs){
+ if (reference_tabs[tabs[tabId].parent] != undefined){
+ tabs[tabId].parent = reference_tabs[tabs[tabId].parent];
+ }
+ }
+
+ if (browserId == "F") {
+ // append ids to firefox tabs
+ qtabs.forEach(function(Tab){
+ AppendTabTTId(Tab.id);
+ });
+ qtabs.forEach(function(Tab){
+ tabs_to_save.push({id: Tab.id, ttid: tabs[tabId].ttid, parent: tabs[Tab.id].parent, index: tabs[Tab.id].index, expand: tabs[Tab.id].expand});
+ });
+ } else {
+ // create new hashes
+ qtabs.forEach(function(Tab){
+ ChromeHashURL(Tab);
+ });
+ qtabs.forEach(function(Tab){
+ tabs_to_save.push({id: Tab.id, hash: tabs[Tab.id].hash, parent: tabs[Tab.id].parent, index: tabs[Tab.id].index, expand: tabs[Tab.id].expand});
+ });
+ }
+ localStorage["t_count"] = JSON.stringify(qtabs.length);
+ localStorage["tabs"] = JSON.stringify(tabs_to_save);
+ for (var t = 0; t < 9999; t++){
+ if (localStorage.getItem("t"+t) !== null){
+ localStorage.removeItem("t"+t);
+ }
+ }
+ window.location.reload();
+ });
+}
+
+function FirefoxLoadV100(retry) {
+ chrome.windows.getAll({windowTypes: ["normal"], populate: true}, function(w) {
+
+ var refTabs = {};
+ var tabs_matched = 0;
+ var tabs_count = 0;
+ for (var wIndex = 0; wIndex < w.length; wIndex++) {
+ tabs_count += w[wIndex].tabs.length;
+ }
+
+ // load tabs and windows from hdd
+ var LoadedWindows = LoadData("windows", []);
+ var LoadedTabs = LoadData("tabs", []);
+
+ // if loaded tabs mismatch by 50%, then try to load back
+ if (LoadedTabs.length < tabs_count*0.5 || retry > 0) {
+ LoadedTabs = LoadData("tabs_BAK"+retry, []);
+ }
+ // if loaded windows mismatch, then try to load back
+ if (LoadedWindows.length < w.length || retry > 0) {
+ LoadedWindows = LoadData("windows_BAK"+retry, []);
+ }
+ // CACHED COUNTS AND STUFF
+ var lastWinId = w[w.length-1].id;
+ var lastTabId = w[w.length-1].tabs[w[w.length-1].tabs.length-1].id;
+ var LoadedWinCount = LoadedWindows.length;
+ var LoadedTabsCount = LoadedTabs.length;
+ var WinCount = w.length;
+
+ for (var wIndex = 0; wIndex < WinCount; wIndex++) {
+ let winIndex = wIndex;
+ let winId = w[winIndex].id;
+ let tabsCount = w[winIndex].tabs.length;
+
+ let win = Promise.resolve(browser.sessions.getWindowValue(winId, "TTId")).then(function(TTId) { // LOAD TTID FROM FIREFOX GET WINDOW VALUE
+ if (TTId != undefined) {
+ windows[winId] = {ttid: TTId, group_bar: opt.groups_toolbar_default, search_filter: "url", active_shelf: "", active_group: "tab_list", groups: {tab_list: {id: "tab_list", index: 0, activetab: 0, activetab_ttid: "", name: caption_ungrouped_group, font: ""}}, folders: {}};
+ } else {
+ windows[winId] = {ttid: "", group_bar: opt.groups_toolbar_default, search_filter: "url", active_shelf: "", active_group: "tab_list", groups: {tab_list: {id: "tab_list", index: 0, activetab: 0, activetab_ttid: "", name: caption_ungrouped_group, font: ""}}, folders: {}};
+ }
+ for (var tIndex = 0; tIndex < tabsCount; tIndex++) {
+
+ let tabIndex = tIndex;
+ let tabId = w[winIndex].tabs[tabIndex].id;
+ let tabPinned = w[winIndex].tabs[tabIndex].pinned;
+
+ let tab = Promise.resolve(browser.sessions.getTabValue(tabId, "TTId")).then(function(TTId) { // LOAD TTID FROM FIREFOX GET TAB VALUE
+ if (TTId != undefined) {
+ tabs[tabId] = {ttid: TTId, parent_ttid: "", parent: tabPinned ? "pin_list" : "tab_list", index: tabIndex, expand: "n"};
+ } else {
+ tabs[tabId] = {ttid: "", parent_ttid: "", parent: tabPinned ? "pin_list" : "tab_list", index: tabIndex, expand: "n"};
+ }
+ // IF ON LAST TAB AND LAST WINDOW, START MATCHING LOADED DATA
+ if (tabId == lastTabId && winId == lastWinId) {
+ for (var ThisSessonWinId in windows) {
+ if (windows[ThisSessonWinId].ttid != ""){
+ for (var LwIndex = 0; LwIndex < LoadedWinCount; LwIndex++) {
+ if (LoadedWindows[LwIndex].ttid == windows[ThisSessonWinId].ttid) {
+ if (LoadedWindows[LwIndex].group_bar) { windows[ThisSessonWinId].group_bar = LoadedWindows[LwIndex].group_bar; }
+ if (LoadedWindows[LwIndex].search_filter) { windows[ThisSessonWinId].search_filter = LoadedWindows[LwIndex].search_filter; }
+ if (LoadedWindows[LwIndex].active_shelf) { windows[winId].active_shelf = LoadedWindows[LwIndex].active_shelf; }
+ if (LoadedWindows[LwIndex].active_group) { windows[ThisSessonWinId].active_group = LoadedWindows[LwIndex].active_group; }
+ if (Object.keys(LoadedWindows[LwIndex].groups).length > 0) { windows[ThisSessonWinId].groups = Object.assign({}, LoadedWindows[LwIndex].groups); }
+ if (Object.keys(LoadedWindows[LwIndex].folders).length > 0) { windows[ThisSessonWinId].folders = Object.assign({}, LoadedWindows[LwIndex].folders); }
+ LoadedWindows[LwIndex].ttid = "";
+ break;
+ }
+ }
+ } else {
+ AppendWinTTId(parseInt(ThisSessonWinId));
+ }
+ }
+ // OK, DONE WITH WINDOWS, START TABS LOOP
+ for (var ThisSessonTabId in tabs) {
+ if (tabs[ThisSessonTabId].ttid != ""){
+ for (var LtabIndex = 0; LtabIndex < LoadedTabsCount; LtabIndex++) {
+ if (LoadedTabs[LtabIndex].ttid == tabs[ThisSessonTabId].ttid) {
+ refTabs[LoadedTabs[LtabIndex].id] = ThisSessonTabId;
+ if (LoadedTabs[LtabIndex].parent) { tabs[ThisSessonTabId].parent = LoadedTabs[LtabIndex].parent; }
+ if (LoadedTabs[LtabIndex].index) { tabs[ThisSessonTabId].index = LoadedTabs[LtabIndex].index; }
+ if (LoadedTabs[LtabIndex].expand) { tabs[ThisSessonTabId].expand = LoadedTabs[LtabIndex].expand; }
+ LoadedTabs[LtabIndex].ttid = "";
+ tabs_matched++;
+ break;
+ }
+ }
+ } else {
+ AppendTabTTId(parseInt(ThisSessonTabId));
+ }
+ }
+ // OK, DONE, NOW REPLACE OLD PARENTS IDS WITH THIS SESSION IDS
+ for (var ThisSessonTabId in tabs) {
+ if (refTabs[tabs[ThisSessonTabId].parent] != undefined) {
+ tabs[ThisSessonTabId].parent = refTabs[tabs[ThisSessonTabId].parent];
+ }
+ }
+ // OK, SAME THING FOR ACTIVE TABS IN GROUPS
+
+ for (var ThisSessonWinId in windows) {
+ for (var group in windows[ThisSessonWinId].groups) {
+ if (refTabs[windows[ThisSessonWinId].groups[group].activetab]) {
+ windows[ThisSessonWinId].groups[group].activetab = refTabs[windows[ThisSessonWinId].groups[group].activetab];
+ }
+ }
+ }
+
+
+ if (localStorage.getItem("t_count") !== null){
+ localStorage.removeItem("t_count");
+ }
+ if (localStorage.getItem("tabs_BAK1") !== null){
+ localStorage.removeItem("tabs_BAK1");
+ }
+ if (localStorage.getItem("tabs_BAK2") !== null){
+ localStorage.removeItem("tabs_BAK2");
+ }
+ if (localStorage.getItem("tabs_BAK3") !== null){
+ localStorage.removeItem("tabs_BAK3");
+ }
+ if (localStorage.getItem("tabs") !== null){
+ localStorage.removeItem("tabs");
+ }
+ if (localStorage.getItem("windows") !== null){
+ localStorage.removeItem(windows);
+ }
+
+
+ // will try to find tabs for 3 times
+ if (opt.skip_load == true || retry > 2 || (tabs_matched > tabs_count*0.5)) {
+
+ running = true;
+ FirefoxAutoSaveData();
+ FirefoxListeners();
+ } else {
+ setTimeout(function() {FirefoxLoadTabs(retry+1);}, 2000);
+ }
+
+ }
+ });
+ }
+ });
+ }
+ });
+}
+
+
+function ConvertLegacyStorage() {
+ if (localStorage.getItem("current_theme") != null || localStorage.getItem("preferences") != null || localStorage.getItem("tabs") != null || localStorage.getItem("windows") != null) {
+ let current_theme = "";
+ if (localStorage.getItem("current_theme") != null) {
+ current_theme = localStorage["current_theme"];
+ }
+ let LSthemes = [];
+ if (localStorage.getItem("themes") != null) {
+ LSthemes = LoadData("themes", []);
+ }
+ SLThemes = {};
+ LSthemes.forEach(function(themeName) {
+ let them = LoadData("theme"+themeName, {"TabsSizeSetNumber": 2, "ToolbarShow": true, "toolbar": DefaultToolbar});
+ SLThemes[themeName] = them;
+ });
+
+ let LSpreferences = Object.assign({}, DefaultPreferences);
+ if (localStorage.getItem("preferences") != null) {
+ LSpreferences = LoadData("preferences", {});
+ }
+
+ if (browserId != "F") {
+ let LStabs = {};
+ if (localStorage.getItem("tabs") != null) {
+ LStabs = LoadData("tabs", {});
+ }
+ let LSwindows = {};
+ if (localStorage.getItem("windows") != null) {
+ LSwindows = LoadData("windows", {});
+ }
+ let LStabs_BAK1 = {};
+ if (localStorage.getItem("tabs_BAK1") != null) {
+ LStabs_BAK1 = LoadData("tabs_BAK1", {});
+ }
+ let LStabs_BAK2 = {};
+ if (localStorage.getItem("tabs_BAK2") != null) {
+ LStabs_BAK2 = LoadData("tabs_BAK2", {});
+ }
+ let LStabs_BAK3 = {};
+ if (localStorage.getItem("tabs_BAK3") != null) {
+ LStabs_BAK3 = LoadData("tabs_BAK3", {});
+ }
+
+ let LSwindows_BAK1 = {};
+ if (localStorage.getItem("windows_BAK1") != null) {
+ LSwindows_BAK1 = LoadData("windows_BAK1", {});
+ }
+ let LSwindows_BAK2 = {};
+ if (localStorage.getItem("windows_BAK2") != null) {
+ LSwindows_BAK2 = LoadData("windows_BAK2", {});
+ }
+ let LSwindows_BAK3 = {};
+ if (localStorage.getItem("windows_BAK3") != null) {
+ LSwindows_BAK3 = LoadData("windows_BAK3", {});
+ }
+
+
+ let LSt_count = 0;
+ if (localStorage.getItem("t_count") != null) {
+ LSt_count = LoadData("t_count", {});
+ }
+ let LSw_count = 0;
+ if (localStorage.getItem("w_count") != null) {
+ LSw_count = LoadData("w_count", {});
+ }
+ chrome.storage.local.set({tabs: LStabs});
+ chrome.storage.local.set({windows: LSwindows});
+ chrome.storage.local.set({tabs_BAK1: LStabs_BAK1});
+ chrome.storage.local.set({tabs_BAK2: LStabs_BAK2});
+ chrome.storage.local.set({tabs_BAK3: LStabs_BAK3});
+
+ chrome.storage.local.set({windows_BAK1: LSwindows_BAK1});
+ chrome.storage.local.set({windows_BAK2: LSwindows_BAK2});
+ chrome.storage.local.set({windows_BAK3: LSwindows_BAK3});
+ chrome.storage.local.set({t_count: LSt_count});
+ chrome.storage.local.set({w_count: LSw_count});
+ }
+ chrome.storage.local.set({preferences: LSpreferences});
+ chrome.storage.local.set({current_theme: current_theme});
+ chrome.storage.local.set({themes: SLThemes});
+ localStorage.clear();
+ window.location.reload();
+ }
+}
+
+function LoadData(KeyName, ExpectReturnDefaultType) {
+ var data = ExpectReturnDefaultType;
+ try {
+ data = JSON.parse(localStorage[KeyName]);
+ return data;
+ } catch(e) {
+ return ExpectReturnDefaultType;
+ }
+}
diff --git a/Tree Tabs.zip b/Tree Tabs.zip
deleted file mode 100644
index 63f01db..0000000
Binary files a/Tree Tabs.zip and /dev/null differ
diff --git a/_locales/en/messages.json b/_locales/en/messages.json
index 79881a0..1513461 100644
--- a/_locales/en/messages.json
+++ b/_locales/en/messages.json
@@ -19,6 +19,9 @@
"button_undo": {
"message": "Reopen last closed"
},
+ "button_detach": {
+ "message": "Detach tab"
+ },
"button_move": {
"message": "Detach tab"
},
@@ -55,6 +58,9 @@
"button_extensions": {
"message": "Extensions"
},
+ "button_unload": {
+ "message": "Unload tabs"
+ },
"button_discard": {
"message": "Unload tabs"
},
@@ -128,83 +134,102 @@
- "tabs_menu_expand_all": {
+ "menu_expand_all": {
"message": "Expand all trees"
},
- "tabs_menu_collapse_all": {
+ "menu_collapse_all": {
"message": "Collapse all trees"
},
- "tabs_menu_new": {
+ "menu_expand_tree": {
+ "message": "Expand tree"
+ },
+ "menu_collapse_tree": {
+ "message": "Collapse tree"
+ },
+ "menu_new_tab": {
"message": "New tab"
},
- "tabs_menu_clone": {
+ "menu_new_pin": {
+ "message": "New pinned tab"
+ },
+ "menu_duplicate_tab": {
"message": "Duplicate"
},
- "tabs_menu_move": {
+ "menu_detach_tab": {
"message": "Detach"
},
- "tabs_menu_reload": {
+ "menu_reload_tab": {
"message": "Reload"
},
- "tabs_menu_pin": {
+ "menu_pin_tab": {
"message": "Pin"
},
- "tabs_menu_mute": {
+ "menu_mute_tab": {
"message": "Mute"
},
- "tabs_menu_unmute": {
+ "menu_mute_tree": {
+ "message": "Mute tree"
+ },
+ "menu_unmute_tree": {
+ "message": "Unmute tree"
+ },
+ "menu_unmute_tab": {
"message": "Unmute"
},
- "tabs_menu_mute_other": {
+ "menu_mute_other": {
"message": "Mute other"
},
- "tabs_menu_unmute_other": {
+ "menu_unmute_other": {
"message": "Unmute other"
},
- "tabs_menu_unpin": {
+ "menu_unpin_tab": {
"message": "Unpin"
},
- "tabs_menu_close_tree": {
+ "menu_close_tree": {
"message": "Close tree"
},
- "tabs_menu_close": {
+ "menu_close": {
"message": "Close"
},
- "tabs_menu_close_other": {
+ "menu_close_other": {
"message": "Close other"
},
- "tabs_menu_undo": {
+ "menu_undo_close_tab": {
"message": "Undo close"
},
- "tabs_menu_settings": {
+ "menu_treetabs_settings": {
"message": "Settings"
},
- "tabs_menu_discard": {
+ "menu_unload": {
"message": "Unload"
},
+ "menu_bookmark_tree": {
+ "message": "Bookmark tree"
+ },
- "folders_menu_new_folder": {
+
+ "menu_new_folder": {
"message": "New folder"
},
- "folders_menu_rename_folder": {
+ "menu_rename_folder": {
"message": "Rename folder"
},
- "folders_menu_delete": {
+ "menu_delete_folder": {
"message": "Delete"
},
- "groups_menu_new_group": {
+ "menu_new_group": {
"message": "New group"
},
- "groups_menu_rename": {
+ "menu_rename_group": {
"message": "Rename group"
},
- "groups_menu_delete": {
+ "menu_delete_group": {
"message": "Delete group"
},
- "groups_menu_delete_tabs_close": {
+ "menu_delete_group_tabs_close": {
"message": "Delete group with tabs"
},
@@ -212,6 +237,10 @@
"message": "Unload group"
},
+ "menu_bookmark_group": {
+ "message": "Bookmark group"
+ },
+
@@ -238,38 +267,88 @@
"message": " Tabs "
},
"options_syncro_tabbar_tabs_order": {
- "message": "Synchronize browser tabs order with Tree Tabs, tabs can be unresponsive for a second after drag&drop. This option is needed for correct ctrl+tab switching"
+ "message": "Synchronize browser tabs order with Tree Tabs, tabs can be unresponsive for a second after drag&drop. This option is needed for correct ctrl+tab switching. You can disable this option if you don't use keyboard shortcuts."
},
"options_switch_with_scroll": {
"message": "Switch tabs with mouse wheel"
},
- "options_close_with_MMB": {
- "message": "Close tabs with middle mouse button"
- },
+
"options_always_show_close": {
- "message": "Show close button on all tabs"
+ "message": "Show close button on all tabs and folders"
},
"options_never_show_close": {
- "message": "Don't show close button (option above will be ignored)"
+ "message": "Never show close button (option above will be ignored)"
},
- "options_close_other_trees": {
+ "options_collapse_other_trees": {
"message": "Automatically collapse other trees on expand"
},
"options_open_tree_on_hover": {
"message": "Auto expand collapsed trees when dragging and holding for a second over them"
},
"options_promote_children": {
- "message": "Promote children tabs on close, if disabled, when closing the parent of a tree structure, all tabs will be closed (be careful, because undo close tab will not recover the trees structure)"
+ "message": "Promote children on close, if disabled, when closing the parent of a tree structure, all tabs and folders will be closed (be careful, because undo close tab will not recover the trees structure)"
},
"options_promote_children_in_first_child": {
- "message": "Promote first child tab as a parent"
+ "message": "Promote first child as a parent"
},
"options_skip_load": {
"message": "Discard tree structure after browser's restart, this option is for those who don't use browser's session. Basically it disables loading database at startup."
},
+
+ "options_midclick_tab": {
+ "message": "Action for middle mouse click on tab"
+ },
+ "options_dbclick_tab": {
+ "message": "Action for double click on tab"
+ },
+
+ "options_action_tab_none": {
+ "message": "nothing"
+ },
+ "options_action_tab_new": {
+ "message": "open new tab"
+ },
+ "options_action_tab_expand_collapse": {
+ "message": "expand/collapse tree"
+ },
+ "options_action_tab_close": {
+ "message": "close tab"
+ },
+ "options_action_tab_reload": {
+ "message": "reload tab"
+ },
+ "options_action_tab_unload": {
+ "message": "unload tab"
+ },
+ "options_action_tab_activate_previous_active": {
+ "message": "go back to previous active tab (works only on unpinned tabs)"
+ },
+
+
+
+
+ "options_midclick_group": {
+ "message": "Action for middle click on empty space on the left side or below the tabs"
+ },
+ "options_dbclick_group": {
+ "message": "Action for double click on empty space on the left side or below the tabs"
+ },
+ "options_action__group_none": {
+ "message": "nothing"
+ },
+ "options_action__group_new": {
+ "message": "open new tab"
+ },
+ "options_action__group_activate_previous_active": {
+ "message": "go back to previous active tab (works only on unpinned tabs)"
+ },
+
+
+
+
"options_append_child_tab": {
"message": "Append children tabs at the"
},
@@ -330,19 +409,22 @@
"options_append_child_tab_after_limit_bottom": {
"message": "at the bottom"
},
- "options_max_tree_drag_drop": {
- "message": "Limit Drag&Drop to tree's maximum depth as well"
- },
"options_show_counter_tabs": {
- "message": "Show children tabs count on tab's title"
+ "message": "Show children tabs count on tabs and folders titles"
},
"options_show_counter_tabs_hints": {
- "message": "Show children tabs count in tab's hint"
+ "message": "Show children tabs count in tabs and folders hints"
},
"options_max_tree_depth": {
"message": "Maximum tree depth: set it to -1 for unlimited branches, 0 for flat tabs placement (no trees), any number above 0 will be its maximum"
},
+ "options_max_tree_drag_drop": {
+ "message": "Limit Drag&Drop to tree's maximum depth, so you can't drop tabs beyond maximum depth"
+ },
+ "options_max_tree_drag_drop_folders": {
+ "message": "Limit Drag&Drop to tree's maximum depth, so you can't drop folders beyond maximum depth"
+ },
@@ -358,12 +440,47 @@
"message": "Show groups toolbar in new windows"
},
"options_syncro_tabbar_groups_tabs_order": {
- "message": "Synchronize browser tabs order after drag&drop of the group tabs. Tabs will sort for a long time, if browser has a lot of tabs open. This option is needed for correct ctrl+tab switching"
+ "message": "Synchronize browser tabs order after drag&drop of the group tabs. Tabs will sort for a long time, if browser has a lot of tabs open. This option is needed for correct ctrl+tab switching. You can disable this option if you don't use keyboard shortcuts."
},
+ "options_folders": {
+ "message": "Folders"
+ },
+
+
+ "options_midclick_folder": {
+ "message": "Action for middle mouse click on folder"
+ },
+ "options_dbclick_folder": {
+ "message": "Action for double click on folder"
+ },
+
+ "options_action_folder_none": {
+ "message": "nothing"
+ },
+ "options_action_folder_rename": {
+ "message": "rename folder"
+ },
+ "options_action_folder_new_folder": {
+ "message": "open new folder"
+ },
+ "options_action_folder_new_tab": {
+ "message": "open new tab"
+ },
+ "options_action_folder_expand_collapse": {
+ "message": "expand/collapse tree"
+ },
+ "options_action_folder_close": {
+ "message": "close folder"
+ },
+ "options_action_folder_unload": {
+ "message": "unload tabs in folder"
+ },
+
+
@@ -371,6 +488,13 @@
+
+ "options_global": {
+ "message": "Global"
+ },
+
+
+
"options_theme": {
"message": "Theme"
},
@@ -424,6 +548,16 @@
+ "options_tabs_margin_overlap": {
+ "message": "Tabs spacing:\nOverlap 1px, best for themes with borders"
+ },
+ "options_tabs_margin_0": {
+ "message": "Tabs spacing:\nNo spacing, best for flat look"
+ },
+ "options_tabs_margin_1": {
+ "message": "Tabs spacing:\nDefault, 1px between tabs"
+ },
+
@@ -532,19 +666,82 @@
- "options_color_pick_filter_clear_icon": {
- "message": "Clear search result x button color"
- },
"close_x": {
"message": "x inside the close button"
},
"close_hover_x": {
- "message": "x inside the close button on hover"
+ "message": "x inside the close button, on mouse hover"
},
+
+
+ "button_background": {
+ "message": "Toolbar buttons background"
+ },
+ "button_hover_background": {
+ "message": "Toolbar buttons background, on mouse hover"
+ },
+
+
+ "button_icons": {
+ "message": "Toolbar buttons icon color"
+ },
+ "button_icons_hover": {
+ "message": "Toolbar buttons icon color, on mouse hover"
+ },
+ "button_border": {
+ "message": "Toolbar buttons border color"
+ },
+ "button_hover_border": {
+ "message": "Toolbar buttons border color, on mouse hover"
+ },
+
+
+ "filter_box_font": {
+ "message": "Search box, font color"
+ },
+ "filter_box_background": {
+ "message": "Search box, font background color"
+ },
+ "filter_box_border": {
+ "message": "Search box, border color"
+ },
+ "filter_clear_icon": {
+ "message": "Clear search result x button color"
+ },
+
+
+ "toolbar_background": {
+ "message": "Toolbar background color"
+ },
+ "toolbar_border_bottom": {
+ "message": "Toolbar borders color"
+ },
+
+
+
+ "attention_background": {
+ "message": "Tabs blinking for attention, background color"
+ },
+ "attention_border": {
+ "message": "Tabs blinking for attention, border color"
+ },
+
+
+ "pin_list_border_bottom": {
+ "message": "Pinned tabs list, border at the bottom color"
+ },
+ "pin_list_background": {
+ "message": "Pinned tabs list, background color"
+ },
+
+
"options_color_pick_hover": {
"message": "On hover"
},
+
+
+
"options_color_pick_border": {
"message": "Border color"
},
diff --git a/_locales/ru/messages.json b/_locales/ru/messages.json
index 395a78f..1e8c132 100644
--- a/_locales/ru/messages.json
+++ b/_locales/ru/messages.json
@@ -2,6 +2,9 @@
"button_bookmarks": {
"message": "Закладки"
},
+ "button_unload": {
+ "message": "Выгрузить все вкладки"
+ },
"button_discard": {
"message": "Выгрузить все вкладки"
},
@@ -20,6 +23,9 @@
"button_move": {
"message": "Отсоединить текущую вкладку"
},
+ "button_detach": {
+ "message": "Отсоединить текущую вкладку"
+ },
"button_new": {
"message": "ЛКМ - открыть новую вкладку \nСКМ - дублировать активную вкладку \nПКМ - прокрутка списка к активной вкладке"
},
@@ -119,12 +125,10 @@
"options_append_orphan_tab_top": {
"message": "в начале списка"
},
- "options_close_other_trees": {
+ "options_collapse_other_trees": {
"message": "автоматически сворачивать другие деревья при раскрывании дерева"
},
- "options_close_with_MMB": {
- "message": "закрывать вкладки средней кнопкой мыши"
- },
+
"options_color_button_background": {
"message": " фон кнопки"
},
@@ -374,55 +378,55 @@
"opt_url_for_web_panel": {
"message": "Вставить этот URL в веб-панель"
},
- "tabs_menu_clone": {
+ "menu_duplicate_tab": {
"message": "Дублировать вкладку"
},
- "tabs_menu_close": {
+ "menu_close": {
"message": "Закрыть вкладку"
},
- "tabs_menu_close_other": {
+ "menu_close_other": {
"message": "Закрыть другие вкладки"
},
- "tabs_menu_collapse_all": {
+ "menu_collapse_all": {
"message": "Свернуть все деревья"
},
- "tabs_menu_discard": {
+ "menu_unload": {
"message": "Выгрузить вкладку"
},
- "tabs_menu_expand_all": {
+ "menu_expand_all": {
"message": "Раскрыть все деревья"
},
- "tabs_menu_move": {
+ "menu_detach_tab": {
"message": "Отсоединить вкладку"
},
- "tabs_menu_mute": {
+ "menu_mute_tab": {
"message": "Выключить звук на вкладке"
},
- "tabs_menu_mute_other": {
+ "menu_mute_other": {
"message": "Выключить звук (на других)"
},
- "tabs_menu_new": {
+ "menu_new_tab": {
"message": "Новая вкладка"
},
- "tabs_menu_pin": {
+ "menu_pin_tab": {
"message": "Закрепить вкладку"
},
- "tabs_menu_reload": {
+ "menu_reload_tab": {
"message": "Обновить вкладку"
},
- "tabs_menu_settings": {
+ "menu_treetabs_settings": {
"message": "Настройки Tree Tabs"
},
- "tabs_menu_undo": {
+ "menu_undo_close_tab": {
"message": "Отменить закрытие"
},
- "tabs_menu_unmute": {
+ "menu_unmute_tab": {
"message": "Включить звук на вкладке"
},
- "tabs_menu_unmute_other": {
+ "menu_unmute_other": {
"message": "Включить звук (на других)"
},
- "tabs_menu_unpin": {
+ "menu_unpin_tab": {
"message": "Открепить вкладку"
},
"options_active_tab_font_bold": {
@@ -434,7 +438,7 @@
"options_never_show_close": {
"message": "не показывать кнопку закрытия (опция выше будет проигнорирована)"
},
- "tabs_menu_close_tree": {
+ "menu_close_tree": {
"message": "Закрыть дерево"
}
}
diff --git a/background.html b/background.html
index c97bdfc..f1c0516 100644
--- a/background.html
+++ b/background.html
@@ -3,6 +3,5 @@
-
-
+