Skip to content

Use INSPIRE texkeys for arXiv-ID based imports#15038

Draft
addix7 wants to merge 21 commits intoJabRef:mainfrom
addix7:inspirehep-texkeys
Draft

Use INSPIRE texkeys for arXiv-ID based imports#15038
addix7 wants to merge 21 commits intoJabRef:mainfrom
addix7:inspirehep-texkeys

Conversation

@addix7
Copy link

@addix7 addix7 commented Feb 5, 2026

Closes #12292

This change ensures that entries imported via arXiv identifiers use INSPIRE-provided citation keys when the INSPIRE arXiv endpoint is used, aligning arXiv-ID based imports with normal INSPIRE search behavior. Although the fix shows correct results in the UI, I revisited and understood the IdBasedFetcher, INSPIREFetcher, and ArXivFetcher flow to confirm that the INSPIRE origin can only be determined after INSPIRE returns BibTeX metadata, which justifies applying INSPIRE texkeys at that stage.

Steps to test

  1. Open JabRef and use the INSPIRE web search with a normal query (e.g., "Maldacena AdS CFT") and import an entry.
  2. Note the generated citation key (e.g., Maldacena1997).
  3. Repeat the import using an arXiv identifier (e.g., hep-th/9711200) via INSPIRE.
  4. Verify that the imported entry now uses the same INSPIRE citation key as the normal INSPIRE search.
Screenshot 2026-02-04 183150 Screenshot 2026-02-04 183316

Mandatory checks

  • 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 described the change in CHANGELOG.md in a way that is understandable for the average user (if change is visible to the user)
  • I checked the user documentation: Is the information available and up to date? If not, I created an issue at https://github.com/JabRef/user-documentation/issues or, even better, I submitted a pull request updating file(s) in https://github.com/JabRef/user-documentation/tree/main/en.

@qodo-free-for-open-source-projects
Copy link
Contributor

Review Summary by Qodo

Fix INSPIRE texkeys and preview preferences reset issues

🐞 Bug fix

Grey Divider

Walkthroughs

Description
• Ensure INSPIRE texkeys are used for arXiv-ID based imports consistently
• Fix NullPointerException when resetting preview preferences
• Preserve citation keys from fetched entries in merged results
• Add default factory method and reset capability to PreviewPreferences
Diagram
flowchart LR
  A["ArXiv ID Import"] -->|"via INSPIRE"| B["MergingIdBasedFetcher"]
  B -->|"preserve citation key"| C["Merged BibEntry"]
  C -->|"uses INSPIRE texkey"| D["Consistent Citation Key"]
  E["PreviewPreferences Reset"] -->|"getDefault method"| F["Default Instance"]
  F -->|"setAll method"| G["Preferences Cleared"]
Loading

Grey Divider

File Changes

1. jablib/src/main/java/org/jabref/logic/importer/fetcher/MergingIdBasedFetcher.java 🐞 Bug fix +2/-1

Preserve fetched citation keys in merged entries

• Preserve citation key from fetched entry when merging bibliography entries
• Ensures INSPIRE-provided texkeys are retained in merged results
• Applies citation key after field updates to maintain consistency

jablib/src/main/java/org/jabref/logic/importer/fetcher/MergingIdBasedFetcher.java


2. jabgui/src/main/java/org/jabref/gui/preferences/JabRefGuiPreferences.java 🐞 Bug fix +2/-1

Add preview preferences reset capability

• Add PreviewPreferences reset to clear method
• Create defensive copy of cycle list to prevent mutation issues
• Ensures preview preferences are properly reset when clearing all preferences

jabgui/src/main/java/org/jabref/gui/preferences/JabRefGuiPreferences.java


3. jabgui/src/main/java/org/jabref/gui/preview/PreviewPreferences.java ✨ Enhancement +28/-0

Add default factory and reset methods

• Add private no-argument constructor for default initialization
• Implement getDefault factory method for creating default instances
• Add setAll method to reset all preference fields to provided values
• Enables proper preference reset without NullPointerException

jabgui/src/main/java/org/jabref/gui/preview/PreviewPreferences.java


View more (2)
4. CHANGELOG.md 📝 Documentation +2/-0

Update changelog with bug fixes

• Document fix for INSPIRE texkeys consistency in arXiv imports
• Document fix for NullPointerException in preview preferences reset
• Link to related GitHub issues for traceability

