Should I Make a Tree Style Tab Outliner?

Light themes are weird… but I got it to a state I think I’m okay with. Also, started adding support for checkboxes. And making the stylesheets more scalable, so stuff will still look right even on 8K monitors.


And a ton of other changes. Like, I tried Vivaldi, and … wow, that browser has a lot of weird behaviors and bugs. I had to add a bunch of workarounds for weird stuff it does.

1 Thank

Finally reached a major milestone today: It actually saves data.

As far as I can tell, this now makes it fully usable as a replacement for Tabs Outliner or Tree Style Tab.

In my testing, it’s handling session trees with about 9000 nodes just fine, and it remembers everything correctly when the extension or the browser is restarted. But, of course, I intend to do a lot more testing first. Gotta push it a lot harder though, and try all sorts of things in it, before I’ll feel it’s ready.

So now, while I continue testing, it’s time to start working on the stuff I need for an initial alpha release. Like… documentation and github and some sort of community server to stay in touch with users.

It’s weird that “alpha” is already capable of replacing two of the most popular browser extensions and a whole pile of less-popular ones. Some of what it does is already significantly better than its predecessors. But this “alpha” state really is just a small part of what I want it to do. Some of what’s left is significantly bigger and more difficult.

Anyway, now that it remembers stuff instead of resetting after each session, it’s starting to feel more “real”.

1 Thank

So this extension will be for Chrome and Firefox…
I might have missed this:
TK, once you’re finished creating this extension, are you going to release it to the public? :thinking:

For every browser I can figure out how to test on, really. Part of the point is to make it easy to switch between browsers, even multiple times per day if you want. Like, if you use Firefox at home but have to use Edge at work, it would let you use the same session on both. However, syncing between multiple browsers isn’t supported yet. I have to write the server first. So for now, it only runs a a single standalone instance, and you can optionally export and import sessions manually.

So far, I’ve tested with Firefox ESR 115, Firefox ESR 128, Chromium 133, and Vivaldi 7.3. I need to set up a virtual machine for testing in Edge, and maybe even Safari in some sort of Mac VM. Plus whatever other browsers people use.

If things go well, I may even try to figure out how to support phone browsers… but most of those don’t allow extensions, so it’s not a big priority. Also, phones don’t have enough screen space to use a sidepanel, and I’m not sure how useful the full-page view would be.

Yes. But I need to write the documentation first, set up a Discord or something (to chat with users), and do other tasks which aren’t directly code-related.

So far, I’ve just been focusing on code. But I’m finally far enough that other tasks need to be done too.

I guess “finally” isn’t quite the right word… I’m ahead of schedule compared to how long I thought this would take. But still. There’s a lot left to do, and much of what remains is going to be tricky.

3 Thanks

:+1:

Yes, and … I did.

It’s not finished, and won’t be for quite a while, but I made a first “alpha” release. It reached a point where I find it usable for practical real-world purposes in single-instance / standalone mode (client only, no server). So I figured that was a good time for a first release.

https://toykeeper.net/tktsto (redirects to the github repo)

I’m trying to be better about project infrastructure this time too, instead of dragging my feet about it like I did with Anduril. So it has a GitHub repo and a Discord server right from the start.

Most of the documentation doesn’t exist yet, and the docs which exist aren’t pretty, but it does at least generate an interactive tutorial during first boot. So it walks the user through the basics by having them actually use the program to proceed through the tutorial. Just open the sidebar by clicking the icon or pressing “Alt+T” or “Ctrl+1” (depends on the browser), and the tutorial should already be there.

1 Thank

I just found this thread today… I don’t quite understanding why it is in a forum related to lights… But I have been searching for an alternative for Tabs outlined for years. I made an account in this forum just to up vote and comment. Tabs outliner is certainly a simole and genius extension - one should be able to take notes about tabs and have them in an outline structure while browsing - that is IMO the most natural have to make sense of all the new information you run into while doing research on the internet for some purpose.
Thank you so much for making an alternative :slight_smile:

1 Thank

Because I’m not quite ready for a full public release yet, so I’ve only talked about it with people I already know from other projects… like flashlights. I do a lot of flashlight stuff, and this server is like"home".

When it’s ready for a wider audience, I’ll find a more appropriate place to announce it, and put it in the browser extension stores and stuff.

Thanks for letting me know there’s more than just me using it!

So far, only standalone mode works, but I have some pretty big plans for the rest.

2 Thanks

TK, I tried your extension on Chrome.
It looks very useful, but it’s not for me.
I have different needs, though I’m glad that your extension exists for others. :+1:

1 Thank

ok I am also making an account here just for this topic
I’ve been scouring for a chrome UX that does basically this without major issues (chrome required for work)
I’m loving the ethos of this project and what you’ve put together so far. I won’t lie, there are ones that are easier on the eyes but this is so far the front runner for best feature-rich tree style tab organiser on chrome for me. the ability to add things like note notes just makes the thing so much more useful than just tab organisation and it does everything in a seemingly light-weight way free of bloat
Just wanted to post this for your encouragement, this is great already, I’m currently daily driving it, and I’m keen to see how much further you take it

