Skip to content

Commit c401e67

Browse files
committed
Merge branch 'main' of https://github.com/JabRef/jabref into fix-for-issue-JabRef#12272
2 parents 815ba53 + b0a36e9 commit c401e67

File tree

68 files changed

+795
-204
lines changed

Some content is hidden

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

68 files changed

+795
-204
lines changed

.github/PULL_REQUEST_TEMPLATE.md

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
YOU HAVE TO MODIFIY THIS TEXT TO FIT YOUR PR. OTHERWISE YOUR PR WILL BE CLOSED WITHOUT FURTHER COMMENT.
1+
YOU HAVE TO MODIFY THIS TEXT TO FIT YOUR PR. OTHERWISE, YOUR PR WILL BE CLOSED WITHOUT FURTHER COMMENT.
22
Describe the changes you have made here: what, why, ...
3-
Link the issue that will be closed, e.g., "Closes #333". If your PR closes a koppor issue, link it using its URL, e.g., "Closes https://github.com/koppor/jabref/issues/47".
3+
Link the issue that will be closed. Example: "Closes #333".
44

55
### Mandatory checks
66

.github/workflows/assign-issue.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
steps:
1717
- name: Assign the user or unassign stale assignments
1818
id: assign
19-
uses: takanome-dev/assign-issue-action@fix-rate-limit-err
19+
uses: takanome-dev/assign-issue-action@beta
2020
with:
2121
github_token: '${{ secrets.GITHUB_TOKEN }}'
2222
days_until_unassign: 45

.github/workflows/cleanup-pr.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ jobs:
2929
BUILDJABREFPRIVATEKEY: ${{ secrets.buildJabRefPrivateKey }}
3030
- name: Delete folder on builds.jabref.org
3131
if: steps.checksecrets.outputs.secretspresent == 'YES'
32-
uses: appleboy/[email protected].0
32+
uses: appleboy/[email protected].1
3333
with:
3434
script: rm -rf /var/www/builds.jabref.org/www/pull/${{ github.event.pull_request.number }} || true
3535
host: build-upload.jabref.org

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

