diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index f140a5511af..00000000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,85 +0,0 @@ -version: 2 - -jobs: - downloadinstall4j: - docker: - - image: circleci/openjdk:8-jdk - steps: - - checkout - - run: git submodule sync - - run: git submodule update --init - - restore_cache: - keys: - - install4j-{{ checksum "scripts/extract-install4j.sh" }} - - run: scripts/download-install4j-and-jres.sh - - save_cache: - key: install4j-{{ checksum "scripts/extract-install4j.sh" }} - paths: - - "~/downloads" - - "~/.install4j7" - filters: - tags: - only: /.*/ - - buildDev: - docker: - - image: circleci/openjdk:8-jdk - steps: - - restore_cache: - key: dependency-cache - - checkout - - run: git submodule sync - - run: git submodule update --init - - restore_cache: - key: install4j-{{ checksum "scripts/extract-install4j.sh" }} - - run: scripts/extract-install4j.sh - - run: install4j7/bin/install4jc --verbose --license=$INSTALL4J_KEY - - run: ./gradlew -Pdev=true -Pinstall4jDir="install4j7" release --stacktrace - - save_cache: - key: dependency-cache - paths: - - "~/.gradle" - - store_artifacts: - path: build/releases - destination: build - - run: scripts/upload-to-builds.jabref.org.sh - - buildRelease: - docker: - - image: circleci/openjdk:8-jdk - steps: - - restore_cache: - key: dependency-cache - - checkout - - run: git submodule sync - - run: git submodule update --init - - restore_cache: - key: install4j-{{ checksum "scripts/extract-install4j.sh" }} - - run: scripts/extract-install4j.sh - - run: install4j7/bin/install4jc --verbose --license=$INSTALL4J_KEY - - run: ./gradlew -Pinstall4jDir="install4j7" release --stacktrace - - store_artifacts: - path: build/releases - destination: release - - run: scripts/upload-to-builds.jabref.org.sh - filters: - tags: - only: /.*/ - -workflows: - version: 2 - build: - jobs: - - downloadinstall4j - - buildDev: - requires: - - downloadinstall4j - - buildRelease: - requires: - - downloadinstall4j - filters: - branches: - ignore: /.*/ - tags: - only: /.*/ - diff --git a/.dependabot/config.yml b/.dependabot/config.yml new file mode 100644 index 00000000000..8a1ed8ef340 --- /dev/null +++ b/.dependabot/config.yml @@ -0,0 +1,23 @@ +# Configuration for https://dependabot.com +version: 1 + +update_configs: + - package_manager: "java:gradle" + directory: "/" + update_schedule: "weekly" + default_labels: + - "dependencies" + automerged_updates: + - match: + dependency_type: "all" + update_type: "semver:minor" + + - package_manager: "submodules" + directory: "/" + update_schedule: "weekly" + default_labels: + - "dependencies" + automerged_updates: + - match: + dependency_type: "all" + update_type: "all" diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml new file mode 100644 index 00000000000..5b7c968e62d --- /dev/null +++ b/.github/workflows/deployment.yml @@ -0,0 +1,102 @@ +name: Deployment + +on: [push] + +jobs: + deploy: + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest, macOS-latest] + include: + - os: ubuntu-latest + displayName: linux + jpackageDownload: https://download.java.net/java/early_access/jpackage/1/openjdk-14-jpackage+1-49_linux-x64_bin.tar.gz + jdk14Path: /jdk-14 + archivePortable: tar -czf build/distribution/JabRef-portable_linux.tar.gz -C build/distribution JabRef && rm -R build/distribution/JabRef + - os: windows-latest + displayName: windows + jpackageDownload: https://download.java.net/java/early_access/jpackage/1/openjdk-14-jpackage+1-49_windows-x64_bin.zip + jdk14Path: /jdk-14 + archivePortable: 7z a -r build/distribution/JabRef-portable_windows.zip ./build/distribution/JabRef && rm -R build/distribution/JabRef + - os: macOS-latest + displayName: macOS + jpackageDownload: https://download.java.net/java/early_access/jpackage/1/openjdk-14-jpackage+1-49_osx-x64_bin.tar.gz + jdk14Path: /jdk-14.jdk/Contents/Home + archivePortable: tar -czf build/distribution/JabRef-portable_macos.tar.gz -C build/distribution JabRef.app && rm -R build/distribution/JabRef.app + + runs-on: ${{ matrix.os }} + name: Deploy on ${{ matrix.displayName }} + + steps: + - name: Checkout source + uses: actions/checkout@v1 + with: + depth: 1 + submodules: true + - name: Extract branch name + shell: bash + run: | + ref=${GITHUB_REF#refs/heads/} + ref=${ref#refs/pull/} + ref=${ref%/merge} + echo "##[set-output name=branch;]${ref}" + id: extract_branch + - name: Set up JDK + uses: actions/setup-java@v1 + with: + java-version: 12.0.2 + - name: Download jpackage + # We need to download jpackage from https://jdk.java.net/jpackage/ + run: | + import tarfile + import zipfile + import sys + if sys.version_info[0] >= 3: + from urllib.request import urlretrieve + else: + from urllib import urlretrieve + + url = "${{ matrix.jpackageDownload }}" + tmpfile, headers = urlretrieve(url) + if (url.endswith("tar.gz")): + tar = tarfile.open(tmpfile) + tar.extractall() + tar.close() + elif (url.endswith("zip")): + zip = zipfile.ZipFile(tmpfile) + zip.extractall() + zip.close() + shell: python + - name: Build runtime image + run: ./gradlew -Pdev=true jlinkZip + - name: Build installer + run: | + export BADASS_JLINK_JPACKAGE_HOME="${GITHUB_WORKSPACE}${{ matrix.jdk14Path }}" + ./gradlew -Pdev=true jpackage + shell: bash + - name: Add installer as artifact + uses: actions/upload-artifact@master + with: + name: JabRef-${{ matrix.displayName }} + path: build/distribution + - name: Package application image + run: ${{ matrix.archivePortable }} + shell: bash + - name: Build and publish snap + if: matrix.os == 'ubuntu-latest' && steps.extract_branch.outputs.branch == 'master' + env: + SNAPCRAFT_LOGIN_FILE: ${{ secrets.SNAPCRAFT_LOGIN_FILE }} + run: | + mkdir .snapcraft && echo ${SNAPCRAFT_LOGIN_FILE} | base64 --decode --ignore-garbage > .snapcraft/snapcraft.cfg + docker run -v $(pwd):$(pwd) -t lyzardking/snapcraft-bionic sh -c "apt update -qq && cd $(pwd) && snapcraft && mv jabref*.snap build/distribution/ && snapcraft push build/distribution/jabref*.snap --release edge || true" + shell: bash + - name: Upload to builds.jabref.org + uses: garygrossgarten/github-action-scp@release + with: + local: build/distribution + remote: www/${{ steps.extract_branch.outputs.branch }} + host: builds.jabref.org + username: builds_jabref_org + privateKey: ${{ secrets.buildJabRefPrivateKey }} + port: 9922 diff --git a/.gitignore b/.gitignore index f464e64c585..62ceb1d36b6 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,9 @@ status.md # Install4J install4j6/ +# Python +__pycache__/ + # Snap parts/ stage/ @@ -21,9 +24,13 @@ snap/.snapcraft/ # Gradle # generated when `gradlew --gui` is called ui/ +# for workspace specific gradle properties +gradle.properties + # IntelliJ IDEA -.idea/ +.idea/* +!.idea/runConfigurations/ *.ipr *.iml @@ -31,10 +38,11 @@ ui/ jabref.xml *.sonargraph + # Created by https://www.gitignore.io/api/gradle,java,jabref,intellij,eclipse,netbeans,windows,linux,macos,node,snapcraft +# Edit at https://www.gitignore.io/?templates=gradle,java,jabref,intellij,eclipse,netbeans,windows,linux,macos,node,snapcraft ### Eclipse ### - .metadata bin/ tmp/ @@ -59,6 +67,9 @@ local.properties # CDT-specific (C/C++ Development Tooling) .cproject +# CDT- autotools +.autotools + # Java annotation processor (APT) .factorypath @@ -80,6 +91,9 @@ local.properties # Code Recommenders .recommenders/ +# Annotation Processing +.apt_generated/ + # Scala IDE specific (Scala & Java development for Eclipse) .cache-main .scala_dependencies @@ -92,41 +106,59 @@ local.properties # JDT-specific (Eclipse Java Development Tools) .classpath +# Annotation Processing +.apt_generated + +.sts4-cache/ + ### Intellij ### -# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and Webstorm +# Covers JetBrains IDEs: IntelliJ, RubyMine, PhpStorm, AppCode, PyCharm, CLion, Android Studio and WebStorm # Reference: https://intellij-support.jetbrains.com/hc/en-us/articles/206544839 -# User-specific stuff: +# User-specific stuff .idea/**/workspace.xml .idea/**/tasks.xml -.idea/dictionaries +.idea/**/usage.statistics.xml +.idea/**/dictionaries +.idea/**/shelf -# Sensitive or high-churn files: +# Generated files +.idea/**/contentModel.xml + +# Sensitive or high-churn files .idea/**/dataSources/ .idea/**/dataSources.ids -.idea/**/dataSources.xml .idea/**/dataSources.local.xml .idea/**/sqlDataSources.xml .idea/**/dynamic.xml .idea/**/uiDesigner.xml +.idea/**/dbnavigator.xml -# Gradle: +# Gradle .idea/**/gradle.xml .idea/**/libraries +# Gradle and Maven with auto-import +# When using Gradle or Maven with auto-import, you should exclude module files, +# since they will be recreated, and may cause churn. Uncomment if using +# auto-import. +# .idea/modules.xml +# .idea/*.iml +# .idea/modules +# *.iml +# *.ipr + # CMake -cmake-build-debug/ +cmake-build-*/ -# Mongo Explorer plugin: +# Mongo Explorer plugin .idea/**/mongoSettings.xml -## File-based project format: +# File-based project format *.iws -## Plugin-specific files: - # IntelliJ -/out/ +out/ # mpeltonen/sbt-idea plugin .idea_modules/ @@ -143,6 +175,12 @@ crashlytics.properties crashlytics-build.properties fabric.properties +# Editor-based Rest Client +.idea/httpRequests + +# Android studio 3.1+ serialized cache file +.idea/caches/build_file_checksums.ser + ### Intellij Patch ### # Comment Reason: https://github.com/joeblau/gitignore.io/issues/186#issuecomment-215987721 @@ -152,7 +190,14 @@ fabric.properties # *.ipr # Sonarlint plugin -.idea/sonarlint +.idea/**/sonarlint/ + +# SonarQube Plugin +.idea/**/sonarIssues.xml + +# Markdown Navigator plugin +.idea/**/markdown-navigator.xml +.idea/**/markdown-navigator/ ### JabRef ### # JabRef - https://www.jabref.org/ @@ -174,6 +219,7 @@ fabric.properties # Package Files # *.jar *.war +*.nar *.ear *.zip *.tar.gz @@ -198,7 +244,8 @@ hs_err_pid* .nfs* ### macOS ### -*.DS_Store +# General +.DS_Store .AppleDouble .LSOverride @@ -225,7 +272,9 @@ Temporary Items .apdisk ### NetBeans ### -nbproject/private/ +**/nbproject/private/ +**/nbproject/Makefile-*.mk +**/nbproject/Package-*.bash build/ nbbuild/ dist/ @@ -238,6 +287,10 @@ logs npm-debug.log* yarn-debug.log* yarn-error.log* +lerna-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json # Runtime data pids @@ -250,11 +303,12 @@ lib-cov # Coverage directory used by tools like istanbul coverage +*.lcov # nyc test coverage .nyc_output -# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) .grunt # Bower dependency directory (https://bower.io/) @@ -263,16 +317,19 @@ bower_components # node-waf configuration .lock-wscript -# Compiled binary addons (http://nodejs.org/api/addons.html) +# Compiled binary addons (https://nodejs.org/api/addons.html) build/Release # Dependency directories node_modules/ jspm_packages/ -# Typescript v1 declaration files +# TypeScript v1 declaration files typings/ +# TypeScript cache +*.tsbuildinfo + # Optional npm cache directory .npm @@ -290,23 +347,57 @@ typings/ # dotenv environment variables file .env +.env.test + +# parcel-bundler cache (https://parceljs.org/) +.cache + +# next.js build output +.next + +# nuxt.js build output +.nuxt + +# react / gatsby +public/ +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ ### Snapcraft ### -# Snapcraft -parts/ -prime/ -stage/ -*.snap +/parts/ +/stage/ +/prime/ +/*.snap + +# Snapcraft global state tracking data(automatically generated) +# https://forum.snapcraft.io/t/location-to-save-global-state/768 +/snap/.snapcraft/ + +# Source archive packed by `snapcraft cleanbuild` before pushing to the LXD container +/*_source.tar.bz2 ### Windows ### # Windows thumbnail cache files Thumbs.db +Thumbs.db:encryptable ehthumbs.db ehthumbs_vista.db +# Dump file +*.stackdump + # Folder config file -Desktop.ini +[Dd]esktop.ini # Recycle Bin used on file shares $RECYCLE.BIN/ @@ -314,6 +405,7 @@ $RECYCLE.BIN/ # Windows Installer files *.cab *.msi +*.msix *.msm *.msp @@ -322,7 +414,6 @@ $RECYCLE.BIN/ ### Gradle ### .gradle -/build/ # Ignore Gradle GUI config gradle-app.setting @@ -336,14 +427,20 @@ gradle-app.setting # # Work around https://youtrack.jetbrains.com/issue/IDEA-116898 # gradle/wrapper/gradle-wrapper.properties -# End of https://www.gitignore.io/api/gradle,java,jabref,intellij,eclipse,netbeans,windows,linux,macos,node,snapcraft - +### Gradle Patch ### +**/build/ -# we really version .jar files - needs to be go after the www.gitignore.io-generated ones, because they ignore *.jar files -!/lib/*.jar - -# do not distribute Oracle's JDBC driver -lib/ojdbc.jar +# End of https://www.gitignore.io/api/gradle,java,jabref,intellij,eclipse,netbeans,windows,linux,macos,node,snapcraft -# do not ignore the source of the build -!/buildSrc/src/ +-# we really version .jar files - needs to be go after the www.gitignore.io-generated ones, because they ignore *.jar files +-!/lib/*.jar +- +-# do not distribute Oracle's JDBC driver +-lib/ojdbc.jar +- +-# do not ignore the source of the build +-!/buildSrc/src/ +-!/buildSrc/src/main/groovy/org/jabref/build +- +-# do not ignore JabRef icons (they are ignored by the macos setting above) +-!src/main/java/org/jabref/gui/icon \ No newline at end of file diff --git a/.idea/runConfigurations/JabRef_Main.xml b/.idea/runConfigurations/JabRef_Main.xml new file mode 100644 index 00000000000..048f2dd8126 --- /dev/null +++ b/.idea/runConfigurations/JabRef_Main.xml @@ -0,0 +1,12 @@ + + + + diff --git a/.travis.yml b/.travis.yml index 489044d8ec4..f96a0afbbfd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,6 @@ language: java +jdk: + - openjdk12 # we test at Ubuntu Trusty (Ubuntu 14.04 LTS) # see https://docs.travis-ci.com/user/trusty-ci-environment/ @@ -17,7 +19,7 @@ env: global: - GRADLE_OPTS=-Dorg.gradle.daemon=false matrix: - - TEST_SUITE=check OPTIONS=modernizer + - TEST_SUITE=check - TEST_SUITE=checkstyle - TEST_SUITE=fetcherTest - TEST_SUITE=databaseTest @@ -29,6 +31,7 @@ matrix: fast_finish: true allow_failures: - env: TEST_SUITE=fetcherTest + - env: TEST_SUITE=guiTest - env: TEST_SUITE=codecov - env: DEPENDENCY_UPDATES=check @@ -50,7 +53,7 @@ script: - if [ "$TEST_SUITE" != "guiTest" ] && [ "$TEST_SUITE" != "checkstyle" ] && [ "$TEST_SUITE" != "codecov" ]; then ./gradlew $TEST_SUITE $OPTIONS -x checkstyleJmh -x checkstyleMain -x checkstyleTest --scan; fi - if [ "$TEST_SUITE" == "checkstyle" ]; then ./gradlew checkstyleMain checkstyleTest checkstyleJmh; fi - if [ "$TEST_SUITE" == "guiTest" ]; then ./buildres/gui-tests.sh; fi - - if [ "$TEST_SUITE" == "codecov" ]; then ./gradlew jacocoTestReport; bash <(curl -s https://codecov.io/bash); fi + - if [ "$TEST_SUITE" == "codecov" ]; then ./gradlew jacocoTestReport && bash <(curl -s https://codecov.io/bash); fi - if [ "$DEPENDENCY_UPDATES" == "check" ]; then ./gradlew -q checkOutdatedDependencies; fi after_failure: diff --git a/AUTHORS b/AUTHORS index 9c42e1f1bbc..799b72a6fdc 100644 --- a/AUTHORS +++ b/AUTHORS @@ -56,7 +56,6 @@ Eduard Braun Eduardo Greco Egon Willighagen Ellen Reitmayr -Erdem Derebasoglu Erdem Derebaşoğlu Erik Putrycz Ervin Kolenovic diff --git a/CHANGELOG.md b/CHANGELOG.md index 40bb662ecb4..ac70ed8452b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,5 @@ # Changelog + All notable changes to this project will be documented in this file. This project **does not** adhere to [Semantic Versioning](http://semver.org/). This file tries to follow the conventions proposed by [keepachangelog.com](http://keepachangelog.com/). @@ -11,6 +12,109 @@ We refer to [GitHub issues](https://github.com/JabRef/jabref/issues) by using `# ## [Unreleased] ### Changed + +- We added a short DOI field formatter which shortens DOI to more human-readable form. [koppor#343](https://github.com/koppor/jabref/issues/343) +- We improved the display of group memberships by adding multiple colored bars if the entry belongs to more than one group. [#4574](https://github.com/JabRef/jabref/issues/4574) +- We added an option to show the preview as an extra tab in the entry editor (instead of in a split view). [#5244](https://github.com/JabRef/jabref/issues/5244) +- A custom Open/LibreOffice jstyle file now requires a layout line for the entry type `default` [#5452](https://github.com/JabRef/jabref/issues/5452) +- The entry editor is now open by default when JabRef starts up. [#5460](https://github.com/JabRef/jabref/issues/5460) +- We added a new ADS fetcher to use the new ADS API [#4949](https://github.com/JabRef/jabref/issues/4949) +- We added support of the [X11 primary selection](https://unix.stackexchange.com/a/139193/18033) [#2389](https://github.com/JabRef/jabref/issues/2389) + +### Fixed + +- Inherit fields from cross-referenced entries as specified by biblatex. [#5045](https://github.com/JabRef/jabref/issues/5045) +- We fixed an issue where it was no longer possible to connect to LibreOffice. [#5261](https://github.com/JabRef/jabref/issues/5261) +- The "All entries group" is no longer shown when no library is open. +- We fixed an exception which occurred when closing JabRef. [#5348](https://github.com/JabRef/jabref/issues/5348) +- We fixed an issue where JabRef reports incorrectly about customized entry types. [#5332](https://github.com/JabRef/jabref/issues/5332) +- We fixed a few problems that prevented JabFox to communicate with JabRef. [#4737](https://github.com/JabRef/jabref/issues/4737) [#4303](https://github.com/JabRef/jabref/issues/4303) +- We fixed an error where the groups containing an entry loose their highlight color when scrolling. [#5022](https://github.com/JabRef/jabref/issues/5022) +- We fixed an error where scrollbars were not shown. [#5374](https://github.com/JabRef/jabref/issues/5374) +- We fixed an error where an exception was thrown when merging entries. [#5169](https://github.com/JabRef/jabref/issues/5169) +- We fixed an error where certain metadata items were not serialized alphabetically. +- After assigning an entry to a group, the item count is now properly colored to reflect the new membership of the entry. [#3112](https://github.com/JabRef/jabref/issues/3112) +- The group panel is now properly updated when switching between libraries (or when closing/opening one). [#3142](https://github.com/JabRef/jabref/issues/3142) +- We fixed an error where the number of matched entries shown in the group pane was not updated correctly. [#4441](https://github.com/JabRef/jabref/issues/4441) +- We fixed a "null" error when writing XMP metadata. [#5449](https://github.com/JabRef/jabref/issues/5449) +- We fixed an issue where empty keywords lead to a strange display of automatic keyword groups. [#5333](https://github.com/JabRef/jabref/issues/5333) +- We fixed an error where the default color of a new group was white instead of dark gray. [#4868](https://github.com/JabRef/jabref/issues/4868) +- We fixed an issue where the first field in the entry editor got the focus while performing a different action (like searching). [#5084](https://github.com/JabRef/jabref/issues/5084) +- We fixed an issue where multiple entries were highlighted in the web search result after scrolling. [#5035](https://github.com/JabRef/jabref/issues/5035) +- We fixed an issue where the hover indication in the web search pane was not working. [#5277](https://github.com/JabRef/jabref/issues/5277) +- We fixed an error mentioning "javafx.controls/com.sun.javafx.scene.control" that was thrown when interacting with the toolbar. +- We fixed an error where a cleared search was restored after switching libraries. [#4846](https://github.com/JabRef/jabref/issues/4846) +- We fixed an exception which occurred when trying to open a non-existing file from the "Recent files"-menu [#5334](https://github.com/JabRef/jabref/issues/5334) +- We fixed an issues where the search highlight in the entry preview did not worked. [#5069](https://github.com/JabRef/jabref/issues/5069) +- The context menu for fields in the entry editor is back. [#5254](https://github.com/JabRef/jabref/issues/5254) +- We fixed an exception which occurred when trying to open a non-existing file from the "Recent files"-menu [#5334](https://github.com/JabRef/jabref/issues/5334) +- We fixed a problem where the "editor" information has been duplicated during saving a .bib-Database. [#5359](https://github.com/JabRef/jabref/issues/5359) +- We re-introduced the feature to switch between different preview styles. [#5221](https://github.com/JabRef/jabref/issues/5221) +- We fixed various issues (including [#5263](https://github.com/JabRef/jabref/issues/5263)) related to copying entries to the clipboard +- We fixed some display errors in the preferences dialog and replaced some of the controls [#5033](https://github.com/JabRef/jabref/pull/5033) [#5047](https://github.com/JabRef/jabref/pull/5047) [#5062](https://github.com/JabRef/jabref/pull/5062) [#5141](https://github.com/JabRef/jabref/pull/5141) [#5185](https://github.com/JabRef/jabref/pull/5185) [#5265](https://github.com/JabRef/jabref/pull/5265) [#5315](https://github.com/JabRef/jabref/pull/5315) [#5360](https://github.com/JabRef/jabref/pull/5360) +- We fixed an exception which occurred when trying to import entries without an open library. [#5447](https://github.com/JabRef/jabref/issues/5447) +- After successful import of one or multiple bib entries the main table scrolls to the first imported entry [#5383](https://github.com/JabRef/jabref/issues/5383) +- We fixed an exception which occurred when an invalid jstyle was loaded. [#5452](https://github.com/JabRef/jabref/issues/5452) +- We fixed an error where the preview theme did not adapt to the "Dark" mode [#5463](https://github.com/JabRef/jabref/issues/5463) +- We fixed an issue where the merge dialog showed the wrong text colour in "Dark" mode [#5516](https://github.com/JabRef/jabref/issues/5516) + +### Removed + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +## [5.0-alpha] – 2019-08-25 + +### Changed +- We added eventitle, eventdate and venue fields to @unpublished entry type. +- We added @software and @dataSet entry type to biblatex. - All fields are now properly sorted alphabetically (in the subgroups of required/optional fields) when the entry is written to the bib file. - We fixed an issue where some importers used the field `pubstatus` instead of the standard BibTeX field `pubstate`. - We changed the latex command removal for docbook exporter. [#3838](https://github.com/JabRef/jabref/issues/3838) @@ -21,13 +125,13 @@ We refer to [GitHub issues](https://github.com/JabRef/jabref/issues) by using `# - Moreover, empty deprecated fields are no longer shown - Added server timezone parameter when connecting to a shared database. - We updated the dialog for setting up general fields. -- URL field formatting is updated. All whitespace chars, located at the beginning/ending of the url, are trimmed automatically +- URL field formatting is updated. All whitespace chars, located at the beginning/ending of the URL, are trimmed automatically - We changed the behavior of the field formatting dialog such that the `bibtexkey` is not changed when formatting all fields or all text fields. - We added a "Move file to file directory and rename file" option for simultaneously moving and renaming of document file. [#4166](https://github.com/JabRef/jabref/issues/4166) - Use integrated graphics card instead of discrete on macOS [#4070](https://github.com/JabRef/jabref/issues/4070) -- We added a cleanup operation that detects an arXiv identifier in the note, journal or url field and moves it to the `eprint` field. +- We added a cleanup operation that detects an arXiv identifier in the note, journal or URL field and moves it to the `eprint` field. Because of this change, the last-used cleanup operations were reset. -- We changed the minimum required version of Java to 1.8.0_171, as this is the latest release for which the automatic Java update works. [4093](https://github.com/JabRef/jabref/issues/4093) +- We changed the minimum required version of Java to 1.8.0_171, as this is the latest release for which the automatic Java update works. [#4093](https://github.com/JabRef/jabref/issues/4093) - The special fields like `Printed` and `Read status` now show gray icons when the row is hovered. - We added a button in the tab header which allows you to close the database with one click. https://github.com/JabRef/jabref/issues/494 - Sorting in the main table now takes information from cross-referenced entries into account. https://github.com/JabRef/jabref/issues/2808 @@ -44,18 +148,19 @@ We refer to [GitHub issues](https://github.com/JabRef/jabref/issues) by using `# - Files without a defined external file type are now directly opened with the default application of the operating system - We streamlined the process to rename and move files by removing the confirmation dialogs. - We removed the redundant new lines of markings and wrapped the summary in the File annotation tab. [#3823](https://github.com/JabRef/jabref/issues/3823) -- We add auto url formatting when user paste link to URL field in entry editor. [koppor#254](https://github.com/koppor/jabref/issues/254) -- We added a minimal height for the entry editor so that it can no longer be hidden by accident. [#4279](https://github.com/JabRef/jabref/issues/4279) +- We add auto URL formatting when user paste link to URL field in entry editor. [koppor#254](https://github.com/koppor/jabref/issues/254) +- We added a minimum height for the entry editor so that it can no longer be hidden by accident. [#4279](https://github.com/JabRef/jabref/issues/4279) - We added a new keyboard shortcut so that the entry editor could be closed by Ctrl + E. [#4222] (https://github.com/JabRef/jabref/issues/4222) - We added an option in the preference dialog box, that allows user to pick the dark or light theme option. [#4130] (https://github.com/JabRef/jabref/issues/4130) -- We updated updated the Related Articles tab to accept JSON from the new version of the Mr. DLib service +- We updated the Related Articles tab to accept JSON from the new version of the Mr. DLib service - We added an option in the preference dialog box that allows user to choose behavior after dragging and dropping files in Entry Editor. [#4356](https://github.com/JabRef/jabref/issues/4356) - We added the ability to have an export preference where previously "File"-->"Export"/"Export selected entries" would not save the user's preference[#4495](https://github.com/JabRef/jabref/issues/4495) - We optimized the code responsible for connecting to an external database, which should lead to huge improvements in performance. - For automatically created groups, added ability to filter groups by entry type. [#4539](https://github.com/JabRef/jabref/issues/4539) - We added the ability to add field names from the Preferences Dialog [#4546](https://github.com/JabRef/jabref/issues/4546) -- We added the ability change the column widths directly in the main table. [#4546](https://github.com/JabRef/jabref/issues/4546) -- We added description of how recommendations where chosen and better error handling to Related Articles tab +- We added the ability to change the column widths directly in the main +. [#4546](https://github.com/JabRef/jabref/issues/4546) +- We added a description of how recommendations were chosen and better error handling to Related Articles tab - We added the ability to execute default action in dialog by using with Ctrl + Enter combination [#4496](https://github.com/JabRef/jabref/issues/4496) - We grouped and reordered the Main Menu (File, Edit, Library, Quality, Tools, and View tabs & icons). [#4666](https://github.com/JabRef/jabref/issues/4666) [#4667](https://github.com/JabRef/jabref/issues/4667) [#4668](https://github.com/JabRef/jabref/issues/4668) [#4669](https://github.com/JabRef/jabref/issues/4669) [#4670](https://github.com/JabRef/jabref/issues/4670) [#4671](https://github.com/JabRef/jabref/issues/4671) [#4672](https://github.com/JabRef/jabref/issues/4672) [#4673](https://github.com/JabRef/jabref/issues/4673) - We added additional modifiers (capitalize, titlecase and sentencecase) to the Bibtex key generator. [#1506](https://github.com/JabRef/jabref/issues/1506) @@ -64,7 +169,7 @@ We refer to [GitHub issues](https://github.com/JabRef/jabref/issues) by using `# - We added a browse button next to the path text field for aux-based groups. [#4586](https://github.com/JabRef/jabref/issues/4586) - We changed the title of Group Dialog to "Add subgroup" from "Edit group" when we select Add subgroup option. - We enable import button only if entries are selected. [#4755](https://github.com/JabRef/jabref/issues/4755) -- We made modifications to improve contrast of UI elements. [#4583](https://github.com/JabRef/jabref/issues/4583) +- We made modifications to improve the contrast of UI elements. [#4583](https://github.com/JabRef/jabref/issues/4583) - We added a warning for empty BibTeX keys in the entry editor. [#4440](https://github.com/JabRef/jabref/issues/4440) - We added an option in the settings to set the default action in JabRef when right clicking on any entry in any database and selecting "Open folder". [#4763](https://github.com/JabRef/jabref/issues/4763) - The Medline fetcher now normalizes the author names according to the BibTeX-Standard [#4345](https://github.com/JabRef/jabref/issues/4345) @@ -81,6 +186,7 @@ We refer to [GitHub issues](https://github.com/JabRef/jabref/issues) by using `# ### Fixed + - We fixed an issue where JabRef died silently for the user without enough inotify instances [#4874](https://github.com/JabRef/jabref/issues/4847) - We fixed an issue where corresponding groups are sometimes not highlighted when clicking on entries [#3112](https://github.com/JabRef/jabref/issues/3112) - We fixed an issue where custom exports could not be selected in the 'Export (selected) entries' dialog [#4013](https://github.com/JabRef/jabref/issues/4013) @@ -90,7 +196,7 @@ We refer to [GitHub issues](https://github.com/JabRef/jabref/issues) by using `# - We fixed an issue where the group tree was not updated correctly after an entry was changed. https://github.com/JabRef/jabref/issues/3618 - We fixed an issue where a right-click in the main table selected a wrong entry. https://github.com/JabRef/jabref/issues/3267 - We fixed an issue where in rare cases entries where overlayed in the main table. https://github.com/JabRef/jabref/issues/3281 -- We fixed an issue where selecting a group messed up the focus of the main table / entry editor. https://github.com/JabRef/jabref/issues/3367 +- We fixed an issue where selecting a group messed up the focus of the main table and the entry editor. https://github.com/JabRef/jabref/issues/3367 - We fixed an issue where composite author names were sorted incorrectly. https://github.com/JabRef/jabref/issues/2828 - We fixed an issue where commands followed by `-` didn't work. [#3805](https://github.com/JabRef/jabref/issues/3805) - We fixed an issue where a non-existing aux file in a group made it impossible to open the library. [#4735](https://github.com/JabRef/jabref/issues/4735) @@ -123,9 +229,9 @@ We refer to [GitHub issues](https://github.com/JabRef/jabref/issues) by using `# - We fixed an issue where "Move to group" would always move the first entry in the library and not the selected [#4414](https://github.com/JabRef/jabref/issues/4414) - We fixed an issue where an older dialog appears when downloading full texts from the quality menu. [#4489](https://github.com/JabRef/jabref/issues/4489) - We fixed an issue where right clicking on any entry in any database and selecting "Open folder" results in the NullPointer exception. [#4763](https://github.com/JabRef/jabref/issues/4763) -- We fixed an issue where option 'open terminal here' with custom command was passing wrong argument. [#4802](https://github.com/JabRef/jabref/issues/4802) +- We fixed an issue where option 'open terminal here' with custom command was passing the wrong argument. [#4802](https://github.com/JabRef/jabref/issues/4802) - We fixed an issue where ranking an entry would generate an IllegalArgumentException. [#4754](https://github.com/JabRef/jabref/issues/4754) -- We fixed an issue where special characters where removed from non label key generation pattern parts [#4767](https://github.com/JabRef/jabref/issues/4767) +- We fixed an issue where special characters where removed from non-label key generation pattern parts [#4767](https://github.com/JabRef/jabref/issues/4767) - We fixed an issue where the RIS import would overwite the article date with the value of the acessed date [#4816](https://github.com/JabRef/jabref/issues/4816) - We fixed an issue where an NullPointer exception was thrown when a referenced entry in an Open/Libre Office document was no longer present in the library. Now an error message with the reference marker of the missing entry is shown. [#4932](https://github.com/JabRef/jabref/issues/4932) - We fixed an issue where a database exception related to a missing timezone was too big. [#4827](https://github.com/JabRef/jabref/issues/4827) @@ -136,64 +242,27 @@ We refer to [GitHub issues](https://github.com/JabRef/jabref/issues) by using `# - We fixed an issue where the JabRef Icon in the macOS launchpad was not displayed correctly [#5003](https://github.com/JabRef/jabref/issues/5003) - We fixed an issue where the "Search for unlinked local files" would throw an exception when parsing the content of a PDF-file with missing "series" information [#5128](https://github.com/JabRef/jabref/issues/5128) - ### Removed + - The feature to "mark entries" was removed and merged with the groups functionality. For migration, a group is created for every value of the `__markedentry` field and the entry is added to this group. - The number column was removed. - We removed the global search feature. -- We removed the coloring of cells in the maintable according to whether the field is optional/required. +- We removed the coloring of cells in the main table according to whether the field is optional/required. - We removed the feature to find and resolve duplicate BibTeX keys (as this use case is already covered by the integrity check). - We removed a few commands from the right-click menu that are not needed often and thus don't need to be placed that prominently: - Print entry preview: available through entry preview - All commands related to marking: marking is not yet reimplemented - Set/clear/append/rename fields: available through Edit menu - - Manage keywords: available through Edit menu + - Manage keywords: available through the Edit menu - Copy linked files to folder: available through File menu - Add/move/remove from group: removed completely (functionality still available through group interface) - We removed the option to change the column widths in the preferences dialog. [#4546](https://github.com/JabRef/jabref/issues/4546) - - - - - - - - - - - - - - - - - - - - - - - - - - - - ## Older versions The changelog of JabRef 4.x is available at the [v4.x branch](https://github.com/JabRef/jabref/blob/v4.x/CHANGELOG.md). 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/v4.3...HEAD -[4.3]: https://github.com/JabRef/jabref/compare/v4.2...v4.3 -[4.2]: https://github.com/JabRef/jabref/compare/v4.1...v4.2 -[4.1]: https://github.com/JabRef/jabref/compare/v4.0...v4.1 -[4.0]: https://github.com/JabRef/jabref/compare/v4.0-beta3...v4.0 -[4.0-beta3]: https://github.com/JabRef/jabref/compare/v4.0-beta2...v4.0-beta3 -[4.0-beta2]: https://github.com/JabRef/jabref/compare/v4.0-beta...v4.0-beta2 -[4.0-beta]: https://github.com/JabRef/jabref/compare/v3.8.2...v4.0-beta -[2.11.1]: https://github.com/JabRef/jabref/compare/v2.11...v2.11.1 -[JavaFX]: https://en.wikipedia.org/wiki/JavaFX - +[Unreleased]: https://github.com/JabRef/jabref/compare/v5.0-alpha...HEAD +[5.0-alpha]: https://github.com/JabRef/jabref/compare/v4.3...v5.0-alpha diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 24c25a05b9a..0c1d2eb4722 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,28 +1,35 @@ +# Contributing Guide + After reading through this guide, check out some good first issues to contribute to by clicking here: [Good First Issues](https://github.com/JabRef/jabref/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22) ## Understanding the basics + We welcome contributions to JabRef and encourage you to follow the GitHub workflow specified below. If you are not familiar with this type of workflow, take a look at GitHub's excellent overview on the [GitHub flow](https://guides.github.com/introduction/flow/index.html) and the explanation of [Feature Branch Workflow](https://atlassian.com/git/tutorials/comparing-workflows#feature-branch-workflow) for the idea behind this kind of development. + 1. Get the JabRef code on your local machine. Detailed instructions about this step can be found in our [guidelines for setting up a local workspace](https://github.com/JabRef/jabref/wiki/Guidelines-for-setting-up-a-local-workspace). 1. Fork the JabRef into your GitHub account. 2. Clone your forked repository on your local machine. -3. **Create a new branch** (such as `fix-for-issue-121`). Be sure to create a **separate branch** for each improvement you implement. -4. Do your work on the **new branch - not the master branch.** Refer to our [code howtos](https://github.com/JabRef/jabref/wiki/Code-Howtos) if you have questions about your implementation. -5. Create a pull request. For an overview of pull requests, take a look at GitHub's [pull request help documentation](https://help.github.com/articles/about-pull-requests/). - -In case you have any questions, do not hesitate to write one of our [JabRef developers](https://github.com/orgs/JabRef/teams/developers) an email. We should also be online at [gitter](https://gitter.im/JabRef/jabref). +2. **Create a new branch** (such as `fix-for-issue-121`). Be sure to create a **separate branch** for each improvement you implement. +3. Do your work on the **new branch - not the master branch.** Refer to our [code howtos](https://github.com/JabRef/jabref/wiki/Code-Howtos) if you have questions about your implementation. +4. Create a pull request. For an overview of pull requests, take a look at GitHub's [pull request help documentation](https://help.github.com/articles/about-pull-requests/). +5. In case your pull request is not yet complete or not yet ready for review, consider creating a [draft pull request](https://github.blog/2019-02-14-introducing-draft-pull-requests/) instead. +In case you have any questions, do not hesitate to write one of our [JabRef developers](https://github.com/orgs/JabRef/teams/developers) an email. +We should also be online at [gitter](https://gitter.im/JabRef/jabref). ## Formal requirements for a pull request + The main goal of the formal requirements is to provide credit to you and to be able to understand the patch. ### Add your change to CHANGELOG.md + You should edit the [CHANGELOG.md](CHANGELOG.md) located in the root directory of the JabRef source. Add a line with your changes in the appropriate section. If you did internal refactorings or improvements not visible to the user (e.g., UI, .bib file), then you don't need to put an entry there. - #### Key format + Example: `Ctrl + Enter` In case you add keys to the changelog, please follow these rules: @@ -32,10 +39,10 @@ In case you add keys to the changelog, please follow these rules: - Combined keys separated by `+` - Spaces before and after separator `+` - ### Author credits -You will be given credit in the `AUTHORS` file in the root of the repository and the 'About' pages inside the main application. -We will periodically update the contributors list inside `AUTHORS`. + +You will be given credit in the [`AUTHORS`](AUTHORS) file in the root of the repository and the 'About' pages inside the main application. +We will periodically update the contributors list inside [`AUTHORS`](AUTHORS). This is done by an automatic shell script `scripts/generate-authors.sh`. If you want to add yourself directly with your pull request please run this script. @@ -48,20 +55,20 @@ The contribution information is tracked via the version control system. Your contribution is considered being made under [MIT license](https://tldrlegal.com/license/mit-license). - ### Write a good commit message + See [good commit message] or [commit guidelines section of Pro Git]. -The first line of your commit message is automatically taken as title for the pull-request. +The first line of your commit message is automatically taken as the title for the pull-request. All other lines make up the body of the pull request. Add the words `fixes #xxx` to your PR to auto-close the corresponding issue. - ### Test your code -We know that writing test cases causes a lot of time. -Nevertheless, we rely on our test cases to ensure that a bug fix or a feature implementation doesn't break anything. -In case you do not have time to add a test case, we nevertheless ask you to run `gradlew check` to ensure that your change doesn't break anything else. +We know that writing test cases takes a lot of time. +Nevertheless, we rely on our test cases to ensure that a bug fix or a feature implementation doesn't break anything. +In case you do not have time to add a test case, we nevertheless ask you to at least run `gradlew check` to ensure that your change doesn't break anything else. ### When adding a library + Please try to use a version available at jCenter and add it to `build.gradle`. In any case, describe the library at [external-libraries.txt](external-libraries.txt). We need that information for our package maintainers (e.g., those of the [debian package](https://tracker.debian.org/pkg/jabref)). @@ -69,8 +76,8 @@ Also add a txt file stating the license in `libraries/`. It is used at `gradlew processResources` to generate the About.html files. You can see the result in `build\resources\main\help\en\About.html` or when clicking Help -> About. - ### When making an architectural decision + In case you add a library or do major code rewrites, we ask you to document your decision. Recommended reading: . @@ -78,7 +85,7 @@ We simply ask to create a new markdown file in `docs/adr` following the template In case you want to directly add a comment to a class, simply use following template (based on [sustainable architectural decisions](https://www.infoq.com/articles/sustainable-architectural-design-decisions)): -``` +```text In the context of , facing we decided for