Compare commits

..
Author SHA1 Message Date
dependabot[bot]andGitHub 4cfaefe3f7 Bump the github-actions group across 1 directory with 7 updates
Bumps the github-actions group with 7 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [actions/checkout](https://github.com/actions/checkout) | `7.0.0` | `7.0.1` |
| [actions/setup-java](https://github.com/actions/setup-java) | `5.3.0` | `6.0.0` |
| [softprops/action-gh-release](https://github.com/softprops/action-gh-release) | `3.0.1` | `3.0.3` |
| [actions/cache](https://github.com/actions/cache) | `5.0.5` | `6.1.0` |
| [fjogeleit/http-request-action](https://github.com/fjogeleit/http-request-action) | `2.0.0` | `2.0.1` |
| [actions/stale](https://github.com/actions/stale) | `10.3.0` | `11.0.0` |
| [vedantmgoyal2009/winget-releaser](https://github.com/vedantmgoyal2009/winget-releaser) | `7bd472be23763def6e16bd06cc8b1cdfab0e2fd5` | `b3a5dae0047c6180023acba3f548c55fdf6b7193` |



Updates `actions/checkout` from 7.0.0 to 7.0.1
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0...3d3c42e5aac5ba805825da76410c181273ba90b1)

Updates `actions/setup-java` from 5.3.0 to 6.0.0
- [Release notes](https://github.com/actions/setup-java/releases)
- [Commits](https://github.com/actions/setup-java/compare/ad2b38190b15e4d6bdf0c97fb4fca8412226d287...dd06d9cba3e5552c54d9f8ea23572deb30010f7c)

Updates `softprops/action-gh-release` from 3.0.1 to 3.0.3
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/718ea10b132b3b2eba29c1007bb80653f286566b...efb35369e0ad2afab669f228072c1b0d510eae64)

Updates `actions/cache` from 5.0.5 to 6.1.0
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/27d5ce7f107fe9357f9df03efb73ab90386fccae...55cc8345863c7cc4c66a329aec7e433d2d1c52a9)

Updates `fjogeleit/http-request-action` from 2.0.0 to 2.0.1
- [Release notes](https://github.com/fjogeleit/http-request-action/releases)
- [Changelog](https://github.com/fjogeleit/http-request-action/blob/main/RELEASE.md)
- [Commits](https://github.com/fjogeleit/http-request-action/compare/551353b829c3646756b2ec2b3694f819d7957495...f98bb26551cd1af7d3eb2674578a80754ece88db)

Updates `actions/stale` from 10.3.0 to 11.0.0
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/stale/compare/eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899...4391f3da665fdf50b6810c1a66712fb9ba21aa93)

Updates `vedantmgoyal2009/winget-releaser` from 7bd472be23763def6e16bd06cc8b1cdfab0e2fd5 to b3a5dae0047c6180023acba3f548c55fdf6b7193
- [Release notes](https://github.com/vedantmgoyal2009/winget-releaser/releases)
- [Commits](https://github.com/vedantmgoyal2009/winget-releaser/compare/7bd472be23763def6e16bd06cc8b1cdfab0e2fd5...b3a5dae0047c6180023acba3f548c55fdf6b7193)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: 6.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
- dependency-name: actions/checkout
  dependency-version: 7.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: actions/setup-java
  dependency-version: 5.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
- dependency-name: actions/stale
  dependency-version: 11.0.0
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: github-actions
- dependency-name: fjogeleit/http-request-action
  dependency-version: 2.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: softprops/action-gh-release
  dependency-version: 3.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: github-actions
- dependency-name: vedantmgoyal2009/winget-releaser
  dependency-version: b3a5dae0047c6180023acba3f548c55fdf6b7193
  dependency-type: direct:production
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-01 16:26:55 +00:00
Tobias Hagemann af99135172 Remove Uruky as gold sponsor [ci skip] 2026-09-01 11:21:33 +02:00
Armin SchrenkandGitHub a02224640b Merge pull request #4295 from cryptomator/feature/improve-tofu-dialog
Increase usablity of TOFU dialog
2026-08-27 15:00:55 +02:00
Armin Schrenk 04fe64b9e0 fix grammar 2026-08-25 17:31:55 +02:00
Armin Schrenk 44434aa404 Improve phrasing 2026-08-25 16:27:03 +02:00
Armin Schrenk 35ac351541 Increase usablity of TOFU dialog
* Add description
* display URLs in legible font
* add copy button for URLs
2026-08-25 14:12:00 +02:00
Armin Schrenk 1eb70aeea7 migrate code to common JDK 25 apis and constructs 2026-08-24 11:14:34 +02:00
Armin Schrenk abcbefdd2c Update org.fasterxml:jackson-* to version 2.21.6 2026-08-18 17:39:07 +02:00
Tobias Hagemann 7af6c79b80 Add Uruky as gold sponsor [ci skip] 2026-07-30 17:11:43 +02:00
Armin SchrenkandGitHub 193aa1887d Merge pull request #4274 from cryptomator/feature/4272-fix-locate-encrypted
Feature: Fix locate encrypted file on Linux
2026-07-17 17:51:53 +02:00
Armin Schrenk 0ce6008576 ensure path is always absolute
Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-07-17 17:45:17 +02:00
Armin Schrenk 0bf3e0a071 [skip ci] use maven wrapper in build script
Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-07-17 17:43:26 +02:00
Armin Schrenk 3d82e9a97f Fix JfxRevealPathService opens the file instead of revealing
also set priority to "Fallback"

Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-07-16 12:03:46 +02:00
Armin Schrenk bdab18b7c3 update integrations-linux
Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-07-16 12:00:06 +02:00
Andreas OpferkuchandGitHub 688d1a4a24 README: Update JDK version from 25 to 26 (#4269)
[ci skip]
2026-07-02 21:05:18 +02:00
Tobias Hagemann 56e655c5a9 Add ApiVoid as silver sponsor [ci skip] 2026-07-01 12:15:15 +02:00
Armin Schrenk 4c9dbb60fe fix b681c26d72
Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-06-29 14:44:13 +02:00
Armin Schrenk 7ddedea5c2 [skip ci] Merge branch 'main' into develop
Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-06-29 13:54:55 +02:00
Armin Schrenk fc76f5f83f Merge branch 'release/1.19.3' 2026-06-29 13:52:10 +02:00
Armin Schrenk bfc8542551 remove dependency-check from release-check workflow
Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-06-29 13:50:24 +02:00
Armin Schrenk 24a20911f1 finalize 1.19.3
Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-06-29 13:39:27 +02:00
Armin Schrenk b681c26d72 Replace some slim runners by regular ones
Slim ubuntu runners don't have docker, thus failing executing certain actions. (i.e. https://github.com/rtCamp/action-slack-notify/issues/240)

Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-06-25 13:16:17 +02:00
Armin Schrenk 34f5c06795 [skip ci] Update changelog
Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-06-25 13:11:11 +02:00
Armin Schrenk f4928fd981 prepare 1.19.3
Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-06-25 11:23:48 +02:00
Armin SchrenkandGitHub f748bfd953 replace zulu by temurin (#4263)
Closes #4242

Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-06-25 11:13:18 +02:00
Armin SchrenkandGitHub cb689946ed Merge pull request #4262 from cryptomator/feature/4260-fix-unsigned-ps1
Sign Powershell scripts (again)
2026-06-25 10:21:47 +02:00
Armin Schrenk 38bdf6d0e4 cleanup workflow
Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-06-25 10:14:42 +02:00
Armin Schrenk 409209fd89 [skip ci] update changelog
Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-06-25 10:09:48 +02:00
Armin Schrenk 1fd44ff651 for scripts, do not append signature
Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-06-25 01:10:10 +02:00
Armin Schrenk 9bb19b0130 extra sign steps for ps1
Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-06-25 00:51:46 +02:00
Armin Schrenk 1b5319f706 check ps1 scripts after signing
Signed-off-by: Armin Schrenk <armin.schrenk@skymatic.de>
2026-06-25 00:31:19 +02:00
Armin Schrenk 33b4aa5ba3 Revert "Revert #4169 and fix ps1 files not signed"
This reverts commit 1879c6fa77.
2026-06-25 00:23:58 +02:00
68 changed files with 230 additions and 293 deletions
+3 -3
View File
@@ -75,9 +75,9 @@ jobs:
openjfx-sha: 'e3fd682354346845d2944a2da2b1ff2b6cb9259d92027f2f9c121b9b93c5e42f'
appimagetool-sha: 'f0837e7448a0c1e4e650a93bb3e85802546e60654ef287576f46c71c126a9158'
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Setup Java
uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0
with:
distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }}
@@ -220,7 +220,7 @@ jobs:
if-no-files-found: error
- name: Publish AppImage on GitHub Releases
if: inputs.upload-to-draft
uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1
uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
with:
draft: true
fail_on_unmatched_files: true
+1 -1
View File
@@ -33,7 +33,7 @@ jobs:
pacman-key --populate archlinux
pacman -Syu --noconfirm --needed git base-devel sudo gnupg maven unzip github-cli curl pacman-contrib
- name: Checkout cryptomator/aur-bin
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: 'cryptomator/aur-bin'
token: ${{ secrets.CRYPTOBOT_PR_TOKEN }}
+1 -1
View File
@@ -78,7 +78,7 @@ jobs:
local-dir: ./upload/
allowlist-avast:
name: Anti Virus Allowlisting Avast
runs-on: ubuntu-slim
runs-on: ubuntu-latest
needs: download-file
if: inputs.avast
steps:
+3 -3
View File
@@ -22,14 +22,14 @@ jobs:
name: Compile and Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0
with:
distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }}
cache: 'maven'
- name: Cache SonarCloud packages
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
uses: actions/cache@55cc8345863c7cc4c66a329aec7e433d2d1c52a9 # v6.1.0
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
+1 -1
View File
@@ -26,7 +26,7 @@ jobs:
run: echo 'JDK_MAJOR_VERSION=${{ env.JDK_VERSION }}'.substring(0,2) >> "$env:GITHUB_ENV"
shell: pwsh
- 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:
java-version: ${{ env.JDK_MAJOR_VERSION}}
distribution: ${{ env.JDK_VENDOR }}
+2 -2
View File
@@ -45,7 +45,7 @@ jobs:
env:
INPUT_PPAVER: ${{ inputs.ppaver }}
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- id: deb-version
name: Determine deb-version
run: |
@@ -63,7 +63,7 @@ jobs:
env:
DEB_BUILD_DEPENDS: ${{ env.DEB_BUILD_DEPENDS }}
- name: Setup Java
uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0
with:
distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }}
+1 -1
View File
@@ -53,7 +53,7 @@ jobs:
INTERVAL: 900
JSON_DATA: ${{ steps.get-stats.outputs.result }}
- name: Upload Results
uses: fjogeleit/http-request-action@551353b829c3646756b2ec2b3694f819d7957495 # v2.0.0
uses: fjogeleit/http-request-action@f98bb26551cd1af7d3eb2674578a80754ece88db # v2.0.1
with:
url: 'https://graphite-us-central1.grafana.net/metrics'
method: 'POST'
+5 -5
View File
@@ -25,14 +25,14 @@ jobs:
needs: get-version
if: needs.get-version.outputs.versionType != 'unknown'
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
- name: Check the git tag is signed
run: git cat-file -p "${GITHUB_REF_NAME}" | grep "BEGIN SSH SIGNATURE"
- 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*$'
- uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
- uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0
with:
distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }}
@@ -42,7 +42,7 @@ jobs:
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # Needed to get PR information, if any
- name: Draft a release
uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1
uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
with:
draft: true
discussion_category_name: releases
@@ -60,7 +60,7 @@ jobs:
GPG_PRIVATE_KEY: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }}
GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }}
- 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:
draft: true
fail_on_unmatched_files: true
@@ -112,7 +112,7 @@ jobs:
SEMVER: ${{ needs.get-version.outputs.semVerStr }}
GH_TOKEN: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Compute source tarball SHA256
id: src-sha256
run: |
+2 -2
View File
@@ -39,11 +39,11 @@ jobs:
revNum: ${{ steps.versions.outputs.revNum }}
type: ${{ steps.versions.outputs.type}}
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
fetch-depth: 0
- name: Setup Java
uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0
with:
distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }}
+5 -5
View File
@@ -49,16 +49,16 @@ jobs:
env:
SRC_GIT_SHA: ${{ inputs.src-tag || github.sha}}
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: flathub/org.cryptomator.Cryptomator
submodules: true
- name: Checkout build script
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
path: build-scripts
- name: Checkout app source
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
path: cryptomator
ref: ${{ env.SRC_GIT_SHA }}
@@ -176,7 +176,7 @@ jobs:
fi
env:
SRC_TAG: ${{ inputs.src-tag }}
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: flathub/org.cryptomator.Cryptomator
submodules: true #TODO: Update submodule!
@@ -184,7 +184,7 @@ jobs:
- name: Checkout release branch
run: |
git checkout -b release/${{ needs.get-version.outputs.semVerStr }}
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
path: cryptomator
- name: Download source tarball and compute checksum
+2 -2
View File
@@ -44,7 +44,7 @@ jobs:
pacman-key --init
pacman-key --populate archlinux
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:
path: cryptomator
- name: Create build user
@@ -108,7 +108,7 @@ jobs:
env:
TAG: ${{ needs.get-version.outputs.semVerStr || github.event.release.tag_name }}
- name: Checkout cryptomator/aur repo
uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
repository: 'cryptomator/aur'
token: ${{ secrets.CRYPTOBOT_PR_TOKEN }}
+3 -3
View File
@@ -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-sha: '3512fabe43aee467538d329cfbbaab3c53dff2a810f0d54e381f461d5e0fac43'
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Setup Java
uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0
with:
distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }}
@@ -312,7 +312,7 @@ jobs:
if-no-files-found: error
- name: Publish dmg on GitHub Releases
if: inputs.upload-to-draft
uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1
uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
with:
draft: true
fail_on_unmatched_files: true
+3 -3
View File
@@ -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-sha: 'a52014d625b8b04e57fd71650f881c1397542b4018e1b04f1b4e66c8800a1f34'
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Setup Java
uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0
with:
distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }}
@@ -311,7 +311,7 @@ jobs:
if-no-files-found: error
- name: Publish dmg on GitHub Releases
if: inputs.upload-to-draft
uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1
uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
with:
draft: true
fail_on_unmatched_files: true
+1 -1
View File
@@ -12,7 +12,7 @@ jobs:
issues: write
pull-requests: write
steps:
- uses: actions/stale@eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899 # v10.3.0
- uses: actions/stale@4391f3da665fdf50b6810c1a66712fb9ba21aa93 # v11.0.0
with:
days-before-stale: 14
days-before-close: 0
+2 -2
View File
@@ -6,7 +6,7 @@ on:
jobs:
notify:
runs-on: ubuntu-slim
runs-on: ubuntu-latest
steps:
- name: Notify about DEB build
uses: rtCamp/action-slack-notify@33ca3be66c6f378fe1610fd1d5258632dbed5e58 # v2.4.0
@@ -102,7 +102,7 @@ jobs:
name: Notify for winget-release
if: needs.get-asset-urls.outputs.is-windows-release == 'true' && needs.check-release.outputs.release-kind == 'stable'
needs: [check-release, get-asset-urls]
runs-on: ubuntu-slim
runs-on: ubuntu-latest
steps:
- name: Slack Notification
uses: rtCamp/action-slack-notify@33ca3be66c6f378fe1610fd1d5258632dbed5e58 # v2.4.0
+2 -2
View File
@@ -16,8 +16,8 @@ jobs:
name: Compile and Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0
with:
distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }}
+3 -18
View File
@@ -19,9 +19,9 @@ jobs:
name: Validate commits pushed to release/hotfix branch to fulfill release requirements
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Setup Java
uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0
with:
distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }}
@@ -48,19 +48,4 @@ jobs:
if ! grep -q "<release date=\".*\" version=\"${{ steps.validate-pom-version.outputs.semVerStr }}\">" dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml; then
echo "Release not set in dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml"
exit 1
fi
- name: Cache NVD DB
uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5
with:
path: ~/.m2/repository/org/owasp/dependency-check-data/
key: dependency-check-${{ github.run_id }}
restore-keys: |
dependency-check
env:
SEGMENT_DOWNLOAD_TIMEOUT_MINS: 5
- name: Run org.owasp:dependency-check plugin
id: dependency-check
continue-on-error: true
run: ./mvnw -B verify -Pdependency-check -DskipTests
env:
NVD_API_KEY: ${{ secrets.NVD_API_KEY }}
fi
+1 -1
View File
@@ -12,7 +12,7 @@ jobs:
issues: write
pull-requests: write
steps:
- uses: actions/stale@eb5cf3af3ac0a1aa4c9c45633dd1ae542a27a899 # v10.3.0
- uses: actions/stale@4391f3da665fdf50b6810c1a66712fb9ba21aa93 # v11.0.0
with:
days-before-stale: 365
days-before-close: 90
+18 -37
View File
@@ -82,13 +82,13 @@ jobs:
include:
- arch: x64
os: windows-latest
java-dist: 'zulu' #cannot use temurin, see https://github.com/cryptomator/cryptomator/issues/3824#issuecomment-2829827427
java-dist: 'temurin'
java-version: '26.0.1+8'
java-package: 'jdk'
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Setup Java
uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0
with:
distribution: ${{ matrix.java-dist }}
java-version: ${{ matrix.java-version }}
@@ -229,22 +229,23 @@ jobs:
uses: ./.github/actions/win-sign-action
with:
base-dir: ${{ github.workspace }}\appdir
file-extensions: 'exe,dll'
recursive: true
append-signature: true
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
client-id: ${{ secrets.AZURE_CLIENT_ID }}
client-secret: ${{ secrets.AZURE_CLIENT_SECRET }}
- name: Sign DLLs with Actalis CodeSigner
if: inputs.sign || github.event_name == 'release'
uses: skymatic/workflows/.github/actions/win-sign-action@957d3c2c08c56855fdac41e5afb9a7aca8c30dd9 # no specific version
- name: Sign Scripts with Azure Trusted Signing
if: inputs.sign || github.event_name == 'schedule'
uses: ./.github/actions/win-sign-action
with:
base-dir: 'appdir'
file-extensions: 'dll,exe,ps1'
recursive: true
sign-description: 'Cryptomator'
sign-url: 'https://cryptomator.org'
username: ${{ secrets.WIN_CODESIGN_USERNAME }}
password: ${{ secrets.WIN_CODESIGN_PW }}
base-dir: ${{ github.workspace }}\appdir\Cryptomator
file-extensions: 'ps1'
recursive: false
append-signature: false # Powershell scripts cannot be signed in append mode, see #4260
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
client-id: ${{ secrets.AZURE_CLIENT_ID }}
client-secret: ${{ secrets.AZURE_CLIENT_SECRET }}
- name: Replace DLLs inside jars with signed ones
shell: pwsh
run: |
@@ -347,11 +348,11 @@ jobs:
- arch: x64
os: windows-latest
executable-suffix: x64
java-dist: 'zulu'
java-dist: 'temurin'
java-version: '26.0.1+8'
java-package: 'jdk'
steps:
- uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
- name: Install wix and extensions
run: |
dotnet tool install --global wix --version ${WIX_VERSION}
@@ -367,7 +368,7 @@ jobs:
- name: Strip version info from msi file name
run: mv dist/win/bundle/resources/Cryptomator*.msi dist/win/bundle/resources/Cryptomator.msi
- name: Setup Java
uses: actions/setup-java@ad2b38190b15e4d6bdf0c97fb4fca8412226d287 # v5.3.0
uses: actions/setup-java@dd06d9cba3e5552c54d9f8ea23572deb30010f7c # v6.0.0
with:
distribution: ${{ matrix.java-dist }}
java-version: ${{ matrix.java-version }}
@@ -429,16 +430,6 @@ jobs:
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
client-id: ${{ secrets.AZURE_CLIENT_ID }}
client-secret: ${{ secrets.AZURE_CLIENT_SECRET }}
- name: Sign burn engine with Actalis CodeSigner
if: inputs.sign || github.event_name == 'release'
uses: skymatic/workflows/.github/actions/win-sign-action@957d3c2c08c56855fdac41e5afb9a7aca8c30dd9 # no specific version
with:
base-dir: 'tmp'
file-extensions: 'exe'
sign-description: 'Cryptomator Bundle Installer'
sign-url: 'https://cryptomator.org'
username: ${{ secrets.WIN_CODESIGN_USERNAME }}
password: ${{ secrets.WIN_CODESIGN_PW }}
- name: Reattach signed burn engine to installer
if: inputs.sign || github.event_name == 'schedule'
shell: pwsh
@@ -456,16 +447,6 @@ jobs:
tenant-id: ${{ secrets.AZURE_TENANT_ID }}
client-id: ${{ secrets.AZURE_CLIENT_ID }}
client-secret: ${{ secrets.AZURE_CLIENT_SECRET }}
- name: Sign installer with Actalis CodeSigner
if: inputs.sign || github.event_name == 'release'
uses: skymatic/workflows/.github/actions/win-sign-action@957d3c2c08c56855fdac41e5afb9a7aca8c30dd9 # no specific version
with:
base-dir: 'installer'
file-extensions: 'exe'
sign-description: 'Cryptomator Bundle Installer'
sign-url: 'https://cryptomator.org'
username: ${{ secrets.WIN_CODESIGN_USERNAME }}
password: ${{ secrets.WIN_CODESIGN_PW }}
- id: sha256sum
run: |
read -ra CMD_OUTPUT < <(sha256sum installer/Cryptomator-*.exe)
@@ -500,7 +481,7 @@ jobs:
merge-multiple: true
- name: Publish installers on GitHub Releases
id: publish
uses: softprops/action-gh-release@718ea10b132b3b2eba29c1007bb80653f286566b # v3.0.1
uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
with:
draft: true
fail_on_unmatched_files: true
+1 -1
View File
@@ -18,7 +18,7 @@ jobs:
env:
GH_TOKEN: ${{ secrets.CRYPTOBOT_PR_TOKEN }}
- name: Submit package
uses: vedantmgoyal2009/winget-releaser@7bd472be23763def6e16bd06cc8b1cdfab0e2fd5 # no_specific_version
uses: vedantmgoyal2009/winget-releaser@b3a5dae0047c6180023acba3f548c55fdf6b7193 # no_specific_version
with:
identifier: Cryptomator.Cryptomator
version: ${{ inputs.tag }}
+8 -1
View File
@@ -8,8 +8,12 @@ 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).
## [Unreleased](https://github.com/cryptomator/cryptomator/compare/1.19.2...HEAD)
## [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
### Added
* New error dialog if importing a vault fails ([#4243](https://github.com/cryptomator/cryptomator/pull/4243))
@@ -24,6 +28,9 @@ Changes to prior versions can be found on the [Github release page](https://gith
* Refactored release pipeline to allow immutable releases ([#4205](https://github.com/cryptomator/cryptomator/pull/4205))
* Updated to JDK 26.0.1 ([#4244](https://github.com/cryptomator/cryptomator/pull/4244))
* Updated to JavaFX 25.0.3 ([#4255](https://github.com/cryptomator/cryptomator/pull/4255))
* Drop signing with Actalis issued certificate ([#4169](https://github.com/cryptomator/cryptomator/pull/4169), [#4262](https://github.com/cryptomator/cryptomator/pull/4262))
* Fix dagger binding graph issues ([#4147](https://github.com/cryptomator/cryptomator/pull/4147))
* Added flatpak build to CI ([#4199](https://github.com/cryptomator/cryptomator/pull/4199))
* Updated dependencies:
- `org.cryptomator:webdav-nio-adapter` from 3.0.1 to 3.0.2
- `org.cryptomator:integrations-api` from 1.8.0 to 1.9.0
+2 -1
View File
@@ -26,6 +26,7 @@ Become our Gold Sponsor and showcase your brand to a targeted audience! Please c
<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.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>
</tbody>
</table>
@@ -78,7 +79,7 @@ For more information on the security details visit [cryptomator.org](https://doc
### Dependencies
* JDK 25 (e.g. temurin, zulu)
* JDK 26 (e.g. temurin, zulu)
### Run Maven
@@ -84,6 +84,9 @@
</content_rating>
<releases>
<release date="2026-06-29" version="1.19.3">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.19.3</url>
</release>
<release date="2026-03-20" version="1.19.2">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.19.2</url>
</release>
+4 -9
View File
@@ -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)"
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)
{
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
$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'
$revisionNo = $(git rev-list --count HEAD)
@@ -79,7 +74,7 @@ $copyright = "(C) $CopyrightStartYear - $((Get-Date).Year) $Vendor"
# compile
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"
# add runtime
@@ -212,7 +207,7 @@ if ($LASTEXITCODE -ne 0) {
#Create RTF license for msi
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.fileTemplate=$buildDir\resources\licenseTemplate.ftl", `
"-Dlicense.outputDirectory=$buildDir\resources\", `
@@ -259,7 +254,7 @@ Invoke-CommandWithExitCheck -Command `
#Create RTF license for bundle
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.fileTemplate=$buildDir\bundle\resources\licenseTemplate.ftl", `
"-Dlicense.outputDirectory=$buildDir\bundle\resources\", `
+12 -2
View File
@@ -38,7 +38,7 @@
<cryptomator.integrations.version>1.9.0</cryptomator.integrations.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.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.webdav.version>3.0.2</cryptomator.webdav.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>
<dagger.version>2.59.2</dagger.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>
<jwt.version>4.5.2</jwt.version>
<nimbus-jose.version>10.5</nimbus-jose.version>
@@ -299,6 +299,10 @@
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>${mvn-surefire.version}</version>
<configuration>
<!--suppress MavenModelInspection -->
<argLine>@{argLine} -javaagent:${org.mockito:mockito-core:jar}</argLine>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
@@ -399,6 +403,12 @@
<includeGroupIds>${nonModularGroupIds}</includeGroupIds>
</configuration>
</execution>
<execution>
<id>get-mockito-agent-path</id>
<goals>
<goal>properties</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
@@ -8,7 +8,6 @@ import org.slf4j.LoggerFactory;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.Optional;
import java.util.Set;
@@ -166,7 +165,7 @@ public class Environment {
private Optional<Path> getPath(String propertyName) {
String value = System.getProperty(propertyName);
return Optional.ofNullable(value).map(Paths::get);
return Optional.ofNullable(value).map(Path::of);
}
@VisibleForTesting
@@ -77,7 +77,7 @@ public class ErrorCode {
public static ErrorCode of(Throwable throwable) {
var causalChain = Throwables.getCausalChain(throwable);
if (causalChain.size() > 1) {
var rootCause = causalChain.get(causalChain.size() - 1);
var rootCause = causalChain.getLast();
var parentOfRootCause = causalChain.get(causalChain.size() - 2);
var rootSpecificFrames = countTopmostFrames(rootCause.getStackTrace(), parentOfRootCause.getStackTrace());
return new ErrorCode(throwable, rootCause, rootSpecificFrames);
@@ -67,7 +67,7 @@ public class SubstitutingProperties extends PropertiesDecorator {
private enum Source {
ENV,
PROPS;
PROPS
}
}
@@ -8,9 +8,9 @@ import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.time.Duration;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.function.Predicate;
import java.util.stream.Collectors;
@@ -78,7 +78,7 @@ public final class OneDriveWindowsLocationPresetsProvider implements LocationPre
*/
@Blocking
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) {
throw new TimeoutException(cmdDescription + " timed out after " + timeoutSeconds + "s");
}
@@ -90,7 +90,7 @@ public final class MountWithinParentUtil {
EMPTY_DIR,
BROKEN_JUNCTION;
BROKEN_JUNCTION
}
@@ -22,7 +22,6 @@ import javafx.beans.property.SimpleObjectProperty;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Objects;
import java.util.Random;
@@ -62,7 +61,7 @@ public class VaultSettings {
VaultSettings(VaultSettingsJson json) {
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.unlockAfterStartup = new SimpleBooleanProperty(this, "unlockAfterStartup", json.unlockAfterStartup);
this.revealAfterMount = new SimpleBooleanProperty(this, "revealAfterMount", json.revealAfterMount);
@@ -47,7 +47,6 @@ import javafx.beans.property.ReadOnlyStringProperty;
import javafx.beans.property.SimpleBooleanProperty;
import java.io.IOException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.ReadOnlyFileSystemException;
import java.util.EnumSet;
import java.util.Objects;
@@ -58,7 +57,7 @@ import java.util.concurrent.atomic.AtomicReference;
public class Vault {
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 final VaultSettings vaultSettings;
@@ -58,7 +58,7 @@ public class VaultState extends ObservableValueBase<VaultState.Value> implements
/**
* Unknown state due to preceding unrecoverable exceptions.
*/
ERROR;
ERROR
}
private final AtomicReference<Value> value;
@@ -34,7 +34,7 @@ public class SupportedLanguages {
var collator = Collator.getInstance(preferredLocale);
collator.setStrength(Collator.PRIMARY);
var sorted = new ArrayList<String>();
sorted.add(0, null);
sorted.addFirst(null);
sorted.add(1, ENGLISH);
LANGUAGE_TAGS.stream() //
.sorted((a, b) -> collator.compare(Locale.forLanguageTag(a).getDisplayName(), Locale.forLanguageTag(b).getDisplayName())) //
@@ -41,7 +41,6 @@ import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.InvalidPathException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Optional;
import java.util.ResourceBundle;
import java.util.concurrent.ExecutorService;
@@ -50,7 +49,7 @@ import java.util.concurrent.ExecutorService;
public class CreateNewVaultLocationController implements FxController {
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 final Stage window;
@@ -23,7 +23,7 @@ public class SystemBarUtil {
/**
* 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.RevealPathService;
import java.nio.file.Files;
import java.nio.file.Path;
/**
@@ -17,14 +18,17 @@ import java.nio.file.Path;
*/
@DisplayName("JavaFX HostServices (GTK)")
@OperatingSystem(OperatingSystem.Value.LINUX)
@Priority(10)
@Priority(Priority.FALLBACK)
public class JfxRevealPathService implements RevealPathService {
@Override
public void reveal(Path p) throws RevealFailedException {
var absPath = p.toAbsolutePath();
var fxApp = FxApplication.INSTANCE.get();
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 {
throw new RevealFailedException("JavaFX Application not initialized");
}
@@ -90,7 +90,7 @@ public class Check {
SUCCEEDED,
SKIPPED,
ERROR,
CANCELLED;
CANCELLED
}
ObservableList<Result> getResults() {
@@ -84,7 +84,7 @@ public class CheckListController implements FxController {
checks.filtered(c -> !c.isChosenForExecution()).forEach(c -> c.setState(Check.CheckState.SKIPPED));
checkExecutor.executeBatch(chosenChecks);
checksListView.getSelectionModel().select(chosenChecks.get(0));
checksListView.getSelectionModel().select(chosenChecks.getFirst());
checksListView.refresh();
window.sizeToScene();
}
@@ -6,6 +6,8 @@ import org.cryptomator.common.settings.Settings;
import org.cryptomator.ui.common.FxController;
import org.cryptomator.ui.common.FxmlFile;
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.KeyLoadingScoped;
import org.jetbrains.annotations.VisibleForTesting;
@@ -13,14 +15,24 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.inject.Inject;
import javafx.animation.PauseTransition;
import javafx.application.Platform;
import javafx.beans.property.SimpleStringProperty;
import javafx.beans.property.StringProperty;
import javafx.fxml.FXML;
import javafx.geometry.Pos;
import javafx.scene.Node;
import javafx.scene.Scene;
import javafx.scene.text.Text;
import javafx.scene.text.TextFlow;
import javafx.scene.control.Hyperlink;
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.util.Duration;
import java.net.URI;
import java.util.ResourceBundle;
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 ASK_SINGULAR_KEY = "hub.checkHostTrust.message.ask";
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 Duration COPIED_INDICATION_DURATION = Duration.seconds(2);
private final Stage window;
private final HubConfig hubConfig;
@@ -49,9 +65,10 @@ public class CheckHostTrustController implements FxController {
private final ResourceBundle resourceBundle;
private final SortedSet<String> hostnames;
private final StringProperty messageLabel;
private final StringProperty descriptionLabel;
@FXML
private TextFlow hostnamesFlow;
private VBox hostnamesBox;
@Inject
public CheckHostTrustController(@KeyLoading Stage window, //
@@ -74,6 +91,7 @@ public class CheckHostTrustController implements FxController {
this.resourceBundle = resourceBundle;
this.hostnames = new TreeSet<>();
this.messageLabel = new SimpleStringProperty(resourceBundle.getString(CHECK_KEY));
this.descriptionLabel = new SimpleStringProperty("");
}
@FXML
@@ -117,12 +135,41 @@ public class CheckHostTrustController implements FxController {
}
private void renderHostnames() {
hostnamesFlow.getChildren().clear();
hostnamesBox.getChildren().clear();
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;
messageLabel.set(resourceBundle.getString(messageKey));
var plural = hostnames.size() > 1;
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() {
@@ -176,4 +223,12 @@ public class CheckHostTrustController implements FxController {
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) -> {
while (c.next()) {
if (c.wasAdded()) {
Vault anyAddedVault = c.getAddedSubList().get(0);
Vault anyAddedVault = c.getAddedSubList().getFirst();
vaultList.getSelectionModel().select(anyAddedVault);
}
}
@@ -217,7 +217,7 @@ public class RecoveryKeyValidateController implements FxController {
/**
* 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);
// remove oldest value:
decryptedBytesRead.getData().remove(0);
encryptedBytesWrite.getData().remove(0);
accessedFiles.getData().remove(0);
decryptedBytesRead.getData().removeFirst();
encryptedBytesWrite.getData().removeFirst();
accessedFiles.getData().removeFirst();
// add latest value:
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
SHOW_PREFERENCES,
SHOW_VAULT_OPTIONS;
SHOW_VAULT_OPTIONS
}
+15
View File
@@ -20,6 +20,10 @@
src: url('firacode_regular.ttf');
}
@font-face {
src: url('AtkinsonHyperlegibleMono-Regular.ttf');
}
/*******************************************************************************
* *
* Root Styling & Colors *
@@ -141,6 +145,17 @@
-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 *
+15
View File
@@ -20,6 +20,10 @@
src: url('firacode_regular.ttf');
}
@font-face {
src: url('AtkinsonHyperlegibleMono-Regular.ttf');
}
/*******************************************************************************
* *
* Root Styling & Colors *
@@ -141,6 +145,17 @@
-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 *
@@ -11,12 +11,11 @@
<?import javafx.scene.layout.StackPane?>
<?import javafx.scene.layout.VBox?>
<?import javafx.scene.shape.Circle?>
<?import javafx.scene.text.TextFlow?>
<HBox xmlns:fx="http://javafx.com/fxml"
xmlns="http://javafx.com/javafx"
fx:controller="org.cryptomator.ui.keyloading.hub.CheckHostTrustController"
minWidth="400"
maxWidth="400"
minWidth="450"
maxWidth="450"
minHeight="145"
spacing="12"
alignment="TOP_LEFT"
@@ -34,13 +33,15 @@
<FontAwesome5IconView styleClass="glyph-icon-white" glyph="QUESTION" glyphSize="24"/>
</StackPane>
</Group>
<VBox HBox.hgrow="ALWAYS">
<VBox HBox.hgrow="ALWAYS" spacing="6">
<Label styleClass="label-large" text="${controller.messageLabel}" wrapText="true" textAlignment="LEFT">
<padding>
<Insets bottom="6" top="6"/>
</padding>
</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"/>
<ButtonBar buttonMinWidth="120" buttonOrder="+CX">
<buttons>
@@ -173,6 +173,9 @@ hub.noKeychain.openBtn=Open Preferences
hub.checkHostTrust.message.check=Checking Configuration…
hub.checkHostTrust.message.ask=Trust this host?
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.denyBtn=Deny
### Waiting
@@ -18,11 +18,6 @@ generic.button.print=طباعة
generic.button.remove=حذف
## Vault state
vault.state.locked=مقفلة
vault.state.unlocked=مفتوحة
vault.state.missing=مفقودة
vault.state.migrationNeeded=الترحيل مطلوب
vault.state.processing=جارٍ المعالجة
vault.state.error=خطأ
# Error
@@ -105,17 +100,9 @@ addvault.new.readme.accessLocation.4=لا تتردد في إزالة هذا ال
## Existing
addvaultwizard.existing.title=أضِف مخزن موجود
addvaultwizard.existing.instruction=اختر ملف "vault.cryptomator" من خزينتك الحالية. إذا كان يوجد فقط ملف اسمه "masterkey.cryptomator"، اختره عوضاً عنه.
addvaultwizard.existing.restore=استعادة…
addvaultwizard.existing.chooseBtn=اختر…
addvaultwizard.existing.filePickerTitle=حدد مِلَفّ المخزن
addvaultwizard.existing.filePickerMimeDesc=مخزن Cryptomator
addvaultwizard.existing.notAVault.title=ليست خزنة
addvaultwizard.existing.notAVault.message=المجلد المحدد ليس خزنة Cryptomator
addvaultwizard.existing.notAVault.description.missingDataDir=المجلد الفرعي المطلوب "d" مفقود داخل "%s".
addvaultwizard.existing.notAVault.description.dataNotADirectory=العنصر "d" داخل "%s" ليس مجلدًا.
addvaultwizard.existing.notAVault.description.missingVaultConfig=الملف المطلوب "vault.cryptomator" مفقود داخل "%s".
addvaultwizard.existing.notAVault.description.vaultConfigAccessDenied=تعذّر قراءة الملف "vault.cryptomator" داخل "%s" بسبب حقوق وصول غير كافية.
addvaultwizard.existing.notAVault.description.unsupportedStructure=بنية الدليل لـ "%s" غير مدعومة.
## Success
addvaultwizard.success.nextStepsInstructions=تم إضافة مخزن "%s".\nتحتاج إلى فتح هذا المخزن للوصول أو إضافة محتويات إليه. بدلاً من ذلك، يمكنك فتحه في أي وقت لاحق.
addvaultwizard.success.unlockNow=افتح الان
@@ -144,7 +131,6 @@ unlock.unlockBtn=افتح
## Select
unlock.chooseMasterkey.message=لم يتم العثور على مفتاح التشفير الرئيسي
unlock.chooseMasterkey.description=لم يتمكن Cryptomator من العثور على مفتاح التشفير الرئيسي للمخزن "%s". الرجاء اختيار الملف يدوياً.
unlock.chooseMasterkey.restoreInstead=استعادة ملف المفتاح الرئيسي بدلاً من ذلك
unlock.chooseMasterkey.filePickerTitle=اختر ملف الـ Masterkey
unlock.chooseMasterkey.filePickerMimeDesc=مفتاح التشفير الرئيسي في Cryptomator
## Success
@@ -169,14 +155,7 @@ hub.noKeychain.message=غير قادر على الوصول إلى مفتاح ا
hub.noKeychain.description=من أجل فتح مركز مخازن، مطلوب مفتاح جهاز، يتم تأمينه باستخدام سلسلة مفاتيح. للمضي قدما، قم بتمكين "%s" واختر سلسلة مفاتيح في التفضيلات.
hub.noKeychain.openBtn=فتح التفضيلات
### Check Host Authenticity
hub.checkHostTrust.message.check=جارٍ التحقق من الإعدادات…
hub.checkHostTrust.message.ask=هل تثق بهذا المضيف؟
hub.checkHostTrust.message.ask.plural=هل تثق بهذه المضيفين؟
hub.checkHostTrust.description.ask=لا يتعرف Cryptomator على هذا المضيف. لفتح الخزنة، يجب الوثوق به. لا تثق به إلا إذا كنت تتعرف على العنوان أدناه.
hub.checkHostTrust.description.ask.plural=لا يتعرف Cryptomator على هذه المضيفين. لفتح الخزنة، يجب الوثوق بها. لا تثق بها إلا إذا كنت تتعرف على العناوين أدناه.
hub.checkHostTrust.copyBtn.tooltip=نسخ العنوان إلى الحافظة
hub.checkHostTrust.trustBtn=ثق
hub.checkHostTrust.denyBtn=رفض
### Waiting
hub.auth.message=جاري الانتظار للمصادقة…
hub.auth.description=يجب أن يتم إعادة توجيهك تلقائياً إلى صفحة تسجيل الدخول.
@@ -203,14 +182,10 @@ hub.registerFailed.message=فشل تسجيل الجهاز
hub.registerFailed.description.generic=حدث خطأ في عملية تسجيل الاسم. لمزيد من التفاصيل، راجع سجل التطبيق.
hub.registerFailed.description.deviceAlreadyExists=هذا الجهاز مسجل لمستخدم مختلف بالفعل. حاول تغيير حساب المستخدم أو استخدام جهاز مختلف.
### Archived
hub.archived.message=الخزنة مؤرشفة
hub.archived.description=تمت أرشفة هذه الخزنة ولم تعد قابلة للوصول. يرجى التواصل مع مالك الخزنة.
### Unauthorized
hub.unauthorized.message=تم رفض الوصول
hub.unauthorized.description=غير مسموح لك بفتح هذا المستودع. اتصل بمالك المستودع لطلب الوصول.
### Untrusted Host
hub.untrustedHost.message=المضيف غير موثوق
hub.untrustedHost.description=تم حظر الاتصال بـ Hub من أجل أمانك. إذا كنت تعتقد أن مضيف Hub آمن، فتواصل مع مسؤول Hub أو حاول مرة أخرى.
### Requires Account Initialization
hub.requireAccountInit.message=مطلوب اتخاذ إجراء
hub.requireAccountInit.description.0=للمتابعة، يرجى إكمال الخطوات المطلوبة في
@@ -288,8 +263,6 @@ health.check.detail.checkFinishedAndFound=تم انتهاء الفحص. فضلا
health.check.detail.checkFailed=الفحص توقف بسبب خطأ.
health.check.detail.checkCancelled=تم إلغاء الفحص.
health.check.detail.listFilters.label=التصفية
health.check.detail.filterSeverity=تصفية حسب الخطورة
health.check.detail.filterFixState=تصفية حسب حالة الإصلاح
health.check.detail.fixAllSpecificBtn=إصلاح كل الأنواع
health.check.exportBtn=تصدير التقرير
## Result view
@@ -324,7 +297,6 @@ preferences.general.debugDirectory=عرض ملفات السجل
preferences.general.autoStart=تشغيل Cryptomator عند بدء تشغيل النظام
preferences.general.keychainBackend=تخزين كلمات المرور مع
preferences.general.quickAccessService=إضافة الخزانات المفتوحة إلى منطقة الوصول السريع
preferences.general.resetTrustedHosts=إعادة تعيين المضيفين الموثوقين
## Interface
preferences.interface=الواجهة
preferences.interface.theme=الشكل والمظهر
@@ -363,13 +335,8 @@ preferences.updates.lastUpdateCheck.never=مطلقاً
preferences.updates.lastUpdateCheck.recently=مؤخراً
preferences.updates.lastUpdateCheck.daysAgo=منذ %s يوم
preferences.updates.lastUpdateCheck.hoursAgo=منذ %s ساعة
preferences.updates.prohibitedDueToUnlockedVaults.1=يرجى
preferences.updates.prohibitedDueToUnlockedVaults.2=قفل خزائنك
preferences.updates.prohibitedDueToUnlockedVaults.3=لتثبيت التحديث.
preferences.updates.checkFailed=فشل في البحث عن تحديثات البرنامج تحقق من اتصالك بالإنترنت أو حاول مرة أخرى لاحقاً.
preferences.updates.updateFailed=فشل التحديث. يرجى تثبيت التحديث يدويًا.
preferences.updates.upToDate=Cryptomator محدث لاخر نسخة.
preferences.updates.visitDownloadPage=زيارة صفحة التنزيل
## Contribution
preferences.contribute=ادعمنا
@@ -380,7 +347,6 @@ preferences.contribute.promptText=قم بلصق رمز شهادة الداعم
preferences.contribute.thankYou=نشكرك على دعمك لتطوير Cryptomator مفتوح المصدر!
preferences.contribute.donate=تبرع
preferences.contribute.sponsor=الراعي
preferences.contribute.removeCert.tooltip=إزالة الشهادة
### Remove License Key Dialog
removeCert.title=إزالة الشهادة
@@ -390,7 +356,6 @@ removeCert.description=الميزات الأساسية لـ Cryptomator غير
## About
preferences.about=حول البرنامج
preferences.about.thirdPartyLicenses=تراخيص الأطراف الثالثة
# Vault Statistics
stats.title=إحصائيات عن %s
@@ -430,7 +395,6 @@ stats.access.total=مجموع الوصول: %d
# Main Window
## Vault List
main.vaultlist=المخازن
main.vaultlist.listEntry=الخزنة %s (%s)
main.vaultlist.emptyList.onboardingInstruction=انقر هنا لإضافة خزنة
main.vaultlist.contextMenu.remove=حذف…
main.vaultlist.contextMenu.lock=قفل
@@ -439,20 +403,13 @@ main.vaultlist.contextMenu.unlockNow=افتح الان
main.vaultlist.contextMenu.vaultoptions=إظهار خيارات المخزن
main.vaultlist.contextMenu.reveal=اظهار القرص
main.vaultlist.contextMenu.share=مشاركة…
main.vaultlist.addVaultBtn.menuItemNew=إنشاء خزنة جديدة…
main.vaultlist.addVaultBtn.menuItemExisting=فتح خزنة موجودة…
main.vaultlist.addVaultBtn.menuItemRecover=استعادة خزنة موجودة…
main.vaultlist.addVaultButton.tooltip=أضِف مخزنًا
main.vaultlist.showEventsButton.tooltip=فتح عرض الأحداث
main.vaultlist.showPreferencesButton.tooltip=إظهار التفضيلات
##Notification
main.notification.updateAvailable=هناك تحديث متاح.
main.notification.support=دعم Cryptomator.
main.notification.closeButton.tooltip=إغلاق شريط المعلومات
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=شكرا لاختيار Cryptomator لحماية ملفاتك. إذا كنت بحاجة إلى أية مساعدة، تحقق من دليل وتعليمات الإستخدام:
main.vaultDetail.storageLocation=موقع تخزين الخزنة
### Locked
main.vaultDetail.lockedStatus=مغلق
main.vaultDetail.unlockBtn=فتح…
@@ -484,8 +441,6 @@ main.vaultDetail.missing.recheck=إعادة الفحص
main.vaultDetail.missing.remove=حذف من قائمة الخزنات…
main.vaultDetail.missing.changeLocation=تغيير موقع الخزنة…
### Missing Vault Config
main.vaultDetail.missingVaultConfig.info=إعدادات الخزنة مفقودة.
main.vaultDetail.missingVaultConfig.restore=استعادة إعدادات الخزنة
### Needs Migration
main.vaultDetail.migrateButton=ترقية الحافظة
main.vaultDetail.migratePrompt=يجب ترقية المخزن الخاص بك إلى تنسيق جديد، قبل أن تتمكن من الوصول إليه
@@ -510,7 +465,6 @@ vaultOptions.general=عام
vaultOptions.general.vaultName=اسم المخزن
vaultOptions.general.autoLock.lockAfterTimePart1=قفل عند الخمول لمدة
vaultOptions.general.autoLock.lockAfterTimePart2=دقائق
vaultOptions.general.autoLock.accessibleText=مهلة القفل بالدقائق
vaultOptions.general.unlockAfterStartup=فتح قفل المخزن عند بدء تشغيل Cryptomator
vaultOptions.general.actionAfterUnlock=بعد فتح القفل بنجاح
vaultOptions.general.actionAfterUnlock.ignore=‮لا تفعل شيئاً
@@ -541,7 +495,6 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=نسيان كلمة المرور
vaultOptions.masterkey.recoveryKeyExplanation=مفتاح الاسترداد هو وسيلتك الوحيدة لاستعادة الوصول إلى مخزنك إذا فقدت كلمة المرور.
vaultOptions.masterkey.showRecoveryKeyBtn=عرض مفتاح الاسترداد
vaultOptions.masterkey.recoverPasswordBtn=إعادة تعيين كلمة المرور
vaultOptions.masterkey.missingMasterkeyFile=هذه الخيارات متاحة فقط إذا كان ملف المفتاح الرئيسي موجودًا في دليل الخزنة.
## Hub
vaultOptions.hub=الإسترداد
vaultOptions.hub.convertInfo=يمكنك استخدام مفتاح الاسترداد لتحويل هذه خزانة Hub إلى خزانة تعتمد على كلمة مرور في حالة الطوارئ.
@@ -552,7 +505,6 @@ vaultOptions.hub.convertBtn=التحويل إلى خزانة قائمة على
recoveryKey.display.title=إظهار مفتاح الاسترداد
recoveryKey.create.message=مطلوب كلمة المرور
recoveryKey.create.description=أدخل كلمة المرور الخاصة بك لإظهار مفتاح الاسترداد ل "%s":
recoveryKey.recover.description=أدخل كلمة المرور لـ "%s" لاستعادة إعدادات الخزنة.
recoveryKey.display.description=يمكن استخدام مفتاح الاسترداد التالي لاستعادة الوصول إلى "%s":
recoveryKey.display.StorageHints=حافظ عليه في مكان ما آمن جداً، على سبيل المثال\n • تخزينه باستخدام مدير كلمات المرور\n • حفظه على محرك أقراص خارجي USB\n • كتابته أو طباعته على الورق
## Reset Password
@@ -565,59 +517,29 @@ recoveryKey.recover.invalidKey=مفتاح الاسترداد غير صالح
recoveryKey.printout.heading=مفتاح استرداد Cryptomator\n"%s"\n
### Reset Password
recoveryKey.recover.resetBtn=إعادة الضبط
recoveryKey.recover.recoverBtn=استعادة
### Recovery Key Password Reset Success
recoveryKey.recover.resetSuccess.message=تم إعادة تعيين كلمة المرور بنجاح
recoveryKey.recover.resetSuccess.description=يمكنك فتح الخزانة الخاصة بك بكلمة المرور الجديدة.
### Recovery Key Vault Config Reset Success
recoveryKey.recover.resetVaultConfigSuccess.message=تمت استعادة إعدادات الخزنة
recoveryKey.recover.resetMasterkeyFileSuccess.message=تمت استعادة ملف المفتاح الرئيسي
recoveryKey.recover.resetMasterkeyFileSuccess.description=يمكنك الآن فتح خزنتك باستخدام كلمة المرور.
# Recover Vault Config File and/or Masterkey
##Add Existing Vault without recovery - Dialog
recover.existing.title=تمت إضافة الخزنة
recover.existing.message=تمت إضافة الخزنة بنجاح
recover.existing.description=تمت إضافة خزنتك "%s" إلى قائمة الخزائن. لم تكن هناك حاجة لعملية استعادة.
##Vault Already Exists - Dialog
recover.alreadyExists.title=الخزنة موجودة بالفعل
recover.alreadyExists.message=تمت إضافة هذه الخزنة بالفعل
recover.alreadyExists.description=خزنتك "%s" موجودة بالفعل في قائمة الخزائن، لذلك لم تتم إضافتها مرة أخرى.
##Invalid Selection - Dialog
recover.invalidSelection.title=تحديد غير صالح
recover.invalidSelection.message=تحديدك ليس خزنة
recover.invalidSelection.description=يجب أن يكون المجلد المحدد خزنة Cryptomator صالحة.
## Contact Hub Vault Owner - Dialog
contactHubVaultOwner.title=خزانة Hub
contactHubVaultOwner.message=تم إنشاء هذه الخزنة باستخدام Cryptomator Hub
contactHubVaultOwner.description=يرجى التواصل مع مالك الخزنة لاستعادة الملف المفقود. يمكنه تنزيل قالب الخزنة من Cryptomator Hub.
##Dialog Title
recover.recoverVaultConfig.title=استعادة إعدادات الخزنة
recover.recoverMasterkey.title=استعادة المفتاح الرئيسي
## OnBoarding
recover.onBoarding.chooseMethod=اختر طريقة الاستعادة:
recover.onBoarding.useRecoveryKey=استخدام مفتاح الاستعادة
recover.onBoarding.usePassword=استخدام كلمة المرور
recover.onBoarding.intro=تأكد من التحقق مما يلي:
recover.onBoarding.pleaseConfirm=قبل المتابعة، يرجى تأكيد ما يلي:
recover.onBoarding.otherwisePleaseConfirm=وإلا، يرجى تأكيد ما يلي:
recover.onBoarding.allMissing.intro=إذا كانت هذه الخزنة مُدارة بواسطة Cryptomator Hub، فيجب على مالك الخزنة استعادتها لك.
recover.onBoarding.intro.ensure=جميع الملفات متزامنة بالكامل.
recover.onBoarding.affirmation=لقد قرأت هذه المتطلبات وفهمتها
###Vault Config Missing
recover.onBoarding.intro.recoveryKey=لديك مفتاح الاستعادة وتعرف ما إذا تم استخدام الإعدادات المتقدمة.
recover.onBoarding.intro.password=لديك كلمة مرور الخزنة وتعرف ما إذا تم استخدام الإعدادات المتقدمة.
###Masterkey Missing
recover.onBoarding.intro.masterkey.recoveryKey=لديك مفتاح استعادة الخزنة.
## Expert Settings
recover.expertSettings.shorteningThreshold.title=يجب أن تتطابق هذه القيمة مع القيمة المستخدمة قبل الاستعادة لضمان التوافق مع البيانات المشفّرة سابقًا.
# Convert Vault
convertVault.title=تحويل الخزانة
@@ -695,8 +617,6 @@ decryptNames.filePicker.title=اختر ملَف مشفر
decryptNames.filePicker.extensionDescription=ملف مشفر
decryptNames.copyTable.tooltip=نسخ الجدول
decryptNames.clearTable.tooltip=مسح الجدول
decryptNames.column.encrypted=مشفّر
decryptNames.column.decrypted=مفكوك التشفير
decryptNames.copyHint=نسخ محتوى الخلية مع %s
decryptNames.dropZone.message=إسقاط الملفات أو انقر لتحديد
decryptNames.dropZone.error.vaultInternalFiles=مخزن الملفات الداخلية مع عدم تحديد اسم قابل للتشفير
@@ -709,8 +629,6 @@ decryptNames.dropZone.error.generic=فشل فك تشفير أسماء الملف
eventView.title=أحداث
eventView.filter.allVaults=الكل
eventView.clearListButton.tooltip=تفريغ القائمة
eventView.filterVaults=تصفية حسب الخزنة
eventView.cell.actionsButton.tooltip=إجراءات الأحداث
## event list entries
eventView.entry.vaultLocked.description=فتح "%s" للحصول على التفاصيل
eventView.entry.conflictResolved.message=تم حل التضارب
@@ -725,15 +643,9 @@ eventView.entry.brokenDirFile.showEncrypted=إظهار الرابط المكسو
eventView.entry.brokenFileNode.message=عقدة ملفات النظام التافلة
eventView.entry.brokenFileNode.showEncrypted=عرض العقدة المشفّرة التافلة
eventView.entry.brokenFileNode.copyDecrypted=نسخ المسار غير المشفر
eventView.entry.inUse.message=الملف قيد الاستخدام
eventView.entry.inUse.showDecrypted=إظهار الملف غير المشفر
eventView.entry.inUse.showEncrypted=عرض ملَف المشفر
eventView.entry.inUse.copyUserAndDevice=نسخ اسم المستخدم والجهاز القافل
eventView.entry.inUse.ignoreLock=تجاهل حالة الاستخدام
# Notifications
## FileIsInUse Notification
notification.inUse.message=الملف قيد الاستخدام على جهاز آخر
notification.inUse.description=الملف مفتوح بواسطة %s على %s. اطلب منهم إغلاق الملف والسماح للمزامنة بالانتهاء. يمكنك تجاهل الحالة لفتحه الآن، لكن قد يؤدي ذلك إلى تعارضات أو الكتابة فوق تغييرات أحدث.
notification.inUse.action=تجاهل حالة الاستخدام
@@ -176,8 +176,6 @@ hub.register.registerBtn=Регистриране
hub.registerSuccess.unlockBtn=Отключване
### Registration Failed
### Archived
hub.archived.message=Хранили е архивиран
hub.archived.description=Това хранилище е архивирано и вече не е достъпно. Моля, свържете се със собственика на хранилището.
### Unauthorized
hub.unauthorized.message=Отказан достъп
### Untrusted Host
@@ -563,7 +561,6 @@ dokanySupportEnd.preferencesBtn=Към настройките
# Event View
eventView.filter.allVaults=Всички
## event list entries
@@ -172,9 +172,6 @@ hub.noKeychain.openBtn=Åbn Indstillinger
hub.checkHostTrust.message.check=Kontrollerer konfiguration…
hub.checkHostTrust.message.ask=Stol på denne vært?
hub.checkHostTrust.message.ask.plural=Stol på disse værter?
hub.checkHostTrust.description.ask=Cryptomator genkender ikke denne vært. For at låse boksen op, skal den have tillid til den. Stol kun på den, hvis du genkender adressen nedenfor.
hub.checkHostTrust.description.ask.plural=Cryptomator genkender ikke denne vært. For at låse boksen op, skal den have tillid til den. Stol kun på den, hvis du genkender adressen nedenfor.
hub.checkHostTrust.copyBtn.tooltip=Kopiér adresse til udklipsholder
hub.checkHostTrust.trustBtn=Hav tillid
hub.checkHostTrust.denyBtn=Afvis
### Waiting
@@ -158,7 +158,6 @@ hub.noKeychain.message=Zugriff auf Geräteschlüssel nicht möglich
hub.noKeychain.description=Zum Entsperren von Hub-Tresoren wird ein Geräteschlüssel benötigt, der in einem Schlüsselbund gesichert ist. Um fortzufahren, aktiviere „%s“ und wähle in den Einstellungen einen Schlüsselbund.
hub.noKeychain.openBtn=Einstellungen öffnen
### Check Host Authenticity
hub.checkHostTrust.copyBtn.tooltip=Adresse in die Zwischenablage kopieren
hub.checkHostTrust.trustBtn=Vertrauen
### Waiting
hub.auth.message=Warten auf Authentifizierung …
@@ -172,9 +172,6 @@ hub.noKeychain.openBtn=Ouvrir les préférences
hub.checkHostTrust.message.check=Vérification de configuration…
hub.checkHostTrust.message.ask=Faire confiance à cet hôte ?
hub.checkHostTrust.message.ask.plural=Faire confiance à ces hôtes ?
hub.checkHostTrust.description.ask=Cryptomator ne reconnaît pas cet hôte. Pour déverrouiller le coffre, il faut lui faire confiance. Ne lui faites confiance que si vous reconnaissez l'adresse ci-dessous.
hub.checkHostTrust.description.ask.plural=Cryptomator ne reconnaît pas ces hôtes. Pour déverrouiller le coffre, il faut leur faire confiance. Ne leur faites confiance que si vous reconnaissez les adresses ci-dessous.
hub.checkHostTrust.copyBtn.tooltip=Copier ladresse dans le presse-papier
hub.checkHostTrust.trustBtn=Approuver
hub.checkHostTrust.denyBtn=Refuser
### Waiting
@@ -127,7 +127,7 @@ removeVault.description=Ez kizárólag a Cryptomator listájából távolítja e
# Change Password
changepassword.title=Jelszó megváltoztatása
changepassword.enterOldPassword=Írja be a jelenlegi jelszót a következő tárolóhoz: "%s"
changepassword.enterOldPassword=Írja be a jelenlegi jelszavat a következő széfhez "%s"
changepassword.finalConfirmation=Megértettem, hogy nem fogok hozzáférni az adataimhoz amennyiben elfelejtem a jelszavam
# Forget Password
@@ -138,7 +138,7 @@ forgetPassword.confirmBtn=Jelszó elfelejtése
# Unlock
unlock.title="%s" feloldása
unlock.passwordPrompt=Írja be a jelszavát a következő tárolóhoz "%s":
unlock.passwordPrompt=Írja be a jelszavát a következő széfhez "%s":
unlock.savePassword=Jelszó megjegyzése
unlock.unlockBtn=Feloldás
## Select
@@ -151,7 +151,7 @@ unlock.chooseMasterkey.filePickerMimeDesc=Cryptomator Mesterkulcs
unlock.success.message=Sikeres feloldás
unlock.success.description=Mostantól elérhető a csatolási pontján keresztül a következő tároló tartalma: "%s".
unlock.success.rememberChoice=Jegyezze meg a választást és ne mutassa többet
unlock.success.revealBtn=Tároló megjelenítése
unlock.success.revealBtn=Széf megjelenítése
## Failure
unlock.error.customPath.message=Nem lehet csatolni a tárolót az egyéni útvonalhoz
unlock.error.customPath.description.notSupported=Ha szeretné továbbra is az egyéni útvonalat használni, kérem, menjen a beállításokba és válasszon egy kötet típust, amely támogatja azt. Máskülönben, menjen a tároló beállításaihoz és válasszon egy támogatott csatoláspontot.
@@ -426,7 +426,7 @@ stats.access.total=Összes hozzáférés: %d
# Main Window
## Vault List
main.vaultlist=Titkosított tárolók
main.vaultlist=Széfek
main.vaultlist.listEntry=Titkosított tároló %s (%s)
main.vaultlist.emptyList.onboardingInstruction=Kattintson ide egy titkosított tároló hozzáadásához
main.vaultlist.contextMenu.remove=Eltávolítás…
@@ -439,7 +439,7 @@ main.vaultlist.contextMenu.share=Megosztás…
main.vaultlist.addVaultBtn.menuItemNew=Új titkosított tároló létrehozása…
main.vaultlist.addVaultBtn.menuItemExisting=Titkosított tároló megnyitása…
main.vaultlist.addVaultBtn.menuItemRecover=Titkosított tároló visszaállítása…
main.vaultlist.addVaultButton.tooltip=Titkosított tároló hozzáadása
main.vaultlist.addVaultButton.tooltip=Széf hozzáadása
main.vaultlist.showEventsButton.tooltip=Eseménynapló megnyitása
main.vaultlist.showPreferencesButton.tooltip=Beállítások megnyitása
##Notification
@@ -588,7 +588,7 @@ recover.invalidSelection.message=A kiválasztott elem nem titkosított tároló
recover.invalidSelection.description=A kiválasztott mappának érvényes Cryptomator tárolónak kell lennie.
## Contact Hub Vault Owner - Dialog
contactHubVaultOwner.title=Hub tároló
contactHubVaultOwner.title=Hub széf
contactHubVaultOwner.message=Ezt a titkosító tárolót a Cryptomator Hub segítségével hozták létre
contactHubVaultOwner.description=Kérjük, vegye fel a kapcsolatot a tároló tulajdonosával a hiányzó fájl helyreállítása érdekében. A tároló-sablont a Cryptomator Hubról töltheti le.
@@ -682,7 +682,7 @@ shareVault.visitHub=Látogassa meg a Cryptomator Hubot
shareVault.hub.message=Hogyan osszon meg egy Hub-tárolót
shareVault.hub.description=Ahhoz, hogy megossza a tároló tartalmát egy másik csapattaggal, két lépést kell végrehajtania:
shareVault.hub.instruction.1=1. Ossza meg a titkosított tároló mappájának hozzáférését felhőalapú tárolón keresztül.
shareVault.hub.instruction.1=Ossza meg a titkosított széf mappájának hozzáférését felhőalapú tárolón keresztül.
shareVault.hub.instruction.2=2. Adjon hozzáférést a csapattagnak a Cryptomator Hubban.
shareVault.hub.openHub=Nyissa meg a Cryptomator Hubot
@@ -172,9 +172,6 @@ hub.noKeychain.openBtn=Apri Preferenze
hub.checkHostTrust.message.check=Controllo Configurazione…
hub.checkHostTrust.message.ask=Ti fidi di questo host?
hub.checkHostTrust.message.ask.plural=Ti fidi di questi host?
hub.checkHostTrust.description.ask=Cryptomator non riconosce questo host. Per sbloccare la cassaforte, esso deve essere affidabile. Rendilo affidabile solo se riconosci l'indirizzo qui sotto.
hub.checkHostTrust.description.ask.plural=Cryptomator non riconosce questi host. Per sbloccare la cassaforte, essi devono essere affidabili. Rendili affidabili solo se riconosci gli indirizzi qui sotto.
hub.checkHostTrust.copyBtn.tooltip=Copia indirizzo negli appunti
hub.checkHostTrust.trustBtn=Fidati
hub.checkHostTrust.denyBtn=Rifiuta
### Waiting
@@ -400,7 +400,6 @@ main.vaultlist.contextMenu.unlockNow=今すぐ解錠
main.vaultlist.contextMenu.vaultoptions=金庫のオプションを表示
main.vaultlist.contextMenu.reveal=ドライブを表示
main.vaultlist.contextMenu.share=共有…
main.vaultlist.addVaultBtn.menuItemNew=新しい金庫を作成…
main.vaultlist.addVaultButton.tooltip=金庫を追加
##Notification
main.notification.updateAvailable=アップデートがあります。
@@ -629,10 +628,7 @@ decryptNames.dropZone.error.generic=ファイル名の復号化に失敗しま
# Event View
eventView.title=イベント
eventView.filter.allVaults=すべて
## event list entries
eventView.entry.decryptionFailed.showEncrypted=暗号化されたファイルを表示
eventView.entry.inUse.showDecrypted=復号化されたファイルを表示
eventView.entry.inUse.showEncrypted=暗号化されたファイルを表示
eventView.entry.inUse.copyUserAndDevice=ロックしているユーザーとデバイス名をコピー
@@ -172,9 +172,6 @@ hub.noKeychain.openBtn=설정 열기
hub.checkHostTrust.message.check=구성 확인 중…
hub.checkHostTrust.message.ask=이 호스트를 신뢰하겠습니까?
hub.checkHostTrust.message.ask.plural=이 호스트를 신뢰하겠습니까?
hub.checkHostTrust.description.ask=Cryptomator에서 이 호스트를 인식하지 못했습니다. Vault를 잠금 해제하려면 이 호스트를 신뢰해야 합니다. 아래 주소를 알고 있는 경우에만 신뢰하도록 설정하세요.
hub.checkHostTrust.description.ask.plural=Cryptomator에서 이 호스트들을 인식하지 못했습니다. Vault를 잠금 해제하려면 해당 호스트를 신뢰 대상으로 등록해야 합니다. 아래 주소를 알고 있는 경우에만 신뢰하도록 설정하세요.
hub.checkHostTrust.copyBtn.tooltip=클립보드로 주소 복사하기
hub.checkHostTrust.trustBtn=신뢰하기
hub.checkHostTrust.denyBtn=거부
### Waiting
@@ -163,9 +163,6 @@ hub.noKeychain.description=Lai atslēgtu Hub glabātavas, ir nepieciešama ierī
hub.noKeychain.openBtn=Atvērt iestatījumus
### Check Host Authenticity
hub.checkHostTrust.message.check=Pārbauda konfigurāciju…
hub.checkHostTrust.description.ask=Criptomator neaptazīst šo saimniekdatoru. Lai atslēgtu glabātavu, tam ir jāuzticas. Uzticies tam tikai tad, ja atpazīsti zemāk esošo adresi!
hub.checkHostTrust.description.ask.plural=Criptomator neaptazīst šos saimniekdatorus. Lai atslēgtu glabātavu, tiem ir jāuzticas. Uzticies tiem tikai tad, ja atpazīsti zemāk esošās adreses!
hub.checkHostTrust.copyBtn.tooltip=Ievietot adresi starpliktuvē
hub.checkHostTrust.trustBtn=Uzticēties
hub.checkHostTrust.denyBtn=Noraidīt
### Waiting
@@ -172,9 +172,6 @@ hub.noKeychain.openBtn=Abrir preferências
hub.checkHostTrust.message.check=Verificando a configuração…
hub.checkHostTrust.message.ask=Confiar neste anfitrião?
hub.checkHostTrust.message.ask.plural=Confiar nestes anfitriões?
hub.checkHostTrust.description.ask=O Cryptomator não reconhece este provedor. Para desbloquear o cofre, é necessário confiar nele. Confie apenas se reconhecer o endereço abaixo.
hub.checkHostTrust.description.ask.plural=O Cryptomator não reconhece estes provedores. Para desbloquear o cofre, é necessário confiar neles. Confie apenas se reconhecer os endereços abaixo.
hub.checkHostTrust.copyBtn.tooltip=Copiar endereço para a área de transferência
hub.checkHostTrust.trustBtn=Confiar
hub.checkHostTrust.denyBtn=Negar
### Waiting
@@ -150,7 +150,7 @@ unlock.chooseMasterkey.filePickerMimeDesc=Masterkey do Cryptomator
## Success
unlock.success.message=Desbloqueado com sucesso
unlock.success.description=O conteúdo no cofre "%s" agora está acessível no seu ponto de montagem.
unlock.success.rememberChoice=Lembrar escolha. Não perguntar novamente
unlock.success.rememberChoice=Lembrar opção escolhida. Não perguntar novamente
unlock.success.revealBtn=Revelar volume
## Failure
unlock.error.customPath.message=Não foi possível iniciar o cofre no caminho personalizado
@@ -172,9 +172,6 @@ hub.noKeychain.openBtn=Abrir preferências
hub.checkHostTrust.message.check=Verificando configuração…
hub.checkHostTrust.message.ask=Confiar neste host?
hub.checkHostTrust.message.ask.plural=Confiar nestes hosts?
hub.checkHostTrust.description.ask=O Cryptomador não reconhece este host. Para desbloquear o cofre, ele precisa ser confiável. Apenas confie nele se você reconhecer o endereço abaixo.
hub.checkHostTrust.description.ask.plural=O Cryptomador não reconhece este host. Para desbloquear o cofre, ele precisa ser confiável. Apenas confie nele se você reconhecer os endereços abaixo.
hub.checkHostTrust.copyBtn.tooltip=Copiar endereço para a área de transferência
hub.checkHostTrust.trustBtn=Confio
hub.checkHostTrust.denyBtn=Recusar
### Waiting
@@ -218,7 +215,7 @@ hub.requireAccountInit.description.1=Perfil de usuário do Hub
hub.requireAccountInit.description.2=.
### License Exceeded
hub.invalidLicense.message=Licença Hub invalida
hub.invalidLicense.description=Sua instância do Cryptomator Hub tem uma licença inválida. Informe a um administrador do Hub para atualizar ou renovar a licença.
hub.invalidLicense.description=Sua instância do Cryptomator Hub tem uma licença inválida. Informe a um administrador do Hub para atualizar ou renová-la.
# Lock
## Force
@@ -357,7 +354,7 @@ preferences.updates=Atualizações
preferences.updates.currentVersion=Versão atual: %s
preferences.updates.autoUpdateCheck=Buscar atualizações automaticamente
preferences.updates.checkNowBtn=Verificar agora
preferences.updates.updateAvailable=Atualização para a versão %s disponível.
preferences.updates.updateAvailable=Atualizar para versão %s disponível.
preferences.updates.lastUpdateCheck=Última verificação: %s
preferences.updates.lastUpdateCheck.never=nunca
preferences.updates.lastUpdateCheck.recently=recentemente
@@ -172,9 +172,6 @@ hub.noKeychain.openBtn=Открыть настройки
hub.checkHostTrust.message.check=Проверка конфигурации…
hub.checkHostTrust.message.ask=Доверять этому хосту?
hub.checkHostTrust.message.ask.plural=Доверять этим хостам?
hub.checkHostTrust.description.ask=Cryptomator не распознаёт этот хост. Чтобы разблокировать хранилище, оно должно быть доверенным. Доверяйте, только если вам известен указанный ниже адрес.
hub.checkHostTrust.description.ask.plural=Cryptomator не распознаёт эти хосты. Чтобы разблокировать хранилище, оно должно быть доверенным. Доверяйте им, только если вам известны указанные ниже адреса.
hub.checkHostTrust.copyBtn.tooltip=Скопировать адрес в буфер
hub.checkHostTrust.trustBtn=Доверять
hub.checkHostTrust.denyBtn=Отклонить
### Waiting
@@ -170,9 +170,6 @@ hub.noKeychain.openBtn=Otvoriť predvoľby
hub.checkHostTrust.message.check=Kontrolovanie konfigurácie…
hub.checkHostTrust.message.ask=Veríte tomuto hostovi?
hub.checkHostTrust.message.ask.plural=Veríte týmto hostom?
hub.checkHostTrust.description.ask=Cryptomator nedokáže rozpoznať tohto hostiteľa. Na odomknutie trezoru je potrebné, aby bol dôveryhodný. Dôverujte mu iba v prípade, že rozpoznáte adresu uvedenú nižšie.
hub.checkHostTrust.description.ask.plural=Cryptomator tieto hostiteľské počítače nerozpoznáva. Na odomknutie trezoru musia byť dôveryhodní. Dôverujte im iba v prípade, že rozpoznáte adresy uvedené nižšie.
hub.checkHostTrust.copyBtn.tooltip=Skopírovať adresu do schránky
hub.checkHostTrust.trustBtn=Veriť
hub.checkHostTrust.denyBtn=Odmietnuť
### Waiting
@@ -202,7 +199,6 @@ hub.unauthorized.message=Prístup zamietnutý
hub.unauthorized.description=Nie ste autorizovaný na otvorenie tohto trezora. Kontaktujte vlastníka trezora pre vyžiadanie prístupu.
### Untrusted Host
hub.untrustedHost.message=Nedôveryhodný host
hub.untrustedHost.description=Pripojenie k Hubu bolo z bezpečnostných dôvodov zablokované. Ak si myslíte, že hostiteľ Hubu je bezpečný, kontaktujte správcu Hubu alebo to skúste znova.
### Requires Account Initialization
hub.requireAccountInit.message=Vyžadovaná akcia
hub.requireAccountInit.description.0=Pre pokračovanie vyplňte potrebné kroky vo vašom
@@ -529,13 +529,10 @@ recoveryKey.recover.resetSuccess.description=Yeni parola ile kasanızın kilidin
# Recover Vault Config File and/or Masterkey
##Add Existing Vault without recovery - Dialog
recover.existing.title=Kasa Eklendi
##Vault Already Exists - Dialog
recover.alreadyExists.description="%s" kasanız halihazırda kasa listenizde bulunuyor, dolayısıyla tekrar eklenmedi.
##Invalid Selection - Dialog
recover.invalidSelection.message=Seçiminiz bir kasa değil
## Contact Hub Vault Owner - Dialog
contactHubVaultOwner.title=Hub Kasası
@@ -633,8 +630,6 @@ eventView.clearListButton.tooltip=Listeyi temizle
eventView.filterVaults=Kasayı süz
## event list entries
eventView.entry.inUse.message=Kullanılan dosya
eventView.entry.inUse.showEncrypted=Şifrelenmiş dosyayı göster
eventView.entry.inUse.copyUserAndDevice=Kilitleyen kullanıcı ve cihaz adını kopyala
eventView.entry.inUse.ignoreLock=Kullanım durumunu yok say
@@ -173,9 +173,6 @@ hub.noKeychain.openBtn=Відкрити налаштування
hub.checkHostTrust.message.check=Перевірка конфігурації…
hub.checkHostTrust.message.ask=Довіряти цьому хосту?
hub.checkHostTrust.message.ask.plural=Довіряти цим хостам?
hub.checkHostTrust.description.ask=Cryptomator не розпізнає цей хост. Щоб розблокувати сховище, йому потрібно довіряти. Довіряйте йому лише в тому випадку, якщо ви впізнаєте адресу, наведену нижче.
hub.checkHostTrust.description.ask.plural=Cryptomator не розпізнає ці хости. Щоб розблокувати сховище, їм потрібно довіряти. Довіряйте їм лише в тому випадку, якщо ви впізнаєте адреси, наведені нижче.
hub.checkHostTrust.copyBtn.tooltip=Скопіювати адресу в буфер обміну
hub.checkHostTrust.trustBtn=Довіряти
hub.checkHostTrust.denyBtn=Відхилити
### Waiting
@@ -11,7 +11,6 @@ import org.junit.jupiter.api.condition.EnabledIf;
import org.mockito.Mockito;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.Optional;
import java.util.stream.Stream;
@@ -56,7 +55,7 @@ public class EnvironmentTest {
List<Path> result = env.getPaths("test.path.property").toList();
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
@@ -38,7 +38,7 @@ public class SettingsJsonTest {
Assertions.assertTrue(jsonObj.checkForUpdatesEnabled);
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("--foo --bar", jsonObj.directories.get(1).mountFlags);
Assertions.assertEquals(8080, jsonObj.port);
@@ -67,7 +67,7 @@ public class SettingsJsonTest {
public void testSerialize() throws JsonProcessingException {
var jsonObj = new SettingsJson();
jsonObj.directories = List.of(new VaultSettingsJson(), new VaultSettingsJson());
jsonObj.directories.get(0).id = "test";
jsonObj.directories.getFirst().id = "test";
jsonObj.theme = UiTheme.DARK;
jsonObj.showTrayIcon = false;
@@ -17,7 +17,6 @@ import org.mockito.Mockito;
import java.nio.file.FileSystem;
import java.nio.file.InvalidPathException;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
@@ -43,7 +42,7 @@ public class FileOpenRequestHandlerTest {
AppLaunchEvent evt = queue.poll();
Assertions.assertNotNull(evt);
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