CHANGELOG.md


5. .idea/codeStyles/Project.xml ⚙️ Configuration changes +3/-2

Update IDE code style configuration

• Remove deprecated JavaCodeStyleSettings options
• Disable EditorConfig integration
• Clean up code style configuration

.idea/codeStyles/Project.xml


Grey Divider

Qodo Logo

@github-actions github-actions bot added the good second issue Issues that involve a tour of two or three interweaved components in JabRef label Feb 5, 2026
@koppor
Copy link
Member

koppor commented Feb 5, 2026

@addix7 Read about git -- https://github.com/JabRef/jabref/pull/15038/commits shows many unrelated changes. -- This time, you are allowed to force-push.

@koppor koppor closed this Feb 5, 2026
@koppor koppor reopened this Feb 5, 2026
@qodo-free-for-open-source-projects
Copy link
Contributor

Review Summary by Qodo

Ensure INSPIRE texkeys for arXiv imports and fix preview preferences reset

🐞 Bug fix ✨ Enhancement

Grey Divider

Walkthroughs

Description
• Ensure INSPIRE texkeys are used for arXiv-ID based imports consistently
• Fix NullPointerException when resetting preview preferences
• Add PreviewPreferences.getDefault() and setAll() methods
• Preserve citation keys from fetched entries in merged results
Diagram
flowchart LR
  A["ArXiv-ID Import"] -->|"Fetch via INSPIRE"| B["MergingIdBasedFetcher"]
  B -->|"Merge entries"| C["Preserve Citation Key"]
  C -->|"Use INSPIRE texkey"| D["Merged Entry"]
  E["Reset Preferences"] -->|"Call clear()"| F["JabRefGuiPreferences"]
  F -->|"Reset preview"| G["PreviewPreferences.getDefault()"]
  G -->|"Initialize defaults"| H["Preview Reset Complete"]
Loading

Grey Divider

File Changes

1. jabgui/src/main/java/org/jabref/gui/preferences/JabRefGuiPreferences.java 🐞 Bug fix +2/-1

Fix preview preferences reset and list mutability

• Added getPreviewPreferences().setAll(PreviewPreferences.getDefault()) to the clear() method to
 properly reset preview preferences
• Changed getStringList(CYCLE_PREVIEW) to create a new ArrayList to avoid modifying immutable list

jabgui/src/main/java/org/jabref/gui/preferences/JabRefGuiPreferences.java


2. jabgui/src/main/java/org/jabref/gui/preview/PreviewPreferences.java ✨ Enhancement +28/-0

Add default constructor and reset methods

• Added private no-argument constructor for default initialization
• Added getDefault() static method to create default PreviewPreferences instance
• Added setAll() method to update all preference fields from another PreviewPreferences object

jabgui/src/main/java/org/jabref/gui/preview/PreviewPreferences.java


3. jablib/src/main/java/org/jabref/logic/importer/fetcher/MergingIdBasedFetcher.java 🐞 Bug fix +2/-1

Preserve citation keys in merged entries

• Added line to preserve citation key from fetched entry when merging bibliography entries
• Ensures INSPIRE-provided citation keys are retained in merged results from arXiv-ID based imports

jablib/src/main/java/org/jabref/logic/importer/fetcher/MergingIdBasedFetcher.java


View more (2)
4. .idea/codeStyles/Project.xml ⚙️ Configuration changes +3/-2

Update code style configuration

• Removed deprecated JavaCodeStyleSettings options (LAYOUT_ON_DEMAND_IMPORT_FROM_SAME_PACKAGE_FIRST
 and PRESERVE_MODULE_IMPORTS)
• Added editorconfig configuration with ENABLED set to false

.idea/codeStyles/Project.xml


5. CHANGELOG.md 📝 Documentation +2/-0

Document bug fixes in changelog

• Added entry documenting INSPIRE texkeys fix for arXiv-ID based imports with issue reference #12292
• Added entry documenting NullPointerException fix for preview preferences reset with issue
 reference #14410

CHANGELOG.md


Grey Divider

Qodo Logo

Copy link
Member

@koppor koppor left a comment

Choose a reason for hiding this comment

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

tests missing


Set<Field> updatedFields = updateFieldsFromSource(fetchedEntry, mergedEntry);

