So, it happened. As some folks have already noticed (Towards Syncthing 2.0 - #50 by DrSchnagels), SyncTrayzor won’t work with Syncthing 2.0. This was bound to happen at some point, given that there’s been basically no development on SyncTrayzor for 4 years now. The original project is also archived now, so there’s definitely no activity there going forward.
I’ve mentioned in the past (here and here) that I would consider forking SyncTrayzor at some point, if it became absolutetly necessary. Previously I’ve been mostly relying on that it “just works” despite being unmaintained. I don’t really wanted to take SyncTrayzor, because I’m already busy enough as it is
However, with SyncTrayzor now descending into the void, I had a choice to make: Switch to something else or revive it. I had a look at some of the wrappers out there, but I didn’t find anything that seemed like a drop-in replacement for my SyncTrayzor needs. Specifically, the feature I like (or need) most about SyncTrayzor is it’s excellent conflict resolution tool. It both tells me - via notification/tray - if there are new conflicts, and also where they are. It can also auto-rename one of the two files and rename the other if you tell it which one. I haven’t really seen this feature replicated on another wrapper (if there’s one I’ve missed, feel free to tell me). There are also various other cool things about SyncTrayzor, and it generally worked really well.
As such, I’ve decided to dig into the codebase and see if I can modernize it. There’s a lot of ~10 year old .NET stuff in there that desperately wants to be updated. I’ve experimented a bit with it and so far I’ve managed to move the entire thing from .NET Framework 4.7 (where it currently is) to .NET 8 LTS and finally bring in a modern CEF that is less finicky than the current CEF 86 (DPI without hacks, yay).
While my experiments already work, there’s still a lot left to retouch and update. There are at least two features that I have to rewrite from scratch, as I need to get rid of the old COM-code. At the same time, my time is very limited, so this isn’t something that I can finish in a week or two. Therefore, I don’t have anything to show yet, unfortunately.
The long term goal is to bring the project up to speed, fix Syncthing incompatibilities, and then maintain it in a maintenance-only mode. While new features would be nice, I don’t think I will have the time for it, so the goal is to keep things running largely as-is. I do plan on providing binaries/installers and such. I currently imagine that the “new” SyncTrayzor will be largely compatible with the “old”, so existing users can decide to switch if they want. There can’t be an auto-upgrade as Antony controls the servers, but that’s fine - I wouldn’t want users to switch to a “random” fork without knowing anyway.
For now, my plans are to keep hacking on the codebase and bring stuff into this decade. I plan on showcasing more once I have that. Right now, I’m wondering about the naming: As the old SyncTrayzor is archived, it would make sense to give the “new” SyncTrayzor a new name to distinguish the two. Perhaps SyncTrayzorX
or SyncTrayZ
? If anyone has an idea for a name, please let me know.
Finally, I would like to thank @canton7 for their excellent work over the years. SyncTrayzor is a very cool project and I would like to see it live on.