+4-16
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,23 @@ jobs:
1414
permissions:
1515
issues: write
1616
steps:
17-
- name: Move Issue to "Free to take" Column in "Candidates for University Projects"
17+
- name: Move Issue to "Assigned" Column in "Candidates for University Projects"
1818
uses: m7kvqbe1/github-action-move-issues@feat/skip-if-not-in-project-flag
1919
with:
2020
github-token: ${{ secrets.GH_TOKEN_ACTION_MOVE_ISSUE }}
2121
project-url: "https://github.com/orgs/JabRef/projects/3"
2222
target-labels: "📍 Assigned"
23-
target-column: "Free to take"
23+
target-column: "Assigned"
2424
ignored-columns: ""
2525
default-column: "Free to take"
2626
skip-if-not-in-project: true
27-
- name: Move Issue to "Free to take" Column in "Good First Issues"
27+
- name: Move Issue to "Assigned" Column in "Good First Issues"
2828
uses: m7kvqbe1/github-action-move-issues@feat/skip-if-not-in-project-flag
2929
with:
3030
github-token: ${{ secrets.GH_TOKEN_ACTION_MOVE_ISSUE }}
3131
project-url: "https://github.com/orgs/JabRef/projects/5"
3232
target-labels: "📍 Assigned"
33-
target-column: "Free to take"
33+
target-column: "Assigned"
3434
ignored-columns: ""
3535
default-column: "Free to take"
3636
skip-if-not-in-project: true
@@ -110,15 +110,3 @@ jobs:
110110
run: |
111111
ISSUE_URL=$(jq --raw-output .issue.html_url "$GITHUB_EVENT_PATH")
112112
gh project item-add 9 --owner JabRef --url $ISSUE_URL
113-
ui:
114-
if: "${{ github.event.label.name == 'ui' && github.repository_owner == 'JabRef' }}"
115-
runs-on: ubuntu-latest
116-
steps:
117-
- name: ui
118-
env:
119-
GH_DEBUG: api
120-
GH_TOKEN: ${{ secrets.GH_TOKEN_PROJECT_ITEM_ADD }}
121-
run: |
122-
ISSUE_URL=$(jq --raw-output .issue.html_url "$GITHUB_EVENT_PATH")
123-
echo $ISSUE_URL
124-
gh project item-add 8 --owner JabRef --url $ISSUE_URL
+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
name: On unlabeled issue
2+
3+
on:
4+
issues:
5+
types:
6+
- unlabeled
7+
8+
jobs:
9+
ensure_column:
10+
name: "📍 Assigned or FirstTimeCodeContribution"
11+
if: ${{ (github.event.label.name == '📍 Assigned' || github.event.label.name == 'FirstTimeCodeContribution') && github.repository_owner == 'JabRef' }}
12+
runs-on: ubuntu-latest
13+
permissions:
14+
issues: write
15+
steps:
16+
- name: Move Issue to "Free to take" Column in "Candidates for University Projects"
17+
uses: m7kvqbe1/github-action-move-issues@feat/skip-if-not-in-project-flag
18+
with:
19+
github-token: ${{ secrets.GH_TOKEN_ACTION_MOVE_ISSUE }}
20+
project-url: "https://github.com/orgs/JabRef/projects/3"
21+
target-labels: "📍 Assigned"
22+
target-column: "Assigned"
23+
ignored-columns: ""
24+
default-column: "Free to take"
25+
skip-if-not-in-project: true
26+
- name: Move Issue to "Free to take" Column in "Good First Issues"
27+
uses: m7kvqbe1/github-action-move-issues@feat/skip-if-not-in-project-flag
28+
with:
29+
github-token: ${{ secrets.GH_TOKEN_ACTION_MOVE_ISSUE }}
30+
project-url: "https://github.com/orgs/JabRef/projects/5"
31+
target-labels: "📍 Assigned"
32+
target-column: "Assigned"
33+
ignored-columns: ""
34+
default-column: "Free to take"
35+
skip-if-not-in-project: true

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

+4-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,10 @@ on:
88
jobs:
99
automerge:
1010
name: Auto Merge
11-
if: "${{ github.event.label.name == 'automerge' && github.repository_owner == 'JabRef' }}"
11+
if: >
12+
github.event.label.name == 'automerge' &&
13+
github.repository == 'JabRef/jabref' &&
14+
github.event.pull_request.head.repo.full_name == 'JabRef/jabref'
1215
runs-on: ubuntu-latest
1316
steps:
1417
- name: Approve PR

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

-34
This file was deleted.

.github/workflows/pr-comment.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ jobs:
5454
token: ${{ secrets.GITHUB_TOKEN }}
5555
- name: jbang
5656
if: ${{ steps.read-pr_number.outputs.pr_number != '' && steps.isCrossRepository.outputs.isCrossRepository == 'true' }}
57-
uses: jbangdev/jbang-action@v0.119.0
57+
uses: jbangdev/jbang-action@v0.124.0
5858
with:
5959
script: ghprcomment@koppor/ghprcomment
6060
scriptargs: "-r JabRef/jabref -p ${{ steps.read-pr_number.outputs.pr_number }} -w ${{ github.event.workflow_run.id }}"

.github/workflows/product-map.yml

-33
This file was deleted.

.github/workflows/tests-fetchers.yml

