Releases: blenderskool/untab
Release v0.4.0
What's Changed
- Added lamentis theme #46
- Replaced separate web search plugins with a unified web search plugin
- Added even more search engines to the unified web search plugin
- Added .new-shortcut plugin by @Gurvir-Sandhar in #74
- Added various quick link shortcuts.
- Changed default sort to most recently used tab first by @rajeshmr82 in #70
- Update scrollbar color in some themes #81
- Added additional tab actions:
- opening tab in incognito mode
- opening tab in Wayback Machine
- opening tab in reading mode using Outline
- shortening tab URL using TinyURL
- Removed active tab from the tabs search results
- Fix iframe append error on some pages
- Update search input placeholder text
New Contributors
- @Gurvir-Sandhar made their first contribution in #74
- @rajeshmr82 made their first contribution in #70
Full Changelog: v0.3.0...v0.4.0
Release v0.3.0
Introducing Plugin UI 🧪
Plugin UI provides more control to plugins in UnTab allowing them to render their own controls and UI on the UnTab interface. This provides plugins to expose even more functionality in a meaningful way without disturbing the UX. Defining this UI logic has been made very simple, with each plugin's UI logic being its own simple Svelte component 🧡.
Here's an example of what Plugin UI has enabled the tab searching plugin to do. Now it can not only switch between tabs but also pin/unpin and close the tabs right from the UnTab interface! 🎉
Read more about Plugin UI in this PR
Other notable updates and fixes in this release are given below.
Updates
- Add border to search container for better distinction.
- Add results count to each category.
- Update letter spacing in Pill.
- Add plugin UI components and alias to it.
- Add audio indicator and button to close, pin tabs.
- Update support link.
- Add Bing search Plugin. Thanks to @yavko.
Fixes
- Iframe background color on dark scheme websites, eg. github.com.
- Fix hitting arrow right resets selected item.
- Fix UnTab interface not showing up in pages where the content script cannot be embedded.
Release v0.2.1
version 0.2.1
Release v0.2.0
Complete Firefox support
UnTab is a tool to improve browser productivity and since its creation, browser compatibility has always been in mind during its development. UnTab is now fully supported on Firefox alongside Chrome! On the technical side, the codebase has shifted to using webextension-polyfill which not only provides a more modern browser API for the extension development but is also compatible with both Firefox and Chrome. It has simplified some parts of the codebase which were starting to become confusing due to callbacks!
Plugin API improvements
From the release of version 0.1.0
, a sendResponse
callback was passed as an argument in the handler
method of plugins. This function was used to pass back some data to the UnTab interface. This function was mandatory to be called in every plugin and I had mentioned that this behavior would soon be improved.
I'm glad to share that the sendResponse
callback method is no longer passed 😛. Its functionality can now be achieved by simply returning the data from the handler
method 🎉
Example of how this change works:
Before: with sendResponse
{
...
async handler({ theme }, sendResponse) {
await browser.storage.local.set({ theme });
sendResponse({ theme, autoClose: false });
}
...
}
Now: without sendResponse
{
...
async handler({ theme }) {
await browser.storage.local.set({ theme });
return { theme, autoClose: false };
}
...
}
This change makes the Plugin API easier to understand without thinking in terms of callbacks. NOTE: The example shows an async method but the change is also compatible with non-async functions.
Changes in data passing
Communication between the UnTab interface and the background script were done in two ways:
- Using ports
- Using
sendMessage
sendMessage
was used to exchange data about the selected items from the UnTab interface. While it worked the way it was meant to, it had some quirks with respect to asynchronous handlers and how the response data was being passed. This has now been refactored to use ports for communication.
Loading indicator
UnTab now shows a loading indicator when the search takes more than 500ms. Only in some rare cases, the search takes a long time(which is mostly observed during the initial boot of the browser) which is when the loading indicator is shown.
Release v0.1.0
Themes are here!
Themes have been one of the most requested features of UnTab. With this update, themes are now available simply via /themes
in UnTab search. (Yep, themes are also a plugin!)
All the themes in their full glory!
Addings new themes
While the themes added right now would fairly meet the need for many users, new themes can be easily contributed by the community because all the colors are used in UnTab are extracted as CSS variables in a single file. Hence adding a new theme is just following two steps!
- Add an entry in the 'themes' plugin in
src/background/plugins.js
with the name of the theme defined as bytheme
property. - Open
src/themes/themes.css
file and define the colors for your new theme similar to how other themes are defined using the.theme-<theme value in plugins>
CSS class.
Fixes #9
Updates in Plugins API
Implementing themes as a plugin allowed me to add a few new options to the Plugins API for even better integration with the underlying extension!
- It is now possible to make use of the extension storage API to store small pieces of data that might be required by a plugin. These small pieces of data are passed straight to the UnTab interface(when opened next time) which can make use of the data in some way or another.
Example from theme plugin below
{
'themes': {
displayName: 'Themes',
item: [
{
title: 'Dark',
theme: 'dark',
},
],
handler(item, sendResponse) {
chrome.storage.local.set({ theme: item.theme });
}
}
- Support for emojis as a fallback when favicons are not available: Emojis can be defined via the
emoji
property in every item to denote an emoji that can be used when favicons are not available(either not defined in thefavicon
property or problem in loading the favicon). This is better than showing just a simple circle in most cases if a suitable emoji can represent a plugin item correctly.
{
'themes': {
displayName: 'themes',
item: {
title: 'Dark',
emoji: '🌒',
},
}
}
- Second argument in
handler
method - 'sendResponse':sendResponse
method is passed tohandler
method of the plugin which must be called exactly once in the handler method to indicate that the handler terminated (either successfully or error). Again, it is mandatory to call this method right now, but I'm figuring out ways to improve this behavior.
What's the use ofsendResponse
? Well, it can be used to send a small response from the plugin to the UnTab interface after it has finished its task. It can be used to send arbitrary data or maybe in some ways control how UnTab interface behaves with some plugin interactions.- A standard property
autoClose
is available here right now that can be used to indicate whether UnTab should close itself after the plugin is selected or not. Setting it tofalse
would keep the UnTab interface open, it's default value is set totrue
.
This property is used in the themes plugin to prevent the automatic closing of UnTab interface when a theme is selected by the user.
- A standard property
Tab Searching is now a plugin on its own! 💯
This was more of a surprise when I first tried this, but the entire Tab searching and switching functionality could be simply extracted as a plugin similar to the History searching and Bookmarks searching plugins. This goes to show how far the plugins system of UnTab has come already. UnTab on its own is just a barebones tool now which can run a bunch of plugins to improve your productivity!
Other minor improvements
- The color of the circle shown in place of favicons(when they aren't available) now get different colors instead of just orange.
- All of the tab searching and switching logic was removed from the
background/index.js
file as they are now a part of thetabs
plugin. - Minor changes in the displayName of tab actions. Previously it was just "Tab", now it is updated to "Tab actions"
- All plugins have been refactored to make use of the
sendResponse
argument in thehandler
method as it is mandatory to be called. src/fonts.css
file is moved tosrc/themes/fonts.css
v0.0.1
First release of UnTab - v0.0.1 🐣
The current features include:
- Tab searching and switching
- History searching
- Plugins support:
- Google search using
/g
- DuckDuckGo search using
/d
- Tab actions using
/t
- Google search using
The built extension has been added to this release. The zip can be extracted and loaded in Chrome to try out the addon. Follow README for instructions.