1 Thank

Made an account just to reply to this post. Like others I ended up here looking for a replacement for Tabs Outliner. My thoughts:

  1. Just ran it unpacked in Chrome, major props to you for this progress!
  2. I don’t like subscriptions, please offer one time purchases in your Patreon account.
  3. Please add custom CSS option, or at least a font control option, my Tabs Outliner instance can show 3-4x the content in the same real estate.
  4. I understand your position on free, but this project is just too much work, charge for it please. Users want to know they can relax and commit to the process it offers.
1 Thank

Thanks!

It allows the user to sign up, send a donation, and then cancel immediately if they like. Does it need more than that?

I haven’t gotten far enough to update my page there… but I’m hoping to get the app’s documentation ready and update the patreon site soon, and then actually try to announce the project. I’ve just been a bit busy with other stuff the past couple weeks.

Also trying to resolve a couple minor issues before I do a proper release. Like, in one corner case, closing a tab might not remove it from the tree when it should, so the user may sometimes have to remove unwanted old entries manually.

I have plans to add custom user styling… it’s just not there yet.

As for the amount of data shown, the zoom buttons don’t work yet, but every browser I’ve tried has other ways to zoom. For example, in Chrome, click the “Tab” button, then in the tab it opens, use Ctrl+Mousewheel or Ctrl with + and - to change the zoom level. It should change the sidebar zoom level too, and then you can close the tab view.

Or, once I figure out how, the built-in zoom buttons should handle this in a future version. I found the API for that; I just haven’t written the code yet.

I certainly hope people will be willing to help me fund ongoing development… but I fully intend to keep it open-source, because that’s the only way to build tech which is viable long-term. Like, I’m probably getting my broken spine fixed soon, and it’ll probably be fine, but if things go wrong … I don’t want that to end the project.

There’s also the whole server component, which people should be able to self-host in order to keep all their data private and free of corporate baggage. But once I get far enough, I’ll probably also set up some hosting for people who don’t want to do it themselves.

Anyway, there is still a lot to do. The current version is just an alpha pre-launch preview.

1 Thank

Hello @ToyKeeper

Like others, I made an account just to reply to this post. I was looking for a Tabs Outliner alternative and found yours which seems very promising!

Compared to something like TabFern, which has been around for a few years already with multiple contributors, I’m impressed how much you achieved alone in a few months only (judging by the readme on GitHub)!

I’m curious though if you tried the following open source alternatives before? And, if yes, why did you still go along and create your own from scratch instead of contributing/forking existing projects (which I assume would be easier)?

  • TabFern: Has the basic functionality but still doesn’t support multi-level hierarchy (limitations).
  • Link Tree: Seems to be almost feature complete? But has some paywalled features.
  • BrainTool: Not sure about its current state.
  • Other session managers such as Sessionic and Tab Session Manager.

I will soon test your extension along with the ones I mentioned (and other proprietary ones) and hopefully finally decide on a Tabs Outliner replacement (it sure is/was a brilliant extension!). I will sure come back with some feedback/suggestions/feature requests if you don’t mind.

Sorry for the lack of links, had to remove most of them to be able to post this as a new user.

1 Thank

Thanks!

Yes, I tried a bunch. I even tried modifying several of them. It ended up being easier to start from scratch than to fix an existing project.

  • TabFern: I skipped it precisely because of its limitations. The existence of those limitations tells me the core data model is fundamentally unsuitable for what I need, so I’d have to rewrite it all the way down to the core.

  • LinkTree: Proprietary, and not really the right category of tool. It has a very different purpose.

  • BrainTool: The concept is pretty close, but the implementation didn’t really work for my purposes and it’s not cross-browser. Was one of my top candidates though.

  • Tree Style Tab: Robust and mature but Firefox-only, and the data model is incapable of doing what I need… so I’d have to do a core rewrite. In particular, it can’t handle unloaded tabs or closed windows. It also got laggy even with just 100 tabs, and I’m aiming to handle at least 100,000.

  • Tab Session Manager: I tried combining this with Tree Style Tab, and even modified it to do automatic exports (because the built-in function was broken and has been for a while), but it was buggy, poorly maintained lately, doesn’t preserve order, and only served to partially fill a gap in TST’s feature set. I wrote a tool to convert TSM exports to plain text, and at some point I plan to add a feature to import TSM exports into TKTSTO.

  • Sidebery: Seemed promising, has a ton of features, but Firefox-only and when I tried it I found it very buggy. Like, errors started within just a few keystrokes. It also lacks some pretty major core stuff, so I’d need to make some pretty deep changes.

  • Tabs Outliner itself: I considered just rewriting it, and put a lot of work into doing so… but OMG that code is a mess. And since it’s proprietary, I’d have to rewrite the entire thing before it could be released, so it was faster and much cleaner to start from scratch. TKTSTO can already import two types of Tabs Outliner backups, and I might also release a small patch to enable people to export their old data more easily.

  • Link Map: Looked really promising, but is unmaintained, Chrome-only, and I’d have to add and change a LOT to make it work.

  • Misc others… I also looked into Session Paw, Tab Keeper, the other Tab Keeper, Flow, Tablerone, TabCloud, and several others.

