wavebox / waveboxapp

Wavebox, the revolutionary and feature-rich Chromium browser that's built for productive working across Google Workspaces, Microsoft Teams, ClickUp, Monday, Atlassian, Asana, AirTable, Slack, and every other web app you use to get work done.
https://wavebox.io
1.3k stars 135 forks source link

Sideloading Extensions #542

Open Thomas101 opened 6 years ago

Thomas101 commented 6 years ago

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"
  6. Restart Wavebox

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

Cris70 commented 6 years ago

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

Thomas101 commented 6 years ago

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!

cachrisman commented 6 years ago

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

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!

Thomas101 commented 6 years ago

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

cbtlr commented 6 years ago

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.

Thomas101 commented 6 years ago

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!

cbtlr commented 6 years ago

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.

Thomas101 commented 6 years ago

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

phileasb commented 6 years ago

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.

Thomas101 commented 6 years ago

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

phileasb commented 6 years ago

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

Thomas101 commented 6 years ago

@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

phileasb commented 6 years ago

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

phileasb commented 6 years ago

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

nmat commented 6 years ago

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

phileasb commented 6 years ago

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... 😞

RedcoatAsher commented 6 years ago

@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

Thomas101 commented 6 years ago

@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?)

RedcoatAsher commented 6 years ago

@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.

Thomas101 commented 6 years ago

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
lherlitz commented 5 years ago

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

cachrisman commented 5 years ago

@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.

wishx commented 5 years ago

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

tonybyng commented 5 years ago

@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.

Thomas101 commented 5 years ago

@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.

tonybyng commented 5 years ago

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 :-(

Thomas101 commented 5 years ago

@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

tonybyng commented 5 years ago

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.

wishx commented 5 years ago

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

Thomas101 commented 5 years ago

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

wishx commented 5 years ago

@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.

wishx commented 5 years ago

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

wishx commented 5 years ago

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

ToLive commented 5 years ago

I can't make PIA to work https://chrome.google.com/webstore/detail/jplnlifepflhkbkgonidnobkakhmpnmh ticket20190124_1353_2548

lots0logs commented 5 years ago

@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?

semmons99 commented 5 years ago

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

wishx commented 5 years ago

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

apidevlab commented 5 years ago

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

wishx commented 5 years ago

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.

lots0logs commented 5 years ago

@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.

Thomas101 commented 5 years ago

@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

tonybyng commented 5 years ago

@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 ;-(

eduardzijlstra commented 5 years ago

please add the WebEx Content Sharing extension!

Thomas101 commented 5 years ago

@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

tonybyng commented 5 years ago

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

Thomas101 commented 5 years ago

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

lots0logs commented 4 years ago

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

Thomas101 commented 4 years ago

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

tonybyng commented 4 years ago

@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 commented 4 years ago

@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 :)