TabFern icon indicating copy to clipboard operation
TabFern copied to clipboard

Open/close tab-by-tab

Open cxw42 opened this issue 8 years ago • 46 comments

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

cxw42 avatar Sep 08 '17 00:09 cxw42

Also requested by LateNightHacks via user review 2017/10/14.

Also requested by a user via email 2017/10/25.

cxw42 avatar Oct 15 '17 12:10 cxw42

Closing individual tabs requested by Garreth Tinsley 2018/04/12 via review.

cxw42 avatar Apr 13 '18 12:04 cxw42

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

cxw42 avatar Apr 15 '18 19:04 cxw42

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.

cxw42 avatar Mar 15 '19 13:03 cxw42

Now back to working on this after the 0.2.0 release. You can follow development on the issue35 branch.

cxw42 avatar Apr 08 '19 12:04 cxw42

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.

philiprhoades avatar Jun 08 '19 12:06 philiprhoades

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?

cxw42 avatar Jun 08 '19 13:06 cxw42

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.

philiprhoades avatar Jun 10 '19 06:06 philiprhoades

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

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.

philiprhoades avatar Jun 10 '19 07:06 philiprhoades

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.

cxw42 avatar Jun 10 '19 12:06 cxw42

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.

philiprhoades avatar Jun 10 '19 14:06 philiprhoades

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?

cxw42 avatar Jun 10 '19 15:06 cxw42

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.

philiprhoades avatar Jun 11 '19 05:06 philiprhoades

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?

cxw42 avatar Jun 11 '19 09:06 cxw42

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 avatar Jul 24 '20 22:07 HikariWS

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

cxw42 avatar Jul 25 '20 11:07 cxw42

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

philiprhoades avatar Aug 08 '20 09:08 philiprhoades

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.

philiprhoades avatar Aug 08 '20 10:08 philiprhoades

Hi Phil,

I myself had a bit of a struggle with this too. This is what ended up working for me:

  1. downgrade node to v10.21.0
  2. run npm audit fix
  3. 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 .

csabag avatar Aug 08 '20 14:08 csabag

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

philiprhoades avatar Aug 08 '20 16:08 philiprhoades

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:

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

csabag avatar Aug 09 '20 06:08 csabag

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:

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

csabag avatar Aug 09 '20 06:08 csabag

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.

philiprhoades avatar Aug 09 '20 16:08 philiprhoades

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.

Luckz avatar Aug 10 '20 18:08 Luckz

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

cxw42 avatar Aug 14 '20 13:08 cxw42

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 multitype no longer passes (thank goodness for a test suite!)~~ Fixed

To be continued!

cxw42 avatar Dec 10 '20 20:12 cxw42

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

cxw42 avatar Dec 11 '20 16:12 cxw42

Today's work!

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.

cxw42 avatar Dec 11 '20 22:12 cxw42

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

Today's work!

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.

cxw42 avatar Dec 12 '20 20:12 cxw42

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!

cxw42 avatar Dec 18 '20 15:12 cxw42