diff --git a/.github/ISSUE_TEMPLATE/bug.md b/.github/ISSUE_TEMPLATE/bug.md index dfabee3e5..4775a0aa2 100644 --- a/.github/ISSUE_TEMPLATE/bug.md +++ b/.github/ISSUE_TEMPLATE/bug.md @@ -5,6 +5,7 @@ labels: type:bug --- + ### Description diff --git a/.github/workflows/triageBugs.yml b/.github/workflows/triageBugs.yml new file mode 100644 index 000000000..f3354fb11 --- /dev/null +++ b/.github/workflows/triageBugs.yml @@ -0,0 +1,25 @@ +name: Bug Report Triage + +on: + issues: + types: [opened] + +jobs: + closeTemplateViolation: + name: Close bug reports that violate the issue template + runs-on: ubuntu-latest + steps: + - if: | + contains(github.event.issue.labels.*.name, 'type:bug') + && ( + !contains(github.event.issue.body, '') + || !contains(github.event.issue.body, '### Description') + ) + name: Close Issue + uses: peter-evans/close-issue@v1 + with: + comment: | + This bug report did ignore our issue template. 😞 + Auto-closing this issue, since it is most likely not useful. + + _This decision was made by a bot. If you think the bot is wrong, let us know and we'll reopen this issue._ \ No newline at end of file diff --git a/main/buildkit/src/main/resources/launcher-linux.sh b/main/buildkit/src/main/resources/launcher-linux.sh index 2322870e8..b64d2c1ce 100644 --- a/main/buildkit/src/main/resources/launcher-linux.sh +++ b/main/buildkit/src/main/resources/launcher-linux.sh @@ -1,4 +1,5 @@ #!/bin/sh +cd $(dirname $0) java \ -cp "libs/*" \ -Dcryptomator.settingsPath="~/.config/Cryptomator/settings.json" \ diff --git a/main/buildkit/src/main/resources/launcher-mac.sh b/main/buildkit/src/main/resources/launcher-mac.sh index 65f8ba10d..2c06efab2 100644 --- a/main/buildkit/src/main/resources/launcher-mac.sh +++ b/main/buildkit/src/main/resources/launcher-mac.sh @@ -1,4 +1,5 @@ #!/bin/sh +cd $(dirname $0) java \ -cp "libs/*" \ -Dcryptomator.settingsPath="~/Library/Application Support/Cryptomator/settings.json" \ diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/DokanyVolume.java b/main/commons/src/main/java/org/cryptomator/common/vaults/DokanyVolume.java index fce231e40..028c86f09 100644 --- a/main/commons/src/main/java/org/cryptomator/common/vaults/DokanyVolume.java +++ b/main/commons/src/main/java/org/cryptomator/common/vaults/DokanyVolume.java @@ -3,6 +3,7 @@ package org.cryptomator.common.vaults; import org.cryptomator.common.mountpoint.InvalidMountPointException; import org.cryptomator.common.mountpoint.MountPointChooser; import org.cryptomator.common.settings.VaultSettings; +import org.cryptomator.common.settings.VolumeImpl; import org.cryptomator.cryptofs.CryptoFileSystem; import org.cryptomator.frontend.dokany.Mount; import org.cryptomator.frontend.dokany.MountFactory; @@ -33,6 +34,11 @@ public class DokanyVolume extends AbstractVolume { this.mountFactory = new MountFactory(executorService); } + @Override + public VolumeImpl getImplementationType() { + return VolumeImpl.DOKANY; + } + @Override public void mount(CryptoFileSystem fs, String mountFlags) throws InvalidMountPointException, VolumeException { this.mountPoint = determineMountPoint(); diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/FuseVolume.java b/main/commons/src/main/java/org/cryptomator/common/vaults/FuseVolume.java index 895e2100a..76a83983b 100644 --- a/main/commons/src/main/java/org/cryptomator/common/vaults/FuseVolume.java +++ b/main/commons/src/main/java/org/cryptomator/common/vaults/FuseVolume.java @@ -4,6 +4,7 @@ import com.google.common.base.Splitter; import org.apache.commons.lang3.SystemUtils; import org.cryptomator.common.mountpoint.InvalidMountPointException; import org.cryptomator.common.mountpoint.MountPointChooser; +import org.cryptomator.common.settings.VolumeImpl; import org.cryptomator.cryptofs.CryptoFileSystem; import org.cryptomator.frontend.fuse.mount.CommandFailedException; import org.cryptomator.frontend.fuse.mount.EnvironmentVariables; @@ -95,6 +96,11 @@ public class FuseVolume extends AbstractVolume { return FuseVolume.isSupportedStatic(); } + @Override + public VolumeImpl getImplementationType() { + return VolumeImpl.FUSE; + } + @Override public MountPointRequirement getMountPointRequirement() { return SystemUtils.IS_OS_WINDOWS ? MountPointRequirement.PARENT_NO_MOUNT_POINT : MountPointRequirement.EMPTY_MOUNT_POINT; diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/Volume.java b/main/commons/src/main/java/org/cryptomator/common/vaults/Volume.java index 54e28f028..58fce712a 100644 --- a/main/commons/src/main/java/org/cryptomator/common/vaults/Volume.java +++ b/main/commons/src/main/java/org/cryptomator/common/vaults/Volume.java @@ -21,6 +21,12 @@ public interface Volume { */ boolean isSupported(); + /** + * Gets the coresponding enum type of the {@link VolumeImpl volume implementation ("VolumeImpl")} that is implemented by this Volume. + * @return the type of implementation as defined by the {@link VolumeImpl VolumeImpl enum} + */ + VolumeImpl getImplementationType(); + /** * @param fs * @throws IOException diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/WebDavVolume.java b/main/commons/src/main/java/org/cryptomator/common/vaults/WebDavVolume.java index 6f343d000..bf42e353f 100644 --- a/main/commons/src/main/java/org/cryptomator/common/vaults/WebDavVolume.java +++ b/main/commons/src/main/java/org/cryptomator/common/vaults/WebDavVolume.java @@ -3,6 +3,7 @@ package org.cryptomator.common.vaults; import org.cryptomator.common.settings.Settings; import org.cryptomator.common.settings.VaultSettings; +import org.cryptomator.common.settings.VolumeImpl; import org.cryptomator.cryptofs.CryptoFileSystem; import org.cryptomator.frontend.webdav.WebDavServer; import org.cryptomator.frontend.webdav.mount.MountParams; @@ -131,6 +132,11 @@ public class WebDavVolume implements Volume { return WebDavVolume.isSupportedStatic(); } + @Override + public VolumeImpl getImplementationType() { + return VolumeImpl.WEBDAV; + } + @Override public boolean supportsForcedUnmount() { return mount != null && mount.forced().isPresent(); diff --git a/main/ui/src/main/resources/css/dark_theme.css b/main/ui/src/main/resources/css/dark_theme.css index b6ab94b9b..c96527374 100644 --- a/main/ui/src/main/resources/css/dark_theme.css +++ b/main/ui/src/main/resources/css/dark_theme.css @@ -390,6 +390,17 @@ -fx-background-color: MUTED_BG; } + +/* Note: These values below are kinda random such that it looks ok. I'm pretty sure there is room for improvement. Additionally, fx-text-fill does not work*/ +.badge-debug { + -fx-font-family: 'Open Sans Bold'; + -fx-font-size: 1.0em; + -fx-background-radius: 8px; + -fx-padding: 0.3em 0.55em 0.3em 0.55em; + -fx-background-color: RED_5; + -fx-background-radius: 2em; +} + /******************************************************************************* * * * Password Strength Indicator * diff --git a/main/ui/src/main/resources/css/light_theme.css b/main/ui/src/main/resources/css/light_theme.css index b650b6e17..c16fbe1a6 100644 --- a/main/ui/src/main/resources/css/light_theme.css +++ b/main/ui/src/main/resources/css/light_theme.css @@ -389,6 +389,16 @@ -fx-background-color: MUTED_BG; } +/* Note: These values below are kinda random such that it looks ok. I'm pretty sure there is room for improvement. Additionally, fx-text-fill does not work*/ +.badge-debug { + -fx-font-family: 'Open Sans Bold'; + -fx-font-size: 1.0em; + -fx-background-radius: 8px; + -fx-padding: 0.3em 0.55em 0.3em 0.55em; + -fx-background-color: RED_5; + -fx-background-radius: 2em; +} + /******************************************************************************* * * * Password Strength Indicator * diff --git a/main/ui/src/main/resources/fxml/main_window_title.fxml b/main/ui/src/main/resources/fxml/main_window_title.fxml index 031e48b07..54ee8b238 100644 --- a/main/ui/src/main/resources/fxml/main_window_title.fxml +++ b/main/ui/src/main/resources/fxml/main_window_title.fxml @@ -1,5 +1,6 @@ + @@ -20,7 +21,17 @@