TabFern
TabFern copied to clipboard
Open/close tab-by-tab
Edit As of 2019-09-26, the former issue35 branch is now master!
Ability to open or close one tab at a time, rather than having to do the entire window at once. Requested by Blank Makkara via user review 2017/09/07.
Known issues
Bugs
- [x] The tests are hard to read and hard to modify. I need to write a better skeleton so that I can easily write tests expressing the semantics I want.
- [x] Given tabs
open 1, closed 2, open 3, open 4, drop 4 before 3. It snaps to after 1 rather than staying where you dropped it. - [x] When behaviour like that happens, and then you middle-click to open a new tab from a tab that is not the rightmost, the mapping of indices to windows is thrown off.
- [x] Moved to #280
- [x] Need to finish implementing collapse option from 25752b33290885b25a83bf84ef0b097fee176aea - Edit will not be implemented at this time- see 2deb0684eb30d4f1d230d8fa79df04f073d3d5ed
- [x] Moved to #281
- [x] In a partially-open window, drag an open tab (in the browser window) from after a gap to before, and then back. Sometimes the tab's tree entry will skip a closed tab, then jump to after two open tabs, when moving from left to right back across the gap. Edit We now have well-defined behaviour for this case. The tab will stay on the same side of the gap until it has to jump.
Design questions
- [x] Moved to #282
- [x] Moved to #283
Also requested by LateNightHacks via user review 2017/10/14.
Also requested by a user via email 2017/10/25.
Closing individual tabs requested by Garreth Tinsley 2018/04/12 via review.
@r4j4h @ShervinM @bluikko Anybody who is able to load unpacked and try it out --- This is ready for you to test! :tada: :tada: As always, backup early and often :) .
Too many things are blocked on 35 at this point, and tied up in the switchover to the brunch build system (#4). I am going to pause this issue, finish the switchover, then resume work on this.
Now back to working on this after the 0.2.0 release. You can follow development on the issue35 branch.
Chris,
On 2019-04-08 22:15, Chris White wrote:
Now back to working on this after the 0.2.0 release. You can follow development on the issue35 branch [1].
I have been using this version on my desktop quite happily since the last communication but now it appears I am going to be spending more time away from home and more time on my laptop - which I hardly ever use. I am away this weekend and the older #35 TabFern installed on the laptop wasn't working so I deleted the extension from Chrome and tried to re-load the unpacked version but kept getting errors - I got the same problems with the latest git stuff and even the standard version . .
Could I trouble you to check if the current #35 git can be installed on your end?
I am just about to update this laptop from Fedora x86_64 v29 to v30 and it would be good to get a successful re-install of the #35 v TF then . .
Thanks!
Phil.
Phil, what Chrome version and what window manager? What are the errors you are seeing? As a reminder, after you clone and checkout, you have to npm install and npx brunch b to build into public. Are the errors on the install, build, or upon loading unpacked?
Chris,
Thanks for the quick response - sorry about my slow reply - I am at my brother's place ATM.
On 2019-06-08 09:30, Chris White wrote:
Phil, what Chrome version and what window manager?
Version 75.0.3770.80 (Official Build) (64-bit) XFCE4
What are the errors you are seeing? As a reminder, after you clone and checkout, you have to npm install and npx brunch b to build into public. Are the errors on the install, build, or upon loading unpacked?
Ah . . I missed a few steps - I have created a README_TabFern.txt file now with all the prelim stuff written down for future reference . .
OK, I can now build and install the unpacked extension but I am not getting anything loaded from clicking / double-licking on the icon - I have tried both:
TabFern-issue35 TabFern-switchover
I did get:
npm install # TabFern-switchover
added 1145 packages from 1115 contributors and audited 13103 packages in
31.308s
found 18 vulnerabilities (3 low, 1 moderate, 14 high)
run npm audit fix to fix them, or npm audit for details
npm audit fix
added 59 packages from 13 contributors, removed 19 packages and updated 76 packages in 32.66s fixed 15 of 18 vulnerabilities in 13103 scanned packages 3 vulnerabilities required manual review and could not be updated
but I don't know if any of that is relevent?
Thanks again,
Phil.
On 2019-06-10 02:56, Philip Rhoades wrote:
Chris,
Thanks for the quick response - sorry about my slow reply - I am at my brother's place ATM.
On 2019-06-08 09:30, Chris White wrote:
Phil, what Chrome version and what window manager?
Version 75.0.3770.80 (Official Build) (64-bit) XFCE4
What are the errors you are seeing? As a reminder, after you clone and checkout, you have to npm install and npx brunch b to build into public. Are the errors on the install, build, or upon loading unpacked?
Ah . . I missed a few steps - I have created a README_TabFern.txt file now with all the prelim stuff written down for future reference . .
OK, I can now build and install the unpacked extension but I am not getting anything loaded from clicking / double-licking on the icon - I have tried both:
TabFern-issue35 TabFern-switchover
I did get:
npm install # TabFern-switchover
added 1145 packages from 1115 contributors and audited 13103 packages in 31.308s found 18 vulnerabilities (3 low, 1 moderate, 14 high) run
npm audit fixto fix them, ornpm auditfor detailsnpm audit fix
added 59 packages from 13 contributors, removed 19 packages and updated 76 packages in 32.66s fixed 15 of 18 vulnerabilities in 13103 scanned packages 3 vulnerabilities required manual review and could not be updated
Also, I left this out:
npx brunch b
DEPRECATION WARNING on line 22, column 8 of /home/phr/src/javascript/TabFern-switchover/app/settings/main.scss: Including .css files with @import is non-standard behaviour which will be removed in future versions of LibSass. Use a custom importer to maintain this behaviour. Check your implementations documentation on how to create a custom importer.
Browserslist: caniuse-lite is outdated. Please run next command npm update caniuse-lite browserslist
01:46:19 - info: compiling
01:46:20 - info: compiled 57 files into 7 files, copied 43 in 5.1 sec
P.
Phil, the security warnings and deprecation warnings are on my list. To the best of my knowledge, none of the security warnings affect us because those modules don't actually wind up in TabFern - they are only used during the build process. The deprecation warnings are nothing to worry about per this.
On my local machine, on branch issue35, I can do npm install and npx brunch b, then load public/ as an unpacked extension successfully on Chrome 74. I'll try updating and see if I notice any difference.
Chris,
On 2019-06-10 08:29, Chris White wrote:
Phil, the security warnings and deprecation warnings are on my list. To the best of my knowledge, none of the security warnings affect us because those modules don't actually wind up in TabFern - they are only used during the build process. The deprecation warnings are nothing to worry about per this [1].
On my local machine, on branch issue35, I can do npm install and npx brunch b, then load public/ as an unpacked extension successfully on Chrome 74. I'll try updating and see if I notice any difference.
Yes, I can load the unpacked extension but nothing happens when I click or double-click it . .
P.
Seems to work fine for me on Chrome 75.0.3770.80 (Official Build) (64-bit) on Windows. Clicking and double-clicking the icon both work. On chrome:extensions, does the TabFern box have an "Errors" button? If so, what are the errors?
Chris,
For #35: Uncaught Error: Cannot find module 'process' from '/' throw new Error("Cannot find module '" + name + "' from '" + loaderPath + "'");
I am travelling and won't get access to my usual email until late tonight - if you are motivated, you could cc to:
philip DOT rhoades AT gmail DOT com
Thanks! Phil.
Phil, I've run into that before, and it is related to the build, not to TF's own code. What node and npm versions are you using on the system that has the problem?
I haven't read it on comments. Don't forget to add a property on backup to flag if a tab is opened or closed!
Regardless if a window is opened or closed, each its tabs should be styled to show if they are opened or closed. When a window is opened, of course its closed tabs should remain so.
@HikariWS thanks for the idea! Would you please open it as a separate issue? For this one, closing a window closes all its tabs, and the open/closed state is not saved. One step at a time :) . I have no objection to adding the feature you describe later on.
Regardless if a window is opened or closed, each its tabs should be styled to show if they are opened or closed. When a window is opened, of course its closed tabs should remain so.
+1
Edit As of 2019-09-26, the former issue35 branch is now master!
Chris,
It looks like the last time checked this was before 2019-09-26 but I just removed TF and re-installed from the Chrome Web Store but clicking on a single tab opens all the tabs in the saved window so I thought maybe the GitHub version is the one that is necessary so I cloned that but get a stack of errors with:
npm install
.
.
gyp ERR! cwd /home/phr/src/chrome_extensions/TabFern/TabFern/node_modules/node-sass
gyp ERR! node -v v12.13.1
gyp ERR! node-gyp -v v3.8.0
gyp ERR! not ok
Build failed with error code: 1
npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/fsevents):
npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm ERR! code ELIFECYCLE
npm ERR! errno 1
npm ERR! [email protected] postinstall: `node scripts/build.js`
npm ERR! Exit status 1
npm ERR!
npm ERR! Failed at the [email protected] postinstall script.
npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in:
npm ERR! /home/phr/.npm/_logs/2020-08-08T10_46_21_147Z-debug.log
Am I missing something again?
Thanks, Phil.
Hi Phil,
I myself had a bit of a struggle with this too. This is what ended up working for me:
- downgrade node to v10.21.0
- run npm audit fix
- npm rebuild node-sass
hope this helps.
Csaba ᐧ
On Sat, Aug 8, 2020 at 12:51 PM philiprhoades [email protected] wrote:
Edit As of 2019-09-26, the former issue35 branch is now master!
Chris,
It looks like the last time checked this was before 2019-09-26 but I just removed TF and re-installed from the Chrome Web Store but had the same problem so I thought maybe the GitHub version is the one that is necessary so I cloned that but get a stack of errors with:
npm install
. . gyp ERR! cwd /home/phr/src/chrome_extensions/TabFern/TabFern/node_modules/node-sass gyp ERR! node -v v12.13.1 gyp ERR! node-gyp -v v3.8.0 gyp ERR! not ok Build failed with error code: 1 npm WARN optional SKIPPING OPTIONAL DEPENDENCY: [email protected] (node_modules/fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for [email protected]: wanted {"os":"darwin","arch":"any"} (current: {"os":"linux","arch":"x64"})
npm ERR! code ELIFECYCLE npm ERR! errno 1 npm ERR! [email protected] postinstall: node scripts/build.js npm ERR! Exit status 1 npm ERR! npm ERR! Failed at the [email protected] postinstall script. npm ERR! This is probably not a problem with npm. There is likely additional logging output above.
npm ERR! A complete log of this run can be found in: npm ERR! /home/phr/.npm/_logs/2020-08-08T10_46_21_147Z-debug.log
Am I missing something again?
Thanks, Phil.
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/cxw42/TabFern/issues/35#issuecomment-670875086, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABRG7NQO2OIIBXD55QB5GWDR7UU2RANCNFSM4D2CFMPA .
- downgrade node to v10.21.0
Hmm . . that's tricky for me - I prefer to stick to the Fedora Linux packages if at all possible . . I get:
dnf install nodejs-10.21.0
keybase All matches were filtered out by modular filtering for argument: nodejs-10.21.0
Error: Unable to find a match: nodejs-10.21.0
dnf --showduplicates list nodejs
Installed Packages
nodejs.x86_64 1:12.13.1-1.fc31 @updates
Available Packages
nodejs.x86_64 1:12.10.0-1.fc31 fedora
nodejs.x86_64 1:12.16.3-1.fc31 updates:w
- so no luck there unless node v10.21.0 == nodejs.x86_64 1:12.10.0-1 ?? . .
Do you know what the issue is? - is it likely that this will be resolved in the future? - I don't mind building but installing from the Chrome Web Store is quick and easy . .
Maybe I should stick with 0.2.1-pre.1 FTTB?
Thanks, Phil.
If you use nvm (node version manager) you can have multiple versions of node installed side by side and easily switch between versions. nvm install v10.21.0 nvm ls - shows you the list of installed versions nvm use [version] to switch nvm use stable would swhich you back to stable
But if this is not an option you can try version 12.16.3-1
Btw the issue is the node-sass guys need to sort out their compatibility issues with the new node version.
I'm on mobile ATM and won't be able to dig up the link that explained the node-sass issue. But I believe this will be addressed in the future.
Hope that helps.
Csaba
On Sat, Aug 8, 2020, 18:17 philiprhoades [email protected] wrote:
- downgrade node to v10.21.0
Hmm . . that's tricky for me - I prefer to stick to the Fedora Linux packages if at all possible . . I get:
dnf install nodejs-10.21.0 keybase All matches were filtered out by modular filtering for argument: nodejs-10.21.0 Error: Unable to find a match: nodejs-10.21.0
dnf --showduplicates list nodejs Installed Packages nodejs.x86_64 1:12.13.1-1.fc31 @updates Available Packages nodejs.x86_64 1:12.10.0-1.fc31 fedora nodejs.x86_64 1:12.16.3-1.fc31 updates:w
- so no luck there unless node v10.21.0 == nodejs.x86_64 1:12.10.0-1 ?? . .
Do you know what the issue is? - is it likely that this will be resolved in the future? - I don't mind building but installing from the Chrome Web Store is quick and easy . .
Maybe I should stick with 0.2.1-pre.1 FTTB?
Thanks, Phil.
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/cxw42/TabFern/issues/35#issuecomment-670946578, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABRG7NVS53IZJBTJXQHHRGLR7V3BLANCNFSM4D2CFMPA .
I just realized that this might be solved by buying the node-sass version number higher. There could be a newer version which is compatible with the node version you have on your machine.
On Sun, Aug 9, 2020, 08:19 Csaba Garay [email protected] wrote:
If you use nvm (node version manager) you can have multiple versions of node installed side by side and easily switch between versions. nvm install v10.21.0 nvm ls - shows you the list of installed versions nvm use [version] to switch nvm use stable would swhich you back to stable
But if this is not an option you can try version 12.16.3-1
Btw the issue is the node-sass guys need to sort out their compatibility issues with the new node version.
I'm on mobile ATM and won't be able to dig up the link that explained the node-sass issue. But I believe this will be addressed in the future.
Hope that helps.
Csaba
On Sat, Aug 8, 2020, 18:17 philiprhoades [email protected] wrote:
- downgrade node to v10.21.0
Hmm . . that's tricky for me - I prefer to stick to the Fedora Linux packages if at all possible . . I get:
dnf install nodejs-10.21.0 keybase All matches were filtered out by modular filtering for argument: nodejs-10.21.0 Error: Unable to find a match: nodejs-10.21.0
dnf --showduplicates list nodejs Installed Packages nodejs.x86_64 1:12.13.1-1.fc31 @updates Available Packages nodejs.x86_64 1:12.10.0-1.fc31 fedora nodejs.x86_64 1:12.16.3-1.fc31 updates:w
- so no luck there unless node v10.21.0 == nodejs.x86_64 1:12.10.0-1 ?? . .
Do you know what the issue is? - is it likely that this will be resolved in the future? - I don't mind building but installing from the Chrome Web Store is quick and easy . .
Maybe I should stick with 0.2.1-pre.1 FTTB?
Thanks, Phil.
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/cxw42/TabFern/issues/35#issuecomment-670946578, or unsubscribe https://github.com/notifications/unsubscribe-auth/ABRG7NVS53IZJBTJXQHHRGLR7V3BLANCNFSM4D2CFMPA .
If you use nvm (node version manager) you can have multiple versions
That still means managing node outside the Fedora RPM package manager . .
But if this is not an option you can try version 12.16.3-1
. . got the same errors . .
Btw the issue is the node-sass guys need to sort out their compatibility issues with the new node version.
Oh right.
But I believe this will be addressed in the future.
That would be good! I can continue with the old version without too much hassle . .
I just realized that this might be solved by buying the node-sass version number higher. There could be a newer version which is compatible with the node version you have on your machine.
There is no node-sass rpm so I am not sure what is going on really . . could it be bundled in with nodejs like npm is? - checking:
Summary : JavaScript runtime
Description :
Node.js is a platform built on Chrome's JavaScript runtime
for easily building fast, scalable network applications.
Node.js uses an event-driven, non-blocking I/O model that
makes it lightweight and efficient, perfect for data-intensive
real-time applications that run across distributed devices.
/usr/bin/node
/usr/lib/.build-id
/usr/lib/.build-id/86
/usr/lib/.build-id/86/b9ed2c1ec6af437cb2863b0dee1567fbc90ca8
/usr/lib/dtrace
/usr/lib/dtrace/node.d
/usr/lib/node_modules
/usr/lib/rpm/fileattrs/nodejs_native.attr
/usr/lib/rpm/nodejs_native.req
/usr/share/doc/nodejs
/usr/share/doc/nodejs/AUTHORS
/usr/share/doc/nodejs/CHANGELOG.md
/usr/share/doc/nodejs/GOVERNANCE.md
/usr/share/doc/nodejs/README.md
/usr/share/doc/nodejs/onboarding.md
/usr/share/man/man1/node.1.gz
/usr/share/node
/usr/share/systemtap
/usr/share/systemtap/tapset
/usr/share/systemtap/tapset/node.stp
. . doesn't look like it . .
Thanks.
The idea is that you install node-sass and such via npm. Using node as it's meant to doesn't inhibit your ability to let Fedora update node.
@philiprhoades would you please open a separate issue for each troubleshooting request? That will help keep existing issues focused.
@csabag , @Luckz Thanks very much for helping Phil! I am thrilled to know that TF is building an actual community of users! :D :D :+1:
I have officially begin my own personal hackathon weekend! I am taking a few vacation days from work and am hoping to finally finish this issue by the end of the day Sunday! Fingers crossed :) .
Edit today's work:
- Traced one of the move-test failures ~~--- it seems to be in jstree~~
- Updated jstree to the latest release (3.3.10) + TF customizations
- ~~One regression:
jstree-multitype deletion updates the icon when removing the last multitypeno longer passes (thank goodness for a test suite!)~~ Fixed
To be continued!
I have now refactored app/win/main_tl to use app/win/model for onTabMoved handling! This was one of the major sticking points. Now the move logic can be tested and improved on its own.
The current behaviour is described in the following testcases. In general, when the user drags a tab in Chrome, we move it in the TF tree as little as possible. I am happy to discuss this behaviour if there are any questions. In the testcases, upper-case letters are open tabs and lower-case letters are closed tabs.
https://github.com/cxw42/TabFern/blob/52b6ca35bd1f4e22591d2ba020582d0a167ff524/t/spec/app-win-model.js#L547-L598
I am moving event handlers from main_tl.js to model.js so that they can be properly tested. I want to have as much confidence in those handlers as I can before releasing a fix to this issue. The code for this issue is all written, as far as I know, but much of it has been hiding in main_tl where I can't be sure if it works in all the cases I want it to ;) .
Today I switched onTabMoved, onTabCreated, and onTabAttached over to model.js \o/ . That included writing tests and updating code.
More to come tomorrow!
Edit Once I have all the event handlers testable and tested, I will squash and clean up my commits and submit a PR.
All: Please test with the issue35 branch if possible (as always, back up early and often ;) ). I think it is ready for others to try. It is now version 0.3.0-pre.1 --- I decided there are enough changes that 0.2.1->0.2.2 doesn't cut it :) .
I finished switching the tab functions over to model.js :tada: . I am not going to switch the window functions for now, since they are more heavily intertwined with other code in main_tl.
So far, I haven't noticed any feature problems. I squashed the commits into new branch https://github.com/cxw42/TabFern/tree/issue35rc --- same contents, but a cleaner history. Please let me know if you have any feedback on this prerelease!