Compare commits

...

17 Commits

Author SHA1 Message Date
Armin Schrenk
2f868304e4 Merge branch 'develop' into release/1.6.0 2021-10-05 11:59:57 +02:00
Sebastian Stenzel
813c69f6ac fixed broken bidi binding 2021-10-05 10:09:33 +02:00
Sebastian Stenzel
0d240cdb2d simpler spacing 2021-10-05 10:09:09 +02:00
JaniruTEC
1ef3e948be Fixes #1547: "Custom path" retains invalid value/state (#1548)
Co-authored-by: Sebastian Stenzel <sebastian.stenzel@gmail.com>
2021-10-04 14:31:48 +02:00
Armin Schrenk
2200a100e0 Merge branch 'develop' into release/1.6.0 2021-10-04 13:08:27 +02:00
Armin Schrenk
f5822fc568 fix bug in check run selection and add small space between buttons 2021-10-04 12:49:28 +02:00
Armin Schrenk
126201506c closes #1662 2021-10-04 12:02:55 +02:00
Sebastian Stenzel
c7d8cf5465 Merge branch 'develop' into release/1.6.0 2021-09-30 12:54:38 +02:00
Cryptobot
6415c29e3e New translations strings.properties (Greek) (#1816)
[ci skip]
2021-09-30 12:52:45 +02:00
Sebastian Stenzel
c1965086f3 update dagger to 2.39 2021-09-30 12:52:04 +02:00
Julian Raufelder
c8b9deccb9 Remove incorrect quote in release note 2021-09-29 17:49:54 +02:00
Julian Raufelder
9586e4e65a Compute checksum for *.msi and *.tar.gz as well #1808 2021-09-29 17:48:13 +02:00
Julian Raufelder
0fb5867bd8 Merge branch 'develop' into release/1.6.0 2021-09-29 16:43:26 +02:00
Julian Raufelder
3cc1bef4a6 Bump cryptomator.integrations-linux which fixes #1815 2021-09-29 13:30:29 +02:00
Sebastian Stenzel
907d097e2c store multiline string in env var (fixes #1808) 2021-09-29 11:31:31 +02:00
Tobias Hagemann
c9907d6085 added manual build script for mac (missing: notarization, create-dmg)
[ci skip]
2021-09-28 11:45:49 +02:00
Julian Raufelder
5eac665a93 Fixes #1814
Add missing backslash while setting the pluginDir
2021-09-27 18:50:26 +02:00
12 changed files with 156 additions and 60 deletions

View File

@@ -590,11 +590,12 @@ jobs:
env:
GPG_PRIVATE_KEY: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }}
GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }}
- id: checksums
name: Compute SHA256 checksums of release artifacts
- name: Compute SHA256 checksums of release artifacts
run: |
SHA256_SUMS=`find . -name "*.AppImage" -o -name "*.dmg" -o -name "*.msi" -name "*.tar.gz" | xargs sha256sum`
echo "::set-output name=SHA256_SUMS::${SHA256_SUMS}"
SHA256_SUMS=`find . -name "*.AppImage" -o -name "*.dmg" -o -name "*.msi" -o -name "*.tar.gz" | xargs sha256sum`
echo "SHA256_SUMS<<EOF" >> $GITHUB_ENV
echo "${SHA256_SUMS}" >> $GITHUB_ENV
echo "EOF" >> $GITHUB_ENV
continue-on-error: true
- name: Create release draft
uses: softprops/action-gh-release@v1
@@ -618,4 +619,4 @@ jobs:
:scroll: A complete list of closed issues is available [here](LINK)
---
Checksums of release artifacts:
${{ steps.checksums.outputs.SHA256_SUMS }}"
${{ env.SHA256_SUMS }}

View File

@@ -28,7 +28,7 @@ export LD_PRELOAD=lib/app/libjffi.so
-cp "lib/app/*" \
-Dfile.encoding="utf-8" \
-Dcryptomator.logDir="~/.local/share/Cryptomator/logs" \
-Dcryptomator.pluginDir="~/.local/share/Cryptomator/plugins"
-Dcryptomator.pluginDir="~/.local/share/Cryptomator/plugins" \
-Dcryptomator.mountPointsDir="~/.local/share/Cryptomator/mnt" \
-Dcryptomator.settingsPath="~/.config/Cryptomator/settings.json:~/.Cryptomator/settings.json" \
-Dcryptomator.ipcSocketPath="~/.config/Cryptomator/ipc.socket" \

