Skip to content

Refine Automatic Field Editor filtering logic (fixes #15066)#15094

Merged
koppor merged 9 commits into
JabRef:mainfrom
betheashvin:feature/filter-automatic-fields
Feb 14, 2026
Merged

Refine Automatic Field Editor filtering logic (fixes #15066)#15094
koppor merged 9 commits into
JabRef:mainfrom
betheashvin:feature/filter-automatic-fields

Conversation

@betheashvin

@betheashvin betheashvin commented Feb 11, 2026

Copy link
Copy Markdown
Contributor

Related issues and pull requests

Closes #15066

PR Description

This PR implements context-aware filtering within the Automatic Field Editor to streamline the user experience and ensure data integrity. I refined the field selection logic across all tabs so that dropdowns dynamically filter to show only populated fields based on the user's current entry selection, while maintaining the ability to toggle a full list in the "Edit" tab. These changes prevent users from interacting with irrelevant or empty fields, thereby eliminating confusing "ghost" placeholders and improving overall workflow efficiency.

Steps to test

  1. Open JabRef and load a library (e.g., Chocolate.bib).
  2. Select a subset of entries that only contain a few specific fields (e.g., Author, Title, Year).
  3. Open Edit -> Automatic field editor.
  4. Clear Content, Copy/Move, and Rename Tabs: Verify that the field dropdowns only show the fields present in your selected entries.
  5. Edit Content Tab: Verify that the "Show only set fields" checkbox is present and checked by default. Uncheck it to see the full list of available BibTeX fields.
  6. Verify that the default field selected in each tab is one that actually contains data, rather than a generic default like "Abstract".

Screenshots

Edit Content Tab (Checkbox and Default Selection):
Screenshot 2026-02-11 155922

Copy or Move Tab (Filtered 'From' list):
Screenshot 2026-02-11 155929

Clear Content and Rename Tabs (Always Filtered):
Screenshot 2026-02-11 155943
Screenshot 2026-02-11 160003

Required Verification Screenshot (Single entry with me as author Ashvin Kumar and issue number 15066 as title):
Screenshot (33)

Checklist

  • I own the copyright of the code submitted and I license it under the MIT license
  • I manually tested my changes in running JabRef (always required)
  • [/] I added JUnit tests for changes (if applicable)
  • I added screenshots in the PR description (if change is visible to the user)
  • I added a screenshot in the PR description showing a library with a single entry with me as author and as title the issue number
  • I described the change in CHANGELOG.md in a way that can be understood by the average user (if change is visible to the user)
  • [/] I checked the user documentation for up to dateness and submitted a pull request to our user documentation repository

- Updated Clear, Copy/Move, and Rename tabs to show only populated fields by default.
- Added a "Show only set fields" checkbox to the Edit tab, enabled by default.
- Improved default field selection in ViewModels to prevent empty/ghost placeholders.
- Added localization for the new checkbox string.

fixes JabRef#15066
@github-actions

Copy link
Copy Markdown
Contributor

Hey @betheashvin! 👋

Thank you for contributing to JabRef!

We have automated checks in place, based on which you will soon get feedback if any of them are failing. We also use Qodo for review assistance. It will update your pull request description with a review help and offer suggestions to improve the pull request.

After all automated checks pass, a maintainer will also review your contribution. Once that happens, you can go through their comments in the "Files changed" tab and act on them, or reply to the conversation if you have further inputs. You can read about the whole pull request process in our contribution guide.

Please ensure that your pull request is in line with our AI Usage Policy and make necessary disclosures.

@qodo-free-for-open-source-projects

Copy link
Copy Markdown
Contributor

Review Summary by Qodo

Refine Automatic Field Editor filtering logic with context-aware field display

✨ Enhancement

Grey Divider

Walkthroughs

Description
• Implement context-aware field filtering in Automatic Field Editor
• Show only populated fields by default across all tabs
• Add "Show only set fields" toggle checkbox to Edit tab
• Set intelligent default field selection based on actual data
Diagram
flowchart LR
  A["User selects entries"] -->|"Automatic Field Editor"| B["Clear/Copy/Move/Rename tabs"]
  B -->|"Filter logic"| C["Show only populated fields"]
  A -->|"Edit tab"| D["Toggle checkbox"]
  D -->|"Checked"| C
  D -->|"Unchecked"| E["Show all BibTeX fields"]
  C -->|"Default selection"| F["First populated field"]
Loading

Grey Divider

File Changes

1. jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/clearcontent/ClearContentTabView.java ✨ Enhancement +4/-11

Remove checkbox binding, always filter to set fields

jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/clearcontent/ClearContentTabView.java


2. jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/copyormovecontent/CopyOrMoveFieldContentTabView.java ✨ Enhancement +6/-1

Filter source field dropdown to populated fields only

jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/copyormovecontent/CopyOrMoveFieldContentTabView.java


3. jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/copyormovecontent/CopyOrMoveFieldContentTabViewModel.java ✨ Enhancement +12/-0

Add getSetFieldsOnly method and set default field

jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/copyormovecontent/CopyOrMoveFieldContentTabViewModel.java


View more (7)
4. jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/editfieldcontent/EditFieldContentTabView.java ✨ Enhancement +12/-2

Add checkbox control with dynamic field filtering

jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/editfieldcontent/EditFieldContentTabView.java


5. jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/editfieldcontent/EditFieldContentViewModel.java ✨ Enhancement +12/-0

Add getSetFieldsOnly method and set default field

jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/editfieldcontent/EditFieldContentViewModel.java


6. jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/renamefield/RenameFieldTabView.java ✨ Enhancement +5/-2

Filter field dropdown to populated fields only

jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/renamefield/RenameFieldTabView.java


7. jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/renamefield/RenameFieldViewModel.java ✨ Enhancement +12/-0

Add getSetFieldsOnly method and set default field

jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/renamefield/RenameFieldViewModel.java


8. CHANGELOG.md 📝 Documentation +1/-0

Document field filtering refinement changes

CHANGELOG.md


9. jabgui/src/main/resources/org/jabref/gui/edit/automaticfiededitor/clearcontent/ClearContentTab.fxml ⚙️ Configuration changes +0/-1

Remove checkbox from Clear Content tab layout

jabgui/src/main/resources/org/jabref/gui/edit/automaticfiededitor/clearcontent/ClearContentTab.fxml


10. jabgui/src/main/resources/org/jabref/gui/edit/automaticfiededitor/editfieldcontent/EditFieldContentTab.fxml ⚙️ Configuration changes +2/-0

Add checkbox control to Edit Content tab layout

jabgui/src/main/resources/org/jabref/gui/edit/automaticfiededitor/editfieldcontent/EditFieldContentTab.fxml


Grey Divider

Qodo Logo

@github-actions github-actions Bot added the good first issue An issue intended for project-newcomers. Varies in difficulty. label Feb 11, 2026
@qodo-free-for-open-source-projects

qodo-free-for-open-source-projects Bot commented Feb 11, 2026

Copy link
Copy Markdown
Contributor

Code Review by Qodo

🐞 Bugs (2) 📘 Rule violations (2) 📎 Requirement gaps (0)

Grey Divider


Action required

1. Internal fields in Clear tab 🐞 Bug ✓ Correctness
Description
Clear Content now fills the dropdown from “set fields” gathered via BibEntry.getFields(), which can
include JabRef InternalField values (e.g., citationkey/entrytype). This can expose internal fields
that were previously excluded and allow users to clear them, risking data integrity and confusing
UI.
Code

jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/clearcontent/ClearContentTabView.java[R42-43]

+        Set<Field> setFields = viewModel.getSetFieldsOnly();
+        fieldComboBox.getItems().setAll(setFields);
Evidence
The Clear Content tab now uses getSetFieldsOnly() to populate the dropdown. That method is
implemented by iterating BibEntry.getFields() (the entry’s raw fields map keys), which includes
internal fields such as InternalField.KEY_FIELD (citationkey) and InternalField.TYPE_HEADER
(entrytype). Previously, the tab used FieldFactory.getAllFieldsWithOutInternal(), which explicitly
removes all InternalField values.

jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/clearcontent/ClearContentTabView.java[36-47]
jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/clearcontent/ClearContentViewModel.java[25-34]
jablib/src/main/java/org/jabref/model/entry/BibEntry.java[425-433]
jablib/src/main/java/org/jabref/model/entry/field/InternalField.java[7-16]
jablib/src/main/java/org/jabref/model/entry/field/FieldFactory.java[163-169]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The Clear Content tab dropdown is now populated from entry.getFields(), which includes JabRef `InternalField`s like `citationkey` and `entrytype`. Those fields were previously excluded via `FieldFactory.getAllFieldsWithOutInternal()`, and exposing them lets users clear internal metadata.
### Issue Context
`BibEntry.getFields()` returns `fields.keySet()`, and JabRef stores internal fields (e.g., citation key/type header) in that map.
### Fix Focus Areas
- jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/clearcontent/ClearContentViewModel.java[25-34]
- jablib/src/main/java/org/jabref/model/entry/BibEntry.java[430-433]
- jablib/src/main/java/org/jabref/model/entry/field/FieldFactory.java[163-169]
- jablib/src/main/java/org/jabref/model/entry/field/InternalField.java[7-16]
### Suggested change
Adjust `getSetFieldsOnly()` to filter out internal fields, e.g.:
- `filter(field -&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; !EnumSet.allOf(InternalField.class).contains(field))`, OR
- compute `allowed = FieldFactory.getAllFieldsWithOutInternal()` and keep only `allowed::contains`.
Also consider avoiding double `entry.getField(f)` lookups by using `entry.getField(f).filter(value -&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt; !value.isBlank()).isPresent()`.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools



Remediation recommended

✅ 2. Duplicated getSetFieldsOnly() logic 📘 Rule violation ⛯ Reliability
Description
getSetFieldsOnly() is implemented with the same stream/predicate logic in multiple view models,
increasing maintenance cost and the risk of inconsistent future fixes. This violates the
no-duplication maintainability requirement.
Code

jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/copyormovecontent/CopyOrMoveFieldContentTabViewModel.java[R69-74]

+    public Set<Field> getSetFieldsOnly() {
+        return getAllFields().stream()
+                             .filter(field -> selectedEntries.stream()
+                                                             .anyMatch(entry -> entry.getField(field).isPresent() && !entry.getField(field).get().isBlank()))
+                             .collect(Collectors.toCollection(LinkedHashSet::new));
+    }
Evidence
PR Compliance ID 9 requires avoiding duplication; the same getSetFieldsOnly() implementation was
added to three different view models with identical filtering logic.

AGENTS.md
jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/copyormovecontent/CopyOrMoveFieldContentTabViewModel.java[69-74]
jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/editfieldcontent/EditFieldContentViewModel.java[67-72]
jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/renamefield/RenameFieldViewModel.java[64-69]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
`getSetFieldsOnly()` is duplicated across multiple Automatic Field Editor tab view models, making future changes easy to miss and harder to test.
## Issue Context
The same filtering logic (iterate all fields, check if any selected entry has a non-blank value for that field, preserve order) appears in three separate classes.
## Fix Focus Areas
- jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/copyormovecontent/CopyOrMoveFieldContentTabViewModel.java[69-74]
- jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/editfieldcontent/EditFieldContentViewModel.java[67-72]
- jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/renamefield/RenameFieldViewModel.java[64-69]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


✅ 3. Optional.get() used in predicate 📘 Rule violation ⛯ Reliability
Description
The new field-filtering predicate uses isPresent() followed by get(), and also calls
entry.getField(field) twice, which is non-idiomatic Optional usage and easier to get wrong when
modified. Prefer Optional#filter/Optional#stream to avoid get() and repeated lookups.
Code

jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/copyormovecontent/CopyOrMoveFieldContentTabViewModel.java[R71-72]

+                             .filter(field -> selectedEntries.stream()
+                                                             .anyMatch(entry -> entry.getField(field).isPresent() && !entry.getField(field).get().isBlank()))
Evidence
PR Compliance ID 11 requires idiomatic Optional usage and avoiding patterns that increase
null/empty-related defects; the introduced predicate uses Optional.get() after isPresent() and
repeats the Optional retrieval.

AGENTS.md
jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/copyormovecontent/CopyOrMoveFieldContentTabViewModel.java[71-72]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
The new filtering logic uses `Optional.get()` after `isPresent()` and calls `getField` twice, which is non-idiomatic and increases the chance of future mistakes.
## Issue Context
This predicate appears in multiple view models, so improving it in the shared logic (or in each instance if not extracted) will reduce risk and improve readability.
## Fix Focus Areas
- jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/copyormovecontent/CopyOrMoveFieldContentTabViewModel.java[69-74]
- jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/editfieldcontent/EditFieldContentViewModel.java[67-72]
- jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/renamefield/RenameFieldViewModel.java[64-69]

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


✅ 4. Rename uses live selection 🐞 Bug ⛯ Reliability
Description
Rename tab builds its filtered dropdown once, but the view model keeps a live ObservableList
reference to selected entries. If selection changes while the dialog is open, the UI can show fields
from the old selection while the rename operation applies to the new selection.
Code

jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/renamefield/RenameFieldTabView.java[R53-57]

+        fieldComboBox.getItems().setAll(viewModel.getSetFieldsOnly());
+
+        if (!fieldComboBox.getItems().isEmpty()) {
+            fieldComboBox.getSelectionModel().selectFirst();
+        }
Evidence
StateManager returns a live ObservableList for selected entries and mutates it on selection changes.
RenameFieldTabView passes that live list into RenameFieldViewModel, which stores it without copying,
while the ComboBox items are only set during initialize() (filtered set computed once). Other tabs
snapshot the selection into a new ArrayList to avoid this mismatch.

jabgui/src/main/java/org/jabref/gui/JabRefGuiStateManager.java[135-142]
jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/renamefield/RenameFieldTabView.java[39-57]
jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/renamefield/RenameFieldViewModel.java[44-48]
jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/editfieldcontent/EditFieldContentViewModel.java[49-52]

Agent prompt
The issue below was found during a code review. Follow the provided context and guidance below and implement a solution

## Issue description
Rename tab computes a filtered field list once, but the underlying `selectedEntries` list is a live `ObservableList` from `StateManager`. If selection changes while the dialog is open, the displayed field options and the actual entries affected can diverge.
### Issue Context
`StateManager.getSelectedEntries()` returns the mutable `selectedEntries` list, and `setSelectedEntries(...)` uses `setAll(...)`.
### Fix Focus Areas
- jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/renamefield/RenameFieldTabView.java[39-57]
- jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/renamefield/RenameFieldViewModel.java[44-48]
- jabgui/src/main/java/org/jabref/gui/JabRefGuiStateManager.java[135-142]
### Suggested change
Prefer snapshotting selection like other tabs:
- In `RenameFieldViewModel` constructor: `this.selectedEntries = new ArrayList&amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;&amp;amp;amp;amp;amp;amp;amp;amp;amp;gt;(selectedEntries);`
(or snapshot in `RenameFieldTabView` before constructing the view model).
If the desired behavior is “always act on current selection”, then also add a listener to refresh `fieldComboBox.getItems()` when `stateManager.getSelectedEntries()` changes, so UI stays in sync.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools


Grey Divider

ⓘ The new review experience is currently in Beta. Learn more

Grey Divider

Qodo Logo

Comment on lines +42 to +43
Set<Field> setFields = viewModel.getSetFieldsOnly();
fieldComboBox.getItems().setAll(setFields);

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Action required

1. Internal fields in clear tab 🐞 Bug ✓ Correctness

Clear Content now fills the dropdown from “set fields” gathered via BibEntry.getFields(), which can
include JabRef InternalField values (e.g., citationkey/entrytype). This can expose internal fields
that were previously excluded and allow users to clear them, risking data integrity and confusing
UI.
Agent Prompt
### Issue description
The Clear Content tab dropdown is now populated from entry.getFields(), which includes JabRef `InternalField`s like `citationkey` and `entrytype`. Those fields were previously excluded via `FieldFactory.getAllFieldsWithOutInternal()`, and exposing them lets users clear internal metadata.

### Issue Context
`BibEntry.getFields()` returns `fields.keySet()`, and JabRef stores internal fields (e.g., citation key/type header) in that map.

### Fix Focus Areas
- jabgui/src/main/java/org/jabref/gui/edit/automaticfiededitor/clearcontent/ClearContentViewModel.java[25-34]
- jablib/src/main/java/org/jabref/model/entry/BibEntry.java[430-433]
- jablib/src/main/java/org/jabref/model/entry/field/FieldFactory.java[163-169]
- jablib/src/main/java/org/jabref/model/entry/field/InternalField.java[7-16]

### Suggested change
Adjust `getSetFieldsOnly()` to filter out internal fields, e.g.:
- `filter(field -> !EnumSet.allOf(InternalField.class).contains(field))`, OR
- compute `allowed = FieldFactory.getAllFieldsWithOutInternal()` and keep only `allowed::contains`.
Also consider avoiding double `entry.getField(f)` lookups by using `entry.getField(f).filter(value -> !value.isBlank()).isPresent()`.

ⓘ Copy this prompt and use it to remediate the issue with your preferred AI generation tools

@github-actions github-actions Bot added the status: changes-required Pull requests that are not yet complete label Feb 11, 2026

private void initializeFromAndToComboBox() {
fromFieldComboBox.getItems().setAll(viewModel.getAllFields());
fromFieldComboBox.getItems().setAll(viewModel.getSetFieldsOnly());

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Group all from and to together - not this mixture...

canAppend = Bindings.and(overwriteFieldContentProperty(), fieldValidationStatus().validProperty());
}

public Set<Field> getSetFieldsOnly() {

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This method is now written down multiple times -- extract it to a helper class

package org/jabref/gui/edit/automaticfiededitor. Maybe FieldHelper and a static method.

@testlens-app

testlens-app Bot commented Feb 11, 2026

Copy link
Copy Markdown

✅ All tests passed ✅

🏷️ Commit: 089893d
▶️ Tests: 11192 executed
⚪️ Checks: 50/50 completed


Learn more about TestLens at testlens.app.

@github-actions github-actions Bot mentioned this pull request Feb 11, 2026
4 tasks
@github-actions github-actions Bot added status: no-bot-comments and removed status: changes-required Pull requests that are not yet complete labels Feb 12, 2026
@betheashvin betheashvin requested a review from koppor February 12, 2026 09:58
@github-actions github-actions Bot removed the request for review from koppor February 12, 2026 09:58
@betheashvin

Copy link
Copy Markdown
Contributor Author

Hi @koppor , I have addressed all the feedback!
Refactored Logic: Extracted filtering into FieldHelper and removed duplication.
Fixed Bugs: Implemented snapshotting to fix the 'live selection' issue and ensured Internal Fields are excluded.
Tests & CI: Fixed the Unit Test compilation errors and cleaned up all Checkstyle/Formatting issues.
Docs: Updated the PR description checklist and CHANGELOG.md.
All checks are now passing. You may please review it!
Thank you.

@JabRef JabRef deleted a comment from github-actions Bot Feb 12, 2026

@koppor koppor left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Tried out, works.

Comment on lines +29 to -45
private final List<BibEntry> selectedEntries;
private final BibDatabase database;
private final StateManager stateManager;
private final ControlsFxVisualizer visualizer = new ControlsFxVisualizer();
@FXML
private Button moveContentButton;

@FXML
private Button swapContentButton;

@FXML
private ComboBox<Field> fromFieldComboBox;
@FXML
private ComboBox<Field> toFieldComboBox;

@FXML
private CheckBox overwriteFieldContentCheckBox;

private CopyOrMoveFieldContentTabViewModel viewModel;
private final List<BibEntry> selectedEntries;
private final BibDatabase database;
private final StateManager stateManager;

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Strong indicatoin of AI

private final StateManager stateManager;

private final ControlsFxVisualizer visualizer = new ControlsFxVisualizer();

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Again. AI?

@koppor koppor added this pull request to the merge queue Feb 12, 2026
github-merge-queue Bot pushed a commit that referenced this pull request Feb 12, 2026
* Refine Automatic Field Editor filtering logic

- Updated Clear, Copy/Move, and Rename tabs to show only populated fields by default.
- Added a "Show only set fields" checkbox to the Edit tab, enabled by default.
- Improved default field selection in ViewModels to prevent empty/ghost placeholders.
- Added localization for the new checkbox string.

fixes #15066

* Refactor field filtering logic and update CHANGELOG.md

* Update CHANGELOG with Automatic Field Editor refinement

Refined the Automatic Field Editor to filter field lists based on populated data in selected entries.

* Fix Checkstyle import order and PR formatting
@github-actions github-actions Bot added the status: to-be-merged PRs which are accepted and should go into the merge-queue. label Feb 12, 2026
@github-merge-queue github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Feb 12, 2026
@koppor

koppor commented Feb 12, 2026

Copy link
Copy Markdown
Member

Failed test - not sure, why. I will try re-merge.

> Task :jablib:test
org.jabref.logic.externalfiles.LinkedFileTransferHelperTest > check(FileTestConfigurationBuilder, BibTestConfigurationBuilder, BibTestConfigurationBuilder) [4] org.jabref.logic.externalfiles.FileTestConfigurationBuilder@3c744de9, org.jabref.logic.externalfiles.BibTestConfigurationBuilder@70efd6cf, org.jabref.logic.externalfiles.BibTestConfigurationBuilder@22d72c99 FAILED

  org.opentest4j.AssertionFailedError: expected: <@misc{,
    file = {:sub-dir/test.pdf:PDF},
    _jabref_shared = {sharedId: -1, version: 1}
  }> but was: <@misc{,
    file = {:test.pdf:PDF},
    _jabref_shared = {sharedId: -1, version: 1}
  }>
      at app/org.jabref.jablib/org.jabref.logic.externalfiles.LinkedFileTransferHelperTest.check(LinkedFileTransferHelperTest.java:56)

@koppor koppor enabled auto-merge February 12, 2026 15:46
@github-actions github-actions Bot added the status: changes-required Pull requests that are not yet complete label Feb 12, 2026
@github-actions github-actions Bot added status: no-bot-comments and removed status: changes-required Pull requests that are not yet complete labels Feb 13, 2026
@koppor koppor added this pull request to the merge queue Feb 13, 2026
@github-merge-queue github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Feb 13, 2026
@koppor koppor enabled auto-merge February 13, 2026 13:05
@koppor koppor added this pull request to the merge queue Feb 14, 2026
Merged via the queue into JabRef:main with commit 5c362e3 Feb 14, 2026
50 checks passed
Siedlerchr added a commit to faneeshh/jabref that referenced this pull request Feb 14, 2026
* upstream/main:
  Refine Automatic Field Editor filtering logic (fixes JabRef#15066) (JabRef#15094)
  Output URL to workflow
  Fix token
  Refine stats message
  Quick fix to reduce load on runners
  "Debug" output for assign-issue-action
  Streamline pr-comment.yml (and remove status: stale label)
  Feature provide insights citation fetcher (JabRef#15093)
  Automatic Grouping By Entry Type (JabRef#15081)
  Minor test fixes for arXiv (JabRef#15100)
  New Crowdin updates (JabRef#15101)
  recomment linked files handler (JabRef#15105)
  Chore(deps): Bump jablib/src/main/resources/csl-styles (JabRef#15087)
  Streamline binaries (JabRef#15085)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

first contrib good first issue An issue intended for project-newcomers. Varies in difficulty. status: no-bot-comments status: to-be-merged PRs which are accepted and should go into the merge-queue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Fix "Automatic field editor"

2 participants