So… I tried to not make my own first. I tried for like a decade. But that didn’t work, so eventually I gave up and made my own.

I can’t say which extension will meet your needs, but I couldn’t find one which met my needs (or could even feasibly be modified to suit my needs)… so I made one.

I’ve been a little sidetracked with “real life” stuff for the past month, but I plan on getting back to this project again promptly, because there’s still a lot more work to do.

2 Thanks

Hi [ToyKeeper]

Been using sideberry and tree style tabs (TST) or variations for years or decades. Just upgrade to FF ESR 140 with tabs unload functions and it appears like it has some sidebar functionality. Generally, I have six FF windows open and 300-40 tabs; organization is a pain. My background includes founder/ board/ management of software ventures and would be open to discussing your plans and progress further. It would be great to see a well thought through app or extension to manage windows and tabs. Reply if you wish to speak.

The most recent I’ve tested with is Firefox ESR 128.6.0esr-1~deb12u1. I should have a newer one to test with soon, but at least with 115 and 128 it works fine. You can also export the entire tree and import it into other browsers if desired… and once I get the server written, it’ll sync between multiple browsers automatically.

With TKTSTO I generally have about 5 to 20 windows and 1,000 to 10,000 items in my tree, and organization is pretty easy. It’s meant to handle up to 100,000 items, but so far I’ve only tested with up to 30,000 or so.

Realistically, however, when it gets up to 5 digits, it’s probably time to start dumping parts of the tree to external files because that’s probably old data which doesn’t need to be in the active set. So I move old stuff to a branch like “Done” or “Old” or “2023” or something like that… and then when it’s old enough, I drag the branch into a text editor to convert it to markdown, and remove the branch from the active tree.

For example, I’ll just use a small branch here, but under “Projects (Window, 487 items) → Stable → Keyboards”, I have a branch where I keep links to some of my personal layouts for various mechanical keyboards. If I drag it into BLF’s text editor widget, it produces this:

I simply dragged the branch heading a couple inches from the sidebar into the post editor widget, and this forum supports markdown, so it “just works”.

Anyway, I tried using TST (Tree Style Tabs) first, and with enough customization it sort of worked… but it started to struggle with just 100 tabs, even when most of them were unloaded. And it can’t handle closed/saved windows at all… it completely deletes them.

I tried using Sidebery for a while too, but I ran into bugs within the first few minutes which caused data corruption in the tree, so I didn’t stick with it for very long. From what I recall, the very first thing I tried (move a tab around the tree via hotkeys) caused corruption simply because I pressed the keys too fast. Because of this, I’ve spent extra effort making sure mine doesn’t break from that kind of thing. One of the tests I run is to set my key-repeat rate really fast, then hold down hotkeys to make sure the rapid-fire events won’t cause problems.

There’s a lot more I want to do with TKTSTO, but it has been my daily driver for months without any major issues, so it’s pretty usable as-is.

Was not able to find the extension in Firefox. My OS is LMDE5 linux. Am presently enduring 25 some hrs of restoring from a FF crash and tabs recovery effort - so will need to setup an experimental platform to explore your extension. But if you wish to talk by phone, via Teams or Skype, cell, etc., from there it becomes possible to remote desktop and see it live and discuss it in general.

Ah, right. I haven’t published it in the app stores yet. So I updated the first post with info about how to get it. For now, it’s necessary to download from GitHub and install from source.

Here are the relevant links for the project:

In Firefox, it can install directly from the release .zip file.

In Chrome it needs to be unzipped or git clone’d then use “Load unpacked extension”.

Ah, that’s never fun. It was always a huge pain when my browser would crash with older extensions like Tabs Outliner. It took hours and hours to recover, any time I had to restart the browser for any reason. And one time when the browser’s files got corrupted, I lost thousands of tabs and notes permanently. Totally unrecoverable.

So I gave this extension the ability to do automatic backups on a schedule. Anywhere from once every 5 minutes to once per month. Hopefully no more data loss ever again. There’s also a little companion script to compress the backups and move them to a more organized directory structure, and another script to convert them to human-friendly shell-script-friendly markdown.

When restarting a crashed browser, or just reopening a saved window, I made it so the extension remembers which tabs were open before, and it gives them a different color. That way, I can easily go through the old session data and decide which parts to re-open and which parts to leave closed. I usually prefer this over the browser’s built-in crash recovery. You can double-click a saved window to reopen everything it had open before, or just re-open individual tabs one at a time.

But for normal browser restarts, I usually let the browser restore all previously-open tabs, and then the extension attaches those to the saved tabs in its database. There may occasionally be cases where it can’t find a match, like if the URL changed during browser restart, but usually it’s seamless.

Anyway, the pain of crash recovery was part of why I made this.