Skip to content

Commit c0d424a

Browse files
authored
Merge branch 'main' into fix-for-issue-12558
2 parents 3f67cca + 65b9cb0 commit c0d424a

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

47 files changed

+389
-157
lines changed

.gitattributes

+1
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,4 @@ gradlew text eol=lf
1313
*.properties text eol=lf
1414

1515
CHANGELOG.md merge=union
16+
src/main/resources/l10n/JabRef_en.properties merge=union

.github/ghprcomment.yml

+17-6
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
Please carefully follow [the setup guide for the codestyle](https://devdocs.jabref.org/getting-into-the-code/guidelines-for-setting-up-a-local-workspace/intellij-13-code-style.html).
66
Afterwards, please [run checkstyle locally](https://devdocs.jabref.org/getting-into-the-code/guidelines-for-setting-up-a-local-workspace/intellij-13-code-style.html#run-checkstyle) and fix the issues.
77
8+
89
In case of issues with the import order, double check that you [activated Auto Import](https://devdocs.jabref.org/getting-into-the-code/guidelines-for-setting-up-a-local-workspace/intellij-13-code-style.html#enable-proper-import-cleanup).
910
You can trigger fixing imports by pressing <kbd>Ctrl</kbd>+<kbd>Alt</kbd>+<kbd>O</kbd> to trigger [Optimize Imports](https://www.jetbrains.com/guide/tips/optimize-imports/).
1011
- jobName: OpenRewrite
@@ -14,20 +15,23 @@
1415
The issues found can be **automatically fixed**.
1516
Please execute the gradle task *`rewriteRun`*, check the results, commit, and push.
1617
18+
1719
You can check the detailed error output by navigating to your pull request, selecting the tab "Checks", section "Tests" (on the left), subsection "OpenRewrite".
1820
- jobName: Modernizer
1921
message: >
2022
Your code currently does not meet JabRef's code guidelines.
2123
We use [Gradle Modernizer Plugin](https://github.com/andygoossens/gradle-modernizer-plugin#gradle-modernizer-plugin) to ensure "modern" Java coding practices.
2224
Please fix the detected errors, commit, and push.
2325
26+
2427
You can check the detailed error output by navigating to your pull request, selecting the tab "Checks", section "Tests" (on the left), subsection "Modernizer".
2528
- jobName: Markdown
2629
message: >
2730
You modified Markdown (`*.md`) files and did not meet JabRef's rules for consistently formatted Markdown files.
2831
To ensure consistent styling, we have [markdown-lint](https://github.com/DavidAnson/markdownlint) in place.
2932
[Markdown lint's rules](https://github.com/DavidAnson/markdownlint/blob/main/doc/Rules.md#rules) help to keep our Markdown files consistent within this repository and consistent with the Markdown files outside here.
3033
34+
3135
You can check the detailed error output by navigating to your pull request, selecting the tab "Checks", section "Tests" (on the left), subsection "Markdown".
3236
- jobName: CHANGELOG.md
3337
message: |
@@ -39,17 +43,16 @@
3943
In the area "Some checks were not successful", locate "Tests / Unit tests (pull_request)" and click on "Details".
4044
This brings you to the test output.
4145
46+
4247
You can then run these tests in IntelliJ to reproduce the failing tests locally.
4348
We offer a quick test running howto in the section [Final build system checks](https://devdocs.jabref.org/getting-into-the-code/guidelines-for-setting-up-a-local-workspace/intellij-12-build.html#final-build-system-checks) in our setup guide.
4449
- jobName: no-force-push
4550
message: >
4651
Do not force-push!
47-
Force push is off limits and very bad style when working together on a project.
48-
([Mainly because it is not supported well by GitHub istself.](https://github.com/orgs/community/discussions/3478))
49-
Commits will be lost, comments on commits will loose their context.
50-
This makes it harder to review.
51-
In the end, all commits will be [squashed](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges#squash-and-merge-your-commits) either way before being merged into the `main`` branch.
52-
- jobName: move_issue
52+
Force pushing is a very bad practice when working together on a project (mainly because it is [not supported well by GitHub itself](https://github.com/orgs/community/discussions/3478)).
53+
Commits are lost and comments on commits lose their context, thus making it harder to review changes.
54+
At the end, all commits will be [squashed](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/incorporating-changes-from-a-pull-request/about-pull-request-merges#squash-and-merge-your-commits) anyway before being merged into the `main` branch.
55+
- jobName: 'Mark issue as in progress'
5356
message: |
5457
Your pull request needs to link an issue.
5558
@@ -81,3 +84,11 @@
8184
- ✅ `Fixes https://github.com/JabRef/jabref/issues/xyz` links pull-request to issue. Merging the PR will close the issue.
8285
- ✅ `Fixes https://github.com/Koppor/jabref/issues/xyz` links pull-request to issue. Merging the PR will close the issue.
8386
- ❌ `Fixes [#xyz](https://github.com/JabRef/jabref/issues/xyz)` links pull-request to issue. Merging the PR will **NOT** close the issue.
87+
- jobName: 'Conflicts with target branch'
88+
message: >
89+
Your pull request conflicts with the target branch.
90+
91+
92+
Please merge `upstream/main` with your code.
93+
Preferrably, do this using `git` in your machine:
94+
Conflicts in `CHANGELOG.md` will be handled by a union of changes.

.github/workflows/on-issue-labeled.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: On labeled issue
1+
name: On issue labeled
22

33
on:
44
issues:
+50
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
name: On issue unassigned
2+
3+
on:
4+
issues:
5+
types:
6+
- unassigned
7+
8+
jobs:
9+
ensure_column:
10+
if: ${{ github.repository_owner == 'JabRef' }}
11+
runs-on: ubuntu-latest
12+
permissions:
13+
issues: write
14+
steps:
15+
- name: Move Issue to "Free to take" Column in "Candidates for University Projects"
16+
uses: m7kvqbe1/github-action-move-issues@main
17+
with:
18+
github-token: ${{ secrets.GH_TOKEN_ACTION_MOVE_ISSUE }}
19+
project-url: "https://github.com/orgs/JabRef/projects/3"
20+
target-labels: ""
21+
target-column: "Free to take"
22+
ignored-columns: ""
23+
default-column: "Free to take"
24+
skip-if-not-in-project: true
25+
- name: Move Issue to "Free to take" Column in "Good First Issues"
26+
uses: m7kvqbe1/github-action-move-issues@main
27+
with:
28+
github-token: ${{ secrets.GH_TOKEN_ACTION_MOVE_ISSUE }}
29+
project-url: "https://github.com/orgs/JabRef/projects/5"
30+
target-labels: ""
31+
target-column: "Free to take"
32+
ignored-columns: ""
33+
default-column: "Free to take"
34+
skip-if-not-in-project: true
35+
remove_labels:
36+
if: ${{ github.repository_owner == 'JabRef' }}
37+
runs-on: ubuntu-latest
38+
permissions:
39+
issues: write
40+
contents: read
41+
steps:
42+
- uses: actions/checkout@v4
43+
- name: Remove assigned label
44+
run: gh issue edit ${{ github.event.issue.number }} --remove-label "📍 Assigned"
45+
env:
46+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
47+
- name: Remove FirstTimeCodeContribution label
48+
run: gh issue edit ${{ github.event.issue.number }} --remove-label "FirstTimeCodeContribution"
49+
env:
50+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/on-issue-unlabeled.yml

+17-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: On unlabeled issue
1+
name: On issue unlabeled
22

33
on:
44
issues:
@@ -33,3 +33,19 @@ jobs:
3333
ignored-columns: ""
3434
default-column: "Free to take"
3535
skip-if-not-in-project: true
36+
remove_assignees:
37+
if: ${{ github.repository_owner == 'JabRef' }}
38+
runs-on: ubuntu-latest
39+
permissions:
40+
issues: write
41+
contents: read
42+
steps:
43+
- uses: actions/checkout@v4
44+
- name: Remove all assignees
45+
run: |
46+
ASSIGNEES=$(gh issue view ${{ github.event.issue.number }} --json assignees --template '{{range .assignees}}{{.login}} {{end}}')
47+
for user in $ASSIGNEES; do
48+
gh issue edit ${{ github.event.issue.number }} --remove-assignee "$user"
49+
done
50+
env:
51+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/on-pr-closed.yml

+8-3
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
name: Mark issue as available
1+
name: On PR closed
22

33
on:
44
pull_request_target:
55
types: [ closed ]
66

77
jobs:
88
unassign_issue:
9+
name: Mark issue as available
910
runs-on: ubuntu-latest
1011
if: github.event.action == 'closed' && !github.event.pull_request.merged
1112
permissions:
@@ -48,10 +49,14 @@ jobs:
4849
skip-if-not-in-project: true
4950
- uses: actions/checkout@v4
5051
- name: Remove assigned status
51-
run : gh issue edit ${{ steps.get_issue_number.outputs.ticketNumber }} --remove-assignee ${{ github.event.pull_request.user.login }}
52+
run: gh issue edit ${{ steps.get_issue_number.outputs.ticketNumber }} --remove-assignee ${{ github.event.pull_request.user.login }}
5253
env:
5354
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
5455
- name: Remove assigned label
55-
run : gh issue edit ${{ steps.get_issue_number.outputs.ticketNumber }} --remove-label "📍 Assigned"
56+
run: gh issue edit ${{ steps.get_issue_number.outputs.ticketNumber }} --remove-label "📍 Assigned"
57+
env:
58+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
59+
- name: Remove FirstTimeCodeContribution label
60+
run: gh issue edit ${{ steps.get_issue_number.outputs.ticketNumber }} --remove-label "FirstTimeCodeContribution"
5661
env:
5762
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.github/workflows/on-pr-labeled.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: On labeled PR
1+
name: On PR labeled
22

33
on:
44
pull_request:

.github/workflows/on-pr-opened.yml

+20-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
name: Mark issue as in progress
1+
name: On PR opened
22

33
on:
44
# _target is required
55
pull_request_target:
66

77
jobs:
88
move_issue:
9+
name: Mark issue as in progress
910
runs-on: ubuntu-latest
1011
permissions:
1112
issues: write
@@ -44,6 +45,24 @@ jobs:
4445
default-column: "In Progress"
4546
issue-number: ${{ steps.get_issue_number.outputs.ticketNumber }}
4647
skip-if-not-in-project: true
48+
conflicts_with_target:
49+
name: Conflicts with target branch
50+
runs-on: ubuntu-latest
51+
steps:
52+
- uses: actions/checkout@v4
53+
with:
54+
show-progress: 'false'
55+
- name: Check PR mergeability
56+
id: check_mergeable
57+
run: |
58+
MERGEABLE=$(gh pr view --json mergeable ${{ github.event.number }} --template '{{.mergeable}}')
59+
if [ "$MERGEABLE" == "CONFLICTING" ]; then
60+
echo "❌ Merge conflicts"
61+
exit 1
62+
fi
63+
echo "✅ No merge conflicts"
64+
env:
65+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
4766
upload-pr-number:
4867
runs-on: ubuntu-latest
4968
steps:

.github/workflows/pr-comment.yml

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,14 @@ name: Comment on PR
77

88
on:
99
workflow_run:
10-
workflows: ["Tests", "Mark issue as in progress"]
10+
workflows: ["Tests", "On PR opened"]
1111
types:
1212
- completed
1313

1414
jobs:
1515
comment:
1616
# https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#running-a-workflow-based-on-the-conclusion-of-another-workflow
17-
if: ${{ github.event.workflow_run.conclusion == 'failure' && (github.repository_owner == 'JabRef') }}
17+
if: ${{ github.repository == 'JabRef/jabref' }}
1818
runs-on: ubuntu-latest
1919
permissions:
2020
actions: read

.github/workflows/tests-fetchers.yml

+1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ permissions:
4343

4444
jobs:
4545
fetchertests:
46+
if: github.repository == 'JabRef/jabref' || github.event_name != 'schedule'
4647
name: Fetcher tests
4748
runs-on: ubuntu-latest
4849
steps:

.github/workflows/tests.yml

+3-1
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@ jobs:
136136
grep -q "1 problem" heylogs.txt || exit 1
137137
138138
changelog-unreleased-only:
139+
if: github.event_name == 'pull_request'
139140
name: CHANGELOG.md - only unreleased touched
140141
runs-on: ubuntu-latest
141142
steps:
@@ -367,13 +368,13 @@ jobs:
367368
uses: olivernybroe/[email protected]
368369

369370
no-force-push:
371+
if: github.event_name == 'pull_request'
370372
runs-on: ubuntu-latest
371373
steps:
372374
- name: Checkout repository
373375
uses: actions/checkout@v4
374376
with:
375377
fetch-depth: 0
376-
377378
- name: Check force push
378379
id: force_push_check
379380
run: |
@@ -390,6 +391,7 @@ jobs:
390391
fi
391392
392393
other_than_main:
394+
if: github.event_name == 'pull_request'
393395
name: Source branch is other than "main"
394396
runs-on: ubuntu-latest
395397
steps:

CHANGELOG.md

+7-4
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ Note that this project **does not** adhere to [Semantic Versioning](https://semv
1111

1212
### Added
1313

14+
- We added <kbd>F5</kbd> as a shortcut key for fetching data and <kbd>Alt+F</kbd> as a shortcut for looking up data using DOI. [#11802](https://github.com/JabRef/jabref/issues/11802)
1415
- We added a feature to rename the subgroup, with the keybinding (<kbd>F2</kbd>) for quick access. [#11896](https://github.com/JabRef/jabref/issues/11896)
1516
- We added a new functionality that displays a drop-down list of matching suggestions when typing a citation key pattern. [#12502](https://github.com/JabRef/jabref/issues/12502)
1617
- We added a new CLI that supports txt, csv, and console-based output for consistency in BibTeX entries. [#11984](https://github.com/JabRef/jabref/issues/11984)
@@ -50,6 +51,8 @@ Note that this project **does not** adhere to [Semantic Versioning](https://semv
5051
- We improved the Check Integrity dialog entry interaction so that a single click focuses on the corresponding entry and a double-click both focuses on the entry and closes the dialog. [#12245](https://github.com/JabRef/jabref/issues/12245)
5152
- We improved journal abbreviation lookup with fuzzy matching to handle minor input errors and variations. [#12467](https://github.com/JabRef/jabref/issues/12467)
5253
- We changed the phrase "Cleanup entries" to "Clean up entries". [#12703](https://github.com/JabRef/jabref/issues/12703)
54+
- A tooltip now appears after 300ms (instead of 2s). [#12649](https://github.com/JabRef/jabref/issues/12649)
55+
- We improved search in preferences and keybindings. [#12647](https://github.com/JabRef/jabref/issues/12647)
5356

5457
### Fixed
5558

@@ -72,9 +75,9 @@ Note that this project **does not** adhere to [Semantic Versioning](https://semv
7275
- We fixed an issue where month values 21–24 (ISO 8601-2019 season codes) in Biblatex date fields were not recognized as seasons during parsing. [#12437](https://github.com/JabRef/jabref/issues/12437)
7376
- We fixed an issue where migration of "Search groups" would fail with an exception when the search query is invalid. [#12555](https://github.com/JabRef/jabref/issues/12555)
7477
- We fixed an issue where not all linked files from BibDesk in the field `bdsk-file-...` were parsed. [#12555](https://github.com/JabRef/jabref/issues/12555)
75-
- We fixed an issue where JabRef displayed an incorrect deletion notification when canceling entry deletion [#12645](https://github.com/JabRef/jabref/issues/12645)
7678
- We fixed an issue where it was possible to select "Search for unlinked local files" for a new (unsaved) library. [#12558](https://github.com/JabRef/jabref/issues/12558)
77-
79+
- We fixed an issue where JabRef displayed an incorrect deletion notification when canceling entry deletion. [#12645](https://github.com/JabRef/jabref/issues/12645)
80+
- We fixed an issue where an exception would occur when running abbreviate journals for multiple entries. [#12634](https://github.com/JabRef/jabref/issues/12634)
7881

7982
### Removed
8083

@@ -610,7 +613,6 @@ Note that this project **does not** adhere to [Semantic Versioning](https://semv
610613
- We now have more "dots" in the offered journal abbreviations. [#9504](https://github.com/JabRef/jabref/pull/9504)
611614
- We now disable the button "Full text search" in the Searchbar by default [#9527](https://github.com/JabRef/jabref/pull/9527)
612615

613-
614616
### Fixed
615617

616618
- The tab "deprecated fields" is shown in biblatex-mode only. [#7757](https://github.com/JabRef/jabref/issues/7757)
@@ -1575,4 +1577,5 @@ The changelog of JabRef 2.11 and all previous versions is available as [text fil
15751577
[5.0]: https://github.com/JabRef/jabref/compare/v5.0-beta...v5.0
15761578
[5.0-beta]: https://github.com/JabRef/jabref/compare/v5.0-alpha...v5.0-beta
15771579
[5.0-alpha]: https://github.com/JabRef/jabref/compare/v4.3...v5.0-alpha
1578-
<!-- markdownlint-disable-file MD012 MD024 MD033 MD053 -->
1580+
1581+
<!-- markdownlint-disable-file MD024 MD033 MD053 -->

CONTRIBUTING.md

+26-12
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,14 @@ One can also add [callouts](https://just-the-docs.github.io/just-the-docs-tests/
8383
Comment on the issue you want to work at with `/assign-me`.
8484
GitHub will then automatically assign you.
8585

86+
<!-- markdownlint-disable-next-line MD026 -->
87+
## Give JabRef a Star!
88+
89+
JabRef is completely free and used by students and researchers all over the world.
90+
It is actively developed and maintained primarily by volunteers in their free time.
91+
Keep them motivated by giving the project a GitHub star:
92+
Simply navigate to <https://github.com/jabref/jabref/> and click on the Star button!
93+
8694
## Pull Request Process
8795

8896
1. Follow the steps at [Pre Condition 3: Code on the local machine](https://devdocs.jabref.org/getting-into-the-code/guidelines-for-setting-up-a-local-workspace/pre-03-code.html) to a) create a fork and b) have the fork checked out on your local machine
@@ -151,24 +159,30 @@ We reserve the right to reject pull requests that contain little or no genuine a
151159

152160
### After submission of a pull request
153161

154-
After you submitted a pull request, automated checks will run.
155-
You may see "Some checks were not successful".
156-
You can click on failing checks to see more information about why they failed.
157-
Then, please look into them and handle accordingly.
162+
Once you submit a pull request, automated checks will run and bots will perform a preliminary review on your code.
163+
You will get automated comments on your pull request within about 5 minutes.
164+
Acting on them in a timely manner is expected.
158165

159-
Afterwards, you will receive comments on your pull request.
160-
Since JabRef is driven by volunteers in their spare time, reviews may take more time than a project with full time developers.
161-
The pull request may be approved immediatly, or a reviewer may request changes.
162-
In that case, please implement the requested changes.
166+
You may also see "Some checks were not successful".
167+
You can click on failing checks to see more information about why they failed.
168+
Please look into them and handle accordingly.
163169

164170
After implementing changes, commit to the branch your pull request is *from* and push.
165171
The pull request will automatically be updated with your changes.
166-
Your commits will also be automatically squashed upon the pull request being accepted.
172+
To maintain a clean git history, your commits will also be automatically squashed upon acceptance of the pull request, during merging.
173+
Thus, no need to worry about WIP commits or [fixing git submodule issues](https://devdocs.jabref.org/code-howtos/faq.html#submodules), and force-pushing should be **avoided**.
174+
175+
After all the basic checks are green, maintainers will look at your pull request.
176+
Since JabRef is driven by volunteers in their spare time, reviews may take more time than a project with full time developers.
177+
The pull request may be approved immediatly, or a reviewer may request changes and/or have discussions regarding your approach.
178+
In that case, you are expected to answer any questions and implement the requested changes.
167179

168-
Please – **Never ever close a pull request and open a new one** -
169-
This causes unessesary work on our side, and is not in the the style of the GitHub open source community.
180+
Please – **never ever close a pull request and open a new one** -
181+
This causes unessesary work on our side, and is not in the the style of the GitHub Open Source community.
170182
You can push any changes you need to make to the branch your pull request is *from*.
171-
These changes will be automatically added to your pull request.
183+
These changes will be automatically reflected in your pull request.
184+
185+
> **If you close your pull request, you will be unassigned from the issue automatically.**
172186
173187
### Development hints
174188

MAINTAINERS

+2
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,5 @@ Carl Christian Snethlage (since 2020)
55
Jonatan Asketorp (since 2021)
66
Thilo Ertel (since 2021)
77
Houssem Nasri (since 2023)
8+
Ruslan Popov (since 2025)
9+
Subhramit Basu Bhowmick (since 2025)

0 commit comments

Comments
 (0)