fetchedEntry.getCitationKey().ifPresent(mergedEntry::setCitationKey);
Copy link
Member

Choose a reason for hiding this comment

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

No - I think updateFieldsFromSource needs to be adapted.

Your change affects ALL fetchers

Copy link
Author

Choose a reason for hiding this comment

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

Hello,
thanks for the clarification, i understandm= that this makes citation key applicable to all the fetchers, i will work on it such that, this works only when the fetched entry originates from inspire.
I will also clean the messy commit history and add required tests.

@qodo-free-for-open-source-projects
Copy link
Contributor

Code Review by Qodo

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

Grey Divider


Action required

1. TextBasedPreviewLayout built with nulls 📘 Rule violation ⛯ Reliability
Description
PreviewPreferences.getDefault() constructs new TextBasedPreviewLayout("", null, null), passing
  null into dependencies that are treated as non-null downstream.
• LayoutHelper’s constructor marks LayoutFormatterPreferences as @NonNull, and
  TextBasedPreviewLayout.setText only catches IOException, so a NullPointerException can
  propagate during preview layout parsing.
• This introduces a crash risk when preferences are reset/cleared and the custom preview layout is
  accessed.
Code

jabgui/src/main/java/org/jabref/gui/preview/PreviewPreferences.java[R50-60]

