firenvim
firenvim copied to clipboard
Websocket error on brave (works in other browsers)
-
OS Version: Manjaro Linux x86-64 (5.4.80-2-MANJARO)
-
Browser Version: Brave Browser 87.1.17.75
-
Browser Addon Version: 0.1.32
-
Neovim Plugin Version: 0.1.32
-
What I tried to do: The plugin did not work. I went through the entire Troubleshooting guide and did not get any errors in
/tmp/firenvim_errors. The extension works as expected onchromiumandfirefox(with both default and custom settings ininit.vim). I have tried turning off all the other extensions but it does not help. -
What happened: The
consolereports this error -
WebSocket connection to 'ws://127.0.0.1:33109/18160844162420075250248496227241638566022564553562172694541923103911554059439334' failed: Unknown reason
Here is a complete log:
nvimui.js:4338 (2) [Array(4), {…}]
nvimui.js:4581 WebSocket connection to 'ws://127.0.0.1:35971/28604202934265641513667369465714350804237624605535763271935587662231299082685' failed: Unknown reason
neovim @ nvimui.js:sourcemap:4581
(anonymous) @ nvimui.js:sourcemap:4340
This is weird, I know of several persons who managed to get Firenvim to work with Brave. Does this also happen if you use a fresh Brave profile? How did you install Brave?
I installed brave-bin from the AUR. Here is the full version information:
Version 1.17.75 Chromium: 87.0.4280.88 (Official Build) unknown (64-bit)
I tried the extension in a new profile and this is the new error I get:
configuration.ts:79 Uncaught (in promise) Error: Error: your settings are undefined. Try reloading the page. If this error persists, try the troubleshooting guide: https://github.com/glacambre/firenvim/blob/master/TROUBLESHOOTING.md
at getConfForUrl (configuration.ts:79)
at getConf (configuration.ts:67)
at content.ts:251
configuration.ts:79 Uncaught (in promise) Error: Error: your settings are undefined. Try reloading the page. If this error persists, try the troubleshooting guide: https://github.com/glacambre/firenvim/blob/master/TROUBLESHOOTING.md
at getConfForUrl (configuration.ts:79)
at getConf (configuration.ts:67)
at Object.nvimify (content.ts:45)
at forceNvimify (functions.ts:70)
at content.ts:140
at onMessage (browser-polyfill.js:1076)
getConfForUrl @ configuration.ts:79
getConf @ configuration.ts:67
nvimify @ content.ts:45
forceNvimify @ functions.ts:70
(anonymous) @ content.ts:140
onMessage @ browser-polyfill.js:1076
It still works on firefox and chromium.
On 12/9/20 6:07 PM, Dileep Kishore wrote:
|configuration.ts:79 Uncaught (in promise) Error: Error: your settings are undefined. Try reloading the page. If this error persists, try the troubleshooting guide: https://github.com/glacambre/firenvim/blob/master/TROUBLESHOOTING.md at getConfForUrl (configuration.ts:79) at getConf (configuration.ts:67) at content.ts:251 configuration.ts:79 Uncaught (in promise) Error: Error: your settings are undefined. Try reloading the page. If this error persists, try the troubleshooting guide: https://github.com/glacambre/firenvim/blob/master/TROUBLESHOOTING.md at getConfForUrl (configuration.ts:79) at getConf (configuration.ts:67) at Object.nvimify (content.ts:45) at forceNvimify (functions.ts:70) at content.ts:140 at onMessage (browser-polyfill.js:1076) getConfForUrl @ configuration.ts:79 getConf @ configuration.ts:67 nvimify @ content.ts:45 forceNvimify @ functions.ts:70 (anonymous) @ content.ts:140 onMessage @ browser-polyfill.js:1076 |
Ah, so the problem actually is that neovim can't be started! What's the git hash of the firenvim commit currently checked out on your computer?
I just updated and the plugin (773f50dec03e1531a58a4d041a0e2f8799ef4540) and now it does not work anywhere. I will try to go through the Troubleshooting guide again and let you know.
That earlier problem was because of an updated init.vim, I am now back to experiencing the bug I reported originally (works on firefox and chromium) and not on brave. I do not have any custom firenvim config enabled.
Brave version information (installed from brave-bin AUR:
Version 1.18.70 Chromium: 87.0.4280.101 (Official Build) unknown (64-bit)
Here's the error that pops up on the console on txti.es:
nvimui.js:4338 (2) [Array(4), {…}]
nvimui.js:4581 WebSocket connection to 'ws://127.0.0.1:43287/168074330273481988215682947413511467970321057608620487688588959432893222481622' failed: Unknown reason
neovim @ VM12 nvimui.js:4581
(anonymous) @ VM12 nvimui.js:4340
FirenvimElement.ts:218 addRange(): The given range isn't in document.
(anonymous) @ FirenvimElement.ts:218
setTimeout (async)
refocus @ FirenvimElement.ts:210
detachFromPage @ FirenvimElement.ts:199
killEditor @ functions.ts:116
(anonymous) @ content.ts:150
onMessage @ browser-polyfill.js:1076
FirenvimElement.ts:218 addRange(): The given range isn't in document.
(anonymous) @ FirenvimElement.ts:218
setTimeout (async)
refocus @ FirenvimElement.ts:210
focusOriginalElement @ FirenvimElement.ts:242
_focusInput @ functions.ts:24
killEditor @ functions.ts:118
(anonymous) @ content.ts:150
onMessage @ browser-polyfill.js:1076
FirenvimElement.ts:218 addRange(): The given range isn't in document.
(anonymous) @ FirenvimElement.ts:218
setTimeout (async)
refocus @ FirenvimElement.ts:210
(anonymous) @ FirenvimElement.ts:232
setTimeout (async)
focus @ FirenvimElement.ts:231
attachToPage @ FirenvimElement.ts:157
(anonymous) @ content.ts:100
nvimify @ content.ts:90
async function (async)
nvimify @ content.ts:88
Did you get a "Firenvim installed for Brave" message when you ran firenvim#install()? What does find ~ -iname "firenvim.json" print when ran in your shell?
It installs fine for Brave, I can see the firenvim.json under ~/.config/BraveSoftware/Brave-Browser/NativeMessagingHosts.
find ~/.config -iname "firenvim.json" prints:
find ~/.config -iname "firenvim.json"
/home/dileep/.config/chromium/NativeMessagingHosts/firenvim.json
/home/dileep/.config/google-chrome/NativeMessagingHosts/firenvim.json
/home/dileep/.config/BraveSoftware/Brave-Browser/NativeMessagingHosts/firenvim.json
This is very confusing :(
Could you insert ps -aef --forest -p $$ > /tmp/firenvim_tree in ~/.local/share/firenvim/firenvim, just before the exec line?
After doing that, try using firenvim a few times on txti.es and then please upload /tmp/firenvim_tree here (you can remove everything except the tree that contains ps -aef).
Sure. Here it is.
bat /tmp/firenvim_tree | grep -Ein "brave|nvim|firenvim" > /tmp/firenvim_ps
Here is the file: firenvim_ps.log
I'm not seeing the ps -aef tree in your log file, did you remove it?
I added it to ~/.local/share/firenvim/firenvim
8 │ ps -aef --forest -p $$ > /tmp/firenvim_tree
9 │ # exec '/usr/bin/nvim' --headless --cmd 'let g:started_by_firenvim = v:true' -c 'call firenvim#run()'
10 │ exec '/usr/bin/nvim' --headless --cmd 'let g:started_by_firenvim = v:true' -c 'call firenvim#run()' 2>>/tmp/firenvim_errors
Then ran bat /tmp/firenvim_tree | grep -Ein "brave|nvim|firenvim" > /tmp/firenvim_ps.log on the output. Do you need the whole tree?
I wanted the branch that contains the ps -aef in the hope that we would be able to learn something about the brave process that started the firenvim script (and thus ps).
I see that you've also changed the firenvim script to output errors to /tmp/firenvim_errors. Do you have anything in there?
I couldn't find that branch.
That's understandable, there's lots of junk firenvim process in there :/. Does /tmp/firenvim_errors contain any information?
Could you also use the brave dev tools to inspect the headers and frames of the websocket connection? I believe the dev tools should be similar to chrome's.
The file /tmp/firenvim_errors is empty. Looks like the WebSocket request just fails? Here are the headers:
Request URL: ws://127.0.0.1:36667/39704399542995730930256317713532052871541084053735298472541336226190112908615671
There is no response body. It just says data:undefined
This is very surprising. Could you capture the traffic (basically loading txti.es + attempting to load firenvim) with wireshark/tcpdump and upload it here? Hopefully this will be the last piece of information I need to figure out what's going on.
I finally found the problem! It looks like brave blocks this WebSocket connection as a cross-site tracker. This did not happen in earlier versions of brave. Do you have any solutions to fix this?
No, I don't :/. You should probably report this issue to Brave, webextensions shouldn't be affected by the browser's tracking protections.
I just created a post on the brave community
It looks like the only option is to disable the brave adblock and use something else.
Great, I guess I'll close this issue then as there's a workaround and there's nothing I can do as a webextension developper. Thanks for posting the workaround here! :)
Note that in theory there is something Brave could do to make Firenvim work with its ad blocker: firenvim only connects to localhost from an iframe whose document is located in webextension storage (that's moz-extension:// on Firefox, not sure what it is in Brave), so Brave's adblocker could check if the connection is being made from a webextension document and allow the connection if it is.
I won't be submitting this piece of information to Brave's forums because I don't want to create an account there, but feel free to do it :)
It looks like the only option is to disable the
braveadblock and use something else.
Hey man! How are you using firenvim at the moment? Do you disable the shield globally?
I just have the trackers and ad-blocking on the shields disabled and use Ghosterly instead
It seems to be working if I set the fingerprint blocking to "Standard" instead of "Strict"