Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
53 commits
Select commit Hold shift + click to select a range
54eb4f1
fix(SyncProcess): Reduce size of continuation on disk
marcelklehr Dec 27, 2025
658ef86
fix(SyncProcess): Fix getmembersToPersist
marcelklehr Dec 27, 2025
3e1b4b9
fix(index): Update index incrementally instead of recreating it every…
marcelklehr Dec 28, 2025
426a078
fix(continuation): Fix continuation loading
marcelklehr Dec 28, 2025
4a5d598
fix(Tree): Fix updateIndex and removeFromIndex
marcelklehr Dec 28, 2025
119f3a9
fix(Tree): Improve updateIndex
marcelklehr Dec 28, 2025
6914962
fix(CachingTreeWrapper): Make sure item index is up to date for updat…
marcelklehr Dec 28, 2025
f7fb9b4
fix(Tree): Fix incremental index updates
marcelklehr Dec 28, 2025
9512d18
fix(CachingAdapter): Fix incremental index updates
marcelklehr Dec 28, 2025
b11a7b6
fix(CachingAdapter): Fix incremental index updates
marcelklehr Dec 28, 2025
545bddb
fix(NextcloudBookmarks): Fix incremental index updates
marcelklehr Dec 28, 2025
b8b0436
fix(NextcloudBookmarks): Fix incremental index updates
marcelklehr Dec 28, 2025
9508bcd
tests: Don't close about:addons page in tab tests
marcelklehr Dec 28, 2025
71229e1
fix(Tree): Fix end condition in removeFromIndex
marcelklehr Dec 28, 2025
e7bcdf4
fix(LocalTabs): Poperly distinguish between window IDs and group IDs
marcelklehr Dec 28, 2025
761955e
fix(CachingTreeWrapper): Make sure to copy the tree
marcelklehr Dec 29, 2025
c069b1f
fix(Caching#orderFolder): Fix orderFolder algorithm
marcelklehr Dec 29, 2025
0fe68fe
fix(BrowserAccountStorage): Use setEntry instead of changeEntry
marcelklehr Dec 29, 2025
9c64fda
fix(Folder#toJSON): Make sure children are properly serialized
marcelklehr Dec 29, 2025
55c8a56
fix(NextcloudBookmarks): Fix updateBookmark()
marcelklehr Dec 29, 2025
7af309b
tests: Don't pass anonymous object into Adapter#updateBookmark
marcelklehr Dec 29, 2025
110ed3c
fix(Diff): Do not call .toString on null, but use String()
marcelklehr Dec 29, 2025
863aae6
fix: Fix typeof undefined checks to handle null
marcelklehr Dec 29, 2025
8886684
fix(Diff): Fix toJSONAsync null handling
marcelklehr Dec 29, 2025
2e5afd1
fix(SyncProcess): Simplify setProgress
marcelklehr Dec 29, 2025
b770ca8
fix(Tree): Fix removeFromIndex to remove the entire subtree
marcelklehr Dec 29, 2025
95fd68d
fix(childrenSimilarity): Make O(n) instead of O(n²)
marcelklehr Dec 30, 2025
7ffb269
fix(Tree#hash): Use yieldToEventLoop to allow browser to breathe
marcelklehr Dec 30, 2025
2caffc5
fix(Scanner): Reduce time complexity of findMoves to improve performance
marcelklehr Dec 30, 2025
3925e01
fix(Scanner): Reduce time complexity of diffFolder to improve perform…
marcelklehr Dec 30, 2025
6eb984c
fix(Scanner): Reduce time complexity of findMoves
marcelklehr Dec 30, 2025
da48e1d
fix(Scanner): Reduce time complexity of findMoves
marcelklehr Dec 30, 2025
19ad39b
fix(Scanner): Reduce time complexity of findMoves
marcelklehr Dec 30, 2025
01a4c7b
fix(Scanner): Reduce time complexity of findMoves
marcelklehr Dec 30, 2025
4423a3c
fix(Caching): Make sure that created bookmarks have the correct locat…
marcelklehr Dec 30, 2025
bf977ae
fix(Unidirectional): Use source MOVEs for revertPlan instead of targe…
marcelklehr Dec 30, 2025
fb55c67
fix(Unidirectional): Only do a single Scanner pass to improve perform…
marcelklehr Dec 30, 2025
b9de31a
fix(Scanner): yieldToEventLoop less often
marcelklehr Dec 30, 2025
18c5354
fix(Scanner): Try to improve time complexity of Scanner
marcelklehr Dec 31, 2025
55c6891
fix(Scanner): Use clone instead of copy
marcelklehr Dec 31, 2025
e7bbfa9
fix(Scanner): Try to speed up findMoves by using a single pass queue
marcelklehr Dec 31, 2025
12d3192
fix(persistence): Fix SyncProcess#toJSONAsync
marcelklehr Dec 31, 2025
b474464
fix(Scanner): Fix findMoves
marcelklehr Dec 31, 2025
3998904
fix(Scanner): Fix findMoves by adding folder count to sorting
marcelklehr Dec 31, 2025
7537d0e
Revert "fix(Scanner): Try to speed up findMoves by using a single pas…
marcelklehr Dec 31, 2025
204bf11
Revert "fix(Scanner): Reduce time complexity of findMoves to improve …
marcelklehr Dec 31, 2025
c0c640c
Fix: Reduce memory pressure by reducing ACTION_CONCURRENCY
marcelklehr Dec 31, 2025
3aad9e9
Reapply "fix(Scanner): Reduce time complexity of findMoves to improve…
marcelklehr Dec 31, 2025
538d892
Fix(Scanner#diffFolder): Fall back to O(n) strategy if fuzzy map does…
marcelklehr Jan 1, 2026
6ef3f3a
Fix(Scanner): Go back to two-tiered algorithm with direct matches fir…
marcelklehr Jan 1, 2026
e5b4f5b
fix(executeReorderings): Try to prevent crash
marcelklehr Jan 2, 2026
95ba6ba
fix(SyncProcess): Fix serialization for continuation persistence
marcelklehr Jan 2, 2026
f860bf6
fix(Tree): Harden against undefined errors
marcelklehr Jan 4, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/lib/Account.ts
Original file line number Diff line number Diff line change
Expand Up @@ -317,7 +317,8 @@ export default class Account {
// set from the persisted continuation
Logger.log('Fetching local bookmarks tree')
this.syncProcess.setCacheTree(cacheTree)
await this.localCachingResource.setCacheTree(await this.localCachingResource.getBookmarksTree())
// Allow Caching of the local tree
await this.localCachingResource.getBookmarksTree()
}

Logger.log('Starting sync process')
Expand Down
12 changes: 8 additions & 4 deletions src/lib/CachingTreeWrapper.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,21 +14,23 @@ export default class CachingTreeWrapper implements OrderFolderResource<typeof It

async getBookmarksTree(): Promise<Folder<typeof ItemLocation.LOCAL>> {
const tree = await this.innerTree.getBookmarksTree()
this.cacheTree.setTree(tree)
this.cacheTree.setTree(tree.copy())
return tree
}

async setCacheTree(tree: Folder<typeof ItemLocation.LOCAL>) {
this.cacheTree.setTree(tree)
this.cacheTree.setTree(tree.copy())
}

async createBookmark(bookmark:Bookmark<typeof ItemLocation.LOCAL>): Promise<string|number> {
const id = await this.innerTree.createBookmark(bookmark)
const cacheId = await this.cacheTree.createBookmark(bookmark.copy(false))
const cacheBookmark = this.cacheTree.bookmarksCache.findBookmark(cacheId)
this.cacheTree.bookmarksCache.removeFromIndex(cacheBookmark)
cacheBookmark.id = id
cacheBookmark.parentId = bookmark.parentId
this.cacheTree.bookmarksCache.createIndex()
cacheBookmark.createIndex()
this.cacheTree.bookmarksCache.updateIndex(cacheBookmark)
return id
}

Expand All @@ -46,9 +48,11 @@ export default class CachingTreeWrapper implements OrderFolderResource<typeof It
const id = await this.innerTree.createFolder(folder)
const cacheId = await this.cacheTree.createFolder(folder.copy(false))
const cacheFolder = this.cacheTree.bookmarksCache.findFolder(cacheId)
this.cacheTree.bookmarksCache.removeFromIndex(cacheFolder)
cacheFolder.id = id
cacheFolder.parentId = folder.parentId
this.cacheTree.bookmarksCache.createIndex()
cacheFolder.createIndex()
this.cacheTree.bookmarksCache.updateIndex(cacheFolder)
return id
}

Expand Down
Loading
Loading