+6
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ on:
77
paths:
88
- 'src/main/java/org/jabref/logic/importer/fetcher/**'
99
- 'src/test/java/org/jabref/logic/importer/fetcher/**'
10+
- 'src/main/java/org/jabref/logic/importer/fileformat/PdfMergeMetadataImporter.java'
11+
- 'src/test/java/org/jabref/logic/importer/fileformat/PdfMergeMetadataImporterTest.java'
1012
- 'src/main/java/org/jabref/logic/crawler/**'
1113
- 'src/test/java/org/jabref/logic/crawler/**'
1214
- '.github/workflows/tests-fetchers.yml'
@@ -15,6 +17,10 @@ on:
1517
paths:
1618
- 'src/main/java/org/jabref/logic/importer/fetcher/**'
1719
- 'src/test/java/org/jabref/logic/importer/fetcher/**'
20+
- 'src/main/java/org/jabref/logic/importer/fileformat/PdfMergeMetadataImporter.java'
21+
- 'src/test/java/org/jabref/logic/importer/fileformat/PdfMergeMetadataImporterTest.java'
22+
- 'src/main/java/org/jabref/logic/crawler/**'
23+
- 'src/test/java/org/jabref/logic/crawler/**'
1824
- '.github/workflows/tests-fetchers.yml'
1925
- 'build.gradle'
2026
schedule:

.github/workflows/tests.yml

+11-2
Original file line numberDiff line numberDiff line change
@@ -151,11 +151,20 @@ jobs:
151151
submodules: 'false'
152152
show-progress: 'false'
153153
fetch-depth: 0
154-
- name: Install clparse
154+
- name: Cache clparse jar
155+
id: cache-clparse
156+
uses: actions/cache@v4
157+
with:
158+
path: /tmp/clparse
159+
key: clparse-0.9.1
160+
- name: unzip
161+
if: steps.cache-clparse.outputs.cache-hit != 'true'
155162
run: |
163+
cd /tmp
156164
curl -LO https://github.com/marcaddeo/clparse/releases/download/0.9.1/clparse-0.9.1-x86_64-unknown-linux-musl.tar.gz
157165
tar xzvf clparse-0.9.1-x86_64-unknown-linux-musl.tar.gz
158-
sudo mv clparse /usr/local/bin/clparse
166+
- name: Install clparse
167+
run: sudo mv /tmp/clparse /usr/local/bin/clparse
159168
- name: Check CHANGELOG.md diff
160169
run: |
161170
diff \

CHANGELOG.md

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

1212
### Added
1313

