mirror of
https://github.com/cryptomator/cryptomator.git
synced 2026-09-22 07:54:19 +00:00
Compare commits
18
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4cfaefe3f7 | ||
|
|
af99135172 | ||
|
|
a02224640b | ||
|
|
04fe64b9e0 | ||
|
|
44434aa404 | ||
|
|
35ac351541 | ||
|
|
1eb70aeea7 | ||
|
|
abcbefdd2c | ||
|
|
7af6c79b80 | ||
|
|
193aa1887d | ||
|
|
0ce6008576 | ||
|
|
0bf3e0a071 | ||
|
|
3d82e9a97f | ||
|
|
bdab18b7c3 | ||
|
|
688d1a4a24 | ||
|
|
56e655c5a9 | ||
|
|
4c9dbb60fe | ||
|
|
7ddedea5c2 |
@@ -75,9 +75,9 @@ jobs:
|
|||||||
openjfx-sha: 'e3fd682354346845d2944a2da2b1ff2b6cb9259d92027f2f9c121b9b93c5e42f'
|
openjfx-sha: 'e3fd682354346845d2944a2da2b1ff2b6cb9259d92027f2f9c121b9b93c5e42f'
|
||||||
appimagetool-sha: 'f0837e7448a0c1e4e650a93bb3e85802546e60654ef287576f46c71c126a9158'
|
appimagetool-sha: 'f0837e7448a0c1e4e650a93bb3e85802546e60654ef287576f46c71c126a9158'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
- name: Setup Java
|
- name: Setup Java
|
||||||
uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
|
uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0
|
||||||
with:
|
with:
|
||||||
distribution: ${{ env.JAVA_DIST }}
|
distribution: ${{ env.JAVA_DIST }}
|
||||||
java-version: ${{ env.JAVA_VERSION }}
|
java-version: ${{ env.JAVA_VERSION }}
|
||||||
@@ -220,7 +220,7 @@ jobs:
|
|||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
- name: Publish AppImage on GitHub Releases
|
- name: Publish AppImage on GitHub Releases
|
||||||
if: inputs.upload-to-draft
|
if: inputs.upload-to-draft
|
||||||
uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1
|
uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
|
||||||
with:
|
with:
|
||||||
draft: true
|
draft: true
|
||||||
fail_on_unmatched_files: true
|
fail_on_unmatched_files: true
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ jobs:
|
|||||||
pacman-key --populate archlinux
|
pacman-key --populate archlinux
|
||||||
pacman -Syu --noconfirm --needed git base-devel sudo gnupg maven unzip github-cli curl pacman-contrib
|
pacman -Syu --noconfirm --needed git base-devel sudo gnupg maven unzip github-cli curl pacman-contrib
|
||||||
- name: Checkout cryptomator/aur-bin
|
- name: Checkout cryptomator/aur-bin
|
||||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
with:
|
with:
|
||||||
repository: 'cryptomator/aur-bin'
|
repository: 'cryptomator/aur-bin'
|
||||||
token: ${{ secrets.CRYPTOBOT_PR_TOKEN }}
|
token: ${{ secrets.CRYPTOBOT_PR_TOKEN }}
|
||||||
|
|||||||
@@ -78,7 +78,7 @@ jobs:
|
|||||||
local-dir: ./upload/
|
local-dir: ./upload/
|
||||||
allowlist-avast:
|
allowlist-avast:
|
||||||
name: Anti Virus Allowlisting Avast
|
name: Anti Virus Allowlisting Avast
|
||||||
runs-on: ubuntu
|
runs-on: ubuntu-latest
|
||||||
needs: download-file
|
needs: download-file
|
||||||
if: inputs.avast
|
if: inputs.avast
|
||||||
steps:
|
steps:
|
||||||
|
|||||||
@@ -22,14 +22,14 @@ jobs:
|
|||||||
name: Compile and Test
|
name: Compile and Test
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
- uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
|
- uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0
|
||||||
with:
|
with:
|
||||||
distribution: ${{ env.JAVA_DIST }}
|
distribution: ${{ env.JAVA_DIST }}
|
||||||
java-version: ${{ env.JAVA_VERSION }}
|
java-version: ${{ env.JAVA_VERSION }}
|
||||||
cache: 'maven'
|
cache: 'maven'
|
||||||
- name: Cache SonarCloud packages
|
- name: Cache SonarCloud packages
|
||||||
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
|
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
|
||||||
with:
|
with:
|
||||||
path: ~/.sonar/cache
|
path: ~/.sonar/cache
|
||||||
key: ${{ runner.os }}-sonar
|
key: ${{ runner.os }}-sonar
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ jobs:
|
|||||||
run: echo 'JDK_MAJOR_VERSION=${{ env.JDK_VERSION }}'.substring(0,2) >> "$env:GITHUB_ENV"
|
run: echo 'JDK_MAJOR_VERSION=${{ env.JDK_VERSION }}'.substring(0,2) >> "$env:GITHUB_ENV"
|
||||||
shell: pwsh
|
shell: pwsh
|
||||||
- name: Checkout latest JDK ${{ env.JDK_MAJOR_VERSION }}
|
- name: Checkout latest JDK ${{ env.JDK_MAJOR_VERSION }}
|
||||||
uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
|
uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0
|
||||||
with:
|
with:
|
||||||
java-version: ${{ env.JDK_MAJOR_VERSION}}
|
java-version: ${{ env.JDK_MAJOR_VERSION}}
|
||||||
distribution: ${{ env.JDK_VENDOR }}
|
distribution: ${{ env.JDK_VENDOR }}
|
||||||
|
|||||||
@@ -45,7 +45,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
INPUT_PPAVER: ${{ inputs.ppaver }}
|
INPUT_PPAVER: ${{ inputs.ppaver }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
- id: deb-version
|
- id: deb-version
|
||||||
name: Determine deb-version
|
name: Determine deb-version
|
||||||
run: |
|
run: |
|
||||||
@@ -63,7 +63,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
DEB_BUILD_DEPENDS: ${{ env.DEB_BUILD_DEPENDS }}
|
DEB_BUILD_DEPENDS: ${{ env.DEB_BUILD_DEPENDS }}
|
||||||
- name: Setup Java
|
- name: Setup Java
|
||||||
uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
|
uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0
|
||||||
with:
|
with:
|
||||||
distribution: ${{ env.JAVA_DIST }}
|
distribution: ${{ env.JAVA_DIST }}
|
||||||
java-version: ${{ env.JAVA_VERSION }}
|
java-version: ${{ env.JAVA_VERSION }}
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ jobs:
|
|||||||
INTERVAL: 900
|
INTERVAL: 900
|
||||||
JSON_DATA: ${{ steps.get-stats.outputs.result }}
|
JSON_DATA: ${{ steps.get-stats.outputs.result }}
|
||||||
- name: Upload Results
|
- name: Upload Results
|
||||||
uses: fjogeleit/http-request-action@551353b829c3646756b2ec2b3694f819d7957495 # v2.0.0
|
uses: fjogeleit/http-request-action@f98bb26551cd1af7d3eb2674578a80754ece88db # v2.0.1
|
||||||
with:
|
with:
|
||||||
url: 'https://graphite-us-central1.grafana.net/metrics'
|
url: 'https://graphite-us-central1.grafana.net/metrics'
|
||||||
method: 'POST'
|
method: 'POST'
|
||||||
|
|||||||
@@ -25,14 +25,14 @@ jobs:
|
|||||||
needs: get-version
|
needs: get-version
|
||||||
if: needs.get-version.outputs.versionType != 'unknown'
|
if: needs.get-version.outputs.versionType != 'unknown'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Check the git tag is signed
|
- name: Check the git tag is signed
|
||||||
run: git cat-file -p "${GITHUB_REF_NAME}" | grep "BEGIN SSH SIGNATURE"
|
run: git cat-file -p "${GITHUB_REF_NAME}" | grep "BEGIN SSH SIGNATURE"
|
||||||
- name: Check the git tag is on release or main branch
|
- name: Check the git tag is on release or main branch
|
||||||
run: git branch -r --contains "${GITHUB_REF_NAME}" | grep -E '^\s*origin/(main|release/.*)\s*$'
|
run: git branch -r --contains "${GITHUB_REF_NAME}" | grep -E '^\s*origin/(main|release/.*)\s*$'
|
||||||
- uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
|
- uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0
|
||||||
with:
|
with:
|
||||||
distribution: ${{ env.JAVA_DIST }}
|
distribution: ${{ env.JAVA_DIST }}
|
||||||
java-version: ${{ env.JAVA_VERSION }}
|
java-version: ${{ env.JAVA_VERSION }}
|
||||||
@@ -42,7 +42,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
|
||||||
- name: Draft a release
|
- name: Draft a release
|
||||||
uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1
|
uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
|
||||||
with:
|
with:
|
||||||
draft: true
|
draft: true
|
||||||
discussion_category_name: releases
|
discussion_category_name: releases
|
||||||
@@ -60,7 +60,7 @@ jobs:
|
|||||||
GPG_PRIVATE_KEY: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }}
|
GPG_PRIVATE_KEY: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }}
|
||||||
GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }}
|
GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }}
|
||||||
- name: Publish asc on GitHub Releases
|
- name: Publish asc on GitHub Releases
|
||||||
uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1
|
uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
|
||||||
with:
|
with:
|
||||||
draft: true
|
draft: true
|
||||||
fail_on_unmatched_files: true
|
fail_on_unmatched_files: true
|
||||||
@@ -112,7 +112,7 @@ jobs:
|
|||||||
SEMVER: ${{ needs.get-version.outputs.semVerStr }}
|
SEMVER: ${{ needs.get-version.outputs.semVerStr }}
|
||||||
GH_TOKEN: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}
|
GH_TOKEN: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
- name: Compute source tarball SHA256
|
- name: Compute source tarball SHA256
|
||||||
id: src-sha256
|
id: src-sha256
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@@ -39,11 +39,11 @@ jobs:
|
|||||||
revNum: ${{ steps.versions.outputs.revNum }}
|
revNum: ${{ steps.versions.outputs.revNum }}
|
||||||
type: ${{ steps.versions.outputs.type}}
|
type: ${{ steps.versions.outputs.type}}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
with:
|
with:
|
||||||
fetch-depth: 0
|
fetch-depth: 0
|
||||||
- name: Setup Java
|
- name: Setup Java
|
||||||
uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
|
uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0
|
||||||
with:
|
with:
|
||||||
distribution: ${{ env.JAVA_DIST }}
|
distribution: ${{ env.JAVA_DIST }}
|
||||||
java-version: ${{ env.JAVA_VERSION }}
|
java-version: ${{ env.JAVA_VERSION }}
|
||||||
|
|||||||
@@ -49,16 +49,16 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
SRC_GIT_SHA: ${{ inputs.src-tag || github.sha}}
|
SRC_GIT_SHA: ${{ inputs.src-tag || github.sha}}
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
with:
|
with:
|
||||||
repository: flathub/org.cryptomator.Cryptomator
|
repository: flathub/org.cryptomator.Cryptomator
|
||||||
submodules: true
|
submodules: true
|
||||||
- name: Checkout build script
|
- name: Checkout build script
|
||||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
with:
|
with:
|
||||||
path: build-scripts
|
path: build-scripts
|
||||||
- name: Checkout app source
|
- name: Checkout app source
|
||||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
with:
|
with:
|
||||||
path: cryptomator
|
path: cryptomator
|
||||||
ref: ${{ env.SRC_GIT_SHA }}
|
ref: ${{ env.SRC_GIT_SHA }}
|
||||||
@@ -176,7 +176,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
env:
|
env:
|
||||||
SRC_TAG: ${{ inputs.src-tag }}
|
SRC_TAG: ${{ inputs.src-tag }}
|
||||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
with:
|
with:
|
||||||
repository: flathub/org.cryptomator.Cryptomator
|
repository: flathub/org.cryptomator.Cryptomator
|
||||||
submodules: true #TODO: Update submodule!
|
submodules: true #TODO: Update submodule!
|
||||||
@@ -184,7 +184,7 @@ jobs:
|
|||||||
- name: Checkout release branch
|
- name: Checkout release branch
|
||||||
run: |
|
run: |
|
||||||
git checkout -b release/${{ needs.get-version.outputs.semVerStr }}
|
git checkout -b release/${{ needs.get-version.outputs.semVerStr }}
|
||||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
with:
|
with:
|
||||||
path: cryptomator
|
path: cryptomator
|
||||||
- name: Download source tarball and compute checksum
|
- name: Download source tarball and compute checksum
|
||||||
|
|||||||
@@ -44,7 +44,7 @@ jobs:
|
|||||||
pacman-key --init
|
pacman-key --init
|
||||||
pacman-key --populate archlinux
|
pacman-key --populate archlinux
|
||||||
pacman -Syu --noconfirm --needed git base-devel sudo gnupg maven unzip
|
pacman -Syu --noconfirm --needed git base-devel sudo gnupg maven unzip
|
||||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
with:
|
with:
|
||||||
path: cryptomator
|
path: cryptomator
|
||||||
- name: Create build user
|
- name: Create build user
|
||||||
@@ -108,7 +108,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
TAG: ${{ needs.get-version.outputs.semVerStr || github.event.release.tag_name }}
|
TAG: ${{ needs.get-version.outputs.semVerStr || github.event.release.tag_name }}
|
||||||
- name: Checkout cryptomator/aur repo
|
- name: Checkout cryptomator/aur repo
|
||||||
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
with:
|
with:
|
||||||
repository: 'cryptomator/aur'
|
repository: 'cryptomator/aur'
|
||||||
token: ${{ secrets.CRYPTOBOT_PR_TOKEN }}
|
token: ${{ secrets.CRYPTOBOT_PR_TOKEN }}
|
||||||
|
|||||||
@@ -79,9 +79,9 @@ jobs:
|
|||||||
openjfx-url: 'https://download2.gluonhq.com/openjfx/25.0.3/openjfx-25.0.3_osx-x64_bin-jmods.zip'
|
openjfx-url: 'https://download2.gluonhq.com/openjfx/25.0.3/openjfx-25.0.3_osx-x64_bin-jmods.zip'
|
||||||
openjfx-sha: '3512fabe43aee467538d329cfbbaab3c53dff2a810f0d54e381f461d5e0fac43'
|
openjfx-sha: '3512fabe43aee467538d329cfbbaab3c53dff2a810f0d54e381f461d5e0fac43'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
- name: Setup Java
|
- name: Setup Java
|
||||||
uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
|
uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0
|
||||||
with:
|
with:
|
||||||
distribution: ${{ env.JAVA_DIST }}
|
distribution: ${{ env.JAVA_DIST }}
|
||||||
java-version: ${{ env.JAVA_VERSION }}
|
java-version: ${{ env.JAVA_VERSION }}
|
||||||
@@ -312,7 +312,7 @@ jobs:
|
|||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
- name: Publish dmg on GitHub Releases
|
- name: Publish dmg on GitHub Releases
|
||||||
if: inputs.upload-to-draft
|
if: inputs.upload-to-draft
|
||||||
uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1
|
uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
|
||||||
with:
|
with:
|
||||||
draft: true
|
draft: true
|
||||||
fail_on_unmatched_files: true
|
fail_on_unmatched_files: true
|
||||||
|
|||||||
@@ -77,9 +77,9 @@ jobs:
|
|||||||
openjfx-url: 'https://download2.gluonhq.com/openjfx/25.0.3/openjfx-25.0.3_osx-aarch64_bin-jmods.zip'
|
openjfx-url: 'https://download2.gluonhq.com/openjfx/25.0.3/openjfx-25.0.3_osx-aarch64_bin-jmods.zip'
|
||||||
openjfx-sha: 'a52014d625b8b04e57fd71650f881c1397542b4018e1b04f1b4e66c8800a1f34'
|
openjfx-sha: 'a52014d625b8b04e57fd71650f881c1397542b4018e1b04f1b4e66c8800a1f34'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
- name: Setup Java
|
- name: Setup Java
|
||||||
uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
|
uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0
|
||||||
with:
|
with:
|
||||||
distribution: ${{ env.JAVA_DIST }}
|
distribution: ${{ env.JAVA_DIST }}
|
||||||
java-version: ${{ env.JAVA_VERSION }}
|
java-version: ${{ env.JAVA_VERSION }}
|
||||||
@@ -311,7 +311,7 @@ jobs:
|
|||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
- name: Publish dmg on GitHub Releases
|
- name: Publish dmg on GitHub Releases
|
||||||
if: inputs.upload-to-draft
|
if: inputs.upload-to-draft
|
||||||
uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1
|
uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
|
||||||
with:
|
with:
|
||||||
draft: true
|
draft: true
|
||||||
fail_on_unmatched_files: true
|
fail_on_unmatched_files: true
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ jobs:
|
|||||||
issues: write
|
issues: write
|
||||||
pull-requests: write
|
pull-requests: write
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/stale@eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899 # v10.3.0
|
- uses: actions/stale@4391f3da665fdf50b6810c1a66712fb9ba21aa93 # v11.0.0
|
||||||
with:
|
with:
|
||||||
days-before-stale: 14
|
days-before-stale: 14
|
||||||
days-before-close: 0
|
days-before-close: 0
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ on:
|
|||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
notify:
|
notify:
|
||||||
runs-on: ubuntu
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Notify about DEB build
|
- name: Notify about DEB build
|
||||||
uses: rtCamp/action-slack-notify@33ca3be66c6f378fe1610fd1d5258632dbed5e58 # v2.4.0
|
uses: rtCamp/action-slack-notify@33ca3be66c6f378fe1610fd1d5258632dbed5e58 # v2.4.0
|
||||||
@@ -102,7 +102,7 @@ jobs:
|
|||||||
name: Notify for winget-release
|
name: Notify for winget-release
|
||||||
if: needs.get-asset-urls.outputs.is-windows-release == 'true' && needs.check-release.outputs.release-kind == 'stable'
|
if: needs.get-asset-urls.outputs.is-windows-release == 'true' && needs.check-release.outputs.release-kind == 'stable'
|
||||||
needs: [check-release, get-asset-urls]
|
needs: [check-release, get-asset-urls]
|
||||||
runs-on: ubuntu
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Slack Notification
|
- name: Slack Notification
|
||||||
uses: rtCamp/action-slack-notify@33ca3be66c6f378fe1610fd1d5258632dbed5e58 # v2.4.0
|
uses: rtCamp/action-slack-notify@33ca3be66c6f378fe1610fd1d5258632dbed5e58 # v2.4.0
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ jobs:
|
|||||||
name: Compile and Test
|
name: Compile and Test
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
- uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
|
- uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0
|
||||||
with:
|
with:
|
||||||
distribution: ${{ env.JAVA_DIST }}
|
distribution: ${{ env.JAVA_DIST }}
|
||||||
java-version: ${{ env.JAVA_VERSION }}
|
java-version: ${{ env.JAVA_VERSION }}
|
||||||
|
|||||||
@@ -19,9 +19,9 @@ jobs:
|
|||||||
name: Validate commits pushed to release/hotfix branch to fulfill release requirements
|
name: Validate commits pushed to release/hotfix branch to fulfill release requirements
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
- name: Setup Java
|
- name: Setup Java
|
||||||
uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
|
uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0
|
||||||
with:
|
with:
|
||||||
distribution: ${{ env.JAVA_DIST }}
|
distribution: ${{ env.JAVA_DIST }}
|
||||||
java-version: ${{ env.JAVA_VERSION }}
|
java-version: ${{ env.JAVA_VERSION }}
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ jobs:
|
|||||||
issues: write
|
issues: write
|
||||||
pull-requests: write
|
pull-requests: write
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/stale@eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899 # v10.3.0
|
- uses: actions/stale@4391f3da665fdf50b6810c1a66712fb9ba21aa93 # v11.0.0
|
||||||
with:
|
with:
|
||||||
days-before-stale: 365
|
days-before-stale: 365
|
||||||
days-before-close: 90
|
days-before-close: 90
|
||||||
|
|||||||
@@ -86,9 +86,9 @@ jobs:
|
|||||||
java-version: '26.0.1+8'
|
java-version: '26.0.1+8'
|
||||||
java-package: 'jdk'
|
java-package: 'jdk'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
- name: Setup Java
|
- name: Setup Java
|
||||||
uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
|
uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0
|
||||||
with:
|
with:
|
||||||
distribution: ${{ matrix.java-dist }}
|
distribution: ${{ matrix.java-dist }}
|
||||||
java-version: ${{ matrix.java-version }}
|
java-version: ${{ matrix.java-version }}
|
||||||
@@ -352,7 +352,7 @@ jobs:
|
|||||||
java-version: '26.0.1+8'
|
java-version: '26.0.1+8'
|
||||||
java-package: 'jdk'
|
java-package: 'jdk'
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
|
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
|
||||||
- name: Install wix and extensions
|
- name: Install wix and extensions
|
||||||
run: |
|
run: |
|
||||||
dotnet tool install --global wix --version ${WIX_VERSION}
|
dotnet tool install --global wix --version ${WIX_VERSION}
|
||||||
@@ -368,7 +368,7 @@ jobs:
|
|||||||
- name: Strip version info from msi file name
|
- name: Strip version info from msi file name
|
||||||
run: mv dist/win/bundle/resources/Cryptomator*.msi dist/win/bundle/resources/Cryptomator.msi
|
run: mv dist/win/bundle/resources/Cryptomator*.msi dist/win/bundle/resources/Cryptomator.msi
|
||||||
- name: Setup Java
|
- name: Setup Java
|
||||||
uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
|
uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0
|
||||||
with:
|
with:
|
||||||
distribution: ${{ matrix.java-dist }}
|
distribution: ${{ matrix.java-dist }}
|
||||||
java-version: ${{ matrix.java-version }}
|
java-version: ${{ matrix.java-version }}
|
||||||
@@ -481,7 +481,7 @@ jobs:
|
|||||||
merge-multiple: true
|
merge-multiple: true
|
||||||
- name: Publish installers on GitHub Releases
|
- name: Publish installers on GitHub Releases
|
||||||
id: publish
|
id: publish
|
||||||
uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1
|
uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
|
||||||
with:
|
with:
|
||||||
draft: true
|
draft: true
|
||||||
fail_on_unmatched_files: true
|
fail_on_unmatched_files: true
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
GH_TOKEN: ${{ secrets.CRYPTOBOT_PR_TOKEN }}
|
GH_TOKEN: ${{ secrets.CRYPTOBOT_PR_TOKEN }}
|
||||||
- name: Submit package
|
- name: Submit package
|
||||||
uses: vedantmgoyal2009/winget-releaser@7bd472be23763def6e16bd06cc8b1cdfab0e2fd5 # no_specific_version
|
uses: vedantmgoyal2009/winget-releaser@b3a5dae0047c6180023acba3f548c55fdf6b7193 # no_specific_version
|
||||||
with:
|
with:
|
||||||
identifier: Cryptomator.Cryptomator
|
identifier: Cryptomator.Cryptomator
|
||||||
version: ${{ inputs.tag }}
|
version: ${{ inputs.tag }}
|
||||||
|
|||||||
@@ -8,6 +8,11 @@ The changelog starts with version 1.19.0.
|
|||||||
Changes to prior versions can be found on the [Github release page](https://github.com/cryptomator/cryptomator/releases).
|
Changes to prior versions can be found on the [Github release page](https://github.com/cryptomator/cryptomator/releases).
|
||||||
|
|
||||||
|
|
||||||
|
## [Unreleased](https://github.com/cryptomator/cryptomator/compare/1.19.3...HEAD)
|
||||||
|
### Changed
|
||||||
|
* Updated Jackson to 2.21.6
|
||||||
|
|
||||||
|
|
||||||
## [1.19.3](https://github.com/cryptomator/cryptomator/releases/1.19.3) - 2026-06-29
|
## [1.19.3](https://github.com/cryptomator/cryptomator/releases/1.19.3) - 2026-06-29
|
||||||
### Added
|
### Added
|
||||||
* New error dialog if importing a vault fails ([#4243](https://github.com/cryptomator/cryptomator/pull/4243))
|
* New error dialog if importing a vault fails ([#4243](https://github.com/cryptomator/cryptomator/pull/4243))
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ Become our Gold Sponsor and showcase your brand to a targeted audience! Please c
|
|||||||
<tr>
|
<tr>
|
||||||
<td><a href="https://www.gee-whiz.de/"><img src="https://cryptomator.org/img/sponsors/geewhiz.svg" alt="gee-whiz" height="56"></a></td>
|
<td><a href="https://www.gee-whiz.de/"><img src="https://cryptomator.org/img/sponsors/geewhiz.svg" alt="gee-whiz" height="56"></a></td>
|
||||||
<td><a href="https://www.route4me.com/"><img src="https://cryptomator.org/img/sponsors/route4me.svg" alt="Route4Me" height="56"></a></td>
|
<td><a href="https://www.route4me.com/"><img src="https://cryptomator.org/img/sponsors/route4me.svg" alt="Route4Me" height="56"></a></td>
|
||||||
|
<td><a href="https://www.apivoid.com/"><img src="https://cryptomator.org/img/sponsors/apivoid.svg" alt="ApiVoid" height="56"></a></td>
|
||||||
</tr>
|
</tr>
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
@@ -78,7 +79,7 @@ For more information on the security details visit [cryptomator.org](https://doc
|
|||||||
|
|
||||||
### Dependencies
|
### Dependencies
|
||||||
|
|
||||||
* JDK 25 (e.g. temurin, zulu)
|
* JDK 26 (e.g. temurin, zulu)
|
||||||
|
|
||||||
### Run Maven
|
### Run Maven
|
||||||
|
|
||||||
|
|||||||
Vendored
+4
-9
@@ -40,11 +40,6 @@ if ((Get-Command "git" -ErrorAction SilentlyContinue) -eq $null)
|
|||||||
Write-Error "Unable to find git.exe in your PATH (try: choco install git)"
|
Write-Error "Unable to find git.exe in your PATH (try: choco install git)"
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
if ((Get-Command "mvn" -ErrorAction SilentlyContinue) -eq $null)
|
|
||||||
{
|
|
||||||
Write-Error "Unable to find mvn.cmd in your PATH (try: choco install maven)"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
if ((Get-Command 'wix' -ErrorAction SilentlyContinue) -eq $null)
|
if ((Get-Command 'wix' -ErrorAction SilentlyContinue) -eq $null)
|
||||||
{
|
{
|
||||||
Write-Error 'Unable to find wix in your PATH (try: dotnet tool install --global wix --version 6.0.2)'
|
Write-Error 'Unable to find wix in your PATH (try: dotnet tool install --global wix --version 6.0.2)'
|
||||||
@@ -65,7 +60,7 @@ if ($wixExtensions -notmatch 'WixToolset.BootstrapperApplications.wixext') {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$buildDir = Split-Path -Parent $PSCommandPath
|
$buildDir = Split-Path -Parent $PSCommandPath
|
||||||
$version = $(mvn -f $buildDir/../../pom.xml help:evaluate -Dexpression="project.version" -q -DforceStdout)
|
$version = $(../../mvnw.cmd -f $buildDir/../../pom.xml help:evaluate -Dexpression="project.version" -q -DforceStdout)
|
||||||
$semVerNo = $version -replace '(\d+\.\d+\.\d+).*','$1'
|
$semVerNo = $version -replace '(\d+\.\d+\.\d+).*','$1'
|
||||||
$revisionNo = $(git rev-list --count HEAD)
|
$revisionNo = $(git rev-list --count HEAD)
|
||||||
|
|
||||||
@@ -79,7 +74,7 @@ $copyright = "(C) $CopyrightStartYear - $((Get-Date).Year) $Vendor"
|
|||||||
|
|
||||||
# compile
|
# compile
|
||||||
Invoke-CommandWithExitCheck -Command `
|
Invoke-CommandWithExitCheck -Command `
|
||||||
"mvn" -Arguments @("-B", "-f", "$buildDir/../../pom.xml", "clean", "package", "-DskipTests", "-Pwin")
|
"../../mvnw.cmd" -Arguments @("-B", "-f", "$buildDir/../../pom.xml", "clean", "package", "-DskipTests", "-Pwin")
|
||||||
Copy-Item "$buildDir\..\..\target\$MainJarGlob.jar" -Destination "$buildDir\..\..\target\mods"
|
Copy-Item "$buildDir\..\..\target\$MainJarGlob.jar" -Destination "$buildDir\..\..\target\mods"
|
||||||
|
|
||||||
# add runtime
|
# add runtime
|
||||||
@@ -212,7 +207,7 @@ if ($LASTEXITCODE -ne 0) {
|
|||||||
|
|
||||||
#Create RTF license for msi
|
#Create RTF license for msi
|
||||||
Invoke-CommandWithExitCheck -Command `
|
Invoke-CommandWithExitCheck -Command `
|
||||||
"mvn" -Arguments @("-B", "-f", "$buildDir/../../pom.xml", "license:add-third-party", `
|
"../../mvnw.cmd" -Arguments @("-B", "-f", "$buildDir/../../pom.xml", "license:add-third-party", `
|
||||||
"-Dlicense.thirdPartyFilename=license.rtf", `
|
"-Dlicense.thirdPartyFilename=license.rtf", `
|
||||||
"-Dlicense.fileTemplate=$buildDir\resources\licenseTemplate.ftl", `
|
"-Dlicense.fileTemplate=$buildDir\resources\licenseTemplate.ftl", `
|
||||||
"-Dlicense.outputDirectory=$buildDir\resources\", `
|
"-Dlicense.outputDirectory=$buildDir\resources\", `
|
||||||
@@ -259,7 +254,7 @@ Invoke-CommandWithExitCheck -Command `
|
|||||||
|
|
||||||
#Create RTF license for bundle
|
#Create RTF license for bundle
|
||||||
Invoke-CommandWithExitCheck -Command `
|
Invoke-CommandWithExitCheck -Command `
|
||||||
"mvn" -Arguments @("-B", "-f", "$buildDir/../../pom.xml", "license:add-third-party", `
|
"../../mvnw.cmd" -Arguments @("-B", "-f", "$buildDir/../../pom.xml", "license:add-third-party", `
|
||||||
"-Dlicense.thirdPartyFilename=license.rtf", `
|
"-Dlicense.thirdPartyFilename=license.rtf", `
|
||||||
"-Dlicense.fileTemplate=$buildDir\bundle\resources\licenseTemplate.ftl", `
|
"-Dlicense.fileTemplate=$buildDir\bundle\resources\licenseTemplate.ftl", `
|
||||||
"-Dlicense.outputDirectory=$buildDir\bundle\resources\", `
|
"-Dlicense.outputDirectory=$buildDir\bundle\resources\", `
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>org.cryptomator</groupId>
|
<groupId>org.cryptomator</groupId>
|
||||||
<artifactId>cryptomator</artifactId>
|
<artifactId>cryptomator</artifactId>
|
||||||
<version>1.19.3</version>
|
<version>1.20.0-SNAPSHOT</version>
|
||||||
<name>Cryptomator Desktop App</name>
|
<name>Cryptomator Desktop App</name>
|
||||||
|
|
||||||
<organization>
|
<organization>
|
||||||
@@ -38,7 +38,7 @@
|
|||||||
<cryptomator.integrations.version>1.9.0</cryptomator.integrations.version>
|
<cryptomator.integrations.version>1.9.0</cryptomator.integrations.version>
|
||||||
<cryptomator.integrations.win.version>1.6.1</cryptomator.integrations.win.version>
|
<cryptomator.integrations.win.version>1.6.1</cryptomator.integrations.win.version>
|
||||||
<cryptomator.integrations.mac.version>1.5.0</cryptomator.integrations.mac.version>
|
<cryptomator.integrations.mac.version>1.5.0</cryptomator.integrations.mac.version>
|
||||||
<cryptomator.integrations.linux.version>1.7.0</cryptomator.integrations.linux.version>
|
<cryptomator.integrations.linux.version>1.8.0-beta1</cryptomator.integrations.linux.version>
|
||||||
<cryptomator.fuse.version>6.0.1</cryptomator.fuse.version>
|
<cryptomator.fuse.version>6.0.1</cryptomator.fuse.version>
|
||||||
<cryptomator.webdav.version>3.0.2</cryptomator.webdav.version>
|
<cryptomator.webdav.version>3.0.2</cryptomator.webdav.version>
|
||||||
<cryptomator.webdav-servlet.version>1.2.12</cryptomator.webdav-servlet.version>
|
<cryptomator.webdav-servlet.version>1.2.12</cryptomator.webdav-servlet.version>
|
||||||
@@ -48,7 +48,7 @@
|
|||||||
<commons-lang3.version>3.20.0</commons-lang3.version>
|
<commons-lang3.version>3.20.0</commons-lang3.version>
|
||||||
<dagger.version>2.59.2</dagger.version>
|
<dagger.version>2.59.2</dagger.version>
|
||||||
<easybind.version>2.2</easybind.version>
|
<easybind.version>2.2</easybind.version>
|
||||||
<jackson.version>2.21.4</jackson.version>
|
<jackson.version>2.21.6</jackson.version>
|
||||||
<javafx.version>25.0.3</javafx.version>
|
<javafx.version>25.0.3</javafx.version>
|
||||||
<jwt.version>4.5.2</jwt.version>
|
<jwt.version>4.5.2</jwt.version>
|
||||||
<nimbus-jose.version>10.5</nimbus-jose.version>
|
<nimbus-jose.version>10.5</nimbus-jose.version>
|
||||||
@@ -299,6 +299,10 @@
|
|||||||
<groupId>org.apache.maven.plugins</groupId>
|
<groupId>org.apache.maven.plugins</groupId>
|
||||||
<artifactId>maven-surefire-plugin</artifactId>
|
<artifactId>maven-surefire-plugin</artifactId>
|
||||||
<version>${mvn-surefire.version}</version>
|
<version>${mvn-surefire.version}</version>
|
||||||
|
<configuration>
|
||||||
|
<!--suppress MavenModelInspection -->
|
||||||
|
<argLine>@{argLine} -javaagent:${org.mockito:mockito-core:jar}</argLine>
|
||||||
|
</configuration>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
<groupId>org.codehaus.mojo</groupId>
|
<groupId>org.codehaus.mojo</groupId>
|
||||||
@@ -399,6 +403,12 @@
|
|||||||
<includeGroupIds>${nonModularGroupIds}</includeGroupIds>
|
<includeGroupIds>${nonModularGroupIds}</includeGroupIds>
|
||||||
</configuration>
|
</configuration>
|
||||||
</execution>
|
</execution>
|
||||||
|
<execution>
|
||||||
|
<id>get-mockito-agent-path</id>
|
||||||
|
<goals>
|
||||||
|
<goal>properties</goal>
|
||||||
|
</goals>
|
||||||
|
</execution>
|
||||||
</executions>
|
</executions>
|
||||||
</plugin>
|
</plugin>
|
||||||
<plugin>
|
<plugin>
|
||||||
|
|||||||
@@ -8,7 +8,6 @@ import org.slf4j.LoggerFactory;
|
|||||||
|
|
||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@@ -166,7 +165,7 @@ public class Environment {
|
|||||||
|
|
||||||
private Optional<Path> getPath(String propertyName) {
|
private Optional<Path> getPath(String propertyName) {
|
||||||
String value = System.getProperty(propertyName);
|
String value = System.getProperty(propertyName);
|
||||||
return Optional.ofNullable(value).map(Paths::get);
|
return Optional.ofNullable(value).map(Path::of);
|
||||||
}
|
}
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ public class ErrorCode {
|
|||||||
public static ErrorCode of(Throwable throwable) {
|
public static ErrorCode of(Throwable throwable) {
|
||||||
var causalChain = Throwables.getCausalChain(throwable);
|
var causalChain = Throwables.getCausalChain(throwable);
|
||||||
if (causalChain.size() > 1) {
|
if (causalChain.size() > 1) {
|
||||||
var rootCause = causalChain.get(causalChain.size() - 1);
|
var rootCause = causalChain.getLast();
|
||||||
var parentOfRootCause = causalChain.get(causalChain.size() - 2);
|
var parentOfRootCause = causalChain.get(causalChain.size() - 2);
|
||||||
var rootSpecificFrames = countTopmostFrames(rootCause.getStackTrace(), parentOfRootCause.getStackTrace());
|
var rootSpecificFrames = countTopmostFrames(rootCause.getStackTrace(), parentOfRootCause.getStackTrace());
|
||||||
return new ErrorCode(throwable, rootCause, rootSpecificFrames);
|
return new ErrorCode(throwable, rootCause, rootSpecificFrames);
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ public class SubstitutingProperties extends PropertiesDecorator {
|
|||||||
|
|
||||||
private enum Source {
|
private enum Source {
|
||||||
ENV,
|
ENV,
|
||||||
PROPS;
|
PROPS
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+2
-2
@@ -8,9 +8,9 @@ import org.slf4j.LoggerFactory;
|
|||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
import java.time.Duration;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import java.util.concurrent.TimeoutException;
|
import java.util.concurrent.TimeoutException;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -78,7 +78,7 @@ public final class OneDriveWindowsLocationPresetsProvider implements LocationPre
|
|||||||
*/
|
*/
|
||||||
@Blocking
|
@Blocking
|
||||||
private static void waitForSuccess(Process process, int timeoutSeconds, String cmdDescription) throws TimeoutException, InterruptedException, CommandFailedException {
|
private static void waitForSuccess(Process process, int timeoutSeconds, String cmdDescription) throws TimeoutException, InterruptedException, CommandFailedException {
|
||||||
boolean exited = process.waitFor(timeoutSeconds, TimeUnit.SECONDS);
|
boolean exited = process.waitFor(Duration.ofSeconds(timeoutSeconds));
|
||||||
if (!exited) {
|
if (!exited) {
|
||||||
throw new TimeoutException(cmdDescription + " timed out after " + timeoutSeconds + "s");
|
throw new TimeoutException(cmdDescription + " timed out after " + timeoutSeconds + "s");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ public final class MountWithinParentUtil {
|
|||||||
|
|
||||||
EMPTY_DIR,
|
EMPTY_DIR,
|
||||||
|
|
||||||
BROKEN_JUNCTION;
|
BROKEN_JUNCTION
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,6 @@ import javafx.beans.property.SimpleObjectProperty;
|
|||||||
import javafx.beans.property.SimpleStringProperty;
|
import javafx.beans.property.SimpleStringProperty;
|
||||||
import javafx.beans.property.StringProperty;
|
import javafx.beans.property.StringProperty;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
|
||||||
@@ -62,7 +61,7 @@ public class VaultSettings {
|
|||||||
|
|
||||||
VaultSettings(VaultSettingsJson json) {
|
VaultSettings(VaultSettingsJson json) {
|
||||||
this.id = json.id;
|
this.id = json.id;
|
||||||
this.path = new SimpleObjectProperty<>(this, "path", json.path == null ? null : Paths.get(json.path));
|
this.path = new SimpleObjectProperty<>(this, "path", json.path == null ? null : Path.of(json.path));
|
||||||
this.displayName = new SimpleStringProperty(this, "displayName", json.displayName);
|
this.displayName = new SimpleStringProperty(this, "displayName", json.displayName);
|
||||||
this.unlockAfterStartup = new SimpleBooleanProperty(this, "unlockAfterStartup", json.unlockAfterStartup);
|
this.unlockAfterStartup = new SimpleBooleanProperty(this, "unlockAfterStartup", json.unlockAfterStartup);
|
||||||
this.revealAfterMount = new SimpleBooleanProperty(this, "revealAfterMount", json.revealAfterMount);
|
this.revealAfterMount = new SimpleBooleanProperty(this, "revealAfterMount", json.revealAfterMount);
|
||||||
|
|||||||
@@ -47,7 +47,6 @@ import javafx.beans.property.ReadOnlyStringProperty;
|
|||||||
import javafx.beans.property.SimpleBooleanProperty;
|
import javafx.beans.property.SimpleBooleanProperty;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
|
||||||
import java.nio.file.ReadOnlyFileSystemException;
|
import java.nio.file.ReadOnlyFileSystemException;
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
@@ -58,7 +57,7 @@ import java.util.concurrent.atomic.AtomicReference;
|
|||||||
public class Vault {
|
public class Vault {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(Vault.class);
|
private static final Logger LOG = LoggerFactory.getLogger(Vault.class);
|
||||||
private static final Path HOME_DIR = Paths.get(SystemUtils.USER_HOME);
|
private static final Path HOME_DIR = Path.of(SystemUtils.USER_HOME);
|
||||||
private static final int UNLIMITED_FILENAME_LENGTH = Integer.MAX_VALUE;
|
private static final int UNLIMITED_FILENAME_LENGTH = Integer.MAX_VALUE;
|
||||||
|
|
||||||
private final VaultSettings vaultSettings;
|
private final VaultSettings vaultSettings;
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ public class VaultState extends ObservableValueBase<VaultState.Value> implements
|
|||||||
/**
|
/**
|
||||||
* Unknown state due to preceding unrecoverable exceptions.
|
* Unknown state due to preceding unrecoverable exceptions.
|
||||||
*/
|
*/
|
||||||
ERROR;
|
ERROR
|
||||||
}
|
}
|
||||||
|
|
||||||
private final AtomicReference<Value> value;
|
private final AtomicReference<Value> value;
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ public class SupportedLanguages {
|
|||||||
var collator = Collator.getInstance(preferredLocale);
|
var collator = Collator.getInstance(preferredLocale);
|
||||||
collator.setStrength(Collator.PRIMARY);
|
collator.setStrength(Collator.PRIMARY);
|
||||||
var sorted = new ArrayList<String>();
|
var sorted = new ArrayList<String>();
|
||||||
sorted.add(0, null);
|
sorted.addFirst(null);
|
||||||
sorted.add(1, ENGLISH);
|
sorted.add(1, ENGLISH);
|
||||||
LANGUAGE_TAGS.stream() //
|
LANGUAGE_TAGS.stream() //
|
||||||
.sorted((a, b) -> collator.compare(Locale.forLanguageTag(a).getDisplayName(), Locale.forLanguageTag(b).getDisplayName())) //
|
.sorted((a, b) -> collator.compare(Locale.forLanguageTag(a).getDisplayName(), Locale.forLanguageTag(b).getDisplayName())) //
|
||||||
|
|||||||
+1
-2
@@ -41,7 +41,6 @@ import java.io.IOException;
|
|||||||
import java.nio.file.Files;
|
import java.nio.file.Files;
|
||||||
import java.nio.file.InvalidPathException;
|
import java.nio.file.InvalidPathException;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
import java.util.concurrent.ExecutorService;
|
import java.util.concurrent.ExecutorService;
|
||||||
@@ -50,7 +49,7 @@ import java.util.concurrent.ExecutorService;
|
|||||||
public class CreateNewVaultLocationController implements FxController {
|
public class CreateNewVaultLocationController implements FxController {
|
||||||
|
|
||||||
private static final Logger LOG = LoggerFactory.getLogger(CreateNewVaultLocationController.class);
|
private static final Logger LOG = LoggerFactory.getLogger(CreateNewVaultLocationController.class);
|
||||||
private static final Path DEFAULT_CUSTOM_VAULT_PATH = Paths.get(System.getProperty("user.home"));
|
private static final Path DEFAULT_CUSTOM_VAULT_PATH = Path.of(System.getProperty("user.home"));
|
||||||
private static final String TEMP_FILE_PREFIX = ".locationTest.cryptomator";
|
private static final String TEMP_FILE_PREFIX = ".locationTest.cryptomator";
|
||||||
|
|
||||||
private final Stage window;
|
private final Stage window;
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ public class SystemBarUtil {
|
|||||||
/**
|
/**
|
||||||
* OS Bar placed at the bottom screen edge
|
* OS Bar placed at the bottom screen edge
|
||||||
*/
|
*/
|
||||||
BOTTOM;
|
BOTTOM
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ import org.cryptomator.integrations.common.Priority;
|
|||||||
import org.cryptomator.integrations.revealpath.RevealFailedException;
|
import org.cryptomator.integrations.revealpath.RevealFailedException;
|
||||||
import org.cryptomator.integrations.revealpath.RevealPathService;
|
import org.cryptomator.integrations.revealpath.RevealPathService;
|
||||||
|
|
||||||
|
import java.nio.file.Files;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -17,14 +18,17 @@ import java.nio.file.Path;
|
|||||||
*/
|
*/
|
||||||
@DisplayName("JavaFX HostServices (GTK)")
|
@DisplayName("JavaFX HostServices (GTK)")
|
||||||
@OperatingSystem(OperatingSystem.Value.LINUX)
|
@OperatingSystem(OperatingSystem.Value.LINUX)
|
||||||
@Priority(10)
|
@Priority(Priority.FALLBACK)
|
||||||
public class JfxRevealPathService implements RevealPathService {
|
public class JfxRevealPathService implements RevealPathService {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void reveal(Path p) throws RevealFailedException {
|
public void reveal(Path p) throws RevealFailedException {
|
||||||
|
var absPath = p.toAbsolutePath();
|
||||||
var fxApp = FxApplication.INSTANCE.get();
|
var fxApp = FxApplication.INSTANCE.get();
|
||||||
if (fxApp != null) {
|
if (fxApp != null) {
|
||||||
fxApp.getHostServices().showDocument(p.toUri().toString());
|
// showDocument() launches the default app for a regular file, so reveal its parent directory instead
|
||||||
|
var target = Files.isRegularFile(absPath) ? absPath.getParent() : absPath;
|
||||||
|
fxApp.getHostServices().showDocument(target.toUri().toString());
|
||||||
} else {
|
} else {
|
||||||
throw new RevealFailedException("JavaFX Application not initialized");
|
throw new RevealFailedException("JavaFX Application not initialized");
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ public class Check {
|
|||||||
SUCCEEDED,
|
SUCCEEDED,
|
||||||
SKIPPED,
|
SKIPPED,
|
||||||
ERROR,
|
ERROR,
|
||||||
CANCELLED;
|
CANCELLED
|
||||||
}
|
}
|
||||||
|
|
||||||
ObservableList<Result> getResults() {
|
ObservableList<Result> getResults() {
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ public class CheckListController implements FxController {
|
|||||||
|
|
||||||
checks.filtered(c -> !c.isChosenForExecution()).forEach(c -> c.setState(Check.CheckState.SKIPPED));
|
checks.filtered(c -> !c.isChosenForExecution()).forEach(c -> c.setState(Check.CheckState.SKIPPED));
|
||||||
checkExecutor.executeBatch(chosenChecks);
|
checkExecutor.executeBatch(chosenChecks);
|
||||||
checksListView.getSelectionModel().select(chosenChecks.get(0));
|
checksListView.getSelectionModel().select(chosenChecks.getFirst());
|
||||||
checksListView.refresh();
|
checksListView.refresh();
|
||||||
window.sizeToScene();
|
window.sizeToScene();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -6,6 +6,8 @@ import org.cryptomator.common.settings.Settings;
|
|||||||
import org.cryptomator.ui.common.FxController;
|
import org.cryptomator.ui.common.FxController;
|
||||||
import org.cryptomator.ui.common.FxmlFile;
|
import org.cryptomator.ui.common.FxmlFile;
|
||||||
import org.cryptomator.ui.common.FxmlScene;
|
import org.cryptomator.ui.common.FxmlScene;
|
||||||
|
import org.cryptomator.ui.controls.FontAwesome5Icon;
|
||||||
|
import org.cryptomator.ui.controls.FontAwesome5IconView;
|
||||||
import org.cryptomator.ui.keyloading.KeyLoading;
|
import org.cryptomator.ui.keyloading.KeyLoading;
|
||||||
import org.cryptomator.ui.keyloading.KeyLoadingScoped;
|
import org.cryptomator.ui.keyloading.KeyLoadingScoped;
|
||||||
import org.jetbrains.annotations.VisibleForTesting;
|
import org.jetbrains.annotations.VisibleForTesting;
|
||||||
@@ -13,14 +15,24 @@ import org.slf4j.Logger;
|
|||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
import javafx.animation.PauseTransition;
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
import javafx.beans.property.SimpleStringProperty;
|
import javafx.beans.property.SimpleStringProperty;
|
||||||
import javafx.beans.property.StringProperty;
|
import javafx.beans.property.StringProperty;
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
|
import javafx.geometry.Pos;
|
||||||
|
import javafx.scene.Node;
|
||||||
import javafx.scene.Scene;
|
import javafx.scene.Scene;
|
||||||
import javafx.scene.text.Text;
|
import javafx.scene.control.Hyperlink;
|
||||||
import javafx.scene.text.TextFlow;
|
import javafx.scene.control.Label;
|
||||||
|
import javafx.scene.control.Tooltip;
|
||||||
|
import javafx.scene.input.Clipboard;
|
||||||
|
import javafx.scene.input.ClipboardContent;
|
||||||
|
import javafx.scene.layout.HBox;
|
||||||
|
import javafx.scene.layout.Priority;
|
||||||
|
import javafx.scene.layout.VBox;
|
||||||
import javafx.stage.Stage;
|
import javafx.stage.Stage;
|
||||||
|
import javafx.util.Duration;
|
||||||
import java.net.URI;
|
import java.net.URI;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@@ -35,7 +47,11 @@ public class CheckHostTrustController implements FxController {
|
|||||||
private static final String CHECK_KEY = "hub.checkHostTrust.message.check";
|
private static final String CHECK_KEY = "hub.checkHostTrust.message.check";
|
||||||
private static final String ASK_SINGULAR_KEY = "hub.checkHostTrust.message.ask";
|
private static final String ASK_SINGULAR_KEY = "hub.checkHostTrust.message.ask";
|
||||||
private static final String ASK_PLURAL_KEY = "hub.checkHostTrust.message.ask.plural";
|
private static final String ASK_PLURAL_KEY = "hub.checkHostTrust.message.ask.plural";
|
||||||
|
private static final String DESCRIPTION_SINGULAR_KEY = "hub.checkHostTrust.description.ask";
|
||||||
|
private static final String DESCRIPTION_PLURAL_KEY = "hub.checkHostTrust.description.ask.plural";
|
||||||
|
private static final String COPY_TOOLTIP_KEY = "hub.checkHostTrust.copyBtn.tooltip";
|
||||||
private static final String TRUSTED_CRYPTOMATOR_CLOUD_DOMAIN = ".cryptomator.cloud";
|
private static final String TRUSTED_CRYPTOMATOR_CLOUD_DOMAIN = ".cryptomator.cloud";
|
||||||
|
private static final Duration COPIED_INDICATION_DURATION = Duration.seconds(2);
|
||||||
|
|
||||||
private final Stage window;
|
private final Stage window;
|
||||||
private final HubConfig hubConfig;
|
private final HubConfig hubConfig;
|
||||||
@@ -49,9 +65,10 @@ public class CheckHostTrustController implements FxController {
|
|||||||
private final ResourceBundle resourceBundle;
|
private final ResourceBundle resourceBundle;
|
||||||
private final SortedSet<String> hostnames;
|
private final SortedSet<String> hostnames;
|
||||||
private final StringProperty messageLabel;
|
private final StringProperty messageLabel;
|
||||||
|
private final StringProperty descriptionLabel;
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
private TextFlow hostnamesFlow;
|
private VBox hostnamesBox;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
public CheckHostTrustController(@KeyLoading Stage window, //
|
public CheckHostTrustController(@KeyLoading Stage window, //
|
||||||
@@ -74,6 +91,7 @@ public class CheckHostTrustController implements FxController {
|
|||||||
this.resourceBundle = resourceBundle;
|
this.resourceBundle = resourceBundle;
|
||||||
this.hostnames = new TreeSet<>();
|
this.hostnames = new TreeSet<>();
|
||||||
this.messageLabel = new SimpleStringProperty(resourceBundle.getString(CHECK_KEY));
|
this.messageLabel = new SimpleStringProperty(resourceBundle.getString(CHECK_KEY));
|
||||||
|
this.descriptionLabel = new SimpleStringProperty("");
|
||||||
}
|
}
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
@@ -117,12 +135,41 @@ public class CheckHostTrustController implements FxController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void renderHostnames() {
|
private void renderHostnames() {
|
||||||
hostnamesFlow.getChildren().clear();
|
hostnamesBox.getChildren().clear();
|
||||||
for (var hostname : hostnames) {
|
for (var hostname : hostnames) {
|
||||||
hostnamesFlow.getChildren().add(new Text(hostname + System.lineSeparator()));
|
hostnamesBox.getChildren().add(createHostnameRow(hostname));
|
||||||
}
|
}
|
||||||
var messageKey = hostnames.size() > 1 ? ASK_PLURAL_KEY : ASK_SINGULAR_KEY;
|
var plural = hostnames.size() > 1;
|
||||||
messageLabel.set(resourceBundle.getString(messageKey));
|
messageLabel.set(resourceBundle.getString(plural ? ASK_PLURAL_KEY : ASK_SINGULAR_KEY));
|
||||||
|
descriptionLabel.set(resourceBundle.getString(plural ? DESCRIPTION_PLURAL_KEY : DESCRIPTION_SINGULAR_KEY));
|
||||||
|
}
|
||||||
|
|
||||||
|
private Node createHostnameRow(String hostname) {
|
||||||
|
var label = new Label(hostname);
|
||||||
|
label.setWrapText(true);
|
||||||
|
HBox.setHgrow(label, Priority.ALWAYS);
|
||||||
|
|
||||||
|
var icon = new FontAwesome5IconView();
|
||||||
|
icon.setGlyph(FontAwesome5Icon.COPY);
|
||||||
|
var copyLink = new Hyperlink(null, icon);
|
||||||
|
copyLink.setTooltip(new Tooltip(resourceBundle.getString(COPY_TOOLTIP_KEY)));
|
||||||
|
copyLink.setAccessibleText(resourceBundle.getString(COPY_TOOLTIP_KEY));
|
||||||
|
copyLink.setOnAction(_ -> copyToClipboard(hostname, icon));
|
||||||
|
|
||||||
|
var row = new HBox(6, label, copyLink);
|
||||||
|
row.setAlignment(Pos.CENTER_LEFT);
|
||||||
|
return row;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void copyToClipboard(String hostname, FontAwesome5IconView icon) {
|
||||||
|
var clipboardContent = new ClipboardContent();
|
||||||
|
clipboardContent.putString(hostname);
|
||||||
|
Clipboard.getSystemClipboard().setContent(clipboardContent);
|
||||||
|
|
||||||
|
icon.setGlyph(FontAwesome5Icon.CHECK);
|
||||||
|
var resetIcon = new PauseTransition(COPIED_INDICATION_DURATION);
|
||||||
|
resetIcon.setOnFinished(_ -> icon.setGlyph(FontAwesome5Icon.COPY));
|
||||||
|
resetIcon.play();
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isConsistentHubConfig() {
|
private boolean isConsistentHubConfig() {
|
||||||
@@ -176,4 +223,12 @@ public class CheckHostTrustController implements FxController {
|
|||||||
return messageLabel.get();
|
return messageLabel.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public StringProperty descriptionLabelProperty() {
|
||||||
|
return descriptionLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDescriptionLabel() {
|
||||||
|
return descriptionLabel.get();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -153,7 +153,7 @@ public class VaultListController implements FxController {
|
|||||||
vaults.addListener((ListChangeListener.Change<? extends Vault> c) -> {
|
vaults.addListener((ListChangeListener.Change<? extends Vault> c) -> {
|
||||||
while (c.next()) {
|
while (c.next()) {
|
||||||
if (c.wasAdded()) {
|
if (c.wasAdded()) {
|
||||||
Vault anyAddedVault = c.getAddedSubList().get(0);
|
Vault anyAddedVault = c.getAddedSubList().getFirst();
|
||||||
vaultList.getSelectionModel().select(anyAddedVault);
|
vaultList.getSelectionModel().select(anyAddedVault);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -217,7 +217,7 @@ public class RecoveryKeyValidateController implements FxController {
|
|||||||
/**
|
/**
|
||||||
* Recovery key is not a valid key.
|
* Recovery key is not a valid key.
|
||||||
*/
|
*/
|
||||||
INVALID;
|
INVALID
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -140,9 +140,9 @@ public class VaultStatisticsController implements FxController {
|
|||||||
long allTimeMaxAccessedFiles = Arrays.stream(maxAccessBuf).max().orElse(0L);
|
long allTimeMaxAccessedFiles = Arrays.stream(maxAccessBuf).max().orElse(0L);
|
||||||
|
|
||||||
// remove oldest value:
|
// remove oldest value:
|
||||||
decryptedBytesRead.getData().remove(0);
|
decryptedBytesRead.getData().removeFirst();
|
||||||
encryptedBytesWrite.getData().remove(0);
|
encryptedBytesWrite.getData().removeFirst();
|
||||||
accessedFiles.getData().remove(0);
|
accessedFiles.getData().removeFirst();
|
||||||
|
|
||||||
// add latest value:
|
// add latest value:
|
||||||
decryptedBytesRead.getData().add(new Data<>(currentStep, decBytes));
|
decryptedBytesRead.getData().add(new Data<>(currentStep, decBytes));
|
||||||
|
|||||||
@@ -110,7 +110,7 @@ public class UnlockInvalidMountPointController implements FxController {
|
|||||||
|
|
||||||
//TODO Add option to show filesystem, e.g. for ExceptionType.HIDEAWAY_EXISTS
|
//TODO Add option to show filesystem, e.g. for ExceptionType.HIDEAWAY_EXISTS
|
||||||
SHOW_PREFERENCES,
|
SHOW_PREFERENCES,
|
||||||
SHOW_VAULT_OPTIONS;
|
SHOW_VAULT_OPTIONS
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Binary file not shown.
@@ -20,6 +20,10 @@
|
|||||||
src: url('firacode_regular.ttf');
|
src: url('firacode_regular.ttf');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
src: url('AtkinsonHyperlegibleMono-Regular.ttf');
|
||||||
|
}
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* *
|
* *
|
||||||
* Root Styling & Colors *
|
* Root Styling & Colors *
|
||||||
@@ -141,6 +145,17 @@
|
|||||||
-fx-font-size: 1.1em;
|
-fx-font-size: 1.1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.hostname-list {
|
||||||
|
-fx-background-color: CONTROL_BORDER_NORMAL, CONTROL_BG_NORMAL;
|
||||||
|
-fx-background-insets: 0, 1px;
|
||||||
|
-fx-background-radius: 4px;
|
||||||
|
-fx-padding: 6px 8px 6px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hostname-list .label {
|
||||||
|
-fx-font-family: 'Atkinson Hyperlegible Mono';
|
||||||
|
}
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* *
|
* *
|
||||||
* Glyph Icons *
|
* Glyph Icons *
|
||||||
|
|||||||
@@ -20,6 +20,10 @@
|
|||||||
src: url('firacode_regular.ttf');
|
src: url('firacode_regular.ttf');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@font-face {
|
||||||
|
src: url('AtkinsonHyperlegibleMono-Regular.ttf');
|
||||||
|
}
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* *
|
* *
|
||||||
* Root Styling & Colors *
|
* Root Styling & Colors *
|
||||||
@@ -141,6 +145,17 @@
|
|||||||
-fx-font-size: 1.1em;
|
-fx-font-size: 1.1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.hostname-list {
|
||||||
|
-fx-background-color: CONTROL_BORDER_NORMAL, CONTROL_BG_NORMAL;
|
||||||
|
-fx-background-insets: 0, 1px;
|
||||||
|
-fx-background-radius: 4px;
|
||||||
|
-fx-padding: 6px 8px 6px 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hostname-list .label {
|
||||||
|
-fx-font-family: 'Atkinson Hyperlegible Mono';
|
||||||
|
}
|
||||||
|
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* *
|
* *
|
||||||
* Glyph Icons *
|
* Glyph Icons *
|
||||||
|
|||||||
@@ -11,12 +11,11 @@
|
|||||||
<?import javafx.scene.layout.StackPane?>
|
<?import javafx.scene.layout.StackPane?>
|
||||||
<?import javafx.scene.layout.VBox?>
|
<?import javafx.scene.layout.VBox?>
|
||||||
<?import javafx.scene.shape.Circle?>
|
<?import javafx.scene.shape.Circle?>
|
||||||
<?import javafx.scene.text.TextFlow?>
|
|
||||||
<HBox xmlns:fx="http://javafx.com/fxml"
|
<HBox xmlns:fx="http://javafx.com/fxml"
|
||||||
xmlns="http://javafx.com/javafx"
|
xmlns="http://javafx.com/javafx"
|
||||||
fx:controller="org.cryptomator.ui.keyloading.hub.CheckHostTrustController"
|
fx:controller="org.cryptomator.ui.keyloading.hub.CheckHostTrustController"
|
||||||
minWidth="400"
|
minWidth="450"
|
||||||
maxWidth="400"
|
maxWidth="450"
|
||||||
minHeight="145"
|
minHeight="145"
|
||||||
spacing="12"
|
spacing="12"
|
||||||
alignment="TOP_LEFT"
|
alignment="TOP_LEFT"
|
||||||
@@ -34,13 +33,15 @@
|
|||||||
<FontAwesome5IconView styleClass="glyph-icon-white" glyph="QUESTION" glyphSize="24"/>
|
<FontAwesome5IconView styleClass="glyph-icon-white" glyph="QUESTION" glyphSize="24"/>
|
||||||
</StackPane>
|
</StackPane>
|
||||||
</Group>
|
</Group>
|
||||||
<VBox HBox.hgrow="ALWAYS">
|
<VBox HBox.hgrow="ALWAYS" spacing="6">
|
||||||
<Label styleClass="label-large" text="${controller.messageLabel}" wrapText="true" textAlignment="LEFT">
|
<Label styleClass="label-large" text="${controller.messageLabel}" wrapText="true" textAlignment="LEFT">
|
||||||
<padding>
|
<padding>
|
||||||
<Insets bottom="6" top="6"/>
|
<Insets bottom="6" top="6"/>
|
||||||
</padding>
|
</padding>
|
||||||
</Label>
|
</Label>
|
||||||
<TextFlow fx:id="hostnamesFlow" styleClass="text-flow" minHeight="60"/>
|
<Label text="${controller.descriptionLabel}" wrapText="true" textAlignment="LEFT" visible="${!controller.descriptionLabel.empty}" managed="${!controller.descriptionLabel.empty}"/>
|
||||||
|
<!-- The box is filled in the controller, see createHostNamesRow() -->
|
||||||
|
<VBox fx:id="hostnamesBox" styleClass="hostname-list" spacing="4" visible="${!controller.descriptionLabel.empty}" managed="${!controller.descriptionLabel.empty}"/>
|
||||||
<Region VBox.vgrow="ALWAYS" minHeight="18"/>
|
<Region VBox.vgrow="ALWAYS" minHeight="18"/>
|
||||||
<ButtonBar buttonMinWidth="120" buttonOrder="+CX">
|
<ButtonBar buttonMinWidth="120" buttonOrder="+CX">
|
||||||
<buttons>
|
<buttons>
|
||||||
|
|||||||
@@ -173,6 +173,9 @@ hub.noKeychain.openBtn=Open Preferences
|
|||||||
hub.checkHostTrust.message.check=Checking Configuration…
|
hub.checkHostTrust.message.check=Checking Configuration…
|
||||||
hub.checkHostTrust.message.ask=Trust this host?
|
hub.checkHostTrust.message.ask=Trust this host?
|
||||||
hub.checkHostTrust.message.ask.plural=Trust these hosts?
|
hub.checkHostTrust.message.ask.plural=Trust these hosts?
|
||||||
|
hub.checkHostTrust.description.ask=Cryptomator does not recognize this host. To unlock the vault, it needs to be trusted. Only trust it if you recognize the address below.
|
||||||
|
hub.checkHostTrust.description.ask.plural=Cryptomator does not recognize these hosts. To unlock the vault, they need to be trusted. Only trust them if you recognize the addresses below.
|
||||||
|
hub.checkHostTrust.copyBtn.tooltip=Copy address to clipboard
|
||||||
hub.checkHostTrust.trustBtn=Trust
|
hub.checkHostTrust.trustBtn=Trust
|
||||||
hub.checkHostTrust.denyBtn=Deny
|
hub.checkHostTrust.denyBtn=Deny
|
||||||
### Waiting
|
### Waiting
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import org.junit.jupiter.api.condition.EnabledIf;
|
|||||||
import org.mockito.Mockito;
|
import org.mockito.Mockito;
|
||||||
|
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
@@ -56,7 +55,7 @@ public class EnvironmentTest {
|
|||||||
List<Path> result = env.getPaths("test.path.property").toList();
|
List<Path> result = env.getPaths("test.path.property").toList();
|
||||||
|
|
||||||
MatcherAssert.assertThat(result, Matchers.hasSize(1));
|
MatcherAssert.assertThat(result, Matchers.hasSize(1));
|
||||||
MatcherAssert.assertThat(result, Matchers.hasItem(Paths.get("/foo/bar/test")));
|
MatcherAssert.assertThat(result, Matchers.hasItem(Path.of("/foo/bar/test")));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ public class SettingsJsonTest {
|
|||||||
|
|
||||||
Assertions.assertTrue(jsonObj.checkForUpdatesEnabled);
|
Assertions.assertTrue(jsonObj.checkForUpdatesEnabled);
|
||||||
Assertions.assertEquals(2, jsonObj.directories.size());
|
Assertions.assertEquals(2, jsonObj.directories.size());
|
||||||
Assertions.assertEquals("/vault1", jsonObj.directories.get(0).path);
|
Assertions.assertEquals("/vault1", jsonObj.directories.getFirst().path);
|
||||||
Assertions.assertEquals("/vault2", jsonObj.directories.get(1).path);
|
Assertions.assertEquals("/vault2", jsonObj.directories.get(1).path);
|
||||||
Assertions.assertEquals("--foo --bar", jsonObj.directories.get(1).mountFlags);
|
Assertions.assertEquals("--foo --bar", jsonObj.directories.get(1).mountFlags);
|
||||||
Assertions.assertEquals(8080, jsonObj.port);
|
Assertions.assertEquals(8080, jsonObj.port);
|
||||||
@@ -67,7 +67,7 @@ public class SettingsJsonTest {
|
|||||||
public void testSerialize() throws JsonProcessingException {
|
public void testSerialize() throws JsonProcessingException {
|
||||||
var jsonObj = new SettingsJson();
|
var jsonObj = new SettingsJson();
|
||||||
jsonObj.directories = List.of(new VaultSettingsJson(), new VaultSettingsJson());
|
jsonObj.directories = List.of(new VaultSettingsJson(), new VaultSettingsJson());
|
||||||
jsonObj.directories.get(0).id = "test";
|
jsonObj.directories.getFirst().id = "test";
|
||||||
jsonObj.theme = UiTheme.DARK;
|
jsonObj.theme = UiTheme.DARK;
|
||||||
jsonObj.showTrayIcon = false;
|
jsonObj.showTrayIcon = false;
|
||||||
|
|
||||||
|
|||||||
@@ -17,7 +17,6 @@ import org.mockito.Mockito;
|
|||||||
import java.nio.file.FileSystem;
|
import java.nio.file.FileSystem;
|
||||||
import java.nio.file.InvalidPathException;
|
import java.nio.file.InvalidPathException;
|
||||||
import java.nio.file.Path;
|
import java.nio.file.Path;
|
||||||
import java.nio.file.Paths;
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -43,7 +42,7 @@ public class FileOpenRequestHandlerTest {
|
|||||||
AppLaunchEvent evt = queue.poll();
|
AppLaunchEvent evt = queue.poll();
|
||||||
Assertions.assertNotNull(evt);
|
Assertions.assertNotNull(evt);
|
||||||
Collection<Path> paths = evt.pathsToOpen();
|
Collection<Path> paths = evt.pathsToOpen();
|
||||||
MatcherAssert.assertThat(paths, CoreMatchers.hasItems(Paths.get("foo"), Paths.get("bar")));
|
MatcherAssert.assertThat(paths, CoreMatchers.hasItems(Path.of("foo"), Path.of("bar")));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
Reference in New Issue
Block a user