diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index ef4a1dd6b23..4f75fd48baf 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -12,7 +12,7 @@ body: attributes: label: JabRef version options: - - "5.7 (latest release)" + - "5.8 (latest release)" - "3.8.2" - Latest development branch build (please note build date below) - Other (please describe below) diff --git a/.github/workflows/GreetingFirstTimeCodeContribution.yml b/.github/workflows/GreetingFirstTimeCodeContribution.yml index fb0ed3164f4..0f2dc091fd0 100644 --- a/.github/workflows/GreetingFirstTimeCodeContribution.yml +++ b/.github/workflows/GreetingFirstTimeCodeContribution.yml @@ -15,7 +15,6 @@ jobs: - name: GreetingFirstTimeCodeContribution uses: peter-evans/create-or-update-comment@v2 with: - repo-token: ${{ secrets.GITHUB_TOKEN }} issue-number: ${{ github.event.issue.number }} body: | As a general advice for newcomers: check out [Contributing](https://github.com/JabRef/jabref/blob/main/CONTRIBUTING.md) for a start. Also, [guidelines for setting up a local workspace](https://devdocs.jabref.org/getting-into-the-code/guidelines-for-setting-up-a-local-workspace) is worth having a look at. diff --git a/.github/workflows/automerge.yml b/.github/workflows/automerge.yml index 624ead6dc9f..2d3633931d4 100644 --- a/.github/workflows/automerge.yml +++ b/.github/workflows/automerge.yml @@ -16,12 +16,12 @@ jobs: env: GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" - name: Auto approve - uses: hmarr/auto-approve-action@v3.0.0 + uses: hmarr/auto-approve-action@v3.1.0 if: steps.waitforstatuschecks.outputs.status == 'success' with: github-token: "${{ secrets.GITHUB_TOKEN }}" - name: Merge pull requests - uses: pascalgn/automerge-action@v0.15.3 + uses: pascalgn/automerge-action@v0.15.5 if: steps.waitforstatuschecks.outputs.status == 'success' env: MERGE_METHOD: "merge" diff --git a/.github/workflows/check-links.yaml b/.github/workflows/check-links.yaml index 9c0ab03ccea..f4e470394d4 100644 --- a/.github/workflows/check-links.yaml +++ b/.github/workflows/check-links.yaml @@ -4,6 +4,8 @@ on: push: paths: - '**.md' + paths-ignore: + - 'CHANGELOG.md' schedule: # Run on the first of each month at 9:00 AM (See https://pubs.opengroup.org/onlinepubs/9699919799/utilities/crontab.html#tag_20_25_07) - cron: "0 9 1 * *" diff --git a/.github/workflows/cleanup_pr.yml b/.github/workflows/cleanup_pr.yml index 20747030207..3ec8192a27c 100644 --- a/.github/workflows/cleanup_pr.yml +++ b/.github/workflows/cleanup_pr.yml @@ -13,10 +13,10 @@ jobs: id: checksecrets shell: bash run: | - if [ -z "$BUILDJABREFPRIVATEKEY" ]; then - echo ::set-output name=secretspresent::false + if [ "$BUILDJABREFPRIVATEKEY" == "" ]; then + echo "secretspresent=NO" >> $GITHUB_OUTPUT else - echo ::set-output name=secretspresent::true + echo "secretspresent=YES" >> $GITHUB_OUTPUT fi env: BUILDJABREFPRIVATEKEY: ${{ secrets.buildJabRefPrivateKey }} @@ -24,10 +24,10 @@ jobs: id: extract_branch if: ${{ steps.checksecrets.outputs.secretspresent }} run: | - echo "##[set-output name=branch;]$(echo ${{ github.event.pull_request.head.ref }})" + echo "branch=${{ github.event.pull_request.head.ref }}" >> $GITHUB_OUTPUT - name: Delete folder on builds.jabref.org - if: ${{ steps.checksecrets.outputs.secretspresent }} - uses: appleboy/ssh-action@v0.1.5 + if: steps.checksecrets.outputs.secretspresent == 'YES' + uses: appleboy/ssh-action@v0.1.6 with: script: rm -rf /var/www/builds.jabref.org/www/${{ steps.extract_branch.outputs.branch }} || true host: build-upload.jabref.org diff --git a/.github/workflows/deployment-arm64.yml b/.github/workflows/deployment-arm64.yml new file mode 100644 index 00000000000..6e68d03c582 --- /dev/null +++ b/.github/workflows/deployment-arm64.yml @@ -0,0 +1,196 @@ +name: Deployment Release for ARM64 - Run manually! + +on: + workflow_dispatch: + push: + branches: + - arm64mac-release + + +env: + SpringerNatureAPIKey: ${{ secrets.SpringerNatureAPIKey }} + AstrophysicsDataSystemAPIKey: ${{ secrets.AstrophysicsDataSystemAPIKey }} + IEEEAPIKey: ${{ secrets.IEEEAPIKey }} + BiodiversityHeritageApiKey: ${{ secrets.BiodiversityHeritageApiKey}} + OSXCERT: ${{ secrets.OSX_SIGNING_CERT }} + GRADLE_OPTS: -Xmx4g -Dorg.gradle.daemon=false -Dorg.gradle.vfs.watch=false + JAVA_OPTS: -Xmx4g + +concurrency: + group: ${{ github.ref }} + cancel-in-progress: true + +jobs: + build: + strategy: + fail-fast: false + matrix: + os: [self-hosted] + include: + - os: self-hosted + displayName: macOS (Arm64) + suffix: '_arm64' + archivePortable: tar -c -C build/distribution JabRef.app | pigz --rsyncable > build/distribution/JabRef-portable_macos_arm64.tar.gz && rm -R build/distribution/JabRef.app + runs-on: ${{ matrix.os }} + name: Create installer and portable version for ${{ matrix.displayName }} + steps: + - name: Check secrets presence + id: checksecrets + shell: bash + run: | + if [ "$BUILDJABREFPRIVATEKEY" == "" ]; then + echo "secretspresent=NO" >> $GITHUB_OUTPUT + else + echo "secretspresent=YES" >> $GITHUB_OUTPUT + fi + env: + BUILDJABREFPRIVATEKEY: ${{ secrets.buildJabRefPrivateKey }} + - name: Fetch all history for all tags and branches + uses: actions/checkout@v3 + with: + fetch-depth: 0 + - name: Install GitVersion + uses: gittools/actions/gitversion/setup@v0.9.15 + with: + versionSpec: "5.x" + - name: Run GitVersion + id: gitversion + uses: gittools/actions/gitversion/execute@v0.9.15 + - name: Set up JDK + uses: actions/setup-java@v3 + with: + java-version: 18 + distribution: 'temurin' + cache: 'gradle' + - name: Clean up keychain + if: (matrix.os == 'self-hosted') && (steps.checksecrets.outputs.secretspresent == 'YES') + run: | + security delete-keychain signing_temp.keychain + - name: Setup OSX key chain on OSX + if: (matrix.os == 'macos-latest' || matrix.os == 'self-hosted') && (steps.checksecrets.outputs.secretspresent == 'YES') + uses: apple-actions/import-codesign-certs@v1 + with: + p12-file-base64: ${{ secrets.OSX_SIGNING_CERT }} + p12-password: ${{ secrets.OSX_CERT_PWD }} + keychain-password: jabref + - name: Setup OSX key chain on OSX for app id cert + if: (matrix.os == 'macos-latest' || matrix.os == 'self-hosted') && (steps.checksecrets.outputs.secretspresent == 'YES') + uses: apple-actions/import-codesign-certs@v1 + with: + p12-file-base64: ${{ secrets.OSX_SIGNING_CERT_APPLICATION }} + p12-password: ${{ secrets.OSX_CERT_PWD }} + create-keychain: false + keychain-password: jabref + - name: Build runtime image + if: (matrix.os != 'macos-latest') || (steps.checksecrets.outputs.secretspresent == 'YES') + run: ./gradlew -i -PprojVersion="${{ steps.gitversion.outputs.AssemblySemVer }}" -PprojVersionInfo="${{ steps.gitversion.outputs.InformationalVersion }}" jlinkZip + - name: Build installer + if: (matrix.os != 'macos-latest') || (steps.checksecrets.outputs.secretspresent == 'YES') + run: ./gradlew -i -PprojVersion="${{ steps.gitversion.outputs.AssemblySemVer }}" -PprojVersionInfo="${{ steps.gitversion.outputs.InformationalVersion }}" jpackage + shell: bash + - name: Resign app image for OSX and build dmg + if: (matrix.os == 'macos-latest' || matrix.os == 'self-hosted') && (steps.checksecrets.outputs.secretspresent == 'YES') + shell: bash + run: | + codesign --entitlements buildres/mac/jabref.entitlements --options runtime -vvv -f --sign "Developer ID Application: JabRef e.V. (6792V39SK3)" build/distribution/JabRef.app/Contents/runtime/Contents/MacOS/libjli.dylib + codesign --entitlements buildres/mac/jabref.entitlements --options runtime -vvv -f --sign "Developer ID Application: JabRef e.V. (6792V39SK3)" build/distribution/JabRef.app/Contents/MacOS/JabRef + codesign --entitlements buildres/mac/jabref.entitlements --options runtime -vvv -f --sign "Developer ID Application: JabRef e.V. (6792V39SK3)" build/distribution/JabRef.app + jpackage --type pkg --dest build/distribution --name JabRef --app-version "${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}" --app-image build/distribution/JabRef.app --verbose --type dmg --vendor JabRef --app-version "${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}" --file-associations buildres/mac/bibtexAssociations.properties --resource-dir buildres/mac + codesign -s "Developer ID Application: JabRef e.V. (6792V39SK3)" --options runtime --entitlements buildres/mac/jabref.entitlements -vvvv --deep "build/distribution/JabRef-${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}.dmg" + jpackage --type pkg --dest build/distribution --name JabRef --mac-package-identifier JabRef --app-version "${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}" --app-image build/distribution/JabRef.app --verbose --type pkg --vendor JabRef --app-version "${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}" --file-associations buildres/mac/bibtexAssociations.properties --resource-dir buildres/mac + productsign --sign "Developer ID Installer: JabRef e.V. (6792V39SK3)" "build/distribution/JabRef-${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}.pkg" "build/distribution/JabRef-${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}-signed.pkg" + - name: Notarize dmg and pkg installer + if: (matrix.os == 'macos-latest' || matrix.os == 'self-hosted' ) && startsWith(github.ref, 'refs/tags/') && (steps.checksecrets.outputs.secretspresent == 'YES') + shell: bash + run: | + REQUEST_UUID_DMG=$(xcrun altool --verbose --notarize-app --primary-bundle-id "org.jabref" --username ${{ secrets.OSX_NOTARIZATION_APP_USERNAME }} --password ${{ secrets.OSX_NOTARIZATION_APP_PWD }} --asc-provider "6792V39SK3" --file "build/distribution/JabRef-${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}.dmg" | grep RequestUUID | awk '{print $3}') + while xcrun altool --notarization-info "$REQUEST_UUID_DMG" -u ${{ secrets.OSX_NOTARIZATION_APP_USERNAME }} -p ${{ secrets.OSX_NOTARIZATION_APP_PWD }} | grep "Status: in progress" > /dev/null; do + echo "Verification in progress..." + sleep 30 + done + xcrun stapler staple "build/distribution/JabRef-${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}.dmg" + spctl -vvv --assess --type exec build/distribution/JabRef.app + codesign -vvv --deep --strict "build/distribution/JabRef-${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}.dmg" + codesign -dvv "build/distribution/JabRef-${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}.dmg" + REQUEST_UUID_PKG=$(xcrun altool --verbose --notarize-app --primary-bundle-id "org.jabref" --username ${{ secrets.OSX_NOTARIZATION_APP_USERNAME }} --password ${{ secrets.OSX_NOTARIZATION_APP_PWD }} --asc-provider "6792V39SK3" --file "build/distribution/JabRef-${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}-signed.pkg" | grep RequestUUID | awk '{print $3}') + while xcrun altool --notarization-info "$REQUEST_UUID_PKG" -u ${{ secrets.OSX_NOTARIZATION_APP_USERNAME }} -p ${{ secrets.OSX_NOTARIZATION_APP_PWD }} | grep "Status: in progress" > /dev/null; do + echo "Verification in progress..." + sleep 30 + done + xcrun stapler staple "build/distribution/JabRef-${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}-signed.pkg" + rm "build/distribution/JabRef-${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}.pkg" + mv "build/distribution/JabRef-${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}-signed.pkg" "build/distribution/JabRef-${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}.pkg" + - name: Package application image + if: (matrix.os != 'macos-latest' && matrix.os != 'self-hosted') || (steps.checksecrets.outputs.secretspresent == 'YES') + shell: bash + run: ${{ matrix.archivePortable }} + - name: Rename files (non-macos) + if: (matrix.os != 'macos-latest' && matrix.os != 'self-hosted') + shell: pwsh + run: | + get-childitem -Path build/distribution/* | rename-item -NewName {$_.name -replace "${{ steps.gitversion.outputs.AssemblySemVer }}","${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}"} + get-childitem -Path build/distribution/* | rename-item -NewName {$_.name -replace "portable","${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}-portable"} + - name: Rename files (arm64) + if: (matrix.os == 'self-hosted') && (steps.checksecrets.outputs.secretspresent == 'YES') + shell: pwsh + run: | + get-childitem -Path build/distribution/* | rename-item -NewName {$_.name -replace ".dmg", ".${{ matrix.suffix }}.dmg"} + get-childitem -Path build/distribution/* | rename-item -NewName {$_.name -replace ".pkg", ".${{ matrix.suffix }}.pkg"} + - name: Upload to GitHub workflow artifacts store + if: (matrix.os != 'macos-latest' && matrix.os !='self-hosted') || (steps.checksecrets.outputs.secretspresent == 'YES') + uses: actions/upload-artifact@v3 + with: + name: JabRef-${{ matrix.displayName }} + path: build/distribution + deploy: + strategy: + fail-fast: false + name: Deploy binaries on builds.jabref.org + runs-on: ubuntu-latest + needs: [build] + steps: + - name: Check secrets presence + id: checksecrets + shell: bash + run: | + if [ "$BUILDJABREFPRIVATEKEY" == "" ]; then + echo "secretspresent=NO" >> $GITHUB_OUTPUT + else + echo "secretspresent=YES" >> $GITHUB_OUTPUT + fi + env: + BUILDJABREFPRIVATEKEY: ${{ secrets.buildJabRefPrivateKey }} + - name: Checkout source + if: steps.checksecrets.outputs.secretspresent == 'YES' + uses: actions/checkout@v3 + - name: Fetch all history for all tags and branches + if: steps.checksecrets.outputs.secretspresent == 'YES' + run: git fetch --prune --unshallow + - name: Install GitVersion + if: steps.checksecrets.outputs.secretspresent == 'YES' + uses: gittools/actions/gitversion/setup@v0.9.15 + with: + versionSpec: '5.x' + - name: Run GitVersion + if: steps.checksecrets.outputs.secretspresent == 'YES' + id: gitversion + uses: gittools/actions/gitversion/execute@v0.9.15 + - name: Get macOSArm64 binaries + if: steps.checksecrets.outputs.secretspresent == 'YES' + uses: actions/download-artifact@master + with: + name: JabRef-macOS (Arm64) + path: build/distribution/ + - name: Deploy to builds.jabref.org + id: deploy + if: steps.checksecrets.outputs.secretspresent == 'YES' + uses: Pendect/action-rsyncer@v2.0.0 + env: + DEPLOY_KEY: ${{ secrets.buildJabRefPrivateKey }} + BRANCH: ${{ steps.gitversion.outputs.branchName }} + with: + flags: -vaz --itemize-changes --stats --partial-dir=/tmp/partial --rsync-path="mkdir -p /var/www/builds.jabref.org/www/${{ steps.gitversion.outputs.branchName }} && rsync" + options: '' + ssh_options: '-p 9922' + src: 'build/distribution/' + dest: jrrsync@build-upload.jabref.org:/var/www/builds.jabref.org/www/${{ steps.gitversion.outputs.branchName }}/ diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml index 66315e75afe..f73a8a9734d 100644 --- a/.github/workflows/deployment.yml +++ b/.github/workflows/deployment.yml @@ -31,13 +31,12 @@ concurrency: group: ${{ github.ref }} cancel-in-progress: true - jobs: build: strategy: fail-fast: false matrix: - os: [ubuntu-latest, windows-latest, macOS-latest] + os: [ubuntu-latest, windows-latest, macos-latest] include: - os: ubuntu-latest displayName: linux @@ -45,23 +44,34 @@ jobs: - os: windows-latest displayName: windows archivePortable: 7z a -r build/distribution/JabRef-portable_windows.zip ./build/distribution/JabRef && rm -R build/distribution/JabRef - - os: macOS-latest + - os: macos-latest displayName: macOS archivePortable: brew install pigz && tar -c -C build/distribution JabRef.app | pigz --rsyncable > build/distribution/JabRef-portable_macos.tar.gz && rm -R build/distribution/JabRef.app runs-on: ${{ matrix.os }} name: Create installer and portable version for ${{ matrix.displayName }} steps: + - name: Check secrets presence + id: checksecrets + shell: bash + run: | + if [ "$BUILDJABREFPRIVATEKEY" == "" ]; then + echo "secretspresent=NO" >> $GITHUB_OUTPUT + else + echo "secretspresent=YES" >> $GITHUB_OUTPUT + fi + env: + BUILDJABREFPRIVATEKEY: ${{ secrets.buildJabRefPrivateKey }} - name: Fetch all history for all tags and branches uses: actions/checkout@v3 with: fetch-depth: 0 - name: Install GitVersion - uses: gittools/actions/gitversion/setup@v0.9.14 + uses: gittools/actions/gitversion/setup@v0.9.15 with: versionSpec: "5.x" - name: Run GitVersion id: gitversion - uses: gittools/actions/gitversion/execute@v0.9.14 + uses: gittools/actions/gitversion/execute@v0.9.15 - name: Set up JDK uses: actions/setup-java@v3 with: @@ -69,14 +79,14 @@ jobs: distribution: 'temurin' cache: 'gradle' - name: Setup OSX key chain on OSX - if: matrix.os == 'macos-latest' + if: (matrix.os == 'macos-latest') && (steps.checksecrets.outputs.secretspresent == 'YES') uses: apple-actions/import-codesign-certs@v1 with: p12-file-base64: ${{ secrets.OSX_SIGNING_CERT }} p12-password: ${{ secrets.OSX_CERT_PWD }} keychain-password: jabref - name: Setup OSX key chain on OSX for app id cert - if: matrix.os == 'macos-latest' + if: (matrix.os == 'macos-latest') && (steps.checksecrets.outputs.secretspresent == 'YES') uses: apple-actions/import-codesign-certs@v1 with: p12-file-base64: ${{ secrets.OSX_SIGNING_CERT_APPLICATION }} @@ -84,12 +94,14 @@ jobs: create-keychain: false keychain-password: jabref - name: Build runtime image + if: (matrix.os != 'macos-latest') || (steps.checksecrets.outputs.secretspresent == 'YES') run: ./gradlew -i -PprojVersion="${{ steps.gitversion.outputs.AssemblySemVer }}" -PprojVersionInfo="${{ steps.gitversion.outputs.InformationalVersion }}" jlinkZip - name: Build installer + if: (matrix.os != 'macos-latest') || (steps.checksecrets.outputs.secretspresent == 'YES') run: ./gradlew -i -PprojVersion="${{ steps.gitversion.outputs.AssemblySemVer }}" -PprojVersionInfo="${{ steps.gitversion.outputs.InformationalVersion }}" jpackage shell: bash - name: Resign app image for OSX and build dmg - if: matrix.os == 'macos-latest' + if: (matrix.os == 'macos-latest') && (steps.checksecrets.outputs.secretspresent == 'YES') shell: bash run: | codesign --entitlements buildres/mac/jabref.entitlements --options runtime -vvv -f --sign "Developer ID Application: JabRef e.V. (6792V39SK3)" build/distribution/JabRef.app/Contents/runtime/Contents/MacOS/libjli.dylib @@ -100,7 +112,7 @@ jobs: jpackage --type pkg --dest build/distribution --name JabRef --mac-package-identifier JabRef --app-version "${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}" --app-image build/distribution/JabRef.app --verbose --type pkg --vendor JabRef --app-version "${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}" --file-associations buildres/mac/bibtexAssociations.properties --resource-dir buildres/mac productsign --sign "Developer ID Installer: JabRef e.V. (6792V39SK3)" "build/distribution/JabRef-${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}.pkg" "build/distribution/JabRef-${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}-signed.pkg" - name: Notarize dmg and pkg installer - if: matrix.os == 'macos-latest' && startsWith(github.ref, 'refs/tags/') + if: (matrix.os == 'macos-latest') && startsWith(github.ref, 'refs/tags/') && (steps.checksecrets.outputs.secretspresent == 'YES') shell: bash run: | REQUEST_UUID_DMG=$(xcrun altool --verbose --notarize-app --primary-bundle-id "org.jabref" --username ${{ secrets.OSX_NOTARIZATION_APP_USERNAME }} --password ${{ secrets.OSX_NOTARIZATION_APP_PWD }} --asc-provider "6792V39SK3" --file "build/distribution/JabRef-${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}.dmg" | grep RequestUUID | awk '{print $3}') @@ -121,15 +133,17 @@ jobs: rm "build/distribution/JabRef-${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}.pkg" mv "build/distribution/JabRef-${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}-signed.pkg" "build/distribution/JabRef-${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}.pkg" - name: Package application image + if: (matrix.os != 'macos-latest') || (steps.checksecrets.outputs.secretspresent == 'YES') shell: bash run: ${{ matrix.archivePortable }} - name: Rename files + if: (matrix.os != 'macos-latest') || (steps.checksecrets.outputs.secretspresent == 'YES') shell: pwsh run: | - get-childitem -Path build/distribution/* get-childitem -Path build/distribution/* | rename-item -NewName {$_.name -replace "${{ steps.gitversion.outputs.AssemblySemVer }}","${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}"} get-childitem -Path build/distribution/* | rename-item -NewName {$_.name -replace "portable","${{ steps.gitversion.outputs.Major }}.${{ steps.gitversion.outputs.Minor }}-portable"} - name: Upload to GitHub workflow artifacts store + if: (matrix.os != 'macos-latest') || (steps.checksecrets.outputs.secretspresent == 'YES') uses: actions/upload-artifact@v3 with: name: JabRef-${{ matrix.displayName }} @@ -146,42 +160,49 @@ jobs: shell: bash run: | if [ "$BUILDJABREFPRIVATEKEY" == "" ]; then - echo ::set-output name=secretspresent::false + echo "secretspresent=NO" >> $GITHUB_OUTPUT else - echo ::set-output name=secretspresent::true + echo "secretspresent=YES" >> $GITHUB_OUTPUT fi env: BUILDJABREFPRIVATEKEY: ${{ secrets.buildJabRefPrivateKey }} - name: Checkout source + if: steps.checksecrets.outputs.secretspresent == 'YES' uses: actions/checkout@v3 - name: Fetch all history for all tags and branches + if: steps.checksecrets.outputs.secretspresent == 'YES' run: git fetch --prune --unshallow - name: Install GitVersion - uses: gittools/actions/gitversion/setup@v0.9.14 + if: steps.checksecrets.outputs.secretspresent == 'YES' + uses: gittools/actions/gitversion/setup@v0.9.15 with: versionSpec: '5.x' - name: Run GitVersion + if: steps.checksecrets.outputs.secretspresent == 'YES' id: gitversion - uses: gittools/actions/gitversion/execute@v0.9.14 + uses: gittools/actions/gitversion/execute@v0.9.15 - name: Get linux binaries + if: steps.checksecrets.outputs.secretspresent == 'YES' uses: actions/download-artifact@master with: name: JabRef-linux path: build/distribution - name: Get windows binaries + if: steps.checksecrets.outputs.secretspresent == 'YES' uses: actions/download-artifact@master with: name: JabRef-windows path: build/distribution - name: Get macOS binaries + if: steps.checksecrets.outputs.secretspresent == 'YES' uses: actions/download-artifact@master with: name: JabRef-macOS path: build/distribution/ - name: Deploy to builds.jabref.org id: deploy - if: ${{ steps.checksecrets.outputs.secretspresent }} - uses: Pendect/action-rsyncer@v1.1.0 + if: steps.checksecrets.outputs.secretspresent == 'YES' + uses: Pendect/action-rsyncer@v2.0.0 env: DEPLOY_KEY: ${{ secrets.buildJabRefPrivateKey }} BRANCH: ${{ steps.gitversion.outputs.branchName }} diff --git a/.github/workflows/gource.yml b/.github/workflows/gource.yml index 48c9e55d1e7..05109275365 100644 --- a/.github/workflows/gource.yml +++ b/.github/workflows/gource.yml @@ -19,9 +19,9 @@ jobs: - name: Determine dates id: dates run: | - echo ::set-output name=start_date::`date -d "$(date +%Y-%m-01) -3 months" +%Y-%m-%d` - echo ::set-output name=stop_date::`date -d "$(date +%Y-%m-01) -1 day" +%Y-%m-%d` - echo ::set-output name=quarter::`date -d "$(date +%Y-%m-01) -1 day" +%Y`-Q$(( ((`date -d "$(date +%Y-%m-01) -1 day" +%m`)-1)/3+1 )) + echo "start_date=`date -d "$(date +%Y-%m-01) -3 months" +%Y-%m-%d`" >> $GITHUB_STATE + echo "stop_date=`date -d "$(date +%Y-%m-01) -1 day" +%Y-%m-%d`" >> $GITHUB_STATE + echo "quarter=`date -d "$(date +%Y-%m-01) -1 day" +%Y`-Q$(( ((`date -d "$(date +%Y-%m-01) -1 day" +%m`)-1)/3+1 ))" >> $GITHUB_STATE - name: 'Development history of last quarter' uses: nbprojekt/gource-action@v1 with: diff --git a/.github/workflows/pages.yml b/.github/workflows/pages.yml index ad5b3fcfba9..1b6c4b6e417 100644 --- a/.github/workflows/pages.yml +++ b/.github/workflows/pages.yml @@ -1,6 +1,10 @@ name: Deploy Jekyll site to Pages on: + pull_request: + paths: + - 'docs/**' + - '.github/workflows/pages.yml' push: paths: - 'docs/**' @@ -27,19 +31,21 @@ jobs: - name: Setup Ruby uses: ruby/setup-ruby@v1 with: - ruby-version: '3.0' # Not needed with a .ruby-version file + ruby-version: '2.7' # Not needed with a .ruby-version file bundler-cache: true # runs 'bundle install' and caches installed gems automatically - cache-version: 0 # Increment this number if you need to re-download cached gems + cache-version: 1 # Increment this number if you need to re-download cached gems + working-directory: docs/ - name: Setup Pages id: pages uses: actions/configure-pages@v2 - name: Build with Jekyll - uses: actions/jekyll-build-pages@v1 - with: - source: docs/ - destination: ./_site + run: | + cd docs + bundle exec jekyll build - name: Upload artifact uses: actions/upload-pages-artifact@v1 + with: + path: docs/_site/ deploy: if: github.ref == 'refs/heads/main' diff --git a/.github/workflows/snap.yml b/.github/workflows/snap.yml index 24bdde21743..f858e08d8c9 100644 --- a/.github/workflows/snap.yml +++ b/.github/workflows/snap.yml @@ -22,10 +22,10 @@ jobs: id: checksecrets shell: bash run: | - if [ "SNAPCRAFT_LOGIN_FILE" == "" ]; then - echo ::set-output name=secretspresent::false + if [ "$SNAPCRAFT_LOGIN_FILE" == "" ]; then + echo "secretspresent=NO" >> $GITHUB_OUTPUT else - echo ::set-output name=secretspresent::true + echo "secretspresent=YES" >> $GITHUB_OUTPUT fi env: SNAPCRAFT_LOGIN_FILE: ${{ secrets.SNAPCRAFT_LOGIN_FILE }} @@ -39,7 +39,7 @@ jobs: with: snapcraft-args: "--debug" - name: Upload snap - if: ${{ steps.checksecrets.outputs.secretspresent }} + if: steps.checksecrets.outputs.secretspresent == 'YES' uses: snapcore/action-publish@v1 with: store_login: ${{ secrets.SNAPCRAFT_LOGIN_FILE }} diff --git a/.github/workflows/tests-fetchers.yml b/.github/workflows/tests-fetchers.yml index 8bf681fb7cc..66148b73038 100644 --- a/.github/workflows/tests-fetchers.yml +++ b/.github/workflows/tests-fetchers.yml @@ -11,10 +11,8 @@ on: - 'build.gradle' pull_request: paths: - - 'src/main/java/org/jabref/logic/**' - - 'src/test/java/org/jabref/logic/**' - - 'src/main/java/org/jabref/model/**' - - 'src/test/java/org/jabref/model/**' + - 'src/main/java/org/jabref/logic/importer/fetcher/**' + - 'src/test/java/org/jabref/logic/importer/fetcher/**' - '.github/workflows/tests-fetchers.yml' - 'build.gradle' schedule: diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 70cad8a62dd..e958a75816e 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -149,10 +149,10 @@ jobs: id: checksecrets shell: bash run: | - if [ "CODECOV_TOKEN" == "" ]; then - echo ::set-output name=secretspresent::false + if [ "$CODECOV_TOKEN" == "" ]; then + echo "secretspresent=NO" >> $GITHUB_OUTPUT else - echo ::set-output name=secretspresent::true + echo "secretspresent=YES" >> $GITHUB_OUTPUT fi env: SNAPCRAFT_LOGIN_FILE: ${{ secrets.CODECOV_TOKEN }} @@ -165,7 +165,7 @@ jobs: distribution: 'temurin' cache: 'gradle' - name: Update test coverage metrics - if: ${{ steps.checksecrets.outputs.secretspresent }} + if: steps.checksecrets.outputs.secretspresent == 'YES' run: xvfb-run --auto-servernum ./gradlew jacocoTestReport && bash <(curl -s https://codecov.io/bash); env: CI: "true" diff --git a/.idea/runConfigurations/JabRef_Main.xml b/.idea/runConfigurations/JabRef_Main.xml deleted file mode 100644 index 731578b5c75..00000000000 --- a/.idea/runConfigurations/JabRef_Main.xml +++ /dev/null @@ -1,14 +0,0 @@ - - - - diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ed74a68e2c..d67fc90cba2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,76 +11,125 @@ Note that this project **does not** adhere to [Semantic Versioning](http://semve ### Added -- In case a backup is found, the filename of the backup is shown. -- On startup, JabRef notifies the user if there were parsing errors during opening. + + + + +### Changed + +- We changed database structure: in MySQL/MariaDB we renamed tables by adding a `JABREF_` prefix, and in PGSQL we moved tables in `jabref` schema. We added `VersionDBStructure` variable in `METADATA` table to indicate current version of structure, this variable is needed for automatic migration [#9312](https://github.com/JabRef/jabref/issues/9312) +- We moved some preferences options to a new tab in the preferences dialog. [#9442](https://github.com/JabRef/jabref/pull/9308) + + + + + +### Fixed + +- The tab "deprecated fields" is shown in biblatex-mode only. [#7757](https://github.com/JabRef/jabref/issues/7757) + + + +### Removed + + + + + + + + +## [5.8] - 2022-12-18 + +### Added + - We integrated a new three-way merge UI for merging entries in the Entries Merger Dialog, the Duplicate Resolver Dialog, the Entry Importer Dialog, and the External Changes Resolver Dialog. [#8945](https://github.com/JabRef/jabref/pull/8945) - We added the ability to merge groups, keywords, comments and files when merging entries. [#9022](https://github.com/JabRef/jabref/pull/9022) - We added a warning message next to the authors field in the merge dialog to warn users when the authors are the same but formatted differently. [#8745](https://github.com/JabRef/jabref/issues/8745) -- The properties of an existing systematic literature review can be edited. [koppor#604](https://github.com/koppor/jabref/issues/604) -- An SLR can now be started from the SLR itself. [#9131](https://github.com/JabRef/jabref/pull/9131), [koppor#601](https://github.com/koppor/jabref/issues/601) -- Implement a new ISBN Fetcher ([doi-to-bibtex-converter.herokuapp.com](http://doi-to-bibtex-converter.herokuapp.com) as source). [#9145](https://github.com/JabRef/jabref/pull/9145) +- The default file directory of a library is used as default directory for [unlinked file lookup](https://docs.jabref.org/collect/findunlinkedfiles#link-the-pdfs-to-your-bib-library). [koppor#546](https://github.com/koppor/jabref/issues/546) +- The properties of an existing systematic literature review (SLR) can be edited. [koppor#604](https://github.com/koppor/jabref/issues/604) +- An systematic literature review (SLR) can now be started from the SLR itself. [#9131](https://github.com/JabRef/jabref/pull/9131), [koppor#601](https://github.com/koppor/jabref/issues/601) +- On startup, JabRef notifies the user if there were parsing errors during opening. +- We added support for the field `fjournal` (in `@article`) for abbreviation and unabbreviation functionalities. [#321](https://github.com/JabRef/jabref/pull/321) +- In case a backup is found, the filename of the backup is shown and one can navigate to the file. [#9311](https://github.com/JabRef/jabref/pull/9311) - We added support for the Ukrainian and Arabic languages. [#9236](https://github.com/JabRef/jabref/pull/9236), [#9243](https://github.com/JabRef/jabref/pull/9243) ### Changed -- We disabled the "change case" menu for empty fields [#9214](https://github.com/JabRef/jabref/issues/9214) -- We disabled the conversion menu for empty fields [#9200](https://github.com/JabRef/jabref/issues/9200) -- We upgraded to Lucene 9.4 for the fulltext search. - Thus, the now created search index cannot be read from older versions of JabRef anylonger. - ⚠️ JabRef will recreate the index in a new folder for new files and this will take a long time for a huge library. - Moreover, switching back and forth JabRef versions and meanwhile adding PDFs also requires rebuilding the index now and then. - [#9213](https://github.com/JabRef/jabref/pull/9213) -- Genres are now mapped correctly to entry types when importing MODS files. [#9185](https://github.com/JabRef/jabref/issues/9185) - We improved the Citavi Importer to also import so called Knowledge-items into the field `comment` of the corresponding entry [#9025](https://github.com/JabRef/jabref/issues/9025) -- We removed wrapping of string constants when writing to a `.bib` file. +- We modified the change case sub-menus and their corresponding tips (displayed when you stay long over the menu) to properly reflect exemplified cases. [#9339](https://github.com/Jabref/jabref/issues/9339) - We call backup files `.bak` and temporary writing files now `.sav`. - JabRef keeps 10 older versions of a `.bib` file in the [user data dir](https://github.com/harawata/appdirs#supported-directories) (instead of a single `.sav` (now: `.bak`) file in the directory of the `.bib` file) -- We changed the button label from "Return to JabRef" to "Return to library" to better indicate the purpose of the action. -- A user can now add arbitrary data into `study.yml`. JabRef just ignores this data. [#9124](https://github.com/JabRef/jabref/pull/9124) -- We reworked the External Changes Resolver dialog. [#9021](https://github.com/JabRef/jabref/pull/9021) +- We improved the External Changes Resolver dialog to be more usaable. [#9021](https://github.com/JabRef/jabref/pull/9021) +- We simplified the actions to fast-resolve duplicates to 'Keep Left', 'Keep Right', 'Keep Both' and 'Keep Merged'. [#9056](https://github.com/JabRef/jabref/issues/9056) - The fallback directory of the file folder now is the general file directory. In case there was a directory configured for a library and this directory was not found, JabRef placed the PDF next to the .bib file and not into the general file directory. - The global default directory for storing PDFs is now the documents folder in the user's home. -- We reworked the Define study parameters dialog. [#9123](https://github.com/JabRef/jabref/pull/9123) -- We simplified the actions to fast-resolve duplicates to 'Keep Left', 'Keep Right', 'Keep Both' and 'Keep Merged'. [#9056](https://github.com/JabRef/jabref/issues/9056) -- We fixed an issue where a message about changed metadata would occur on saving although nothing changed. [#9159](https://github.com/JabRef/jabref/issues/9159) - When adding or editing a subgroup it is placed w.r.t. to alphabetical ordering rather than at the end. [koppor#577](https://github.com/koppor/jabref/issues/577) +- Groups context menu now shows appropriate options depending on number of subgroups. [koppor#579](https://github.com/koppor/jabref/issues/579) +- We modified the "Delete file" dialog and added the full file path to the dialog text. The file path in the title was changed to file name only. [koppor#534](https://github.com/koppor/jabref/issues/534) +- Download from URL now automatically fills with URL from clipboard. [koppor#535](https://github.com/koppor/jabref/issues/535) +- We added HTML and Markdown files to Find Unlinked Files and removed BibTeX. [koppor#547](https://github.com/koppor/jabref/issues/547) +- ArXiv fetcher now retrieves additional data from related DOIs (both ArXiv and user-assigned). [#9170](https://github.com/JabRef/jabref/pull/9170) - We modified the Directory of Open Access Books (DOAB) fetcher so that it will now also fetch the ISBN when possible. [#8708](https://github.com/JabRef/jabref/issues/8708) +- Genres are now mapped correctly to entry types when importing MODS files. [#9185](https://github.com/JabRef/jabref/issues/9185) +- We changed the button label from "Return to JabRef" to "Return to library" to better indicate the purpose of the action. +- We changed the color of found text from red to high-contrast colors (background: yellow; font color: purple). [koppor#552](https://github.com/koppor/jabref/issues/552) +- We fixed an issue where the wrong icon for a successful import of a bib entry was shown. [#9308](https://github.com/JabRef/jabref/pull/9308) +- We changed the messages after importing unlinked local files to past tense. [koppor#548](https://github.com/koppor/jabref/issues/548) +- We fixed an issue where the wrong icon for a successful import of a bib entry was shown [#9308](https://github.com/JabRef/jabref/pull/9308) +- In the context of the [Cleanup dialog](https://docs.jabref.org/finding-sorting-and-cleaning-entries/cleanupentries) we changed the text of the conversion of BibTeX to biblatex (and vice versa) to make it more clear. [koppor#545](https://github.com/koppor/jabref/issues/545) +- We removed wrapping of string constants when writing to a `.bib` file. +- In the context of a systematic literature review (SLR), a user can now add arbitrary data into `study.yml`. JabRef just ignores this data. [#9124](https://github.com/JabRef/jabref/pull/9124) +- In the context of a systematic literature review (SLR), we reworked the "Define study" parameters dialog. [#9123](https://github.com/JabRef/jabref/pull/9123) +- We upgraded to Lucene 9.4 for the fulltext search. The search index will be rebuild. [#9213](https://github.com/JabRef/jabref/pull/9213) +- We disabled the "change case" menu for empty fields. [#9214](https://github.com/JabRef/jabref/issues/9214) +- We disabled the conversion menu for empty fields. [#9200](https://github.com/JabRef/jabref/issues/9200) ### Fixed -- We fixed the Cleanup entries dialog is partially visible [#9223](https://github.com/JabRef/jabref/issues/9223) -- We fixed the display of the "Customize Entry Types" dialogue title [#9198](https://github.com/JabRef/jabref/issues/9198) -- We fixed an issue where author names with tilde accents (for example ñ) were marked as "Names are not in the standard BibTex format" [#8071](https://github.com/JabRef/jabref/issues/8071) -- We fixed an issue where the possibility to generate a subdatabase from an aux file was writing empty files when called from the commandline [#9115](https://github.com/JabRef/jabref/issues/9115), [forum#3516](https://discourse.jabref.org/t/export-subdatabase-from-aux-file-on-macos-command-line/3516) +- We fixed an issue where applied save actions on saving the library file would lead to the dialog "The library has been modified by another program" popping up. [#4877](https://github.com/JabRef/jabref/issues/4877) +- We fixed issues with save actions not correctly loaded when opening the library. [#9122](https://github.com/JabRef/jabref/pull/9122) +- We fixed the behavior of "Discard changes" when reopening a modified library. [#9361](https://github.com/JabRef/jabref/issues/9361) +- We fixed several bugs regarding the manual and the autosave of library files that could lead to exceptions. [#9067](https://github.com/JabRef/jabref/pull/9067), [#8448](https://github.com/JabRef/jabref/issues/8484), [#8746](https://github.com/JabRef/jabref/issues/8746), [#6684](https://github.com/JabRef/jabref/issues/6684), [#6644](https://github.com/JabRef/jabref/issues/6644), [#6102](https://github.com/JabRef/jabref/issues/6102), [#6002](https://github.com/JabRef/jabref/issues/6000) +- We fixed an issue where pdfs were re-indexed on each startup. [#9166](https://github.com/JabRef/jabref/pull/9166) +- We fixed an issue when using an unsafe character in the citation key, the auto-linking feature fails to link files. [#9267](https://github.com/JabRef/jabref/issues/9267) +- We fixed an issue where a message about changed metadata would occur on saving although nothing changed. [#9159](https://github.com/JabRef/jabref/issues/9159) +- We fixed an issue where the possibility to generate a subdatabase from an aux file was writing empty files when called from the commandline. [#9115](https://github.com/JabRef/jabref/issues/9115), [forum#3516](https://discourse.jabref.org/t/export-subdatabase-from-aux-file-on-macos-command-line/3516) +- We fixed an issue where author names with tilde accents (for example ñ) were marked as "Names are not in the standard BibTeX format". [#8071](https://github.com/JabRef/jabref/issues/8071) +- We fixed an issue where capitalize didn't capitalize words after hyphen characters. [#9157](https://github.com/JabRef/jabref/issues/9157) +- We fixed an issue where title case didn't capitalize words after en-dash characters and skip capitalization of conjunctions that comes after en-dash characters. [#9068](https://github.com/JabRef/jabref/pull/9068),[#9142](https://github.com/JabRef/jabref/pull/9142) +- We fixed an issue with the message that is displayed when fetcher returns an empty list of entries for given query. [#9195](https://github.com/JabRef/jabref/issues/9195) +- We fixed an issue where editing entry's "date" field in library mode "biblatex" causes an uncaught exception. [#8747](https://github.com/JabRef/jabref/issues/8747) +- We fixed an issue where importing from XMP would fail for certain PDFs. [#9383](https://github.com/JabRef/jabref/issues/9383) +- We fixed an issue that JabRef displayed the wrong group tree after loading. [koppor#637](https://github.com/koppor/jabref/issues/637) +- We fixed that sorting of entries in the maintable by special fields is updated immediately. [#9334](https://github.com/JabRef/jabref/issues/9334) - We fixed the display of issue, number, eid and pages fields in the entry preview. [#8607](https://github.com/JabRef/jabref/pull/8607), [#8372](https://github.com/JabRef/jabref/issues/8372), [Koppor#514](https://github.com/koppor/jabref/issues/514), [forum#2390](https://discourse.jabref.org/t/unable-to-edit-my-bibtex-file-that-i-used-before-vers-5-1/2390), [forum#3462](https://discourse.jabref.org/t/jabref-5-6-need-help-with-export-from-jabref-to-microsoft-word-entry-preview-of-apa-7-not-rendering-correctly/3462) - We fixed the page ranges checker to detect article numbers in the pages field (used at [Check Integrity](https://docs.jabref.org/finding-sorting-and-cleaning-entries/checkintegrity)). [#8607](https://github.com/JabRef/jabref/pull/8607) - The [HtmlToLaTeXFormatter](https://docs.jabref.org/finding-sorting-and-cleaning-entries/saveactions#html-to-latex) keeps single `<` characters. -- We fixed a performance regression when opening large libraries [#9041](https://github.com/JabRef/jabref/issues/9041) +- We fixed a performance regression when opening large libraries. [#9041](https://github.com/JabRef/jabref/issues/9041) - We fixed a bug where spaces are trimmed when highlighting differences in the Entries merge dialog. [koppor#371](https://github.com/koppor/jabref/issues/371) - We fixed some visual glitches with the linked files editor field in the entry editor and increased its height. [#8823](https://github.com/JabRef/jabref/issues/8823) -- We fixed several bugs regarding the manual and the autosave of library files that sometimes lead to exceptions or data loss. [#9067](https://github.com/JabRef/jabref/pull/9067), [#8448](https://github.com/JabRef/jabref/issues/8484), [#8746](https://github.com/JabRef/jabref/issues/8746), [#6684](https://github.com/JabRef/jabref/issues/6684), [#6644](https://github.com/JabRef/jabref/issues/6644), [#6102](https://github.com/JabRef/jabref/issues/6102), [#6002](https://github.com/JabRef/jabref/issues/6000) -- We fixed an issue where applied save actions on saving the library file would lead to the dialog "The library has been modified by another program" popping up [#4877](https://github.com/JabRef/jabref/issues/4877) -- We fixed issues with save actions not correctly loaded when opening the library. [#9122](https://github.com/JabRef/jabref/pull/9122) -- We fixed an issue where title case didn't capitalize words after en-dash characters and skip capitalization of conjunctions that comes after en-dash characters. [#9068](https://github.com/JabRef/jabref/pull/9068),[#9142](https://github.com/JabRef/jabref/pull/9142) +- We fixed some visual inconsistencies (round corners of highlighted buttons). [#8806](https://github.com/JabRef/jabref/issues/8806) - We fixed an issue where JabRef would not exit when a connection to a LibreOffice document was established previously and the document is still open. [#9075](https://github.com/JabRef/jabref/issues/9075) - We fixed an issue about selecting the save order in the preferences. [#9175](https://github.com/JabRef/jabref/issues/9147) -- We fixed an issue where the CSS styles are missing in some dialogs. [#9150](https://github.com/JabRef/jabref/pull/9150) -- We fixed an issue where pdfs were re-indexed on each startup. [#9166](https://github.com/JabRef/jabref/pull/9166) -- We fixed an issue where Capitalize didn't capitalize words after hyphen characters. [#9157](https://github.com/JabRef/jabref/issues/9157) -- We fixed an issue with the message that is displayed when fetcher returns an empty list of entries for given query. [#9195](https://github.com/JabRef/jabref/issues/9195) -- We fixed an issue where an exception was not logged correctly. [koppor#627](https://github.com/JabRef/koppor/issues/627) -- We fixed an issue where hitting enter on the search field within the preferences dialog closed the dialog. [koppor#630](https://github.com/koppor/jabref/issues/630) +- We fixed an issue where an exception when fetching a DOI was not logged correctly. [koppor#627](https://github.com/koppor/jabref/issues/627) +- We fixed an issue where a user could not open an attached file in a new unsaved library. [#9386](https://github.com/JabRef/jabref/issues/9386) - We fixed a typo within a connection error message. [koppor#625](https://github.com/koppor/jabref/issues/625) +- We fixed an issue where journal abbreviations would not abbreviate journal titles with escaped ampersands (\\&). [#8948](https://github.com/JabRef/jabref/issues/8948) +- We fixed the readability of the file field in the dark theme. [#9340](https://github.com/JabRef/jabref/issues/9340) - We fixed an issue where the 'close dialog' key binding was not closing the Preferences dialog. [#8888](https://github.com/jabref/jabref/issues/8888) +- We fixed an issue where a known journal's medline/dot-less abbreviation does not switch to the full name. [#9370](https://github.com/JabRef/jabref/issues/9370) +- We fixed an issue where hitting enter on the search field within the preferences dialog closed the dialog. [koppor#630](https://github.com/koppor/jabref/issues/630) +- We fixed the "Cleanup entries" dialog is partially visible. [#9223](https://github.com/JabRef/jabref/issues/9223) +- We fixed an issue where font size preferences did not apply correctly to preference dialog window and the menu bar. [#8386](https://github.com/JabRef/jabref/issues/8386) and [#9279](https://github.com/JabRef/jabref/issues/9279) +- We fixed the display of the "Customize Entry Types" dialog title. [#9198](https://github.com/JabRef/jabref/issues/9198) +- We fixed an issue where the CSS styles are missing in some dialogs. [#9150](https://github.com/JabRef/jabref/pull/9150) +- We fixed an issue where controls in the preferences dialog could outgrow the window. [#9017](https://github.com/JabRef/jabref/issues/9017) ### Removed -- We removed "last-search-date" from the SLR feature, because the last-search-date can be deducted from the git logs. [#9116](https://github.com/JabRef/jabref/pull/9116) - - - - - +- We removed "last-search-date" from the systematic literature review feature, because the last-search-date can be deducted from the git logs. [#9116](https://github.com/JabRef/jabref/pull/9116) +- We removed the [CiteseerX](https://docs.jabref.org/collect/import-using-online-bibliographic-database#citeseerx) fetcher, because the API used by JabRef is sundowned. [#9466](https://github.com/JabRef/jabref/pull/9466) ## [5.7] - 2022-08-05 @@ -917,7 +966,8 @@ The changelog of JabRef 4.x is available at the [v4.3.1 tag](https://github.com/ The changelog of JabRef 3.x is available at the [v3.8.2 tag](https://github.com/JabRef/jabref/blob/v3.8.2/CHANGELOG.md). The changelog of JabRef 2.11 and all previous versions is available as [text file in the v2.11.1 tag](https://github.com/JabRef/jabref/blob/v2.11.1/CHANGELOG). -[Unreleased]: https://github.com/JabRef/jabref/compare/v5.7...HEAD +[Unreleased]: https://github.com/JabRef/jabref/compare/v5.8...HEAD +[5.8]: https://github.com/JabRef/jabref/compare/v5.7...v5.8 [5.7]: https://github.com/JabRef/jabref/compare/v5.6...v5.7 [5.6]: https://github.com/JabRef/jabref/compare/v5.5...v5.6 [5.5]: https://github.com/JabRef/jabref/compare/v5.4...v5.5 diff --git a/MAINTAINERS b/MAINTAINERS index baec36a6925..8934ad98274 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -8,3 +8,4 @@ Carl Christian Snethlage (since 2020) Dominik Voigt (since 2020) Jonatan Askertop (since 2021) Benedikt Tutzer (since 2021) +Thilo Ertel (since 2021) diff --git a/build.gradle b/build.gradle index f9dcfee846c..8e2e220b433 100644 --- a/build.gradle +++ b/build.gradle @@ -6,7 +6,7 @@ import org.jabref.build.xjc.XjcTask plugins { id 'application' - id 'com.github.andygoossens.modernizer' version '1.6.2' + id 'com.github.andygoossens.modernizer' version '1.7.0' id 'me.champeau.gradle.jmh' version '0.5.3' @@ -40,8 +40,8 @@ group = "org.jabref" version = project.findProperty('projVersion') ?: '100.0.0' java { - sourceCompatibility = JavaVersion.VERSION_18 - targetCompatibility = JavaVersion.VERSION_18 + sourceCompatibility = JavaVersion.VERSION_17 + targetCompatibility = JavaVersion.VERSION_17 // Workaround needed for Eclipse, probably because of https://github.com/gradle/gradle/issues/16922 // Should be removed as soon as Gradle 7.0.1 is released ( https://github.com/gradle/gradle/issues/16922#issuecomment-828217060 ) @@ -115,17 +115,17 @@ dependencies { implementation 'org.apache.pdfbox:fontbox:3.0.0-RC1' implementation 'org.apache.pdfbox:xmpbox:3.0.0-RC1' - implementation 'org.apache.lucene:lucene-core:9.4.0' - implementation 'org.apache.lucene:lucene-queryparser:9.4.0' - implementation 'org.apache.lucene:lucene-queries:9.4.0' - implementation 'org.apache.lucene:lucene-analysis-common:9.4.0' - implementation 'org.apache.lucene:lucene-highlighter:9.4.0' + implementation 'org.apache.lucene:lucene-core:9.4.1' + implementation 'org.apache.lucene:lucene-queryparser:9.4.2' + implementation 'org.apache.lucene:lucene-queries:9.4.1' + implementation 'org.apache.lucene:lucene-analysis-common:9.4.2' + implementation 'org.apache.lucene:lucene-highlighter:9.4.2' implementation group: 'org.apache.commons', name: 'commons-csv', version: '1.9.0' implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.12.0' implementation 'com.h2database:h2-mvstore:2.1.214' - implementation group: 'org.apache.tika', name: 'tika-core', version: '2.5.0' + implementation group: 'org.apache.tika', name: 'tika-core', version: '2.6.0' // required for reading write-protected PDFs - see https://github.com/JabRef/jabref/pull/942#issuecomment-209252635 implementation 'org.bouncycastle:bcprov-jdk18on:1.71.1' @@ -141,14 +141,14 @@ dependencies { antlr4 'org.antlr:antlr4:4.9.3' implementation 'org.antlr:antlr4-runtime:4.9.3' - implementation group: 'org.eclipse.jgit', name: 'org.eclipse.jgit', version: '6.3.0.202209071007-r' + implementation group: 'org.eclipse.jgit', name: 'org.eclipse.jgit', version: '6.4.0.202211300538-r' - implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-yaml', version: '2.13.4' - implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: '2.13.4' + implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-yaml', version: '2.14.1' + implementation group: 'com.fasterxml.jackson.datatype', name: 'jackson-datatype-jsr310', version: '2.14.1' - implementation group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '2.7.6' + implementation group: 'org.mariadb.jdbc', name: 'mariadb-java-client', version: '2.7.7' - implementation 'org.postgresql:postgresql:42.5.0' + implementation 'org.postgresql:postgresql:42.5.1' implementation ('com.oracle.ojdbc:ojdbc10:19.3.0.0') { // causing module issues @@ -170,15 +170,15 @@ dependencies { implementation 'com.github.sialcasa.mvvmFX:mvvmfx-validation:f195849ca9' //jitpack implementation 'de.saxsys:mvvmfx:1.8.0' implementation 'com.tobiasdiez:easybind:2.2.1-SNAPSHOT' - implementation 'org.fxmisc.flowless:flowless:0.6.10' - implementation 'org.fxmisc.richtext:richtextfx:0.10.9' + implementation 'org.fxmisc.flowless:flowless:0.7.0' + implementation 'org.fxmisc.richtext:richtextfx:0.11.0' implementation 'com.jfoenix:jfoenix:9.0.10' implementation 'org.controlsfx:controlsfx:11.1.2' implementation 'org.jsoup:jsoup:1.15.3' - implementation 'com.konghq:unirest-java:3.13.11' + implementation 'com.konghq:unirest-java:3.14.1' - implementation 'org.slf4j:slf4j-api:2.0.3' + implementation 'org.slf4j:slf4j-api:2.0.5' implementation "org.tinylog:tinylog-api:2.5.0" implementation "org.tinylog:slf4j-tinylog:2.5.0" implementation "org.tinylog:tinylog-impl:2.5.0" @@ -204,20 +204,20 @@ dependencies { implementation group: 'net.harawata', name: 'appdirs', version: '1.2.1' - testImplementation 'io.github.classgraph:classgraph:4.8.149' + testImplementation 'io.github.classgraph:classgraph:4.8.152' testImplementation 'org.junit.jupiter:junit-jupiter:5.9.1' testImplementation 'org.junit.platform:junit-platform-launcher:1.9.1' - testImplementation 'org.mockito:mockito-core:4.8.0' + testImplementation 'org.mockito:mockito-core:4.10.0' testImplementation 'org.xmlunit:xmlunit-core:2.9.0' testImplementation 'org.xmlunit:xmlunit-matchers:2.9.0' - testRuntimeOnly 'com.tngtech.archunit:archunit-junit5-engine:1.0.0' - testImplementation 'com.tngtech.archunit:archunit-junit5-api:1.0.0' + testRuntimeOnly 'com.tngtech.archunit:archunit-junit5-engine:1.0.1' + testImplementation 'com.tngtech.archunit:archunit-junit5-api:1.0.1' testImplementation "org.testfx:testfx-core:4.0.16-alpha" testImplementation "org.testfx:testfx-junit5:4.0.16-alpha" testImplementation "org.hamcrest:hamcrest-library:2.2" - checkstyle 'com.puppycrawl.tools:checkstyle:10.3.4' + checkstyle 'com.puppycrawl.tools:checkstyle:10.5.0' // xjc needs the runtime as well for the ant task, otherwise it fails xjc group: 'org.glassfish.jaxb', name: 'jaxb-xjc', version: '3.0.2' xjc group: 'org.glassfish.jaxb', name: 'jaxb-runtime', version: '3.0.2' diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index 3e9f9aa812c..a279e5caa28 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -8,7 +8,7 @@ repositories { dependencies { implementation 'com.h2database:h2-mvstore:2.1.214' implementation 'org.apache.commons:commons-csv:1.9.0' - implementation 'org.slf4j:slf4j-api:2.0.3' + implementation 'org.slf4j:slf4j-api:2.0.6' } sourceSets{ diff --git a/buildSrc/src/copied/java/org/jabref/logic/journals/Abbreviation.java b/buildSrc/src/copied/java/org/jabref/logic/journals/Abbreviation.java index b6c8d4ddf89..7a7e4d9cf30 100644 --- a/buildSrc/src/copied/java/org/jabref/logic/journals/Abbreviation.java +++ b/buildSrc/src/copied/java/org/jabref/logic/journals/Abbreviation.java @@ -72,7 +72,7 @@ public boolean equals(Object obj) { return true; } - if (obj == null || getClass() != obj.getClass()) { + if ((obj == null) || (getClass() != obj.getClass())) { return false; } diff --git a/buildSrc/src/copied/java/org/jabref/logic/journals/JournalAbbreviationLoader.java b/buildSrc/src/copied/java/org/jabref/logic/journals/JournalAbbreviationLoader.java index cf7d6a177ed..76ba9096791 100644 --- a/buildSrc/src/copied/java/org/jabref/logic/journals/JournalAbbreviationLoader.java +++ b/buildSrc/src/copied/java/org/jabref/logic/journals/JournalAbbreviationLoader.java @@ -52,6 +52,6 @@ public static JournalAbbreviationRepository loadRepository(JournalAbbreviationPr } public static JournalAbbreviationRepository loadBuiltInRepository() { - return loadRepository(new JournalAbbreviationPreferences(Collections.emptyList(), StandardCharsets.UTF_8)); + return loadRepository(new JournalAbbreviationPreferences(Collections.emptyList(), StandardCharsets.UTF_8, true)); } } diff --git a/buildSrc/src/copied/java/org/jabref/logic/journals/JournalAbbreviationPreferences.java b/buildSrc/src/copied/java/org/jabref/logic/journals/JournalAbbreviationPreferences.java index 300592b0172..442fda33ddc 100644 --- a/buildSrc/src/copied/java/org/jabref/logic/journals/JournalAbbreviationPreferences.java +++ b/buildSrc/src/copied/java/org/jabref/logic/journals/JournalAbbreviationPreferences.java @@ -7,10 +7,12 @@ public class JournalAbbreviationPreferences { private final Charset defaultEncoding; private List externalJournalLists; + private boolean useFJournalField; - public JournalAbbreviationPreferences(List externalJournalLists, Charset defaultEncoding) { + public JournalAbbreviationPreferences(List externalJournalLists, Charset defaultEncoding, boolean useFJournalField) { this.externalJournalLists = externalJournalLists; this.defaultEncoding = defaultEncoding; + this.useFJournalField = useFJournalField; } public List getExternalJournalLists() { @@ -24,4 +26,12 @@ public void setExternalJournalLists(List externalJournalLists) { public Charset getDefaultEncoding() { return defaultEncoding; } + + public boolean useAMSFJournalFieldForAbbrevAndUnabbrev() { + return useFJournalField; + } + + public void setUseAMSFJournalFieldForAbbrevAndUnabbrev(boolean useFJournalField) { + this.useFJournalField = useFJournalField; + } } diff --git a/buildSrc/src/copied/java/org/jabref/logic/journals/JournalAbbreviationRepository.java b/buildSrc/src/copied/java/org/jabref/logic/journals/JournalAbbreviationRepository.java index 523e1323be1..0437e1ae2ae 100644 --- a/buildSrc/src/copied/java/org/jabref/logic/journals/JournalAbbreviationRepository.java +++ b/buildSrc/src/copied/java/org/jabref/logic/journals/JournalAbbreviationRepository.java @@ -7,6 +7,8 @@ import java.util.Objects; import java.util.Optional; import java.util.Set; +import java.util.regex.Matcher; +import java.util.regex.Pattern; import java.util.stream.Collectors; import org.h2.mvstore.MVMap; @@ -16,6 +18,8 @@ * A repository for all journal abbreviations, including add and find methods. */ public class JournalAbbreviationRepository { + static final Pattern DOT = Pattern.compile("\\."); + static final Pattern QUESTION_MARK = Pattern.compile("\\?"); private final MVMap fullToAbbreviation; private final MVMap abbreviationToFull; @@ -48,14 +52,20 @@ private static boolean isMatchedAbbreviated(String name, Abbreviation abbreviati * Letters) or its abbreviated form (e.g. Phys. Rev. Lett.). */ public boolean isKnownName(String journalName) { - String journal = journalName.trim(); + // check for at least one "?" + if (QUESTION_MARK.matcher(journalName).find()) { + return false; + } + + String journal = journalName.trim().replaceAll(Matcher.quoteReplacement("\\&"), "&"); boolean isKnown = customAbbreviations.stream().anyMatch(abbreviation -> isMatched(journal, abbreviation)); if (isKnown) { return true; } - return fullToAbbreviation.containsKey(journal) || abbreviationToFull.containsKey(journal); + return fullToAbbreviation.containsKey(journal) || abbreviationToFull.containsKey(journal) + || findDottedAbbrFromDotless(journal).length() > 0; } /** @@ -65,8 +75,40 @@ public boolean isKnownName(String journalName) { public boolean isAbbreviatedName(String journalName) { String journal = journalName.trim(); + // journal abbreviation must be at least 2 words + boolean isMoreThanTwoWords = journalName.split(" ").length >= 2; + return customAbbreviations.stream().anyMatch(abbreviation -> isMatchedAbbreviated(journal, abbreviation)) - || abbreviationToFull.containsKey(journal); + || abbreviationToFull.containsKey(journal) + || (isMoreThanTwoWords && findDottedAbbrFromDotless(journal).length() > 0); + } + + public String findDottedAbbrFromDotless(String journalName) { + // check for at least one "?" + if (QUESTION_MARK.matcher(journalName).find()) { + return "UNKNOWN"; + } + + String foundKey = ""; + + // check for a dot-less abbreviation + if (!DOT.matcher(journalName).find()) { + // use dot-less abbr to find full name using regex + String[] journalSplit = journalName.split(" "); + + for (int i = 0; i < journalSplit.length; i++) { + String word = journalSplit[i] + "[\\.\\s]*"; + journalSplit[i] = word; + } + + String joined = String.join("", journalSplit); + + foundKey = abbreviationToFull.keySet().stream() + .filter(s -> Pattern.compile(joined).matcher(s).find()) + .collect(Collectors.joining()); + } + + return foundKey; } /** @@ -75,7 +117,7 @@ public boolean isAbbreviatedName(String journalName) { * @param input The journal name (either abbreviated or full name). */ public Optional get(String input) { - String journal = input.trim(); + String journal = input.trim().replaceAll(Matcher.quoteReplacement("\\&"), "&"); Optional customAbbreviation = customAbbreviations.stream() .filter(abbreviation -> isMatched(journal, abbreviation)) @@ -86,7 +128,17 @@ public Optional get(String input) { return Optional.ofNullable(fullToAbbreviation.get(journal)) .map(abbreviation -> new Abbreviation(journal, abbreviation)) - .or(() -> Optional.ofNullable(abbreviationToFull.get(journal)).map(fullName -> new Abbreviation(fullName, journal))); + .or(() -> { + String abbr = ""; + + // check for dot-less abbr + if (isKnownName(journal) && isAbbreviatedName(journal)) { + abbr = findDottedAbbrFromDotless(journal); + } + + return Optional.ofNullable(abbreviationToFull.get(abbr.equals("") ? journal : abbr)) + .map(fullName -> new Abbreviation(fullName, journal)); + }); } public void addCustomAbbreviation(Abbreviation abbreviation) { diff --git a/buildres/csl/csl-locales/.github/workflows/merge.yaml b/buildres/csl/csl-locales/.github/workflows/merge.yaml index c1efb7eab07..d61a1eaef56 100644 --- a/buildres/csl/csl-locales/.github/workflows/merge.yaml +++ b/buildres/csl/csl-locales/.github/workflows/merge.yaml @@ -141,7 +141,7 @@ jobs: - name: Bump version and push tag id: tag_version - uses: mathieudutour/github-tag-action@v6.0 + uses: mathieudutour/github-tag-action@v6.1 with: github_token: ${{ secrets.GITHUB_TOKEN }} default_bump: patch diff --git a/buildres/csl/csl-styles/.github/workflows/merge.yaml b/buildres/csl/csl-styles/.github/workflows/merge.yaml index c1efb7eab07..d61a1eaef56 100644 --- a/buildres/csl/csl-styles/.github/workflows/merge.yaml +++ b/buildres/csl/csl-styles/.github/workflows/merge.yaml @@ -141,7 +141,7 @@ jobs: - name: Bump version and push tag id: tag_version - uses: mathieudutour/github-tag-action@v6.0 + uses: mathieudutour/github-tag-action@v6.1 with: github_token: ${{ secrets.GITHUB_TOKEN }} default_bump: patch diff --git a/buildres/csl/csl-styles/Gemfile.lock b/buildres/csl/csl-styles/Gemfile.lock index dde35577b7f..8414bfbd6a4 100644 --- a/buildres/csl/csl-styles/Gemfile.lock +++ b/buildres/csl/csl-styles/Gemfile.lock @@ -65,17 +65,17 @@ GEM mini_portile2 (2.8.0) multipart-post (2.1.1) namae (1.1.1) - nokogiri (1.13.6) + nokogiri (1.13.10) mini_portile2 (~> 2.8.0) racc (~> 1.4) - nokogiri (1.13.6-x64-mingw32) + nokogiri (1.13.10-x64-mingw32) racc (~> 1.4) octokit (4.21.0) faraday (>= 0.9) sawyer (~> 0.8.0, >= 0.5.3) ostruct (0.5.2) public_suffix (4.0.6) - racc (1.6.0) + racc (1.6.1) rake (13.0.6) reverse_markdown (2.1.1) nokogiri diff --git a/buildres/csl/csl-styles/american-chemical-society.csl b/buildres/csl/csl-styles/american-chemical-society.csl index b7d421858bd..c3b618341fb 100644 --- a/buildres/csl/csl-styles/american-chemical-society.csl +++ b/buildres/csl/csl-styles/american-chemical-society.csl @@ -18,10 +18,13 @@ Sebastian Karcher + + Patrick O'Brien + The American Chemical Society style - 2021-05-22T12:00:00+00:00 + 2022-09-19T18:32:56+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License @@ -138,6 +141,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -249,18 +276,10 @@ - + - - - - - - - - @@ -277,7 +296,7 @@ - + diff --git a/buildres/csl/csl-styles/american-medical-association-no-url-alphabetical.csl b/buildres/csl/csl-styles/american-medical-association-no-url-alphabetical.csl new file mode 100644 index 00000000000..dc6ea2b4aad --- /dev/null +++ b/buildres/csl/csl-styles/american-medical-association-no-url-alphabetical.csl @@ -0,0 +1,263 @@ + + diff --git a/buildres/csl/csl-styles/arcadia-science.csl b/buildres/csl/csl-styles/arcadia-science.csl new file mode 100644 index 00000000000..74c7dc8d89a --- /dev/null +++ b/buildres/csl/csl-styles/arcadia-science.csl @@ -0,0 +1,139 @@ + + diff --git a/buildres/csl/csl-styles/association-for-computational-linguistics.csl b/buildres/csl/csl-styles/association-for-computational-linguistics.csl index ec95b2a95b5..0fd76b842e5 100644 --- a/buildres/csl/csl-styles/association-for-computational-linguistics.csl +++ b/buildres/csl/csl-styles/association-for-computational-linguistics.csl @@ -68,8 +68,17 @@ - - + + + + + + + + + + + diff --git a/buildres/csl/csl-styles/biotechnology-and-bioprocess-engineering.csl b/buildres/csl/csl-styles/biotechnology-and-bioprocess-engineering.csl new file mode 100644 index 00000000000..75cab4f5718 --- /dev/null +++ b/buildres/csl/csl-styles/biotechnology-and-bioprocess-engineering.csl @@ -0,0 +1,237 @@ + + diff --git a/buildres/csl/csl-styles/bluebook-law-review.csl b/buildres/csl/csl-styles/bluebook-law-review.csl index 5ce50f1f0ab..7525b6b182e 100644 --- a/buildres/csl/csl-styles/bluebook-law-review.csl +++ b/buildres/csl/csl-styles/bluebook-law-review.csl @@ -40,9 +40,22 @@ - - + + + + + + + + + + + + + + + @@ -59,10 +72,10 @@ - + - + diff --git a/buildres/csl/csl-styles/cahiers-mondes-anciens.csl b/buildres/csl/csl-styles/cahiers-mondes-anciens.csl new file mode 100644 index 00000000000..07abbdc9fc4 --- /dev/null +++ b/buildres/csl/csl-styles/cahiers-mondes-anciens.csl @@ -0,0 +1,264 @@ + + + diff --git a/buildres/csl/csl-styles/cambridge-university-press-author-date-cambridge-a.csl b/buildres/csl/csl-styles/cambridge-university-press-author-date-cambridge-a.csl new file mode 100644 index 00000000000..a0db9d9521a --- /dev/null +++ b/buildres/csl/csl-styles/cambridge-university-press-author-date-cambridge-a.csl @@ -0,0 +1,537 @@ + + diff --git a/buildres/csl/csl-styles/cambridge-university-press-author-date.csl b/buildres/csl/csl-styles/cambridge-university-press-author-date.csl index 21cdfa8f944..ae1df9beb63 100644 --- a/buildres/csl/csl-styles/cambridge-university-press-author-date.csl +++ b/buildres/csl/csl-styles/cambridge-university-press-author-date.csl @@ -1,11 +1,11 @@ diff --git a/buildres/csl/csl-styles/constructivist-foundations.csl b/buildres/csl/csl-styles/constructivist-foundations.csl new file mode 100644 index 00000000000..afa6b6a57a4 --- /dev/null +++ b/buildres/csl/csl-styles/constructivist-foundations.csl @@ -0,0 +1,153 @@ + + diff --git a/buildres/csl/csl-styles/dependent/conservation-science-and-practice.csl b/buildres/csl/csl-styles/dependent/conservation-science-and-practice.csl new file mode 100644 index 00000000000..fab6eedb68e --- /dev/null +++ b/buildres/csl/csl-styles/dependent/conservation-science-and-practice.csl @@ -0,0 +1,15 @@ + + diff --git a/buildres/csl/csl-styles/dependent/development-growth-differentiation.csl b/buildres/csl/csl-styles/dependent/development-growth-differentiation.csl new file mode 100644 index 00000000000..f11d24bc750 --- /dev/null +++ b/buildres/csl/csl-styles/dependent/development-growth-differentiation.csl @@ -0,0 +1,17 @@ + + diff --git a/buildres/csl/csl-styles/dependent/the-american-journal-of-sports-medicine.csl b/buildres/csl/csl-styles/dependent/the-american-journal-of-sports-medicine.csl index 62ca2578ff4..24184080887 100644 --- a/buildres/csl/csl-styles/dependent/the-american-journal-of-sports-medicine.csl +++ b/buildres/csl/csl-styles/dependent/the-american-journal-of-sports-medicine.csl @@ -2,15 +2,16 @@ diff --git a/buildres/csl/csl-styles/dependent/veterinary-record-open.csl b/buildres/csl/csl-styles/dependent/veterinary-record-open.csl deleted file mode 100644 index 7976ce1ce56..00000000000 --- a/buildres/csl/csl-styles/dependent/veterinary-record-open.csl +++ /dev/null @@ -1,16 +0,0 @@ - - diff --git a/buildres/csl/csl-styles/emerald-harvard.csl b/buildres/csl/csl-styles/emerald-harvard.csl index 3b4a484c002..ead41080a33 100644 --- a/buildres/csl/csl-styles/emerald-harvard.csl +++ b/buildres/csl/csl-styles/emerald-harvard.csl @@ -30,7 +30,7 @@ - 2020-08-26T12:00:00+00:00 + 2022-12-12T18:17:18+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License @@ -108,28 +108,23 @@ - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + diff --git a/buildres/csl/csl-styles/engineering-technology-and-applied-science-research.csl b/buildres/csl/csl-styles/engineering-technology-and-applied-science-research.csl index 350a9590491..c81f84bed77 100644 --- a/buildres/csl/csl-styles/engineering-technology-and-applied-science-research.csl +++ b/buildres/csl/csl-styles/engineering-technology-and-applied-science-research.csl @@ -15,8 +15,8 @@ 2241-4487 1792-8036 - ETASR style largely based on IEEE 2018 guidelines, V 11.12.2018 without the use of abbreviations for containers. - 2020-06-05T21:02:10+00:00 + ETASR style largely based on IEEE 2018 guidelines, V 11.12.2018 without the use of abbreviations for containers and with the use of full URL for DOIs. + 2022-09-25T12:59:16+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License @@ -187,7 +187,7 @@ - + diff --git a/buildres/csl/csl-styles/gnosis-journal-of-gnostic-studies.csl b/buildres/csl/csl-styles/gnosis-journal-of-gnostic-studies.csl new file mode 100644 index 00000000000..93f292d5faa --- /dev/null +++ b/buildres/csl/csl-styles/gnosis-journal-of-gnostic-studies.csl @@ -0,0 +1,153 @@ + + diff --git a/buildres/csl/csl-styles/harvard-university-of-abertay-dundee.csl b/buildres/csl/csl-styles/harvard-university-of-abertay-dundee.csl index 0e21a947c7d..0a793b00138 100644 --- a/buildres/csl/csl-styles/harvard-university-of-abertay-dundee.csl +++ b/buildres/csl/csl-styles/harvard-university-of-abertay-dundee.csl @@ -13,10 +13,13 @@ Sebastian Karcher + + Naman Merchant + The Abertay version of the Harvard author-date style - 2012-11-16T18:17:12+00:00 + 2022-09-11T21:02:45+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License @@ -47,6 +50,7 @@ - + - + + + diff --git a/buildres/csl/csl-styles/iawa-journal.csl b/buildres/csl/csl-styles/iawa-journal.csl index ffae3813e49..97443927d13 100644 --- a/buildres/csl/csl-styles/iawa-journal.csl +++ b/buildres/csl/csl-styles/iawa-journal.csl @@ -9,6 +9,9 @@ Patrick O'Brien + + Ronald Visser + 0928-1541 @@ -127,11 +130,11 @@ - + - + @@ -157,7 +160,7 @@ - + @@ -167,24 +170,24 @@ - + - + - - + + - + - + - + @@ -193,9 +196,9 @@ - - - + + + diff --git a/buildres/csl/csl-styles/ieee.csl b/buildres/csl/csl-styles/ieee.csl index bff5b9197ed..8238e0aac1d 100644 --- a/buildres/csl/csl-styles/ieee.csl +++ b/buildres/csl/csl-styles/ieee.csl @@ -45,7 +45,7 @@ IEEE style as per the 2021 guidelines, V 01.29.2021. - 2021-05-07T00:52:46+10:00 + 2022-10-11T00:52:46+10:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License @@ -177,7 +177,7 @@ - + diff --git a/buildres/csl/csl-styles/international-union-of-crystallography.csl b/buildres/csl/csl-styles/international-union-of-crystallography.csl index dcaa4332ce8..564787bf09d 100644 --- a/buildres/csl/csl-styles/international-union-of-crystallography.csl +++ b/buildres/csl/csl-styles/international-union-of-crystallography.csl @@ -1,6 +1,5 @@ - diff --git a/buildres/csl/csl-styles/journal-of-medical-internet-research.csl b/buildres/csl/csl-styles/journal-of-medical-internet-research.csl index b75708a423d..b597dcd425a 100644 --- a/buildres/csl/csl-styles/journal-of-medical-internet-research.csl +++ b/buildres/csl/csl-styles/journal-of-medical-internet-research.csl @@ -20,11 +20,15 @@ Patrick O'Brien + + Andrei Bosco Bezerra Torres + andrei.torres@ontariotechu.net + 1439-4456 1438-8871 - 2017-06-02T10:20:48+00:00 + 2022-09-08T13:25:00+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License @@ -74,16 +78,19 @@ - + - - - + + + + + + - + @@ -96,29 +103,20 @@ - - - - - - - - - - - - + + + + + + + + - - - - - @@ -143,11 +141,6 @@ - - - - - @@ -179,7 +172,6 @@ - @@ -204,7 +196,6 @@ - diff --git a/buildres/csl/csl-styles/journal-of-the-american-college-of-cardiology.csl b/buildres/csl/csl-styles/journal-of-the-american-college-of-cardiology.csl index 49b9a5c56fd..eb47b7cb49b 100644 --- a/buildres/csl/csl-styles/journal-of-the-american-college-of-cardiology.csl +++ b/buildres/csl/csl-styles/journal-of-the-american-college-of-cardiology.csl @@ -6,7 +6,8 @@ http://www.zotero.org/styles/journal-of-the-american-college-of-cardiology - + + Julian Onions julian.onions@gmail.com @@ -19,9 +20,14 @@ 0735-1097 1558-3597 Journal of the American College of Cardiology - 2012-09-27T22:06:38+00:00 + 2022-12-09T09:35:42+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License + + + published online + + @@ -45,24 +51,34 @@ - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + - + @@ -92,11 +108,11 @@ - + - + @@ -108,7 +124,7 @@ - + @@ -120,7 +136,7 @@ - + @@ -136,21 +152,21 @@ - - - - - - - - - - - + + + + + + + + + + + + - diff --git a/buildres/csl/csl-styles/les-mondes-du-travail.csl b/buildres/csl/csl-styles/les-mondes-du-travail.csl new file mode 100644 index 00000000000..ba6774b283e --- /dev/null +++ b/buildres/csl/csl-styles/les-mondes-du-travail.csl @@ -0,0 +1,280 @@ + + diff --git a/buildres/csl/csl-styles/lund-university-school-of-economics-and-management.csl b/buildres/csl/csl-styles/lund-university-school-of-economics-and-management.csl index 8a7984a43ed..8f87d987152 100644 --- a/buildres/csl/csl-styles/lund-university-school-of-economics-and-management.csl +++ b/buildres/csl/csl-styles/lund-university-school-of-economics-and-management.csl @@ -364,7 +364,7 @@ - + diff --git a/buildres/csl/csl-styles/medizinische-hochschule-hannover.csl b/buildres/csl/csl-styles/medizinische-hochschule-hannover.csl index d4988b5f214..9c63592e170 100644 --- a/buildres/csl/csl-styles/medizinische-hochschule-hannover.csl +++ b/buildres/csl/csl-styles/medizinische-hochschule-hannover.csl @@ -13,12 +13,16 @@ Style for MHH based on the guidelines from 02.12.2020. - 2022-05-12T08:17:27+00:00 + 2022-12-07T11:41:15+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License + @@ -29,8 +33,24 @@ + + + + + + + + + + + + + @@ -44,8 +64,8 @@ - - @@ -53,6 +73,19 @@ + + + + + + + + + + + + + @@ -84,28 +117,54 @@ - + - - - - - - - - + + + + + + + + + + + + + - - + + + + + diff --git a/buildres/csl/csl-styles/mots.csl b/buildres/csl/csl-styles/mots.csl new file mode 100644 index 00000000000..f6a0b1f2ad4 --- /dev/null +++ b/buildres/csl/csl-styles/mots.csl @@ -0,0 +1,259 @@ + + + diff --git a/buildres/csl/csl-styles/norsk-apa-manual-note.csl b/buildres/csl/csl-styles/norsk-apa-manual-note.csl index f82681543dd..fe4cddf45ef 100644 --- a/buildres/csl/csl-styles/norsk-apa-manual-note.csl +++ b/buildres/csl/csl-styles/norsk-apa-manual-note.csl @@ -163,8 +163,8 @@ - - + + diff --git a/buildres/csl/csl-styles/norsk-apa-manual.csl b/buildres/csl/csl-styles/norsk-apa-manual.csl index 85883ebaec4..cbfec7058ed 100644 --- a/buildres/csl/csl-styles/norsk-apa-manual.csl +++ b/buildres/csl/csl-styles/norsk-apa-manual.csl @@ -191,8 +191,8 @@ - - + + diff --git a/buildres/csl/csl-styles/oil-shale.csl b/buildres/csl/csl-styles/oil-shale.csl index 4d0d9c08619..6b7da61f500 100644 --- a/buildres/csl/csl-styles/oil-shale.csl +++ b/buildres/csl/csl-styles/oil-shale.csl @@ -1,338 +1,286 @@ - diff --git a/buildres/csl/csl-styles/pallas.csl b/buildres/csl/csl-styles/pallas.csl new file mode 100644 index 00000000000..dfe83e5541d --- /dev/null +++ b/buildres/csl/csl-styles/pallas.csl @@ -0,0 +1,252 @@ + + + diff --git a/buildres/csl/csl-styles/physiotherapy-theory-and-practice.csl b/buildres/csl/csl-styles/physiotherapy-theory-and-practice.csl index b10b7c0d7c6..5ff20e0edcf 100644 --- a/buildres/csl/csl-styles/physiotherapy-theory-and-practice.csl +++ b/buildres/csl/csl-styles/physiotherapy-theory-and-practice.csl @@ -14,7 +14,7 @@ 0959-3985 1532-5040 - 2022-01-11T08:37:50+00:00 + 2022-09-05T16:08:42+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License @@ -63,8 +63,8 @@ - + @@ -73,7 +73,7 @@ - + @@ -81,9 +81,11 @@ - - - + + + + + diff --git a/buildres/csl/csl-styles/rassegna-degli-archivi-di-stato-bibliografia-generale.csl b/buildres/csl/csl-styles/rassegna-degli-archivi-di-stato-bibliografia-generale.csl new file mode 100644 index 00000000000..cf345426e82 --- /dev/null +++ b/buildres/csl/csl-styles/rassegna-degli-archivi-di-stato-bibliografia-generale.csl @@ -0,0 +1,784 @@ + + diff --git a/buildres/csl/csl-styles/review-of-international-studies.csl b/buildres/csl/csl-styles/review-of-international-studies.csl index 19fed42975c..2fea05e8949 100644 --- a/buildres/csl/csl-styles/review-of-international-studies.csl +++ b/buildres/csl/csl-styles/review-of-international-studies.csl @@ -14,7 +14,7 @@ 0260-2105 1469-9044 - 2018-03-29T14:20:30+00:00 + 2022-10-24T16:26:57+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License @@ -131,9 +131,9 @@ - + - + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/buildres/csl/csl-styles/scientific-online-letters-on-the-atmosphere.csl b/buildres/csl/csl-styles/scientific-online-letters-on-the-atmosphere.csl new file mode 100644 index 00000000000..7b818c5d878 --- /dev/null +++ b/buildres/csl/csl-styles/scientific-online-letters-on-the-atmosphere.csl @@ -0,0 +1,226 @@ + + diff --git a/buildres/csl/csl-styles/sn-computer-science.csl b/buildres/csl/csl-styles/sn-computer-science.csl new file mode 100644 index 00000000000..d867efcd7d4 --- /dev/null +++ b/buildres/csl/csl-styles/sn-computer-science.csl @@ -0,0 +1,169 @@ + + diff --git a/buildres/csl/csl-styles/social-science-history.csl b/buildres/csl/csl-styles/social-science-history.csl new file mode 100644 index 00000000000..da5d4c8d1e0 --- /dev/null +++ b/buildres/csl/csl-styles/social-science-history.csl @@ -0,0 +1,598 @@ + + diff --git a/buildres/csl/csl-styles/spec/filters.yaml b/buildres/csl/csl-styles/spec/filters.yaml index 48cb27087d4..69b1c6cdacf 100644 --- a/buildres/csl/csl-styles/spec/filters.yaml +++ b/buildres/csl/csl-styles/spec/filters.yaml @@ -41,6 +41,7 @@ ISSN: - 2496-7114 - 1736-6046 - 1736-7530 +- 0037-2781 # These titles are ignored when checking for duplicate titles TITLES: [] diff --git a/buildres/csl/csl-styles/triangle.csl b/buildres/csl/csl-styles/triangle.csl index eefba067154..79e0953412a 100644 --- a/buildres/csl/csl-styles/triangle.csl +++ b/buildres/csl/csl-styles/triangle.csl @@ -20,7 +20,7 @@ Derived from Style EHESS-histoire, available at http://www.boiteaoutils.info/2011/06/styles-francais-de-citation-sous-zotero.html First version online in november 2012. Changes made to cover more documents types and to lighten URLS display. Should preferably be used ticking the quoting option (preferences/citer/styles): include URLs addresses in references. - 2021-04-07T01:50:30+00:00 + 2022-09-29T01:50:30+00:00 This work is licensed under a Creative Commons Attribution-ShareAlike 3.0 License @@ -62,27 +62,27 @@ - + - + - + - +