Conversation
| EXTRA_JS_MODULES.zen += [ | ||
| "ZenSessionManager.sys.mjs", | ||
| "ZenWindowSync.sys.mjs", | ||
| "ZenWorkspacesSync.sys.mjs", |
There was a problem hiding this comment.
Maybe it should be moved to its own "../sync" directory?
|
Can you also add sync support for Zen Mods if possible? |
Not in scope of this PR. |
|
Will unpinned tabs be synced in the future? |
|
They should be with this PR |
|
that there are now two competing PRs of the same feature shows pretty clear how important this feature is. i hope this will get merged soon. Have you looked at the code from the other guy? maybe he has some solutions for the issue you still have. syncing only on restart seems kinda weird as many people (at least the ones i know) never restart their browsers ever. |
|
We want it to be live syncing, so don't worry about that, this is just a POC. There are some main blockers though because we are not sure how the merging mechanism should work. Should it completely override? Merge both sessions? ... |
My two cents: just prompt the user when there's a conflict, like Steam does |
I would love for it to be treated as just one session - as if all Zen windows on all of my computers belong to the same browser profile, have the same tabs, etc. I imagine sync can get very complex, though. Perhaps failures would be more forgiving if there was a way to easily recover - if some other device closed 100 tabs, there should be a way to recover them with a shortcut like |
|
On the matter of unpinned tabs, please have that be a separatly configurable sync item from workspaces & pined tabs if it is reasonable to implement as such. I personally wouldn't want my unpinned tabs syncing automatically since my primary use for sync is between windows and Linux on the same device. I tend to have very different sets of tabs between the two and would just end up closing all the synced tabs anyways. For the few cases where I want an unpinned tabs to move between them I would just use the send to device feature like I currently do. If they aren't separate it isn't a deal breaker for me but I would appreciate not having the extra overhead if I can avoid it. |
|
Please mark it as ready for review once its done! There seems to be git conflicts as well? |
502b61e to
c853025
Compare
…d tabs/folders on startup.
- syncs workspaces, containers, pinned tabs, essentials and regular tabs. Keeps local "state" of sync that is then compared with the incoming changes and then tries to combine the two. While this enables full session sync in realtime, it's rough and buggy and needs further polishing
Replace single-record syncMeta with per-item hash snapshots and multi-record sync. Simplifies conflict resolution by delegating to Firefox Sync's record-level logic. Updates tracker to monitor individual item changes via "zen-workspace-item-changed" notifications.
c853025 to
3354147
Compare
A new sync implementation built on top of Firefox's existing Sync infrastructure, enabling cross-device synchronization of workspaces, containers, pinned tabs, and folders, reworked from the ground up.
What syncs
Changes
ZenWorkspacesStore,ZenWorkspacesTracker, andZenWorkspacesEngineto manage tracking and storing workspace changes across devicesZenSessionManagerto properly merge incoming remote data with the local sessionContextualIdentityService.sys.mjsto allow creating containers with an explicit ID, ensuring pinned tabs and workspaces reference the correct container across devicesservice.sys.mjsto register the new workspace sync engineWhile overall sync works, it needs further testing and refinement, thx