+    private PreviewPreferences() {
+        this(
+                List.of(),
+                0,
+                new TextBasedPreviewLayout("", null, null),
+                "",
+                false,
+                false,
+                List.of(),
+                false
+        );
Evidence
The checklist forbids passing null unless the API explicitly supports it and requires robust
null/edge-case handling. The new default preferences path explicitly passes null into
TextBasedPreviewLayout, which forwards those values into LayoutHelper, whose constructor
documents preferences as @NonNull, and NPEs are not handled by TextBasedPreviewLayout (only
IOException is caught).

Rule 3: Generic: Robust Error Handling and Edge Case Management
AGENTS.md
jabgui/src/main/java/org/jabref/gui/preview/PreviewPreferences.java[50-60]
jablib/src/main/java/org/jabref/logic/layout/LayoutHelper.java[45-59]

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

## Issue description
`PreviewPreferences.getDefault()` currently constructs `new TextBasedPreviewLayout(&quot;&quot;, null, null)`. This passes `null` into dependencies that are expected to be non-null (e.g., `LayoutHelper` marks `LayoutFormatterPreferences` as `@NonNull`). Because `TextBasedPreviewLayout.setText` only catches `IOException`, an NPE can escape and crash the app when preview parsing happens.

## Issue Context
The default preferences instance is used during preference resets/clears. The custom preview layout should remain safe to instantiate and use even when restoring defaults.

## Fix Focus Areas
- jabgui/src/main/java/org/jabref/gui/preview/PreviewPreferences.java[50-66]
- jablib/src/main/java/org/jabref/logic/layout/TextBasedPreviewLayout.java[25-44]
- jablib/src/main/java/org/jabref/logic/layout/LayoutHelper.java[45-59]

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


2. Preview reset blanks preview 🐞 Bug ✓ Correctness
Description
• JabRefGuiPreferences.clear() now resets PreviewPreferences via PreviewPreferences.getDefault(),
  but that default is an empty cycle and empty preview style.
• Because PreviewPreferences.setAll copies these empty values into the live preferences object, the
  reset operation can store an empty PREVIEW_STYLE and lead to blank preview rendering after a reset.
• This contradicts JabRefGuiPreferences’ own configured preview defaults (non-empty CYCLE_PREVIEW
  and PREVIEW_STYLE), so “reset to defaults” becomes “reset to blank” for preview.
Code

jabgui/src/main/java/org/jabref/gui/preview/PreviewPreferences.java[R50-65]

+    private PreviewPreferences() {
+        this(
+                List.of(),
+                0,
+                new TextBasedPreviewLayout("", null, null),
+                "",
+                false,
+                false,
+                List.of(),
+                false
+        );
+    }
+
+    public static PreviewPreferences getDefault() {
+        return new PreviewPreferences();
+    }
Evidence
Resetting preferences calls PreviewPreferences.getDefault() and copies it into the active
PreviewPreferences. The new getDefault() constructs an empty preview style/layout cycle, while
JabRefGuiPreferences defines non-empty defaults and uses PREVIEW_STYLE to build
TextBasedPreviewLayout instances; thus a reset can leave the preview style empty and the selected
preview layout effectively blank.

jabgui/src/main/java/org/jabref/gui/preferences/JabRefGuiPreferences.java[333-354]
jabgui/src/main/java/org/jabref/gui/preview/PreviewPreferences.java[50-65]
jabgui/src/main/java/org/jabref/gui/preview/PreviewPreferences.java[149-158]
jabgui/src/main/java/org/jabref/gui/preferences/JabRefGuiPreferences.java[262-286]
jabgui/src/main/java/org/jabref/gui/preferences/JabRefGuiPreferences.java[842-864]
jabgui/src/main/java/org/jabref/gui/preview/PreviewPreferences.java[91-99]

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

### Issue description
Resetting preferences now calls `getPreviewPreferences().setAll(PreviewPreferences.getDefault())`, but `PreviewPreferences.getDefault()` currently represents an *empty/blank* preview configuration (empty cycle + empty preview template). This can cause the preview to become blank after a preference reset, which is inconsistent with JabRef’s actual configured defaults in `JabRefGuiPreferences`.

### Issue Context
`JabRefGuiPreferences` already defines non-empty defaults for `CYCLE_PREVIEW` and `PREVIEW_STYLE`. `getPreviewPreferences()` constructs `TextBasedPreviewLayout` from `PREVIEW_STYLE`, so resetting to an empty style is effectively a functional regression.

### Fix Focus Areas
- jabgui/src/main/java/org/jabref/gui/preferences/JabRefGuiPreferences.java[333-354]
- jabgui/src/main/java/org/jabref/gui/preferences/JabRefGuiPreferences.java[842-868]
- jabgui/src/main/java/org/jabref/gui/preferences/JabRefGuiPreferences.java[262-286]
- jabgui/src/main/java/org/jabref/gui/preview/PreviewPreferences.java[50-65]
- jabgui/src/main/java/org/jabref/gui/preview/PreviewPreferences.java[149-158]

### Suggested direction
- Replace usage of `PreviewPreferences.getDefault()` during reset with a factory that builds a PreviewPreferences instance from JabRefGuiPreferences’ `defaults` (including the full default preview template string and default cycle).
- Ensure the default `TextBasedPreviewLayout` is created with proper `LayoutFormatterPreferences` and `JournalAbbreviationRepository` (available in `JabRefGuiPreferences.getPreviewPreferences()`), rather than passing nulls.
- Optionally, make `PreviewPreferences.getDefault()` either (a) removed if misleading, or (b) accept the required dependencies and default strings so it is safe and consistent.

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


3. Citation key not merged 🐞 Bug ✓ Correctness
Description
• MergingIdBasedFetcher now copies the fetched citation key into the intermediate mergedEntry, but
  the batch merge flow filters out results when hasChanges is false.
• hasChanges is computed only from updated bib fields and ignores citation-key differences, so
  citation-key-only improvements are dropped before merging.
• Even when merging proceeds, MergeEntriesHelper.mergeEntries does not apply citation key changes to
  the library entry at all, so the new citation key never reaches the library entry.
Code

jablib/src/main/java/org/jabref/logic/importer/fetcher/MergingIdBasedFetcher.java[R107-110]

+        fetchedEntry.getCitationKey().ifPresent(mergedEntry::setCitationKey);
+
        return new FetcherResult(entryFromLibrary, mergedEntry,
                !updatedFields.isEmpty(), updatedFields);
Evidence
The PR sets a citation key on the intermediate merged entry, but the GUI flow only proceeds when
FetcherResult.hasChanges is true, and hasChanges is based solely on updatedFields (fields), not
citation key. Additionally, the merge routine used to apply changes merges only entry type and
fields and does not set citation keys; thus citation keys are neither considered for change
detection nor applied to the library entry.

jablib/src/main/java/org/jabref/logic/importer/fetcher/MergingIdBasedFetcher.java[97-111]
jabgui/src/main/java/org/jabref/gui/mergeentries/BatchEntryMergeTask.java[105-116]
jabgui/src/main/java/org/jabref/gui/mergeentries/MergeEntriesHelper.java[35-44]
jabgui/src/main/java/org/jabref/gui/mergeentries/MergeEntriesHelper.java[59-78]
jabgui/src/main/java/org/jabref/gui/undo/UndoableKeyChange.java[35-44]

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

### Issue description
`MergingIdBasedFetcher` now copies a fetched citation key into `mergedEntry`, but the GUI batch merge pipeline (a) filters results based on `hasChanges` (computed only from updated *fields*) and (b) uses `MergeEntriesHelper.mergeEntries`, which does not merge citation keys. Therefore, citation-key updates won’t be applied to the library entries and may be filtered out entirely.

### Issue Context
Citation key changes are not represented as `Field`s in `MergeEntriesHelper.mergeFields`. The codebase already has `UndoableKeyChange`, so citation-key changes can/should be applied with undo support when intended.

### Fix Focus Areas
- jablib/src/main/java/org/jabref/logic/importer/fetcher/MergingIdBasedFetcher.java[97-111]
- jabgui/src/main/java/org/jabref/gui/mergeentries/BatchEntryMergeTask.java[105-116]
- jabgui/src/main/java/org/jabref/gui/mergeentries/MergeEntriesHelper.java[35-78]
- jabgui/src/main/java/org/jabref/gui/undo/UndoableKeyChange.java[35-44]

### Suggested direction
- Decide intended behavior: should fetched citation keys override existing keys, or only set when library entry has no key?
- Update change detection:
 - Track a `citationKeyChanged` boolean in `mergeBibEntries` (compare fetched vs library key), and incorporate it into `FetcherResult.hasChanges`.
 - Alternatively, remove the `.filter(FetcherResult::hasChanges)` and rely on `MergeEntriesHelper.mergeEntries` returning whether anything changed (after key merge is implemented).
- Update application of changes:
 - Extend `MergeEntriesHelper.mergeEntries` to merge citation keys (and add an `UndoableKeyChange` edit when it changes).
 - Ensure `mergeEntries` returns true when the citation key changes so the task counts it as an update.

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



Remediation recommended

4. No tests for citekey merge 📘 Rule violation ⛯ Reliability
Description
MergingIdBasedFetcher.mergeBibEntries now copies the fetched entry’s citation key onto
  mergedEntry, changing merge behavior for identifier-based fetches.
• This is a behavioral change in org.jabref.logic without any accompanying unit test
  updates/additions visible in the PR.
• Missing test coverage increases regression risk for citation key behavior across fetchers.
Code

jablib/src/main/java/org/jabref/logic/importer/fetcher/MergingIdBasedFetcher.java[R107-108]

+        fetchedEntry.getCitationKey().ifPresent(mergedEntry::setCitationKey);
+
Evidence
The compliance checklist requires tests to be added/updated when logic-layer behavior changes. The
PR introduces new citekey propagation logic in jablib but the PR description indicates tests were
not added (marked as partially done), and no test modifications are present in the provided diff.

AGENTS.md
AGENTS.md
jablib/src/main/java/org/jabref/logic/importer/fetcher/MergingIdBasedFetcher.java[104-110]

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

## Issue description
A behavior change was made in `MergingIdBasedFetcher` to propagate the fetched entry’s citation key into the merged entry. This should be covered by a unit test to prevent regressions in citation key behavior.

## Issue Context
The change is in `org.jabref.logic` (`jablib`) and affects merge results used by GUI merge actions.

## Fix Focus Areas
- jablib/src/main/java/org/jabref/logic/importer/fetcher/MergingIdBasedFetcher.java[97-111]

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


5. Unrelated .idea config changes 📘 Rule violation ✓ Correctness
Description
• The PR modifies IntelliJ project code-style settings (e.g., toggling <editorconfig> enablement)
  in .idea/codeStyles/Project.xml.
• These configuration/formatting changes are unrelated to the functional INSPIRE texkey behavior and
  increase diff noise/review surface.
• Keeping such changes out of feature PRs helps maintain consistent formatting and minimizes
  unrelated churn.
Code

.idea/codeStyles/Project.xml[R38-40]

+    <editorconfig>
+      <option name="ENABLED" value="false" />
+    </editorconfig>
Evidence
The checklist requires avoiding unrelated formatting/reformatting changes. The PR includes
modifications to IDE code-style configuration that do not contribute to the INSPIRE texkey feature
and are therefore unrelated churn.

AGENTS.md
.idea/codeStyles/Project.xml[12-40]

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 PR includes unrelated IDE formatting/config changes in `.idea/codeStyles/Project.xml`, increasing diff noise and making review harder.

## Issue Context
The feature PR is about INSPIRE texkeys for arXiv-ID based imports; IDE code-style configuration changes are orthogonal.

## Fix Focus Areas
- .idea/codeStyles/Project.xml[12-40]

ⓘ 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

@qodo-free-for-open-source-projects
Copy link
Contributor

Persistent review updated to latest commit c46be1d

this.shouldDownloadCovers.set(shouldDownloadCovers);
}

