Skip to content

Releases: blenderskool/untab

Release v0.4.0

18 Jan 13:49
Compare
Choose a tag to compare

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

Full Changelog: v0.3.0...v0.4.0

Release v0.3.0

23 May 09:32
Compare
Choose a tag to compare

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

03 Feb 10:14
Compare
Choose a tag to compare
version 0.2.1

Release v0.2.0

19 Nov 09:44
Compare
Choose a tag to compare

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

23 Oct 15:11
Compare
Choose a tag to compare

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!)


A look at available themes

All the themes in their full glory!

Group 12

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 by theme 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 the favicon 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 to handler 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 of sendResponse? 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 to false would keep the UnTab interface open, it's default value is set to true.
      This property is used in the themes plugin to prevent the automatic closing of UnTab interface when a theme is selected by the user.

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 the tabs 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 the handler method as it is mandatory to be called.
  • src/fonts.css file is moved to src/themes/fonts.css

v0.0.1

17 Sep 18:07
395494c
Compare
Choose a tag to compare
v0.0.1 Pre-release
Pre-release

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

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.