Waveboxapp: Sideloading Extensions

Created on 22 Jan 2018  Â·  56Comments  Â·  Source: wavebox/waveboxapp

We're working on adding some proper developer support for sideloading extensions and getting them working in Wavebox. In the meantime, if anyone is keen to get started, we're happy to help and start the discussion. I've added some basic instructions and docs to help anyone. To sideload your first extension...

  1. Download the extension you want to install and extract it
  2. Open the Wavebox data directory then extensions > chrome
  3. Create the folder directory <extension_id>/<extension_version>_<revision> (e.g. abc123/1.2.3_0 (Note these must match what is listed in the extension manifest)
  4. Copy the extension content into the folder. It should now look something like this...
    screen shot 2018-01-22 at 11 17 23

  5. Add wavebox_extension_id to the manifest.json file. This should be the same as the chrome extension id. E.g.

"wavebox_extension_id":"kbfnbcaeplbcioakkpcpgfkobkghlhen"
  1. Restart Wavebox

Wavebox also supports some additional fields for customizing the behaviour of extensions. These are documented in this markdown document... extensions.pdf

extensions wbx

Most helpful comment

@wishx @lots0logs We're busy working on a new extension framework. Bitwarden and a bunch of the other password managers are some of the extensions we've got in for the first run and working to push this out to the beta channel over the next couple of months once we've covered all the edge cases :-) . I don't want to say too much, but here's a little teaser...

Jul-04-2019 18-12-11

All 56 comments

Are you interested in feedback on the working/not working extensions?

Yeah of course! We're still extending our API support so I suspect there will be some failed calls etc in developer tools for the extension and on page. We're keen to plug the gaps where possible!

I'm trying to get Salesforce Inbox to work with Wavebox and running into some issues:

  • chrome.runtime.onInstalled.addListener - chrome.runtime.onInstalled is not supported by Wavebox at this time. Adding listeners will have no effect
  • chrome.webRequest.onBeforeRequest.addListener - does not support the following options in Wavebox at this time. They will be ignored
  • chrome.webRequest.onBeforeSendHeaders.addListener - does not support the following options in Wavebox at this time. They will be ignored
  • chrome.runtime.onConnectExternal.addListener - Uncaught TypeError: Cannot read property 'addListener' of undefined

image

The extension can be downloaded here or in Chrome Web Store

This extension uses the right sidebar in Gmail to display data in Salesforce related the the email you are currently looking at. is that a possibility?

Also, I have my personal email and my work email in wavebox, but only my work email uses Salesforce Inbox. Is there a way to enable an extension for only one Google account and not the other?

Any ideas?

Thanks!

@cachrisman I'll look to see if we can get some of those implemented and working

Successfuly got https://chrome.google.com/webstore/detail/play-midnight-for-google/ljmjmhjkcgfmfdhgplikncgndbdeckci?hl=en-US running with no issues.

The bigger issues come up around anything involving CSP. It seems like loading CRX files straight into Wavebox and sign off on permissions that way, a la Google Chrome, would be ideal. Editing the manifest for CSP items is a headache, even for powerusers - to say the least. I'll see if I can figure out a blanket "do whatever you want" template to add to my tried and true extensions I've used for years.

Unfortunately, without this kind of functionality or alternatively, relying on developer approved third party add ons I don't think I'll be able to commit to having Wavebox be a core pillar of my workflow.

Just to give you a quick update on these. The latest beta (3.10.4) has better support for window opening and the standard CSP configuration that Chrome has. @cbtlr that should mean you don't need the additional CSP config when loading extensions in.

I'll try and take a look at adding some of these and finding out what some of the missing api calls are in the next beta :). Thanks!

Thanks for the follow up Thomas, my trial ran out so I will not be able to put this through the paces but will keep a close eye on this functionality and will likely subscribe when it is up and running. Cheers.

We've added play midnight into the latest release. I think Salesforce fails at the moment as we're missing support for page actions. Scheduled that into the next release cycle

Hi !
Trying to sideload "Actions for Gmail". Extension appears in installed extensions as "_Installed from unknown source_", no error message, settings page opens but does nothing on Gmail page.

Hi @phileasb. The unknown source is just a warning that appears because it's not one that Wavebox recognizes. It will still treat it in the same way though.

I suspect there's more info in the page console (accessible via View > Developer > Developer Tools) or background page console (if it uses the background page).

Hi @Thomas101. The problem comes from here, on line 6 :

version=1;
void 0==localStorage.version&&(localStorage.version=0);
localStorage.version<version&&(chrome.tabs.create({
    url:chrome.extension.getURL("options.html")
}), localStorage.version=version);
chrome.extension.onRequest.addListener(function(a,b,e){
    switch(a.name){
        case "reload":reloadGmail()
    }
});
chrome.extension.onMessage.addListener(function(a,b,e){
    "loadOptions"==a.action&&e({
        options:JSON.parse(localStorage.options)
    })
});
function reloadGmail(){
    chrome.windows.getAll({
        populate:!0
    },function(a){
        for(var b=0,e=a.length;b<e;b++){
            for(var d=a[b].tabs,f=null,c=0,g=d.length;c<g;c++)
                d[c].url.match("mail.google.com")&&reloadTab(d[c],!0),
            d[c].title.match("Actions for Gmail")&&(f=d[c]);
            null!=f&&chrome.tabs.remove(f.id)
        }
    }
)}
function reloadTab(a,b){
    chrome.tabs.update(a.id,{
        url:a.url,selected:b
    },null)
};

Console message :
capture d ecran 2018-04-28 a 20 47 21

@phileasb I've patched through a couple of the apis that actions for gmail uses. I managed to just about get it working, although requires a couple of restarts during the setup. We don't implement the chrome.windows.getAll() call at the moment which means it fails to update open tabs when saving settings. But after a restart it seems to work. The changes will be out in 3.14.6 shortly, so might be worth giving another go then

It's wonderfull @Thomas101 ! You're awesome!
I will try on next update.

Annnnnnnd... It Works ! (in 3.14.6)
capture d ecran 2018-05-16 a 11 39 35
Thanks @Thomas101 for making this dream possible!

Is this issue considered fixed now? Seems like the last comments here apply that everything is good?

Sadly, Gmail seems to have changed it's deleting process in the old and new version (add-on used to work in both versions), making it specific and independent from the classic "check and delete" process that was mimicked by this add-on. So it no longer works. It was to be expected and confirms that Google will track everything that slowes the new version adoption. Even if the new version is not adapted and the "delete on mouse-over" sometime doesn't work... As usual... 😞

@Thomas101: has the

chrome.runtime.onInstalled.addListener(function() {

issue been resolved. I just tried to sideload an extension and this is the error i got...

image

@RedcoatAsher this hasn't been implemented yet. However, it's just a warning, it accepts the arguments passed in and just logs the failure silently. If the extension doesn't explicitly require this call to fire it should work okay.

Which extension are you trying to sideload? Do you know what it's trying to do with the onInstalled event, (e.g. is it just showing a "Thanks for installing" window, or something more substantial?)

@Thomas101: The extension was a dark theme for Google Inbox. I am not sure of the other detail; will reply with that info sometime today/tomorrow.

If you're not seeing it work, it's worth checking the console in two places, depending on how the extension works, depends on where logs may come out

  1. Settings > Extension > Inspect background page (not all extensions have this)
  2. Right click on the open tab and then Inspect

I'm not quite following your instructions. Does this look correct? (last line) http://pics.pco.bz/2n3W1c3Y1t2E

@Thomas101 Thanks for getting chrome.runtime.onInstalled.addListener, chrome.webRequest.onBeforeRequest.addListener, and chrome.webRequest.onBeforeSendHeaders.addListener implemented.

Any chance we can get chrome.runtime.onConnectExternal.addListener implemented? The Salesforce Inbox extension I mentioned above needs that to work properly.

Since people have been asking Slack for 4 years for a Dark Theme or Night Mode, I thought I'd try to install Slack++ from the Chrome Store. Following the directions above, it loads! No more eye-searing migraine-inducing white screen in Slack!

It says "Installed from an unknown source", but it works!

image

@Thomas101 Just trying to figure if I could sideload a plugin and not getting very far. Wondered if you could confirm what Im doing wrong.

Trying to sideload Clickup https://chrome.google.com/webstore/detail/clickup-tasks-screenshots/pliibjocnfmkagafnbkfcimonlnlpghj?hl=en

Created a directory called

/home/tony/.local/share/wavebox/extensions/chrome/pliibjocnfmkagafnbkfcimonlnlpghj

Ive downloaded using the download tool, realised that the download file was in fact a zip with a renamed filetype) and so unzipped.

Looked in the manifest file and it says the version is 1.1.2 with no mention of a revision so ive tried unzipping into a directory called 1.1.2 and also 1.1.2_0 and because it mentioned a manifest_version as 2 Ive also tried 1.1.2_2 and thinking the last .2 might be the revision, have tried 1.1_2 and have gone into the manifest file and added the wavebox_extension_id at the top of the json

{
  "wavebox_extension_id" : "pliibjocnfmkagafnbkfcimonlnlpghj",
"update_url": "https://clients2.google.com/service/update2/crx",

  "manifest_version": 2,
  "name": "__MSG_appName__",
  "short_name": "__MSG_appName__",
  "description": "__MSG_appDescription__",
  "version": "1.1.2",
  "icons": {
    "16": "assets/icon-16.png",
    "48": "assets/icon-48.png",
    "128": "assets/icon-128.png"
  },
....

and restarted wavebox, gone to the extension setup area and its not being listed. I understand it may well not work but with it not being listed I am assuming I am doing something wrong? TIA.

@tonybyng 1.1.2_0 should do it. Make the sure the extension is extracted in the correct location (i.e. not nested under a folder etc), the app will be trying to look for /home/tony/.local/share/wavebox/extensions/chrome/pliibjocnfmkagafnbkfcimonlnlpghj/1.1.2_0/manifest.json. Once you've got that in there, you'll need to restart Wavebox for it to find it.

Even if the extension doesn't work it will still list it under the extensions so I'd expect it to be listed.

Thanks for the quick reply. Yep Ive got that path and Ive definitely closed down Wavebox because you get the "Starting Wavebox" splashscreen and I have no processes running with Wavebox mentioned but when I restart and go to the Extensions tab I see my 2 installed extensions of Markdown Here and LastPass and I see 10 available extensions, none of which refer to ClickUp :-(

@tonybyng the manifest specifies...

"background": {
    "page": "index.html#/event-page",
    "persistent": true
  },

...but the #/event-page hash on the background page isn't supported yet. This falls out a try-catch in the app which causes another exception and it halts the load.

I've patched the try-catch bug our side. You can try changing the page from index.html#/event-page to index.html which gets it to load in correctly, but the extension remains pretty unfunctional with our implementation of the api.

If I get a chance before the next release, I'll have a look to see if I can find out why it's not working properly

Hi. Thanks for that. Yep, got it appearing as an extension now but as you say, it does nothing but show a small white window with no content so obviously not going to work without some effort on your part I guess.

In my never-ending quest to make all things Dark Mode, I have successfully installed two Dark Mode chrome extensions that seem to work flawlessly.

Slack++ 1.2.15 (for Slack)
Dark Reader 4.6.12-0 (for everything else)

Slack++ just runs in the background and does what it does best, but Dark Reader shows the Extension icon in the upper-right corner and is a per-page Dark Mode solution. You can click it and turn it on and off or adjust any of it's features on a per-tab basis.

Let the world know there's finally universal Dark Mode in Wavebox! ;)

@wishx thanks for trying those out and letting us know. I’ve added them into the store listing so you can install with one click as with the others. Dark Reader is available to all users as its open source, whereas Slack++ is only available on pro as its proprietary. When you get a chance can you drop wavebox support a quick email. Thanks!

@Thomas101 I just tried to install Enpass Password Manager 6.0.0.2-0 and it appears in the upper-right with the other extensions, but it doesn't work. It doesn't even display the name of the extension when rolled-over with the mouse. Also, when you try to make changes in the Options, the window pops up to change things, but they aren't persistent. Upon reopening the window again, the changes haven't been kept.

Chrome Extension here

It's great that we have the LastPass extension, but Enpass would be nice to have as well.

Google Translator Lite 0.2.8-0 doesn't work either. It loads, but when you click on it, it doesn't fully load the extension. An inline translator almost seems like a necessity, especially when your company is in several other countries like the one I work for.

Thanks!

Extension site

uBlock Origin 1.17.4 loads with Wavebox, but can't fully load or display settings (or load blacklists/whittelists) which ultimately makes it useless, but at least it's partially there, which is a step in the right direction.

Extension
Website/github

@Thomas101 I tried to sideload ZenHub but it throws CORS errors on every page: https://paste2.org/0W2IfVPI Is there anything I can do to help get it working?

I am sideloading the zoom.us scheduling plugin for google calendar. It requires logging into zoom.us. When the pop up for login shows up, it gets a network error. Seems like it is not allowed to contact outside of the current domain

Bitwarden - Free Password Manager 1.37.0-0 loads, but doesn't work. You have to log into the BitWarden account for it to retrieve your passwords and logins, but in Wavebox, it just "spins" meaning it's trying but can't get there.

BitWarden is Open Source, free and portable across all platforms, so it would be nice to be able to use it in Wavebox on all platforms, too!

https://bitwarden.com/

image

image

Is it worth considering a page on Github with details of extensions that are successfully working etc?

Working: Category Tabs for Google Keepâ„¢17.2.2

Food for thought: it might be worth dedicating a release just to password manager add-ons. Make sure the top 5 work and release that as it's own update.

@Thomas101 It looks like the first problem to come up when running the Bitwarden extension is that it uses the chrome.idle api. Is there any chance of exposing that API to extensions?

this.idle = chrome.idle || browser.idle;

In the meantime I submitted a PR to Bitwarden.

@wishx @lots0logs We're busy working on a new extension framework. Bitwarden and a bunch of the other password managers are some of the extensions we've got in for the first run and working to push this out to the beta channel over the next couple of months once we've covered all the edge cases :-) . I don't want to say too much, but here's a little teaser...

Jul-04-2019 18-12-11

@Thomas101 Hoping that the new extensions changes will support clickup. Ive had to stop using wavebox for my gmail because incoming emails need to flagged into clickup and I was spending so much time opening up gmail externally to do things with clickup that I just now use it outside which defeats the object ;-(

please add the WebEx Content Sharing extension!

@tonybyng looks like all the extension rework is paying off - was able to load Clickup without much of an issue. Added to the beta list of extensions to go with the others :)

Jul-05-2019 10-12-03

@Thomas101 you sir are a gentleman. Gimme gimme gimme ;-) More than happy to be a beta tester

I'll post when there's a beta available to try :)

@Thomas101 Any chance ZenHub will be included in the first round when this goes beta?

@lots0logs it will be in the first round :). We're working to get a preview version out to try over the next few weeks :-)

@Thomas101 Just thought I'd ask about clickup again to see if you are any closer and I see 3 weeks ago you were looking to get something in the next couple of weeks. Does this mean it might be imminent ?

@Thomas101 Just thought I'd ask about clickup again to see if you are any closer and I see 3 weeks ago you were looking to get something in the next couple of weeks. Does this mean it might be imminent ?

I know it seems like I said a couple of weeks last time, but we're aiming to have the first cut available in the next two weeks. We are pretty close now :)

@wishx @lots0logs We're busy working on a new extension framework. Bitwarden and a bunch of the other password managers are some of the extensions we've got in for the first run and working to push this out to the beta channel over the next couple of months once we've covered all the edge cases :-) . I don't want to say too much, but here's a little teaser...

What's the update on Bitwarden? I'm dying over here! :D :skull_and_crossbones:

@wishx Bitwarden will be in the same release, so same timeframe. I'll post an update to this post and a few others when it's available to try :)

Any ETA? Would instantly upgrade to Pro if it would be possible to add any Chrome extension!

@Thomas101 Are we any closer ?

Any ETA? Would instantly upgrade to Pro if it would be possible to add any Chrome extension!

I've been following Wavebox closely since I stopped using it for this reason and would also return to wavebox and spring for the premium product if this was an option.

Sorry for the radio silence! We've been working on a preview version of Wavebox and we're looking for testers who are eager to give it a try. This has the extension support that I showed earlier ;-). If you're eager to give it a try there's some more info here https://github.com/wavebox/waveboxapp/issues/1128

Was this page helpful?
0 / 5 - 0 ratings