private PreviewPreferences() {
Copy link
Member

Choose a reason for hiding this comment

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

urelated? this seems to. be coming from another pr

Copy link
Member

Choose a reason for hiding this comment

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

@addix7 Its now one week that this comment is unaddressed. Do you intend to work on this?

@testlens-app
Copy link

testlens-app bot commented Feb 6, 2026

✅ All tests passed ✅

🏷️ Commit: cac51a3
▶️ Tests: 11192 executed
⚪️ Checks: 48/48 completed


Learn more about TestLens at testlens.app.

@Siedlerchr
Copy link
Member

That's why I was asking: You need to identify the record first to see if it's an inspire hep related entry and then you can keep the citaiton ke

@koppor koppor marked this pull request as draft February 14, 2026 08:34
@jabref-machine
Copy link
Collaborator

Your code currently does not meet JabRef's code guidelines. IntelliJ auto format covers some cases. There seem to be issues with your code style and autoformat configuration. Please reformat your code (Ctrl+Alt+L) and commit, then push.

@github-actions
Copy link
Contributor

Your pull request conflicts with the target branch.

Please merge with your code. For a step-by-step guide to resolve merge conflicts, see https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/addressing-merge-conflicts/resolving-a-merge-conflict-using-the-command-line.

@addix7
Copy link
Author

addix7 commented Feb 19, 2026

Hi @koppor,

I’m currently stuck with a local development issue and would really appreciate some guidance.

For some time now, I’ve been unable to run JabRef successfully from source due to initialization errors related to preview preferences and missing generated resources (journal list / citation style catalog). I’ve tried multiple clean setups, fresh clones, clearing caches, and different Gradle run configurations, but I keep running into either JBang-related issues (path with spaces on Windows) or a UnsupportedOperationException during GUI initialization.

At the moment, I’ve managed to get it running locally using a small workaround, but I don’t feel confident that this is the correct or intended solution. Since I really want to contribute properly (especially for the TexKey issue), I want to ensure my setup is aligned with the expected development workflow, due to this i cant figure out how to go past this one error showing........

Could you please advise on:

The recommended way to run JabRef on Windows if the username contains spaces?

Whether there’s a known issue with preview preferences causing the immutable list exception?

The correct way to skip or generate the required resources for development mode?

I’ve been trying to resolve this for a few weeks now, and I’m very motivated to contribute — I just need a bit of direction to make sure I’m not fighting the wrong problem.

Thank you for your time 🙏

@koppor
Copy link
Member

koppor commented Feb 20, 2026

@addix7 please show up at the community chat. Maybe someone has time to investigate. And I think, we fixed space handling issues (cc @calixtus ). -- Note: Our guide says: Checkout to c:\git-repositories. You obviously did not follow and wasted weeks. Not sure why. However since you have such long time, you can really connect to the community and exchange for other setups. Learn how to share the current state. Experiment with https://github.com/oOblik/CustomSandbox for reproducibke setups. Then, your weeks are well spent.

In other words: do not tinker, engineer! ("There is so much tinkering with software. What we need is Software Engineering!")

@addix7
Copy link
Author

addix7 commented Feb 23, 2026

Hi @koppor,

Thank you for the guidance earlier.

I have taken some time to reset and i am now setting up the project again following the recommended repositories structure exactly. I will also join the community chat to share my setup and align with others before making further changes.

I appreciate the advice about engineering systematically instead of patching locally, I will focus on making the setup reproducible and clean before continuing with the TexKey issue.

I’ll update once I have a stable environment.
Thanks again.
kalp

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

good second issue Issues that involve a tour of two or three interweaved components in JabRef status: changes-required Pull requests that are not yet complete

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Use default texkeys when importing from Inspirehep web search with arxiv number

4 participants