3
dist/mac/dmg/.gitignore vendored Normal file
View File

@@ -0,0 +1,3 @@
# created during build
runtime/
*.app/

96
dist/mac/dmg/build.sh vendored Executable file
View File

@@ -0,0 +1,96 @@
#!/bin/bash
# parse options
usage() { echo "Usage: $0 [-s <codesign-identity>]" 1>&2; exit 1; }
while getopts ":s:" o; do
case "${o}" in
s)
CODESIGN_IDENTITY=${OPTARG}
;;
*)
usage
;;
esac
done
shift "$((OPTIND-1))"
# prepare working dir and variables
cd $(dirname $0)
rm -rf runtime *.app
REVISION_NO=`git rev-list --count HEAD`
VERSION_NO=`mvn -f../../../pom.xml help:evaluate -Dexpression=project.version -q -DforceStdout | sed -rn 's/.*([0-9]+\.[0-9]+\.[0-9]+).*/\1/p'`
# check preconditions
if [ -z "${JAVA_HOME}" ]; then echo "JAVA_HOME not set. Run using JAVA_HOME=/path/to/jdk ./build.sh"; exit 1; fi
command -v mvn >/dev/null 2>&1 || { echo >&2 "mvn not found."; exit 1; }
if [ -n "${CODESIGN_IDENTITY}" ]; then
command -v codesign >/dev/null 2>&1 || { echo >&2 "codesign not found. Fix by 'xcode-select --install'."; exit 1; }
if [[ ! `security find-identity -v -p codesigning | grep -w "${CODESIGN_IDENTITY}"` ]]; then echo "Given codesign identity is invalid."; exit 1; fi
fi
# compile
mvn -B -f../../../pom.xml clean package -DskipTests -Pmac
cp ../../../target/cryptomator-*.jar ../../../target/mods
# add runtime
${JAVA_HOME}/bin/jlink \
--output runtime \
--module-path "${JAVA_HOME}/jmods" \
--add-modules java.base,java.desktop,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,jdk.unsupported,jdk.crypto.ec,jdk.accessibility \
--no-header-files \
--no-man-pages \
--strip-debug \
--compress=1
# create app dir
${JAVA_HOME}/bin/jpackage \
--verbose \
--type app-image \
--runtime-image runtime \
--input ../../../target/libs \
--module-path ../../../target/mods \
--module org.cryptomator.desktop/org.cryptomator.launcher.Cryptomator \
--dest . \
--name Cryptomator \
--vendor "Skymatic GmbH" \
--copyright "(C) 2016 - 2021 Skymatic GmbH" \
--java-options "-Xss5m" \
--java-options "-Xmx256m" \
--java-options "-Dcryptomator.appVersion=\"${VERSION_NO}\"" \
--app-version "${VERSION_NO}" \
--java-options "-Dfile.encoding=\"utf-8\"" \
--java-options "-Dcryptomator.logDir=\"~/Library/Logs/Cryptomator\"" \
--java-options "-Dcryptomator.pluginDir=\"~/Library/Application Support/Cryptomator/Plugins\"" \
--java-options "-Dcryptomator.settingsPath=\"~/Library/Application Support/Cryptomator/settings.json\"" \
--java-options "-Dcryptomator.ipcSocketPath=\"~/Library/Application Support/Cryptomator/ipc.socket\"" \
--java-options "-Dcryptomator.showTrayIcon=true" \
--java-options "-Dcryptomator.buildNumber=\"dmg-${REVISION_NO}\"" \
--mac-package-identifier org.cryptomator \
--resource-dir ../resources
# transform app dir
cp ../resources/Cryptomator-Vault.icns Cryptomator.app/Contents/Resources/
sed -i '' "s|###BUNDLE_SHORT_VERSION_STRING###|${VERSION_NO}|g" Cryptomator.app/Contents/Info.plist
sed -i '' "s|###BUNDLE_VERSION###|${REVISION_NO}|g" Cryptomator.app/Contents/Info.plist
# codesign
if [ -n "${CODESIGN_IDENTITY}" ]; then
find Cryptomator.app/Contents/runtime/Contents/MacOS -name '*.dylib' -exec codesign --force -s ${CODESIGN_IDENTITY} {} \;
for JAR_PATH in `find Cryptomator.app -name "*.jar"`; do
if [[ `unzip -l ${JAR_PATH} | grep '.dylib\|.jnilib'` ]]; then
JAR_FILENAME=$(basename ${JAR_PATH})
OUTPUT_PATH=${JAR_PATH%.*}
echo "Codesigning libs in ${JAR_FILENAME}..."
unzip -q ${JAR_PATH} -d ${OUTPUT_PATH}
find ${OUTPUT_PATH} -name '*.dylib' -exec codesign --force -s ${CODESIGN_IDENTITY} {} \;
find ${OUTPUT_PATH} -name '*.jnilib' -exec codesign --force -s ${CODESIGN_IDENTITY} {} \;
rm ${JAR_PATH}
pushd ${OUTPUT_PATH} > /dev/null
zip -qr ../${JAR_FILENAME} *
popd > /dev/null
rm -r ${OUTPUT_PATH}
fi
done
echo "Codesigning Cryptomator.app..."
codesign --force --deep --entitlements ../Cryptomator.entitlements -o runtime -s ${CODESIGN_IDENTITY} Cryptomator.app
fi

