diff --git a/README.md b/README.md
index dccec1091..18ddc3342 100644
--- a/README.md
+++ b/README.md
@@ -88,12 +88,13 @@ For more information on the security details visit [cryptomator.org](https://doc
```
cd main
-mvn clean install -Prelease,windows
-# or mvn clean install -Prelease,mac
-# or mvn clean install -Prelease,linux
+mvn clean install
+# or mvn clean install -Pwindows
+# or mvn clean install -Pmac
+# or mvn clean install -Plinux
```
-This will build all the jars and bundle them together with their OS-specific dependencies under `main/buildkit/target`. This can now be used to build native packages.
+This will build all the jars and bundle them together with their OS-specific dependencies under `target`. This can now be used to build native packages.
### Start Cryptomator
diff --git a/main/buildkit/assembly-linux.xml b/assembly-linux.xml
similarity index 86%
rename from main/buildkit/assembly-linux.xml
rename to assembly-linux.xml
index 1e16da9e2..d8d224d67 100644
--- a/main/buildkit/assembly-linux.xml
+++ b/assembly-linux.xml
@@ -29,6 +29,13 @@
0755
+
+ target/
+
+ cryptomator-*.jar
+
+ libs
+ target/libs
diff --git a/main/buildkit/assembly-mac.xml b/assembly-mac.xml
similarity index 86%
rename from main/buildkit/assembly-mac.xml
rename to assembly-mac.xml
index 4a01f4067..cf044be12 100644
--- a/main/buildkit/assembly-mac.xml
+++ b/assembly-mac.xml
@@ -29,6 +29,13 @@
0755
+
+ target/
+
+ cryptomator-*.jar
+
+ libs
+ target/libs
diff --git a/main/buildkit/assembly-win.xml b/assembly-win.xml
similarity index 86%
rename from main/buildkit/assembly-win.xml
rename to assembly-win.xml
index 0297f3ec4..e04495220 100644
--- a/main/buildkit/assembly-win.xml
+++ b/assembly-win.xml
@@ -29,6 +29,13 @@
0755
+
+ target/
+
+ cryptomator-*.jar
+
+ libs
+ target/libs
diff --git a/main/buildkit/pom.xml b/main/buildkit/pom.xml
deleted file mode 100644
index 02fb5a71c..000000000
--- a/main/buildkit/pom.xml
+++ /dev/null
@@ -1,216 +0,0 @@
-
-
- 4.0.0
-
- org.cryptomator
- main
- 1.6.0
-
- buildkit
- pom
- Cryptomator Build Kit
- Builds a package that can be built with Ant locally
-
-
-
- org.cryptomator
- launcher
-
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-resources-plugin
-
-
- copy-resources
- prepare-package
-
- copy-resources
-
-
- ${project.build.directory}
-
-
- ${project.basedir}/src/main/resources
-
- version.txt
- ffi-version.txt
- launcher-mac.sh
- launcher-linux.sh
- launcher-win.bat
- LICENSE.txt
-
- true
-
-
-
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-dependency-plugin
-
-
- copy-libs
- prepare-package
-
- copy-dependencies
-
-
- runtime
- ${project.build.directory}/libs
- linux,mac,win
-
-
-
-
-
-
-
-
-
- linux
-
-
-
- org.apache.maven.plugins
- maven-assembly-plugin
-
-
- assemble-linux
- package
-
- single
-
-
-
- assembly-linux.xml
-
- false
- buildkit-linux
-
-
-
-
-
- org.apache.maven.plugins
- maven-dependency-plugin
-
-
- copy-linux-libs
- prepare-package
-
- copy-dependencies
-
-
- ${project.build.directory}/libs
- org.openjfx
- linux
-
-
-
-
-
-
-
-
-
- mac
-
-
-
- org.apache.maven.plugins
- maven-assembly-plugin
-
-
- assemble-mac
- package
-
- single
-
-
-
- assembly-mac.xml
-
- false
- buildkit-mac
-
-
-
-
-
- org.apache.maven.plugins
- maven-dependency-plugin
-
-
- copy-mac-libs
- prepare-package
-
- copy-dependencies
-
-
- ${project.build.directory}/libs
- org.openjfx
- mac
-
-
-
-
-
-
-
-
-
- windows
-
-
-
- org.apache.maven.plugins
- maven-assembly-plugin
-
-
- assemble-win
- package
-
- single
-
-
-
- assembly-win.xml
-
- false
- buildkit-win
-
-
-
-
-
- org.apache.maven.plugins
- maven-dependency-plugin
-
-
- copy-win-libs
- prepare-package
-
- copy-dependencies
-
-
- ${project.build.directory}/libs
- org.openjfx
- win
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/main/commons/pom.xml b/main/commons/pom.xml
deleted file mode 100644
index 7a0506f6b..000000000
--- a/main/commons/pom.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-
-
- 4.0.0
-
- org.cryptomator
- main
- 1.6.0
-
- commons
- Cryptomator Commons
- Shared utilities
-
-
-
- org.cryptomator
- cryptofs
-
-
- org.cryptomator
- fuse-nio-adapter
-
-
- org.cryptomator
- dokany-nio-adapter
-
-
- org.cryptomator
- webdav-nio-adapter
-
-
- org.cryptomator
- integrations-api
-
-
-
-
- org.openjfx
- javafx-base
-
-
- org.openjfx
- javafx-graphics
-
-
-
-
- com.tobiasdiez
- easybind
-
-
-
-
- com.auth0
- java-jwt
-
-
-
-
- com.google.guava
- guava
-
-
- com.google.code.gson
- gson
-
-
-
-
- org.apache.commons
- commons-lang3
-
-
-
-
- com.google.dagger
- dagger
-
-
-
-
- org.slf4j
- slf4j-simple
- test
-
-
-
diff --git a/main/launcher/pom.xml b/main/launcher/pom.xml
deleted file mode 100644
index 69d644ed0..000000000
--- a/main/launcher/pom.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-
-
- 4.0.0
-
- org.cryptomator
- main
- 1.6.0
-
- launcher
- Cryptomator Launcher
-
-
-
- org.cryptomator
- commons
-
-
- org.cryptomator
- ui
-
-
-
-
- com.google.guava
- guava
-
-
- org.apache.commons
- commons-lang3
-
-
-
-
- com.google.dagger
- dagger
-
-
-
-
- ch.qos.logback
- logback-core
-
-
- ch.qos.logback
- logback-classic
-
-
-
\ No newline at end of file
diff --git a/main/pom.xml b/main/pom.xml
deleted file mode 100644
index eee540365..000000000
--- a/main/pom.xml
+++ /dev/null
@@ -1,445 +0,0 @@
-
-
- 4.0.0
- org.cryptomator
- main
- 1.6.0
- pom
- Cryptomator
-
-
- cryptomator.org
- https://cryptomator.org
-
-
-
-
- Sebastian Stenzel
- sebastian.stenzel@gmail.com
- +1
-
-
-
-
- UTF-8
- 16
-
-
- 2.1.0-beta5
- 1.0.0-beta2
- 1.0.0-beta2
- 1.0.0-beta2
- 1.0.0-beta1
- 1.3.1
- 1.3.1
- 1.2.2
-
-
- 16
- 3.11
- 3.15.0
- 2.1.0
- 30.1.1-jre
- 2.35.1
- 2.8.6
- 1.7.30
- 1.2.3
-
-
- 5.7.1
- 3.9.0
- 2.2
-
-
-
-
-
-
- org.cryptomator
- commons
- ${project.version}
-
-
- org.cryptomator
- ui
- ${project.version}
-
-
- org.cryptomator
- launcher
- ${project.version}
-
-
-
-
- org.cryptomator
- cryptofs
- ${cryptomator.cryptofs.version}
-
-
- org.cryptomator
- fuse-nio-adapter
- ${cryptomator.fuse.version}
-
-
- org.cryptomator
- dokany-nio-adapter
- ${cryptomator.dokany.version}
-
-
- org.cryptomator
- webdav-nio-adapter
- ${cryptomator.webdav.version}
-
-
- org.cryptomator
- integrations-api
- ${cryptomator.integrations.version}
-
-
- org.cryptomator
- integrations-win
- ${cryptomator.integrations.win.version}
-
-
- org.cryptomator
- integrations-mac
- ${cryptomator.integrations.mac.version}
-
-
- org.cryptomator
- integrations-linux
- ${cryptomator.integrations.linux.version}
-
-
-
-
- org.openjfx
- javafx-base
- ${javafx.version}
-
-
- org.openjfx
- javafx-graphics
- ${javafx.version}
-
-
- org.openjfx
- javafx-controls
- ${javafx.version}
-
-
- org.openjfx
- javafx-fxml
- ${javafx.version}
-
-
-
-
- org.slf4j
- slf4j-api
- ${slf4j.version}
-
-
- org.slf4j
- slf4j-simple
- ${slf4j.version}
-
-
- ch.qos.logback
- logback-core
- ${logback.version}
-
-
- ch.qos.logback
- logback-classic
- ${logback.version}
-
-
-
-
- org.apache.commons
- commons-lang3
- ${commons-lang3.version}
-
-
-
-
- com.auth0
- java-jwt
- ${jwt.version}
-
-
-
-
- com.tobiasdiez
- easybind
- ${easybind.version}
-
-
-
-
- com.google.guava
- guava
- ${guava.version}
-
-
- com.google.dagger
- dagger
- ${dagger.version}
-
-
- com.google.code.gson
- gson
- ${gson.version}
-
-
-
-
- org.junit.jupiter
- junit-jupiter
- ${junit.jupiter.version}
- test
-
-
- org.mockito
- mockito-core
- ${mockito.version}
-
-
- org.hamcrest
- hamcrest
- ${hamcrest.version}
-
-
- org.openjfx
- javafx-swing
- ${javafx.version}
- test
-
-
-
-
-
-
-
-
- org.slf4j
- slf4j-api
-
-
- org.junit.jupiter
- junit-jupiter
- test
-
-
- org.hamcrest
- hamcrest
- test
-
-
- org.mockito
- mockito-core
- test
-
-
-
-
- commons
- ui
- launcher
-
-
-
-
- release
-
- buildkit
-
-
-
- coverage
-
-
-
- org.jacoco
- jacoco-maven-plugin
-
-
-
-
-
- mac
-
-
- mac
-
-
- idea.version
-
-
-
-
- org.cryptomator
- integrations-mac
-
-
-
-
- linux
-
-
- unix
- Linux
-
-
- idea.version
-
-
-
-
- org.cryptomator
- integrations-linux
-
-
-
-
- windows
-
-
- windows
-
-
- idea.version
-
-
-
-
- org.cryptomator
- integrations-win
-
-
-
-
- dependency-check
-
-
-
- org.owasp
- dependency-check-maven
- 6.0.3
-
- 24
- 0
- true
- true
- suppression.xml
-
-
-
-
- check
-
-
-
-
-
-
-
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
- 3.8.1
-
-
- org.apache.maven.plugins
- maven-resources-plugin
- 3.2.0
-
-
- org.apache.maven.plugins
- maven-dependency-plugin
- 3.1.2
-
-
- org.apache.maven.plugins
- maven-assembly-plugin
- 3.3.0
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
- 2.22.2
-
-
- org.codehaus.mojo
- license-maven-plugin
- 2.0.0
-
-
- org.apache.maven.plugins
- maven-jar-plugin
- 3.2.0
-
-
-
-
- true
-
-
-
-
-
- org.jacoco
- jacoco-maven-plugin
- 0.8.6
-
-
- prepare-agent
-
- prepare-agent
-
-
-
- report
-
- report
-
-
-
-
-
- **/*_*
- **/Dagger*
-
-
-
-
-
-
-
- maven-compiler-plugin
-
- ${project.jdk.version}
-
-
- com.google.dagger
- dagger-compiler
- ${dagger.version}
-
-
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
-
-
-
-
diff --git a/main/suppression.xml b/main/suppression.xml
deleted file mode 100644
index 43acf2e8d..000000000
--- a/main/suppression.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
- ^org\.cryptomator:fuse-nio-adapter:.*$
- 9
-
-
-
- ^com\.github\.serceman:jnr-fuse:.*$
- 9
-
-
\ No newline at end of file
diff --git a/main/ui/pom.xml b/main/ui/pom.xml
deleted file mode 100644
index eb7c4b862..000000000
--- a/main/ui/pom.xml
+++ /dev/null
@@ -1,115 +0,0 @@
-
-
- 4.0.0
-
- org.cryptomator
- main
- 1.6.0
-
- ui
- Cryptomator GUI
-
-
-
- org.cryptomator
- commons
-
-
-
-
- org.openjfx
- javafx-controls
-
-
- org.openjfx
- javafx-fxml
-
-
-
-
- com.tobiasdiez
- easybind
-
-
-
-
- com.google.guava
- guava
-
-
- com.google.code.gson
- gson
-
-
-
-
- org.apache.commons
- commons-lang3
-
-
-
-
- com.google.dagger
- dagger
-
-
-
-
- com.nulab-inc
- zxcvbn
- 1.3.0
-
-
-
-
- org.slf4j
- slf4j-simple
- test
-
-
-
-
- com.google.jimfs
- jimfs
- 1.1
- test
-
-
- org.openjfx
- javafx-swing
- test
-
-
-
-
-
-
- org.codehaus.mojo
- license-maven-plugin
-
-
- add-third-party
-
- add-third-party
-
- generate-resources
-
- ${project.basedir}/src/main/resources/license
- THIRD-PARTY.txt
- compile
- org\.cryptomator
-
- Apache License v2.0|Apache License, Version 2.0|The Apache Software License, Version 2.0|Apache 2.0|Apache Software License - Version 2.0
- MIT License|The MIT License (MIT)|The MIT License|MIT license
- LGPL 2.1|LGPL, version 2.1|GNU Lesser/Library General Public License version 2|GNU Lesser General Public License Version 2.1
- GPLv2|GNU General Public License Version 2
- GPLv2+CE|CDDL + GPLv2 with classpath exception
-
- ${project.basedir}/src/license/template.ftl
-
-
-
-
-
-
-
diff --git a/main/ui/src/main/resources/i18n/strings_id.properties b/main/ui/src/main/resources/i18n/strings_id.properties
deleted file mode 100644
index 0c014b317..000000000
--- a/main/ui/src/main/resources/i18n/strings_id.properties
+++ /dev/null
@@ -1,167 +0,0 @@
-# Locale Specific CSS files such as CJK, RTL,...
-
-# Generics
-## Button
-generic.button.apply=Terapkan
-generic.button.back=Kembali
-generic.button.cancel=Batalkan
-generic.button.change=Ganti
-generic.button.close=Tutup
-generic.button.copy=Salin
-generic.button.copied=Tersalin!
-generic.button.done=Selesai
-generic.button.next=Lanjut
-generic.button.print=Cetak
-## Error
-generic.error.title=Telah terjadi kesalahan tak terduga
-generic.error.instruction=Ini harusnya tidak terjadi. Harap laporkan pesan kesalahan dibawah dan tulis deskripsi kenapa ini bisa terjadi.
-
-# Defaults
-defaults.vault.vaultName=Brankas
-
-# Tray Menu
-traymenu.showMainWindow=Tampilkan
-traymenu.showPreferencesWindow=Preferensi
-traymenu.lockAllVaults=Gembok Semua
-traymenu.quitApplication=Keluar
-traymenu.vault.unlock=Buka Gembok
-traymenu.vault.lock=Gembok
-traymenu.vault.reveal=Perlihatkan
-
-# Add Vault Wizard
-addvaultwizard.title=Tambah Brankas
-## Welcome
-addvaultwizard.welcome.newButton=Buat Brankas Baru
-addvaultwizard.welcome.existingButton=Buka Brankas yg Sudah Ada
-## New
-### Name
-addvaultwizard.new.nameInstruction=Buat sebuah nama untuk brankas
-addvaultwizard.new.namePrompt=Nama Brankas
-### Location
-addvaultwizard.new.locationInstruction=Dimana Cryptomator seharusnya menyimpan brankas berkas terenkripsi kamu?
-addvaultwizard.new.locationLabel=Lokasi penyimpanan
-addvaultwizard.new.locationPrompt=…
-addvaultwizard.new.directoryPickerLabel=Sesuaikan Lokasi
-addvaultwizard.new.directoryPickerButton=Pilih…
-addvaultwizard.new.directoryPickerTitle=Pilih Folder
-addvaultwizard.new.fileAlreadyExists=Sudah ada file atau direktori dengan nama yang sama
-addvaultwizard.new.locationDoesNotExist=Direktori pada path yang dipilih tidak ada atau tidak dapat diakses
-addvaultwizard.new.locationIsNotWritable=Anda tidak memiliki hak akses untuk menulis pada path yang dipilih
-addvaultwizard.new.invalidName=Nama brankas salah. Harap pilih nama folder yang umum.
-### Password
-addvaultwizard.new.createVaultBtn=Buat Brankas
-addvaultwizard.new.generateRecoveryKeyChoice=Kamu tidak dapat mengakses data tanpa kata sandi kamu. Apa kamu ingin sebuah kunci pemulihan buat jaga-jaga?
-addvaultwizard.new.generateRecoveryKeyChoice.yes=Ya, sedia payung sebelum hujan
-addvaultwizard.new.generateRecoveryKeyChoice.no=Tidak, terima kasih, Saya tidak akan kehilangan kata sandi saya
-### Information
-addvault.new.readme.storageLocation.fileName=PENTING.rtf
-addvault.new.readme.storageLocation.1=⚠️ BERKAS BRANKAS ⚠️
-addvault.new.readme.storageLocation.2=Ini adalah lokasi penyimpanan brankas kamu.
-addvault.new.readme.storageLocation.3=JANGAN
-addvault.new.readme.storageLocation.4=• mengubah file dalam direktori ini, atau
-addvault.new.readme.storageLocation.5=• menempelkan file untuk dienkripsi ke dalam direktori ini.
-addvault.new.readme.storageLocation.6=Jika kamu ingin mengenkripsi berkas dan melihat isi brankas, lakukan hal berikut:
-addvault.new.readme.storageLocation.7=1. Tambahkan brankas ini ke Cryptomator.
-addvault.new.readme.storageLocation.8=2. Buka gembok brankas di Cryptomator.
-addvault.new.readme.storageLocation.9=3. Buka akses lokasi dengan mengklik tombol "Perlihatkan".
-addvault.new.readme.storageLocation.10=Jika kamu butuh bantuan, kunjungi dokumentasi: %s
-addvault.new.readme.accessLocation.fileName=SELAMAT_DATANG.rtf
-addvault.new.readme.accessLocation.1=🔐️ ISI TERENKRIPSI 🔐️
-addvault.new.readme.accessLocation.2=Ini adalah lokasi akses brankas kamu.
-addvault.new.readme.accessLocation.3=File yang ditambahkan ke volume ini akan dienkripsi oleh Cryptomator. Anda dapat mempergunakan isi vault seperti dalam folder lain. Saat ini Anda sedang mengakses tampilan versi dekripsi, file Anda selalu terenkripsi di dalam cakram keras Anda.
-addvault.new.readme.accessLocation.4=Anda dapat menghapus file ini.
-## Existing
-addvaultwizard.existing.instruction=Pilih file "masterkey.cryptomator" dalam vault Anda.
-addvaultwizard.existing.chooseBtn=Pilih…
-addvaultwizard.existing.filePickerTitle=Pilih File Kunci Induk
-## Success
-addvaultwizard.success.nextStepsInstructions=Vault "%s" telah dibuat.\nAnda harus membuka kunci vault ini untuk mengakses atau menambahkan konten. Anda juga dapat membuka kunci vault ini kapan saja di kemudian hari.
-addvaultwizard.success.unlockNow=Buka Kunci Sekarang
-
-# Remove Vault
-removeVault.title=Hapus Vault
-removeVault.information=Cryptomator hanya akan melupakan vault ini. Anda dapat menambahkan vault ini lagi nantinya. File yang telah dienkripsi tidak akan dihapus dari cakram keras Anda.
-removeVault.confirmBtn=Hapus Vault
-
-# Change Password
-changepassword.title=Ubah Kata Sandi
-changepassword.enterOldPassword=Masukkan kata sandi untuk "%s" saat ini
-changepassword.finalConfirmation=Saya mengerti bahwa saya tidak akan dapat mengakses data saya apabila saya lupa kata sandi saya
-
-# Forget Password
-forgetPassword.title=Lupa Kata Sandi
-forgetPassword.confirmBtn=Lupa Kata Sandi
-
-# Unlock
-unlock.unlockBtn=Buka Gembok
-##
-unlock.chooseMasterkey.filePickerTitle=Pilih File Kunci Induk
-## Success
-## Failure
-### Invalid Mount Point
-
-# Lock
-## Force
-## Failure
-
-# Migration
-## Start
-## Run
-## Sucess
-migration.success.unlockNow=Buka Kunci Sekarang
-## Missing file system capabilities
-## Impossible
-
-# Preferences
-preferences.title=Preferensi
-## General
-## Volume
-## Updates
-## Contribution
-#<-- Add entries for donations and code/translation/documentation contribution -->
-
-## About
-
-# Vault Statistics
-## Read
-## Write
-
-# Main Window
-main.closeBtn.tooltip=Tutup
-main.preferencesBtn.tooltip=Preferensi
-## Drag 'n' Drop
-## Vault List
-main.vaultlist.contextMenu.lock=Gembok
-main.vaultlist.contextMenu.unlockNow=Buka Kunci Sekarang
-main.vaultlist.addVaultBtn=Tambah Brankas
-## Vault Detail
-### Welcome
-### Locked
-main.vaultDetail.unlockNowBtn=Buka Kunci Sekarang
-### Unlocked
-main.vaultDetail.lockBtn=Gembok
-### Missing
-### Needs Migration
-
-# Wrong File Alert
-
-# Vault Options
-## General
-vaultOptions.general.vaultName=Nama Brankas
-## Mount
-vaultOptions.mount.mountPoint.directoryPickerButton=Pilih…
-## Master Key
-vaultOptions.masterkey.changePasswordBtn=Ubah Kata Sandi
-
-# Recovery Key
-
-# New Password
-passwordStrength.messageLabel.0=Sangat lemah
-passwordStrength.messageLabel.1=Lemah
-passwordStrength.messageLabel.2=Cukup
-passwordStrength.messageLabel.3=Kuat
-passwordStrength.messageLabel.4=Sangat kuat
-
-# Quit
-quit.prompt=Keluar aplikasi? Terdapat brankas yg belum digembok.
-quit.lockAndQuit=Gembok dan Keluar
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 000000000..c53ca818b
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,601 @@
+
+
+ 4.0.0
+ org.cryptomator
+ cryptomator
+ 1.6.0-SNAPSHOT
+ Cryptomator Desktop App
+
+
+ cryptomator.org
+ https://cryptomator.org
+
+
+
+
+ Sebastian Stenzel
+ sebastian.stenzel@gmail.com
+ +1
+
+
+
+
+ UTF-8
+ 16
+
+
+ 2.1.0-beta5
+ 1.0.0-beta2
+ 1.0.0-beta2
+ 1.0.0-beta2
+ 1.0.0-beta1
+ 1.3.1
+ 1.3.1
+ 1.2.2
+
+
+ 16
+ 3.11
+ 3.15.0
+ 2.1.0
+ 30.1.1-jre
+ 2.35.1
+ 2.8.6
+ 1.7.30
+ 1.2.3
+
+
+ 5.7.1
+ 3.9.0
+ 2.2
+
+
+
+
+
+ org.cryptomator
+ cryptofs
+ ${cryptomator.cryptofs.version}
+
+
+ org.cryptomator
+ fuse-nio-adapter
+ ${cryptomator.fuse.version}
+
+
+ org.cryptomator
+ dokany-nio-adapter
+ ${cryptomator.dokany.version}
+
+
+ org.cryptomator
+ webdav-nio-adapter
+ ${cryptomator.webdav.version}
+
+
+ org.cryptomator
+ integrations-api
+ ${cryptomator.integrations.version}
+
+
+
+
+ org.openjfx
+ javafx-base
+ ${javafx.version}
+
+
+ org.openjfx
+ javafx-graphics
+ ${javafx.version}
+
+
+ org.openjfx
+ javafx-controls
+ ${javafx.version}
+
+
+ org.openjfx
+ javafx-fxml
+ ${javafx.version}
+
+
+
+
+ org.slf4j
+ slf4j-api
+ ${slf4j.version}
+
+
+ ch.qos.logback
+ logback-core
+ ${logback.version}
+
+
+ ch.qos.logback
+ logback-classic
+ ${logback.version}
+
+
+
+
+ org.apache.commons
+ commons-lang3
+ ${commons-lang3.version}
+
+
+
+
+ com.auth0
+ java-jwt
+ ${jwt.version}
+
+
+
+
+ com.tobiasdiez
+ easybind
+ ${easybind.version}
+
+
+
+
+ com.nulab-inc
+ zxcvbn
+ 1.3.0
+
+
+
+
+ com.google.guava
+ guava
+ ${guava.version}
+
+
+ com.google.dagger
+ dagger
+ ${dagger.version}
+
+
+ com.google.code.gson
+ gson
+ ${gson.version}
+
+
+
+
+ org.junit.jupiter
+ junit-jupiter
+ ${junit.jupiter.version}
+ test
+
+
+ org.mockito
+ mockito-core
+ ${mockito.version}
+ test
+
+
+ org.hamcrest
+ hamcrest
+ ${hamcrest.version}
+ test
+
+
+ org.openjfx
+ javafx-swing
+ ${javafx.version}
+ test
+
+
+ com.google.jimfs
+ jimfs
+ 1.1
+ test
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.1
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+ 3.2.0
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+ 3.1.2
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+ 3.3.0
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+ 2.22.2
+
+
+ org.codehaus.mojo
+ license-maven-plugin
+ 2.0.0
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+ 3.2.0
+
+
+ org.jacoco
+ jacoco-maven-plugin
+ 0.8.6
+
+
+ org.owasp
+ dependency-check-maven
+ 6.0.3
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ ${project.jdk.version}
+
+
+ com.google.dagger
+ dagger-compiler
+ ${dagger.version}
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-jar-plugin
+
+
+
+
+ true
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+
+ org.apache.maven.plugins
+ maven-resources-plugin
+
+
+ copy-resources
+ prepare-package
+
+ copy-resources
+
+
+ ${project.build.directory}
+
+
+ ${project.basedir}/src/package
+
+ version.txt
+ ffi-version.txt
+ launcher-mac.sh
+ launcher-linux.sh
+ launcher-win.bat
+ LICENSE.txt
+
+ true
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ copy-libs
+ prepare-package
+
+ copy-dependencies
+
+
+ runtime
+ ${project.build.directory}/libs
+ linux,mac,win
+
+
+
+
+
+ org.codehaus.mojo
+ license-maven-plugin
+
+
+ add-third-party
+
+ add-third-party
+
+ generate-resources
+
+ ${project.basedir}/src/main/resources/license
+ THIRD-PARTY.txt
+ compile
+ org\.cryptomator
+
+ Apache License v2.0|Apache License, Version 2.0|The Apache Software License, Version 2.0|Apache 2.0|Apache Software License - Version 2.0
+ MIT License|The MIT License (MIT)|The MIT License|MIT license
+ LGPL 2.1|LGPL, version 2.1|GNU Lesser/Library General Public License version 2|GNU Lesser General Public License Version 2.1
+ GPLv2|GNU General Public License Version 2
+ GPLv2+CE|CDDL + GPLv2 with classpath exception
+
+ ${project.basedir}/src/license/template.ftl
+
+
+
+
+
+
+
+
+
+ coverage
+
+
+
+ org.jacoco
+ jacoco-maven-plugin
+
+
+ prepare-agent
+
+ prepare-agent
+
+
+
+ report
+
+ report
+
+
+
+
+
+ **/*_*
+ **/Dagger*
+
+
+
+
+
+
+
+
+ dependency-check
+
+
+
+ org.owasp
+ dependency-check-maven
+
+ 24
+ 0
+ true
+ true
+ suppression.xml
+
+
+
+
+ check
+
+
+
+
+
+
+
+
+
+ mac
+
+
+ mac
+
+
+ idea.version
+
+
+
+
+ org.cryptomator
+ integrations-mac
+ ${cryptomator.integrations.mac.version}
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+
+
+ assemble-mac
+ package
+
+ single
+
+
+
+ assembly-mac.xml
+
+ false
+ buildkit-mac
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ copy-mac-libs
+ prepare-package
+
+ copy-dependencies
+
+
+ ${project.build.directory}/libs
+ org.openjfx
+ mac
+
+
+
+
+
+
+
+
+
+ linux
+
+
+ unix
+ Linux
+
+
+ idea.version
+
+
+
+
+ org.cryptomator
+ integrations-linux
+ ${cryptomator.integrations.linux.version}
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+
+
+ assemble-linux
+ package
+
+ single
+
+
+
+ assembly-linux.xml
+
+ false
+ buildkit-linux
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ copy-linux-libs
+ prepare-package
+
+ copy-dependencies
+
+
+ ${project.build.directory}/libs
+ org.openjfx
+ linux
+
+
+
+
+
+
+
+
+
+ windows
+
+
+ windows
+
+
+ idea.version
+
+
+
+
+ org.cryptomator
+ integrations-win
+ ${cryptomator.integrations.win.version}
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-assembly-plugin
+
+
+ assemble-win
+ package
+
+ single
+
+
+
+ assembly-win.xml
+
+ false
+ buildkit-win
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-dependency-plugin
+
+
+ copy-win-libs
+ prepare-package
+
+ copy-dependencies
+
+
+ ${project.build.directory}/libs
+ org.openjfx
+ win
+
+
+
+
+
+
+
+
+
+
diff --git a/main/ui/src/license/THIRD-PARTY.properties b/src/license/THIRD-PARTY.properties
similarity index 100%
rename from main/ui/src/license/THIRD-PARTY.properties
rename to src/license/THIRD-PARTY.properties
diff --git a/main/ui/src/license/template.ftl b/src/license/template.ftl
similarity index 100%
rename from main/ui/src/license/template.ftl
rename to src/license/template.ftl
diff --git a/main/commons/src/main/java/org/cryptomator/common/CommonsModule.java b/src/main/java/org/cryptomator/common/CommonsModule.java
similarity index 95%
rename from main/commons/src/main/java/org/cryptomator/common/CommonsModule.java
rename to src/main/java/org/cryptomator/common/CommonsModule.java
index f8e0e8078..705f98b8f 100644
--- a/main/commons/src/main/java/org/cryptomator/common/CommonsModule.java
+++ b/src/main/java/org/cryptomator/common/CommonsModule.java
@@ -15,6 +15,7 @@ import org.cryptomator.common.settings.SettingsProvider;
import org.cryptomator.common.vaults.Vault;
import org.cryptomator.common.vaults.VaultComponent;
import org.cryptomator.common.vaults.VaultListManager;
+import org.cryptomator.common.vaults.VaultListModule;
import org.cryptomator.cryptolib.common.MasterkeyFileAccess;
import org.cryptomator.frontend.webdav.WebDavServer;
import org.slf4j.Logger;
@@ -37,7 +38,7 @@ import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
-@Module(subcomponents = {VaultComponent.class}, includes = {KeychainModule.class})
+@Module(subcomponents = {VaultComponent.class}, includes = {VaultListModule.class, KeychainModule.class})
public abstract class CommonsModule {
private static final Logger LOG = LoggerFactory.getLogger(CommonsModule.class);
@@ -87,12 +88,6 @@ public abstract class CommonsModule {
return settingsProvider.get();
}
- @Provides
- @Singleton
- static ObservableList provideVaultList(VaultListManager vaultListManager) {
- return vaultListManager.getVaultList();
- }
-
@Provides
@Singleton
static ScheduledExecutorService provideScheduledExecutorService(ShutdownHook shutdownHook) {
diff --git a/main/commons/src/main/java/org/cryptomator/common/Constants.java b/src/main/java/org/cryptomator/common/Constants.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/Constants.java
rename to src/main/java/org/cryptomator/common/Constants.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/ConsumerThrowingException.java b/src/main/java/org/cryptomator/common/ConsumerThrowingException.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/ConsumerThrowingException.java
rename to src/main/java/org/cryptomator/common/ConsumerThrowingException.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/Environment.java b/src/main/java/org/cryptomator/common/Environment.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/Environment.java
rename to src/main/java/org/cryptomator/common/Environment.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/LicenseChecker.java b/src/main/java/org/cryptomator/common/LicenseChecker.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/LicenseChecker.java
rename to src/main/java/org/cryptomator/common/LicenseChecker.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/LicenseHolder.java b/src/main/java/org/cryptomator/common/LicenseHolder.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/LicenseHolder.java
rename to src/main/java/org/cryptomator/common/LicenseHolder.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/RunnableThrowingException.java b/src/main/java/org/cryptomator/common/RunnableThrowingException.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/RunnableThrowingException.java
rename to src/main/java/org/cryptomator/common/RunnableThrowingException.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/SemVerComparator.java b/src/main/java/org/cryptomator/common/SemVerComparator.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/SemVerComparator.java
rename to src/main/java/org/cryptomator/common/SemVerComparator.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/ShutdownHook.java b/src/main/java/org/cryptomator/common/ShutdownHook.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/ShutdownHook.java
rename to src/main/java/org/cryptomator/common/ShutdownHook.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/SupplierThrowingException.java b/src/main/java/org/cryptomator/common/SupplierThrowingException.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/SupplierThrowingException.java
rename to src/main/java/org/cryptomator/common/SupplierThrowingException.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/keychain/KeychainManager.java b/src/main/java/org/cryptomator/common/keychain/KeychainManager.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/keychain/KeychainManager.java
rename to src/main/java/org/cryptomator/common/keychain/KeychainManager.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/keychain/KeychainModule.java b/src/main/java/org/cryptomator/common/keychain/KeychainModule.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/keychain/KeychainModule.java
rename to src/main/java/org/cryptomator/common/keychain/KeychainModule.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/keychain/NoKeychainAccessProviderException.java b/src/main/java/org/cryptomator/common/keychain/NoKeychainAccessProviderException.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/keychain/NoKeychainAccessProviderException.java
rename to src/main/java/org/cryptomator/common/keychain/NoKeychainAccessProviderException.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/mountpoint/AvailableDriveLetterChooser.java b/src/main/java/org/cryptomator/common/mountpoint/AvailableDriveLetterChooser.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/mountpoint/AvailableDriveLetterChooser.java
rename to src/main/java/org/cryptomator/common/mountpoint/AvailableDriveLetterChooser.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/mountpoint/CustomDriveLetterChooser.java b/src/main/java/org/cryptomator/common/mountpoint/CustomDriveLetterChooser.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/mountpoint/CustomDriveLetterChooser.java
rename to src/main/java/org/cryptomator/common/mountpoint/CustomDriveLetterChooser.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/mountpoint/CustomMountPointChooser.java b/src/main/java/org/cryptomator/common/mountpoint/CustomMountPointChooser.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/mountpoint/CustomMountPointChooser.java
rename to src/main/java/org/cryptomator/common/mountpoint/CustomMountPointChooser.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/mountpoint/InvalidMountPointException.java b/src/main/java/org/cryptomator/common/mountpoint/InvalidMountPointException.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/mountpoint/InvalidMountPointException.java
rename to src/main/java/org/cryptomator/common/mountpoint/InvalidMountPointException.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/mountpoint/MacVolumeMountChooser.java b/src/main/java/org/cryptomator/common/mountpoint/MacVolumeMountChooser.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/mountpoint/MacVolumeMountChooser.java
rename to src/main/java/org/cryptomator/common/mountpoint/MacVolumeMountChooser.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/mountpoint/MountPointChooser.java b/src/main/java/org/cryptomator/common/mountpoint/MountPointChooser.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/mountpoint/MountPointChooser.java
rename to src/main/java/org/cryptomator/common/mountpoint/MountPointChooser.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/mountpoint/MountPointChooserModule.java b/src/main/java/org/cryptomator/common/mountpoint/MountPointChooserModule.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/mountpoint/MountPointChooserModule.java
rename to src/main/java/org/cryptomator/common/mountpoint/MountPointChooserModule.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/mountpoint/MountPointHelper.java b/src/main/java/org/cryptomator/common/mountpoint/MountPointHelper.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/mountpoint/MountPointHelper.java
rename to src/main/java/org/cryptomator/common/mountpoint/MountPointHelper.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/mountpoint/TemporaryMountPointChooser.java b/src/main/java/org/cryptomator/common/mountpoint/TemporaryMountPointChooser.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/mountpoint/TemporaryMountPointChooser.java
rename to src/main/java/org/cryptomator/common/mountpoint/TemporaryMountPointChooser.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/settings/KeychainBackend.java b/src/main/java/org/cryptomator/common/settings/KeychainBackend.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/settings/KeychainBackend.java
rename to src/main/java/org/cryptomator/common/settings/KeychainBackend.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/settings/Settings.java b/src/main/java/org/cryptomator/common/settings/Settings.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/settings/Settings.java
rename to src/main/java/org/cryptomator/common/settings/Settings.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java b/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java
rename to src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/settings/SettingsProvider.java b/src/main/java/org/cryptomator/common/settings/SettingsProvider.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/settings/SettingsProvider.java
rename to src/main/java/org/cryptomator/common/settings/SettingsProvider.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/settings/UiTheme.java b/src/main/java/org/cryptomator/common/settings/UiTheme.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/settings/UiTheme.java
rename to src/main/java/org/cryptomator/common/settings/UiTheme.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java b/src/main/java/org/cryptomator/common/settings/VaultSettings.java
similarity index 91%
rename from main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java
rename to src/main/java/org/cryptomator/common/settings/VaultSettings.java
index 03aef5629..10a023806 100644
--- a/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java
+++ b/src/main/java/org/cryptomator/common/settings/VaultSettings.java
@@ -37,6 +37,8 @@ public class VaultSettings {
public static final String DEFAULT_MOUNT_FLAGS = "";
public static final int DEFAULT_MAX_CLEARTEXT_FILENAME_LENGTH = -1;
public static final WhenUnlocked DEFAULT_ACTION_AFTER_UNLOCK = WhenUnlocked.ASK;
+ public static final boolean DEFAULT_AUTOLOCK_WHEN_IDLE = false;
+ public static final int DEFAULT_AUTOLOCK_IDLE_SECONDS = 30 * 60;
private static final Random RNG = new Random();
@@ -52,7 +54,8 @@ public class VaultSettings {
private final StringProperty mountFlags = new SimpleStringProperty(DEFAULT_MOUNT_FLAGS);
private final IntegerProperty maxCleartextFilenameLength = new SimpleIntegerProperty(DEFAULT_MAX_CLEARTEXT_FILENAME_LENGTH);
private final ObjectProperty actionAfterUnlock = new SimpleObjectProperty<>(DEFAULT_ACTION_AFTER_UNLOCK);
-
+ private final BooleanProperty autoLockWhenIdle = new SimpleBooleanProperty(DEFAULT_AUTOLOCK_WHEN_IDLE);
+ private final IntegerProperty autoLockIdleSeconds = new SimpleIntegerProperty(DEFAULT_AUTOLOCK_IDLE_SECONDS);
private final StringBinding mountName;
public VaultSettings(String id) {
@@ -61,7 +64,7 @@ public class VaultSettings {
}
Observable[] observables() {
- return new Observable[]{path, displayName, winDriveLetter, unlockAfterStartup, revealAfterMount, useCustomMountPath, customMountPath, usesReadOnlyMode, mountFlags, maxCleartextFilenameLength, actionAfterUnlock};
+ return new Observable[]{path, displayName, winDriveLetter, unlockAfterStartup, revealAfterMount, useCustomMountPath, customMountPath, usesReadOnlyMode, mountFlags, maxCleartextFilenameLength, actionAfterUnlock, autoLockWhenIdle, autoLockIdleSeconds};
}
public static VaultSettings withRandomId() {
@@ -162,6 +165,14 @@ public class VaultSettings {
return actionAfterUnlock.get();
}
+ public BooleanProperty autoLockWhenIdle() {
+ return autoLockWhenIdle;
+ }
+
+ public IntegerProperty autoLockIdleSeconds() {
+ return autoLockIdleSeconds;
+ }
+
/* Hashcode/Equals */
@Override
diff --git a/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java b/src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java
similarity index 89%
rename from main/commons/src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java
rename to src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java
index d68a67e0b..0cf92a48b 100644
--- a/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java
+++ b/src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java
@@ -31,6 +31,8 @@ class VaultSettingsJsonAdapter {
out.name("mountFlags").value(value.mountFlags().get());
out.name("maxCleartextFilenameLength").value(value.maxCleartextFilenameLength().get());
out.name("actionAfterUnlock").value(value.actionAfterUnlock().get().name());
+ out.name("autoLockWhenIdle").value(value.autoLockWhenIdle().get());
+ out.name("autoLockIdleSeconds").value(value.autoLockIdleSeconds().get());
out.endObject();
}
@@ -48,6 +50,8 @@ class VaultSettingsJsonAdapter {
String mountFlags = VaultSettings.DEFAULT_MOUNT_FLAGS;
int maxCleartextFilenameLength = VaultSettings.DEFAULT_MAX_CLEARTEXT_FILENAME_LENGTH;
WhenUnlocked actionAfterUnlock = VaultSettings.DEFAULT_ACTION_AFTER_UNLOCK;
+ boolean autoLockWhenIdle = VaultSettings.DEFAULT_AUTOLOCK_WHEN_IDLE;
+ int autoLockIdleSeconds = VaultSettings.DEFAULT_AUTOLOCK_IDLE_SECONDS;
in.beginObject();
while (in.hasNext()) {
@@ -66,6 +70,8 @@ class VaultSettingsJsonAdapter {
case "mountFlags" -> mountFlags = in.nextString();
case "maxCleartextFilenameLength" -> maxCleartextFilenameLength = in.nextInt();
case "actionAfterUnlock" -> actionAfterUnlock = parseActionAfterUnlock(in.nextString());
+ case "autoLockWhenIdle" -> autoLockWhenIdle = in.nextBoolean();
+ case "autoLockIdleSeconds" -> autoLockIdleSeconds = in.nextInt();
default -> {
LOG.warn("Unsupported vault setting found in JSON: " + name);
in.skipValue();
@@ -90,6 +96,8 @@ class VaultSettingsJsonAdapter {
vaultSettings.mountFlags().set(mountFlags);
vaultSettings.maxCleartextFilenameLength().set(maxCleartextFilenameLength);
vaultSettings.actionAfterUnlock().set(actionAfterUnlock);
+ vaultSettings.autoLockWhenIdle().set(autoLockWhenIdle);
+ vaultSettings.autoLockIdleSeconds().set(autoLockIdleSeconds);
return vaultSettings;
}
diff --git a/main/commons/src/main/java/org/cryptomator/common/settings/VolumeImpl.java b/src/main/java/org/cryptomator/common/settings/VolumeImpl.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/settings/VolumeImpl.java
rename to src/main/java/org/cryptomator/common/settings/VolumeImpl.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/settings/WebDavUrlScheme.java b/src/main/java/org/cryptomator/common/settings/WebDavUrlScheme.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/settings/WebDavUrlScheme.java
rename to src/main/java/org/cryptomator/common/settings/WebDavUrlScheme.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/settings/WhenUnlocked.java b/src/main/java/org/cryptomator/common/settings/WhenUnlocked.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/settings/WhenUnlocked.java
rename to src/main/java/org/cryptomator/common/settings/WhenUnlocked.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/AbstractVolume.java b/src/main/java/org/cryptomator/common/vaults/AbstractVolume.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/vaults/AbstractVolume.java
rename to src/main/java/org/cryptomator/common/vaults/AbstractVolume.java
diff --git a/src/main/java/org/cryptomator/common/vaults/AutoLocker.java b/src/main/java/org/cryptomator/common/vaults/AutoLocker.java
new file mode 100644
index 000000000..da584086d
--- /dev/null
+++ b/src/main/java/org/cryptomator/common/vaults/AutoLocker.java
@@ -0,0 +1,60 @@
+package org.cryptomator.common.vaults;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+import javafx.collections.ObservableList;
+import java.time.Instant;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
+
+@Singleton
+public class AutoLocker {
+
+ private static final Logger LOG = LoggerFactory.getLogger(AutoLocker.class);
+
+ private final ScheduledExecutorService scheduler;
+ private final ObservableList vaultList;
+
+ @Inject
+ public AutoLocker(ScheduledExecutorService scheduler, ObservableList vaultList) {
+ this.scheduler = scheduler;
+ this.vaultList = vaultList;
+ }
+
+ public void init() {
+ scheduler.scheduleAtFixedRate(this::tick, 0, 1, TimeUnit.MINUTES);
+ }
+
+ private void tick() {
+ vaultList.stream() // all vaults
+ .filter(Vault::isUnlocked) // unlocked vaults
+ .filter(this::exceedsIdleTime) // idle vaults
+ .forEach(this::autolock);
+ }
+
+ private void autolock(Vault vault) {
+ try {
+ vault.lock(false);
+ LOG.info("Autolocked {} after idle timeout", vault.getDisplayName());
+ } catch (Volume.VolumeException | LockNotCompletedException e) {
+ LOG.error("Autolocking failed.", e);
+ }
+ }
+
+ private boolean exceedsIdleTime(Vault vault) {
+ assert vault.isUnlocked();
+ // TODO: shouldn't we read these properties from within FX Application Thread?
+ if (vault.getVaultSettings().autoLockWhenIdle().get()) {
+ int maxIdleSeconds = vault.getVaultSettings().autoLockIdleSeconds().get();
+ var deadline = vault.getStats().getLastActivity().plusSeconds(maxIdleSeconds);
+ return deadline.isBefore(Instant.now());
+ } else {
+ return false;
+ }
+ }
+
+
+}
diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/DefaultMountFlags.java b/src/main/java/org/cryptomator/common/vaults/DefaultMountFlags.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/vaults/DefaultMountFlags.java
rename to src/main/java/org/cryptomator/common/vaults/DefaultMountFlags.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/DokanyVolume.java b/src/main/java/org/cryptomator/common/vaults/DokanyVolume.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/vaults/DokanyVolume.java
rename to src/main/java/org/cryptomator/common/vaults/DokanyVolume.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/FuseVolume.java b/src/main/java/org/cryptomator/common/vaults/FuseVolume.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/vaults/FuseVolume.java
rename to src/main/java/org/cryptomator/common/vaults/FuseVolume.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/LockNotCompletedException.java b/src/main/java/org/cryptomator/common/vaults/LockNotCompletedException.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/vaults/LockNotCompletedException.java
rename to src/main/java/org/cryptomator/common/vaults/LockNotCompletedException.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/MountPointRequirement.java b/src/main/java/org/cryptomator/common/vaults/MountPointRequirement.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/vaults/MountPointRequirement.java
rename to src/main/java/org/cryptomator/common/vaults/MountPointRequirement.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/PerVault.java b/src/main/java/org/cryptomator/common/vaults/PerVault.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/vaults/PerVault.java
rename to src/main/java/org/cryptomator/common/vaults/PerVault.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java b/src/main/java/org/cryptomator/common/vaults/Vault.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java
rename to src/main/java/org/cryptomator/common/vaults/Vault.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/VaultComponent.java b/src/main/java/org/cryptomator/common/vaults/VaultComponent.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/vaults/VaultComponent.java
rename to src/main/java/org/cryptomator/common/vaults/VaultComponent.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/VaultListChangeListener.java b/src/main/java/org/cryptomator/common/vaults/VaultListChangeListener.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/vaults/VaultListChangeListener.java
rename to src/main/java/org/cryptomator/common/vaults/VaultListChangeListener.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/VaultListManager.java b/src/main/java/org/cryptomator/common/vaults/VaultListManager.java
similarity index 94%
rename from main/commons/src/main/java/org/cryptomator/common/vaults/VaultListManager.java
rename to src/main/java/org/cryptomator/common/vaults/VaultListManager.java
index d5038630a..05ea8ce07 100644
--- a/main/commons/src/main/java/org/cryptomator/common/vaults/VaultListManager.java
+++ b/src/main/java/org/cryptomator/common/vaults/VaultListManager.java
@@ -37,22 +37,21 @@ public class VaultListManager {
private static final Logger LOG = LoggerFactory.getLogger(VaultListManager.class);
+ private final AutoLocker autoLocker;
private final VaultComponent.Builder vaultComponentBuilder;
private final ObservableList vaultList;
private final String defaultVaultName;
@Inject
- public VaultListManager(VaultComponent.Builder vaultComponentBuilder, ResourceBundle resourceBundle, Settings settings) {
+ public VaultListManager(ObservableList vaultList, AutoLocker autoLocker, VaultComponent.Builder vaultComponentBuilder, ResourceBundle resourceBundle, Settings settings) {
+ this.vaultList = vaultList;
+ this.autoLocker = autoLocker;
this.vaultComponentBuilder = vaultComponentBuilder;
this.defaultVaultName = resourceBundle.getString("defaults.vault.vaultName");
- this.vaultList = FXCollections.observableArrayList(Vault::observables);
addAll(settings.getDirectories());
vaultList.addListener(new VaultListChangeListener(settings.getDirectories()));
- }
-
- public ObservableList getVaultList() {
- return vaultList;
+ autoLocker.init();
}
public Vault add(Path pathToVault) throws IOException {
diff --git a/src/main/java/org/cryptomator/common/vaults/VaultListModule.java b/src/main/java/org/cryptomator/common/vaults/VaultListModule.java
new file mode 100644
index 000000000..644d05335
--- /dev/null
+++ b/src/main/java/org/cryptomator/common/vaults/VaultListModule.java
@@ -0,0 +1,19 @@
+package org.cryptomator.common.vaults;
+
+import dagger.Module;
+import dagger.Provides;
+
+import javax.inject.Singleton;
+import javafx.collections.FXCollections;
+import javafx.collections.ObservableList;
+
+@Module
+public class VaultListModule {
+
+ @Provides
+ @Singleton
+ public ObservableList provideVaultList() {
+ return FXCollections.observableArrayList(Vault::observables);
+ }
+
+}
diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/VaultModule.java b/src/main/java/org/cryptomator/common/vaults/VaultModule.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/vaults/VaultModule.java
rename to src/main/java/org/cryptomator/common/vaults/VaultModule.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/VaultState.java b/src/main/java/org/cryptomator/common/vaults/VaultState.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/vaults/VaultState.java
rename to src/main/java/org/cryptomator/common/vaults/VaultState.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/VaultStats.java b/src/main/java/org/cryptomator/common/vaults/VaultStats.java
similarity index 90%
rename from main/commons/src/main/java/org/cryptomator/common/vaults/VaultStats.java
rename to src/main/java/org/cryptomator/common/vaults/VaultStats.java
index 6dc86e8be..649be3a09 100644
--- a/main/commons/src/main/java/org/cryptomator/common/vaults/VaultStats.java
+++ b/src/main/java/org/cryptomator/common/vaults/VaultStats.java
@@ -13,9 +13,11 @@ import javafx.beans.property.LongProperty;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleDoubleProperty;
import javafx.beans.property.SimpleLongProperty;
+import javafx.beans.property.SimpleObjectProperty;
import javafx.concurrent.ScheduledService;
import javafx.concurrent.Task;
import javafx.util.Duration;
+import java.time.Instant;
import java.util.Optional;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.atomic.AtomicReference;
@@ -39,6 +41,7 @@ public class VaultStats {
private final LongProperty totalBytesDecrypted = new SimpleLongProperty();
private final LongProperty filesRead = new SimpleLongProperty();
private final LongProperty filesWritten = new SimpleLongProperty();
+ private final ObjectProperty lastActivity = new SimpleObjectProperty<>();
@Inject
VaultStats(AtomicReference fs, VaultState state, ExecutorService executor) {
@@ -55,7 +58,10 @@ public class VaultStats {
if (VaultState.Value.UNLOCKED == state.get()) {
assert fs.get() != null;
LOG.debug("start recording stats");
- Platform.runLater(() -> updateService.restart());
+ Platform.runLater(() -> {
+ lastActivity.set(Instant.now());
+ updateService.restart();
+ });
} else {
LOG.debug("stop recording stats");
Platform.runLater(() -> updateService.cancel());
@@ -73,9 +79,15 @@ public class VaultStats {
toalBytesWritten.set(stats.map(CryptoFileSystemStats::pollTotalBytesWritten).orElse(0L));
totalBytesEncrypted.set(stats.map(CryptoFileSystemStats::pollTotalBytesEncrypted).orElse(0L));
totalBytesDecrypted.set(stats.map(CryptoFileSystemStats::pollTotalBytesDecrypted).orElse(0L));
+ var oldAccessCount = filesRead.get() + filesWritten.get();
filesRead.set(stats.map(CryptoFileSystemStats::pollAmountOfAccessesRead).orElse(0L));
filesWritten.set(stats.map(CryptoFileSystemStats::pollAmountOfAccessesWritten).orElse(0L));
+ var newAccessCount = filesRead.get() + filesWritten.get();
+ // check for any I/O activity
+ if (newAccessCount > oldAccessCount) {
+ lastActivity.set(Instant.now());
+ }
}
private double getCacheHitRate(CryptoFileSystemStats stats) {
@@ -175,4 +187,12 @@ public class VaultStats {
public LongProperty filesWritten() {return filesWritten;}
public long getFilesWritten() {return filesWritten.get();}
+
+ public ObjectProperty lastActivityProperty() {
+ return lastActivity;
+ }
+
+ public Instant getLastActivity() {
+ return lastActivity.get();
+ }
}
diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/Volume.java b/src/main/java/org/cryptomator/common/vaults/Volume.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/vaults/Volume.java
rename to src/main/java/org/cryptomator/common/vaults/Volume.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/WebDavVolume.java b/src/main/java/org/cryptomator/common/vaults/WebDavVolume.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/vaults/WebDavVolume.java
rename to src/main/java/org/cryptomator/common/vaults/WebDavVolume.java
diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/WindowsDriveLetters.java b/src/main/java/org/cryptomator/common/vaults/WindowsDriveLetters.java
similarity index 100%
rename from main/commons/src/main/java/org/cryptomator/common/vaults/WindowsDriveLetters.java
rename to src/main/java/org/cryptomator/common/vaults/WindowsDriveLetters.java
diff --git a/main/launcher/src/main/java/org/cryptomator/launcher/Cryptomator.java b/src/main/java/org/cryptomator/launcher/Cryptomator.java
similarity index 100%
rename from main/launcher/src/main/java/org/cryptomator/launcher/Cryptomator.java
rename to src/main/java/org/cryptomator/launcher/Cryptomator.java
diff --git a/main/launcher/src/main/java/org/cryptomator/launcher/CryptomatorComponent.java b/src/main/java/org/cryptomator/launcher/CryptomatorComponent.java
similarity index 100%
rename from main/launcher/src/main/java/org/cryptomator/launcher/CryptomatorComponent.java
rename to src/main/java/org/cryptomator/launcher/CryptomatorComponent.java
diff --git a/main/launcher/src/main/java/org/cryptomator/launcher/CryptomatorModule.java b/src/main/java/org/cryptomator/launcher/CryptomatorModule.java
similarity index 100%
rename from main/launcher/src/main/java/org/cryptomator/launcher/CryptomatorModule.java
rename to src/main/java/org/cryptomator/launcher/CryptomatorModule.java
diff --git a/main/launcher/src/main/java/org/cryptomator/launcher/FileOpenRequestHandler.java b/src/main/java/org/cryptomator/launcher/FileOpenRequestHandler.java
similarity index 100%
rename from main/launcher/src/main/java/org/cryptomator/launcher/FileOpenRequestHandler.java
rename to src/main/java/org/cryptomator/launcher/FileOpenRequestHandler.java
diff --git a/main/launcher/src/main/java/org/cryptomator/launcher/IpcFactory.java b/src/main/java/org/cryptomator/launcher/IpcFactory.java
similarity index 100%
rename from main/launcher/src/main/java/org/cryptomator/launcher/IpcFactory.java
rename to src/main/java/org/cryptomator/launcher/IpcFactory.java
diff --git a/main/launcher/src/main/java/org/cryptomator/launcher/IpcProtocol.java b/src/main/java/org/cryptomator/launcher/IpcProtocol.java
similarity index 100%
rename from main/launcher/src/main/java/org/cryptomator/launcher/IpcProtocol.java
rename to src/main/java/org/cryptomator/launcher/IpcProtocol.java
diff --git a/main/launcher/src/main/java/org/cryptomator/launcher/IpcProtocolImpl.java b/src/main/java/org/cryptomator/launcher/IpcProtocolImpl.java
similarity index 100%
rename from main/launcher/src/main/java/org/cryptomator/launcher/IpcProtocolImpl.java
rename to src/main/java/org/cryptomator/launcher/IpcProtocolImpl.java
diff --git a/main/launcher/src/main/java/org/cryptomator/logging/DebugMode.java b/src/main/java/org/cryptomator/logging/DebugMode.java
similarity index 100%
rename from main/launcher/src/main/java/org/cryptomator/logging/DebugMode.java
rename to src/main/java/org/cryptomator/logging/DebugMode.java
diff --git a/main/launcher/src/main/java/org/cryptomator/logging/LaunchAndSizeBasedTriggerinPolicy.java b/src/main/java/org/cryptomator/logging/LaunchAndSizeBasedTriggerinPolicy.java
similarity index 100%
rename from main/launcher/src/main/java/org/cryptomator/logging/LaunchAndSizeBasedTriggerinPolicy.java
rename to src/main/java/org/cryptomator/logging/LaunchAndSizeBasedTriggerinPolicy.java
diff --git a/main/launcher/src/main/java/org/cryptomator/logging/LaunchBasedTriggeringPolicy.java b/src/main/java/org/cryptomator/logging/LaunchBasedTriggeringPolicy.java
similarity index 100%
rename from main/launcher/src/main/java/org/cryptomator/logging/LaunchBasedTriggeringPolicy.java
rename to src/main/java/org/cryptomator/logging/LaunchBasedTriggeringPolicy.java
diff --git a/main/launcher/src/main/java/org/cryptomator/logging/LoggerConfiguration.java b/src/main/java/org/cryptomator/logging/LoggerConfiguration.java
similarity index 100%
rename from main/launcher/src/main/java/org/cryptomator/logging/LoggerConfiguration.java
rename to src/main/java/org/cryptomator/logging/LoggerConfiguration.java
diff --git a/main/launcher/src/main/java/org/cryptomator/logging/LoggerModule.java b/src/main/java/org/cryptomator/logging/LoggerModule.java
similarity index 100%
rename from main/launcher/src/main/java/org/cryptomator/logging/LoggerModule.java
rename to src/main/java/org/cryptomator/logging/LoggerModule.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultModule.java b/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultModule.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultModule.java
rename to src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultModule.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultSuccessController.java b/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultSuccessController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultSuccessController.java
rename to src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultSuccessController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultWelcomeController.java b/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultWelcomeController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultWelcomeController.java
rename to src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultWelcomeController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultWizardComponent.java b/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultWizardComponent.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultWizardComponent.java
rename to src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultWizardComponent.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultWizardScoped.java b/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultWizardScoped.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultWizardScoped.java
rename to src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultWizardScoped.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultWizardWindow.java b/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultWizardWindow.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultWizardWindow.java
rename to src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultWizardWindow.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ChooseExistingVaultController.java b/src/main/java/org/cryptomator/ui/addvaultwizard/ChooseExistingVaultController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ChooseExistingVaultController.java
rename to src/main/java/org/cryptomator/ui/addvaultwizard/ChooseExistingVaultController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultLocationController.java b/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultLocationController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultLocationController.java
rename to src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultLocationController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultNameController.java b/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultNameController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultNameController.java
rename to src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultNameController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultPasswordController.java b/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultPasswordController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultPasswordController.java
rename to src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultPasswordController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultRecoveryKeyController.java b/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultRecoveryKeyController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultRecoveryKeyController.java
rename to src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultRecoveryKeyController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/LocationPresets.java b/src/main/java/org/cryptomator/ui/addvaultwizard/LocationPresets.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/LocationPresets.java
rename to src/main/java/org/cryptomator/ui/addvaultwizard/LocationPresets.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ReadmeGenerator.java b/src/main/java/org/cryptomator/ui/addvaultwizard/ReadmeGenerator.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ReadmeGenerator.java
rename to src/main/java/org/cryptomator/ui/addvaultwizard/ReadmeGenerator.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordComponent.java b/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordComponent.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordComponent.java
rename to src/main/java/org/cryptomator/ui/changepassword/ChangePasswordComponent.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java b/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java
similarity index 98%
rename from main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java
rename to src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java
index 808375ecd..ccc0184ac 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java
+++ b/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java
@@ -100,7 +100,7 @@ public class ChangePasswordController implements FxController {
}
private void updatePasswordInSystemkeychain() {
- if (keychain.isSupported()) {
+ if (keychain.isSupported() && !keychain.isLocked()) {
try {
keychain.changePassphrase(vault.getId(), newPasswordController.passwordField.getCharacters());
LOG.info("Successfully updated password in system keychain for {}", vault.getDisplayName());
diff --git a/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordModule.java b/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordModule.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordModule.java
rename to src/main/java/org/cryptomator/ui/changepassword/ChangePasswordModule.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordScoped.java b/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordScoped.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordScoped.java
rename to src/main/java/org/cryptomator/ui/changepassword/ChangePasswordScoped.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordWindow.java b/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordWindow.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordWindow.java
rename to src/main/java/org/cryptomator/ui/changepassword/ChangePasswordWindow.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/common/Animations.java b/src/main/java/org/cryptomator/ui/common/Animations.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/common/Animations.java
rename to src/main/java/org/cryptomator/ui/common/Animations.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/common/DefaultSceneFactory.java b/src/main/java/org/cryptomator/ui/common/DefaultSceneFactory.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/common/DefaultSceneFactory.java
rename to src/main/java/org/cryptomator/ui/common/DefaultSceneFactory.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/common/ErrorComponent.java b/src/main/java/org/cryptomator/ui/common/ErrorComponent.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/common/ErrorComponent.java
rename to src/main/java/org/cryptomator/ui/common/ErrorComponent.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/common/ErrorController.java b/src/main/java/org/cryptomator/ui/common/ErrorController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/common/ErrorController.java
rename to src/main/java/org/cryptomator/ui/common/ErrorController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/common/ErrorModule.java b/src/main/java/org/cryptomator/ui/common/ErrorModule.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/common/ErrorModule.java
rename to src/main/java/org/cryptomator/ui/common/ErrorModule.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/common/FontLoader.java b/src/main/java/org/cryptomator/ui/common/FontLoader.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/common/FontLoader.java
rename to src/main/java/org/cryptomator/ui/common/FontLoader.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/common/FxController.java b/src/main/java/org/cryptomator/ui/common/FxController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/common/FxController.java
rename to src/main/java/org/cryptomator/ui/common/FxController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/common/FxControllerKey.java b/src/main/java/org/cryptomator/ui/common/FxControllerKey.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/common/FxControllerKey.java
rename to src/main/java/org/cryptomator/ui/common/FxControllerKey.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/common/FxmlFile.java b/src/main/java/org/cryptomator/ui/common/FxmlFile.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/common/FxmlFile.java
rename to src/main/java/org/cryptomator/ui/common/FxmlFile.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/common/FxmlLoaderFactory.java b/src/main/java/org/cryptomator/ui/common/FxmlLoaderFactory.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/common/FxmlLoaderFactory.java
rename to src/main/java/org/cryptomator/ui/common/FxmlLoaderFactory.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/common/FxmlScene.java b/src/main/java/org/cryptomator/ui/common/FxmlScene.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/common/FxmlScene.java
rename to src/main/java/org/cryptomator/ui/common/FxmlScene.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/common/HostServiceRevealer.java b/src/main/java/org/cryptomator/ui/common/HostServiceRevealer.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/common/HostServiceRevealer.java
rename to src/main/java/org/cryptomator/ui/common/HostServiceRevealer.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/common/NewPasswordController.java b/src/main/java/org/cryptomator/ui/common/NewPasswordController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/common/NewPasswordController.java
rename to src/main/java/org/cryptomator/ui/common/NewPasswordController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/common/PasswordStrengthUtil.java b/src/main/java/org/cryptomator/ui/common/PasswordStrengthUtil.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/common/PasswordStrengthUtil.java
rename to src/main/java/org/cryptomator/ui/common/PasswordStrengthUtil.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/common/StageFactory.java b/src/main/java/org/cryptomator/ui/common/StageFactory.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/common/StageFactory.java
rename to src/main/java/org/cryptomator/ui/common/StageFactory.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/common/Tasks.java b/src/main/java/org/cryptomator/ui/common/Tasks.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/common/Tasks.java
rename to src/main/java/org/cryptomator/ui/common/Tasks.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/common/UserInteractionLock.java b/src/main/java/org/cryptomator/ui/common/UserInteractionLock.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/common/UserInteractionLock.java
rename to src/main/java/org/cryptomator/ui/common/UserInteractionLock.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/common/VaultService.java b/src/main/java/org/cryptomator/ui/common/VaultService.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/common/VaultService.java
rename to src/main/java/org/cryptomator/ui/common/VaultService.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/common/WeakBindings.java b/src/main/java/org/cryptomator/ui/common/WeakBindings.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/common/WeakBindings.java
rename to src/main/java/org/cryptomator/ui/common/WeakBindings.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/controls/AlphanumericTextField.java b/src/main/java/org/cryptomator/ui/controls/AlphanumericTextField.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/controls/AlphanumericTextField.java
rename to src/main/java/org/cryptomator/ui/controls/AlphanumericTextField.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/controls/DataLabel.java b/src/main/java/org/cryptomator/ui/controls/DataLabel.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/controls/DataLabel.java
rename to src/main/java/org/cryptomator/ui/controls/DataLabel.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/controls/DraggableListCell.java b/src/main/java/org/cryptomator/ui/controls/DraggableListCell.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/controls/DraggableListCell.java
rename to src/main/java/org/cryptomator/ui/controls/DraggableListCell.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/controls/FontAwesome5Icon.java b/src/main/java/org/cryptomator/ui/controls/FontAwesome5Icon.java
similarity index 97%
rename from main/ui/src/main/java/org/cryptomator/ui/controls/FontAwesome5Icon.java
rename to src/main/java/org/cryptomator/ui/controls/FontAwesome5Icon.java
index 13c583c0e..a273447bb 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/controls/FontAwesome5Icon.java
+++ b/src/main/java/org/cryptomator/ui/controls/FontAwesome5Icon.java
@@ -39,6 +39,7 @@ public enum FontAwesome5Icon {
REDO("\uF01E"), //
SEARCH("\uF002"), //
SPINNER("\uF110"), //
+ STOPWATCH("\uF2F2"), //
SYNC("\uF021"), //
TIMES("\uF00D"), //
TRASH("\uF1F8"), //
diff --git a/main/ui/src/main/java/org/cryptomator/ui/controls/FontAwesome5IconView.java b/src/main/java/org/cryptomator/ui/controls/FontAwesome5IconView.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/controls/FontAwesome5IconView.java
rename to src/main/java/org/cryptomator/ui/controls/FontAwesome5IconView.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/controls/FormattedLabel.java b/src/main/java/org/cryptomator/ui/controls/FormattedLabel.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/controls/FormattedLabel.java
rename to src/main/java/org/cryptomator/ui/controls/FormattedLabel.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/controls/FormattedString.java b/src/main/java/org/cryptomator/ui/controls/FormattedString.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/controls/FormattedString.java
rename to src/main/java/org/cryptomator/ui/controls/FormattedString.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/controls/NiceSecurePasswordField.java b/src/main/java/org/cryptomator/ui/controls/NiceSecurePasswordField.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/controls/NiceSecurePasswordField.java
rename to src/main/java/org/cryptomator/ui/controls/NiceSecurePasswordField.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/controls/NumericTextField.java b/src/main/java/org/cryptomator/ui/controls/NumericTextField.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/controls/NumericTextField.java
rename to src/main/java/org/cryptomator/ui/controls/NumericTextField.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/controls/PasswordStrengthIndicator.java b/src/main/java/org/cryptomator/ui/controls/PasswordStrengthIndicator.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/controls/PasswordStrengthIndicator.java
rename to src/main/java/org/cryptomator/ui/controls/PasswordStrengthIndicator.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/controls/SecurePasswordField.java b/src/main/java/org/cryptomator/ui/controls/SecurePasswordField.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/controls/SecurePasswordField.java
rename to src/main/java/org/cryptomator/ui/controls/SecurePasswordField.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/controls/ThrougputLabel.java b/src/main/java/org/cryptomator/ui/controls/ThrougputLabel.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/controls/ThrougputLabel.java
rename to src/main/java/org/cryptomator/ui/controls/ThrougputLabel.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordComponent.java b/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordComponent.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordComponent.java
rename to src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordComponent.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordController.java b/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordController.java
rename to src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordModule.java b/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordModule.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordModule.java
rename to src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordModule.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordScoped.java b/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordScoped.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordScoped.java
rename to src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordScoped.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordWindow.java b/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordWindow.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordWindow.java
rename to src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordWindow.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplication.java b/src/main/java/org/cryptomator/ui/fxapp/FxApplication.java
similarity index 98%
rename from main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplication.java
rename to src/main/java/org/cryptomator/ui/fxapp/FxApplication.java
index b0ea8da47..02a2e5b9e 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplication.java
+++ b/src/main/java/org/cryptomator/ui/fxapp/FxApplication.java
@@ -1,10 +1,19 @@
package org.cryptomator.ui.fxapp;
import dagger.Lazy;
+import javafx.application.Application;
+import javafx.application.Platform;
+import javafx.beans.binding.Bindings;
+import javafx.beans.binding.BooleanBinding;
+import javafx.beans.value.ObservableValue;
+import javafx.collections.ObservableList;
+import javafx.stage.Stage;
+import javafx.stage.Window;
import org.cryptomator.common.LicenseHolder;
import org.cryptomator.common.settings.Settings;
import org.cryptomator.common.settings.UiTheme;
import org.cryptomator.common.vaults.Vault;
+import org.cryptomator.common.vaults.VaultListManager;
import org.cryptomator.common.vaults.VaultState;
import org.cryptomator.integrations.tray.TrayIntegrationProvider;
import org.cryptomator.integrations.uiappearance.Theme;
@@ -24,18 +33,12 @@ import org.slf4j.LoggerFactory;
import javax.inject.Inject;
import javax.inject.Provider;
-import javafx.application.Application;
-import javafx.application.Platform;
-import javafx.beans.binding.Bindings;
-import javafx.beans.binding.BooleanBinding;
-import javafx.beans.value.ObservableValue;
-import javafx.collections.ObservableList;
-import javafx.stage.Stage;
-import javafx.stage.Window;
import java.awt.desktop.QuitResponse;
import java.util.Optional;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.CompletionStage;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.TimeUnit;
@FxApplicationScoped
public class FxApplication extends Application {
diff --git a/main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplicationComponent.java b/src/main/java/org/cryptomator/ui/fxapp/FxApplicationComponent.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplicationComponent.java
rename to src/main/java/org/cryptomator/ui/fxapp/FxApplicationComponent.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplicationModule.java b/src/main/java/org/cryptomator/ui/fxapp/FxApplicationModule.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplicationModule.java
rename to src/main/java/org/cryptomator/ui/fxapp/FxApplicationModule.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplicationScoped.java b/src/main/java/org/cryptomator/ui/fxapp/FxApplicationScoped.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplicationScoped.java
rename to src/main/java/org/cryptomator/ui/fxapp/FxApplicationScoped.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java b/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java
rename to src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/fxapp/UpdateCheckerModule.java b/src/main/java/org/cryptomator/ui/fxapp/UpdateCheckerModule.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/fxapp/UpdateCheckerModule.java
rename to src/main/java/org/cryptomator/ui/fxapp/UpdateCheckerModule.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/fxapp/UpdateCheckerTask.java b/src/main/java/org/cryptomator/ui/fxapp/UpdateCheckerTask.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/fxapp/UpdateCheckerTask.java
rename to src/main/java/org/cryptomator/ui/fxapp/UpdateCheckerTask.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/health/BatchService.java b/src/main/java/org/cryptomator/ui/health/BatchService.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/health/BatchService.java
rename to src/main/java/org/cryptomator/ui/health/BatchService.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/health/CheckDetailController.java b/src/main/java/org/cryptomator/ui/health/CheckDetailController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/health/CheckDetailController.java
rename to src/main/java/org/cryptomator/ui/health/CheckDetailController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/health/CheckListCell.java b/src/main/java/org/cryptomator/ui/health/CheckListCell.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/health/CheckListCell.java
rename to src/main/java/org/cryptomator/ui/health/CheckListCell.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/health/CheckListController.java b/src/main/java/org/cryptomator/ui/health/CheckListController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/health/CheckListController.java
rename to src/main/java/org/cryptomator/ui/health/CheckListController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/health/HealthCheckComponent.java b/src/main/java/org/cryptomator/ui/health/HealthCheckComponent.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/health/HealthCheckComponent.java
rename to src/main/java/org/cryptomator/ui/health/HealthCheckComponent.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/health/HealthCheckModule.java b/src/main/java/org/cryptomator/ui/health/HealthCheckModule.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/health/HealthCheckModule.java
rename to src/main/java/org/cryptomator/ui/health/HealthCheckModule.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/health/HealthCheckScoped.java b/src/main/java/org/cryptomator/ui/health/HealthCheckScoped.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/health/HealthCheckScoped.java
rename to src/main/java/org/cryptomator/ui/health/HealthCheckScoped.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/health/HealthCheckTask.java b/src/main/java/org/cryptomator/ui/health/HealthCheckTask.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/health/HealthCheckTask.java
rename to src/main/java/org/cryptomator/ui/health/HealthCheckTask.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/health/HealthCheckWindow.java b/src/main/java/org/cryptomator/ui/health/HealthCheckWindow.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/health/HealthCheckWindow.java
rename to src/main/java/org/cryptomator/ui/health/HealthCheckWindow.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/health/ReportWriter.java b/src/main/java/org/cryptomator/ui/health/ReportWriter.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/health/ReportWriter.java
rename to src/main/java/org/cryptomator/ui/health/ReportWriter.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/health/ResultFixApplier.java b/src/main/java/org/cryptomator/ui/health/ResultFixApplier.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/health/ResultFixApplier.java
rename to src/main/java/org/cryptomator/ui/health/ResultFixApplier.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/health/ResultListCellController.java b/src/main/java/org/cryptomator/ui/health/ResultListCellController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/health/ResultListCellController.java
rename to src/main/java/org/cryptomator/ui/health/ResultListCellController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/health/ResultListCellFactory.java b/src/main/java/org/cryptomator/ui/health/ResultListCellFactory.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/health/ResultListCellFactory.java
rename to src/main/java/org/cryptomator/ui/health/ResultListCellFactory.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/health/StartController.java b/src/main/java/org/cryptomator/ui/health/StartController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/health/StartController.java
rename to src/main/java/org/cryptomator/ui/health/StartController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/keyloading/KeyLoading.java b/src/main/java/org/cryptomator/ui/keyloading/KeyLoading.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/keyloading/KeyLoading.java
rename to src/main/java/org/cryptomator/ui/keyloading/KeyLoading.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/keyloading/KeyLoadingComponent.java b/src/main/java/org/cryptomator/ui/keyloading/KeyLoadingComponent.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/keyloading/KeyLoadingComponent.java
rename to src/main/java/org/cryptomator/ui/keyloading/KeyLoadingComponent.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/keyloading/KeyLoadingModule.java b/src/main/java/org/cryptomator/ui/keyloading/KeyLoadingModule.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/keyloading/KeyLoadingModule.java
rename to src/main/java/org/cryptomator/ui/keyloading/KeyLoadingModule.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/keyloading/KeyLoadingScoped.java b/src/main/java/org/cryptomator/ui/keyloading/KeyLoadingScoped.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/keyloading/KeyLoadingScoped.java
rename to src/main/java/org/cryptomator/ui/keyloading/KeyLoadingScoped.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/keyloading/KeyLoadingStrategy.java b/src/main/java/org/cryptomator/ui/keyloading/KeyLoadingStrategy.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/keyloading/KeyLoadingStrategy.java
rename to src/main/java/org/cryptomator/ui/keyloading/KeyLoadingStrategy.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/MasterkeyFileLoadingFinisher.java b/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/MasterkeyFileLoadingFinisher.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/MasterkeyFileLoadingFinisher.java
rename to src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/MasterkeyFileLoadingFinisher.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/MasterkeyFileLoadingModule.java b/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/MasterkeyFileLoadingModule.java
similarity index 98%
rename from main/ui/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/MasterkeyFileLoadingModule.java
rename to src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/MasterkeyFileLoadingModule.java
index d9413121c..901eacfb9 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/MasterkeyFileLoadingModule.java
+++ b/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/MasterkeyFileLoadingModule.java
@@ -59,7 +59,7 @@ public abstract class MasterkeyFileLoadingModule {
@Named("savedPassword")
@KeyLoadingScoped
static Optional provideStoredPassword(KeychainManager keychain, @KeyLoading Vault vault) {
- if (!keychain.isSupported()) {
+ if (!keychain.isSupported() || keychain.isLocked()) {
return Optional.empty();
} else {
try {
diff --git a/main/ui/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/MasterkeyFileLoadingStrategy.java b/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/MasterkeyFileLoadingStrategy.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/MasterkeyFileLoadingStrategy.java
rename to src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/MasterkeyFileLoadingStrategy.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/PassphraseEntryController.java b/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/PassphraseEntryController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/PassphraseEntryController.java
rename to src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/PassphraseEntryController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/SelectMasterkeyFileController.java b/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/SelectMasterkeyFileController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/SelectMasterkeyFileController.java
rename to src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/SelectMasterkeyFileController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/launcher/AppLaunchEvent.java b/src/main/java/org/cryptomator/ui/launcher/AppLaunchEvent.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/launcher/AppLaunchEvent.java
rename to src/main/java/org/cryptomator/ui/launcher/AppLaunchEvent.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/launcher/AppLaunchEventHandler.java b/src/main/java/org/cryptomator/ui/launcher/AppLaunchEventHandler.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/launcher/AppLaunchEventHandler.java
rename to src/main/java/org/cryptomator/ui/launcher/AppLaunchEventHandler.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/launcher/AppLifecycleListener.java b/src/main/java/org/cryptomator/ui/launcher/AppLifecycleListener.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/launcher/AppLifecycleListener.java
rename to src/main/java/org/cryptomator/ui/launcher/AppLifecycleListener.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/launcher/FxApplicationStarter.java b/src/main/java/org/cryptomator/ui/launcher/FxApplicationStarter.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/launcher/FxApplicationStarter.java
rename to src/main/java/org/cryptomator/ui/launcher/FxApplicationStarter.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/launcher/UiLauncher.java b/src/main/java/org/cryptomator/ui/launcher/UiLauncher.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/launcher/UiLauncher.java
rename to src/main/java/org/cryptomator/ui/launcher/UiLauncher.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/launcher/UiLauncherModule.java b/src/main/java/org/cryptomator/ui/launcher/UiLauncherModule.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/launcher/UiLauncherModule.java
rename to src/main/java/org/cryptomator/ui/launcher/UiLauncherModule.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/lock/LockComponent.java b/src/main/java/org/cryptomator/ui/lock/LockComponent.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/lock/LockComponent.java
rename to src/main/java/org/cryptomator/ui/lock/LockComponent.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/lock/LockFailedController.java b/src/main/java/org/cryptomator/ui/lock/LockFailedController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/lock/LockFailedController.java
rename to src/main/java/org/cryptomator/ui/lock/LockFailedController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/lock/LockForcedController.java b/src/main/java/org/cryptomator/ui/lock/LockForcedController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/lock/LockForcedController.java
rename to src/main/java/org/cryptomator/ui/lock/LockForcedController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/lock/LockModule.java b/src/main/java/org/cryptomator/ui/lock/LockModule.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/lock/LockModule.java
rename to src/main/java/org/cryptomator/ui/lock/LockModule.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/lock/LockScoped.java b/src/main/java/org/cryptomator/ui/lock/LockScoped.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/lock/LockScoped.java
rename to src/main/java/org/cryptomator/ui/lock/LockScoped.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/lock/LockWindow.java b/src/main/java/org/cryptomator/ui/lock/LockWindow.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/lock/LockWindow.java
rename to src/main/java/org/cryptomator/ui/lock/LockWindow.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/lock/LockWorkflow.java b/src/main/java/org/cryptomator/ui/lock/LockWorkflow.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/lock/LockWorkflow.java
rename to src/main/java/org/cryptomator/ui/lock/LockWorkflow.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindow.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindow.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindow.java
rename to src/main/java/org/cryptomator/ui/mainwindow/MainWindow.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowComponent.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowComponent.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowComponent.java
rename to src/main/java/org/cryptomator/ui/mainwindow/MainWindowComponent.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowController.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowController.java
rename to src/main/java/org/cryptomator/ui/mainwindow/MainWindowController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java
rename to src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowSceneFactory.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowSceneFactory.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowSceneFactory.java
rename to src/main/java/org/cryptomator/ui/mainwindow/MainWindowSceneFactory.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowScoped.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowScoped.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowScoped.java
rename to src/main/java/org/cryptomator/ui/mainwindow/MainWindowScoped.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java b/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java
rename to src/main/java/org/cryptomator/ui/mainwindow/MainWindowTitleController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java b/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java
rename to src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailController.java b/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailController.java
rename to src/main/java/org/cryptomator/ui/mainwindow/VaultDetailController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailLockedController.java b/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailLockedController.java
similarity index 97%
rename from main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailLockedController.java
rename to src/main/java/org/cryptomator/ui/mainwindow/VaultDetailLockedController.java
index 20f0d916d..5fee2e6d1 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailLockedController.java
+++ b/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailLockedController.java
@@ -36,7 +36,7 @@ public class VaultDetailLockedController implements FxController {
this.vaultOptionsWindow = vaultOptionsWindow;
this.keychain = keychain;
this.mainWindow = mainWindow;
- if (keychain.isSupported()) {
+ if (keychain.isSupported() && !keychain.isLocked()) {
this.passwordSaved = BooleanExpression.booleanExpression(EasyBind.select(vault).selectObject(v -> keychain.getPassphraseStoredProperty(v.getId())));
} else {
this.passwordSaved = new SimpleBooleanProperty(false);
diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailMissingVaultController.java b/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailMissingVaultController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailMissingVaultController.java
rename to src/main/java/org/cryptomator/ui/mainwindow/VaultDetailMissingVaultController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailNeedsMigrationController.java b/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailNeedsMigrationController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailNeedsMigrationController.java
rename to src/main/java/org/cryptomator/ui/mainwindow/VaultDetailNeedsMigrationController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailUnknownErrorController.java b/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailUnknownErrorController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailUnknownErrorController.java
rename to src/main/java/org/cryptomator/ui/mainwindow/VaultDetailUnknownErrorController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailUnlockedController.java b/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailUnlockedController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailUnlockedController.java
rename to src/main/java/org/cryptomator/ui/mainwindow/VaultDetailUnlockedController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListCellController.java b/src/main/java/org/cryptomator/ui/mainwindow/VaultListCellController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListCellController.java
rename to src/main/java/org/cryptomator/ui/mainwindow/VaultListCellController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListCellFactory.java b/src/main/java/org/cryptomator/ui/mainwindow/VaultListCellFactory.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListCellFactory.java
rename to src/main/java/org/cryptomator/ui/mainwindow/VaultListCellFactory.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListContextMenuController.java b/src/main/java/org/cryptomator/ui/mainwindow/VaultListContextMenuController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListContextMenuController.java
rename to src/main/java/org/cryptomator/ui/mainwindow/VaultListContextMenuController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java b/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java
rename to src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/WelcomeController.java b/src/main/java/org/cryptomator/ui/mainwindow/WelcomeController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/mainwindow/WelcomeController.java
rename to src/main/java/org/cryptomator/ui/mainwindow/WelcomeController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/migration/MigrationCapabilityErrorController.java b/src/main/java/org/cryptomator/ui/migration/MigrationCapabilityErrorController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/migration/MigrationCapabilityErrorController.java
rename to src/main/java/org/cryptomator/ui/migration/MigrationCapabilityErrorController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/migration/MigrationComponent.java b/src/main/java/org/cryptomator/ui/migration/MigrationComponent.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/migration/MigrationComponent.java
rename to src/main/java/org/cryptomator/ui/migration/MigrationComponent.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/migration/MigrationImpossibleController.java b/src/main/java/org/cryptomator/ui/migration/MigrationImpossibleController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/migration/MigrationImpossibleController.java
rename to src/main/java/org/cryptomator/ui/migration/MigrationImpossibleController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/migration/MigrationModule.java b/src/main/java/org/cryptomator/ui/migration/MigrationModule.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/migration/MigrationModule.java
rename to src/main/java/org/cryptomator/ui/migration/MigrationModule.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/migration/MigrationRunController.java b/src/main/java/org/cryptomator/ui/migration/MigrationRunController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/migration/MigrationRunController.java
rename to src/main/java/org/cryptomator/ui/migration/MigrationRunController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/migration/MigrationScoped.java b/src/main/java/org/cryptomator/ui/migration/MigrationScoped.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/migration/MigrationScoped.java
rename to src/main/java/org/cryptomator/ui/migration/MigrationScoped.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/migration/MigrationStartController.java b/src/main/java/org/cryptomator/ui/migration/MigrationStartController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/migration/MigrationStartController.java
rename to src/main/java/org/cryptomator/ui/migration/MigrationStartController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/migration/MigrationSuccessController.java b/src/main/java/org/cryptomator/ui/migration/MigrationSuccessController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/migration/MigrationSuccessController.java
rename to src/main/java/org/cryptomator/ui/migration/MigrationSuccessController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/migration/MigrationWindow.java b/src/main/java/org/cryptomator/ui/migration/MigrationWindow.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/migration/MigrationWindow.java
rename to src/main/java/org/cryptomator/ui/migration/MigrationWindow.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/preferences/AboutController.java b/src/main/java/org/cryptomator/ui/preferences/AboutController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/preferences/AboutController.java
rename to src/main/java/org/cryptomator/ui/preferences/AboutController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/preferences/GeneralPreferencesController.java b/src/main/java/org/cryptomator/ui/preferences/GeneralPreferencesController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/preferences/GeneralPreferencesController.java
rename to src/main/java/org/cryptomator/ui/preferences/GeneralPreferencesController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesComponent.java b/src/main/java/org/cryptomator/ui/preferences/PreferencesComponent.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesComponent.java
rename to src/main/java/org/cryptomator/ui/preferences/PreferencesComponent.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesController.java b/src/main/java/org/cryptomator/ui/preferences/PreferencesController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesController.java
rename to src/main/java/org/cryptomator/ui/preferences/PreferencesController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesModule.java b/src/main/java/org/cryptomator/ui/preferences/PreferencesModule.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesModule.java
rename to src/main/java/org/cryptomator/ui/preferences/PreferencesModule.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesScoped.java b/src/main/java/org/cryptomator/ui/preferences/PreferencesScoped.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesScoped.java
rename to src/main/java/org/cryptomator/ui/preferences/PreferencesScoped.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesWindow.java b/src/main/java/org/cryptomator/ui/preferences/PreferencesWindow.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/preferences/PreferencesWindow.java
rename to src/main/java/org/cryptomator/ui/preferences/PreferencesWindow.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/preferences/SelectedPreferencesTab.java b/src/main/java/org/cryptomator/ui/preferences/SelectedPreferencesTab.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/preferences/SelectedPreferencesTab.java
rename to src/main/java/org/cryptomator/ui/preferences/SelectedPreferencesTab.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/preferences/SupporterCertificateController.java b/src/main/java/org/cryptomator/ui/preferences/SupporterCertificateController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/preferences/SupporterCertificateController.java
rename to src/main/java/org/cryptomator/ui/preferences/SupporterCertificateController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/preferences/UpdatesPreferencesController.java b/src/main/java/org/cryptomator/ui/preferences/UpdatesPreferencesController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/preferences/UpdatesPreferencesController.java
rename to src/main/java/org/cryptomator/ui/preferences/UpdatesPreferencesController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/preferences/VolumePreferencesController.java b/src/main/java/org/cryptomator/ui/preferences/VolumePreferencesController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/preferences/VolumePreferencesController.java
rename to src/main/java/org/cryptomator/ui/preferences/VolumePreferencesController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/quit/QuitComponent.java b/src/main/java/org/cryptomator/ui/quit/QuitComponent.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/quit/QuitComponent.java
rename to src/main/java/org/cryptomator/ui/quit/QuitComponent.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/quit/QuitController.java b/src/main/java/org/cryptomator/ui/quit/QuitController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/quit/QuitController.java
rename to src/main/java/org/cryptomator/ui/quit/QuitController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/quit/QuitModule.java b/src/main/java/org/cryptomator/ui/quit/QuitModule.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/quit/QuitModule.java
rename to src/main/java/org/cryptomator/ui/quit/QuitModule.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/quit/QuitScoped.java b/src/main/java/org/cryptomator/ui/quit/QuitScoped.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/quit/QuitScoped.java
rename to src/main/java/org/cryptomator/ui/quit/QuitScoped.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/quit/QuitWindow.java b/src/main/java/org/cryptomator/ui/quit/QuitWindow.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/quit/QuitWindow.java
rename to src/main/java/org/cryptomator/ui/quit/QuitWindow.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/recoverykey/AutoCompleter.java b/src/main/java/org/cryptomator/ui/recoverykey/AutoCompleter.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/recoverykey/AutoCompleter.java
rename to src/main/java/org/cryptomator/ui/recoverykey/AutoCompleter.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyComponent.java b/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyComponent.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyComponent.java
rename to src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyComponent.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyCreationController.java b/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyCreationController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyCreationController.java
rename to src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyCreationController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyDisplayController.java b/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyDisplayController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyDisplayController.java
rename to src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyDisplayController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyFactory.java b/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyFactory.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyFactory.java
rename to src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyFactory.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyModule.java b/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyModule.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyModule.java
rename to src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyModule.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyRecoverController.java b/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyRecoverController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyRecoverController.java
rename to src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyRecoverController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyResetPasswordController.java b/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyResetPasswordController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyResetPasswordController.java
rename to src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyResetPasswordController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyScoped.java b/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyScoped.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyScoped.java
rename to src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyScoped.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeySuccessController.java b/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeySuccessController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeySuccessController.java
rename to src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeySuccessController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyWindow.java b/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyWindow.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyWindow.java
rename to src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyWindow.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/recoverykey/WordEncoder.java b/src/main/java/org/cryptomator/ui/recoverykey/WordEncoder.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/recoverykey/WordEncoder.java
rename to src/main/java/org/cryptomator/ui/recoverykey/WordEncoder.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/removevault/RemoveVaultComponent.java b/src/main/java/org/cryptomator/ui/removevault/RemoveVaultComponent.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/removevault/RemoveVaultComponent.java
rename to src/main/java/org/cryptomator/ui/removevault/RemoveVaultComponent.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/removevault/RemoveVaultController.java b/src/main/java/org/cryptomator/ui/removevault/RemoveVaultController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/removevault/RemoveVaultController.java
rename to src/main/java/org/cryptomator/ui/removevault/RemoveVaultController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/removevault/RemoveVaultModule.java b/src/main/java/org/cryptomator/ui/removevault/RemoveVaultModule.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/removevault/RemoveVaultModule.java
rename to src/main/java/org/cryptomator/ui/removevault/RemoveVaultModule.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/removevault/RemoveVaultScoped.java b/src/main/java/org/cryptomator/ui/removevault/RemoveVaultScoped.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/removevault/RemoveVaultScoped.java
rename to src/main/java/org/cryptomator/ui/removevault/RemoveVaultScoped.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/removevault/RemoveVaultWindow.java b/src/main/java/org/cryptomator/ui/removevault/RemoveVaultWindow.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/removevault/RemoveVaultWindow.java
rename to src/main/java/org/cryptomator/ui/removevault/RemoveVaultWindow.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/stats/VaultStatisticsComponent.java b/src/main/java/org/cryptomator/ui/stats/VaultStatisticsComponent.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/stats/VaultStatisticsComponent.java
rename to src/main/java/org/cryptomator/ui/stats/VaultStatisticsComponent.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/stats/VaultStatisticsController.java b/src/main/java/org/cryptomator/ui/stats/VaultStatisticsController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/stats/VaultStatisticsController.java
rename to src/main/java/org/cryptomator/ui/stats/VaultStatisticsController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/stats/VaultStatisticsModule.java b/src/main/java/org/cryptomator/ui/stats/VaultStatisticsModule.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/stats/VaultStatisticsModule.java
rename to src/main/java/org/cryptomator/ui/stats/VaultStatisticsModule.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/stats/VaultStatisticsScoped.java b/src/main/java/org/cryptomator/ui/stats/VaultStatisticsScoped.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/stats/VaultStatisticsScoped.java
rename to src/main/java/org/cryptomator/ui/stats/VaultStatisticsScoped.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/stats/VaultStatisticsWindow.java b/src/main/java/org/cryptomator/ui/stats/VaultStatisticsWindow.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/stats/VaultStatisticsWindow.java
rename to src/main/java/org/cryptomator/ui/stats/VaultStatisticsWindow.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/traymenu/TrayIconController.java b/src/main/java/org/cryptomator/ui/traymenu/TrayIconController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/traymenu/TrayIconController.java
rename to src/main/java/org/cryptomator/ui/traymenu/TrayIconController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/traymenu/TrayImageFactory.java b/src/main/java/org/cryptomator/ui/traymenu/TrayImageFactory.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/traymenu/TrayImageFactory.java
rename to src/main/java/org/cryptomator/ui/traymenu/TrayImageFactory.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/traymenu/TrayMenuComponent.java b/src/main/java/org/cryptomator/ui/traymenu/TrayMenuComponent.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/traymenu/TrayMenuComponent.java
rename to src/main/java/org/cryptomator/ui/traymenu/TrayMenuComponent.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/traymenu/TrayMenuController.java b/src/main/java/org/cryptomator/ui/traymenu/TrayMenuController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/traymenu/TrayMenuController.java
rename to src/main/java/org/cryptomator/ui/traymenu/TrayMenuController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/traymenu/TrayMenuScoped.java b/src/main/java/org/cryptomator/ui/traymenu/TrayMenuScoped.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/traymenu/TrayMenuScoped.java
rename to src/main/java/org/cryptomator/ui/traymenu/TrayMenuScoped.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockCancelledException.java b/src/main/java/org/cryptomator/ui/unlock/UnlockCancelledException.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockCancelledException.java
rename to src/main/java/org/cryptomator/ui/unlock/UnlockCancelledException.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockComponent.java b/src/main/java/org/cryptomator/ui/unlock/UnlockComponent.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockComponent.java
rename to src/main/java/org/cryptomator/ui/unlock/UnlockComponent.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockInvalidMountPointController.java b/src/main/java/org/cryptomator/ui/unlock/UnlockInvalidMountPointController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockInvalidMountPointController.java
rename to src/main/java/org/cryptomator/ui/unlock/UnlockInvalidMountPointController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockModule.java b/src/main/java/org/cryptomator/ui/unlock/UnlockModule.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockModule.java
rename to src/main/java/org/cryptomator/ui/unlock/UnlockModule.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockScoped.java b/src/main/java/org/cryptomator/ui/unlock/UnlockScoped.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockScoped.java
rename to src/main/java/org/cryptomator/ui/unlock/UnlockScoped.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockSuccessController.java b/src/main/java/org/cryptomator/ui/unlock/UnlockSuccessController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockSuccessController.java
rename to src/main/java/org/cryptomator/ui/unlock/UnlockSuccessController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockWindow.java b/src/main/java/org/cryptomator/ui/unlock/UnlockWindow.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockWindow.java
rename to src/main/java/org/cryptomator/ui/unlock/UnlockWindow.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockWorkflow.java b/src/main/java/org/cryptomator/ui/unlock/UnlockWorkflow.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockWorkflow.java
rename to src/main/java/org/cryptomator/ui/unlock/UnlockWorkflow.java
diff --git a/src/main/java/org/cryptomator/ui/vaultoptions/AutoLockVaultOptionsController.java b/src/main/java/org/cryptomator/ui/vaultoptions/AutoLockVaultOptionsController.java
new file mode 100644
index 000000000..1bb74690f
--- /dev/null
+++ b/src/main/java/org/cryptomator/ui/vaultoptions/AutoLockVaultOptionsController.java
@@ -0,0 +1,51 @@
+package org.cryptomator.ui.vaultoptions;
+
+import org.cryptomator.common.vaults.Vault;
+import org.cryptomator.ui.common.FxController;
+import org.cryptomator.ui.controls.NumericTextField;
+
+import javax.inject.Inject;
+import javafx.beans.binding.Bindings;
+import javafx.fxml.FXML;
+import javafx.scene.control.CheckBox;
+import javafx.util.StringConverter;
+
+@VaultOptionsScoped
+public class AutoLockVaultOptionsController implements FxController {
+
+ private final Vault vault;
+
+ public CheckBox lockAfterTimeCheckbox;
+ public NumericTextField lockTimeInMinutesTextField;
+
+ @Inject
+ AutoLockVaultOptionsController(@VaultOptionsWindow Vault vault) {
+ this.vault = vault;
+ }
+
+ @FXML
+ public void initialize() {
+ lockAfterTimeCheckbox.selectedProperty().bindBidirectional(vault.getVaultSettings().autoLockWhenIdle());
+ Bindings.bindBidirectional(lockTimeInMinutesTextField.textProperty(), vault.getVaultSettings().autoLockIdleSeconds(), new IdleTimeSecondsConverter());
+ }
+
+ private static class IdleTimeSecondsConverter extends StringConverter {
+
+ @Override
+ public String toString(Number seconds) {
+ int minutes = seconds.intValue() / 60; // int-truncate
+ return Integer.toString(minutes);
+ }
+
+ @Override
+ public Number fromString(String string) {
+ try {
+ int minutes = Integer.valueOf(string);
+ return minutes * 60;
+ } catch (NumberFormatException e) {
+ return 0;
+ }
+ }
+ }
+
+}
diff --git a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/GeneralVaultOptionsController.java b/src/main/java/org/cryptomator/ui/vaultoptions/GeneralVaultOptionsController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/vaultoptions/GeneralVaultOptionsController.java
rename to src/main/java/org/cryptomator/ui/vaultoptions/GeneralVaultOptionsController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/MasterkeyOptionsController.java b/src/main/java/org/cryptomator/ui/vaultoptions/MasterkeyOptionsController.java
similarity index 95%
rename from main/ui/src/main/java/org/cryptomator/ui/vaultoptions/MasterkeyOptionsController.java
rename to src/main/java/org/cryptomator/ui/vaultoptions/MasterkeyOptionsController.java
index ee38e1f18..fb9d6b711 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/MasterkeyOptionsController.java
+++ b/src/main/java/org/cryptomator/ui/vaultoptions/MasterkeyOptionsController.java
@@ -36,7 +36,7 @@ public class MasterkeyOptionsController implements FxController {
this.changePasswordWindow = changePasswordWindow;
this.recoveryKeyWindow = recoveryKeyWindow;
this.keychain = keychain;
- if (keychain.isSupported()) {
+ if (keychain.isSupported() && !keychain.isLocked()) {
this.passwordSaved = Bindings.createBooleanBinding(this::isPasswordSaved, keychain.getPassphraseStoredProperty(vault.getId()));
} else {
this.passwordSaved = new SimpleBooleanProperty(false);
@@ -74,7 +74,7 @@ public class MasterkeyOptionsController implements FxController {
}
public boolean isPasswordSaved() {
- if (keychain.isSupported() && vault != null) {
+ if (keychain.isSupported() && !keychain.isLocked() && vault != null) {
return keychain.getPassphraseStoredProperty(vault.getId()).get();
} else return false;
}
diff --git a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java b/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java
rename to src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/SelectedVaultOptionsTab.java b/src/main/java/org/cryptomator/ui/vaultoptions/SelectedVaultOptionsTab.java
similarity index 84%
rename from main/ui/src/main/java/org/cryptomator/ui/vaultoptions/SelectedVaultOptionsTab.java
rename to src/main/java/org/cryptomator/ui/vaultoptions/SelectedVaultOptionsTab.java
index 86945374a..03a4922d4 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/SelectedVaultOptionsTab.java
+++ b/src/main/java/org/cryptomator/ui/vaultoptions/SelectedVaultOptionsTab.java
@@ -20,4 +20,10 @@ public enum SelectedVaultOptionsTab {
* Show password tab
*/
KEY,
+
+ /**
+ * Show Auto-Lock tab
+ *
+ */
+ AUTOLOCK,
}
diff --git a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsComponent.java b/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsComponent.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsComponent.java
rename to src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsComponent.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsController.java b/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsController.java
similarity index 97%
rename from main/ui/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsController.java
rename to src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsController.java
index 15879e316..20dac7594 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsController.java
+++ b/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsController.java
@@ -23,6 +23,7 @@ public class VaultOptionsController implements FxController {
public Tab generalTab;
public Tab mountTab;
public Tab keyTab;
+ public Tab autoLockTab;
@Inject
VaultOptionsController(@VaultOptionsWindow Stage window, ObjectProperty selectedTabProperty) {
@@ -47,6 +48,7 @@ public class VaultOptionsController implements FxController {
case ANY, GENERAL -> generalTab;
case MOUNT -> mountTab;
case KEY -> keyTab;
+ case AUTOLOCK -> autoLockTab;
};
}
diff --git a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java b/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java
similarity index 94%
rename from main/ui/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java
rename to src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java
index fb248f38e..89cef234b 100644
--- a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java
+++ b/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java
@@ -84,4 +84,9 @@ abstract class VaultOptionsModule {
@FxControllerKey(MasterkeyOptionsController.class)
abstract FxController bindMasterkeyOptionsController(MasterkeyOptionsController controller);
+ @Binds
+ @IntoMap
+ @FxControllerKey(AutoLockVaultOptionsController.class)
+ abstract FxController bindAutoLockVaultOptionsController(AutoLockVaultOptionsController controller);
+
}
diff --git a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsScoped.java b/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsScoped.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsScoped.java
rename to src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsScoped.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsWindow.java b/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsWindow.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsWindow.java
rename to src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsWindow.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertComponent.java b/src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertComponent.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertComponent.java
rename to src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertComponent.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertController.java b/src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertController.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertController.java
rename to src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertController.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertModule.java b/src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertModule.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertModule.java
rename to src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertModule.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertScoped.java b/src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertScoped.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertScoped.java
rename to src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertScoped.java
diff --git a/main/ui/src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertWindow.java b/src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertWindow.java
similarity index 100%
rename from main/ui/src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertWindow.java
rename to src/main/java/org/cryptomator/ui/wrongfilealert/WrongFileAlertWindow.java
diff --git a/main/ui/src/main/resources/css/dark_theme.css b/src/main/resources/css/dark_theme.css
similarity index 100%
rename from main/ui/src/main/resources/css/dark_theme.css
rename to src/main/resources/css/dark_theme.css
diff --git a/main/ui/src/main/resources/css/fontawesome5-free-solid.otf b/src/main/resources/css/fontawesome5-free-solid.otf
similarity index 100%
rename from main/ui/src/main/resources/css/fontawesome5-free-solid.otf
rename to src/main/resources/css/fontawesome5-free-solid.otf
diff --git a/main/ui/src/main/resources/css/light_theme.css b/src/main/resources/css/light_theme.css
similarity index 100%
rename from main/ui/src/main/resources/css/light_theme.css
rename to src/main/resources/css/light_theme.css
diff --git a/main/ui/src/main/resources/css/opensans-bold.ttf b/src/main/resources/css/opensans-bold.ttf
similarity index 100%
rename from main/ui/src/main/resources/css/opensans-bold.ttf
rename to src/main/resources/css/opensans-bold.ttf
diff --git a/main/ui/src/main/resources/css/opensans-regular.ttf b/src/main/resources/css/opensans-regular.ttf
similarity index 100%
rename from main/ui/src/main/resources/css/opensans-regular.ttf
rename to src/main/resources/css/opensans-regular.ttf
diff --git a/main/ui/src/main/resources/css/opensans-semibold.ttf b/src/main/resources/css/opensans-semibold.ttf
similarity index 100%
rename from main/ui/src/main/resources/css/opensans-semibold.ttf
rename to src/main/resources/css/opensans-semibold.ttf
diff --git a/main/ui/src/main/resources/css/quicksand-bold.ttf b/src/main/resources/css/quicksand-bold.ttf
similarity index 100%
rename from main/ui/src/main/resources/css/quicksand-bold.ttf
rename to src/main/resources/css/quicksand-bold.ttf
diff --git a/main/ui/src/main/resources/fxml/addvault_existing.fxml b/src/main/resources/fxml/addvault_existing.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/addvault_existing.fxml
rename to src/main/resources/fxml/addvault_existing.fxml
diff --git a/main/ui/src/main/resources/fxml/addvault_new_location.fxml b/src/main/resources/fxml/addvault_new_location.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/addvault_new_location.fxml
rename to src/main/resources/fxml/addvault_new_location.fxml
diff --git a/main/ui/src/main/resources/fxml/addvault_new_name.fxml b/src/main/resources/fxml/addvault_new_name.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/addvault_new_name.fxml
rename to src/main/resources/fxml/addvault_new_name.fxml
diff --git a/main/ui/src/main/resources/fxml/addvault_new_password.fxml b/src/main/resources/fxml/addvault_new_password.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/addvault_new_password.fxml
rename to src/main/resources/fxml/addvault_new_password.fxml
diff --git a/main/ui/src/main/resources/fxml/addvault_new_recoverykey.fxml b/src/main/resources/fxml/addvault_new_recoverykey.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/addvault_new_recoverykey.fxml
rename to src/main/resources/fxml/addvault_new_recoverykey.fxml
diff --git a/main/ui/src/main/resources/fxml/addvault_success.fxml b/src/main/resources/fxml/addvault_success.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/addvault_success.fxml
rename to src/main/resources/fxml/addvault_success.fxml
diff --git a/main/ui/src/main/resources/fxml/addvault_welcome.fxml b/src/main/resources/fxml/addvault_welcome.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/addvault_welcome.fxml
rename to src/main/resources/fxml/addvault_welcome.fxml
diff --git a/main/ui/src/main/resources/fxml/changepassword.fxml b/src/main/resources/fxml/changepassword.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/changepassword.fxml
rename to src/main/resources/fxml/changepassword.fxml
diff --git a/main/ui/src/main/resources/fxml/error.fxml b/src/main/resources/fxml/error.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/error.fxml
rename to src/main/resources/fxml/error.fxml
diff --git a/main/ui/src/main/resources/fxml/forget_password.fxml b/src/main/resources/fxml/forget_password.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/forget_password.fxml
rename to src/main/resources/fxml/forget_password.fxml
diff --git a/main/ui/src/main/resources/fxml/health_check_details.fxml b/src/main/resources/fxml/health_check_details.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/health_check_details.fxml
rename to src/main/resources/fxml/health_check_details.fxml
diff --git a/main/ui/src/main/resources/fxml/health_check_list.fxml b/src/main/resources/fxml/health_check_list.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/health_check_list.fxml
rename to src/main/resources/fxml/health_check_list.fxml
diff --git a/main/ui/src/main/resources/fxml/health_result_listcell.fxml b/src/main/resources/fxml/health_result_listcell.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/health_result_listcell.fxml
rename to src/main/resources/fxml/health_result_listcell.fxml
diff --git a/main/ui/src/main/resources/fxml/health_start.fxml b/src/main/resources/fxml/health_start.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/health_start.fxml
rename to src/main/resources/fxml/health_start.fxml
diff --git a/main/ui/src/main/resources/fxml/lock_failed.fxml b/src/main/resources/fxml/lock_failed.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/lock_failed.fxml
rename to src/main/resources/fxml/lock_failed.fxml
diff --git a/main/ui/src/main/resources/fxml/lock_forced.fxml b/src/main/resources/fxml/lock_forced.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/lock_forced.fxml
rename to src/main/resources/fxml/lock_forced.fxml
diff --git a/main/ui/src/main/resources/fxml/main_window.fxml b/src/main/resources/fxml/main_window.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/main_window.fxml
rename to src/main/resources/fxml/main_window.fxml
diff --git a/main/ui/src/main/resources/fxml/main_window_resize.fxml b/src/main/resources/fxml/main_window_resize.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/main_window_resize.fxml
rename to src/main/resources/fxml/main_window_resize.fxml
diff --git a/main/ui/src/main/resources/fxml/main_window_title.fxml b/src/main/resources/fxml/main_window_title.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/main_window_title.fxml
rename to src/main/resources/fxml/main_window_title.fxml
diff --git a/main/ui/src/main/resources/fxml/migration_capability_error.fxml b/src/main/resources/fxml/migration_capability_error.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/migration_capability_error.fxml
rename to src/main/resources/fxml/migration_capability_error.fxml
diff --git a/main/ui/src/main/resources/fxml/migration_impossible.fxml b/src/main/resources/fxml/migration_impossible.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/migration_impossible.fxml
rename to src/main/resources/fxml/migration_impossible.fxml
diff --git a/main/ui/src/main/resources/fxml/migration_run.fxml b/src/main/resources/fxml/migration_run.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/migration_run.fxml
rename to src/main/resources/fxml/migration_run.fxml
diff --git a/main/ui/src/main/resources/fxml/migration_start.fxml b/src/main/resources/fxml/migration_start.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/migration_start.fxml
rename to src/main/resources/fxml/migration_start.fxml
diff --git a/main/ui/src/main/resources/fxml/migration_success.fxml b/src/main/resources/fxml/migration_success.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/migration_success.fxml
rename to src/main/resources/fxml/migration_success.fxml
diff --git a/main/ui/src/main/resources/fxml/new_password.fxml b/src/main/resources/fxml/new_password.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/new_password.fxml
rename to src/main/resources/fxml/new_password.fxml
diff --git a/main/ui/src/main/resources/fxml/preferences.fxml b/src/main/resources/fxml/preferences.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/preferences.fxml
rename to src/main/resources/fxml/preferences.fxml
diff --git a/main/ui/src/main/resources/fxml/preferences_about.fxml b/src/main/resources/fxml/preferences_about.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/preferences_about.fxml
rename to src/main/resources/fxml/preferences_about.fxml
diff --git a/main/ui/src/main/resources/fxml/preferences_contribute.fxml b/src/main/resources/fxml/preferences_contribute.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/preferences_contribute.fxml
rename to src/main/resources/fxml/preferences_contribute.fxml
diff --git a/main/ui/src/main/resources/fxml/preferences_general.fxml b/src/main/resources/fxml/preferences_general.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/preferences_general.fxml
rename to src/main/resources/fxml/preferences_general.fxml
diff --git a/main/ui/src/main/resources/fxml/preferences_updates.fxml b/src/main/resources/fxml/preferences_updates.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/preferences_updates.fxml
rename to src/main/resources/fxml/preferences_updates.fxml
diff --git a/main/ui/src/main/resources/fxml/preferences_volume.fxml b/src/main/resources/fxml/preferences_volume.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/preferences_volume.fxml
rename to src/main/resources/fxml/preferences_volume.fxml
diff --git a/main/ui/src/main/resources/fxml/quit.fxml b/src/main/resources/fxml/quit.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/quit.fxml
rename to src/main/resources/fxml/quit.fxml
diff --git a/main/ui/src/main/resources/fxml/recoverykey_create.fxml b/src/main/resources/fxml/recoverykey_create.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/recoverykey_create.fxml
rename to src/main/resources/fxml/recoverykey_create.fxml
diff --git a/main/ui/src/main/resources/fxml/recoverykey_display.fxml b/src/main/resources/fxml/recoverykey_display.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/recoverykey_display.fxml
rename to src/main/resources/fxml/recoverykey_display.fxml
diff --git a/main/ui/src/main/resources/fxml/recoverykey_recover.fxml b/src/main/resources/fxml/recoverykey_recover.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/recoverykey_recover.fxml
rename to src/main/resources/fxml/recoverykey_recover.fxml
diff --git a/main/ui/src/main/resources/fxml/recoverykey_reset_password.fxml b/src/main/resources/fxml/recoverykey_reset_password.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/recoverykey_reset_password.fxml
rename to src/main/resources/fxml/recoverykey_reset_password.fxml
diff --git a/main/ui/src/main/resources/fxml/recoverykey_success.fxml b/src/main/resources/fxml/recoverykey_success.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/recoverykey_success.fxml
rename to src/main/resources/fxml/recoverykey_success.fxml
diff --git a/main/ui/src/main/resources/fxml/remove_vault.fxml b/src/main/resources/fxml/remove_vault.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/remove_vault.fxml
rename to src/main/resources/fxml/remove_vault.fxml
diff --git a/main/ui/src/main/resources/fxml/stats.fxml b/src/main/resources/fxml/stats.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/stats.fxml
rename to src/main/resources/fxml/stats.fxml
diff --git a/main/ui/src/main/resources/fxml/unlock_enter_password.fxml b/src/main/resources/fxml/unlock_enter_password.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/unlock_enter_password.fxml
rename to src/main/resources/fxml/unlock_enter_password.fxml
diff --git a/main/ui/src/main/resources/fxml/unlock_invalid_mount_point.fxml b/src/main/resources/fxml/unlock_invalid_mount_point.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/unlock_invalid_mount_point.fxml
rename to src/main/resources/fxml/unlock_invalid_mount_point.fxml
diff --git a/main/ui/src/main/resources/fxml/unlock_select_masterkeyfile.fxml b/src/main/resources/fxml/unlock_select_masterkeyfile.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/unlock_select_masterkeyfile.fxml
rename to src/main/resources/fxml/unlock_select_masterkeyfile.fxml
diff --git a/main/ui/src/main/resources/fxml/unlock_success.fxml b/src/main/resources/fxml/unlock_success.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/unlock_success.fxml
rename to src/main/resources/fxml/unlock_success.fxml
diff --git a/main/ui/src/main/resources/fxml/vault_detail.fxml b/src/main/resources/fxml/vault_detail.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/vault_detail.fxml
rename to src/main/resources/fxml/vault_detail.fxml
diff --git a/main/ui/src/main/resources/fxml/vault_detail_locked.fxml b/src/main/resources/fxml/vault_detail_locked.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/vault_detail_locked.fxml
rename to src/main/resources/fxml/vault_detail_locked.fxml
diff --git a/main/ui/src/main/resources/fxml/vault_detail_missing.fxml b/src/main/resources/fxml/vault_detail_missing.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/vault_detail_missing.fxml
rename to src/main/resources/fxml/vault_detail_missing.fxml
diff --git a/main/ui/src/main/resources/fxml/vault_detail_needsmigration.fxml b/src/main/resources/fxml/vault_detail_needsmigration.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/vault_detail_needsmigration.fxml
rename to src/main/resources/fxml/vault_detail_needsmigration.fxml
diff --git a/main/ui/src/main/resources/fxml/vault_detail_unknownerror.fxml b/src/main/resources/fxml/vault_detail_unknownerror.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/vault_detail_unknownerror.fxml
rename to src/main/resources/fxml/vault_detail_unknownerror.fxml
diff --git a/main/ui/src/main/resources/fxml/vault_detail_unlocked.fxml b/src/main/resources/fxml/vault_detail_unlocked.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/vault_detail_unlocked.fxml
rename to src/main/resources/fxml/vault_detail_unlocked.fxml
diff --git a/main/ui/src/main/resources/fxml/vault_detail_welcome.fxml b/src/main/resources/fxml/vault_detail_welcome.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/vault_detail_welcome.fxml
rename to src/main/resources/fxml/vault_detail_welcome.fxml
diff --git a/main/ui/src/main/resources/fxml/vault_list.fxml b/src/main/resources/fxml/vault_list.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/vault_list.fxml
rename to src/main/resources/fxml/vault_list.fxml
diff --git a/main/ui/src/main/resources/fxml/vault_list_cell.fxml b/src/main/resources/fxml/vault_list_cell.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/vault_list_cell.fxml
rename to src/main/resources/fxml/vault_list_cell.fxml
diff --git a/main/ui/src/main/resources/fxml/vault_list_contextmenu.fxml b/src/main/resources/fxml/vault_list_contextmenu.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/vault_list_contextmenu.fxml
rename to src/main/resources/fxml/vault_list_contextmenu.fxml
diff --git a/main/ui/src/main/resources/fxml/vault_options.fxml b/src/main/resources/fxml/vault_options.fxml
similarity index 82%
rename from main/ui/src/main/resources/fxml/vault_options.fxml
rename to src/main/resources/fxml/vault_options.fxml
index 2229f5709..4808209b2 100644
--- a/main/ui/src/main/resources/fxml/vault_options.fxml
+++ b/src/main/resources/fxml/vault_options.fxml
@@ -36,5 +36,13 @@
+
+
+
+
+
+
+
+
diff --git a/src/main/resources/fxml/vault_options_autolock.fxml b/src/main/resources/fxml/vault_options_autolock.fxml
new file mode 100644
index 000000000..8d63b792d
--- /dev/null
+++ b/src/main/resources/fxml/vault_options_autolock.fxml
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/main/ui/src/main/resources/fxml/vault_options_general.fxml b/src/main/resources/fxml/vault_options_general.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/vault_options_general.fxml
rename to src/main/resources/fxml/vault_options_general.fxml
diff --git a/main/ui/src/main/resources/fxml/vault_options_masterkey.fxml b/src/main/resources/fxml/vault_options_masterkey.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/vault_options_masterkey.fxml
rename to src/main/resources/fxml/vault_options_masterkey.fxml
diff --git a/main/ui/src/main/resources/fxml/vault_options_mount.fxml b/src/main/resources/fxml/vault_options_mount.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/vault_options_mount.fxml
rename to src/main/resources/fxml/vault_options_mount.fxml
diff --git a/main/ui/src/main/resources/fxml/wrongfilealert.fxml b/src/main/resources/fxml/wrongfilealert.fxml
similarity index 100%
rename from main/ui/src/main/resources/fxml/wrongfilealert.fxml
rename to src/main/resources/fxml/wrongfilealert.fxml
diff --git a/main/ui/src/main/resources/i18n/4096words_en.txt b/src/main/resources/i18n/4096words_en.txt
similarity index 100%
rename from main/ui/src/main/resources/i18n/4096words_en.txt
rename to src/main/resources/i18n/4096words_en.txt
diff --git a/main/ui/src/main/resources/i18n/strings.properties b/src/main/resources/i18n/strings.properties
similarity index 99%
rename from main/ui/src/main/resources/i18n/strings.properties
rename to src/main/resources/i18n/strings.properties
index 7ff081f5a..8ffc15c4c 100644
--- a/main/ui/src/main/resources/i18n/strings.properties
+++ b/src/main/resources/i18n/strings.properties
@@ -329,6 +329,10 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Forget Saved Password
vaultOptions.masterkey.recoveryKeyExpanation=A recovery key is your only means to restore access to a vault if you lose your password.
vaultOptions.masterkey.showRecoveryKeyBtn=Display Recovery Key
vaultOptions.masterkey.recoverPasswordBtn=Recover Password
+## Auto Lock
+vaultOptions.autoLock=Auto-Lock
+vaultOptions.autoLock.lockAfterTimePart1=Lock when idle for
+vaultOptions.autoLock.lockAfterTimePart2=minutes
# Recovery Key
recoveryKey.title=Recovery Key
diff --git a/main/ui/src/main/resources/i18n/strings_ar.properties b/src/main/resources/i18n/strings_ar.properties
similarity index 99%
rename from main/ui/src/main/resources/i18n/strings_ar.properties
rename to src/main/resources/i18n/strings_ar.properties
index 7b07a495f..562cd2fd1 100644
--- a/main/ui/src/main/resources/i18n/strings_ar.properties
+++ b/src/main/resources/i18n/strings_ar.properties
@@ -144,6 +144,10 @@ migration.impossible.heading=غير قادر على ترحيل المخزن
migration.impossible.reason=لا يمكن ترحيل المخزن تلقائياً لأن موقع التخزين أو نقطة الوصول غير متوافقة.
migration.impossible.moreInfo=لا يزال ممكناً فتح المخزن باستخدام إصدار قديم. للحصول على تعليمات حول كيفية ترحيل المخزن يدوياً، قم بزيارة
+# Health Check
+## Detail view
+## Checks
+
# Preferences
preferences.title=تفضيلات
## General
@@ -282,6 +286,7 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=نسيان كلمة المرور
vaultOptions.masterkey.recoveryKeyExpanation=مفتاح الاسترداد هو وسيلتك الوحيدة لاستعادة الوصول إلى مخزنك إذا فقدت كلمة المرور.
vaultOptions.masterkey.showRecoveryKeyBtn=عرض مفتاح الاسترداد
vaultOptions.masterkey.recoverPasswordBtn=استرجاع كلمة المرور
+## Auto Lock
# Recovery Key
recoveryKey.title=مفتاح الاسترداد
diff --git a/main/ui/src/main/resources/i18n/strings_bs.properties b/src/main/resources/i18n/strings_bs.properties
similarity index 99%
rename from main/ui/src/main/resources/i18n/strings_bs.properties
rename to src/main/resources/i18n/strings_bs.properties
index 51cc1c1e8..ccc6386f3 100644
--- a/main/ui/src/main/resources/i18n/strings_bs.properties
+++ b/src/main/resources/i18n/strings_bs.properties
@@ -140,6 +140,10 @@ migration.impossible.heading=Sef se ne može nadograditi
migration.impossible.reason=Sef se ne može automatski migrirati jer njegovo mjesto za pohranu ili pristupna točka nisu kompatibilni.
migration.impossible.moreInfo=Sef se i dalje može otvoriti sa starijom verzijom. Za upute o ručnom migriranju sefa posjetite
+# Health Check
+## Detail view
+## Checks
+
# Preferences
preferences.title=Postavke
## General
@@ -294,6 +298,7 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Zaborav spremljenu šifru
vaultOptions.masterkey.recoveryKeyExpanation=Ključ za oporavak je vaše jedino sredstvo za vraćanje pristupa sefu ako izgubite lozinku.
vaultOptions.masterkey.showRecoveryKeyBtn=Pokaži ključ za oporavak
vaultOptions.masterkey.recoverPasswordBtn=Povrati šifru
+## Auto Lock
# Recovery Key
recoveryKey.title=Ključ za oporavak
diff --git a/main/ui/src/main/resources/i18n/strings_ca.properties b/src/main/resources/i18n/strings_ca.properties
similarity index 93%
rename from main/ui/src/main/resources/i18n/strings_ca.properties
rename to src/main/resources/i18n/strings_ca.properties
index aff8c7f3c..aeeffc959 100644
--- a/main/ui/src/main/resources/i18n/strings_ca.properties
+++ b/src/main/resources/i18n/strings_ca.properties
@@ -44,6 +44,8 @@ addvaultwizard.new.locationPrompt=…
addvaultwizard.new.directoryPickerLabel=Ubicació personalitzada
addvaultwizard.new.directoryPickerButton=Trieu…
addvaultwizard.new.directoryPickerTitle=Seleccioneu el directori
+addvaultwizard.new.fileAlreadyExists=Ja existeix un fitxer o un directori amb el nom de la caixa forta
+addvaultwizard.new.locationIsNotWritable=No teniu permís d'escriptura en la ruta especificada
addvaultwizard.new.invalidName=El nom de la caixa forta no és vàlid. Si us plau, escribiu un mom de directori amb caràcters estàndard.
### Password
addvaultwizard.new.createVaultBtn=Crea la caixa forta
@@ -96,7 +98,8 @@ unlock.passwordPrompt=Introduïu la contrasenya de "%s":
unlock.savePassword=Recorda la contrasenya
unlock.unlockBtn=Desbloqueja
##
-unlock.chooseMasterkey.filePickerTitle=Seleccioneu el fitxer Masterkey
+unlock.chooseMasterkey.prompt=No es pot trobar el fitxer de clau mestra per aquesta bòveda a la ubicació esperada. Escull el fixer manualment.
+unlock.chooseMasterkey.filePickerTitle=Seleccioneu el fitxer de Clau Mestra
## Success
unlock.success.message=S'ha desblocat %s correctament! Podeu accedir a la vostra caixa forta a través de la unitat virtual.
unlock.success.rememberChoice=Recorda l'elecció. No ho tornis a mostrar.
@@ -140,6 +143,21 @@ migration.impossible.heading=No s'ha pogut migrar la caixa forta
migration.impossible.reason=La caixa forta no es pot migrar automàticament perquè la ubicació d'enmagatzematge o el punt d'accès no són compatibles.
migration.impossible.moreInfo=La caixa forta es pot obrir amb una versió anterior. Per saber com poder fer la migració de manera manual, visiteu
+# Health Check
+health.title=Comprovació de la caixa forta
+health.start.configInvalid=S'ha produït un problema en la lectura i anàlisi del fitxer de configuració de la caixa forta.
+health.checkList.selectAllBox=Selecciona-ho tot
+health.check.runBatchBtn=Executa les proves seleccionades
+## Detail view
+health.check.detail.header=Resultats de %s
+health.check.detail.taskNotStarted=La prova no ha estat seleccionada per a executar-la.
+health.check.detail.taskRunning=La prova és en procés…
+health.check.detail.taskSucceeded=La prova ha finalitzat amb èxit després de %d mil·lisegons.
+health.check.detail.taskCancelled=S'ha cancel·lat la prova.
+health.check.detail.problemCount=S'hi han trobat %d problemes i %d errades irrecuperables.
+health.check.exportBtn=Exporta informe
+## Checks
+
# Preferences
preferences.title=Preferències
## General
@@ -281,6 +299,7 @@ vaultOptions.general.actionAfterUnlock=Després d'un desbloqueig correcte
vaultOptions.general.actionAfterUnlock.ignore=No facis res
vaultOptions.general.actionAfterUnlock.reveal=Mostra la unitat
vaultOptions.general.actionAfterUnlock.ask=Pregunta
+vaultOptions.general.healthBtn=Inicia la comprovació
## Mount
vaultOptions.mount=Muntatge
vaultOptions.mount.readonly=Només lectura
@@ -299,6 +318,8 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Oblida la contrasenya desada
vaultOptions.masterkey.recoveryKeyExpanation=La clau de recuperació és l'unic mitjà de restaurar l'accès a la caixa forta en cas de perdre la contrasenya.
vaultOptions.masterkey.showRecoveryKeyBtn=Mostra la clau de recuperació
vaultOptions.masterkey.recoverPasswordBtn=Recupera la contrasenya
+## Auto Lock
+vaultOptions.autoLock.lockAfterTimePart2=minuts
# Recovery Key
recoveryKey.title=Clau de recuperació
diff --git a/main/ui/src/main/resources/i18n/strings_cs.properties b/src/main/resources/i18n/strings_cs.properties
similarity index 89%
rename from main/ui/src/main/resources/i18n/strings_cs.properties
rename to src/main/resources/i18n/strings_cs.properties
index dc55afa41..be92842b6 100644
--- a/main/ui/src/main/resources/i18n/strings_cs.properties
+++ b/src/main/resources/i18n/strings_cs.properties
@@ -74,7 +74,7 @@ addvault.new.readme.accessLocation.4=Tento soubor můžete odstranit.
## Existing
addvaultwizard.existing.instruction=Vyberte soubor "masterkey.cryptomator" z vašeho stávajícího trezoru.
addvaultwizard.existing.chooseBtn=Vybrat...
-addvaultwizard.existing.filePickerTitle=Vyberte Masterkey soubor
+addvaultwizard.existing.filePickerTitle=Vyberte soubor s hlavním klíčem
## Success
addvaultwizard.success.nextStepsInstructions=Vytvořen trezor "%s".\nNejprve odemkněte tento trezor, pak do něj můžete přidat svůj obsah. Nebo jej můžete odemknout kdykoliv v budoucnu.
addvaultwizard.success.unlockNow=Odemknout nyní
@@ -100,7 +100,8 @@ unlock.passwordPrompt=Zadejte heslo pro "%s":
unlock.savePassword=Zapamatovat heslo
unlock.unlockBtn=Odemknout
##
-unlock.chooseMasterkey.filePickerTitle=Vyberte Masterkey soubor
+unlock.chooseMasterkey.prompt=Nepodařilo se najít soubor hlavního klíče pro tento trezor v očekávaném umístění. Vyberte prosím soubor klíče ručně.
+unlock.chooseMasterkey.filePickerTitle=Vyberte soubor s hlavním klíčem
## Success
unlock.success.message=Trezor "%s" byl úspěšně odemčen a nyní je dostupný jako virtuální jednotka.
unlock.success.rememberChoice=Pamatovat si volbu, nezobrazovat to znovu
@@ -144,6 +145,29 @@ migration.impossible.heading=Trezor není možné zmigrovat
migration.impossible.reason=Trezor nemůže být automaticky zmigrován, protože jeho umístění v úložišti nebo přístupový bod není kompatibilní.
migration.impossible.moreInfo=Trezor může být stále otevřen starší verzí. Pro pokyny, jak ručně migrovat trezor, navštivte
+# Health Check
+health.title=Kontrola stavu trezoru
+health.start.introduction=Kontrola stavu trezoru je soubor kontrol, jejichž cílem je odhalit a případně odstranit problémy ve vnitřní struktuře trezoru. Upozorňujeme, že ne všechny problémy lze opravit. K provedení kontrol potřebujete heslo k trezoru.
+health.start.configValid=Načtení a analýza konfiguračního souboru trezoru proběhly úspěšně. Pokračujte ve výběru kontrol.
+health.start.configInvalid=Chyba při čtení a analýze konfiguračního souboru trezoru.
+health.checkList.header=Dostupné kontroly stavu
+health.checkList.selectAllBox=Vybrat vše
+health.check.runBatchBtn=Spustit vybrané kontroly
+## Detail view
+health.check.detail.noSelectedCheck=Pro výsledky vyberte dokončenou kontrolu stavu v levém seznamu.
+health.check.detail.header=Výsledky pro %s
+health.check.detail.taskNotStarted=Kontrola nebyla vybrána ke spuštění.
+health.check.detail.taskScheduled=Kontrola je naplánována.
+health.check.detail.taskRunning=Kontrola právě probíhá…
+health.check.detail.taskSucceeded=Kontrola byla úspěšně dokončena po %d milisekundách.
+health.check.detail.taskFailed=Kontrola byla ukončena z důvodu chyby.
+health.check.detail.taskCancelled=Kontrola byla zrušena.
+health.check.detail.problemCount=Nalezeno %d problémů a %d neopravitelných chyb.
+health.check.exportBtn=Exportovat sestavu
+health.check.fixBtn=Opravit
+## Checks
+health.org.cryptomator.cryptofs.health.dirid.DirIdCheck=Kontrola adresáře
+
# Preferences
preferences.title=Nastavení
## General
@@ -285,6 +309,7 @@ vaultOptions.general.actionAfterUnlock=Po úspěšném odemčení
vaultOptions.general.actionAfterUnlock.ignore=Nedělat nic
vaultOptions.general.actionAfterUnlock.reveal=Zobrazit jednotku
vaultOptions.general.actionAfterUnlock.ask=Zeptat se
+vaultOptions.general.healthBtn=Spuštění kontroly stavu
## Mount
vaultOptions.mount=Připojení
vaultOptions.mount.readonly=Pouze pro čtení
@@ -303,6 +328,10 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Zapomenout uložené heslo
vaultOptions.masterkey.recoveryKeyExpanation=Obnovovací klíč je váš jediný způsob, jak obnovit přístup k trezoru, pokud ztratíte své heslo.
vaultOptions.masterkey.showRecoveryKeyBtn=Zobrazit klíč k obnově
vaultOptions.masterkey.recoverPasswordBtn=Obnovit heslo
+## Auto Lock
+vaultOptions.autoLock=Automatické uzamčení
+vaultOptions.autoLock.lockAfterTimePart1=Uzamknout při nečinnosti po
+vaultOptions.autoLock.lockAfterTimePart2=minut
# Recovery Key
recoveryKey.title=Klíč k obnově
diff --git a/main/ui/src/main/resources/i18n/strings_de.properties b/src/main/resources/i18n/strings_de.properties
similarity index 89%
rename from main/ui/src/main/resources/i18n/strings_de.properties
rename to src/main/resources/i18n/strings_de.properties
index f06913980..cd6068dad 100644
--- a/main/ui/src/main/resources/i18n/strings_de.properties
+++ b/src/main/resources/i18n/strings_de.properties
@@ -51,7 +51,7 @@ addvaultwizard.new.locationIsOk=Geeigneter Ort für deinen Tresor
addvaultwizard.new.invalidName=Ungültiger Tresorname. Bitte wähle einen regulären Namen, mit dem auch Verzeichnisse erstellt werden können.
### Password
addvaultwizard.new.createVaultBtn=Tresor erstellen
-addvaultwizard.new.generateRecoveryKeyChoice=Ohne deinem Passwort kannst du nicht mehr auf deine Daten zugreifen. Möchtest du für den Fall eines Passwortverlusts einen Wiederherstellungsschlüssel erstellen?
+addvaultwizard.new.generateRecoveryKeyChoice=Ohne dieses Passwort kannst du auf deine Daten nicht mehr zugreifen. Möchtest du für den Fall eines Passwortverlusts einen Wiederherstellungsschlüssel erstellen?
addvaultwizard.new.generateRecoveryKeyChoice.yes=Ja bitte, sicher ist sicher
addvaultwizard.new.generateRecoveryKeyChoice.no=Nein danke, ich werde mein Passwort nicht verlieren
### Information
@@ -100,6 +100,7 @@ unlock.passwordPrompt=Gib das Passwort für „%s“ ein:
unlock.savePassword=Passwort merken
unlock.unlockBtn=Entsperren
##
+unlock.chooseMasterkey.prompt=Die Masterkey-Datei dieses Tresors konnte nicht gefunden werden. Bitte wähle die Masterkey-Datei manuell aus.
unlock.chooseMasterkey.filePickerTitle=Masterkey-Datei auswählen
## Success
unlock.success.message=„%s“ erfolgreich entsperrt! Nun kannst du über das virtuelle Laufwerk auf deinen Tresor zugreifen.
@@ -144,6 +145,29 @@ migration.impossible.heading=Tresor kann nicht migriert werden
migration.impossible.reason=Der Tresor kann nicht automatisch migriert werden, da sein Speicherort oder Zugangspunkt nicht kompatibel ist.
migration.impossible.moreInfo=Der Tresor kann auch jetzt noch mit einer älteren Version geöffnet werden. Eine Anleitung zum manuellen Migrieren eines Tresors findest du unter
+# Health Check
+health.title=Tresor-Integritätsprüfung
+health.start.introduction=Die Tresor-Integritätsprüfung ist eine Sammlung von Prüfungen, um Probleme in der internen Struktur deines Tresors zu erkennen und zu beheben. Bitte beachte, dass nicht alle Probleme behoben werden können. Du benötigst das Tresor-Passwort, um die Prüfungen durchzuführen.
+health.start.configValid=Das Lesen und Verarbeiten der Tresorkonfigurationsdatei war erfolgreich. Fahre fort, um Überprüfungen auszuwählen.
+health.start.configInvalid=Fehler beim Lesen und Verarbeiten der Tresorkonfigurationsdatei.
+health.checkList.header=Verfügbare Integritätsprüfungen
+health.checkList.selectAllBox=Alles auswählen
+health.check.runBatchBtn=Ausgewählte Prüfungen ausführen
+## Detail view
+health.check.detail.noSelectedCheck=Wähle für die Ergebnisse eine abgeschlossene Intregritätsprüfung in der Liste links aus.
+health.check.detail.header=Ergebnisse für %s
+health.check.detail.taskNotStarted=Die Prüfung wurde nicht zum Ausführen ausgewählt.
+health.check.detail.taskScheduled=Die Prüfung ist geplant.
+health.check.detail.taskRunning=Die Prüfung läuft derzeit …
+health.check.detail.taskSucceeded=Die Prüfung wurde nach %d Millisekunden erfolgreich beendet.
+health.check.detail.taskFailed=Die Prüfung wurde wegen eines Fehlers beendet.
+health.check.detail.taskCancelled=Die Prüfung wurde abgebrochen.
+health.check.detail.problemCount=%d Probleme und %d unbehebbare Fehler gefunden.
+health.check.exportBtn=Bericht exportieren
+health.check.fixBtn=Reparieren
+## Checks
+health.org.cryptomator.cryptofs.health.dirid.DirIdCheck=Verzeichnisüberprüfung
+
# Preferences
preferences.title=Einstellungen
## General
@@ -223,7 +247,7 @@ stats.write.accessCount=Schreibzugriffe: %d
main.closeBtn.tooltip=Schließen
main.minimizeBtn.tooltip=Minimieren
main.preferencesBtn.tooltip=Einstellungen
-main.debugModeEnabled.tooltip=Im Debug-Modus
+main.debugModeEnabled.tooltip=Diagnosemodus ist aktiviert
main.donationKeyMissing.tooltip=Zieh bitte eine Spende in Betracht
## Drag 'n' Drop
main.dropZone.dropVault=Diesen Tresor hinzufügen
@@ -285,6 +309,7 @@ vaultOptions.general.actionAfterUnlock=Nach erfolgreichem Entsperren
vaultOptions.general.actionAfterUnlock.ignore=Nichts tun
vaultOptions.general.actionAfterUnlock.reveal=Laufwerk anzeigen
vaultOptions.general.actionAfterUnlock.ask=Nachfragen
+vaultOptions.general.healthBtn=Integritätsprüfung starten
## Mount
vaultOptions.mount=Laufwerk
vaultOptions.mount.readonly=Schreibgeschützt
@@ -303,6 +328,10 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Gespeichertes Passwort vergessen
vaultOptions.masterkey.recoveryKeyExpanation=Dein Wiederherstellungsschlüssel gehört nur dir! Dieser wird benötigt, um deinen Tresor wiederherzustellen, für den Fall das du dein Passwort verloren hast.
vaultOptions.masterkey.showRecoveryKeyBtn=Wiederherstellungsschlüssel anzeigen
vaultOptions.masterkey.recoverPasswordBtn=Passwort wiederherstellen
+## Auto Lock
+vaultOptions.autoLock=Autom. Sperren
+vaultOptions.autoLock.lockAfterTimePart1=Nach
+vaultOptions.autoLock.lockAfterTimePart2=Minuten Inaktivität sperren
# Recovery Key
recoveryKey.title=Wiederherstellungsschlüssel
diff --git a/main/ui/src/main/resources/i18n/strings_el.properties b/src/main/resources/i18n/strings_el.properties
similarity index 98%
rename from main/ui/src/main/resources/i18n/strings_el.properties
rename to src/main/resources/i18n/strings_el.properties
index d4a7e5b04..ee60e0e0a 100644
--- a/main/ui/src/main/resources/i18n/strings_el.properties
+++ b/src/main/resources/i18n/strings_el.properties
@@ -100,6 +100,7 @@ unlock.passwordPrompt=Εισάγετε τον κωδικό για "%s":
unlock.savePassword=Απομνημόνευση κωδικού πρόσβασης
unlock.unlockBtn=Ξεκλείδωμα
##
+unlock.chooseMasterkey.prompt=Αδυναμία εύρεσης του αρχείου masterkey για αυτό το vault στην αναμενόμενη τοποθεσία. Παρακαλώ επιλέξτε το αρχείο χειροκίνητα.
unlock.chooseMasterkey.filePickerTitle=Επιλέξτε το αρχείο Masterkey
## Success
unlock.success.message=Ξεκλειδώθηκε "%s" επιτυχώς! Το vault σας είναι διαθέσιμο μέσω του εικονικού δίσκου του.
@@ -144,6 +145,10 @@ migration.impossible.heading=Αδυναμία συγχώνευσης vault
migration.impossible.reason=Το vault δεν μπορεί να συγχωνευθεί αυτόματα επειδή η τοποθεσία που είναι αποθηκευμένο ή το σημείο προσάρτησης δεν είναι συμβατό.
migration.impossible.moreInfo=Το vault μπορεί να ανοιχθεί με παλαιότερη έκδοση. Για οδηγίες χειροκίνητης συγχώνευσης του vault, επισκεφτείτε
+# Health Check
+## Detail view
+## Checks
+
# Preferences
preferences.title=Προτιμήσεις
## General
@@ -303,6 +308,7 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Διαγραφή αποθηκευ
vaultOptions.masterkey.recoveryKeyExpanation=Το κλειδί ασφαλείας είναι ο μόνος τρόπος ανάκτησης πρόσβασης στο vault αν χάσετε τον κωδικό σας.
vaultOptions.masterkey.showRecoveryKeyBtn=Προβολή κλειδιού ανάκτησης
vaultOptions.masterkey.recoverPasswordBtn=Ανάκτηση κωδικού
+## Auto Lock
# Recovery Key
recoveryKey.title=Κλειδί Ανάκτησης
diff --git a/main/ui/src/main/resources/i18n/strings_es.properties b/src/main/resources/i18n/strings_es.properties
similarity index 88%
rename from main/ui/src/main/resources/i18n/strings_es.properties
rename to src/main/resources/i18n/strings_es.properties
index 33c29d6a7..349b6d80d 100644
--- a/main/ui/src/main/resources/i18n/strings_es.properties
+++ b/src/main/resources/i18n/strings_es.properties
@@ -100,7 +100,8 @@ unlock.passwordPrompt=Ingresar contraseña para "%s":
unlock.savePassword=Recordar contraseña
unlock.unlockBtn=Desbloquear
##
-unlock.chooseMasterkey.filePickerTitle=Seleccionar archivo Masterkey
+unlock.chooseMasterkey.prompt=No se pudo encontrar el archivo de la clave maestra de esta bóveda en la ubicación esperada. Por favor, elija manualmente el archivo de la clave.
+unlock.chooseMasterkey.filePickerTitle=Seleccione el archivo de la clave maestra
## Success
unlock.success.message=¡Desbloqueo de "%s" exitoso! Su bóveda ahora es accesible a través de su unidad virtual.
unlock.success.rememberChoice=Recordar opción y no mostrar de nuevo
@@ -144,6 +145,29 @@ migration.impossible.heading=No se pudo migrar la bóveda
migration.impossible.reason=La bóveda no puede migrarse automáticamente porque su ubicación de almacenamiento o punto de acceso es incompatible.
migration.impossible.moreInfo=La bóveda aún se puede abrir con una versión anterior. Para obtener instrucciones en cómo migrar manualmente una bóveda, visite
+# Health Check
+health.title=Comprobación del Estado de la Bóveda
+health.start.introduction=La comprobación del estado de la bóveda es un conjunto de pruebas para detectar y posiblemente solucionar los problemas de la estructura interna de la bóveda. Tenga en cuenta que no todos los problemas son corregibles. Necesita la contraseña de la bóveda para realizar las comprobaciones.
+health.start.configValid=La lectura y análisis del archivo de configuración de la bóveda fueron correctos. Proceda a seleccionar las comprobaciones.
+health.start.configInvalid=Error al leer y analizar el archivo de configuración de la bóveda.
+health.checkList.header=Comprobaciones del estado disponibles
+health.checkList.selectAllBox=Seleccionar todo
+health.check.runBatchBtn=Ejecutar las comprobaciones seleccionadas
+## Detail view
+health.check.detail.noSelectedCheck=Para los resultados seleccione una comprobación del estado en la lista de la izquierda
+health.check.detail.header=Resultados de %s
+health.check.detail.taskNotStarted=No se ha seleccionado la comprobación para ejecutarse.
+health.check.detail.taskScheduled=La comprobación está programada.
+health.check.detail.taskRunning=La comprobación se está ejecutando…
+health.check.detail.taskSucceeded=La comprobación finalizó correctamente después de %d milisegundos.
+health.check.detail.taskFailed=La comprobación terminó debido a un error.
+health.check.detail.taskCancelled=La comprobación se canceló.
+health.check.detail.problemCount=Se encontraron %d problemas y %d errores no corregibles.
+health.check.exportBtn=Exportar informe
+health.check.fixBtn=Reparar
+## Checks
+health.org.cryptomator.cryptofs.health.dirid.DirIdCheck=Comprobar directorio
+
# Preferences
preferences.title=Preferencias
## General
@@ -280,6 +304,7 @@ vaultOptions.general.actionAfterUnlock=Después de desbloquear exitosamente
vaultOptions.general.actionAfterUnlock.ignore=No hacer nada
vaultOptions.general.actionAfterUnlock.reveal=Revelar unidad
vaultOptions.general.actionAfterUnlock.ask=Preguntar
+vaultOptions.general.healthBtn=Iniciar comprobación del estado
## Mount
vaultOptions.mount=Montaje
vaultOptions.mount.readonly=Sólo lectura
@@ -298,6 +323,10 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Olvidar contraseña guardada
vaultOptions.masterkey.recoveryKeyExpanation=Una clave de recuperación es el único medio para restaurar el acceso a una bóveda si pierde su contraseña.
vaultOptions.masterkey.showRecoveryKeyBtn=Mostrar clave de recuperación
vaultOptions.masterkey.recoverPasswordBtn=Recuperar contraseña
+## Auto Lock
+vaultOptions.autoLock=Autobloqueo
+vaultOptions.autoLock.lockAfterTimePart1=Bloquear después de
+vaultOptions.autoLock.lockAfterTimePart2=minutos
# Recovery Key
recoveryKey.title=Clave de recuperación
diff --git a/main/ui/src/main/resources/i18n/strings_fr.properties b/src/main/resources/i18n/strings_fr.properties
similarity index 89%
rename from main/ui/src/main/resources/i18n/strings_fr.properties
rename to src/main/resources/i18n/strings_fr.properties
index 6d91dabe4..115925de7 100644
--- a/main/ui/src/main/resources/i18n/strings_fr.properties
+++ b/src/main/resources/i18n/strings_fr.properties
@@ -100,6 +100,7 @@ unlock.passwordPrompt=Entrez le mot de passe pour “%s” :
unlock.savePassword=Mémoriser le mot de passe
unlock.unlockBtn=Déverrouiller
##
+unlock.chooseMasterkey.prompt=Impossible de trouver le fichier clef à l'adresse attendue pour ce coffre. Veuillez sélectionner le fichier clef manuellement.
unlock.chooseMasterkey.filePickerTitle=Sélectionner le fichier clef
## Success
unlock.success.message=“%s” déverrouillé ! Le contenu de votre coffre est maintenant accessible par son lecteur virtuel.
@@ -144,6 +145,29 @@ migration.impossible.heading=Impossible de migrer le coffre-fort
migration.impossible.reason=Le coffre-fort ne peut pas être migré automatiquement car son emplacement de stockage ou son point d'accès n'est pas compatible.
migration.impossible.moreInfo=Le coffre-fort peut encore être ouvert avec une version plus ancienne. Pour obtenir des instructions sur la façon de migrer manuellement un coffre-fort, visitez
+# Health Check
+health.title=Vérification de l'état de la chambre forte
+health.start.introduction=La vérification d'état du coffre fort est une collection de vérifications pour détecter et possiblement corriger certains problèmes dans sa structure. Notez que tous les problèmes ne peuvent pas être réglés. Il vous faut le mot de passe de votre coffre fort pour effectuer ces vérifications.
+health.start.configValid=La lecture et le parcours de la configuration se sont déroulés avec succès. Continuez avec la sélection des vérifications.
+health.start.configInvalid=Erreur lors de la lecture et de l'analyse du fichier de configuration du coffre.
+health.checkList.header=Tests de santé disponibles
+health.checkList.selectAllBox=Tout sélectionner
+health.check.runBatchBtn=Exécuter les vérifications sélectionnées
+## Detail view
+health.check.detail.noSelectedCheck=Pour les résultats, sélectionnez un bilan de santé terminé dans la liste de gauche.
+health.check.detail.header=Résultats de %s
+health.check.detail.taskNotStarted=La vérification n'a pas été sélectionnée pour être exécutée.
+health.check.detail.taskScheduled=La vérification est programmée.
+health.check.detail.taskRunning=Vérification en cours d'exécution…
+health.check.detail.taskSucceeded=La vérification s'est terminée avec succès après %d millisecondes.
+health.check.detail.taskFailed=La vérification s'est arrêté en raison d'une erreur.
+health.check.detail.taskCancelled=Vérification annulée.
+health.check.detail.problemCount=%d problèmes trouvés et %d erreurs non corrigeables.
+health.check.exportBtn=Exporter le rapport
+health.check.fixBtn=Corriger
+## Checks
+health.org.cryptomator.cryptofs.health.dirid.DirIdCheck=Vérification du répertoire
+
# Preferences
preferences.title=Préférences
## General
@@ -285,6 +309,7 @@ vaultOptions.general.actionAfterUnlock=Après un déverrouillage réussi
vaultOptions.general.actionAfterUnlock.ignore=Ne rien faire
vaultOptions.general.actionAfterUnlock.reveal=Afficher le disque
vaultOptions.general.actionAfterUnlock.ask=Demander
+vaultOptions.general.healthBtn=Commencer le contrôle de santé
## Mount
vaultOptions.mount=Montage
vaultOptions.mount.readonly=Lecture seule
@@ -303,6 +328,10 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Oublier le mot de passe enregistr
vaultOptions.masterkey.recoveryKeyExpanation=Une clé de récupération est votre seul moyen de rétablir l'accès à un coffre-fort, si vous perdez votre mot de passe.
vaultOptions.masterkey.showRecoveryKeyBtn=Afficher la clé de récupération
vaultOptions.masterkey.recoverPasswordBtn=Récupération du mot de passe
+## Auto Lock
+vaultOptions.autoLock=Verrouillage automatique
+vaultOptions.autoLock.lockAfterTimePart1=Verrouiler en cas d'inactivité pendant
+vaultOptions.autoLock.lockAfterTimePart2=minutes
# Recovery Key
recoveryKey.title=Clé de récupération
diff --git a/main/ui/src/main/resources/i18n/strings_hi.properties b/src/main/resources/i18n/strings_hi.properties
similarity index 99%
rename from main/ui/src/main/resources/i18n/strings_hi.properties
rename to src/main/resources/i18n/strings_hi.properties
index fec5898a4..2b2cdd872 100644
--- a/main/ui/src/main/resources/i18n/strings_hi.properties
+++ b/src/main/resources/i18n/strings_hi.properties
@@ -87,6 +87,10 @@ migration.title=वाउल्ट को अपग्रेड करें
## Missing file system capabilities
## Impossible
+# Health Check
+## Detail view
+## Checks
+
# Preferences
preferences.title=प्राथमिकताएं
## General
@@ -140,6 +144,7 @@ vaultOptions.mount.mountPoint.directoryPickerTitle=कोई खाली जग
## Master Key
vaultOptions.masterkey=पासवर्ड
vaultOptions.masterkey.changePasswordBtn=पासवर्ड बदलें
+## Auto Lock
# Recovery Key
diff --git a/main/ui/src/main/resources/i18n/strings_hr.properties b/src/main/resources/i18n/strings_hr.properties
similarity index 94%
rename from main/ui/src/main/resources/i18n/strings_hr.properties
rename to src/main/resources/i18n/strings_hr.properties
index b16aa1abb..64ead470d 100644
--- a/main/ui/src/main/resources/i18n/strings_hr.properties
+++ b/src/main/resources/i18n/strings_hr.properties
@@ -41,6 +41,10 @@
## Missing file system capabilities
## Impossible
+# Health Check
+## Detail view
+## Checks
+
# Preferences
## General
## Volume
@@ -70,6 +74,7 @@
## General
## Mount
## Master Key
+## Auto Lock
# Recovery Key
diff --git a/main/ui/src/main/resources/i18n/strings_hu.properties b/src/main/resources/i18n/strings_hu.properties
similarity index 99%
rename from main/ui/src/main/resources/i18n/strings_hu.properties
rename to src/main/resources/i18n/strings_hu.properties
index c13f5cc64..b49747707 100644
--- a/main/ui/src/main/resources/i18n/strings_hu.properties
+++ b/src/main/resources/i18n/strings_hu.properties
@@ -132,6 +132,10 @@ migration.impossible.heading=A széf frissítése sikertelen
migration.impossible.reason=A széfet nem lehet automatikusan frissíteni, mert a tárolási helye vagy a hozzáférési pontja nem kompatibilis.
migration.impossible.moreInfo=A széf továbbra is megnyitható marad egy régebbi verzióval. A széf kézi frissítésével kapcsolatos utasításokért keresse fel a következő címet:
+# Health Check
+## Detail view
+## Checks
+
# Preferences
preferences.title=Beállítások
## General
@@ -273,6 +277,7 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Mentett jelszó törlése
vaultOptions.masterkey.recoveryKeyExpanation=A helyreállítási kulcs az egyetlen módja annak, hogy visszaállítsa a széfhez való hozzáférést, ha elveíti a jelszavát.
vaultOptions.masterkey.showRecoveryKeyBtn=Visszaállítási kulcs megjelenítése
vaultOptions.masterkey.recoverPasswordBtn=Jelszó visszaállítása
+## Auto Lock
# Recovery Key
recoveryKey.title=Visszaállítási kulcs
diff --git a/src/main/resources/i18n/strings_id.properties b/src/main/resources/i18n/strings_id.properties
new file mode 100644
index 000000000..d06035538
--- /dev/null
+++ b/src/main/resources/i18n/strings_id.properties
@@ -0,0 +1,262 @@
+# Locale Specific CSS files such as CJK, RTL,...
+
+# Generics
+## Button
+generic.button.apply=Terapkan
+generic.button.back=Kembali
+generic.button.cancel=Batalkan
+generic.button.change=Ganti
+generic.button.close=Tutup
+generic.button.copy=Salin
+generic.button.copied=Tersalin!
+generic.button.done=Selesai
+generic.button.next=Lanjut
+generic.button.print=Cetak
+## Error
+generic.error.title=Telah terjadi kesalahan tak terduga
+generic.error.instruction=Ini harusnya tidak terjadi. Harap laporkan pesan kesalahan dibawah dan tulis deskripsi kenapa ini bisa terjadi.
+
+# Defaults
+defaults.vault.vaultName=Brankas
+
+# Tray Menu
+traymenu.showMainWindow=Tampilkan
+traymenu.showPreferencesWindow=Preferensi
+traymenu.lockAllVaults=Gembok Semua
+traymenu.quitApplication=Keluar
+traymenu.vault.unlock=Buka Gembok
+traymenu.vault.lock=Gembok
+traymenu.vault.reveal=Perlihatkan
+
+# Add Vault Wizard
+addvaultwizard.title=Tambah Brankas
+## Welcome
+addvaultwizard.welcome.newButton=Buat Brankas Baru
+addvaultwizard.welcome.existingButton=Buka Brankas yg Sudah Ada
+## New
+### Name
+addvaultwizard.new.nameInstruction=Buat sebuah nama untuk brankas
+addvaultwizard.new.namePrompt=Nama Brankas
+### Location
+addvaultwizard.new.locationInstruction=Dimana Cryptomator seharusnya menyimpan brankas berkas terenkripsi kamu?
+addvaultwizard.new.locationLabel=Lokasi penyimpanan
+addvaultwizard.new.locationPrompt=…
+addvaultwizard.new.directoryPickerLabel=Sesuaikan Lokasi
+addvaultwizard.new.directoryPickerButton=Pilih…
+addvaultwizard.new.directoryPickerTitle=Pilih Folder
+addvaultwizard.new.fileAlreadyExists=Sudah ada file atau direktori dengan nama yang sama
+addvaultwizard.new.locationDoesNotExist=Direktori pada path yang dipilih tidak ada atau tidak dapat diakses
+addvaultwizard.new.locationIsNotWritable=Anda tidak memiliki hak akses untuk menulis pada path yang dipilih
+addvaultwizard.new.locationIsOk=Lokasi yang sesuai dengan vault Anda
+addvaultwizard.new.invalidName=Nama brankas salah. Harap pilih nama folder yang umum.
+### Password
+addvaultwizard.new.createVaultBtn=Buat Brankas
+addvaultwizard.new.generateRecoveryKeyChoice=Kamu tidak dapat mengakses data tanpa kata sandi kamu. Apa kamu ingin sebuah kunci pemulihan buat jaga-jaga?
+addvaultwizard.new.generateRecoveryKeyChoice.yes=Ya, sedia payung sebelum hujan
+addvaultwizard.new.generateRecoveryKeyChoice.no=Tidak, terima kasih, Saya tidak akan kehilangan kata sandi saya
+### Information
+addvault.new.readme.storageLocation.fileName=PENTING.rtf
+addvault.new.readme.storageLocation.1=⚠️ BERKAS BRANKAS ⚠️
+addvault.new.readme.storageLocation.2=Ini adalah lokasi penyimpanan brankas kamu.
+addvault.new.readme.storageLocation.3=JANGAN
+addvault.new.readme.storageLocation.4=• mengubah file dalam direktori ini, atau
+addvault.new.readme.storageLocation.5=• menempelkan file untuk dienkripsi ke dalam direktori ini.
+addvault.new.readme.storageLocation.6=Jika kamu ingin mengenkripsi berkas dan melihat isi brankas, lakukan hal berikut:
+addvault.new.readme.storageLocation.7=1. Tambahkan brankas ini ke Cryptomator.
+addvault.new.readme.storageLocation.8=2. Buka gembok brankas di Cryptomator.
+addvault.new.readme.storageLocation.9=3. Buka akses lokasi dengan mengklik tombol "Perlihatkan".
+addvault.new.readme.storageLocation.10=Jika kamu butuh bantuan, kunjungi dokumentasi: %s
+addvault.new.readme.accessLocation.fileName=SELAMAT_DATANG.rtf
+addvault.new.readme.accessLocation.1=🔐️ ISI TERENKRIPSI 🔐️
+addvault.new.readme.accessLocation.2=Ini adalah lokasi akses brankas kamu.
+addvault.new.readme.accessLocation.3=File yang ditambahkan ke volume ini akan dienkripsi oleh Cryptomator. Anda dapat mempergunakan isi vault seperti dalam folder lain. Saat ini Anda sedang mengakses tampilan versi dekripsi, file Anda selalu terenkripsi di dalam cakram keras Anda.
+addvault.new.readme.accessLocation.4=Anda dapat menghapus file ini.
+## Existing
+addvaultwizard.existing.instruction=Pilih file "masterkey.cryptomator" dalam vault Anda.
+addvaultwizard.existing.chooseBtn=Pilih…
+addvaultwizard.existing.filePickerTitle=Pilih File Kunci Induk
+## Success
+addvaultwizard.success.nextStepsInstructions=Vault "%s" telah dibuat.\nAnda harus membuka kunci vault ini untuk mengakses atau menambahkan konten. Anda juga dapat membuka kunci vault ini kapan saja di kemudian hari.
+addvaultwizard.success.unlockNow=Buka Kunci Sekarang
+
+# Remove Vault
+removeVault.title=Hapus Vault
+removeVault.information=Cryptomator hanya akan melupakan vault ini. Anda dapat menambahkan vault ini lagi nantinya. File yang telah dienkripsi tidak akan dihapus dari cakram keras Anda.
+removeVault.confirmBtn=Hapus Vault
+
+# Change Password
+changepassword.title=Ubah Kata Sandi
+changepassword.enterOldPassword=Masukkan kata sandi untuk "%s" saat ini
+changepassword.finalConfirmation=Saya mengerti bahwa saya tidak akan dapat mengakses data saya apabila saya lupa kata sandi saya
+
+# Forget Password
+forgetPassword.title=Lupa Kata Sandi
+forgetPassword.information=Kata sandi vault yang tersimpan akan dihapus dari keychain.
+forgetPassword.confirmBtn=Lupa Kata Sandi
+
+# Unlock
+unlock.title=Buka Vault
+unlock.passwordPrompt=Masukkan kata sandi untuk "%s":
+unlock.savePassword=Simpan Kata Sandi
+unlock.unlockBtn=Buka Gembok
+##
+unlock.chooseMasterkey.prompt=Tidak dapat menemukan file masterkey untuk vault ini pada lokasi yang dicari. Mohon pilih file kunci secara manual.
+unlock.chooseMasterkey.filePickerTitle=Pilih File Kunci Induk
+## Success
+unlock.success.message="%s" telat terbuka! Vault Anda sekarang dapat diakses melalui drive virtual.
+unlock.success.rememberChoice=Ingat pilihan saya, jangan perlihatkan lagi
+unlock.success.revealBtn=Buka Drive
+## Failure
+unlock.error.heading=Tidak dapat membuka vault
+### Invalid Mount Point
+unlock.error.invalidMountPoint.notExisting=Poin mount "%s" bukan direktori, dan tidak kosong atau tidak ada.
+unlock.error.invalidMountPoint.existing=Poin mount "%s" sudah ada atau folder induknya tidak ada.
+
+# Lock
+## Force
+lock.forced.heading=Gagal mengunci secara normal
+lock.forced.message=Penguncian "%s" terblokir oleh operasi yang sedang berjalan atau file yang masih terbuka. Anda dapat mengunci paksa vault ini, namun ada kemungkinan mengganggu I/O akan menghilangkan data yang belum disimpan.
+lock.forced.confirmBtn=Kunci Paksa
+## Failure
+lock.fail.heading=Gagal mengunci vault.
+lock.fail.message=Vault "%s" tidak dapat dikunci. Pastikan bahwa file yang belum tersimpan telah disimpan di lokasi lain, dan operasi Baca/Tulis yang penting telah selesai. Untuk menutup vault ini, matikan proses Cryptomator.
+
+# Migration
+migration.title=Tingkatkan Vault
+## Start
+migration.start.prompt=Vault "%s" Anda perlu diperbarui ke format yang baru. Sebelum melanjutkan, pastikan tidak ada sinkronisasi dalam antrian ataupun yang masih berjalan yang dapat berdampak pada vault ini.
+migration.start.confirm=Ya, vault saya sepenuhnya tersinkronisasi
+## Run
+migration.run.enterPassword=Masukkan kata sandi untuk "%s"
+migration.run.startMigrationBtn=Pindahkan Vault
+migration.run.progressHint=Proses ini mungkin akan memakan waktu cukup lama…
+## Sucess
+migration.success.nextStepsInstructions="%s" telah berhasil dipindahkan.\nAnda sekarang dapat membuka vault Anda.
+migration.success.unlockNow=Buka Kunci Sekarang
+## Missing file system capabilities
+migration.error.missingFileSystemCapabilities.title=Sistem File Tidak Didukung
+migration.error.missingFileSystemCapabilities.description=Tidak dapat memulai pemindahan, karena vault Anda berlokasi pada sistem file yang tidak memadai.
+migration.error.missingFileSystemCapabilities.reason.LONG_FILENAMES=Sistem file tidak mendukung nama file yang panjang.
+migration.error.missingFileSystemCapabilities.reason.LONG_PATHS=Sistem file tidak mendukung path yang panjang.
+migration.error.missingFileSystemCapabilities.reason.READ_ACCESS=Sistem file tidak mengizinkan untuk dibaca.
+migration.error.missingFileSystemCapabilities.reason.WRITE_ACCESS=Sistem file tidak mengizinkan untuk ditulis.
+## Impossible
+migration.impossible.heading=Tidak dapat memindahkan vault
+migration.impossible.reason=Vault tidak dapat dipindahkan secara otomatis karena lokasi penyimpanan atau poin akses tidak sesuai.
+migration.impossible.moreInfo=Vault dapat dibuka dengan program versi lebih lama. Apabila Anda ingin memindahkan vault secara manual, silahkan buka
+
+# Health Check
+health.title=Pemeriksaan Kesehatan Vault
+health.start.introduction=Pemeriksaan Kesehatan Vault adalah kumpulan pemeriksaan untuk mendeteksi dan mungkin memperbaiki masalah dalam struktur internal brankas Anda. Harap dicatat, bahwa tidak semua masalah dapat diperbaiki. Anda memerlukan kata sandi brankas untuk melakukan pemeriksaan.
+health.start.configValid=Membaca dan mengurai file konfigurasi vault berhasil. Lanjutkan untuk memilih pemeriksaan.
+health.start.configInvalid=Kesalahan saat membaca dan menguraikan file pengaturan vault.
+health.checkList.header=Pemeriksaan Kesehatan yang Tersedia
+health.checkList.selectAllBox=Pilih Semua
+health.check.runBatchBtn=Cek Jalankan yang dipilih
+## Detail view
+health.check.detail.noSelectedCheck=Untuk hasil, pilih pemeriksaan kesehatan yang sudah selesai di sebelah kiri.
+health.check.detail.header=Hasil dari %s
+health.check.detail.taskNotStarted=Cek tidak dipilih untuk dijalankan.
+health.check.detail.taskScheduled=Pemeriksaan Terjadwal.
+health.check.detail.taskRunning=Saat ini pemeriksaan sedang berjalan…
+health.check.detail.taskSucceeded=Pemeriksaan berhasil diselesaikan setelah %d milidetik.
+health.check.detail.taskFailed=Cek keluar karena kesalahan.
+health.check.detail.taskCancelled=Cek dibatalkan.
+health.check.detail.problemCount=Ditemukan %d masalah dan %d kesalahan yang tidak dapat diperbaiki.
+health.check.exportBtn=Ekspor Laporan
+health.check.fixBtn=Memperbaiki
+## Checks
+health.org.cryptomator.cryptofs.health.dirid.DirIdCheck=Pemeriksaan Direktori
+
+# Preferences
+preferences.title=Preferensi
+## General
+preferences.general=Umum
+preferences.general.theme=Lihat dan rasakan
+preferences.general.theme.automatic=Otomatis
+preferences.general.theme.light=Terang
+preferences.general.theme.dark=Gelap
+preferences.general.unlockThemes=Buka mode gelap
+preferences.general.showMinimizeButton=Perkecil tampilan tombol
+preferences.general.showTrayIcon=\nTampilkan ikon baki (memerlukan mulai ulang)
+preferences.general.startHidden=Sembunyikan halaman saat memulai Cryptomator
+preferences.general.debugLogging=Aktifkan pencatatan debug
+preferences.general.debugDirectory=Buka file log
+preferences.general.autoStart=Luncurkan Cryptomator pada awal sistem
+preferences.general.keychainBackend=Simpan kata sandi dengan
+preferences.general.keychainBackend.org.cryptomator.linux.keychain.SecretServiceKeychainAccess=Gantungan Kunci Gnome
+preferences.general.keychainBackend.org.cryptomator.linux.keychain.KDEWalletKeychainAccess=Dompet KDE
+preferences.general.keychainBackend.org.cryptomator.macos.keychain.MacSystemKeychainAccess=akses Kunci Rantai mac-OS
+preferences.general.keychainBackend.org.cryptomator.windows.keychain.WindowsProtectedKeychainAccess=Perlindungan Data Windows
+preferences.general.interfaceOrientation=Orientasi Antarmuka
+preferences.general.interfaceOrientation.ltr=Kiri ke kanan
+preferences.general.interfaceOrientation.rtl=Kanan ke kiri
+## Volume
+preferences.volume=Drive Virtual
+preferences.volume.type=Jenis Volume
+preferences.volume.webdav.port=Kabel WebDAV
+preferences.volume.webdav.scheme=Skema WebDAV
+## Updates
+preferences.updates=Pembaharuan
+preferences.updates.currentVersion=Versi Sekarang: %s
+preferences.updates.autoUpdateCheck=Periksa untuk update otomatis
+preferences.updates.checkNowBtn=Periksa Sekarang
+preferences.updates.updateAvailable=Pembaharuan ke versi %s tersedia.
+## Contribution
+preferences.contribute=Dukung Kami
+preferences.contribute.registeredFor=Sertifikat pendukung terdaftar untuk %s
+#<-- Add entries for donations and code/translation/documentation contribution -->
+
+## About
+
+# Vault Statistics
+## Read
+## Write
+
+# Main Window
+main.closeBtn.tooltip=Tutup
+main.preferencesBtn.tooltip=Preferensi
+## Drag 'n' Drop
+## Vault List
+main.vaultlist.contextMenu.lock=Gembok
+main.vaultlist.contextMenu.unlockNow=Buka Kunci Sekarang
+main.vaultlist.contextMenu.reveal=Buka Drive
+main.vaultlist.addVaultBtn=Tambah Brankas
+## Vault Detail
+### Welcome
+### Locked
+main.vaultDetail.unlockNowBtn=Buka Kunci Sekarang
+### Unlocked
+main.vaultDetail.revealBtn=Buka Drive
+main.vaultDetail.lockBtn=Gembok
+main.vaultDetail.throughput.mbps=%.1f MiB/detik
+main.vaultDetail.stats=Statistik Vault
+### Missing
+### Needs Migration
+main.vaultDetail.migrateButton=Tingkatkan Vault
+
+# Wrong File Alert
+
+# Vault Options
+## General
+vaultOptions.general=Umum
+vaultOptions.general.vaultName=Nama Brankas
+vaultOptions.general.actionAfterUnlock.reveal=Buka Drive
+## Mount
+vaultOptions.mount.mountPoint.directoryPickerButton=Pilih…
+## Master Key
+vaultOptions.masterkey.changePasswordBtn=Ubah Kata Sandi
+## Auto Lock
+
+# Recovery Key
+
+# New Password
+passwordStrength.messageLabel.0=Sangat lemah
+passwordStrength.messageLabel.1=Lemah
+passwordStrength.messageLabel.2=Cukup
+passwordStrength.messageLabel.3=Kuat
+passwordStrength.messageLabel.4=Sangat kuat
+
+# Quit
+quit.prompt=Keluar aplikasi? Terdapat brankas yg belum digembok.
+quit.lockAndQuit=Gembok dan Keluar
diff --git a/main/ui/src/main/resources/i18n/strings_it.properties b/src/main/resources/i18n/strings_it.properties
similarity index 93%
rename from main/ui/src/main/resources/i18n/strings_it.properties
rename to src/main/resources/i18n/strings_it.properties
index 218089555..11b544f4a 100644
--- a/main/ui/src/main/resources/i18n/strings_it.properties
+++ b/src/main/resources/i18n/strings_it.properties
@@ -100,6 +100,7 @@ unlock.passwordPrompt=Inserisci la password per "%s":
unlock.savePassword=Ricorda la Password
unlock.unlockBtn=Sblocca
##
+unlock.chooseMasterkey.prompt=Impossibile trovare il file masterkey per questa cassaforte nella posizione prevista. Scegliere manualmente il file chiave.
unlock.chooseMasterkey.filePickerTitle=Seleziona file Masterkey
## Success
unlock.success.message="%s" sbloccato con successo! La tua cassaforte è ora accessibile tramite il suo drive virtuale.
@@ -144,6 +145,22 @@ migration.impossible.heading=Impossibile migrare la cassaforte
migration.impossible.reason=La cassaforte non può essere migrata automaticamente perché la sua posizione di archiviazione di accesso non è compatibile.
migration.impossible.moreInfo=La cassaforte può ancora essere aperta con una versione precedente. Per istruzioni su come migrare manualmente una cassaforte, visita
+# Health Check
+health.title=Controllo Salute Cassaforte
+health.start.introduction=Il Controllo di Salute della Cassaforte è una raccolta di controlli per rilevare e possibilmente risolvere i problemi nella struttura interna della tua cassaforte. Sei pregato di notare che non tutti i problemi sono risolvibili. Ti serve la password della cassaforte per eseguire i controlli.
+health.start.configValid=La lettura e l'analisi del file di configurazione è riuscita. Procedi per selezionare i controlli.
+health.start.configInvalid=Errore leggendo e analizzando il file di configurazione della cassaforte.
+health.checkList.header=Controlli di Salute Disponibili
+health.checkList.selectAllBox=Seleziona Tutto
+health.check.runBatchBtn=Esegui i Controlli selezionati
+## Detail view
+health.check.detail.noSelectedCheck=Per i risultati seleziona un controllo di salute concluso nell'elenco a sinistra.
+health.check.detail.header=Risultati di %s
+health.check.detail.taskNotStarted=Il controllo non è stato selezionato per l'esecuzione.
+health.check.detail.taskScheduled=Il controllo è pianificato.
+health.check.detail.taskRunning=Il controllo è correntemente in esecuzione…
+## Checks
+
# Preferences
preferences.title=Impostazioni
## General
@@ -302,6 +319,7 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Dimentica Password Salvata
vaultOptions.masterkey.recoveryKeyExpanation=Una chiave di recupero è il tuo unico mezzo per ripristinare l'accesso a una cassaforte se perdi la tua password.
vaultOptions.masterkey.showRecoveryKeyBtn=Visualizza la chiave di recupero
vaultOptions.masterkey.recoverPasswordBtn=Recupera password
+## Auto Lock
# Recovery Key
recoveryKey.title=Chiave di recupero
diff --git a/main/ui/src/main/resources/i18n/strings_ja.properties b/src/main/resources/i18n/strings_ja.properties
similarity index 98%
rename from main/ui/src/main/resources/i18n/strings_ja.properties
rename to src/main/resources/i18n/strings_ja.properties
index c0c47711b..b33491403 100644
--- a/main/ui/src/main/resources/i18n/strings_ja.properties
+++ b/src/main/resources/i18n/strings_ja.properties
@@ -100,6 +100,7 @@ unlock.passwordPrompt="%s" のパスワードを入力してください:
unlock.savePassword=パスワードを記憶させる
unlock.unlockBtn=解錠
##
+unlock.chooseMasterkey.prompt=必要な場所にこの金庫の masterkey ファイルがありませんでした。ファイルを手動で選択してください。
unlock.chooseMasterkey.filePickerTitle=Masterkey ファイルを選択
## Success
unlock.success.message="%s" の解錠に成功しました! 仮想ドライブから金庫にアクセス可能です。
@@ -144,6 +145,10 @@ migration.impossible.heading=金庫の移行に失敗しました
migration.impossible.reason=ストレージ場所またはアクセスポイントに互換性がないため、金庫を自動的に移行できません。
migration.impossible.moreInfo=金庫を古いバージョンで開くことは可能です。手動による金庫の移行方法については次をご覧ください:
+# Health Check
+## Detail view
+## Checks
+
# Preferences
preferences.title=設定
## General
@@ -303,6 +308,7 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=保存したパスワードを削
vaultOptions.masterkey.recoveryKeyExpanation=回復キーはパスワードを忘れてしまった場合でも、金庫へのアクセスを回復する唯一の手段です。
vaultOptions.masterkey.showRecoveryKeyBtn=回復キーを表示
vaultOptions.masterkey.recoverPasswordBtn=パスワードの回復
+## Auto Lock
# Recovery Key
recoveryKey.title=回復キー
diff --git a/main/ui/src/main/resources/i18n/strings_ko.properties b/src/main/resources/i18n/strings_ko.properties
similarity index 95%
rename from main/ui/src/main/resources/i18n/strings_ko.properties
rename to src/main/resources/i18n/strings_ko.properties
index ae8079cd2..8580594af 100644
--- a/main/ui/src/main/resources/i18n/strings_ko.properties
+++ b/src/main/resources/i18n/strings_ko.properties
@@ -100,6 +100,7 @@ unlock.passwordPrompt="%s"의 비밀번호를 입력하십시요.
unlock.savePassword=비밀번호 기억
unlock.unlockBtn=잠금해제
##
+unlock.chooseMasterkey.prompt=추정되는 위치에서 이 Vault의 마스터 키를 찾지 못했습니다. 마스터 키 위치를 수동으로 선택하여 주십시요.
unlock.chooseMasterkey.filePickerTitle=마스터키 파일 선택
## Success
unlock.success.message="%s"이(가) 성공적으로 잠금해제되었습니다. 이제 이 Vault를 가상드라이브로 접근할 수 있습니다.
@@ -144,6 +145,10 @@ migration.impossible.heading=Vault를 마이그레이션 할 수 없습니다.
migration.impossible.reason=저장소 위치 또는 접근 지점이 호환되지 않아 Vault를 자동으로 마이그레이션 할 수 없습니다.
migration.impossible.moreInfo=Vault를 이전 버전으로 계속 열수 있습니다. Vault를 직접 마이그레이션 하는 설명을 보시려면, 다음을 방문하십시요.
+# Health Check
+## Detail view
+## Checks
+
# Preferences
preferences.title=환경설정
## General
@@ -179,6 +184,11 @@ preferences.updates.autoUpdateCheck=자동으로 업데이트 확인
preferences.updates.checkNowBtn=지금 확인
preferences.updates.updateAvailable=버전 %s의 업데이트가 가능합니다.
## Contribution
+preferences.contribute=후원하기
+preferences.contribute.registeredFor=%s (으)로 후원자 인증 등록됨
+preferences.contribute.noCertificate=Cryptomator를 후원하시고 후원자 인증을 받으십시요. 라이선스 키와 비슷하지만 무료 소프트웨어를 사용하는 멋진 사람들을 위한 것입니다. ;-)
+preferences.contribute.getCertificate=아직 후원자 인증이 없으신가요? 어떻게 얻는지 배울 수 있습니다.
+preferences.contribute.promptText=후원자 인증코드를 여기에 붙여넣기
#<-- Add entries for donations and code/translation/documentation contribution -->
## About
@@ -298,6 +308,7 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=저장된 비밀번호 삭제
vaultOptions.masterkey.recoveryKeyExpanation=복구 키는 비밀번호를 잊어버렸을 때, Vault의 접근을 복원 할 수 있는 유일한 방법입니다.
vaultOptions.masterkey.showRecoveryKeyBtn=복구 키 표시
vaultOptions.masterkey.recoverPasswordBtn=비밀번호 복구
+## Auto Lock
# Recovery Key
recoveryKey.title=복구 키
diff --git a/main/ui/src/main/resources/i18n/strings_lv.properties b/src/main/resources/i18n/strings_lv.properties
similarity index 99%
rename from main/ui/src/main/resources/i18n/strings_lv.properties
rename to src/main/resources/i18n/strings_lv.properties
index cf037615a..ed7da450e 100644
--- a/main/ui/src/main/resources/i18n/strings_lv.properties
+++ b/src/main/resources/i18n/strings_lv.properties
@@ -124,6 +124,10 @@ migration.error.missingFileSystemCapabilities.reason.READ_ACCESS=Nav atļaujas l
migration.error.missingFileSystemCapabilities.reason.WRITE_ACCESS=Nav atļaujas rakstīt datņu sistēmā.
## Impossible
+# Health Check
+## Detail view
+## Checks
+
# Preferences
preferences.title=Iestatījumi
## General
@@ -228,6 +232,7 @@ vaultOptions.masterkey.changePasswordBtn=Mainīt paroli
vaultOptions.masterkey.recoveryKeyExpanation=Atkopšanas atslēga ir jūsu vienīgais līdzeklis, lai atjaunotu piekļuvi glabātuvei, ja pazaudējat paroli.
vaultOptions.masterkey.showRecoveryKeyBtn=Rādīt atkopšanas atslēgu
vaultOptions.masterkey.recoverPasswordBtn=Atjaunot paroli
+## Auto Lock
# Recovery Key
recoveryKey.title=Atjaunošanas atslēga
diff --git a/main/ui/src/main/resources/i18n/strings_nb.properties b/src/main/resources/i18n/strings_nb.properties
similarity index 99%
rename from main/ui/src/main/resources/i18n/strings_nb.properties
rename to src/main/resources/i18n/strings_nb.properties
index 01586e91a..cf8ce9de9 100644
--- a/main/ui/src/main/resources/i18n/strings_nb.properties
+++ b/src/main/resources/i18n/strings_nb.properties
@@ -139,6 +139,10 @@ migration.impossible.heading=Kunne ikke overføre hvelvet
migration.impossible.reason=Hvelvet kan ikke overføres automatisk fordi lagringsstedet eller tilgangspunkt ikke er kompatibelt.
migration.impossible.moreInfo=Hvelvet kan fortsatt åpnes hvis du bruker en eldre versjon. For instruksjoner om hvordan man overfører et hvelv, besøk
+# Health Check
+## Detail view
+## Checks
+
# Preferences
preferences.title=Innstillinger
## General
@@ -291,6 +295,7 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Glem passord
vaultOptions.masterkey.recoveryKeyExpanation=En gjenopprettingsnøkkel er den eneste måten å gjenopprette tilgangen til et hvelv på hvis du mister passordet.
vaultOptions.masterkey.showRecoveryKeyBtn=Vis gjenopprettingsnøkkelen
vaultOptions.masterkey.recoverPasswordBtn=Gjenopprett passord
+## Auto Lock
# Recovery Key
recoveryKey.title=Gjenopprettingsnøkkel
diff --git a/main/ui/src/main/resources/i18n/strings_nl.properties b/src/main/resources/i18n/strings_nl.properties
similarity index 84%
rename from main/ui/src/main/resources/i18n/strings_nl.properties
rename to src/main/resources/i18n/strings_nl.properties
index c473d407e..0eea9bb0e 100644
--- a/main/ui/src/main/resources/i18n/strings_nl.properties
+++ b/src/main/resources/i18n/strings_nl.properties
@@ -44,6 +44,10 @@ addvaultwizard.new.locationPrompt=…
addvaultwizard.new.directoryPickerLabel=Andere locatie
addvaultwizard.new.directoryPickerButton=Kies…
addvaultwizard.new.directoryPickerTitle=Selecteer map
+addvaultwizard.new.fileAlreadyExists=Er bestaat al een bestand of map met dezelfde naam
+addvaultwizard.new.locationDoesNotExist=Een map in het opgegeven pad bestaat niet of kan niet worden geopend
+addvaultwizard.new.locationIsNotWritable=Geen schrijftoegang op het opgegeven pad
+addvaultwizard.new.locationIsOk=Geschikte locatie voor je kluis
addvaultwizard.new.invalidName=Ongeldige kluisnaam. Overweeg een standaard mapnaam.
### Password
addvaultwizard.new.createVaultBtn=Kluis aanmaken
@@ -93,10 +97,13 @@ forgetPassword.confirmBtn=Wachtwoord vergeten
# Unlock
unlock.title=Kluis ontgrendelen
unlock.passwordPrompt=Voer wachtwoord voor "%s" in:
+unlock.savePassword=Wachtwoord Onthouden
unlock.unlockBtn=Ontgrendel
##
+unlock.chooseMasterkey.prompt=Kon het sleutelbestand voor deze kluis niet vinden op de gewenste locatie. Kies het sleutelbestand handmatig.
unlock.chooseMasterkey.filePickerTitle=Selecteer het Masterkey-bestand
## Success
+unlock.success.message="%s" is met succes ontgrendeld! Uw kluis is nu toegankelijk via zijn virtuele schijf.
unlock.success.rememberChoice=Keuze onthouden en dit niet opnieuw tonen
unlock.success.revealBtn=Toon Schijf
## Failure
@@ -138,6 +145,29 @@ migration.impossible.heading=Kluis kan niet gemigreerd worden
migration.impossible.reason=De kluis kan niet automatisch gemigreerd worden omdat de opslaglocatie of het toegangspunt niet compatibel is.
migration.impossible.moreInfo=De kluis is nog te openen met een oudere versie. Instructies voor het handmatig migreren van een kluis zijn te vinden op
+# Health Check
+health.title=Gezondheidcheck kluis
+health.start.introduction=De gezondheidscheck van de kluis is een verzameling controles om problemen in de interne structuur van uw kluis op te sporen en op te lossen. Houd er rekening mee dat niet alle problemen opgelost zijn. Je hebt het kluiswachtwoord nodig om de controles uit te voeren.
+health.start.configValid=Het lezen en verwerken van het configuratiebestand van de kluis is gelukt. Ga door en selecteer controles.
+health.start.configInvalid=Fout bij het lezen en verwerken van het configuratiebestand van de kluis.
+health.checkList.header=Beschikbare gezondheidscontroles
+health.checkList.selectAllBox=Alles selecteren
+health.check.runBatchBtn=Geselecteerde controles uitvoeren
+## Detail view
+health.check.detail.noSelectedCheck=Voor resultaten selecteert u een voltooide gezondheidscontrole in de linker lijst.
+health.check.detail.header=Resultaten voor: %s
+health.check.detail.taskNotStarted=De controle werd niet geselecteerd om uit te voeren.
+health.check.detail.taskScheduled=De controle is ingepland.
+health.check.detail.taskRunning=De controle wordt momenteel uitgevoerd…
+health.check.detail.taskSucceeded=De controle is succesvol uitgevoerd na %d milliseconden.
+health.check.detail.taskFailed=De controle is afgesloten door een fout.
+health.check.detail.taskCancelled=De controle is geannuleerd.
+health.check.detail.problemCount=%d problemen gevonden en %d onoplosbare fouten.
+health.check.exportBtn=Exporteer rapport
+health.check.fixBtn=Repareren
+## Checks
+health.org.cryptomator.cryptofs.health.dirid.DirIdCheck=Map Controle
+
# Preferences
preferences.title=Voorkeuren
## General
@@ -173,6 +203,11 @@ preferences.updates.autoUpdateCheck=Automatisch controleren op updates
preferences.updates.checkNowBtn=Controleer nu
preferences.updates.updateAvailable=Update naar versie "%s" beschikbaar.
## Contribution
+preferences.contribute=Steun ons
+preferences.contribute.registeredFor=Supporter certificaat geregistreerd voor %s
+preferences.contribute.noCertificate=Ondersteun Cryptomator en ontvang een supportercertificaat. Het is als een licentiesleutel maar voor geweldige mensen die gratis software gebruiken. ;-)
+preferences.contribute.getCertificate=Heb je er nog geen? Leer hoe je het kan krijgen.
+preferences.contribute.promptText=Plak de supportercertificaatcode hier
#<-- Add entries for donations and code/translation/documentation contribution -->
## About
@@ -198,6 +233,7 @@ stats.read.accessCount=Totaal gelezen: %d
stats.write.throughput.idle=Schrijven: inactief
stats.write.throughput.kibs=Schrijven: %.2f kiB/s
stats.write.throughput.mibs=Schrijven: %.2f MiB/s
+stats.write.total.data.none=Gegevens geschreven: -
stats.write.total.data.kib=Gegevens geschreven: %.1f kiB
stats.write.total.data.mib=Gegevens geschreven: %.1f MiB
stats.write.total.data.gib=Gegevens geschreven: %.1f GiB
@@ -218,9 +254,11 @@ main.dropZone.dropVault=Voeg deze kluis toe
main.dropZone.unknownDragboardContent=Als u een kluis wilt toevoegen, sleep deze dan naar dit venster
## Vault List
main.vaultlist.emptyList.onboardingInstruction=Klik hier om een kluis toe te voegen
+main.vaultlist.contextMenu.remove=Verwijderen…
main.vaultlist.contextMenu.lock=Vergrendel
main.vaultlist.contextMenu.unlock=Ontgrendelen…
main.vaultlist.contextMenu.unlockNow=Nu Ontgrendelen
+main.vaultlist.contextMenu.vaultoptions=Laat kluisinstellingen zien
main.vaultlist.contextMenu.reveal=Toon Schijf
main.vaultlist.addVaultBtn=Kluis toevoegen
## Vault Detail
@@ -271,6 +309,7 @@ vaultOptions.general.actionAfterUnlock=Na een succesvolle ontgrendeling
vaultOptions.general.actionAfterUnlock.ignore=Niets doen
vaultOptions.general.actionAfterUnlock.reveal=Toon Schijf
vaultOptions.general.actionAfterUnlock.ask=Vragen
+vaultOptions.general.healthBtn=Start gezondheidscontrole
## Mount
vaultOptions.mount=Aankoppelen
vaultOptions.mount.readonly=Alleen-Lezen
@@ -289,6 +328,7 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Opgeslagen wachtwoord vergeten
vaultOptions.masterkey.recoveryKeyExpanation=Een herstelsleutel is je enige manier om de toegang tot een kluis te herstellen als je je wachtwoord kwijtraakt.
vaultOptions.masterkey.showRecoveryKeyBtn=Toon herstelsleutel
vaultOptions.masterkey.recoverPasswordBtn=Wachtwoord herstellen
+## Auto Lock
# Recovery Key
recoveryKey.title=Herstelsleutel
diff --git a/main/ui/src/main/resources/i18n/strings_nn.properties b/src/main/resources/i18n/strings_nn.properties
similarity index 99%
rename from main/ui/src/main/resources/i18n/strings_nn.properties
rename to src/main/resources/i18n/strings_nn.properties
index 6529afaf4..a83b5703a 100644
--- a/main/ui/src/main/resources/i18n/strings_nn.properties
+++ b/src/main/resources/i18n/strings_nn.properties
@@ -129,6 +129,10 @@ migration.impossible.heading=Kunne ikkje overføra kvelven
migration.impossible.reason=Kvelven kan ikkje overførast automatisk fordi lagringsstaden eller tilgangspunkt ikkje er kompatibelt.
migration.impossible.moreInfo=Kvelven kan framleis opnast viss du bruker ein eldre versjon. For instruksjonar om korleis ein overfører ein kvelv, besøk
+# Health Check
+## Detail view
+## Checks
+
# Preferences
preferences.title=Innstillingar
## General
@@ -242,6 +246,7 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Gløym passord
vaultOptions.masterkey.recoveryKeyExpanation=Ein "retta opp igjen"-nøkkel er den einaste måten å retta opp igjen tilgangen til ein kvelv på viss du mistar passordet.
vaultOptions.masterkey.showRecoveryKeyBtn=Vis 'Retta opp igjen'-nøkkelen
vaultOptions.masterkey.recoverPasswordBtn=Rett opp igjen passord
+## Auto Lock
# Recovery Key
recoveryKey.title='Retta opp igjen'-nøkkel
diff --git a/main/ui/src/main/resources/i18n/strings_no.properties b/src/main/resources/i18n/strings_no.properties
similarity index 100%
rename from main/ui/src/main/resources/i18n/strings_no.properties
rename to src/main/resources/i18n/strings_no.properties
diff --git a/main/ui/src/main/resources/i18n/strings_pa.properties b/src/main/resources/i18n/strings_pa.properties
similarity index 99%
rename from main/ui/src/main/resources/i18n/strings_pa.properties
rename to src/main/resources/i18n/strings_pa.properties
index d0e49ebf8..52a2d9457 100644
--- a/main/ui/src/main/resources/i18n/strings_pa.properties
+++ b/src/main/resources/i18n/strings_pa.properties
@@ -139,6 +139,10 @@ migration.impossible.heading=ਵਾਲਟ ਮਾਈਗਰੇਟ ਕਰਨ ਲਈ
migration.impossible.reason=ਵਾਲਟ ਨੂੰ ਆਪਣੇ-ਆਪ ਮਾਈਗਰੇਟ ਨਹੀਂ ਕੀਤਾ ਜਾ ਸਕਦਾ ਹੈ, ਕਿਉਂਕਿ ਇਸ ਦਾ ਸਟੋਰੇਜ਼ ਟਿਕਾਣਾ ਜਾਂ ਪਹੁੰਚ ਪੁਆਇੰਟ ਅਨੁਕੂਲ ਨਹੀਂ ਹੈ।
migration.impossible.moreInfo=ਵਾਲਟ ਨੂੰ ਅਜੇ ਵੀ ਪੁਰਾਣੇ ਵਰਜ਼ਨ ਨਾਲ ਖੋਲ੍ਹਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਵਾਲਟ ਨੂੰ ਖੁਦ ਕਿਵੇਂ ਮਾਈਗਰੇਟ ਕਰੀਏ, ਇਸ ਬਾਰੇ ਹਦਾਇਤਾਂ ਲਈ ਵੇਖੋ
+# Health Check
+## Detail view
+## Checks
+
# Preferences
preferences.title=ਮੇਰੀ ਪਸੰਦ
## General
@@ -291,6 +295,7 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=ਸੰਭਾਲਿਆ ਪਾਸਵ
vaultOptions.masterkey.recoveryKeyExpanation=ਜੇ ਤੁਸੀਂ ਆਪਣਾ ਪਾਸਵਰਡ ਭੁੱਲ ਗਏ ਹੋ ਤਾਂ ਤੁਹਾਡੇ ਵਾਲਟ ਲਈ ਪਹੁੰਚ ਬਹਾਲ ਕਰਨ ਵਾਸਤੇ ਸਿਰਫ਼ ਰਿਕਵਰੀ ਕੁੰਜੀ ਹੀ ਹੈ।
vaultOptions.masterkey.showRecoveryKeyBtn=ਰਿਕਰਵੀ ਕੁੰਜੀ ਦਿਖਾਓ
vaultOptions.masterkey.recoverPasswordBtn=ਪਾਸਵਰਡ ਰਿਕਵਰ ਕਰੋ
+## Auto Lock
# Recovery Key
recoveryKey.title=ਰਿਕਵਰੀ ਕੁੰਜੀ
diff --git a/main/ui/src/main/resources/i18n/strings_pl.properties b/src/main/resources/i18n/strings_pl.properties
similarity index 90%
rename from main/ui/src/main/resources/i18n/strings_pl.properties
rename to src/main/resources/i18n/strings_pl.properties
index 36a724039..be2a2a4c1 100644
--- a/main/ui/src/main/resources/i18n/strings_pl.properties
+++ b/src/main/resources/i18n/strings_pl.properties
@@ -100,6 +100,7 @@ unlock.passwordPrompt=Wprowadź hasło dla "%s":
unlock.savePassword=Zapamiętaj hasło
unlock.unlockBtn=Odblokuj
##
+unlock.chooseMasterkey.prompt=Brak pliku Masterkey dla tego sejfu w oczekiwanej lokalizacji. Proszę wybrać plik klucza ręcznie.
unlock.chooseMasterkey.filePickerTitle=Wybierz plik Masterkey
## Success
unlock.success.message=Odblokowano "%s" pomyślnie! Twój sejf jest teraz dostępny za pomocą dysku wirtualnego.
@@ -144,6 +145,29 @@ migration.impossible.heading=Nie można zmigrować sejfu
migration.impossible.reason=Sejf nie może być automatycznie zmigrowany, ponieważ jego lokalizacja lub punkt dostępu nie są kompatybilne.
migration.impossible.moreInfo=Sejf nadal może być otwarty starszą wersją. Aby uzyskać informacje dotyczące ręcznej migracji sejfu wejdź na
+# Health Check
+health.title=Ocena stanu sejfu
+health.start.introduction=Ocena stanu sejfu to zbiór testów wykrywający i ewentualnie rozwiązujący problemy w wewnętrznej strukturze Twojego sejfu. Należy pamiętać, że nie wszystkie błędy da się rozwiązać. Do przeprowadzenia testów wymagane jest hasło sejfu.
+health.start.configValid=Odczyt i przetwarzanie pliku konfiguracyjnego sejfu powiodły się. Przejdź dalej do wyboru testów.
+health.start.configInvalid=Błąd podczas odczytu i przetwarzania pliku konfiguracyjnego sejfu.
+health.checkList.header=Dostępne testy
+health.checkList.selectAllBox=Zaznacz wszystko
+health.check.runBatchBtn=Uruchom wybrane testy
+## Detail view
+health.check.detail.noSelectedCheck=Aby sprawdzić wyniki, wybierz test z listy po lewej stronie.
+health.check.detail.header=Wyniki testu %s
+health.check.detail.taskNotStarted=Test nie był wybrany do uruchomienia.
+health.check.detail.taskScheduled=Test będzie uruchomiony.
+health.check.detail.taskRunning=Test jest aktualnie uruchomiony…
+health.check.detail.taskSucceeded=Test zakończony pomyślnie po %d milisekundach.
+health.check.detail.taskFailed=Test zakończony z powodu błędu.
+health.check.detail.taskCancelled=Test został anulowany.
+health.check.detail.problemCount=Jest %d problemów oraz %d nienaprawialnych błędów.
+health.check.exportBtn=Eksportuj raport
+health.check.fixBtn=Napraw
+## Checks
+health.org.cryptomator.cryptofs.health.dirid.DirIdCheck=Sprawdź katalog
+
# Preferences
preferences.title=Ustawienia
## General
@@ -285,6 +309,7 @@ vaultOptions.general.actionAfterUnlock=Po udanym odblokowaniu
vaultOptions.general.actionAfterUnlock.ignore=Nic nie rób
vaultOptions.general.actionAfterUnlock.reveal=Otwórz lokalizację
vaultOptions.general.actionAfterUnlock.ask=Zapytaj
+vaultOptions.general.healthBtn=Oceń stan sejfu
## Mount
vaultOptions.mount=Montowanie
vaultOptions.mount.readonly=Tylko do odczytu
@@ -303,6 +328,10 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Zapomnij zapamiętane hasło
vaultOptions.masterkey.recoveryKeyExpanation=Klucz odzyskiwania jest twoim jedynym sposobem przywrócenia dostępu do sejfu w przypadku utraty hasła.
vaultOptions.masterkey.showRecoveryKeyBtn=Wyświetl klucz odzyskiwania
vaultOptions.masterkey.recoverPasswordBtn=Odzyskaj hasło
+## Auto Lock
+vaultOptions.autoLock=Auto-Lock
+vaultOptions.autoLock.lockAfterTimePart1=Zablokuj w stanie bezczynności po
+vaultOptions.autoLock.lockAfterTimePart2=minutach
# Recovery Key
recoveryKey.title=Klucz odzyskiwania
diff --git a/main/ui/src/main/resources/i18n/strings_pt.properties b/src/main/resources/i18n/strings_pt.properties
similarity index 99%
rename from main/ui/src/main/resources/i18n/strings_pt.properties
rename to src/main/resources/i18n/strings_pt.properties
index 540a4763b..a56d32b75 100644
--- a/main/ui/src/main/resources/i18n/strings_pt.properties
+++ b/src/main/resources/i18n/strings_pt.properties
@@ -110,6 +110,10 @@ migration.success.unlockNow=Destrancar agora
## Missing file system capabilities
## Impossible
+# Health Check
+## Detail view
+## Checks
+
# Preferences
preferences.title=Preferências
## General
@@ -181,6 +185,7 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Esqueça a senha salva
vaultOptions.masterkey.recoveryKeyExpanation=Uma chave de recuperação é a única forma de restaurar o acesso a um cofre se perder a senha.
vaultOptions.masterkey.showRecoveryKeyBtn=Exibir Chave de Recuperação
vaultOptions.masterkey.recoverPasswordBtn=Recuperar Senha
+## Auto Lock
# Recovery Key
recoveryKey.title=Chave de Recuperação
diff --git a/main/ui/src/main/resources/i18n/strings_pt_BR.properties b/src/main/resources/i18n/strings_pt_BR.properties
similarity index 89%
rename from main/ui/src/main/resources/i18n/strings_pt_BR.properties
rename to src/main/resources/i18n/strings_pt_BR.properties
index 73f53502f..4e8c985c2 100644
--- a/main/ui/src/main/resources/i18n/strings_pt_BR.properties
+++ b/src/main/resources/i18n/strings_pt_BR.properties
@@ -100,6 +100,7 @@ unlock.passwordPrompt=Digite a senha para "%s":
unlock.savePassword=Lembrar Senha
unlock.unlockBtn=Desbloquear
##
+unlock.chooseMasterkey.prompt=Não foi possível encontrar o arquivo Masterkey deste cofre no local esperado. Por favor selecione o arquivo chave manualmente.
unlock.chooseMasterkey.filePickerTitle=Selecionar Arquivo Masterkey
## Success
unlock.success.message="%s" desbloqueado com êxito! Seu cofre agora está acessível na unidade virtual.
@@ -144,6 +145,29 @@ migration.impossible.heading=Não é possível migrar o cofre
migration.impossible.reason=O cofre não pode ser migrado automaticamente porque sua localização de armazenamento ou o ponto de acesso não é compatível.
migration.impossible.moreInfo=O cofre ainda pode ser aberto com uma versão mais antiga. Para instruções sobre como migrar um cofre manualmente, visite
+# Health Check
+health.title=Verificar Saúde do Cofre
+health.start.introduction=A Verificação de Saúde do Cofre contempla um conjunto de validações para detectar e possivelmente corrigir problemas na estrutura interna do seu cofre. Atenção, pois nem todos os problemas podem ser corrigidos. Você precisa da senha do cofre para realizar as verificações.
+health.start.configValid=A leitura e a interpretação do arquivo de configuração do cofre foi realizada com sucesso. Prossiga com a seleção das verificações a realizar.
+health.start.configInvalid=Foi encontrado um erro ao ler e interpretar o arquivo de configuração do cofre.
+health.checkList.header=Verificações de Saúde Disponíveis
+health.checkList.selectAllBox=Selecionar Todas
+health.check.runBatchBtn=Executar as Verificações Selecionadas
+## Detail view
+health.check.detail.noSelectedCheck=Para obter os resultados, selecione uma verificação de saúde completada na lista à esquerda.
+health.check.detail.header=Resultados de %s
+health.check.detail.taskNotStarted=A verificação de saúde não foi selecionada para ser realizada.
+health.check.detail.taskScheduled=A verificação de saúde do cofre está agendada.
+health.check.detail.taskRunning=A verificação de saúde do cofre está em execução...
+health.check.detail.taskSucceeded=A verificação de saúde do cofre foi concluída com sucesso após %d milissegundos.
+health.check.detail.taskFailed=A verificação de saúde do cofre foi encerrada devido a um erro.
+health.check.detail.taskCancelled=A verificação de saúde do cofre foi cancelada.
+health.check.detail.problemCount=Foram encontrados %d problemas e %d erros irreparáveis.
+health.check.exportBtn=Exportar Relatório
+health.check.fixBtn=Corrigir
+## Checks
+health.org.cryptomator.cryptofs.health.dirid.DirIdCheck=Verificação de Diretório
+
# Preferences
preferences.title=Preferências
## General
@@ -285,6 +309,7 @@ vaultOptions.general.actionAfterUnlock=Após desbloquear com sucesso
vaultOptions.general.actionAfterUnlock.ignore=Não fazer nada
vaultOptions.general.actionAfterUnlock.reveal=Revelar Volume
vaultOptions.general.actionAfterUnlock.ask=Perguntar
+vaultOptions.general.healthBtn=Iniciar Verificação de Saúde do Cofre
## Mount
vaultOptions.mount=Montagem
vaultOptions.mount.readonly=Somente Leitura
@@ -303,6 +328,7 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Esquecer a senha salva
vaultOptions.masterkey.recoveryKeyExpanation=Se você perder a sua senha, a única forma de restaurar acesso a um cofre é através de uma chave de recuperação.
vaultOptions.masterkey.showRecoveryKeyBtn=Exibir chave de recuperação
vaultOptions.masterkey.recoverPasswordBtn=Recuperar Senha
+## Auto Lock
# Recovery Key
recoveryKey.title=Chave de recuperação
diff --git a/main/ui/src/main/resources/i18n/strings_ro.properties b/src/main/resources/i18n/strings_ro.properties
similarity index 94%
rename from main/ui/src/main/resources/i18n/strings_ro.properties
rename to src/main/resources/i18n/strings_ro.properties
index b16aa1abb..64ead470d 100644
--- a/main/ui/src/main/resources/i18n/strings_ro.properties
+++ b/src/main/resources/i18n/strings_ro.properties
@@ -41,6 +41,10 @@
## Missing file system capabilities
## Impossible
+# Health Check
+## Detail view
+## Checks
+
# Preferences
## General
## Volume
@@ -70,6 +74,7 @@
## General
## Mount
## Master Key
+## Auto Lock
# Recovery Key
diff --git a/main/ui/src/main/resources/i18n/strings_ru.properties b/src/main/resources/i18n/strings_ru.properties
similarity index 90%
rename from main/ui/src/main/resources/i18n/strings_ru.properties
rename to src/main/resources/i18n/strings_ru.properties
index cde140232..cf1387235 100644
--- a/main/ui/src/main/resources/i18n/strings_ru.properties
+++ b/src/main/resources/i18n/strings_ru.properties
@@ -100,6 +100,7 @@ unlock.passwordPrompt=Введите пароль для "%s"
unlock.savePassword=Запомнить пароль
unlock.unlockBtn=Разблокировать
##
+unlock.chooseMasterkey.prompt=Не удалось найти файл masterkey для этого хранилища в ожидаемом месте. Выберите ключевой файл вручную.
unlock.chooseMasterkey.filePickerTitle=Выберите файл MasterKey
## Success
unlock.success.message=Разблокировка "%s" успешно выполнена! Доступ в хранилище открыт через его виртуальный диск.
@@ -144,6 +145,29 @@ migration.impossible.heading=Невозможно перенести храни
migration.impossible.reason=Хранилище не может быть перенесено автоматически из-за несовместимости его расположения или точки доступа.
migration.impossible.moreInfo=Хранилище по-прежнему можно открыть в более старой версии. Чтобы узнать, как вручную перенести хранилище, посетите
+# Health Check
+health.title=Проверка состояния хранилища
+health.start.introduction=Проверка состояния хранилища это набор проверок для обнаружения и устранения проблем во внутренней структуре хранилища. Обратите внимание, что не все проблемы исправимы. Для проверки необходим пароль хранилища.
+health.start.configValid=Файл конфигурации хранилища успешно прочитан и обработан. Переход к выбору проверок.
+health.start.configInvalid=Ошибка при чтении и разборе файла конфигурации хранилища.
+health.checkList.header=Доступные проверки состояния
+health.checkList.selectAllBox=Выбрать все
+health.check.runBatchBtn=Выполнить выбранные проверки
+## Detail view
+health.check.detail.noSelectedCheck=Для результатов выберите завершённую проверку состояния в списке слева.
+health.check.detail.header=Результаты: %s
+health.check.detail.taskNotStarted=Проверка не была выбрана для запуска.
+health.check.detail.taskScheduled=Проверка запланирована.
+health.check.detail.taskRunning=Проверка выполняется…
+health.check.detail.taskSucceeded=Проверка успешно завершена через %d мс.
+health.check.detail.taskFailed=Проверка завершилась из-за ошибки.
+health.check.detail.taskCancelled=Проверка была отменена.
+health.check.detail.problemCount=Проблем: %d. Неисправимых ошибок: %d.
+health.check.exportBtn=Экспорт отчёта
+health.check.fixBtn=Исправить
+## Checks
+health.org.cryptomator.cryptofs.health.dirid.DirIdCheck=Проверка папок
+
# Preferences
preferences.title=Настройки
## General
@@ -285,6 +309,7 @@ vaultOptions.general.actionAfterUnlock=После успешной разбло
vaultOptions.general.actionAfterUnlock.ignore=Ничего не делать
vaultOptions.general.actionAfterUnlock.reveal=Показать диск
vaultOptions.general.actionAfterUnlock.ask=Спрашивать
+vaultOptions.general.healthBtn=Начать проверку состояния
## Mount
vaultOptions.mount=Монтирование
vaultOptions.mount.readonly=Только чтение
@@ -303,6 +328,10 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Забыть сохранённы
vaultOptions.masterkey.recoveryKeyExpanation=Ключ восстановления - это единственный способ восстановить доступ к хранилищу при утере пароля.
vaultOptions.masterkey.showRecoveryKeyBtn=Показать ключ восстановления
vaultOptions.masterkey.recoverPasswordBtn=Восстановить пароль
+## Auto Lock
+vaultOptions.autoLock=Автоблок
+vaultOptions.autoLock.lockAfterTimePart1=Блокировать при бездействии
+vaultOptions.autoLock.lockAfterTimePart2=мин
# Recovery Key
recoveryKey.title=Ключ восстановления
diff --git a/main/ui/src/main/resources/i18n/strings_sk.properties b/src/main/resources/i18n/strings_sk.properties
similarity index 83%
rename from main/ui/src/main/resources/i18n/strings_sk.properties
rename to src/main/resources/i18n/strings_sk.properties
index 7f8e17839..4c182ab94 100644
--- a/main/ui/src/main/resources/i18n/strings_sk.properties
+++ b/src/main/resources/i18n/strings_sk.properties
@@ -69,6 +69,7 @@ addvault.new.readme.accessLocation.4=Tento súbor môžete kedykoľvek odstráni
## Existing
addvaultwizard.existing.instruction=Vyberte súbor „masterkey.cryptomator“ existujúceho trezoru.
addvaultwizard.existing.chooseBtn=Vybrať…
+addvaultwizard.existing.filePickerTitle=Zvoľte hlavný kľúčový súbor
## Success
addvaultwizard.success.nextStepsInstructions=Pridaný trezor "%s".\nAk chcete získať prístup alebo pridať obsah, musíte tento trezor odomknúť. Prípadne ju môžete odomknúť kedykoľvek neskôr.
addvaultwizard.success.unlockNow=Odomknúť teraz
@@ -94,6 +95,8 @@ unlock.passwordPrompt=Zadajte heslo pre "%s":
unlock.savePassword=Odomknúť.uložiťHeslo
unlock.unlockBtn=Odomknúť
##
+unlock.chooseMasterkey.prompt=Nemožno nájsť hlavný kľúčový súbor pre túto peňaženku na jej očakávanom mieste. Prosím zvoľte kľúčový súbor manuálne.
+unlock.chooseMasterkey.filePickerTitle=Zvoľte hlavný kľúčový súbor
## Success
unlock.success.message=Odomknutie "%s" úspešné! Vaša peňaženka je už prístupná cez jej virtuálny disk.
unlock.success.revealBtn=Odkry disk
@@ -120,6 +123,29 @@ migration.success.unlockNow=Odomknúť teraz
## Missing file system capabilities
## Impossible
+# Health Check
+health.title=Kontrola zdravia peňaženky
+health.start.introduction=Kontrola zdravia peňaženky je súhrn kontrol na detekciu a prípadnú opravu problémov vo vnútornej štruktúre Vášhej peňaženky. Prosím majte na pamäti že nie všetky problémy sú opravitelné. Potrebujete heslo peňaženky k vykonaniu kontrol.
+health.start.configValid=Čítanie a analýza konfigurácie súboru peňaženky bola úspešná. Pokračovať k výberu kontrol.
+health.start.configInvalid=Chyba počas čítania a analýzy konfiguračného súboru peňaženky.
+health.checkList.header=Dostupné kontroly zdravia
+health.checkList.selectAllBox=Označiť všetko
+health.check.runBatchBtn=Spustiť vybrané kontroly
+## Detail view
+health.check.detail.noSelectedCheck=Pre výsledky označte ukončenú kontrolu zdravia v zozname na ľavo.
+health.check.detail.header=Výsledky %s
+health.check.detail.taskNotStarted=Nebola zvolená žiadna kontrola k vykonaniu.
+health.check.detail.taskScheduled=Kontrola bola naplánovaná.
+health.check.detail.taskRunning=Kontrola práve prebieha…
+health.check.detail.taskSucceeded=Kontrola úspešne ukončená po %d milisekundách.
+health.check.detail.taskFailed=Kontrola ukončená z dôvodu chyby.
+health.check.detail.taskCancelled=Kontrola bola zrušená.
+health.check.detail.problemCount=Nájdených %d problémov a %d neopravených chýb.
+health.check.exportBtn=Exportovať správu
+health.check.fixBtn=Opraviť
+## Checks
+health.org.cryptomator.cryptofs.health.dirid.DirIdCheck=Kontrola katalógu
+
# Preferences
preferences.title=Predvoľby
## General
@@ -208,11 +234,16 @@ main.vaultDetail.missing.remove=Odstrániť zo zoznamu peňaženky…
## General
vaultOptions.general.vaultName=Názov trezoru
vaultOptions.general.actionAfterUnlock.reveal=Odkry disk
+vaultOptions.general.healthBtn=Spustiť kontrolu zdravia
## Mount
vaultOptions.mount.mountPoint.directoryPickerButton=Vybrať…
## Master Key
vaultOptions.masterkey.changePasswordBtn=Zmeniť heslo
vaultOptions.masterkey.forgetSavedPasswordBtn=Zabudnúť uložené heslo
+## Auto Lock
+vaultOptions.autoLock=Automatické-uzamknutie
+vaultOptions.autoLock.lockAfterTimePart1=Uzamknutie po uplynutí
+vaultOptions.autoLock.lockAfterTimePart2=minút
# Recovery Key
diff --git a/main/ui/src/main/resources/i18n/strings_sr.properties b/src/main/resources/i18n/strings_sr.properties
similarity index 99%
rename from main/ui/src/main/resources/i18n/strings_sr.properties
rename to src/main/resources/i18n/strings_sr.properties
index 05dbe2aad..60fd8910c 100644
--- a/main/ui/src/main/resources/i18n/strings_sr.properties
+++ b/src/main/resources/i18n/strings_sr.properties
@@ -144,6 +144,10 @@ migration.impossible.heading=Сеф не може да се премести
migration.impossible.reason=Сеф се не може аутоматски преместити јер је његова складишна локација или тачка приступа некомпатибилна.
migration.impossible.moreInfo=Сеф се и даље може отворити са старијом верзијом. За упутства како ручно преместити сеф, посетите
+# Health Check
+## Detail view
+## Checks
+
# Preferences
preferences.title=Подешавања
## General
@@ -303,6 +307,7 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Заборави сачувану
vaultOptions.masterkey.recoveryKeyExpanation=Резервни кључ је Ваш једини начин да вратите приступ сефу уколико изгубите лозинку.
vaultOptions.masterkey.showRecoveryKeyBtn=Прикажи Резервни Кључ
vaultOptions.masterkey.recoverPasswordBtn=Обнови лозинку
+## Auto Lock
# Recovery Key
recoveryKey.title=Резервни Кључ
diff --git a/main/ui/src/main/resources/i18n/strings_sr_Latn.properties b/src/main/resources/i18n/strings_sr_Latn.properties
similarity index 99%
rename from main/ui/src/main/resources/i18n/strings_sr_Latn.properties
rename to src/main/resources/i18n/strings_sr_Latn.properties
index 61f562cf9..25e54e303 100644
--- a/main/ui/src/main/resources/i18n/strings_sr_Latn.properties
+++ b/src/main/resources/i18n/strings_sr_Latn.properties
@@ -144,6 +144,10 @@ migration.impossible.heading=Sef ne može da se premesti
migration.impossible.reason=Sef se ne može automatski premestiti jer je njegova skladišna lokacija ili tačka pristupa nekompatibilna.
migration.impossible.moreInfo=Sef se i dalje može otvoriti sa starijom verzijom. Za uputstva kako ručno premestiti sef, posetite
+# Health Check
+## Detail view
+## Checks
+
# Preferences
preferences.title=Podešavanja
## General
@@ -237,6 +241,7 @@ vaultOptions.general.actionAfterUnlock.reveal=Otvori disk
vaultOptions.mount.mountPoint.directoryPickerButton=Izaberi…
## Master Key
vaultOptions.masterkey.changePasswordBtn=Promena lozinke
+## Auto Lock
# Recovery Key
diff --git a/main/ui/src/main/resources/i18n/strings_sv.properties b/src/main/resources/i18n/strings_sv.properties
similarity index 94%
rename from main/ui/src/main/resources/i18n/strings_sv.properties
rename to src/main/resources/i18n/strings_sv.properties
index 08c9f6871..c9500a200 100644
--- a/main/ui/src/main/resources/i18n/strings_sv.properties
+++ b/src/main/resources/i18n/strings_sv.properties
@@ -44,6 +44,10 @@ addvaultwizard.new.locationPrompt=…
addvaultwizard.new.directoryPickerLabel=Anpassad plats
addvaultwizard.new.directoryPickerButton=Välj…
addvaultwizard.new.directoryPickerTitle=Välj katalog
+addvaultwizard.new.fileAlreadyExists=Varning: En fil eller mapp med samma namn finns redan
+addvaultwizard.new.locationDoesNotExist=En katalog i den angivna sökvägen finns inte eller är oåtkomlig
+addvaultwizard.new.locationIsNotWritable=Ingen skrivbehörighet på angiven sökväg
+addvaultwizard.new.locationIsOk=Lämplig plats för ditt valv
addvaultwizard.new.invalidName=Felaktigt namn på valvet. Vänligen ange ett vanligt katalognamn.
### Password
addvaultwizard.new.createVaultBtn=Skapa Valv
@@ -96,6 +100,7 @@ unlock.passwordPrompt=Ange lösenord för "%s":
unlock.savePassword=Kom ihåg lösenord
unlock.unlockBtn=Lås upp
##
+unlock.chooseMasterkey.prompt=Kunde inte hitta Masterkey-filen för detta valv på förväntad plats. Välj filen manuellt.
unlock.chooseMasterkey.filePickerTitle=Välj Masterkey-fil
## Success
unlock.success.message="%s" upplåst! Ditt valv är nu åtkomligt från den virtuella enheten.
@@ -140,6 +145,10 @@ migration.impossible.heading=Kan inte migrera valv
migration.impossible.reason=Valvet kan inte migreras automatiskt eftersom dess lagringsplats eller åtkomstpunkt inte är kompatibelt.
migration.impossible.moreInfo=Valvet kan fortfarande öppnas med en äldre version. För instruktioner om hur du manuellt migrerar ett valv, besök
+# Health Check
+## Detail view
+## Checks
+
# Preferences
preferences.title=Inställningar
## General
@@ -175,6 +184,11 @@ preferences.updates.autoUpdateCheck=Sök efter uppdateringar automatiskt
preferences.updates.checkNowBtn=Kontrollera nu
preferences.updates.updateAvailable=Uppdatering till version %s finns tillgänglig.
## Contribution
+preferences.contribute=Stöd oss
+preferences.contribute.registeredFor=Supportercertifikat registrerat till %s
+preferences.contribute.noCertificate=Stöd Cryptomator och få ett supporter certifikat. Det är som en licensnyckel men för grymma människor som använder fri programvara. ;-)
+preferences.contribute.getCertificate=Har du inget? Kolla hur du kan skaffa ett.
+preferences.contribute.promptText=Klistra in supportercertifikats-koden här
#<-- Add entries for donations and code/translation/documentation contribution -->
## About
@@ -294,6 +308,7 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Ta bort sparat lösenord
vaultOptions.masterkey.recoveryKeyExpanation=En återställningsnyckel är ditt enda sätt att återställa åtkomst till ett valv, om du förlorar ditt lösenord.
vaultOptions.masterkey.showRecoveryKeyBtn=Visa återsällningsnyckel
vaultOptions.masterkey.recoverPasswordBtn=Återställ lösenord
+## Auto Lock
# Recovery Key
recoveryKey.title=Återställningsnyckel
diff --git a/src/main/resources/i18n/strings_th.properties b/src/main/resources/i18n/strings_th.properties
new file mode 100644
index 000000000..64ead470d
--- /dev/null
+++ b/src/main/resources/i18n/strings_th.properties
@@ -0,0 +1,83 @@
+# Locale Specific CSS files such as CJK, RTL,...
+
+# Generics
+## Button
+## Error
+
+# Defaults
+
+# Tray Menu
+
+# Add Vault Wizard
+## Welcome
+## New
+### Name
+### Location
+### Password
+### Information
+## Existing
+## Success
+
+# Remove Vault
+
+# Change Password
+
+# Forget Password
+
+# Unlock
+##
+## Success
+## Failure
+### Invalid Mount Point
+
+# Lock
+## Force
+## Failure
+
+# Migration
+## Start
+## Run
+## Sucess
+## Missing file system capabilities
+## Impossible
+
+# Health Check
+## Detail view
+## Checks
+
+# Preferences
+## General
+## Volume
+## Updates
+## Contribution
+#<-- Add entries for donations and code/translation/documentation contribution -->
+
+## About
+
+# Vault Statistics
+## Read
+## Write
+
+# Main Window
+## Drag 'n' Drop
+## Vault List
+## Vault Detail
+### Welcome
+### Locked
+### Unlocked
+### Missing
+### Needs Migration
+
+# Wrong File Alert
+
+# Vault Options
+## General
+## Mount
+## Master Key
+## Auto Lock
+
+# Recovery Key
+
+# New Password
+
+# Quit
diff --git a/main/ui/src/main/resources/i18n/strings_tr.properties b/src/main/resources/i18n/strings_tr.properties
similarity index 98%
rename from main/ui/src/main/resources/i18n/strings_tr.properties
rename to src/main/resources/i18n/strings_tr.properties
index 3d11bc469..64529fea8 100644
--- a/main/ui/src/main/resources/i18n/strings_tr.properties
+++ b/src/main/resources/i18n/strings_tr.properties
@@ -100,6 +100,7 @@ unlock.passwordPrompt="%s" için şifre girin:
unlock.savePassword=Şifreyi Hatırla
unlock.unlockBtn=Kilidi Aç
##
+unlock.chooseMasterkey.prompt=Bu kasa için masterkey dosyası beklenen konumda bulunamadı. Lütfen anahtar dosyasını manuel olarak seçin.
unlock.chooseMasterkey.filePickerTitle=Masterkey Dosyasını Seç
## Success
unlock.success.message="%s" 'nin kilidi başarıyla açıldı! Kasanız şimdi sanal sürücüsü ile erişilebilir durumda.
@@ -144,6 +145,10 @@ migration.impossible.heading=Kasa taşınamadı
migration.impossible.reason=Depolama konumu veya erişim noktası uyumlu olmadığı için kasa otomatik olarak taşınamıyor.
migration.impossible.moreInfo=Kasa eski bir sürüm ile halen açılabilir. Kasanın nasıl elle taşınabileceğine dair yönlendirme için ziyaret edin
+# Health Check
+## Detail view
+## Checks
+
# Preferences
preferences.title=Seçenekler
## General
@@ -303,6 +308,8 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=Kaydedilen Şifreyi Unut
vaultOptions.masterkey.recoveryKeyExpanation=Bir kurtarma anahtarı şifrenizi unuttuğunuz takdirde kasanıza ulaşmanın tek yoludur.
vaultOptions.masterkey.showRecoveryKeyBtn=Kurtarma Anahtarını Göster
vaultOptions.masterkey.recoverPasswordBtn=Parolanızı Kurtarın
+## Auto Lock
+vaultOptions.autoLock.lockAfterTimePart2=dk
# Recovery Key
recoveryKey.title=Kurtarma Anahtarı
diff --git a/main/ui/src/main/resources/i18n/strings_zh.properties b/src/main/resources/i18n/strings_zh.properties
similarity index 91%
rename from main/ui/src/main/resources/i18n/strings_zh.properties
rename to src/main/resources/i18n/strings_zh.properties
index 80c8932ab..1f722d1f2 100644
--- a/main/ui/src/main/resources/i18n/strings_zh.properties
+++ b/src/main/resources/i18n/strings_zh.properties
@@ -100,6 +100,7 @@ unlock.passwordPrompt=输入 "%s" 的密码
unlock.savePassword=记住密码
unlock.unlockBtn=解锁
##
+unlock.chooseMasterkey.prompt=在指定路径找不到该保险库的 masterkey 文件,请手动选择密钥文件
unlock.chooseMasterkey.filePickerTitle=选择 Masterkey 文件
## Success
unlock.success.message=已成功解锁 "%s"! 您现在可以通过其虚拟驱动器访问它
@@ -144,6 +145,29 @@ migration.impossible.heading=无法迁移保险库
migration.impossible.reason=此保险库不能自动迁移,因为它的存储位置或接入点不兼容
migration.impossible.moreInfo=此保险库仍可使用旧版本来打开。关于如何手动迁移保险库的操作指南,请访问
+# Health Check
+health.title=保险库健康检查
+health.start.introduction=保险库健康检查包含一系列检查,用于检测和尝试修复保险库内部结构中的问题。请注意,并非所有问题都能修复。需要密码来执行检查
+health.start.configValid=读取并解析保险库配置文件成功,继续选择检查
+health.start.configInvalid=读取和解析保险库配置文件时出错
+health.checkList.header=可用的健康检查
+health.checkList.selectAllBox=全选
+health.check.runBatchBtn=运行选中的检查
+## Detail view
+health.check.detail.noSelectedCheck=要查看结果请在左侧列表中选择一个已完成的健康检查
+health.check.detail.header=%s 的结果
+health.check.detail.taskNotStarted=未选择运行该检查
+health.check.detail.taskScheduled=此为计划检查
+health.check.detail.taskRunning=检查正在运行…
+health.check.detail.taskSucceeded=%d 毫秒后检查成功完成
+health.check.detail.taskFailed=检查由于出错而退出
+health.check.detail.taskCancelled=检查已被取消
+health.check.detail.problemCount=找到 %d 个问题和 %d 个无法修复的错误
+health.check.exportBtn=导出报告
+health.check.fixBtn=修复
+## Checks
+health.org.cryptomator.cryptofs.health.dirid.DirIdCheck=目录检查
+
# Preferences
preferences.title=首选项
## General
@@ -285,6 +309,7 @@ vaultOptions.general.actionAfterUnlock=解锁成功后的操作
vaultOptions.general.actionAfterUnlock.ignore=什么也不做
vaultOptions.general.actionAfterUnlock.reveal=显示驱动器
vaultOptions.general.actionAfterUnlock.ask=询问
+vaultOptions.general.healthBtn=开始健康检查
## Mount
vaultOptions.mount=挂载
vaultOptions.mount.readonly=只读
@@ -303,6 +328,10 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=忘记保存的密码
vaultOptions.masterkey.recoveryKeyExpanation=忘记密码时,恢复密钥是你恢复保险库访问权限的唯一方式!!!
vaultOptions.masterkey.showRecoveryKeyBtn=显示恢复密钥
vaultOptions.masterkey.recoverPasswordBtn=恢复密码
+## Auto Lock
+vaultOptions.autoLock=自动锁定
+vaultOptions.autoLock.lockAfterTimePart1=空闲超时
+vaultOptions.autoLock.lockAfterTimePart2=分钟后自动锁定
# Recovery Key
recoveryKey.title=恢复密钥
diff --git a/main/ui/src/main/resources/i18n/strings_zh_TW.properties b/src/main/resources/i18n/strings_zh_TW.properties
similarity index 99%
rename from main/ui/src/main/resources/i18n/strings_zh_TW.properties
rename to src/main/resources/i18n/strings_zh_TW.properties
index 2fbaea486..83e88b64b 100644
--- a/main/ui/src/main/resources/i18n/strings_zh_TW.properties
+++ b/src/main/resources/i18n/strings_zh_TW.properties
@@ -144,6 +144,10 @@ migration.impossible.heading=無法升級加密檔案庫
migration.impossible.reason=此加密檔案庫無法自動升級,因為它的儲存位置並不相容。
migration.impossible.moreInfo=此加密檔案庫仍可被舊版本開啟。如需手動升級加密檔案庫的操作指引,請參照
+# Health Check
+## Detail view
+## Checks
+
# Preferences
preferences.title=偏好
## General
@@ -303,6 +307,7 @@ vaultOptions.masterkey.forgetSavedPasswordBtn=清除已存密碼
vaultOptions.masterkey.recoveryKeyExpanation=復原金鑰僅用於在您遺失密碼時恢復存取能力。
vaultOptions.masterkey.showRecoveryKeyBtn=顯示復原金鑰
vaultOptions.masterkey.recoverPasswordBtn=重置密碼
+## Auto Lock
# Recovery Key
recoveryKey.title=復原金鑰
diff --git a/main/ui/src/main/resources/img/bot/arm-l.png b/src/main/resources/img/bot/arm-l.png
similarity index 100%
rename from main/ui/src/main/resources/img/bot/arm-l.png
rename to src/main/resources/img/bot/arm-l.png
diff --git a/main/ui/src/main/resources/img/bot/arm-l@2x.png b/src/main/resources/img/bot/arm-l@2x.png
similarity index 100%
rename from main/ui/src/main/resources/img/bot/arm-l@2x.png
rename to src/main/resources/img/bot/arm-l@2x.png
diff --git a/main/ui/src/main/resources/img/bot/arm-r.png b/src/main/resources/img/bot/arm-r.png
similarity index 100%
rename from main/ui/src/main/resources/img/bot/arm-r.png
rename to src/main/resources/img/bot/arm-r.png
diff --git a/main/ui/src/main/resources/img/bot/arm-r@2x.png b/src/main/resources/img/bot/arm-r@2x.png
similarity index 100%
rename from main/ui/src/main/resources/img/bot/arm-r@2x.png
rename to src/main/resources/img/bot/arm-r@2x.png
diff --git a/main/ui/src/main/resources/img/bot/body.png b/src/main/resources/img/bot/body.png
similarity index 100%
rename from main/ui/src/main/resources/img/bot/body.png
rename to src/main/resources/img/bot/body.png
diff --git a/main/ui/src/main/resources/img/bot/body@2x.png b/src/main/resources/img/bot/body@2x.png
similarity index 100%
rename from main/ui/src/main/resources/img/bot/body@2x.png
rename to src/main/resources/img/bot/body@2x.png
diff --git a/main/ui/src/main/resources/img/bot/bot.png b/src/main/resources/img/bot/bot.png
similarity index 100%
rename from main/ui/src/main/resources/img/bot/bot.png
rename to src/main/resources/img/bot/bot.png
diff --git a/main/ui/src/main/resources/img/bot/bot@2x.png b/src/main/resources/img/bot/bot@2x.png
similarity index 100%
rename from main/ui/src/main/resources/img/bot/bot@2x.png
rename to src/main/resources/img/bot/bot@2x.png
diff --git a/main/ui/src/main/resources/img/bot/face.png b/src/main/resources/img/bot/face.png
similarity index 100%
rename from main/ui/src/main/resources/img/bot/face.png
rename to src/main/resources/img/bot/face.png
diff --git a/main/ui/src/main/resources/img/bot/face@2x.png b/src/main/resources/img/bot/face@2x.png
similarity index 100%
rename from main/ui/src/main/resources/img/bot/face@2x.png
rename to src/main/resources/img/bot/face@2x.png
diff --git a/main/ui/src/main/resources/img/bot/legs.png b/src/main/resources/img/bot/legs.png
similarity index 100%
rename from main/ui/src/main/resources/img/bot/legs.png
rename to src/main/resources/img/bot/legs.png
diff --git a/main/ui/src/main/resources/img/bot/legs@2x.png b/src/main/resources/img/bot/legs@2x.png
similarity index 100%
rename from main/ui/src/main/resources/img/bot/legs@2x.png
rename to src/main/resources/img/bot/legs@2x.png
diff --git a/main/ui/src/main/resources/img/select-masterkey-mac.png b/src/main/resources/img/select-masterkey-mac.png
similarity index 100%
rename from main/ui/src/main/resources/img/select-masterkey-mac.png
rename to src/main/resources/img/select-masterkey-mac.png
diff --git a/main/ui/src/main/resources/img/select-masterkey-win.png b/src/main/resources/img/select-masterkey-win.png
similarity index 100%
rename from main/ui/src/main/resources/img/select-masterkey-win.png
rename to src/main/resources/img/select-masterkey-win.png
diff --git a/main/ui/src/main/resources/img/tray_icon.png b/src/main/resources/img/tray_icon.png
similarity index 100%
rename from main/ui/src/main/resources/img/tray_icon.png
rename to src/main/resources/img/tray_icon.png
diff --git a/main/ui/src/main/resources/img/tray_icon_mac_black.png b/src/main/resources/img/tray_icon_mac_black.png
similarity index 100%
rename from main/ui/src/main/resources/img/tray_icon_mac_black.png
rename to src/main/resources/img/tray_icon_mac_black.png
diff --git a/main/ui/src/main/resources/img/tray_icon_mac_black@2x.png b/src/main/resources/img/tray_icon_mac_black@2x.png
similarity index 100%
rename from main/ui/src/main/resources/img/tray_icon_mac_black@2x.png
rename to src/main/resources/img/tray_icon_mac_black@2x.png
diff --git a/main/ui/src/main/resources/img/tray_icon_mac_white.png b/src/main/resources/img/tray_icon_mac_white.png
similarity index 100%
rename from main/ui/src/main/resources/img/tray_icon_mac_white.png
rename to src/main/resources/img/tray_icon_mac_white.png
diff --git a/main/ui/src/main/resources/img/tray_icon_mac_white@2x.png b/src/main/resources/img/tray_icon_mac_white@2x.png
similarity index 100%
rename from main/ui/src/main/resources/img/tray_icon_mac_white@2x.png
rename to src/main/resources/img/tray_icon_mac_white@2x.png
diff --git a/main/ui/src/main/resources/img/vault-volume-mac.png b/src/main/resources/img/vault-volume-mac.png
similarity index 100%
rename from main/ui/src/main/resources/img/vault-volume-mac.png
rename to src/main/resources/img/vault-volume-mac.png
diff --git a/main/ui/src/main/resources/img/vault-volume-win.png b/src/main/resources/img/vault-volume-win.png
similarity index 100%
rename from main/ui/src/main/resources/img/vault-volume-win.png
rename to src/main/resources/img/vault-volume-win.png
diff --git a/main/ui/src/main/resources/img/window_icon_32.png b/src/main/resources/img/window_icon_32.png
similarity index 100%
rename from main/ui/src/main/resources/img/window_icon_32.png
rename to src/main/resources/img/window_icon_32.png
diff --git a/main/ui/src/main/resources/img/window_icon_512.png b/src/main/resources/img/window_icon_512.png
similarity index 100%
rename from main/ui/src/main/resources/img/window_icon_512.png
rename to src/main/resources/img/window_icon_512.png
diff --git a/main/ui/src/main/resources/license/THIRD-PARTY.txt b/src/main/resources/license/THIRD-PARTY.txt
similarity index 92%
rename from main/ui/src/main/resources/license/THIRD-PARTY.txt
rename to src/main/resources/license/THIRD-PARTY.txt
index d1ec3a280..4c7ff5c1c 100644
--- a/main/ui/src/main/resources/license/THIRD-PARTY.txt
+++ b/src/main/resources/license/THIRD-PARTY.txt
@@ -11,7 +11,7 @@ GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see http://www.gnu.org/licenses/.
-Cryptomator uses 45 third-party dependencies under the following licenses:
+Cryptomator uses 47 third-party dependencies under the following licenses:
Apache License v2.0:
- jffi (com.github.jnr:jffi:1.2.23 - http://github.com/jnr/jffi)
- jnr-a64asm (com.github.jnr:jnr-a64asm:1.0.0 - http://nexus.sonatype.org/oss-repository-hosting.html/jnr-a64asm)
@@ -58,8 +58,14 @@ Cryptomator uses 45 third-party dependencies under the following licenses:
- Jetty :: Utilities (org.eclipse.jetty:jetty-util:10.0.2 - https://eclipse.org/jetty/jetty-util)
- Jetty :: Webapp Application Support (org.eclipse.jetty:jetty-webapp:10.0.2 - https://eclipse.org/jetty/jetty-webapp)
- Jetty :: XML utilities (org.eclipse.jetty:jetty-xml:10.0.2 - https://eclipse.org/jetty/jetty-xml)
+ Eclipse Public License - v 1.0:
+ - Logback Classic Module (ch.qos.logback:logback-classic:1.2.3 - http://logback.qos.ch/logback-classic)
+ - Logback Core Module (ch.qos.logback:logback-core:1.2.3 - http://logback.qos.ch/logback-core)
Eclipse Public License - v 2.0:
- jnr-posix (com.github.jnr:jnr-posix:3.0.54 - http://nexus.sonatype.org/oss-repository-hosting.html/jnr-posix)
+ GNU Lesser General Public License:
+ - Logback Classic Module (ch.qos.logback:logback-classic:1.2.3 - http://logback.qos.ch/logback-classic)
+ - Logback Core Module (ch.qos.logback:logback-core:1.2.3 - http://logback.qos.ch/logback-core)
GPLv2:
- jnr-posix (com.github.jnr:jnr-posix:3.0.54 - http://nexus.sonatype.org/oss-repository-hosting.html/jnr-posix)
GPLv2+CE:
diff --git a/main/buildkit/src/main/resources/LICENSE.txt b/src/package/LICENSE.txt
similarity index 100%
rename from main/buildkit/src/main/resources/LICENSE.txt
rename to src/package/LICENSE.txt
diff --git a/main/buildkit/src/main/resources/launcher-linux.sh b/src/package/launcher-linux.sh
similarity index 100%
rename from main/buildkit/src/main/resources/launcher-linux.sh
rename to src/package/launcher-linux.sh
diff --git a/main/buildkit/src/main/resources/launcher-mac.sh b/src/package/launcher-mac.sh
similarity index 100%
rename from main/buildkit/src/main/resources/launcher-mac.sh
rename to src/package/launcher-mac.sh
diff --git a/main/buildkit/src/main/resources/launcher-win.bat b/src/package/launcher-win.bat
similarity index 100%
rename from main/buildkit/src/main/resources/launcher-win.bat
rename to src/package/launcher-win.bat
diff --git a/main/buildkit/src/main/resources/version.txt b/src/package/version.txt
similarity index 100%
rename from main/buildkit/src/main/resources/version.txt
rename to src/package/version.txt
diff --git a/main/commons/src/test/java/org/cryptomator/common/EnvironmentTest.java b/src/test/java/org/cryptomator/common/EnvironmentTest.java
similarity index 100%
rename from main/commons/src/test/java/org/cryptomator/common/EnvironmentTest.java
rename to src/test/java/org/cryptomator/common/EnvironmentTest.java
diff --git a/main/commons/src/test/java/org/cryptomator/common/LicenseCheckerTest.java b/src/test/java/org/cryptomator/common/LicenseCheckerTest.java
similarity index 100%
rename from main/commons/src/test/java/org/cryptomator/common/LicenseCheckerTest.java
rename to src/test/java/org/cryptomator/common/LicenseCheckerTest.java
diff --git a/main/commons/src/test/java/org/cryptomator/common/SemVerComparatorTest.java b/src/test/java/org/cryptomator/common/SemVerComparatorTest.java
similarity index 100%
rename from main/commons/src/test/java/org/cryptomator/common/SemVerComparatorTest.java
rename to src/test/java/org/cryptomator/common/SemVerComparatorTest.java
diff --git a/main/commons/src/test/java/org/cryptomator/common/keychain/KeychainManagerTest.java b/src/test/java/org/cryptomator/common/keychain/KeychainManagerTest.java
similarity index 100%
rename from main/commons/src/test/java/org/cryptomator/common/keychain/KeychainManagerTest.java
rename to src/test/java/org/cryptomator/common/keychain/KeychainManagerTest.java
diff --git a/main/commons/src/test/java/org/cryptomator/common/keychain/MapKeychainAccess.java b/src/test/java/org/cryptomator/common/keychain/MapKeychainAccess.java
similarity index 100%
rename from main/commons/src/test/java/org/cryptomator/common/keychain/MapKeychainAccess.java
rename to src/test/java/org/cryptomator/common/keychain/MapKeychainAccess.java
diff --git a/main/commons/src/test/java/org/cryptomator/common/settings/SettingsJsonAdapterTest.java b/src/test/java/org/cryptomator/common/settings/SettingsJsonAdapterTest.java
similarity index 100%
rename from main/commons/src/test/java/org/cryptomator/common/settings/SettingsJsonAdapterTest.java
rename to src/test/java/org/cryptomator/common/settings/SettingsJsonAdapterTest.java
diff --git a/main/commons/src/test/java/org/cryptomator/common/settings/SettingsTest.java b/src/test/java/org/cryptomator/common/settings/SettingsTest.java
similarity index 100%
rename from main/commons/src/test/java/org/cryptomator/common/settings/SettingsTest.java
rename to src/test/java/org/cryptomator/common/settings/SettingsTest.java
diff --git a/main/commons/src/test/java/org/cryptomator/common/settings/VaultSettingsJsonAdapterTest.java b/src/test/java/org/cryptomator/common/settings/VaultSettingsJsonAdapterTest.java
similarity index 58%
rename from main/commons/src/test/java/org/cryptomator/common/settings/VaultSettingsJsonAdapterTest.java
rename to src/test/java/org/cryptomator/common/settings/VaultSettingsJsonAdapterTest.java
index ff33605af..a606de948 100644
--- a/main/commons/src/test/java/org/cryptomator/common/settings/VaultSettingsJsonAdapterTest.java
+++ b/src/test/java/org/cryptomator/common/settings/VaultSettingsJsonAdapterTest.java
@@ -7,9 +7,6 @@ package org.cryptomator.common.settings;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonWriter;
-import org.hamcrest.CoreMatchers;
-import org.hamcrest.MatcherAssert;
-import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import java.io.IOException;
@@ -17,6 +14,11 @@ import java.io.StringReader;
import java.io.StringWriter;
import java.nio.file.Paths;
+import static org.hamcrest.CoreMatchers.containsString;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.jupiter.api.Assertions.assertAll;
+import static org.junit.jupiter.api.Assertions.assertEquals;
+
public class VaultSettingsJsonAdapterTest {
private final VaultSettingsJsonAdapter adapter = new VaultSettingsJsonAdapter();
@@ -27,14 +29,15 @@ public class VaultSettingsJsonAdapterTest {
JsonReader jsonReader = new JsonReader(new StringReader(json));
VaultSettings vaultSettings = adapter.read(jsonReader);
- Assertions.assertEquals("foo", vaultSettings.getId());
- Assertions.assertEquals(Paths.get("/foo/bar"), vaultSettings.path().get());
- Assertions.assertEquals("test", vaultSettings.displayName().get());
- Assertions.assertEquals("X", vaultSettings.winDriveLetter().get());
- Assertions.assertEquals("/home/test/crypto", vaultSettings.customMountPath().get());
- Assertions.assertEquals("--foo --bar", vaultSettings.mountFlags().get());
-
+ assertAll(
+ () -> assertEquals("foo", vaultSettings.getId()),
+ () -> assertEquals(Paths.get("/foo/bar"), vaultSettings.path().get()),
+ () -> assertEquals("test", vaultSettings.displayName().get()),
+ () -> assertEquals("X", vaultSettings.winDriveLetter().get()),
+ () -> assertEquals("/home/test/crypto", vaultSettings.customMountPath().get()),
+ () -> assertEquals("--foo --bar", vaultSettings.mountFlags().get())
+ );
}
@Test
@@ -49,14 +52,17 @@ public class VaultSettingsJsonAdapterTest {
adapter.write(jsonWriter, vaultSettings);
String result = buf.toString();
- MatcherAssert.assertThat(result, CoreMatchers.containsString("\"id\":\"test\""));
- if (System.getProperty("os.name").contains("Windows")) {
- MatcherAssert.assertThat(result, CoreMatchers.containsString("\"path\":\"\\\\foo\\\\bar\""));
- } else {
- MatcherAssert.assertThat(result, CoreMatchers.containsString("\"path\":\"/foo/bar\""));
- }
- MatcherAssert.assertThat(result, CoreMatchers.containsString("\"displayName\":\"mountyMcMountFace\""));
- MatcherAssert.assertThat(result, CoreMatchers.containsString("\"mountFlags\":\"--foo --bar\""));
+ assertAll(
+ () -> assertThat(result, containsString("\"id\":\"test\"")),
+ () -> {
+ if (System.getProperty("os.name").contains("Windows")) {
+ assertThat(result, containsString("\"path\":\"\\\\foo\\\\bar\""));
+ } else {
+ assertThat(result, containsString("\"path\":\"/foo/bar\""));
+ }
+ },
+ () -> assertThat(result, containsString("\"displayName\":\"mountyMcMountFace\"")),
+ () -> assertThat(result, containsString("\"mountFlags\":\"--foo --bar\""))
+ );
}
-
}
diff --git a/main/commons/src/test/java/org/cryptomator/common/settings/VaultSettingsTest.java b/src/test/java/org/cryptomator/common/settings/VaultSettingsTest.java
similarity index 100%
rename from main/commons/src/test/java/org/cryptomator/common/settings/VaultSettingsTest.java
rename to src/test/java/org/cryptomator/common/settings/VaultSettingsTest.java
diff --git a/main/commons/src/test/java/org/cryptomator/common/vaults/VaultModuleTest.java b/src/test/java/org/cryptomator/common/vaults/VaultModuleTest.java
similarity index 100%
rename from main/commons/src/test/java/org/cryptomator/common/vaults/VaultModuleTest.java
rename to src/test/java/org/cryptomator/common/vaults/VaultModuleTest.java
diff --git a/main/launcher/src/test/java/org/cryptomator/launcher/FileOpenRequestHandlerTest.java b/src/test/java/org/cryptomator/launcher/FileOpenRequestHandlerTest.java
similarity index 100%
rename from main/launcher/src/test/java/org/cryptomator/launcher/FileOpenRequestHandlerTest.java
rename to src/test/java/org/cryptomator/launcher/FileOpenRequestHandlerTest.java
diff --git a/main/launcher/src/test/java/org/cryptomator/launcher/IpcFactoryTest.java b/src/test/java/org/cryptomator/launcher/IpcFactoryTest.java
similarity index 100%
rename from main/launcher/src/test/java/org/cryptomator/launcher/IpcFactoryTest.java
rename to src/test/java/org/cryptomator/launcher/IpcFactoryTest.java
diff --git a/main/launcher/src/test/java/org/cryptomator/logging/LaunchBasedTriggeringPolicyTest.java b/src/test/java/org/cryptomator/logging/LaunchBasedTriggeringPolicyTest.java
similarity index 100%
rename from main/launcher/src/test/java/org/cryptomator/logging/LaunchBasedTriggeringPolicyTest.java
rename to src/test/java/org/cryptomator/logging/LaunchBasedTriggeringPolicyTest.java
diff --git a/main/ui/src/test/java/org/cryptomator/ui/addvaultwizard/ReadMeGeneratorTest.java b/src/test/java/org/cryptomator/ui/addvaultwizard/ReadMeGeneratorTest.java
similarity index 100%
rename from main/ui/src/test/java/org/cryptomator/ui/addvaultwizard/ReadMeGeneratorTest.java
rename to src/test/java/org/cryptomator/ui/addvaultwizard/ReadMeGeneratorTest.java
diff --git a/main/ui/src/test/java/org/cryptomator/ui/common/PasswordStrengthUtilTest.java b/src/test/java/org/cryptomator/ui/common/PasswordStrengthUtilTest.java
similarity index 100%
rename from main/ui/src/test/java/org/cryptomator/ui/common/PasswordStrengthUtilTest.java
rename to src/test/java/org/cryptomator/ui/common/PasswordStrengthUtilTest.java
diff --git a/main/ui/src/test/java/org/cryptomator/ui/controls/SecurePasswordFieldTest.java b/src/test/java/org/cryptomator/ui/controls/SecurePasswordFieldTest.java
similarity index 100%
rename from main/ui/src/test/java/org/cryptomator/ui/controls/SecurePasswordFieldTest.java
rename to src/test/java/org/cryptomator/ui/controls/SecurePasswordFieldTest.java
diff --git a/main/ui/src/test/java/org/cryptomator/ui/recoverykey/AutoCompleterTest.java b/src/test/java/org/cryptomator/ui/recoverykey/AutoCompleterTest.java
similarity index 100%
rename from main/ui/src/test/java/org/cryptomator/ui/recoverykey/AutoCompleterTest.java
rename to src/test/java/org/cryptomator/ui/recoverykey/AutoCompleterTest.java
diff --git a/main/ui/src/test/java/org/cryptomator/ui/recoverykey/RecoveryKeyFactoryTest.java b/src/test/java/org/cryptomator/ui/recoverykey/RecoveryKeyFactoryTest.java
similarity index 100%
rename from main/ui/src/test/java/org/cryptomator/ui/recoverykey/RecoveryKeyFactoryTest.java
rename to src/test/java/org/cryptomator/ui/recoverykey/RecoveryKeyFactoryTest.java
diff --git a/main/ui/src/test/java/org/cryptomator/ui/recoverykey/WordEncoderTest.java b/src/test/java/org/cryptomator/ui/recoverykey/WordEncoderTest.java
similarity index 100%
rename from main/ui/src/test/java/org/cryptomator/ui/recoverykey/WordEncoderTest.java
rename to src/test/java/org/cryptomator/ui/recoverykey/WordEncoderTest.java
diff --git a/main/ui/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker b/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
similarity index 100%
rename from main/ui/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
rename to src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker
diff --git a/suppression.xml b/suppression.xml
new file mode 100644
index 000000000..a5fa9d766
--- /dev/null
+++ b/suppression.xml
@@ -0,0 +1,53 @@
+
+
+
+
+
+ ^org\.cryptomator:fuse-nio-adapter:.*$
+ 9
+
+
+
+ ^com\.github\.serceman:jnr-fuse:.*$
+ 9
+
+
+
+
+
+ org.eclipse.jetty.toolchain:jetty-servlet-api:4.0.6
+ CVE-2009-5045
+
+
+
+ org.eclipse.jetty.toolchain:jetty-servlet-api:4.0.6
+ CVE-2009-5046
+
+
+
+
+ org.eclipse.jetty.toolchain:jetty-servlet-api:4.0.6
+ CVE-2017-9735
+
+
+
+ org.eclipse.jetty.toolchain:jetty-servlet-api:4.0.6
+ CVE-2017-7656
+
+
+
+ org.eclipse.jetty.toolchain:jetty-servlet-api:4.0.6
+ CVE-2017-7657
+
+
+
+ org.eclipse.jetty.toolchain:jetty-servlet-api:4.0.6
+ CVE-2017-7658
+
+
+
+
+ org.eclipse.jetty.toolchain:jetty-servlet-api:4.0.6
+ CVE-2020-27216
+
+
\ No newline at end of file