14+
- 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)
1415
- 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)
1516
- 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)
1617
- We added a new dialog for bibliography consistency check. [#11950](https://github.com/JabRef/jabref/issues/11950)
1718
- We added a feature for copying entries to libraries, available via the context menu, with an option to include cross-references. [#12374](https://github.com/JabRef/jabref/pull/12374)
19+
- We added a new "Copy citation (text)" button in the context menu of the preview. [#12551](https://github.com/JabRef/jabref/issues/12551)
20+
- We added a new "Export to clipboard" button in the context menu of the preview. [#12551](https://github.com/JabRef/jabref/issues/12551)
1821
- We added an integrity check if a URL appears in a title. [#12354](https://github.com/JabRef/jabref/issues/12354)
1922

2023
### Changed
@@ -29,9 +32,13 @@ Note that this project **does not** adhere to [Semantic Versioning](https://semv
2932
- For the Citation key generator patterns, we reverted how `[authorsAlpha]` would behave to the original pattern and renamed the LNI-based pattern introduced in V6.0-alpha to `[authorsAlphaLNI]`. [#12499](https://github.com/JabRef/jabref/pull/12499)
3033
- We keep the list of recent files if one files could not be found. [#12517](https://github.com/JabRef/jabref/pull/12517)
3134
- During the import process, the labels indicating individual paragraphs within an abstract returned by PubMed/Medline XML are preserved. [#12527](https://github.com/JabRef/jabref/issues/12527)
35+
- We changed the "Copy Preview" button to "Copy citation (html) in the context menu of the preview. [#12551](https://github.com/JabRef/jabref/issues/12551)
36+
- Pressing Tab in empty text fields of the entry editor now moves the focus to the next field instead of inserting a tab character. [#11938](https://github.com/JabRef/jabref/issues/11938)
37+
- The embedded PostgresSQL server for the search now supports Linux and macOS ARM based distributions natively [#12607](https://github.com/JabRef/jabref/pull/12607)
3238

3339
### Fixed
3440

41+
- We fixed an issue where the F4 shortcut key did not work without opening the right-click context menu. [#6101](https://github.com/JabRef/jabref/pull/6101)
3542
- We fixed an issue where the file renaming dialog was not resizable and its size was too small for long file names. [#12518](https://github.com/JabRef/jabref/pull/12518)
3643
- We fixed an issue where the name of the untitled database was shown as a blank space in the right-click context menu's "Copy to" option. [#12459](https://github.com/JabRef/jabref/pull/12459)
3744
- We fixed an issue where the F3 shortcut key did not work without opening the right-click context menu. [#12417](https://github.com/JabRef/jabref/pull/12417)
@@ -47,6 +54,10 @@ Note that this project **does not** adhere to [Semantic Versioning](https://semv
4754
- We fixed an issue where CSL style citations with citation keys having special characters (such as hyphens or colons) would not be recognized as valid by JabRef. [forum#5431](https://discourse.jabref.org/t/error-when-connecting-to-libreoffice/5431)
4855
- We fixed an issue where the `[authorsAlpha]` pattern in Citation key generator would not behave as per the user documentation. [#12312](https://github.com/JabRef/jabref/issues/12312)
4956
- We fixed an issue where import at "Search for unlinked local files" would re-add already imported files. [#12274](https://github.com/JabRef/jabref/issues/12274)
57+
- 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)
58+
- 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)
59+
- 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)
60+
5061

5162
### Removed
5263

build.gradle

+8-6
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,7 @@ dependencies {
206206

207207
implementation group: 'org.eclipse.jgit', name: 'org.eclipse.jgit', version: '7.1.0.202411261347-r'
208208

209-
implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-yaml', version: '2.18.2'
209+
implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-yaml', version: '2.18.3'
210210
implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: '2.18.2'
211211

212212
implementation 'com.fasterxml:aalto-xml:1.3.3'
@@ -271,7 +271,7 @@ dependencies {
271271
implementation 'org.apache.httpcomponents.client5:httpclient5:5.4.2'
272272
// endregion
273273

274-
implementation 'org.slf4j:slf4j-api:2.0.16'
274+
implementation 'org.slf4j:slf4j-api:2.0.17'
275275
implementation 'org.tinylog:tinylog-api:2.7.0'
276276
implementation 'org.tinylog:slf4j-tinylog:2.7.0'
277277
implementation 'org.tinylog:tinylog-impl:2.7.0'
@@ -332,7 +332,7 @@ dependencies {
332332
implementation 'com.github.vatbub:mslinks:1.0.6.2'
333333

334334
// YAML formatting
335-
implementation 'org.yaml:snakeyaml:2.3'
335+
implementation 'org.yaml:snakeyaml:2.4'
336336

337337
// region AI
338338
implementation 'dev.langchain4j:langchain4j:0.36.2'
@@ -377,13 +377,15 @@ dependencies {
377377
implementation 'io.github.adr:e-adr:2.0.0-SNAPSHOT'
378378

379379
implementation 'io.zonky.test:embedded-postgres:2.1.0'
380-
implementation enforcedPlatform('io.zonky.test.postgres:embedded-postgres-binaries-bom:17.2.0')
380+
implementation enforcedPlatform('io.zonky.test.postgres:embedded-postgres-binaries-bom:17.4.0')
381+
implementation 'io.zonky.test.postgres:embedded-postgres-binaries-darwin-arm64v8'
382+
implementation 'io.zonky.test.postgres:embedded-postgres-binaries-linux-arm64v8'
381383

382384
testImplementation 'io.github.classgraph:classgraph:4.8.179'
383385
testImplementation 'org.junit.jupiter:junit-jupiter:5.11.4'
384386
testImplementation 'org.junit.platform:junit-platform-launcher:1.11.4'
385387

386-
testImplementation 'org.mockito:mockito-core:5.15.2'
388+
testImplementation 'org.mockito:mockito-core:5.16.0'
387389
testImplementation 'org.xmlunit:xmlunit-core:2.10.0'
388390
testImplementation 'org.xmlunit:xmlunit-matchers:2.10.0'
389391
testRuntimeOnly 'com.tngtech.archunit:archunit-junit5-engine:1.4.0'
@@ -396,7 +398,7 @@ dependencies {
396398
// recommended by https://github.com/wiremock/wiremock/issues/2149#issuecomment-1835775954
397399
testImplementation 'org.wiremock:wiremock-standalone:3.10.0'
398400

399-
checkstyle 'com.puppycrawl.tools:checkstyle:10.21.2'
401+
checkstyle 'com.puppycrawl.tools:checkstyle:10.21.3'
400402
// xjc needs the runtime as well for the ant task, otherwise it fails
401403
xjc group: 'org.glassfish.jaxb', name: 'jaxb-xjc', version: '3.0.2'
402404
xjc group: 'org.glassfish.jaxb', name: 'jaxb-runtime', version: '3.0.2'

config/checkstyle/checkstyle.xml

+8
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,14 @@
4040
<property name="fileExtensions" value="groovy,java" />
4141
</module>
4242

43+
<!-- Prevent multiple closing curly braces in the same line -->
44+
<module name="RegexpSingleline">
45+
<property name="id" value="NoMultipleClosingBracesAtEndOfLine"/>
46+
<property name="message" value="Multiple closing curly braces in the same line are not allowed" />
47+
<property name="format" value="\}\s*\}\s*$" />
48+
<property name="fileExtensions" value="groovy,java" />
49+
</module>
50+
4351
<!-- Checks for size violations: https://checkstyle.sourceforge.io/config_sizes.html -->
4452

4553
<!-- LineLength not in place as PreviewerViewer and RelatedArticlesTab have line length with more than 500 charachters -->

config/checkstyle/checkstyle_reviewdog.xml

+8
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,14 @@
4040
<property name="fileExtensions" value="groovy,java" />
4141
</module>
4242

43+
<!-- Prevent multiple closing curly braces in the same line -->
44+
<module name="RegexpSingleline">
45+
<property name="id" value="NoMultipleClosingBracesAtEndOfLine"/>
46+
<property name="message" value="Multiple closing curly braces in the same line are not allowed" />
47+
<property name="format" value="\}\s*\}\s*$" />
48+
<property name="fileExtensions" value="groovy,java" />
49+
</module>
50+
4351
<!-- Checks for size violations: https://checkstyle.sourceforge.io/config_sizes.html -->
4452

4553
<!-- LineLength not in place as PreviewerViewer and RelatedArticlesTab have line length with more than 500 charachters -->

config/checkstyle/suppressions.xml

+2
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,6 @@
99
<suppress checks="[a-zA-Z0-9]*" files="[\\/]src-gen[\\/]" />
1010
<!-- We ignore this file because it's a modification of the original java code https://github.com/openjdk/jfx/blob/jfx15/modules/javafx.controls/src/main/java/javafx/scene/control/skin/TitledPaneSkin.java -->
1111
<suppress checks="[a-zA-Z0-9]*" files="CustomTitledPaneSkin.java" />
12+
<!-- Following contain examples or comments with "}}" that are necessary -->
13+
<suppress id="NoMultipleClosingBracesAtEndOfLine" files="(BibtexParserTest|StringUtil).java" />
1214
</suppressions>

docs/decisions/0041-use-one-form-for-singular-and-plural.md

+1
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,7 @@ Code: `Localization.lang("Imported %0 entries", "Imported %0 entry.", "Imported
8787

8888
## More Information
8989

90+
- [Pluralization: A Guide to Localizing Plurals](https://phrase.com/blog/posts/pluralization/)
9091
- [Language Plural Rules](https://www.unicode.org/cldr/charts/43/supplemental/language_plural_rules.html)
9192
- [Unicode CLDR Project's Plural Rules](https://cldr.unicode.org/index/cldr-spec/plural-rules)
9293
- [Implementation in Mozilla Firefox](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/PluralRules)

gradle/wrapper/gradle-wrapper.jar

122 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)