This is a huge commit but quite difficult to split into smaller chunks. Most of the work consists of deletions, and the rest is refactoring to achieve the following:
We're dropping the sync redux stores architecture to move the core logic in the panel.
As the background script can be interrupted at any moment with manifest V3, we're not storing global state in it anymore.
The background script now mereley serves as a proxy to execute certain tasks requiring higher permissions.
Tab data is now persisted in session storage, so it is automatically cleaned up when the browser is closed.
The panel is no longer injected into the host page but moved to a browser sidebar.
We're removing the custom docking logic as it is now handled by the browser. However, we still manage the opening in a popup because it is not natively supported as of now.
The options page now stores global data in local storage, and the app listens for any updates to propagate them into the redux store.
Not all browsers provide a way to open a sidebar for a specific tab. For those, we're loading a stub panel on all pages with a button to launch the app.
This is a huge commit but quite difficult to split into smaller chunks. Most of the work consists of deletions, and the rest is refactoring to achieve the following: