Refine "Find unlinked files" dialog
Follow-up to https://github.com/JabRef/jabref/issues/9798
Background: JabRef can link PDF files to the current library using the Search for unlinked local files functionality.
Currently, it does NOT link to existing entries
Example:
Corti_2009 - Cocoa and Cardiovascular Health.pdf exists
Use Chocolate.bib
Trigger searching for unlinked local files
If one clicks "Import", a new entry will be creatd.
There should be a column for existing entries.
The "Search for unlinked files" (Lookup -> Find unlinked files) dialog should get two columns as search result. Currently 1.
- column 1: file x@folder y (as it is currently; with checkmarks)
- column 2: candidate entry (citation key. If clicked, main table jumps to that entry)
In case no candidate entry exists, "
If possible: In case two (or more) candidate entries exist, the cell turns into a dropdown. The jump link is next to the drop down.

We have "Automatically set File links (F7) " which actually does a part of this - if the file is already named according to the defined pattern. And that should also detect renames
We have "Automatically set File links (F7) " which actually does a part of this - if the file is already named according to the defined pattern. And that should also detect renames
I want more interactivity here. We cannot say to users: Please use "Automatically set file links" first and then "Search for unlinked files".
The name "Search for unlinked files" somehow implies "intelligent" handling and not "JabRef just creates a new entry, independent if the file could be attached to an existing one".
The point of this issue is to improve UX.
The functionality of JabRef to detect already existing files is already there. The idea here is to make the functionality more accessible and user friendly.
I would like to look into it, but I am not understanding the proposed solution well.
column 2: candidate entry (citation key. If clicked, main table jumps to that entry) ... If possible: In case two (or more) candidate entries exist, the cell turns into a dropdown. The jump link is next to the drop down.
Does column 2 show all candidate entries? Do we need to indicate which file is linked to each candidate entry? If main table jumps to the candidate entry, will the "Search for unlinked local file" be closed even though user has not imported the files?
Thank you
Column 2: candidate entry (citation key. If clicked, main table jumps to that entry) ... If possible: In case two (or more) candidate entries exist, the cell turns into a dropdown. The jump link is next to the drop down.
(Note that this is the "if possible" case)
Does column 2 show all candidate entries?
Yes.
Do we need to indicate which file is linked to each candidate entry?
Background:
The new layout is
| File | Entry |
|---|---|
| a.pdf | entry 1 |
| entry 2 | |
| b.pdf | entry 3 |
| c.pdf | (new) |
| d.pdf | (new) |
Meaning:
a.pdfcould be attached to entries 1 or 2 (maybe, the filename starts with bibtex key)b.pdfcould be attached to entry 3c.pdfhas no matching entry - and would be created as new (existing functionality of the dialog)d.pdfhas no matching entry - and would be created as new (existing functionality of the dialog)
If main table jumps to the candidate entry, will the "Search for unlinked local file" be closed even though user has not imported the files?
No.
Its similar as "Jump to entry" in the "New entry dialog":
The dialog is kept opened upon clicking.
(Should also be at the global search if pin active - https://github.com/JabRef/jabref/issues/13840)
/assign-me
👋 Hey @KandyKorn, thank you for your interest in this issue! 🎉
We're excited to have you on board. Start by exploring our Contributing guidelines, and set up your local development workspace by following the steps in our workspace setup guidelines to get started smoothly.
For questions on JabRef functionality, you can consult the JabRef Guru. For questions related to the codebase, please start using DeepWiki.
In case you encounter failing tests during development, please check our developer FAQs!
Still facing issues or having more questions? Feel free to ask here on GitHub or on JabRef's Gitter chat. Please don't hesitate to open a (draft) pull request early on to show the direction you are heading towards if unsure.
Happy coding! 🚀
@koppor Hi there! I'm happy to get started with this. Two quick questions for you:
- Lets say the files are nested inside of a bunch of different folders, should the corresponding row to those nested structures be blank? There should only be content at the rows corresponding to the files themselves correct?
- Is it possible to have 2 search result files from column 1 be linked to a single existing entry in column 2? (I am assuming not but just wanted to make sure since I am new to this project)
@KandyKorn For more readable screenshots, we recommend Flameshot and Greenshot 😅
Lets say the files are nested inside of a bunch of different folders, should the corresponding row to those nested structures be blank? There should only be content at the rows corresponding to the files themselves correct?
Yes
Is it possible to have 2 search result files from column 1 be linked to a single existing entry in column 2? (I am assuming not but just wanted to make sure since I am new to this project)
Yes:
Example:
Entry has key test.
And files have names test - paper.pdf and test - presentation.pdf.
For sure it depends on the concrete file linking settings:
@koppor Hi! So two more quick questions. (I started making the second column with dummy functionality - will connect it to the actual existing entries list last. Also I have not done front-end work in years so bear with me haha):
- When the unlinked local files are nested, collapsed, but "checked", should we give information to the user about what contents the "Entry" column will have? Or should we just let them click until they get to the bottom level? See the red box below:
- If there are matching existing entries found for a file, should we give the user the option to create a new entry anyways? If so, every match of an existing entry to an unlinked file should include 1 additional dropdown option for (new)? In the below mock-up, "b" does not have matching existing entries but "a" and "c" do:
@KandyKorn Thank you for refining. Question 1: Summary is good 👍. Question 2: Nice idea, lets do this.
Don't forget that the wish was to be able to do "maintable.selectEntry". Maybe this needs a third column for a button (appearing when hovering on the respective line - if possible) - or cannot be done at all (also OK, but needs to be noted somewhere in the code)
@koppor Thoughts on this? Small magnifying glass appears when hovering over the existing entry and then description to "Jump to entry" appears when selecting it. I should be able to inject the Library Tab object from the main menu and have the link jump to that entry similar to the existing functionality you pointed out above. (Cursor is not shown in the pic when I took the screenshot but its hovering over the icon):
Will also go ahead and add a "summary" line next to the "Entry" column title. In this case it would read "Entry (2 existing, 1 new)". I forgot to add that in my screenshots.
Small magnifying glass appears
Nice. I could not come up with another icon idea. If someone else come up with one, I assume it is easily to be fixed later.
⏰ Assignment Reminder
Hi @KandyKorn, this is a friendly reminder about your assignment to this issue.
[!WARNING] This issue will be automatically unassigned in 11 days if there's no activity.
Remember that you can ask the JabRef Guru or DeepWiki about anything regarding JabRef. Additionally, our contributing guide has hints on creating a pull request and a link to our Gitter chat.
How to keep your assignment
If you are working on it, you can prevent automatic unassignment by:
- Submitting a draft pull request with your progress within 11 days
- Asking for the 📌 Pinned label if you need more time
We appreciate your contribution and are here to help if needed!