Merge branch 'hotfix/1.15.2'

This commit is contained in:
Tobias Hagemann
2025-04-04 18:24:13 +02:00
3 changed files with 24 additions and 7 deletions
@@ -77,6 +77,9 @@
</content_rating> </content_rating>
<releases> <releases>
<release date="2025-04-04" version="1.15.2">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.15.2</url>
</release>
<release date="2025-02-05" version="1.15.1"> <release date="2025-02-05" version="1.15.1">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.15.1</url> <url type="details">https://github.com/cryptomator/cryptomator/releases/1.15.1</url>
</release> </release>
+13 -2
View File
@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<groupId>org.cryptomator</groupId> <groupId>org.cryptomator</groupId>
<artifactId>cryptomator</artifactId> <artifactId>cryptomator</artifactId>
<version>1.15.1</version> <version>1.15.2</version>
<name>Cryptomator Desktop App</name> <name>Cryptomator Desktop App</name>
<organization> <organization>
@@ -39,7 +39,7 @@
<cryptomator.integrations.mac.version>1.2.4</cryptomator.integrations.mac.version> <cryptomator.integrations.mac.version>1.2.4</cryptomator.integrations.mac.version>
<cryptomator.integrations.linux.version>1.5.2</cryptomator.integrations.linux.version> <cryptomator.integrations.linux.version>1.5.2</cryptomator.integrations.linux.version>
<cryptomator.fuse.version>5.0.2</cryptomator.fuse.version> <cryptomator.fuse.version>5.0.2</cryptomator.fuse.version>
<cryptomator.webdav.version>2.0.7</cryptomator.webdav.version> <cryptomator.webdav.version>2.0.10</cryptomator.webdav.version>
<!-- 3rd party dependencies --> <!-- 3rd party dependencies -->
<commons-lang3.version>3.17.0</commons-lang3.version> <commons-lang3.version>3.17.0</commons-lang3.version>
@@ -75,6 +75,17 @@
<surefire.jacoco.args></surefire.jacoco.args> <surefire.jacoco.args></surefire.jacoco.args>
</properties> </properties>
<dependencyManagement>
<dependencies>
<!-- TODO: remove once fuse-nio-adapter is updated -->
<dependency>
<groupId>org.cryptomator</groupId>
<artifactId>jfuse</artifactId>
<version>0.7.2</version>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies> <dependencies>
<!-- Cryptomator Libs --> <!-- Cryptomator Libs -->
<dependency> <dependency>
@@ -36,6 +36,7 @@ import javafx.stage.Stage;
import javafx.stage.WindowEvent; import javafx.stage.WindowEvent;
import javafx.util.Duration; import javafx.util.Duration;
import java.util.concurrent.CompletableFuture; import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutorService;
@PassphraseEntryScoped @PassphraseEntryScoped
public class PassphraseEntryController implements FxController { public class PassphraseEntryController implements FxController {
@@ -49,6 +50,7 @@ public class PassphraseEntryController implements FxController {
private final ForgetPasswordComponent.Builder forgetPassword; private final ForgetPasswordComponent.Builder forgetPassword;
private final KeychainManager keychain; private final KeychainManager keychain;
private final StringBinding vaultName; private final StringBinding vaultName;
private final ExecutorService backgroundExecutorService;
private final BooleanProperty unlockInProgress = new SimpleBooleanProperty(); private final BooleanProperty unlockInProgress = new SimpleBooleanProperty();
private final ObjectBinding<ContentDisplay> unlockButtonContentDisplay = Bindings.when(unlockInProgress).then(ContentDisplay.LEFT).otherwise(ContentDisplay.TEXT_ONLY); private final ObjectBinding<ContentDisplay> unlockButtonContentDisplay = Bindings.when(unlockInProgress).then(ContentDisplay.LEFT).otherwise(ContentDisplay.TEXT_ONLY);
private final BooleanProperty unlockButtonDisabled = new SimpleBooleanProperty(); private final BooleanProperty unlockButtonDisabled = new SimpleBooleanProperty();
@@ -64,7 +66,7 @@ public class PassphraseEntryController implements FxController {
public Animation unlockAnimation; public Animation unlockAnimation;
@Inject @Inject
public PassphraseEntryController(@KeyLoading Stage window, @KeyLoading Vault vault, CompletableFuture<PassphraseEntryResult> result, @Nullable @Named("savedPassword") Passphrase savedPassword, ForgetPasswordComponent.Builder forgetPassword, KeychainManager keychain) { public PassphraseEntryController(@KeyLoading Stage window, @KeyLoading Vault vault, CompletableFuture<PassphraseEntryResult> result, @Nullable @Named("savedPassword") Passphrase savedPassword, ForgetPasswordComponent.Builder forgetPassword, KeychainManager keychain, ExecutorService backgroundExecutorService) {
this.window = window; this.window = window;
this.vault = vault; this.vault = vault;
this.result = result; this.result = result;
@@ -72,8 +74,8 @@ public class PassphraseEntryController implements FxController {
this.forgetPassword = forgetPassword; this.forgetPassword = forgetPassword;
this.keychain = keychain; this.keychain = keychain;
this.vaultName = WeakBindings.bindString(vault.displayNameProperty()); this.vaultName = WeakBindings.bindString(vault.displayNameProperty());
this.backgroundExecutorService = backgroundExecutorService;
window.setOnHiding(this::windowClosed); window.setOnHiding(this::windowClosed);
result.whenCompleteAsync((r, t) -> unlockInProgress.set(false), Platform::runLater);
} }
@FXML @FXML
@@ -119,8 +121,6 @@ public class PassphraseEntryController implements FxController {
new KeyFrame(Duration.millis(800), legsExtendedY, legsExtendedX, faceHidden), // new KeyFrame(Duration.millis(800), legsExtendedY, legsExtendedX, faceHidden), //
new KeyFrame(Duration.millis(1000), faceVisible) // new KeyFrame(Duration.millis(1000), faceVisible) //
); );
result.whenCompleteAsync((r, t) -> stopUnlockAnimation());
} }
@FXML @FXML
@@ -133,6 +133,9 @@ public class PassphraseEntryController implements FxController {
result.cancel(true); result.cancel(true);
LOG.debug("Unlock canceled by user."); LOG.debug("Unlock canceled by user.");
} }
if( passwordField != null) {
passwordField.getCharacters().destroy();
}
} }
@@ -142,7 +145,7 @@ public class PassphraseEntryController implements FxController {
unlockInProgress.set(true); unlockInProgress.set(true);
CharSequence pwFieldContents = passwordField.getCharacters(); CharSequence pwFieldContents = passwordField.getCharacters();
Passphrase pw = Passphrase.copyOf(pwFieldContents); Passphrase pw = Passphrase.copyOf(pwFieldContents);
result.complete(new PassphraseEntryResult(pw, savePasswordCheckbox.isSelected())); result.completeAsync(() -> new PassphraseEntryResult(pw, savePasswordCheckbox.isSelected()), backgroundExecutorService);
startUnlockAnimation(); startUnlockAnimation();
} }