17
pom.xml
View File

@@ -31,7 +31,7 @@
<cryptomator.integrations.version>1.0.0</cryptomator.integrations.version>
<cryptomator.integrations.win.version>1.0.0-rc1</cryptomator.integrations.win.version>
<cryptomator.integrations.mac.version>1.0.0-rc1</cryptomator.integrations.mac.version>
<cryptomator.integrations.linux.version>1.0.0-rc1</cryptomator.integrations.linux.version>
<cryptomator.integrations.linux.version>1.0.0-rc2</cryptomator.integrations.linux.version>
<cryptomator.fuse.version>1.3.2</cryptomator.fuse.version>
<cryptomator.dokany.version>1.3.3</cryptomator.dokany.version>
<cryptomator.webdav.version>1.2.6</cryptomator.webdav.version>
@@ -42,7 +42,7 @@
<jwt.version>3.18.2</jwt.version>
<easybind.version>2.2</easybind.version>
<guava.version>31.0-jre</guava.version>
<dagger.version>2.38.1</dagger.version>
<dagger.version>2.39</dagger.version>
<gson.version>2.8.8</gson.version>
<zxcvbn.version>1.5.2</zxcvbn.version>
<slf4j.version>1.7.32</slf4j.version>
@@ -222,19 +222,6 @@
</dependency>
</dependencies>
<repositories>
<repository>
<id>maven-central</id>
<name>Maven Central Repo</name>
<url>https://repo.maven.apache.org/maven2</url>
</repository>
<repository>
<id>google-maven</id>
<name>Google Maven Repo</name>
<url>https://maven.google.com</url>
</repository>
</repositories>
<build>
<pluginManagement>
<plugins>

View File

