-
-
Notifications
You must be signed in to change notification settings - Fork 53
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Can't type colon ":" and forward slash "/" #112
Comments
It happens also with my arch installation, both with Notion-app and notion-app-enhanced from the AUR. app-f1468bbbf91e50c2009a.js:1 Uncaught TypeError: y.at is not a function
at Object.b (app-f1468bbbf91e50c2009a.js:1)
at ge (app-f1468bbbf91e50c2009a.js:1)
at Pe (app-f1468bbbf91e50c2009a.js:1)
at Object.Te (app-f1468bbbf91e50c2009a.js:1)
at perform (app-f1468bbbf91e50c2009a.js:1)
at app-f1468bbbf91e50c2009a.js:1
at Function.withListenerIgnored (app-f1468bbbf91e50c2009a.js:1)
at Module.ve (app-f1468bbbf91e50c2009a.js:1)
at pe.handleMutation (app-f1468bbbf91e50c2009a.js:1)
at b.handleMutation (app-f1468bbbf91e50c2009a.js:1)
at b.delegateMutation (app-f1468bbbf91e50c2009a.js:1)
at app-f1468bbbf91e50c2009a.js:1
at app-f1468bbbf91e50c2009a.js:1
at Set.forEach (<anonymous>)
at B.emitUpdate (app-f1468bbbf91e50c2009a.js:1)
at B.handleMutations (app-f1468bbbf91e50c2009a.js:1)
at g.onMutations (app-f1468bbbf91e50c2009a.js:1)
at g.stopObservingAndHandleMutations (app-f1468bbbf91e50c2009a.js:1)
at MutationObserver.observer (app-f1468bbbf91e50c2009a.js:1) Similiar error is printed when typing ':' occurs. |
Same problem on my ArchLinux. Unable to type |
It's a bug related to the desktop app not being updated for a while, rather than something specifically caused by the notion-enhancer (which is why it doesn't happen when using the notion-enhancer as a browser extension). Thanks for reporting it here. There's no simple fix-all yet, but as a partial workaround: you can use Ctrl + / (or ⌘ + / on macOS) to trigger the slash menu. Alternatively, you can follow @dario-99's instructions below to manually polyfill the |
After my personal experimentation, I found out that the 【 That is, the 【Chromium】 engine of 【Notion】's 【Electron】 currently uses an older JS version; it cannot recognize the new version of the API syntax of the 【js file】 distributed by 【Notion】. |
From my point of view, based on my existing front-end knowledge, I would try to make a temporary fix like this (to get myself back to work quickly). 1. Upgrade the 【Chromium】 version used by 【Electron Application】, and then repackage an 【Electron Application】.But the problem I encountered is that I don't have the source code to build, so I can't complete the repackaging by replacing the 【electron version】 in 【package.json】. 2. By loading a 【polyfill.js】 script before 【app-[hash].js】 of 【Notion】 is loaded, the compatibility support for 【Array.at()】 syntax is completed.So that this exception error can be bypassed very well. (Or, I can write a 【Array.prototype.at = function(idx){ ... }】 by myself; it is not a complicated thing) The problem I encountered here is that I don't have a good means of inserting when 【html is loaded】. If it is in the Chrome browser, I can use 【TamperMonkey】 or other plug-ins, or even write a 【DevTools - Sources - Overrides】 to achieve it. But in 【Electron】, there is no support for 【extended plug-ins】; moreover, I cannot see the existence of 【app-[hash].js】 in 【DevTools —— Sources】. (It was placed in 【DevTools —— Application —— Scripts】??? Is it just me?) 3.There are some other alternatives, such as using 【BurpSuite】 for network capture, and inserting the loading
|
Searching the web i found a partial solution by imlementing manually the .at function: function at(n) {
// ToInteger() abstract op
n = Math.trunc(n) || 0;
// Allow negative indexing from the end
if (n < 0) n += this.length;
// OOB access is guaranteed to return undefined
if (n < 0 || n >= this.length) return undefined;
// Otherwise, this is just normal property access
return this[n];
}
const TypedArray = Reflect.getPrototypeOf(Int8Array);
for (const C of [Array, String, TypedArray]) {
Object.defineProperty(C.prototype, "at",
{ value: at,
writable: true,
enumerable: false,
configurable: true });
}
|
The @dario-99 answer works for me! I'm currently using Pop OS 22.04 (Ubuntu). To install the asar package, I use NPM with the following command: npm install -g asar Once it's installed, I proceed to unpack and pack the app.asar file. I prefer moving the app.asar to my user workspace, avoiding the need to configure my root user. After packing, I return the app.asar to notion path - /opt/Notion/resources/. |
Awesome Solution ! Brother, you accomplished what I always wanted to do. I have read a lot of Electron reverse analysis articles before, but I ignored 【the key details that are correctly used by you now】! Your solution filled my dead end and inspired me too! |
@hanshou101 Thanks! |
Thanks @dario-99 ;) it worked! |
Workaround works on MacOS as well. Thanks @dario-99 and @hanshou101 for your contributions. |
Thank you very much @dario-99 , @hanshou101 !! :-) |
Thanks a lot @dario-99 and @hanshou101 ! That's awesome. |
@giorgioindelicato11 Look here |
That's another +1 for the @dario-99 answer! Thanks a ton! |
First of all, thanks @dario-99 for the answer! However, I'm struggling to understand how exactly do I "inject the js script into the renderer/preload.js". I've tried to paste the code into the file with a text editor, but I don't know exactly where to place it. Could you/someone explain me how to proceed and help a n00b? :P |
@BrasileroPeDuro At the end of the file will be fine, let me now if it worked. |
It worked perfectly! Thanks a lot!! |
Similar issue on my end. |
I also ran into this a while ago on the AUR sudo pacman -S asar
cd "/opt/Notion Enhanced/resources"
sudo asar extract app.asar app
cd app
echo '"use strict;"' | sudo tee preload.new.js
echo 'function at(n) { n = Math.trunc(n) || 0; if (n < 0) n += this.length; if (n < 0 || n >= this.length) return undefined; return this[n]; }; const TypedArray = Reflect.getPrototypeOf(Int8Array); for (const C of [Array, String, TypedArray]) { Object.defineProperty(C.prototype, "at", {value: at, writable: true, enumerable: false, configurable: true }); }; console.log("Applied .at polyfill")' | sudo tee -a preload.new.js
cat renderer/preload.js | tail -n+2 | sudo tee -a preload.new.js
sudo mv preload.new.js renderer/preload.js
cd ..
sudo rm app.asar
sudo asar pack ./app app.asar
sudo rm -rf app |
👋 For anyone on Linux, I have built an updated AppImage repack of Notion: https://github.com/kidonng/notion-appimage It is inspired by notion-repackaged but with up-to-date Electron that fixes many issues, including this one. |
See #116 (comment) I wrote an automated patcher for Linux. |
@tkdemd1234 Try and inject the function provided by @dario-99 into the end of file |
Thank you for the solution. But this solution somehow breaks all other enhanced features for me. Even the theme is not apply after this fix |
I'm even more of a noob than you are. I'm a Mac OS user & while I was previously been able to fix the : and / problems, the new "window comes up, gray thing spins" problem has been beyond me. I've been recommended to not try anything with sudo (though I did anyway out of desperation) because I have zero idea how to code. What I did do was put the following code in the Terminal: function at(n) { const TypedArray = Reflect.getPrototypeOf(Int8Array); And then I put the following in the Developer Tools: npx @electron/asar extract "/Applications/Notion Enhanced.app/Contents/resources/app.asar" "/Applications/Notion Enhanced.app/Contents/resources/app" All of this, in the end, did not help at all. At this point, I'm really desperate to have the Notion Enhancer app back--I'm willing to give someone money to explain it to me like I'm a third-grader. And if I just have to give up on it, I guess I'll wait until a more substantial fix comes. I did already spend over three hours on this, to no avail. |
@esmewang27 you've got those the wrong way around, so I'm not surprised things didn't work for you. You shouldn't be running either of those snippets in either of those places. You have two options:
However, please note that this will not fix the issue described in #116. You can follow the same steps to fix that issue, but the code to paste into the file in step 6 is different. You will probably need to paste the code from both issues into that file for things to start working as normal. |
Hi @dragonwocky. I really appreciate your patience with an idiot like me who knows absolutely nothing about this (and greatly appreciates what you've created for us). This seems to have solved the issue. I am so relieved and grateful—is there some kind of tip jar that you have that I can contribute to? |
Hmm, can you show me what the output in the Notion DevTools console is? |
@dragonwocky Oh, I edited the post because I ended up figuring out the problem myself. And I wanted to thank you! Do you have a tip jar or something I can put money in? |
@esmewang27 glad you got it working! If it was a problem you think others may run into as well, it could be helpful to include your solution in the post for the next person who comes along 🙂 You can donate to me through my GitHub Sponsors profile: https://github.com/sponsors/dragonwocky |
Is this issue ever going to be fixed? This is literally making Notion unusable for me on Windows 10, so now I'm stuck looking for a replacement for this app. |
@dragonwocky is currently busy with exams, and is donating their free time to this project whenever the opportunity to do so arises. If you'd like to help this issue along, please consider a donation to support them, it goes a long way |
@matt-derrick you do realize that this is not the official Notion app, right? It's an unofficial mod that @dragonwocky has shared with the community. If you're "stuck looking for a replacement", perhaps consider the official desktop app. |
I apologize, I did not realize that. I am using the vanilla version of notion and having this same issue; I came across it in an internet search and should have been paying more attention. |
If you're using Notion's official app, I'd recommending ensuring that you're using the latest version by uninstalling the current app, downloading the latest build, and reinstall it. |
This is what I did on Windows 11, source is a comment by @dragonwocky on the Discord server (I have no idea if all these steps are necessary, someone please correct me if needed):
|
This helped me a lot, but I had to add the semicolon explained here: #116 (comment) |
Thank you for the script. |
Thanks for your detailed explanation!
|
What is happening?
all of a sudden, no update, no intentional change in host, I can't seem to type colon and backslash.
Every other character works.
Host recognizes the characters.
Operating system/browser name & version:
Ubuntu 22.04 , Asus K6500ZE,
uname -a
Linux BB-8 5.19.17-051917-generic #202210240939 SMP PREEMPT_DYNAMIC Mon Oct 24 09:43:01 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
Also tested on a ubuntu 20.04
notion-enhancer and/or notion-repackaged version:
notion-app-enhanced/unknown,now 2.0.18-1 amd64 [installed]
notion-enhancer configuration (enabled/disabled mods and their settings):
I used the default guide here.
I set dark mode.
I disabled spellcheck.
It was working flawlessly, never had an issue with it.
tried so far:
I'll try rolling back
Thanks for any help!
Edit by @dragonwocky: This also appears to affect copying/pasting with CTRL + C/CTRL + V. Notion is using the
Array.at()
method which is a newer JavaScript feature that isn't present in the current distribution of notion-repackaged. @dario-99 has detailed how to add a polyfill to the app to fix this below (thanks!) - #112 (comment).The text was updated successfully, but these errors were encountered: