Along with my Gmail Contact Formatter (which is temporarily on hold for this project), I am working on another project called SABconnect++ (Link to the Chrome Web Store page). For those not familiar with this extension, it’s simply a convenient interface to SABnzbd+ from Google Chrome (SABnzbd+ is a web application written in Python that handles downloads from binary newsgroups).
I use the Google Chrome extension extensively, and as I used it more I noticed that development on the project was starting to go stale. My motivation to work on this project started with the fact that there was a memory leak that occurred over time in the extension that would eventually cause it to crash. The cause of this memory leak is due to an architectural issue in the Google Chrome Extension API. To summarize, there are parts of the API that allow message passing between content scripts (scripts that live only in a web page, provided by the extension) and the background page (the main “hidden” page in an extension that has is always open so long as the extension is enabled). This API, when used to pass messages between two scripts in the same background page, causes a memory leak. Naturally like other Extension APIs are designed, this scenario should not be so subtle, as normally the browser will not allow the message passing to even occur. Needless to say, the amount of memory leaked was significant, especially since this message passing was happening several times each second.
My first goal was to fix the bug issue and adjust the architecture of the extension to provide for the fix (the design of the extension relied heavily on this broken message passing usage). Once I fixed that, I quickly began implementing several other features:
- A new settings page, which utilizes a javascript API named fancy-settings to implement a settings page for SABconnect++ that closely resembles the settings page for Google Chrome.
- A context menu, which provides a sort of “stop-gap” solution to cases where users cannot send NZB URLs to SABnzbd because that provider (indexer site) is not supported by the extension.
- Real-time updates to content scripts when the user changes options in the settings page (this previously required a page refresh).
My future plans for the extension:
- Complete redesign of the popup
- Do some R&D work on the experimental WebRequest API in Google Chrome to intercept NZB download responses from the server & forward that to SABnzbd (this eliminates any DOM injection we currently do to support specific providers).
As it currently stands, I am working in collaboration with 2 other developers on this project (they are the two devs that already were on the project when I joined). However, they no longer have the time to contribute to the project so I am the only active developer for the extension.
There is a link to the project page for SABconnect++ in this post and also in the main navigation menu system at the top of my site. Go check it out, install it, and enjoy!







