[GH-ISSUE #1060] merging lists #696

Closed
opened 2026-03-02 11:51:58 +03:00 by kerem · 7 comments
Owner

Originally created by @gilbrotheraway on GitHub (Feb 21, 2025).
Original GitHub issue: https://github.com/karakeep-app/karakeep/issues/1060

Originally assigned to: @gomnitrix on GitHub.

Describe the feature you'd like

the way i found to update/sync the bookmarks in hoarder was import them again, but that gives me 2 lists with thousands of duplicate links, please add the option to merge them so i can deduplicate

Thank you.

Describe the benefits this would bring to existing Hoarder users

convenience when having too many bookmarks

Can the goal of this request already be achieved via other means?

maybe

Have you searched for an existing open/closed issue?

  • I have searched for existing issues and none cover my fundamental request

Additional context

No response

Originally created by @gilbrotheraway on GitHub (Feb 21, 2025). Original GitHub issue: https://github.com/karakeep-app/karakeep/issues/1060 Originally assigned to: @gomnitrix on GitHub. ### Describe the feature you'd like the way i found to update/sync the bookmarks in hoarder was import them again, but that gives me 2 lists with thousands of duplicate links, please add the option to merge them so i can deduplicate Thank you. ### Describe the benefits this would bring to existing Hoarder users convenience when having too many bookmarks ### Can the goal of this request already be achieved via other means? maybe ### Have you searched for an existing open/closed issue? - [x] I have searched for existing issues and none cover my fundamental request ### Additional context _No response_
Author
Owner

@gilbrotheraway commented on GitHub (Mar 23, 2025):

please add the option to merge lists or suggest a workaround?

<!-- gh-comment-id:2746468169 --> @gilbrotheraway commented on GitHub (Mar 23, 2025): please add the option to merge lists or suggest a workaround?
Author
Owner

@gomnitrix commented on GitHub (Mar 31, 2025):

Hi @MohamedBassem @Fuckingnameless,

I’d love to work on this issue and contribute to Hoarder. Here’s my proposed solution:

Implementation Plan

  • Add a "Select" icon next to the "+" icon in the sidebar.

  • Enable batch selection mode, displaying checkboxes for each list.

  • Show a floating action bar with "Merge" (and optionally "Cancel") upon selection.

  • When merging, prompt the user to either:

    • Select an existing target list, or

    • Create a new list, with automatic deduplication of content.

Scope Consideration
As a first-time contributor and new to this project’s tech stack, I would like starting with flat merging of nested lists for simplicity. We can later enhance this with more granular controls if needed.

What do you think about this approach? If approved, I’d be happy to start working on it!

<!-- gh-comment-id:2766158641 --> @gomnitrix commented on GitHub (Mar 31, 2025): Hi @MohamedBassem @Fuckingnameless, I’d love to work on this issue and contribute to Hoarder. Here’s my proposed solution: **Implementation Plan** - Add a "Select" icon next to the "+" icon in the sidebar. - Enable batch selection mode, displaying checkboxes for each list. - Show a floating action bar with "Merge" (and optionally "Cancel") upon selection. - When merging, prompt the user to either: - Select an existing target list, or - Create a new list, with automatic deduplication of content. **Scope Consideration** As a first-time contributor and new to this project’s tech stack, I would like starting with flat merging of nested lists for simplicity. We can later enhance this with more granular controls if needed. What do you think about this approach? If approved, I’d be happy to start working on it!
Author
Owner

@MohamedBassem commented on GitHub (Mar 31, 2025):

@gomnitrix Thanks for picking this up, regarding the approach, I'd keep it simple:

  1. Inside the list view, there's a list options drop down menu. When you click on this, you get "edit", "delete", and we add "merge". This is simpler than "bulk" merging.
  2. When you click merge, a dialog opens, and you select another list to merge into. There's no value in creating a new "list" during merging in my opinion.

Regarding nested lists, you don't have to worry about that. When merging two lists, just move the items from the source list id to the destination list id. Nested lists don't show the content of their children anyways.

I've assigned the issue to you.

<!-- gh-comment-id:2767272780 --> @MohamedBassem commented on GitHub (Mar 31, 2025): @gomnitrix Thanks for picking this up, regarding the approach, I'd keep it simple: 1. Inside the list view, there's a list options drop down menu. When you click on this, you get "edit", "delete", and we add "merge". This is simpler than "bulk" merging. 2. When you click merge, a dialog opens, and you select another list to merge into. There's no value in creating a new "list" during merging in my opinion. Regarding nested lists, you don't have to worry about that. When merging two lists, just move the items from the source list id to the destination list id. Nested lists don't show the content of their children anyways. I've assigned the issue to you.
Author
Owner

@MohamedBassem commented on GitHub (Apr 17, 2025):

Done in #1231

<!-- gh-comment-id:2811322519 --> @MohamedBassem commented on GitHub (Apr 17, 2025): Done in #1231
Author
Owner

@gilbrotheraway commented on GitHub (Apr 20, 2025):

i merged the 2 lists previously imported from browsers bookmarks but they weren't deduplicated now there are 3 duplicates per bookmark, how do I fix that?

<!-- gh-comment-id:2817243511 --> @gilbrotheraway commented on GitHub (Apr 20, 2025): i merged the 2 lists previously imported from browsers bookmarks but they weren't deduplicated now there are 3 duplicates per bookmark, how do I fix that?
Author
Owner

@MohamedBassem commented on GitHub (Apr 20, 2025):

@Fuckingnameless Karakeep itself deduplicates links on addition. So you can't have "exactly" duplicate bookmarks, and therefore merging lists shouldn't dedup. Notice the emphasis on exactly, karakeep only dedups "exact" links. A difference in slashes at the end of the URL is considered a different URL (at least that's how things are today). So my assumptions is that your links are not "unique" from karakeep's perspective in the first place.

<!-- gh-comment-id:2817332594 --> @MohamedBassem commented on GitHub (Apr 20, 2025): @Fuckingnameless Karakeep itself deduplicates links on addition. So you can't have "exactly" duplicate bookmarks, and therefore merging lists shouldn't dedup. Notice the emphasis on exactly, karakeep only dedups "exact" links. A difference in slashes at the end of the URL is considered a different URL (at least that's how things are today). So my assumptions is that your links are not "unique" from karakeep's perspective in the first place.
Author
Owner

@gilbrotheraway commented on GitHub (Apr 22, 2025):

@Fuckingnameless Karakeep itself deduplicates links on addition.

so that's the problem, if it only deduplicates on addition and you can't merge lists before adding how one is supposed to merge/update bookmarks?
i thought that was the whole point of the thread

i have a thousand duplicate links like this now 😭

Image

Image

<!-- gh-comment-id:2822430621 --> @gilbrotheraway commented on GitHub (Apr 22, 2025): > [@Fuckingnameless](https://github.com/Fuckingnameless) Karakeep itself deduplicates links on addition. so that's the problem, if it only deduplicates on addition and you can't merge lists before adding how one is supposed to merge/update bookmarks? i thought that was the whole point of the thread i have a thousand duplicate links like this now 😭 ![Image](https://github.com/user-attachments/assets/3c2a30eb-1981-4aeb-a92a-39009c826d77) ![Image](https://github.com/user-attachments/assets/2ebb37d9-e178-4e26-93d9-35edf887c727)
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/karakeep#696
No description provided.