From 11a55f382a36a2802fc64cab725208d3ee7b1a2c Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Wed, 27 Jul 2022 17:16:33 +0200 Subject: [PATCH 01/24] fix winget release --- .github/workflows/win-exe.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/win-exe.yml b/.github/workflows/win-exe.yml index 245aa570e..48e9e61ff 100644 --- a/.github/workflows/win-exe.yml +++ b/.github/workflows/win-exe.yml @@ -198,7 +198,7 @@ jobs: name: Publish on winget repo runs-on: windows-latest needs: [build-msi] - if: github.event.action == 'release' || inputs.winget-release + if: github.event.action == 'published' || inputs.winget-release steps: - name: Submit package to Windows Package Manager Community Repository run: | From 414c4e20b89132d57423c548ef94369ee39b3978 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Thu, 28 Jul 2022 10:47:46 +0200 Subject: [PATCH 02/24] remove code smell --- .../org/cryptomator/common/Environment.java | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/cryptomator/common/Environment.java b/src/main/java/org/cryptomator/common/Environment.java index e45c29a29..678152242 100644 --- a/src/main/java/org/cryptomator/common/Environment.java +++ b/src/main/java/org/cryptomator/common/Environment.java @@ -43,17 +43,21 @@ public class Environment { LOG.debug("user.language: {}", System.getProperty("user.language")); LOG.debug("user.region: {}", System.getProperty("user.region")); LOG.debug("logback.configurationFile: {}", System.getProperty("logback.configurationFile")); - LOG.debug("{}: {}", SETTINGS_PATH_PROP_NAME, System.getProperty(SETTINGS_PATH_PROP_NAME)); - LOG.debug("{}: {}", IPC_SOCKET_PATH_PROP_NAME, System.getProperty(IPC_SOCKET_PATH_PROP_NAME)); - LOG.debug("{}: {}", KEYCHAIN_PATHS_PROP_NAME, System.getProperty(KEYCHAIN_PATHS_PROP_NAME)); - LOG.debug("{}: {}", LOG_DIR_PROP_NAME, System.getProperty(LOG_DIR_PROP_NAME)); - LOG.debug("{}: {}", PLUGIN_DIR_PROP_NAME, System.getProperty(PLUGIN_DIR_PROP_NAME)); - LOG.debug("{}: {}", MOUNTPOINT_DIR_PROP_NAME, System.getProperty(MOUNTPOINT_DIR_PROP_NAME)); - LOG.debug("{}: {}", MIN_PW_LENGTH_PROP_NAME, System.getProperty(MIN_PW_LENGTH_PROP_NAME)); - LOG.debug("{}: {}", APP_VERSION_PROP_NAME, System.getProperty(APP_VERSION_PROP_NAME)); - LOG.debug("{}: {}", BUILD_NUMBER_PROP_NAME, System.getProperty(BUILD_NUMBER_PROP_NAME)); - LOG.debug("{}: {}", TRAY_ICON_PROP_NAME, System.getProperty(TRAY_ICON_PROP_NAME)); - LOG.debug("{}: {}", P12_PATH_PROP_NAME, System.getProperty(P12_PATH_PROP_NAME)); + logCryptomatorSystemProperty(SETTINGS_PATH_PROP_NAME); + logCryptomatorSystemProperty(IPC_SOCKET_PATH_PROP_NAME); + logCryptomatorSystemProperty(KEYCHAIN_PATHS_PROP_NAME); + logCryptomatorSystemProperty(LOG_DIR_PROP_NAME); + logCryptomatorSystemProperty(PLUGIN_DIR_PROP_NAME); + logCryptomatorSystemProperty(MOUNTPOINT_DIR_PROP_NAME); + logCryptomatorSystemProperty(MIN_PW_LENGTH_PROP_NAME); + logCryptomatorSystemProperty(APP_VERSION_PROP_NAME); + logCryptomatorSystemProperty(BUILD_NUMBER_PROP_NAME); + logCryptomatorSystemProperty(TRAY_ICON_PROP_NAME); + logCryptomatorSystemProperty(P12_PATH_PROP_NAME); + } + + private void logCryptomatorSystemProperty(String propertyName) { + LOG.debug("{}: {}", propertyName, System.getProperty(propertyName)); } public boolean useCustomLogbackConfig() { From 80b5b6af00edc55fa199257de7d123111724fec1 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Thu, 28 Jul 2022 10:58:50 +0200 Subject: [PATCH 03/24] simplify app version code --- .../java/org/cryptomator/common/Environment.java | 8 ++++++-- .../org/cryptomator/launcher/Cryptomator.java | 2 +- .../cryptomator/ui/common/ErrorController.java | 2 +- .../org/cryptomator/ui/fxapp/UpdateChecker.java | 15 +++++---------- .../cryptomator/ui/fxapp/UpdateCheckerModule.java | 2 +- .../ui/preferences/AboutController.java | 10 +++++----- .../preferences/UpdatesPreferencesController.java | 10 +++------- src/main/resources/fxml/preferences_about.fxml | 2 +- 8 files changed, 23 insertions(+), 28 deletions(-) diff --git a/src/main/java/org/cryptomator/common/Environment.java b/src/main/java/org/cryptomator/common/Environment.java index 678152242..14fbe7376 100644 --- a/src/main/java/org/cryptomator/common/Environment.java +++ b/src/main/java/org/cryptomator/common/Environment.java @@ -92,8 +92,12 @@ public class Environment { return getPath(MOUNTPOINT_DIR_PROP_NAME).map(this::replaceHomeDir); } - public Optional getAppVersion() { - return Optional.ofNullable(System.getProperty(APP_VERSION_PROP_NAME)); + /** + * Returns the app version defined in the {@value APP_VERSION_PROP_NAME} property or returns "SNAPSHOT". + * @return App version or "SNAPSHOT", if undefined + */ + public String getAppVersion() { + return System.getProperty(APP_VERSION_PROP_NAME, "SNAPSHOT"); } public Optional getBuildNumber() { diff --git a/src/main/java/org/cryptomator/launcher/Cryptomator.java b/src/main/java/org/cryptomator/launcher/Cryptomator.java index 3cd5ec727..08fb13185 100644 --- a/src/main/java/org/cryptomator/launcher/Cryptomator.java +++ b/src/main/java/org/cryptomator/launcher/Cryptomator.java @@ -81,7 +81,7 @@ public class Cryptomator { private int run(String[] args) { logConfig.init(); LOG.debug("Dagger graph initialized after {}ms", System.currentTimeMillis() - STARTUP_TIME); - LOG.info("Starting Cryptomator {} on {} {} ({})", env.getAppVersion().orElse("SNAPSHOT"), SystemUtils.OS_NAME, SystemUtils.OS_VERSION, SystemUtils.OS_ARCH); + LOG.info("Starting Cryptomator {} on {} {} ({})", env.getAppVersion(), SystemUtils.OS_NAME, SystemUtils.OS_VERSION, SystemUtils.OS_ARCH); debugMode.initialize(); supportedLanguages.applyPreferred(); diff --git a/src/main/java/org/cryptomator/ui/common/ErrorController.java b/src/main/java/org/cryptomator/ui/common/ErrorController.java index a2204fae3..3b5e08ffb 100644 --- a/src/main/java/org/cryptomator/ui/common/ErrorController.java +++ b/src/main/java/org/cryptomator/ui/common/ErrorController.java @@ -77,7 +77,7 @@ public class ErrorController implements FxController { var enhancedTemplate = String.format(REPORT_BODY_TEMPLATE, // System.getProperty("os.name"), // System.getProperty("os.version"), // - environment.getAppVersion().orElse("undefined"), // + environment.getAppVersion(), // environment.getBuildNumber().orElse("undefined")); var body = URLEncoder.encode(enhancedTemplate, StandardCharsets.UTF_8); application.getHostServices().showDocument(REPORT_URL_FORMAT.formatted(title, body)); diff --git a/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java b/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java index 729791356..b83fe8515 100644 --- a/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java +++ b/src/main/java/org/cryptomator/ui/fxapp/UpdateChecker.java @@ -9,14 +9,12 @@ import javax.inject.Inject; import javax.inject.Named; import javafx.beans.binding.BooleanBinding; import javafx.beans.property.ReadOnlyStringProperty; -import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; import javafx.concurrent.ScheduledService; import javafx.concurrent.Worker; import javafx.concurrent.WorkerStateEvent; import javafx.util.Duration; import java.util.Comparator; -import java.util.Optional; @FxApplicationScoped public class UpdateChecker { @@ -25,8 +23,7 @@ public class UpdateChecker { private static final Duration AUTOCHECK_DELAY = Duration.seconds(5); private final Settings settings; - private final Optional applicationVersion; - private final StringProperty currentVersionProperty; + private final String currentVersion; private final StringProperty latestVersionProperty; private final Comparator semVerComparator; private final ScheduledService updateCheckerService; @@ -34,11 +31,10 @@ public class UpdateChecker { @Inject UpdateChecker(Settings settings, Environment env, @Named("latestVersion") StringProperty latestVersionProperty, @Named("SemVer") Comparator semVerComparator, ScheduledService updateCheckerService) { this.settings = settings; - this.applicationVersion = env.getAppVersion(); this.latestVersionProperty = latestVersionProperty; this.semVerComparator = semVerComparator; this.updateCheckerService = updateCheckerService; - this.currentVersionProperty = new SimpleStringProperty(applicationVersion.orElse("SNAPSHOT")); + this.currentVersion = env.getAppVersion(); } public void automaticallyCheckForUpdatesIfEnabled() { @@ -66,11 +62,10 @@ public class UpdateChecker { } private void checkSucceeded(WorkerStateEvent event) { - String currentVersion = applicationVersion.orElse(null); String latestVersion = updateCheckerService.getValue(); LOG.info("Current version: {}, lastest version: {}", currentVersion, latestVersion); - if (currentVersion == null || semVerComparator.compare(currentVersion, latestVersion) < 0) { + if (semVerComparator.compare(currentVersion, latestVersion) < 0) { // update is available latestVersionProperty.set(latestVersion); } else { @@ -92,8 +87,8 @@ public class UpdateChecker { return latestVersionProperty; } - public ReadOnlyStringProperty currentVersionProperty() { - return currentVersionProperty; + public String getCurrentVersion() { + return currentVersion; } } diff --git a/src/main/java/org/cryptomator/ui/fxapp/UpdateCheckerModule.java b/src/main/java/org/cryptomator/ui/fxapp/UpdateCheckerModule.java index 58b8653da..dd7c5bf77 100644 --- a/src/main/java/org/cryptomator/ui/fxapp/UpdateCheckerModule.java +++ b/src/main/java/org/cryptomator/ui/fxapp/UpdateCheckerModule.java @@ -56,7 +56,7 @@ public abstract class UpdateCheckerModule { @FxApplicationScoped static HttpRequest provideCheckForUpdatesRequest(Environment env) { String userAgent = String.format("Cryptomator VersionChecker/%s %s %s (%s)", // - env.getAppVersion().orElse("SNAPSHOT"), // + env.getAppVersion(), // SystemUtils.OS_NAME, // SystemUtils.OS_VERSION, // SystemUtils.OS_ARCH); // diff --git a/src/main/java/org/cryptomator/ui/preferences/AboutController.java b/src/main/java/org/cryptomator/ui/preferences/AboutController.java index f418843ee..1f1b1864b 100644 --- a/src/main/java/org/cryptomator/ui/preferences/AboutController.java +++ b/src/main/java/org/cryptomator/ui/preferences/AboutController.java @@ -18,14 +18,14 @@ public class AboutController implements FxController { private static final Logger LOG = LoggerFactory.getLogger(AboutController.class); private final String thirdPartyLicenseText; - private final String applicationVersion; + private final String fullApplicationVersion; @Inject AboutController(UpdateChecker updateChecker, Environment environment) { this.thirdPartyLicenseText = loadThirdPartyLicenseFile(); - StringBuilder sb = new StringBuilder(updateChecker.currentVersionProperty().get()); + StringBuilder sb = new StringBuilder(environment.getAppVersion()); environment.getBuildNumber().ifPresent(s -> sb.append(" (").append(s).append(')')); - this.applicationVersion = sb.toString(); + this.fullApplicationVersion = sb.toString(); } private static String loadThirdPartyLicenseFile() { @@ -43,7 +43,7 @@ public class AboutController implements FxController { return thirdPartyLicenseText; } - public String getApplicationVersion() { - return applicationVersion; + public String getFullApplicationVersion() { + return fullApplicationVersion; } } diff --git a/src/main/java/org/cryptomator/ui/preferences/UpdatesPreferencesController.java b/src/main/java/org/cryptomator/ui/preferences/UpdatesPreferencesController.java index 1714d00a6..6a47b992d 100644 --- a/src/main/java/org/cryptomator/ui/preferences/UpdatesPreferencesController.java +++ b/src/main/java/org/cryptomator/ui/preferences/UpdatesPreferencesController.java @@ -24,7 +24,7 @@ public class UpdatesPreferencesController implements FxController { private final UpdateChecker updateChecker; private final ObjectBinding checkForUpdatesButtonState; private final ReadOnlyStringProperty latestVersion; - private final ReadOnlyStringProperty currentVersion; + private final String currentVersion; private final BooleanBinding updateAvailable; /* FXML */ @@ -38,7 +38,7 @@ public class UpdatesPreferencesController implements FxController { this.checkForUpdatesButtonState = Bindings.when(updateChecker.checkingForUpdatesProperty()).then(ContentDisplay.LEFT).otherwise(ContentDisplay.TEXT_ONLY); this.latestVersion = updateChecker.latestVersionProperty(); this.updateAvailable = latestVersion.isNotNull(); - this.currentVersion = updateChecker.currentVersionProperty(); + this.currentVersion = updateChecker.getCurrentVersion(); } public void initialize() { @@ -73,12 +73,8 @@ public class UpdatesPreferencesController implements FxController { return latestVersion.get(); } - public ReadOnlyStringProperty currentVersionProperty() { - return currentVersion; - } - public String getCurrentVersion() { - return currentVersion.get(); + return currentVersion; } public BooleanBinding updateAvailableProperty() { diff --git a/src/main/resources/fxml/preferences_about.fxml b/src/main/resources/fxml/preferences_about.fxml index d08a5e43a..b6940b0ed 100644 --- a/src/main/resources/fxml/preferences_about.fxml +++ b/src/main/resources/fxml/preferences_about.fxml @@ -21,7 +21,7 @@ - + From 47f2d423b997ddebf86736e69677d0d02bbf472f Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Thu, 28 Jul 2022 11:16:59 +0200 Subject: [PATCH 04/24] Remove code smells --- .../org/cryptomator/common/settings/SettingsJsonAdapter.java | 2 +- .../cryptomator/common/settings/VaultSettingsJsonAdapter.java | 2 +- src/main/java/org/cryptomator/common/vaults/FuseVolume.java | 3 --- .../java/org/cryptomator/ui/controls/SecurePasswordField.java | 2 ++ .../org/cryptomator/ui/mainwindow/VaultListController.java | 4 ++++ .../cryptomator/ui/migration/MigrationStartController.java | 3 --- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java b/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java index 3f4614604..ff62672bd 100644 --- a/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java +++ b/src/main/java/org/cryptomator/common/settings/SettingsJsonAdapter.java @@ -103,7 +103,7 @@ public class SettingsJsonAdapter extends TypeAdapter { case "language" -> settings.languageProperty().set(in.nextString()); default -> { - LOG.warn("Unsupported vault setting found in JSON: " + name); + LOG.warn("Unsupported vault setting found in JSON: {}", name); in.skipValue(); } } diff --git a/src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java b/src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java index 15a081f0d..a3a3118dc 100644 --- a/src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java +++ b/src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java @@ -73,7 +73,7 @@ class VaultSettingsJsonAdapter { case "autoLockWhenIdle" -> autoLockWhenIdle = in.nextBoolean(); case "autoLockIdleSeconds" -> autoLockIdleSeconds = in.nextInt(); default -> { - LOG.warn("Unsupported vault setting found in JSON: " + name); + LOG.warn("Unsupported vault setting found in JSON: {}", name); in.skipValue(); } } diff --git a/src/main/java/org/cryptomator/common/vaults/FuseVolume.java b/src/main/java/org/cryptomator/common/vaults/FuseVolume.java index 0321cfa0f..3bc869592 100644 --- a/src/main/java/org/cryptomator/common/vaults/FuseVolume.java +++ b/src/main/java/org/cryptomator/common/vaults/FuseVolume.java @@ -13,8 +13,6 @@ import org.cryptomator.frontend.fuse.mount.FuseMountFactory; import org.cryptomator.frontend.fuse.mount.FuseNotSupportedException; import org.cryptomator.frontend.fuse.mount.Mount; import org.cryptomator.frontend.fuse.mount.Mounter; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; import javax.inject.Inject; import javax.inject.Named; @@ -26,7 +24,6 @@ import java.util.regex.Pattern; public class FuseVolume extends AbstractVolume { - private static final Logger LOG = LoggerFactory.getLogger(FuseVolume.class); private static final Pattern NON_WHITESPACE_OR_QUOTED = Pattern.compile("[^\\s\"']+|\"([^\"]*)\"|'([^']*)'"); // Thanks to https://stackoverflow.com/a/366532 private final VaultSettings vaultSettings; diff --git a/src/main/java/org/cryptomator/ui/controls/SecurePasswordField.java b/src/main/java/org/cryptomator/ui/controls/SecurePasswordField.java index 66df79394..a7ec9df6a 100644 --- a/src/main/java/org/cryptomator/ui/controls/SecurePasswordField.java +++ b/src/main/java/org/cryptomator/ui/controls/SecurePasswordField.java @@ -71,9 +71,11 @@ public class SecurePasswordField extends TextField { } public void cut() { + //not implemented by design } public void copy() { + //not implemented by design } public Object queryAccessibleAttribute(AccessibleAttribute attribute, Object... parameters) { diff --git a/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java b/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java index dbe858a55..adb9a961b 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java @@ -69,11 +69,15 @@ public class VaultListController implements FxController { } }); vaultList.addEventFilter(MouseEvent.MOUSE_RELEASED, this::deselect); + + //don't show context menu when no vault selected vaultList.addEventFilter(ContextMenuEvent.CONTEXT_MENU_REQUESTED, request -> { if (selectedVault.get() == null) { request.consume(); } }); + + //show removeVaultDialog on certain key press vaultList.addEventFilter(KeyEvent.KEY_PRESSED, keyEvent -> { if (keyEvent.getCode() == KeyCode.DELETE) { pressedShortcutToRemoveVault(); diff --git a/src/main/java/org/cryptomator/ui/migration/MigrationStartController.java b/src/main/java/org/cryptomator/ui/migration/MigrationStartController.java index 27ad96d26..00d9364f7 100644 --- a/src/main/java/org/cryptomator/ui/migration/MigrationStartController.java +++ b/src/main/java/org/cryptomator/ui/migration/MigrationStartController.java @@ -25,9 +25,6 @@ public class MigrationStartController implements FxController { this.runMigrationScene = runMigrationScene; } - public void initialize() { - } - @FXML public void cancel() { window.close(); From 8290df9ea685bb88644af185a6f5ce4430bfb7b7 Mon Sep 17 00:00:00 2001 From: Ralph Plawetzki Date: Mon, 1 Aug 2022 18:17:41 +0200 Subject: [PATCH 05/24] Pass on CLI parameters for Cryptomator started as an AppImage or installed from PPA Fixes #2301 --- dist/linux/appimage/resources/AppDir/bin/cryptomator.sh | 4 ++-- dist/linux/debian/cryptomator.sh | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/linux/appimage/resources/AppDir/bin/cryptomator.sh b/dist/linux/appimage/resources/AppDir/bin/cryptomator.sh index 39579a122..7aba42a18 100755 --- a/dist/linux/appimage/resources/AppDir/bin/cryptomator.sh +++ b/dist/linux/appimage/resources/AppDir/bin/cryptomator.sh @@ -19,7 +19,7 @@ fi export LD_PRELOAD=lib/app/libjffi.so if [ "$GTK2_PRESENT" -eq 0 ] && [ "$GTK3_PRESENT" -ne 0 ]; then - bin/Cryptomator-gtk2 + bin/Cryptomator-gtk2 $@ else - bin/Cryptomator + bin/Cryptomator $@ fi \ No newline at end of file diff --git a/dist/linux/debian/cryptomator.sh b/dist/linux/debian/cryptomator.sh index b8cea3cfe..0d6453962 100644 --- a/dist/linux/debian/cryptomator.sh +++ b/dist/linux/debian/cryptomator.sh @@ -3,4 +3,4 @@ # fix for https://github.com/cryptomator/cryptomator/issues/1370 export LD_PRELOAD=/usr/lib/x86_64-linux-gnu/jni/libjffi-1.2.so -/usr/lib/cryptomator/bin/cryptomator \ No newline at end of file +/usr/lib/cryptomator/bin/cryptomator $@ \ No newline at end of file From 649e029d4f00f86aa242862efdf6e667141c7258 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Fri, 5 Aug 2022 11:09:49 +0200 Subject: [PATCH 06/24] added cryptomator.integrationsMac.keychainServiceName system property --- .idea/runConfigurations/Cryptomator_macOS.xml | 2 +- .idea/runConfigurations/Cryptomator_macOS_Dev.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.idea/runConfigurations/Cryptomator_macOS.xml b/.idea/runConfigurations/Cryptomator_macOS.xml index bf8c97166..c5e8fd815 100644 --- a/.idea/runConfigurations/Cryptomator_macOS.xml +++ b/.idea/runConfigurations/Cryptomator_macOS.xml @@ -5,7 +5,7 @@