@@ -1,16 +1,14 @@
package org.cryptomator.ui.health;
import com.tobiasdiez.easybind.EasyBind;
import com.tobiasdiez.easybind.Subscription;
import org.cryptomator.ui.common.FxController;
import javax.inject.Inject;
import javafx.beans.binding.Binding;
import javafx.beans.binding.Bindings;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import javafx.scene.control.CheckBox;
import java.util.ArrayList;
import java.util.List;
public class CheckListCellController implements FxController {
@@ -18,26 +16,26 @@ public class CheckListCellController implements FxController {
private final ObjectProperty<Check> check;
private final Binding<String> checkName;
private final Binding<Boolean> checkRunnable;
private final List<Subscription> subscriptions;
/* FXML */
public CheckBox forRunSelectedCheckBox;
public CheckBox checkbox;
@Inject
public CheckListCellController() {
check = new SimpleObjectProperty<>();
checkRunnable = EasyBind.wrapNullable(check).mapObservable(Check::stateProperty).map(Check.CheckState.RUNNABLE::equals).orElse(false);
checkName = EasyBind.wrapNullable(check).map(Check::getName).orElse("");
subscriptions = new ArrayList<>();
}
public void initialize() {
subscriptions.add(EasyBind.subscribe(check, c -> {
forRunSelectedCheckBox.selectedProperty().unbind();
if (c != null) {
forRunSelectedCheckBox.selectedProperty().bindBidirectional(c.chosenForExecutionProperty());
check.addListener((observable, oldVal, newVal) -> {
if (oldVal != null) {
Bindings.unbindBidirectional(checkbox.selectedProperty(), oldVal.chosenForExecutionProperty());
}
}));
if (newVal != null) {
Bindings.bindBidirectional(checkbox.selectedProperty(), newVal.chosenForExecutionProperty());
}
});
}
public ObjectProperty<Check> checkProperty() {

View File

@@ -42,7 +42,6 @@ abstract class PreferencesModule {
static Stage provideStage(StageFactory factory, ResourceBundle resourceBundle) {
Stage stage = factory.create();
stage.setTitle(resourceBundle.getString("preferences.title"));
stage.setResizable(false);
return stage;
}

View File

@@ -27,6 +27,7 @@ import javafx.stage.DirectoryChooser;
import javafx.stage.Stage;
import javafx.util.StringConverter;
import java.io.File;
import java.nio.file.InvalidPathException;
import java.nio.file.Path;
import java.util.ResourceBundle;
import java.util.Set;
@@ -94,7 +95,9 @@ public class MountOptionsController implements FxController {
driveLetterSelection.setConverter(new WinDriveLetterLabelConverter(windowsDriveLetters, resourceBundle));
driveLetterSelection.setValue(vault.getVaultSettings().winDriveLetter().get());
if (vault.getVaultSettings().useCustomMountPath().get() && !getRestrictToStableFuseOnWindows() /* to prevent invalid states */) {
if (vault.getVaultSettings().useCustomMountPath().get()
&& vault.getVaultSettings().getCustomMountPath().isPresent()
&& !getRestrictToStableFuseOnWindows() /* to prevent invalid states */) {
mountPoint.selectToggle(mountPointCustomDir);
} else if (!Strings.isNullOrEmpty(vault.getVaultSettings().winDriveLetter().get())) {
mountPoint.selectToggle(mountPointWinDriveLetter);
@@ -125,25 +128,30 @@ public class MountOptionsController implements FxController {
}
@FXML
private void chooseCustomMountPoint() {
public void chooseCustomMountPoint() {
chooseCustomMountPointOrReset(mountPointCustomDir);
}
private void chooseCustomMountPointOrReset(Toggle previousMountToggle) {
DirectoryChooser directoryChooser = new DirectoryChooser();
directoryChooser.setTitle(resourceBundle.getString("vaultOptions.mount.mountPoint.directoryPickerTitle"));
try {
directoryChooser.setInitialDirectory(Path.of(System.getProperty("user.home")).toFile());
} catch (Exception e) {
//NO-OP
var initialDir = vault.getVaultSettings().getCustomMountPath().orElse(System.getProperty("user.home"));
directoryChooser.setInitialDirectory(Path.of(initialDir).toFile());
} catch (InvalidPathException e) {
// no-op
}
File file = directoryChooser.showDialog(window);
if (file != null) {
vault.getVaultSettings().customMountPath().set(file.getAbsolutePath());
} else {
vault.getVaultSettings().customMountPath().set(null);
mountPoint.selectToggle(previousMountToggle);
}
}
private void toggleMountPoint(@SuppressWarnings("unused") ObservableValue<? extends Toggle> observable, @SuppressWarnings("unused") Toggle oldValue, Toggle newValue) {
private void toggleMountPoint(@SuppressWarnings("unused") ObservableValue<? extends Toggle> observable, Toggle oldValue, Toggle newValue) {
if (mountPointCustomDir.equals(newValue) && Strings.isNullOrEmpty(vault.getVaultSettings().customMountPath().get())) {
chooseCustomMountPoint();
chooseCustomMountPointOrReset(oldValue);
}
}

View File

@@ -3,7 +3,6 @@
<?import javafx.geometry.Insets?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.control.ButtonBar?>
<?import javafx.scene.control.CheckBox?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.ListView?>
<?import javafx.scene.layout.HBox?>
@@ -27,7 +26,7 @@
<ListView fx:id="checksListView" VBox.vgrow="ALWAYS" minWidth="175" maxWidth="175"/>
<VBox alignment="CENTER" visible="${!controller.mainRunStarted}" managed="${!controller.mainRunStarted}" HBox.hgrow="ALWAYS" spacing="12">
<Label text="%health.checkList.description" wrapText="true"/>
<HBox alignment="CENTER">
<HBox alignment="CENTER" spacing="6">
<Button onAction="#selectAllChecks" text="%health.checkList.selectAllButton" />
<Button onAction="#deselectAllChecks" text="%health.checkList.deselectAllButton" />
</HBox>

View File

@@ -18,7 +18,7 @@
</padding>
<StackPane minWidth="20" minHeight="20" alignment="CENTER">
<CheckBox fx:id="forRunSelectedCheckBox" visible="${controller.checkRunnable}" />
<CheckBox fx:id="checkbox" visible="${controller.checkRunnable}"/>
<CheckStateIconView check="${controller.check}" glyphSize="20" visible="${!controller.checkRunnable}"/>
</StackPane>
<Label text="${controller.checkName}"/>

View File

@@ -13,9 +13,14 @@ generic.button.done=Κλείσιμο
generic.button.next=Επόμενο
generic.button.print=Εκτύπωση
## Error
generic.error.title=Σφάλμα %s
generic.error.instruction=Ωχ! Το Cryptomator δεν περίμενε να συμβεί αυτό. Μπορείτε να αναζητήσετε υπάρχουσες λύσεις για αυτό το σφάλμα. Ή εάν δεν έχει αναφερθεί ακόμα, μη διστάσετε να το κάνετε.
generic.error.hyperlink.lookup=Αναζήτηση αυτού του σφάλματος
generic.error.hyperlink.report=Αναφέρετε αυτό το σφάλμα
generic.error.technicalDetails=Λεπτομέρειες:
# Defaults
defaults.vault.vaultName=Vault
defaults.vault.vaultName=Κρύπτη
# Tray Menu
traymenu.showMainWindow=Εμφάνιση
@@ -27,34 +32,34 @@ traymenu.vault.lock=Κλείδωμα
traymenu.vault.reveal=Αποκάλυψη
# Add Vault Wizard
addvaultwizard.title=Προσθήκη Vault
addvaultwizard.title=Προσθήκη Κρύπτης
## Welcome
addvaultwizard.welcome.newButton=Δημιουργία νέου Vault
addvaultwizard.welcome.existingButton=Άνοιγμα υπάρχοντος Vault
addvaultwizard.welcome.newButton=Δημιουργία Νέας Κρύπτης
addvaultwizard.welcome.existingButton=Άνοιγμα Υπάρχοντος Κρύπτης
## New
### Name
addvaultwizard.new.nameInstruction=Διαλέξτε ένα όνομα για το vault
addvaultwizard.new.namePrompt=Όνομα Vault
addvaultwizard.new.nameInstruction=Διαλέξτε ένα όνομα για την κρύπτη
addvaultwizard.new.namePrompt=Όνομα Κρύπτης
### Location
addvaultwizard.new.locationInstruction=Που θα αποθηκεύσει το Cryptomator τα κωδικοποιημένα αρχεία του vault σου;
addvaultwizard.new.locationInstruction=Που θα πρέπει να αποθηκεύσει το Cryptomator τα κωδικοποιημένα αρχεία της κρύπτης σου;
addvaultwizard.new.locationLabel=Θέση αποθήκευσης
addvaultwizard.new.locationPrompt=
addvaultwizard.new.directoryPickerLabel=Προσαρμοσμένη τοποθεσία
addvaultwizard.new.directoryPickerButton=Επιλογή…
addvaultwizard.new.directoryPickerTitle=Επιλογή φακέλου
addvaultwizard.new.fileAlreadyExists=Ένα αρχείο ή φάκελος με το όνομα του vault υπάρχει ήδη
addvaultwizard.new.fileAlreadyExists=Ένα αρχείο ή φάκελος με το όνομα της κρύπτης υπάρχει ήδη
addvaultwizard.new.locationDoesNotExist=Στην καθορισμένη διαδρομή δεν υπάρχει ή δεν μπορεί να προσπελαστεί ένας φάκελος
addvaultwizard.new.locationIsNotWritable=Δεν υπάρχει πρόσβαση εγγραφής στην καθορισμένη διαδρομή
addvaultwizard.new.locationIsOk=Κατάλληλη τοποθεσία για το vault σας
addvaultwizard.new.invalidName=Λάθος όνομα vault. Παρακαλώ χρησιμοποιείστε ένα κανονικό όνομα φακέλου.
addvaultwizard.new.locationIsOk=Κατάλληλη τοποθεσία για την κρύπτη σας
addvaultwizard.new.invalidName=Λάθος όνομα κρύπτης. Παρακαλώ χρησιμοποιείστε ένα κανονικό όνομα φακέλου.
### Password
addvaultwizard.new.createVaultBtn=Δημιουργία Vault
addvaultwizard.new.createVaultBtn=Δημιουργία Κρύπτης
addvaultwizard.new.generateRecoveryKeyChoice=Δεν θα μπορείτε να έχετε πρόσβαση στα δεδομένα σας χωρίς τον κωδικό σας. Θέλετε να δημιουργηθεί ένα κλειδί ανάκτησης στην περίπτωση που χάσετε τον κωδικό σας;
addvaultwizard.new.generateRecoveryKeyChoice.yes=Ναι παρακαλώ, καλύτερα ασφαλής παρά λυπημένος
addvaultwizard.new.generateRecoveryKeyChoice.no=Όχι ευχαριστώ, δεν θα χάσω τον κωδικό μου
### Information
addvault.new.readme.storageLocation.fileName=ΣΗΜΑΝΤΙΚΟ.rtf
addvault.new.readme.storageLocation.1=ΑΡΧΕΙΑ VAULT
addvault.new.readme.storageLocation.1=ΑΡΧΕΙΑ ΚΡΥΠΤΗΣ
addvault.new.readme.storageLocation.2=Αυτή είναι η τοποθεσία του vault σας.
addvault.new.readme.storageLocation.3=ΜΗΝ
addvault.new.readme.storageLocation.4=αλλάξετε οποιοδήποτε αρχείο σε αυτό το φάκελο ή
@@ -80,7 +85,7 @@ addvaultwizard.success.unlockNow=Ξεκλείδωμα τώρα
# Remove Vault
removeVault.title=Διαγραφή Vault
removeVault.information=Το Cryptomator θα ξεχάσει αυτό το vault. Μπορείτε να το προσθέσετε ξανά αργότερα. Δεν θα διαγραφούν τα κωδικοποιημένα αρχεία σας από τον σκληρό σας δίσκο.
removeVault.confirmBtn=Διαγραφή Vault
removeVault.confirmBtn=Διαγραφή Κρύπτης
# Change Password
changepassword.title=Αλλαγή κωδικού πρόσβασης
@@ -265,7 +270,7 @@ main.vaultlist.contextMenu.unlock=Ξεκλείδωμα…
main.vaultlist.contextMenu.unlockNow=Ξεκλείδωμα τώρα
main.vaultlist.contextMenu.vaultoptions=Εμφάνιση επιλογών Vault
main.vaultlist.contextMenu.reveal=Αποκάλυψη εικονικού δίσκου
main.vaultlist.addVaultBtn=Προσθήκη Vault
main.vaultlist.addVaultBtn=Προσθήκη Κρύπτης
## Vault Detail
### Welcome
main.vaultDetail.welcomeOnboarding=Ευχαριστούμε που επιλέξατε το Cryptomator για να προστατεύσετε τα αρχεία σας. Αν χρειάζεστε οποιαδήποτε βοήθεια, ελέγξτε τους οδηγούς για αρχάριους:
@@ -308,7 +313,7 @@ wrongFileAlert.link=Για παραπάνω βοήθεια, επισκεφτεί
# Vault Options
## General
vaultOptions.general=Γενικά
vaultOptions.general.vaultName=Όνομα Vault
vaultOptions.general.vaultName=Όνομα Κρύπτης
vaultOptions.general.autoLock.lockAfterTimePart1=Κλείδωμα όταν παραμένει σε αδράνεια για
vaultOptions.general.autoLock.lockAfterTimePart2=λεπτά
vaultOptions.general.unlockAfterStartup=Ξεκλείδωμα vault όταν ξεκινά το Cryptomator

View File

@@ -18,7 +18,7 @@ Cryptomator uses 40 third-party dependencies under the following licenses:
- jnr-constants (com.github.jnr:jnr-constants:0.9.15 - http://github.com/jnr/jnr-constants)
- jnr-ffi (com.github.jnr:jnr-ffi:2.1.12 - http://github.com/jnr/jnr-ffi)
- Gson (com.google.code.gson:gson:2.8.8 - https://github.com/google/gson/gson)
- Dagger (com.google.dagger:dagger:2.38.1 - https://github.com/google/dagger)
- Dagger (com.google.dagger:dagger:2.39 - https://github.com/google/dagger)
- Guava InternalFutureFailureAccess and InternalFutures (com.google.guava:failureaccess:1.0.1 - https://github.com/google/guava/failureaccess)
- Guava: Google Core Libraries for Java (com.google.guava:guava:31.0-jre - https://github.com/google/guava)
- Apache Commons CLI (commons-cli:commons-cli:1.4 - http://commons.apache.org/proper/commons-cli/)