Compare commits

...

1287 Commits

Author SHA1 Message Date
Armin Schrenk
5d521c3f78 check links in release check 2025-02-03 17:18:11 +01:00
Armin Schrenk
737d7e6317 first draft 2025-02-03 16:52:09 +01:00
Armin Schrenk
cd830f27a0 update IDE file 2025-02-03 12:54:34 +01:00
Armin Schrenk
3f75018369 fix link in README 2025-02-03 12:54:25 +01:00
Armin Schrenk
270a4c594d [skip ci] Merge branch 'main' into develop 2025-02-03 11:34:16 +01:00
Armin Schrenk
a5fdc5755b Merge branch 'release/1.15.0' 2025-02-03 11:16:18 +01:00
Armin Schrenk
0a5a554714 finalize 1.15.0 2025-02-03 11:15:59 +01:00
Armin Schrenk
976f22c27a Merge branch 'develop' into release/1.15.0 2025-02-03 11:12:20 +01:00
Cryptobot
8267574697 New Crowdin updates (#3697)
New translations strings.properties

Afrikaans; Arabic; Bashkir; Belarusian; Bengali; Bosnian; Bulgarian; Catalan; Chinese Simplified; Chinese Traditional; Chinese Traditional, Hong Kong; Croatian; Czech; Danish; Dutch; Filipino; Finnish; French; Galician; German; Greek; Hebrew; Hindi; Hungarian; Indonesian; Italian; Japanese; Korean; Latvian; Macedonian; Marathi; Norwegian; Norwegian Bokmal; Norwegian Nynorsk; Persian; Polish; Portuguese; Portuguese, Brazilian; Punjabi; Romanian; Russian; Serbian (Cyrillic); Serbian (Latin); Sinhala; Slovak; Slovenian; Spanish; Swahili, Tanzania; Swedish; Tamil; Telugu; Thai; Turkish; Ukrainian; Urdu (Pakistan); Uyghur; Vietnamese; 

[ci skip]
2025-02-03 10:56:49 +01:00
mindmonk
9077c964b3 Fix VaultListCell Padding in Compact Mode (#3709) 2025-02-03 10:50:06 +01:00
Armin Schrenk
f80467a3a4 Fixes #3705 2025-01-28 15:09:52 +01:00
Julian Raufelder
8c462c4cb7 RIP Twitter
[ci skip]
2025-01-23 12:21:54 +01:00
Armin Schrenk
d7dd24b94e linting 2025-01-22 16:26:25 +01:00
Armin Schrenk
aee8844558 Fixes #3698 2025-01-22 16:25:56 +01:00
Armin Schrenk
c536149c62 specify JDK 23 also in debian control file
References #3641

(cherry picked from commit ca1ae8181b)
2025-01-22 14:12:56 +01:00
Armin Schrenk
ca1ae8181b specify JDK 23 also in debian control file
References #3641
2025-01-22 14:11:19 +01:00
Armin Schrenk
2b19c9757b prepare 1.15.0 2025-01-22 12:06:00 +01:00
Armin Schrenk
d6871e3d82 clean up pom 2025-01-22 11:58:09 +01:00
Cryptobot
0432a64537 New Crowdin updates (#3606)
New translations strings.properties

Arabic; Bashkir; Belarusian; Bengali; Bosnian; Bulgarian; Catalan; Chinese Simplified; Chinese Traditional; Chinese Traditional, Hong Kong; Croatian; Czech; Danish; Dutch; Filipino; Finnish; French; Galician; German; Greek; Hebrew; Hindi; Hungarian; Indonesian; Italian; Japanese; Korean; Latvian; Norwegian Bokmal; Norwegian Nynorsk; Persian; Polish; Portuguese; Portuguese, Brazilian; Punjabi; Romanian; Russian; Serbian (Cyrillic); Serbian (Latin); Slovak; Slovenian; Spanish; Swahili, Tanzania; Swedish; Tamil; Telugu; Thai; Turkish; Ukrainian; Uyghur; Vietnamese; 

[ci skip]
2025-01-22 11:10:17 +01:00
mindmonk
06988b06c7 Feature: Retry if Read-only (#3695)
Closes #3261, closes #2085.

Co-authored-by: Armin Schrenk <armin.schrenk@skymatic.de>
2025-01-22 11:02:48 +01:00
dependabot[bot]
9b72eb8219 Bump the java-production-dependencies group across 1 directory with 8 updates (#3694) 2025-01-21 16:06:50 +00:00
Armin Schrenk
ea188f6176 for testing add mockito as javaagent 2025-01-21 15:53:49 +01:00
dependabot[bot]
cf67d022c8 Bump the java-test-dependencies group across 1 directory with 2 updates (#3671) 2025-01-21 13:36:52 +00:00
dependabot[bot]
7ba6e12799 Bump the maven-build-plugins group across 1 directory with 3 updates (#3688) 2025-01-21 13:35:13 +00:00
Armin Schrenk
b512518ccc update README [skip ci] 2025-01-21 11:46:30 +01:00
Armin Schrenk
93dfd35627 update Windows build scripts 2025-01-21 11:46:15 +01:00
Armin Schrenk
50b92f9510 fix URL in README [skip ci] 2025-01-21 11:43:38 +01:00
Armin Schrenk
7cca8922d8 Closes #3623 2025-01-21 11:39:14 +01:00
Armin Schrenk
c00889b1c4 update to javafx 23.0.1 (#3691) 2025-01-21 11:32:48 +01:00
Armin Schrenk
b6224f355d Fixes #3693 2025-01-21 10:44:28 +01:00
Armin Schrenk
9a8f96d432 remove unused dll from windows build [skip ci] 2025-01-20 19:18:08 +01:00
Sebastian Stenzel
3cc199227b Include AppStream metadata in AppImage (#3687) 2025-01-20 17:59:59 +01:00
Sebastian Stenzel
3d0647bce3 fix appimage build (#3686)
* remove unsupported parameter `--sign-args`

apparently no longer wanted, despite being documented, see https://github.com/AppImage/appimagetool/issues/39

* add usr/share/metainfo/Cryptomator.appdata.xml

* appimagetool fails when adding AppStream metadata

see https://github.com/AppImage/AppImageKit/issues/603
2025-01-18 12:18:25 +01:00
DrSheppard
192f35a9dd resolve #3055 (again) (#3685)
* use new build tool with runtime support instead old build tool for appimage

* Update workflow file to use newer appimagetool
2025-01-18 11:09:42 +01:00
Armin Schrenk
f2b4c9a35b Update integrations-linux to 1.5.2
Fixes #3611
2025-01-17 18:05:10 +01:00
Armin Schrenk
3b8fec4c5a Feature: Use system certificate stores/custom pkcs12 file (#3675)
* for Windows use Windows certificate
* for macOS use macOS Keychain
* for Linux use a custom PKCS12 file under /etc/cryptomator/certs.p12
2025-01-17 15:12:38 +01:00
DrSheppard
60b74a018d AppImage: Use new build tool with runtime2 support (#3586)
Closes #3055
2025-01-17 13:49:11 +01:00
Armin Schrenk
be69e04f51 fix build due to breaking changes in cryptofs 2025-01-17 13:28:14 +01:00
Armin Schrenk
194f6009df Update cryptofs to version 2.7.2 2025-01-17 13:22:45 +01:00
Sebastian Stenzel
910a2eace8 build AppImage on ubuntu-24.04-arm (#3681) 2025-01-17 09:08:02 +01:00
Jan-Peter Klein
3c95618eec changed dokany dialog icon to EXCLAMATION 2025-01-15 16:16:40 +01:00
Armin Schrenk
fc709eb700 use caffeine for building a cache 2025-01-14 19:16:46 +01:00
Julian Raufelder
a6c60ac5d0 Hello 2025 🎉 2025-01-14 16:34:32 +01:00
mindmonk
b88b9c8f92 Merge pull request #3676 from cryptomator/feature/change-zulu-to-temurin
Changed JAVA_DIST zulu to temurin
2025-01-13 13:25:55 +01:00
dependabot[bot]
2b8cd36b7b Bump ch.qos.logback:logback-core from 1.5.12 to 1.5.13 (#3655)
Bumps [ch.qos.logback:logback-core](https://github.com/qos-ch/logback) from 1.5.12 to 1.5.13.
- [Commits](https://github.com/qos-ch/logback/compare/v_1.5.12...v_1.5.13)

---
updated-dependencies:
- dependency-name: ch.qos.logback:logback-core
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-01-12 15:27:30 +01:00
Jan-Peter Klein
3d23deb744 changed JAVA_DIST zulu to temurin 2025-01-12 14:42:04 +01:00
mindmonk
de3b2715c7 Merge pull request #3618 from cryptomator/feature/dialog-builder
Feature: SimpleDialogBuilder
2025-01-10 15:17:24 +01:00
Jan-Peter Klein
f3d8bd359d Merge branch 'develop' into feature/dialog-builder 2025-01-10 15:05:07 +01:00
Armin Schrenk
d7d6e46b2a Ensure JDK 23 is used in building mac dmg x64 2025-01-10 14:33:34 +01:00
Jan-Peter Klein
501f682d68 annotate Dialogs with @Singleton
removed redundant providers
2025-01-10 11:58:19 +01:00
Jan-Peter Klein
7cbf1e10e5 refactor dialogs with injected resourceBundle for builder creation 2025-01-09 17:39:02 +01:00
Jan-Peter Klein
fb00972bc1 improve naming 2025-01-09 15:31:07 +01:00
Jan-Peter Klein
387fb28c65 remove unused LOGs and improved var naming 2025-01-09 15:22:25 +01:00
Jan-Peter Klein
40fbfd10d1 moved all simple dialogs to Dialogs 2025-01-08 19:17:20 +01:00
Jan-Peter Klein
e5e4695cd6 replaced setters and extended the constructor of SimpleDialogController 2025-01-08 17:50:54 +01:00
Armin Schrenk
4a0c8ae80e fix check-jdk-update workflow [ci skip] 2025-01-08 17:09:53 +01:00
Armin Schrenk
384ca8eb2a for testing 2025-01-08 16:02:00 +01:00
Jan-Peter Klein
59f360bde7 improve formatting, rename and simplify vars 2025-01-08 15:07:04 +01:00
Jan-Peter Klein
8830e0f5fb Move repeated 'remove vault' dialog to Dialogs class 2025-01-07 15:19:06 +01:00
Jan-Peter Klein
7a391a2825 reformat code 2025-01-07 14:47:20 +01:00
Jan-Peter Klein
a1941911ef renamed to simple Dialog 2025-01-07 14:45:09 +01:00
Jan-Peter Klein
a0667ff361 add validation for required parameters and changed exception message 2025-01-07 14:39:22 +01:00
Armin Schrenk
cbc41d535d Merge pull request #3641 from cryptomator/feature/jdk23
Feature: JDK 23
2024-12-11 15:42:09 +01:00
Armin Schrenk
f51780dcb5 also update deb rules file [ci skip] 2024-12-10 18:03:07 +01:00
Armin Schrenk
c055488df7 update github workflows 2024-12-10 17:47:48 +01:00
Armin Schrenk
b15c376e59 fix and update JDK check workflow 2024-12-10 17:42:55 +01:00
Armin Schrenk
fdf03d2fdc enable JDK23 for IDE 2024-12-10 17:15:34 +01:00
Armin Schrenk
437350af9f reduce api diff 2024-12-10 17:14:09 +01:00
Julian Raufelder
5114e2ad22 Merge pull request #3640 from lamtrinhdev/develop
Correct the link of issues list for both iOS and Android.
2024-12-09 14:09:03 +01:00
LamTrinh.Dev
b3b4f61c42 Correct the link of issues list for both iOS and Android. 2024-12-09 19:13:44 +07:00
Armin Schrenk
fa16556af1 do not allow empty display name for vault
Fixes #3633
2024-12-02 11:02:11 +01:00
Armin Schrenk
de766c2653 Update suppression.xml 2024-12-02 09:40:40 +01:00
Armin Schrenk
dcc27efe5c remove unused option in app-image creation [skip ci]
references 84732337ca
2024-11-28 17:26:10 +01:00
Armin Schrenk
78ceb604f9 only use macos intel runner on releases 2024-11-27 16:47:42 +01:00
Armin Schrenk
7bdcdcba3d Update suppression.xml 2024-11-26 15:49:43 +01:00
Jan-Peter Klein
e929d41d67 reordered and renamed to org.ui.dialogs.SimpleDialog... 2024-11-25 19:23:48 +01:00
Jan-Peter Klein
600aca083c refactor CustomDialog.Builder provisioning to use Dagger's Provider 2024-11-25 15:09:29 +01:00
Jan-Peter Klein
02c20c01ee improve exception handling 2024-11-21 16:55:03 +01:00
mindmonk
50cfdbbc0b Merge pull request #3617 from cryptomator/feature/ui-cleanup
Enhance UI Components, Fix Issues, and Improve Visual Consistency
2024-11-20 12:21:31 +01:00
Gutyina Gergő
38c556af0b Update jdk version to 23 2024-11-19 23:31:24 +01:00
Gutyina Gergő
0b9d777109 Remove string templates 2024-11-19 23:31:24 +01:00
Armin Schrenk
eb3c1f3c7a Merge branch 'main' into develop
# Conflicts:
#	pom.xml
2024-11-19 10:01:00 +01:00
Armin Schrenk
311c490377 Merge branch 'hotfix/1.14.2' 2024-11-19 09:59:27 +01:00
Armin Schrenk
39ed00ff6f Use correct version 2024-11-19 09:57:56 +01:00
Armin Schrenk
28338d2dcf use stable version 2024-11-19 09:50:46 +01:00
Jan-Peter Klein
bba5d11bdc small fixes 2024-11-18 18:07:36 +01:00
mindmonk
36ef191874 Merge branch 'develop' into feature/dialog-builder 2024-11-18 17:58:59 +01:00
Jan-Peter Klein
3e4c6c1b61 del old logo file 2024-11-18 16:59:13 +01:00
Jan-Peter Klein
c9d0224814 fix logo scaling 2024-11-18 16:48:41 +01:00
Armin Schrenk
8aed6045a0 Feature: Show update reminder every 14 days (#3597)
fixes #3596

only show update reminder every 14 days
2024-11-15 18:14:57 +01:00
Jan-Peter Klein
8440705436 set resizable false 2024-11-15 15:49:11 +01:00
Jan-Peter Klein
af667b10cf code cleanup 2024-11-14 18:09:23 +01:00
Jan-Peter Klein
1b522fe9a0 undo add uiDesigner 2024-11-14 17:20:08 +01:00
Jan-Peter Klein
cb3c46744e removed replaced files 2024-11-14 16:38:44 +01:00
Jan-Peter Klein
c471289fb5 changed resolveText() to throw Exceptions
removed fxApplication scope
2024-11-14 16:19:50 +01:00
Jan-Peter Klein
18ca563865 custom dialog init 2024-11-14 11:35:23 +01:00
Jan-Peter Klein
2430526ee7 changed to class Builder
used FxmlLoaderFactory.forController
set title and other string values by key
2024-11-06 16:35:19 +01:00
Armin Schrenk
c9bb0235e2 use macos 15 for building [ci skip] 2024-11-05 16:18:32 +01:00
Armin Schrenk
2f8236e9db Update release template [ci skip] 2024-11-05 12:10:57 +01:00
Armin Schrenk
e4e757606d update dependencies for patch release
Fixes #3574 and #3499. Closes #3569
2024-11-05 11:11:32 +01:00
Cryptobot
6fcb796177 New Crowdin updates (#3559)
New translations strings.properties

Afrikaans; Arabic; Bashkir; Belarusian; Bengali; Bosnian; Bulgarian; Catalan; Chinese Simplified; Chinese Traditional; Chinese Traditional, Hong Kong; Croatian; Czech; Danish; Dutch; English; Filipino; Finnish; French; Galician; German; Greek; Hebrew; Hindi; Hungarian; Indonesian; Italian; Japanese; Korean; Latvian; Macedonian; Marathi; Norwegian; Norwegian Bokmal; Norwegian Nynorsk; Persian; Polish; Portuguese; Portuguese, Brazilian; Punjabi; Romanian; Russian; Serbian (Cyrillic); Serbian (Latin); Sinhala; Slovak; Slovenian; Spanish; Swahili, Tanzania; Swedish; Tamil; Telugu; Thai; Turkish; Ukrainian; Urdu (Pakistan); Uyghur; Vietnamese;

[ci skip]

(cherry picked from commit 0fb0bc8e1d)
2024-11-04 17:59:02 +01:00
Cryptobot
4d6b035c29 New Crowdin updates (#3553)
New translations strings.properties

Afrikaans; English; Norwegian; Thai; Uyghur;

[ci skip]

(cherry picked from commit 2939702842)
2024-11-04 17:57:43 +01:00
dependabot[bot]
68c206a4fa Bump the java-test-dependencies group across 1 directory with 2 updates (#3591) 2024-11-04 15:49:48 +00:00
dependabot[bot]
d258171131 Bump the maven-build-plugins group across 1 directory with 3 updates (#3598) 2024-11-04 15:47:08 +00:00
dependabot[bot]
adaf9ef5ce Bump the java-production-dependencies group across 1 directory with 8 updates (#3603) 2024-11-04 15:43:21 +00:00
Tobias Hagemann
22f299f67c Update README.md
[ci skip]
2024-11-04 15:13:40 +01:00
Cryptobot
0fb0bc8e1d New Crowdin updates (#3559)
New translations strings.properties

Afrikaans; Arabic; Bashkir; Belarusian; Bengali; Bosnian; Bulgarian; Catalan; Chinese Simplified; Chinese Traditional; Chinese Traditional, Hong Kong; Croatian; Czech; Danish; Dutch; English; Filipino; Finnish; French; Galician; German; Greek; Hebrew; Hindi; Hungarian; Indonesian; Italian; Japanese; Korean; Latvian; Macedonian; Marathi; Norwegian; Norwegian Bokmal; Norwegian Nynorsk; Persian; Polish; Portuguese; Portuguese, Brazilian; Punjabi; Romanian; Russian; Serbian (Cyrillic); Serbian (Latin); Sinhala; Slovak; Slovenian; Spanish; Swahili, Tanzania; Swedish; Tamil; Telugu; Thai; Turkish; Ukrainian; Urdu (Pakistan); Uyghur; Vietnamese; 

[ci skip]
2024-11-04 15:05:37 +01:00
Armin Schrenk
da666410fc update dependabot config 2024-11-04 14:56:02 +01:00
Armin Schrenk
ea007f3cfe fix IDE issues 2024-10-29 09:46:56 +01:00
Armin Schrenk
1c868a644f remove unused/obsolete static variable 2024-10-29 09:44:50 +01:00
Jan-Peter Klein
5ff6a8c258 used dialogBuilder for dokankySupportEndDialog 2024-10-23 19:48:55 +02:00
Jan-Peter Klein
62d7b7a0c0 replaced RemoveVaultComponent.Builder with CustomDialogBuilder in all places 2024-10-22 18:53:06 +02:00
Jan-Peter Klein
7fcbb57ab1 used builder pattern 2024-10-22 17:07:42 +02:00
Jan-Peter Klein
8e25dcd396 implement CustomDialogBuilder 2024-10-22 14:56:56 +02:00
mindmonk
a9f1e5b761 Merge pull request #3550 from cryptomator/feature/gdrive-presets
Feature: Refined GoogleDrive Presets - List Only "My Drive" Root Folders
2024-10-18 13:05:50 +02:00
Jan-Peter Klein
f642149723 used List.of() for FALLBACK_LOCATIONS 2024-10-16 18:00:47 +02:00
Jan-Peter Klein
4b359d98cb removed unnecessary stream support 2024-10-10 17:39:53 +02:00
Jan-Peter Klein
764fccf0b5 pr mentioned changes 2024-10-10 17:34:23 +02:00
Jan-Peter Klein
81d1059489 added generic 'Remove' string property 2024-10-09 17:35:33 +02:00
Jan-Peter Klein
a2574a5883 unified spacing 2024-10-09 16:59:13 +02:00
Jan-Peter Klein
118a1411d8 fixed empty vaultList contextMenu 2024-10-09 16:55:56 +02:00
Jan-Peter Klein
44310cbd0e set missing min width and height 2024-10-09 16:50:26 +02:00
Jan-Peter Klein
2dce7b6f71 removed drivePath param 2024-10-09 14:50:05 +02:00
Jan-Peter Klein
98db82d137 contains instead of stream 2024-10-09 14:48:40 +02:00
Jan-Peter Klein
fd55656261 filtered by 'My Drive' and translations 2024-10-08 20:08:37 +02:00
mindmonk
978dec64ee Merge pull request #3549 from cryptomator/feature/improve-preferences-contribute-tab
Feature: Optimize 'Support us' Tab in Preferences - Add Supporter Certificate Removal & Improved Layout
2024-10-04 12:27:13 +02:00
mindmonk
8d7bf3a370 Merge pull request #3467 from cryptomator/feature/redesign-mainwindow
Feature: Redesigned MainWindow
2024-10-04 12:13:09 +02:00
Jan-Peter Klein
1cea7bcffc set bigger minHeight 2024-10-02 17:03:52 +02:00
Jan-Peter Klein
16e77d4b9b add clear to setStyleClass 2024-10-02 16:56:39 +02:00
Jan-Peter Klein
f22111e36f revert unrelated changes 2024-10-02 16:46:41 +02:00
Jan-Peter Klein
c5d4c9a9c1 removed duplicate code 2024-10-02 14:20:09 +02:00
mindmonk
4bc9b1d60c Merge pull request #3474 from cryptomator/feature/notificationbar
Feature: Introduce NotificationBars for Update is available, Support Cryptomator, and DEBUG MODE
2024-10-02 11:05:58 +02:00
mindmonk
7a40a3cb0c Merge branch 'feature/redesign-mainwindow' into feature/notificationbar 2024-10-02 11:05:39 +02:00
mindmonk
ad555ece8e Merge pull request #3554 from cryptomator/feature/condensed-vault-list
Feature: Add Option to Enable Compact Vault List View
2024-10-02 10:55:51 +02:00
Jan-Peter Klein
2d96d2e5c6 optimised cellSize binding and removed unused imports 2024-10-01 18:56:21 +02:00
Armin Schrenk
0a968b60aa Remove Guava dependency and update Dagger 2024-10-01 17:19:31 +02:00
Jan-Peter Klein
3b4f82092d undo string removal 2024-10-01 13:31:43 +02:00
Jan-Peter Klein
de16647d00 reformat code 2024-09-26 11:24:57 +02:00
Ahmatjan
03403e53bc translation: Add Uyghur Language Translation (#3557) 2024-09-26 11:12:26 +02:00
Cryptobot
2939702842 New Crowdin updates (#3553)
New translations strings.properties

Afrikaans; English; Norwegian; Thai; Uyghur;

[ci skip]
2024-09-26 11:10:21 +02:00
Jan-Peter Klein
b3d09a4cae changed apostroph 2024-09-26 10:41:17 +02:00
Jan-Peter Klein
73c0af9749 changed wording and removed unnecessary method calls 2024-09-25 16:20:19 +02:00
Jan-Peter Klein
53c7e031a3 changes mentioned by infeo 2024-09-24 16:14:52 +02:00
Jan-Peter Klein
1e280f2c97 removed FXML loader, elements created programmatically in NotificationBar 2024-09-24 16:05:31 +02:00
Jan-Peter Klein
ce82593fc6 simplified bindings 2024-09-24 15:48:15 +02:00
Jan-Peter Klein
c2c3d778d1 added @CheckAvailability
changed exception handling
2024-09-24 15:29:13 +02:00
Jan-Peter Klein
7771181e15 changed wording to compact 2024-09-23 14:21:55 +02:00
Jan-Peter Klein
1a39333b4c cr mentioned changes 2024-09-23 14:02:42 +02:00
Armin Schrenk
85472db00a Merge branch 'main' into develop 2024-09-18 13:25:15 +02:00
Armin Schrenk
d6a020994e Merge branch 'hotfix/1.14.1' 2024-09-18 13:17:25 +02:00
Armin Schrenk
518f75be32 fixes #3538 2024-09-18 13:16:45 +02:00
Armin Schrenk
28c7dbad69 prepare 1.14.1 2024-09-18 13:16:16 +02:00
Jan-Peter Klein
31e9f3a025 Merge branch 'feature/redesign-mainwindow' into feature/condensed-vault-list 2024-09-17 18:06:14 +02:00
Jan-Peter Klein
a03d5af144 add tilter to display only folders with write permissions 2024-09-17 16:49:31 +02:00
Armin Schrenk
50a654d5af [ci skip] use recommended winget-releaser version 2024-09-17 11:37:27 +02:00
Armin Schrenk
1954f31910 [ci skip] Merge branch 'main' into develop 2024-09-17 10:04:32 +02:00
Armin Schrenk
68bf441fdd Merge branch 'release/1.14.0' 2024-09-17 10:03:02 +02:00
Armin Schrenk
a606bcb81e finalize 1.14.0 2024-09-17 09:59:22 +02:00
Armin Schrenk
fe93e51ffa Merge branch 'develop' into release/1.14.0 2024-09-17 09:51:23 +02:00
Cryptobot
f2949aae63 New Crowdin updates (#3520)
New translations strings.properties

Chinese Simplified; Chinese Traditional; Filipino; German; Punjabi; Romanian; Russian; Slovenian; Turkish; Ukrainian; 

[ci skip]
2024-09-17 09:49:55 +02:00
Armin Schrenk
80e101456b adjust keychainManager to new API 2024-09-16 17:40:49 +02:00
Armin Schrenk
2f311c1dfe use final releases 2024-09-16 17:29:24 +02:00
Jan-Peter Klein
c5cfe4d1b3 removed unnecessary properties 2024-09-16 15:40:52 +02:00
Jan-Peter Klein
a09b55c81b triggered updatechecker in constructor 2024-09-16 15:39:14 +02:00
Jan-Peter Klein
32f266c721 removed unused vbox in controller 2024-09-16 15:26:45 +02:00
Jan-Peter Klein
3adffad087 removed ALT+F4 shortcut, it is already registered by default 2024-09-16 14:55:51 +02:00
Jan-Peter Klein
84e3cf0762 removed green border and fixed margin for windows 2024-09-16 14:48:06 +02:00
Jan-Peter Klein
1292936904 clean up 2024-09-13 11:49:05 +02:00
Jan-Peter Klein
7a913c89c9 condensed vault list implemented 2024-09-12 11:36:14 +02:00
Jan-Peter Klein
4c4816bdab fixed missing import 2024-09-11 15:10:23 +02:00
Jan-Peter Klein
f9bfd5d1b1 set stage owner 2024-09-11 15:06:27 +02:00
Jan-Peter Klein
00e1e3654e implemented remove cert dialog 2024-09-10 18:01:09 +02:00
Tobias Hagemann
8aaee3710a Update README.md 2024-09-10 11:57:03 +02:00
Jan-Peter Klein
1946fc6c0e filter hidden directories 2024-09-04 15:05:24 +02:00
Jan-Peter Klein
8fb95b67d9 changes mentioned in pull #3270 2024-09-04 14:28:42 +02:00
Jan-Peter Klein
e6890e8fa5 Merge branch 'develop' of https://github.com/siard-y/cryptomator into feature/gdrive-presets 2024-09-04 13:56:47 +02:00
Jan-Peter Klein
7cdb2025dc improved supporter cert ui with cert stemp, donate/sponsors link buttons and remove button with dialog 2024-09-04 13:23:36 +02:00
Armin Schrenk
414d81dc06 Update mac-dmg.yml
Switch to macOS-12 due to errors
2024-08-20 18:17:08 +02:00
Armin Schrenk
b450ab028d Update mac-dmg.yml
macos-11 is no more
2024-08-20 17:42:32 +02:00
Armin Schrenk
5a51e53603 Merge branch 'develop' into release/1.14.0 2024-08-20 11:18:22 +02:00
Armin Schrenk
d65beb632d Fixes #3519 2024-08-20 11:10:26 +02:00
Armin Schrenk
2b03477d31 prepare 1.14.0 2024-08-19 16:36:31 +02:00
Cryptobot
f25e23da82 New Crowdin updates (#3463)
New translations strings.properties

Arabic; Chinese Simplified; Chinese Traditional; Dutch; Filipino; French; German; Greek; Italian; Japanese; Korean; Persian; Polish; Portuguese; Portuguese, Brazilian; Punjabi; Russian; Slovak; Spanish; Swedish; Turkish; Urdu (Pakistan); 

[ci skip]
2024-08-19 16:33:41 +02:00
dependabot[bot]
82368e2632 Bump the java-production-dependencies group across 1 directory with 9 updates (#3516) 2024-08-19 14:29:15 +00:00
dependabot[bot]
9057090b56 Bump the maven-build-plugins group across 1 directory with 3 updates (#3513) 2024-08-19 14:18:32 +00:00
dependabot[bot]
357937e0bf Bump the java-test-dependencies group across 1 directory with 2 updates (#3514) 2024-08-19 14:17:07 +00:00
Armin Schrenk
f84a2396eb ignore integrations-api 2.0.0-alpha1 2024-08-19 10:42:58 +02:00
dependabot[bot]
193dcad6e8 Bump the javafx group with 5 updates (#3498)
* Bump javafx from 22.0.1 to 22.0.2
* update build scripts to updated jfx version

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Armin Schrenk <armin.schrenk@skymatic.de>
2024-08-19 10:34:14 +02:00
Armin Schrenk
257f4427b8 catch all methods of adding a vault for #2880 2024-08-19 10:27:13 +02:00
Armin Schrenk
4778ba0770 add autostart for deb artifact 2024-08-16 15:56:58 +02:00
Armin Schrenk
77b908199e Mitigates #2880 (#3512) 2024-08-16 12:59:38 +02:00
Armin Schrenk
d448c42f87 Feature: JDK 22.0.2+9 for release artifacts (#3510)
* update jdks for release artifacts to jdk 22.02+9
2024-08-14 16:40:44 +02:00
Armin Schrenk
b9403222ba add java.compiler module to build scripts
references 93d0fd41a6 and https://github.com/google/dagger/issues/4321
2024-08-13 16:28:09 +02:00
Armin Schrenk
93d0fd41a6 Update cryptofs to 2.7.0-beta1
Closes #2058
2024-08-13 11:59:23 +02:00
Armin Schrenk
067bd4752c prevent leaking of NVD API key into logs 2024-08-09 11:30:16 +02:00
Armin Schrenk
fb4f9fc68f Update integrations-win and -linux for quickAccess service providers 2024-08-09 11:05:02 +02:00
Armin Schrenk
a20667a156 Merge pull request #3494 from cryptomator/feature/quick-access
Feature: Add unlocked vaults to an quick access area
2024-08-07 16:42:53 +02:00
Armin Schrenk
4d47544244 cleanup 2024-08-07 16:32:30 +02:00
Armin Schrenk
d59f149f7c Load quick access service lazy 2024-08-06 15:17:18 +02:00
Armin Schrenk
028f6e7a02 clean up 2024-08-06 15:08:29 +02:00
Armin Schrenk
71e4f98665 hard code default quickaccess service 2024-08-06 12:26:26 +02:00
Tobias Hagemann
d60ced52fe added codesigning jdk files in build.sh for local macos builds to match mac-dmg.yml ci build 2024-07-30 21:14:32 +02:00
Tobias Hagemann
45c7d2b071 added provisioning profile to mac build process with updated entitlements 2024-07-30 18:48:54 +02:00
Ralph Plawetzki
7a789d2eed Fixes #3501 (PR #3502) 2024-07-30 12:27:16 +02:00
Armin Schrenk
cc1e542146 clean up 2024-07-23 16:50:27 +02:00
Armin Schrenk
e4e84d46b6 hide option, if no quick access service is present 2024-07-23 16:50:15 +02:00
Armin Schrenk
61fc53bf9c rename internal method 2024-07-23 16:39:34 +02:00
Tobias Hagemann
f8386a5a99 Update README.md 2024-07-18 15:09:05 +02:00
Armin Schrenk
da7e89fc72 fix windows build script 2024-07-17 16:35:33 +02:00
Armin Schrenk
6b57a0ad9c add translation 2024-07-17 11:34:29 +02:00
Armin Schrenk
f1eb997804 make quickAccessService togglable & selectable in UI 2024-07-16 17:25:47 +02:00
Armin Schrenk
2fe5180721 cleanup 2024-07-16 17:19:52 +02:00
Jan-Peter Klein
958c22bed8 Merge branch 'feature/redesign-mainwindow' in feature/notificationbar 2024-07-16 14:52:50 +02:00
Jan-Peter Klein
6ff640648f Merge branch 'develop' into feature/redesign-mainwindow 2024-07-16 14:48:50 +02:00
Jan-Peter Klein
7b132adfe2 adjust add vault button position for improved UI 2024-07-16 14:31:11 +02:00
Armin Schrenk
2fa88490bd update to integrations-api 1.4.0-beta2
* differ between using quick access and actual impl
* rename properties
2024-07-16 13:36:37 +02:00
Jan-Peter Klein
5f5b5a5426 set preferences window min width and height 2024-07-09 13:48:45 +02:00
Jan-Peter Klein
cb054bb4f5 fix update available check in preference tab selection 2024-07-09 13:46:41 +02:00
Jan-Peter Klein
3497144034 introduced NotificationBar control 2024-07-08 16:42:49 +02:00
dependabot[bot]
b4f9bc62ca Bump the maven-build-plugins group across 1 directory with 3 updates (#3484) 2024-07-08 07:52:56 +00:00
Tobias Hagemann
34bface2d7 Merge pull request #3481 from purejava/fix-#3480 2024-07-07 16:40:40 +02:00
Ralph Plawetzki
70e52b1a31 Fix typo
Closes #3480
2024-07-07 15:41:28 +02:00
Tobias Hagemann
59a2398c4c Update README.md 2024-07-04 11:49:37 +02:00
Jan-Peter Klein
edbeea5502 fixed update check on start and bindings 2024-07-02 15:31:28 +02:00
Jan-Peter Klein
a88e08147d changed background color of pref button 2024-07-02 15:08:07 +02:00
Jan-Peter Klein
8ff06a3efd implement hideable notification bars 2024-07-02 12:43:27 +02:00
Jan-Peter Klein
902c66cf1e removed vbox id and renamed style 2024-07-01 18:19:30 +02:00
Jan-Peter Klein
d58307d1d6 optimize vaultList height update to avoid repeated bindings 2024-07-01 13:09:53 +02:00
Jan-Peter Klein
3e6204a657 remove showMinimizeButton setting 2024-07-01 12:32:50 +02:00
Jan-Peter Klein
e677a0beaa removed MainWindowTitleController and ResizeController and the corresponding fxml 2024-07-01 12:25:48 +02:00
Armin Schrenk
e5003c1783 use quick access service in unlock/lock 2024-06-27 17:47:05 +02:00
Jan-Peter Klein
d379ada100 addded debug, update and support notification bar 2024-06-26 15:13:28 +02:00
Jan-Peter Klein
cb7d0ade47 fixed some SonarCloud mentioned issues 2024-06-26 13:43:21 +02:00
Armin Schrenk
d6fd012f71 fix av whitelisting step in win-exe workflow 2024-06-26 13:28:37 +02:00
Armin Schrenk
d9d8c84230 adjust formatting of metainfo file 2024-06-26 13:23:38 +02:00
Jan-Peter Klein
4d9dc4312d Merge branch 'develop' into feature/redesign-mainwindow 2024-06-26 13:07:53 +02:00
Julian Raufelder
1ad2cc3ee5 Update to JDK 22 2024-06-26 11:57:17 +02:00
Armin Schrenk
2eac09f6be [ci skip] Merge branch 'main' into develop 2024-06-26 10:29:47 +02:00
Armin Schrenk
4114ea6163 Merge branch 'release/1.13.0' 2024-06-26 10:29:15 +02:00
Armin Schrenk
82da9f7a88 finalize release 2024-06-26 10:27:29 +02:00
Armin Schrenk
aa08046c4d Merge branch 'develop' into release/1.13.0 2024-06-21 15:18:39 +02:00
Armin Schrenk
b6d7f63470 [ci skip] also sign binaries from CraC project (dammn zulu jdk) 2024-06-21 15:10:47 +02:00
Armin Schrenk
624d18238c Merge branch 'develop' into release/1.13.0 2024-06-21 14:38:38 +02:00
Armin Schrenk
3bfe2b7a9e fix Windows build 2024-06-21 14:38:17 +02:00
Armin Schrenk
ba79cd0f8c prepare 1.13.0 2024-06-21 11:55:54 +02:00
Armin Schrenk
be63ea1104 Closes #3439 2024-06-21 11:51:49 +02:00
Cryptobot
a3ad2a5677 New Crowdin updates (#3355)
New translations strings.properties

Arabic; Bashkir; Belarusian; Bengali; Bosnian; Bulgarian; Catalan; Chinese Simplified; Chinese Traditional; Chinese Traditional, Hong Kong; Croatian; Czech; Danish; Dutch; Filipino; Finnish; French; Galician; German; Greek; Hebrew; Hindi; Hungarian; Indonesian; Italian; Japanese; Korean; Latvian; Macedonian; Marathi; Norwegian Bokmal; Norwegian Nynorsk; Persian; Polish; Portuguese; Portuguese, Brazilian; Punjabi; Romanian; Russian; Serbian (Cyrillic); Serbian (Latin); Sinhala; Slovak; Slovenian; Spanish; Swahili, Tanzania; Swedish; Tamil; Telugu; Thai; Turkish; Ukrainian; Vietnamese; 

[ci skip]
2024-06-21 11:29:09 +02:00
dependabot[bot]
26e5ceea01 Bump the maven-build-plugins group with 2 updates (#3459) 2024-06-21 08:20:05 +00:00
dependabot[bot]
83f1c4ea41 Bump org.mockito:mockito-core in the java-test-dependencies group (#3427) 2024-06-21 08:19:43 +00:00
Armin Schrenk
8d78e1432a Merge pull request #3454 from cryptomator/feature/jfx22
Feature: Update to jfx22
2024-06-20 14:43:15 +02:00
mindmonk
d2ec5a5646 Merge pull request #3457 from cryptomator/feature/dokany-info-dialog
Feature: Migrate volume type Dokany to Default one and Display Info Dialog
2024-06-17 12:20:39 +02:00
Jan-Peter Klein
6bb0328799 removed dialog in naming 2024-06-14 14:20:18 +02:00
Jan-Peter Klein
8a8617b480 renamed method and code refactored 2024-06-14 11:07:21 +02:00
Jan-Peter Klein
92fad41b96 Merge branch 'develop' into feature/redesign-mainwindow 2024-06-13 12:49:59 +02:00
Jan-Peter Klein
7484744038 minor text change 2024-06-13 12:06:38 +02:00
Jan-Peter Klein
0bbc4ecae5 refactored code and new method handleDokanySupportEndAndShowDialog 2024-06-13 12:06:18 +02:00
Jan-Peter Klein
9fcb166047 close dialog by click on 'Open Preferences' 2024-06-13 12:04:34 +02:00
Jan-Peter Klein
1ac017e3ab changed dialog prefix 2024-06-13 11:51:01 +02:00
Jan-Peter Klein
1ba401b8e6 changed wording of button and description
primary color for icon
2024-06-12 12:02:40 +02:00
Armin Schrenk
07303b58f7 Merge branch 'develop' into feature/jfx22 2024-06-12 11:16:41 +02:00
Armin Schrenk
32a463768c Merge pull request #3456 from purejava/fix-#3453
Workaround for malformed javafx POM. Closes #3453.
2024-06-12 11:14:52 +02:00
Armin Schrenk
2307950e3b add javafx.platform property workaround to other build/ci scripts 2024-06-12 10:58:49 +02:00
Ralph Plawetzki
8108128c22 Temporary work around for JavaFX upstream bug
Occurs with Maven 3.9.7, fixed with Gluon JavaFX 23-ea+20, that contains a fixed parent POM
See https://mail.openjdk.org/pipermail/openjfx-dev/2024-May/047279.html
2024-06-11 19:59:18 +02:00
Jan-Peter Klein
58fe6da7a8 Merge branch 'develop' into feature/dokany-info-dialog 2024-06-11 15:25:23 +02:00
Jan-Peter Klein
92bf73297a add dokany info dialog 2024-06-11 14:43:56 +02:00
Armin Schrenk
0bf8fb39dd Update to javafx 22.0.1 2024-06-07 15:39:42 +02:00
Armin Schrenk
0dc9a3a834 align local build scripts 2024-06-07 14:56:54 +02:00
Armin Schrenk
91d6264b9f ignore downloaded artifact 2024-06-06 12:10:03 +02:00
Armin Schrenk
d2599ea525 closes #2656 2024-06-06 12:07:18 +02:00
dependabot[bot]
7180af9bc7 Bump the java-production-dependencies group across 1 directory with 9 updates (#3446) 2024-06-03 10:30:50 +00:00
Armin Schrenk
dc993dc57c fixes #3440 (PR in #3447) 2024-06-03 12:29:54 +02:00
dependabot[bot]
464c74ab6c Bump the maven-build-plugins group across 1 directory with 2 updates (#3431) 2024-06-03 09:39:36 +00:00
Jan-Peter Klein
e038348dca changed mainWindow StageStyle to UNDECORATED
removed main_window_title area
moved main_window_resize functions to MainWindowController
put add vault button under the vault list and wrapped both in a ScrollPane
bound vault list height properties to amount of entries and width to scroll pane width
add listener to scroll down after adding a vault
moved preferences button under vault list
new style classes for new elements
changed wording
2024-05-28 21:56:03 +02:00
Armin Schrenk
8c7dd8c74f Merge pull request #3435 from cryptomator/feature/jdk22
Feature: JDK22
2024-05-21 16:58:57 +02:00
Armin Schrenk
69bcf6fac6 do not forget to update debian files
(dammn you unflexible launchpad!)
2024-05-21 12:51:01 +02:00
Armin Schrenk
7c243dd434 pin cryptolib version due removed jdk.crypto.ec package 2024-05-16 17:51:04 +02:00
Armin Schrenk
357a0b9c31 closes #3376 2024-05-14 17:58:21 +02:00
Armin Schrenk
d69d11b82f update dependencies requiring JDK 22 2024-05-14 17:25:56 +02:00
mindmonk
863e9bbcb3 Merge pull request #3362 from cryptomator/feature/update-checker-refactoring
Feature: Expansion of Preferences Update Tab with UI Elements and Refactoring of UpdateChecker
2024-05-10 16:31:26 +02:00
Jan-Peter Klein
1c47012033 undo getter changes 2024-05-10 15:57:04 +02:00
Jan-Peter Klein
cd99eaa323 updateAvailable ObservableValue to BooleanBinding 2024-05-10 15:51:41 +02:00
Jan-Peter Klein
dda2afda92 refactored ObservableValues to BooleanBindings and code cleanup 2024-05-10 15:45:17 +02:00
Jan-Peter Klein
5519eefcfa cr related changes 2024-05-10 14:55:50 +02:00
Jan-Peter Klein
a81352800d removed twoWeeksAgo var 2024-05-08 11:38:23 +02:00
Jan-Peter Klein
6fec16e498 removed unused ui function 2024-05-08 10:57:42 +02:00
Jan-Peter Klein
42f31204a3 removed lastUpdateReminder setting 2024-05-08 09:41:58 +02:00
Jan-Peter Klein
7ab64cfe46 removed lastUpdateReminder setting 2024-05-08 09:05:26 +02:00
Jan-Peter Klein
1581a10c04 removed unused label id 2024-05-08 08:30:06 +02:00
Jan-Peter Klein
249becc25d removed unused instance var 2024-05-08 08:28:53 +02:00
Jan-Peter Klein
da8e84f39d removed unnecessary HBox 2024-05-07 13:27:52 +02:00
Jan-Peter Klein
9ad2d223c3 changed BooleanBinding updateAvailable to ObservableValue<Boolean> 2024-05-07 13:23:53 +02:00
Jan-Peter Klein
3bf1e659ef changed checkFailed text wording 2024-05-07 12:41:39 +02:00
Jan-Peter Klein
e79257e5ea changed checkFailed property to ObservableValue 2024-05-06 13:46:49 +02:00
Armin Schrenk
dac517a6fb update project ot jdk 22
Note: dependency bumps regarding jdk22 compatiblilty are missing!
2024-05-02 16:59:45 +02:00
mindmonk
1ab808f1b0 Merge pull request #3414 from MSevenR/feature/double-click-unlocked-vault
Double-click on an Unlocked Vault
2024-05-02 09:31:56 +02:00
Jan-Peter Klein
08f81b7df4 registered module in SettingsJsonTest 2024-04-29 11:12:14 +02:00
Jan-Peter Klein
b16f32ca83 introduced new dependency
removed latestVersion from Settings
changed SettingsJson from Date to Instant
new UpdateChecker Property checkFailed
optimized naming
changed wordning
refactoring
2024-04-29 10:34:17 +02:00
MSevenR
d6ed88b544 Double-click on an Unlocked Vault
Double-click on an Unlocked Vault in the List to Reveal It
2024-04-26 01:44:45 -05:00
Jan-Peter Klein
ae697d7b73 refactor isUpdateSuccessfulAndCurrent to instance variable 2024-04-25 10:54:00 +02:00
Jan-Peter Klein
ff3306cc17 removed blank line, unused instance variable, import and Logger
refactored DateTimeFormatter into an instance variable
2024-04-24 15:03:49 +02:00
Armin Schrenk
9ae2f4e0f6 add timezone id to timestamp in settings 2024-04-23 16:12:59 +02:00
Armin Schrenk
4230afcbac refactored timeDiff-message-method to updatePref controller 2024-04-23 16:12:36 +02:00
Armin Schrenk
7fc6ab05a4 use Instant also in UpdateChecker 2024-04-23 15:19:45 +02:00
Armin Schrenk
060f6bfc97 change storage of timestamps in model to Instant 2024-04-23 15:18:37 +02:00
Jan-Peter Klein
919dac6caa refactoring 2024-04-22 16:35:20 +02:00
Jan-Peter Klein
98bcf63b2c remove lastUpdateCheck from Settings; add lastUpdateReminder and lastSuccessfulUpdateCheck
implement updateTimeDifferenceMessage
reorder UI elements
refactor code for clarity and maintainability
2024-04-17 11:40:58 +02:00
Tobias Hagemann
0585262952 Merge pull request #3395 from purejava/flathub-colour-banners
Add coloured banners for app in Flathub store
2024-04-13 16:33:31 +02:00
Ralph Plawetzki
a33dc3980e Use colours from Cryptomator CD manual 2024-04-13 15:36:52 +02:00
Ralph Plawetzki
caa5e77386 Swap the light and dark colors, it's calmer for the eye 2024-04-13 08:48:20 +02:00
Ralph Plawetzki
c037920e79 Add coloured banners for app in Flathub store 2024-04-12 17:45:38 +02:00
Armin Schrenk
3cdd352d39 Update check-jdk-updates.yml
Use latest jdk version for jdk check
2024-04-10 12:27:05 +02:00
dependabot[bot]
8ae80e2932 Bump the maven-build-plugins group with 2 updates (#3391) 2024-04-09 08:34:03 +00:00
dependabot[bot]
2ffa1ee236 Bump the github-actions group with 2 updates (#3387) 2024-04-09 08:16:34 +00:00
Tobias Hagemann
2bf5b57823 Update README.md
[ci skip]
2024-04-05 12:33:38 +02:00
Jan-Peter Klein
853ea69180 updated log error message as suggested by coderabbit 2024-04-04 13:30:47 +02:00
Jan-Peter Klein
43d0dd99ec adjusted code as per PR suggestions 2024-04-04 12:37:56 +02:00
Armin Schrenk
b40e6db701 Merge branch 'main' into develop 2024-03-27 13:02:32 +01:00
Armin Schrenk
387eb420eb Merge branch 'hotfix/1.12.4' 2024-03-27 12:58:36 +01:00
Armin Schrenk
7785bb8820 finalize 1.12.4 2024-03-27 12:57:55 +01:00
Armin Schrenk
de4fa8c7b0 use latest WiX version
fixes CVE-2024-29187 and CVE-2024-29188
2024-03-27 12:55:13 +01:00
Armin Schrenk
17f519e01c prepare 1.12.4 2024-03-27 12:53:49 +01:00
dependabot[bot]
6c50023074 Bump the maven-build-plugins group with 2 updates (#3380) 2024-03-25 09:09:23 +00:00
Sebastian Stenzel
0009940e1e adjusted after dependency update 2024-03-14 12:09:10 +01:00
Armin Schrenk
f2a50b59b5 well, that should be the last reference to dokany 2024-03-12 09:56:30 +01:00
Armin Schrenk
ed03606981 One should also remove the actual dependency 2024-03-12 09:51:11 +01:00
Armin Schrenk
4a1eaf25c7 Closes #3361, Fixes #3351 2024-03-12 09:46:37 +01:00
dependabot[bot]
f5e445a610 Bump the java-production-dependencies group with 3 updates (#3365) 2024-03-12 07:57:00 +00:00
Jan-Peter Klein
6a3a256c0b Merge branch 'develop' into feature/update-checker-refactoring 2024-03-08 10:28:16 +01:00
Jan-Peter Klein
1ed77ebcc0 code cleanup 2024-03-08 10:27:35 +01:00
Jan-Peter Klein
db224e9e5c added latestVersion and lastUpdateCheck to settings and integrated with update checker 2024-03-08 09:58:59 +01:00
dependabot[bot]
c719982ef3 Bump the github-actions group with 1 update (#3354) 2024-03-05 17:24:28 +00:00
dependabot[bot]
f783f5d5ec Bump the java-test-dependencies group with 1 update (#3358) 2024-03-05 17:21:45 +00:00
dependabot[bot]
dd4f87b54c Bump the java-production-dependencies group with 4 updates (#3359) 2024-03-05 17:21:09 +00:00
Jan-Peter Klein
b3789700e1 add upToDateLabel and fix update indicator issue 2024-03-05 12:56:38 +01:00
Jan-Peter Klein
b39834f4eb Merge branch 'develop' into feature/update-checker-refactoring 2024-03-05 10:18:32 +01:00
Jan-Peter Klein
8064d75102 removed state label and reorganized ui elements 2024-03-05 10:15:11 +01:00
Jan-Peter Klein
4064b61cd7 refactored updateChecker by incorporating state management and date tracking 2024-02-29 09:29:26 +01:00
Armin Schrenk
ef3affece3 [ci skip] fix wrong PR description in flathub workflow 2024-02-28 13:42:37 +01:00
Armin Schrenk
414465371b [ci skip] refactor win-exe workflow
* only publish, if msi and exe succeed
* make stable release jobs dependent of publish
2024-02-28 13:19:54 +01:00
Armin Schrenk
feed72a729 [ci skip] fix flathub workflow 2024-02-27 22:52:56 +01:00
Armin Schrenk
bca20a7a66 [ci skip] seperate av whitelisting into own workflow to be able to upload assets on failure 2024-02-27 18:55:14 +01:00
Armin Schrenk
a38377baaa [ci skip] Merge branch 'main' into develop 2024-02-27 12:53:30 +01:00
Armin Schrenk
61a45fc738 Merge branch 'release/1.12.3' 2024-02-27 12:52:00 +01:00
Armin Schrenk
3a65b5551f adjust release check to changed metainfo file
references fcb940e29c
2024-02-27 12:48:36 +01:00
Armin Schrenk
94ed5c18b8 damnn merge from develop to release 2024-02-27 12:41:06 +01:00
Armin Schrenk
a559483d86 finalize 1.12.3 2024-02-27 12:38:52 +01:00
Armin Schrenk
3acdef1dd0 Merge branch 'develop' into release/1.12.3 2024-02-27 12:37:13 +01:00
Armin Schrenk
def6f8ab95 [ci skip] clean up 2024-02-27 12:35:55 +01:00
Armin Schrenk
11ba1f3ddc revert 1ab73be1f4 and 2d968eac8c 2024-02-27 12:32:37 +01:00
Cryptobot
3228f2cf5f New Crowdin updates (#3343)
New translations strings.properties

Chinese Simplified; Dutch; French; Japanese; Portuguese; Russian; Slovak; Swedish; 

[ci skip]
2024-02-27 10:23:56 +01:00
Armin Schrenk
9c4f7ad79d [ci skip] remove unknown env/style combination from appstream metadata 2024-02-26 17:41:18 +01:00
Armin Schrenk
3bd57d162b [ci skip] update appstream metadata 2024-02-26 17:37:04 +01:00
dependabot[bot]
5ea73a5a8d Bump the java-production-dependencies group with 1 update (#3347) 2024-02-26 09:50:42 +00:00
Armin Schrenk
38670838c7 [ci skip] Drop yq usage 2024-02-26 10:15:25 +01:00
Armin Schrenk
3e0b84dbce [ci skip] fix pr body description & reduce log noise 2024-02-23 17:39:38 +01:00
Armin Schrenk
2302db6206 [ci skip] fix create pr command in flathub job 2024-02-23 17:27:48 +01:00
Armin Schrenk
a94bf99660 [ci skip] automatically set up tracking branch on push 2024-02-23 17:13:11 +01:00
Armin Schrenk
0c5ce353b1 [ci skip] use github.actor 2024-02-23 17:05:26 +01:00
Armin Schrenk
b3ce777a42 [ci skip] configure git in flathub job 2024-02-23 16:29:18 +01:00
Armin Schrenk
3085df3397 [ci skip] further fixes:
* remove yq after update
* set token for git
2024-02-23 16:14:21 +01:00
Armin Schrenk
fb740b605f add missing quote char [ci skip] 2024-02-23 15:57:06 +01:00
Armin Schrenk
6a74d9f3b2 use same varaible in get-version job 2024-02-23 15:53:22 +01:00
Armin Schrenk
1c7dffb63f Add ci job to create flathub PR on release [ci skip] 2024-02-23 15:44:48 +01:00
Jan-Peter Klein
a213f073b1 enhance screen selection by adding primary fallback 2024-02-23 10:51:23 +01:00
Armin Schrenk
1ab73be1f4 fixes #3344 2024-02-22 16:11:54 +01:00
Armin Schrenk
8412871090 apply proper formatting and state to error dialog 2024-02-22 12:23:43 +01:00
Armin Schrenk
fa63f3ca67 Reset develop to SNAPSHOT version 2024-02-22 12:21:00 +01:00
Armin Schrenk
dbc0f52481 fix not-uploading artifacts on release 2024-02-21 22:04:35 +01:00
Armin Schrenk
b8cd1caeac also upload asc file as artifact for mac build 2024-02-21 13:09:14 +01:00
Armin Schrenk
43c25b6d97 fix ci
references 84732337ca
2024-02-21 12:53:01 +01:00
Armin Schrenk
e44bc09074 Merge branch 'develop' into release/1.12.3 2024-02-21 12:20:36 +01:00
Cryptobot
7b02f78ef5 New Crowdin updates (#3342)
New translations strings.properties

Arabic; Bashkir; Belarusian; Bengali; Bosnian; Bulgarian; Catalan; Chinese Simplified; Chinese Traditional; Chinese Traditional, Hong Kong; Croatian; Czech; Danish; Dutch; Filipino; Finnish; French; Galician; German; Greek; Hebrew; Hindi; Hungarian; Indonesian; Italian; Japanese; Korean; Latvian; Macedonian; Marathi; Norwegian Bokmal; Norwegian Nynorsk; Persian; Polish; Portuguese; Portuguese, Brazilian; Punjabi; Romanian; Russian; Serbian (Cyrillic); Serbian (Latin); Sinhala; Slovak; Slovenian; Spanish; Swahili, Tanzania; Swedish; Tamil; Telugu; Thai; Turkish; Ukrainian; Vietnamese; 

[ci skip]
2024-02-21 12:13:24 +01:00
Armin Schrenk
f7e8a4d1e6 prepare 1.12.3 2024-02-20 18:13:01 +01:00
Armin Schrenk
664375d692 fix wrong method name 2024-02-20 18:06:55 +01:00
Armin Schrenk
2d968eac8c Merge pull request #3336 from cryptomator/feature/3272-vaultid-as-mountpoint
Feature: For FUSE-Ts default mountpoint use vault id as mountpoint
2024-02-20 17:34:09 +01:00
Armin Schrenk
542d2fcfe1 only create winget PR for stable versions [ci skip] 2024-02-19 16:42:42 +01:00
mindmonk
144e929896 Merge pull request #3335 from cryptomator/feature/center-unlock-dialog-on-mainstage
Center Unlock Success Dialog on Main Application Window
2024-02-19 15:05:28 +01:00
Armin Schrenk
803748f78d update code-sign-action [ci skip] 2024-02-19 14:46:58 +01:00
Armin Schrenk
3410e7243a Update minimal required macOS version for dmg
due to javafx update in 7d281e2878
2024-02-19 13:02:05 +01:00
Armin Schrenk
84732337ca removed GTK-2 support
due to javafx update in 7d281e2878
2024-02-19 12:17:11 +01:00
dependabot[bot]
c527808710 Bump the java-production-dependencies group with 4 updates (#3340) 2024-02-19 09:35:25 +00:00
Armin Schrenk
99c89dbf39 fix possible null comparsion 2024-02-19 10:22:22 +01:00
Jan-Peter Klein
829b64cd3d dialog centers on main app screen if mainWindow is hidden 2024-02-19 08:55:16 +01:00
Jan-Peter Klein
f4007267fb simplified the code and removed the function 2024-02-16 17:31:20 +01:00
Armin Schrenk
c82a0bfaf3 cleanup 2024-02-16 17:09:05 +01:00
Armin Schrenk
251ad65344 Merge pull request #3327 from cryptomator/feature/3233-load-presets-background
Feature: Load LocationPresets in background and show indicator in UI
2024-02-16 16:21:01 +01:00
Jan-Peter Klein
155ba4607b introduced functionality to center the unlock screen within the main application window 2024-02-16 15:24:52 +01:00
Armin Schrenk
62f6865d3e cleanup created directories after mount
fails silently
2024-02-14 10:30:51 +01:00
Armin Schrenk
ffb3290248 Merge branch 'develop' into feature/3272-vaultid-as-mountpoint 2024-02-14 10:29:30 +01:00
Armin Schrenk
a013ae3d91 [ci skip] change mountPointDir for macOS-Dev-run profile
aligns production build
2024-02-14 10:29:14 +01:00
Armin Schrenk
19a954e677 use correct mountProvider 2024-02-14 10:05:56 +01:00
Armin Schrenk
f262980acc closes #3272 2024-02-13 16:37:46 +01:00
Armin Schrenk
3b3aa18c92 fixes #3233
this time with gc prevention of a binding
2024-02-13 00:55:07 +01:00
Armin Schrenk
c7b8bc89c2 also don't bother upload to av scan, if not published 2024-02-12 13:18:17 +01:00
Armin Schrenk
5fc981abd3 prevent automatic overwrite of already released files 2024-02-12 13:16:45 +01:00
Armin Schrenk
36ec1a5ebc update windows update url [ci skip] 2024-02-09 18:37:19 +01:00
Armin Schrenk
be4aad4168 set default value for Windows debug flag 2024-02-09 17:03:22 +01:00
Armin Schrenk
fcb940e29c update release section of appstream metainfo file [ci skip] 2024-02-09 14:52:10 +01:00
Armin Schrenk
4f3ca2a6c4 fix appimage build script [ci skip] 2024-02-09 12:56:33 +01:00
Armin Schrenk
27cd34bee0 Merge branch 'main' into develop [ci skip] 2024-02-09 12:53:16 +01:00
Armin Schrenk
c07e51be51 Merge branch 'release/1.12.2' 2024-02-09 12:51:57 +01:00
Armin Schrenk
0421879b39 finalize 1.12.2 2024-02-09 12:51:19 +01:00
Armin Schrenk
2d627717a0 prepare 1.12.2 2024-02-09 10:59:33 +01:00
Armin Schrenk
dc0e88a694 fixes #3319 2024-02-09 10:55:27 +01:00
Armin Schrenk
a5e3630375 also specify version for winget release [ci skip] 2024-02-08 17:47:50 +01:00
Armin Schrenk
17335e8f70 shorten workflow name [ci skip] 2024-02-08 17:39:38 +01:00
Armin Schrenk
42dd2fba48 github cli needs special token in CI env [ci skip] 2024-02-08 17:37:50 +01:00
Armin Schrenk
e1cca6427c Add ci job for releasing to winget 2024-02-08 17:34:02 +01:00
Armin Schrenk
42d3dbaa23 always use latest version of winfsp-uninstaller 2024-02-08 17:10:40 +01:00
Armin Schrenk
185d67c492 Merge branch 'main' into develop [ci skip] 2024-02-07 11:43:59 +01:00
Armin Schrenk
a8af3c8b40 Merge branch 'release/1.12.1' 2024-02-07 11:42:58 +01:00
Armin Schrenk
038a7fac62 finalize 1.12.1 2024-02-07 11:42:37 +01:00
Armin Schrenk
48408fa40d prepare 1.12.1 2024-02-07 11:37:44 +01:00
Armin Schrenk
18a417667e Fixes #3315 2024-02-07 11:33:45 +01:00
JaniruTEC
aab07b13e3 Changed version specifier for dependency-check
See: https://github.com/cryptomator/cryptofs/pull/202#discussion_r1453615249
2024-02-06 22:28:16 +01:00
Armin Schrenk
869e40e351 use latest coffeelibs-jdk release 2024-02-06 15:34:09 +01:00
Armin Schrenk
bf91e3f15c Merge branch 'main' into develop [ci skip] 2024-02-06 14:29:19 +01:00
Armin Schrenk
17544828e4 Merge branch 'release/1.12.0' 2024-02-06 14:28:08 +01:00
Armin Schrenk
cfef3139b1 finalize 1.12.0 2024-02-06 14:20:50 +01:00
Armin Schrenk
b01ba27b06 Partially reverting 24293b316f 2024-02-06 14:16:03 +01:00
Armin Schrenk
5a33e66a7d prepare 1.12.0 2024-02-06 11:31:42 +01:00
Armin Schrenk
3c4e35406e Bump dependencies 2024-02-06 11:27:02 +01:00
Cryptobot
d3275fa4e7 New Crowdin updates (#3256)
New translations strings.properties

Arabic; Bashkir; Belarusian; Bulgarian; Catalan; Chinese Simplified; Chinese Traditional; Chinese Traditional, Hong Kong; Czech; Danish; Dutch; Filipino; French; German; Greek; Hebrew; Hungarian; Italian; Japanese; Korean; Latvian; Norwegian Bokmal; Polish; Portuguese; Portuguese, Brazilian; Punjabi; Romanian; Russian; Slovak; Spanish; Swahili, Tanzania; Swedish; Turkish; Vietnamese;

[ci skip]
2024-02-06 11:21:07 +01:00
dependabot[bot]
a30db34c19 Bump the java-production-dependencies group with 6 updates (#3295) 2024-02-06 10:18:33 +00:00
dependabot[bot]
509100e7ae Bump the java-test-dependencies group with 2 updates (#3312) 2024-02-06 10:17:11 +00:00
dependabot[bot]
024c34172b Bump the github-actions group with 5 updates (#3308) 2024-02-06 10:16:24 +00:00
dependabot[bot]
638570562b Bump the maven-build-plugins group with 3 updates (#3300) 2024-02-06 10:15:06 +00:00
Sebastian Stenzel
ee5a5c6563 Merge pull request #3291 from cryptomator/feature/legacy-device-migration
Hub 1.2.x → Hub 1.3.x Legacy Device Migration
2024-02-02 14:59:30 +01:00
Armin Schrenk
85c52c60c5 Revert "update javafx to 21.0.2"
This reverts commit 93184abd3c.
2024-02-02 10:45:34 +01:00
Armin Schrenk
93184abd3c update javafx to 21.0.2 2024-01-30 12:55:33 +01:00
Armin Schrenk
8062392ccd update jdk to 21.0.2+13 2024-01-30 12:17:45 +01:00
Jan-Peter Klein
d49c02c7de optimize share vault fxml 2024-01-29 17:37:55 +01:00
Sebastian Stenzel
d66cfe0e7c adjust to new migration API 2024-01-26 16:48:08 +01:00
mindmonk
fa26fa9dee Merge pull request #3289 from cryptomator/feature/share-vault
Feature: Introduce 'Share Vault' Functionality
2024-01-26 16:08:06 +01:00
Jan-Peter Klein
52fc94ca01 fixed a spelling error 2024-01-26 16:03:51 +01:00
Jan-Peter Klein
e9a412ae16 improved layout and added styleClass for add-box 2024-01-26 15:42:25 +01:00
Jan-Peter Klein
8104c35d76 more specific translation keys and consistent spacing 2024-01-23 19:09:49 +01:00
Jan-Peter Klein
baa2e05e69 improved wording and layout 2024-01-23 14:00:20 +01:00
Armin Schrenk
f50b204cef Merge pull request #3288 from cryptomator/feature/3246-split-device-registration
Feature: Split device registration into "normal" and "legacy" flow
2024-01-22 14:56:45 +01:00
lectrical
ed902bc59f Hello 2024 2024-01-20 16:22:27 +01:00
Sebastian Stenzel
693299a5d7 first draft of legacy device migration
actual migration still missing due to API discussion
2024-01-20 13:28:56 +01:00
Sebastian Stenzel
def64aa2ac added tests 2024-01-20 13:25:57 +01:00
Sebastian Stenzel
c5bb8a131d dedup 2024-01-20 13:15:33 +01:00
Sebastian Stenzel
2e443c72a9 add new API encryptVaultKey(vaultKey, userKey)
and `decodeECPublicKey(byte[])`
2024-01-20 13:12:59 +01:00
Sebastian Stenzel
e9ee17493b refactor API, expose decodeECPrivateKey(byte[]) 2024-01-20 13:01:48 +01:00
Sebastian Stenzel
35eb548d8e replaced Guava's BaseEncoding with Base64 2024-01-20 12:58:44 +01:00
Sebastian Stenzel
dc5d6e734e deduplicate code 2024-01-19 17:55:36 +01:00
Sebastian Stenzel
729f38866f use string templates for URI construction 2024-01-19 17:40:39 +01:00
Jan-Peter Klein
4de8434f1b Merge branch 'develop' into feature/share-vault 2024-01-19 12:31:37 +01:00
Jan-Peter Klein
cd40731b5f implemented open hub feature
optimized fxml files and img
2024-01-19 12:30:56 +01:00
Armin Schrenk
24293b316f Merge pull request #3236 from cryptomator/feature/3233-locationpresets-background
Feature: Load LocationPresets in background and show indicator in UI
2024-01-19 10:51:46 +01:00
Armin Schrenk
062c674ef1 Always hide spinner, as soon as locationPresetLoading is finished 2024-01-19 10:44:06 +01:00
Armin Schrenk
830bb5776f Use naming convention for comparator 2024-01-19 10:04:15 +01:00
Armin Schrenk
bfdb23785e Merge branch 'develop' into feature/3233-locationpresets-background 2024-01-18 15:57:45 +01:00
Armin Schrenk
248d655afb ditch custom in-place sorting and rely on javafx methods 2024-01-18 15:45:45 +01:00
Armin Schrenk
995c0a4b92 remove unnecessary TODO 2024-01-17 23:30:41 +01:00
Armin Schrenk
42425afe56 closes #3246
splitting registerSuccess into two scenes, one for hub 1.3.x and one for legacy
2024-01-17 16:52:35 +01:00
Sebastian Stenzel
a1b712495f switch back to UI thread later
see https://github.com/cryptomator/cryptomator/pull/3287#discussion_r1453196792
2024-01-17 13:35:23 +01:00
Sebastian Stenzel
2225476bf8 reordered methods
[ci skip]
2024-01-17 13:33:38 +01:00
Sebastian Stenzel
325057c548 Merge pull request #3287 from cryptomator/feature/refactored-hub-unlock
Refactored Hub Unlock
2024-01-17 13:32:09 +01:00
JaniruTEC
b1a5eed2aa Merge pull request #3286 from cryptomator/refactoring/centralize-dependency-check
Externalize dependency-check
2024-01-16 19:54:32 +01:00
Jan-Peter Klein
4ca190cfb9 implemented a 'Share Vault' button in vault_detail_locked and added a new window for vault sharing options 2024-01-16 17:21:07 +01:00
GiwrgosTsifoutis
828fd321cc Fixed "Locked Vault Options after unlocking vault #3249" (#3267)
Fixes #3249 

Bound the UIs disabled state to the vault's lock state without the need of a map
2024-01-16 12:32:36 +01:00
Armin Schrenk
2e32f39986 [ci skip] fix missing translation key
(cherry picked from commit daa026b285)
2024-01-16 11:38:54 +01:00
Armin Schrenk
daa026b285 [ci skip] fix missing translation key 2024-01-16 11:38:33 +01:00
Sebastian Stenzel
87084e8c2a TODO now obsolete
as we will now re-attempt unlock when returning from device registration

[ci skip]
2024-01-16 04:14:06 +01:00
Sebastian Stenzel
8e52058373 re-attempt receiving key after registering device 2024-01-16 03:58:30 +01:00
Armin Schrenk
8bf0acf35f build release artifacts with javafx 21.0.1
references 7d281e2878
2024-01-15 16:35:34 +01:00
JaniruTEC
e0d3a3d9c7 Externalized dependency-check 2024-01-15 16:12:27 +01:00
Sebastian Stenzel
b59ce75ecd add step 0: check API level 2024-01-14 15:02:41 +01:00
Sebastian Stenzel
748f895b98 change unlock request order 2024-01-14 15:01:51 +01:00
Sebastian Stenzel
6d974c7fcf fix incorrect vaultId 2024-01-14 14:58:58 +01:00
Sebastian Stenzel
0ed73e8b41 use string templates for building /api/* URIs 2024-01-14 14:02:35 +01:00
Sebastian Stenzel
538b4ecd0b added javadoc 2024-01-14 13:59:23 +01:00
Armin Schrenk
8f32b46b30 set no jlink compression for build artifacts
references 00fc2a9837
2024-01-12 13:18:05 +01:00
Armin Schrenk
4de25afde0 wrap locations in scrollPane 2024-01-11 23:48:26 +01:00
Armin Schrenk
2e6c228f3f Merge branch 'develop' into feature/3233-locationpresets-background 2024-01-11 22:59:41 +01:00
Armin Schrenk
00fc2a9837 remove deprecate compress options and use default ones
see also https://bugs.openjdk.org/browse/JDK-8301124?jql=text%20~%20%22compress%22
2024-01-11 22:59:08 +01:00
Armin Schrenk
22e80e7dac update local appimage buildscript to download jmods 2024-01-11 22:56:41 +01:00
Armin Schrenk
517e05c378 use stable version of winfsp-uninstaller 2024-01-11 22:35:51 +01:00
Sebastian Stenzel
5759b7e596 Merge pull request #3210 from cryptomator/feature/3203-device-already-registered
Feature: Adjust Hub workflow, if device is already registerd
2024-01-11 12:05:25 +01:00
Sebastian Stenzel
bfb26f6171 renamed field 2024-01-11 11:46:06 +01:00
Sebastian Stenzel
f36e2bb4b7 reduced visibility 2024-01-11 11:45:57 +01:00
Sebastian Stenzel
b85e455ff5 renamed field 2024-01-11 11:42:08 +01:00
Sebastian Stenzel
a902400522 get rid of registerException
use separate views, no need to pass state between views
2024-01-11 11:23:54 +01:00
Sebastian Stenzel
a6d6474294 Merge branch 'develop' into feature/3203-device-already-registered 2024-01-11 11:02:45 +01:00
Sebastian Stenzel
06859fe36b remove newline
[ci skip]
2024-01-11 10:27:42 +01:00
Sebastian Stenzel
7d7b7c1dc9 Merge pull request #3260 from cryptomator/feature/annihilate-FUPFMS
annihilate FUPFMS
2024-01-11 10:25:21 +01:00
Sebastian Stenzel
706d2b51be remove added newline
[ci skip]
2024-01-11 10:24:28 +01:00
Armin Schrenk
92bf136a8b Merge pull request #3278 from mooons/issue-3277
Bump README's build dependency JDK version from 19 to 21
2024-01-09 12:03:21 +01:00
mooons
f00f028d8b Bump README's build dependency JDK version from 19 to 21. Fix #3277 2024-01-09 01:57:59 -08:00
Siard
d85c6c8f41 Create separate files for GoogleDrive presets providers. cryptomator/2921
- Change imports accordingly in module-info.java
2024-01-03 16:42:46 +01:00
Siard
17057e8f8d Add Google Drive presets improvement. cryptomator/2921
- The code now defaults to searching through '~/Library/CloudStorage/GoogleDrive-*/*' before using the fallback options.
2024-01-03 16:41:11 +01:00
dependabot[bot]
325092efb0 Bump the java-test-dependencies group with 1 update (#3238) 2023-12-26 04:32:24 +00:00
dependabot[bot]
aaf8036713 Bump the maven-build-plugins group with 3 updates (#3264) 2023-12-25 19:40:21 +00:00
Sebastian Stenzel
c86ee679a9 renamed fuse-specific exception to be more generic 2023-12-21 10:05:22 +01:00
Sebastian Stenzel
a0fcb63a1a replaced FUPFMS
with more generic set of used mount services
2023-12-21 09:40:43 +01:00
Armin Schrenk
55ba255651 Update dependency-check.yml
to not run into 403 due to rate limit
2023-12-18 10:49:47 +01:00
dependabot[bot]
47df4213c3 Bump the java-production-dependencies group with 5 updates (#3255) 2023-12-18 09:40:34 +00:00
Armin Schrenk
6929760979 adjust dependency check plugin 2023-12-13 16:47:30 +01:00
Armin Schrenk
720fbd0e6b use separate cache for dependency-cache data 2023-12-13 16:47:08 +01:00
mindmonk
923af4bc83 Merge pull request #3199 from cryptomator/feature/vault-volume-type
Feature: Customizable Volume Type Options for Each Vault
2023-12-13 16:16:08 +01:00
Jan-Peter Klein
e9c464ba8f sonar cloud issues solved 2023-12-13 15:56:39 +01:00
Jan-Peter Klein
7b0f616747 Merge branch 'develop' into feature/vault-volume-type 2023-12-13 15:50:55 +01:00
Jan-Peter Klein
65788f3c1f pr mentioned changes 2023-12-13 15:50:37 +01:00
Jan-Peter Klein
f55fbf0f64 code cleanup and optimized a description text 2023-12-13 09:25:50 +01:00
Armin Schrenk
851838e3a2 remove run of dependency-chec workflow for release branches (already done in check release workflow) 2023-12-12 14:58:48 +01:00
Armin Schrenk
e194f9b205 update dependency check and refactor to own workflow 2023-12-12 14:56:48 +01:00
Jan-Peter Klein
2f8df88ad5 Merge branch 'develop' into feature/vault-volume-type
# Conflicts:
#	src/main/java/org/cryptomator/ui/unlock/UnlockWorkflow.java
2023-12-12 12:48:59 +01:00
Jan-Peter Klein
55247d9f8a moved provideDefaultMountService to MountModule and renamed problematicFuseMountServices to CONFLICTING_MOUNT_SERVICES 2023-12-12 12:38:33 +01:00
dependabot[bot]
48f273b755 Bump ch.qos.logback:logback-core from 1.4.13 to 1.4.14 (#3251) 2023-12-12 08:48:54 +00:00
Jan-Peter Klein
4fc31cb13f refactored 'loopbackPortSupported' from 'BooleanExpression' to 'ObservableValue<Boolean>' in VolumePreferencesController and MountOptionsController 2023-12-11 15:16:41 +01:00
Jan-Peter Klein
a795b82a42 vault options ui change 2023-12-11 14:49:54 +01:00
Jan-Peter Klein
1e28a04a7b renamed string properties 2023-12-11 10:16:26 +01:00
Jan-Peter Klein
b88eef4591 renamed string property 2023-12-08 12:03:08 +01:00
Jan-Peter Klein
eef5edf775 code cleanup 2023-12-08 11:14:54 +01:00
Armin Schrenk
bdb1d605eb Add cloud vendor to example of involved software 2023-12-07 18:43:10 +01:00
Armin Schrenk
dfe4b74f3d clean code:
* remove unused methods
* combine or move methods
2023-12-07 17:48:58 +01:00
Jan-Peter Klein
985a3c30de changed string properties for volume type labels 2023-12-07 13:56:04 +01:00
Jan-Peter Klein
1b5125dfed refactored code, global default volume type settings 2023-12-07 10:48:33 +01:00
Jan-Peter Klein
da240ce8b9 optimized error message 2023-12-07 08:40:39 +01:00
Jan-Peter Klein
52affb891e refactored mount method 2023-12-06 16:41:36 +01:00
Jan-Peter Klein
fac72ca24a undo remove settings port 2023-12-06 09:44:05 +01:00
Jan-Peter Klein
5cbed502ed undo VaultListManager changes 2023-12-06 08:49:21 +01:00
Jan-Peter Klein
dce4c60881 removed pr unrelated changes and code cleanup 2023-12-06 08:40:43 +01:00
Jan-Peter Klein
63bf0315c7 created global mountService 2023-12-05 16:21:12 +01:00
Armin Schrenk
8b543c48ee [ci skip] Merge branch 'main' into develop 2023-12-05 11:11:31 +01:00
Armin Schrenk
087a5326df Merge branch 'release/1.11.1' 2023-12-05 11:09:36 +01:00
Armin Schrenk
a4545352d8 finalize 1.11.1 2023-12-05 11:09:09 +01:00
dependabot[bot]
a07dea7ca8 Bump the github-actions group with 2 updates (#3235) 2023-12-05 08:39:49 +00:00
Jan-Peter Klein
c369487e8e Merge branch 'develop' into feature/vault-volume-type 2023-12-01 09:13:38 +01:00
Jan-Peter Klein
98590ecec5 refactoring 2023-12-01 09:11:43 +01:00
Armin Schrenk
316f3975ed add missing import 2023-11-30 18:24:52 +01:00
Armin Schrenk
71bf7e0913 Simplify handling of window hiding events 2023-11-30 18:22:07 +01:00
dependabot[bot]
c7839e2c46 Bump the java-production-dependencies group with 2 updates (#3234) 2023-11-30 14:26:07 +00:00
Armin Schrenk
89b8bc4148 adjust ui and add localization 2023-11-30 11:44:41 +01:00
Armin Schrenk
43ad1c05c0 cancel background task, if window is closed 2023-11-30 11:18:33 +01:00
Armin Schrenk
1343099be6 [ci skip] correct dependabot config 2023-11-30 10:03:29 +01:00
Armin Schrenk
b895ac69fb fixes #3233 2023-11-29 18:45:52 +01:00
dependabot[bot]
7d281e2878 Bump the javafx group with 5 updates (#3229) 2023-11-29 15:08:31 +00:00
Armin Schrenk
688450bf5a prepare 1.11.1 2023-11-28 13:38:05 +01:00
Cryptobot
e994133177 New Crowdin updates (#3191)
New translations strings.properties

Bulgarian; Chinese Simplified; Chinese Traditional; Dutch; Filipino; French; Greek; Hungarian; Norwegian Bokmal; Polish; Portuguese; Portuguese, Brazilian; Punjabi; Romanian; Spanish; Swedish; Turkish; 

[ci skip]
2023-11-28 13:32:08 +01:00
dependabot[bot]
68713ef9a7 Merge pull request #3228 from cryptomator/dependabot/maven/maven-build-plugins-907533b1a4 2023-11-28 12:28:35 +00:00
Armin Schrenk
dbacbc8874 do not exectue dependency-check on CI (due to missing NVD API key) 2023-11-28 13:25:47 +01:00
dependabot[bot]
8382299a05 Bump the maven-build-plugins group with 4 updates
Bumps the maven-build-plugins group with 4 updates: [org.apache.maven.plugins:maven-dependency-plugin](https://github.com/apache/maven-dependency-plugin), [org.apache.maven.plugins:maven-surefire-plugin](https://github.com/apache/maven-surefire), [org.codehaus.mojo:license-maven-plugin](https://github.com/mojohaus/license-maven-plugin) and [org.owasp:dependency-check-maven](https://github.com/jeremylong/DependencyCheck).


Updates `org.apache.maven.plugins:maven-dependency-plugin` from 3.6.0 to 3.6.1
- [Commits](https://github.com/apache/maven-dependency-plugin/compare/maven-dependency-plugin-3.6.0...maven-dependency-plugin-3.6.1)

Updates `org.apache.maven.plugins:maven-surefire-plugin` from 3.1.2 to 3.2.2
- [Release notes](https://github.com/apache/maven-surefire/releases)
- [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.1.2...surefire-3.2.2)

Updates `org.codehaus.mojo:license-maven-plugin` from 2.2.0 to 2.3.0
- [Release notes](https://github.com/mojohaus/license-maven-plugin/releases)
- [Commits](https://github.com/mojohaus/license-maven-plugin/compare/2.2.0...2.3.0)

Updates `org.owasp:dependency-check-maven` from 8.4.0 to 9.0.1
- [Release notes](https://github.com/jeremylong/DependencyCheck/releases)
- [Changelog](https://github.com/jeremylong/DependencyCheck/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jeremylong/DependencyCheck/compare/v8.4.0...v9.0.1)

---
updated-dependencies:
- dependency-name: org.apache.maven.plugins:maven-dependency-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven-build-plugins
- dependency-name: org.apache.maven.plugins:maven-surefire-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: maven-build-plugins
- dependency-name: org.codehaus.mojo:license-maven-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: maven-build-plugins
- dependency-name: org.owasp:dependency-check-maven
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: maven-build-plugins
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-28 12:20:39 +00:00
dependabot[bot]
93b09cf449 Bump the java-production-dependencies group with 6 updates (#3230) 2023-11-28 12:19:58 +00:00
dependabot[bot]
dac3311b81 Bump the java-test-dependencies group with 2 updates (#3227) 2023-11-28 12:05:42 +00:00
Armin Schrenk
5b1ca7a533 update dependabot config 2023-11-28 12:59:39 +01:00
Armin Schrenk
e940c29110 Closes #3226 2023-11-28 12:44:42 +01:00
Jan-Peter Klein
6a704ca0ad Merge branch 'develop' into feature/vault-volume-type 2023-11-27 16:24:35 +01:00
Jan-Peter Klein
38c102a64b refactored code by removing unnecessary observables 2023-11-27 12:46:29 +01:00
Armin Schrenk
b632c84bb6 more renaming 2023-11-24 11:23:22 +01:00
Armin Schrenk
6bb5ed1d73 fixes #3207 2023-11-24 11:19:44 +01:00
Jan-Peter Klein
1052e4c3d2 fix gui issues in vault mount settings 2023-11-23 10:55:17 +01:00
Armin Schrenk
44f776050f Apply suggestions from code review
Co-authored-by: Tobias Hagemann <tobias.hagemann@skymatic.de>
2023-11-22 21:36:15 +01:00
Armin Schrenk
baa29dbd73 remove unused translation key 2023-11-17 16:33:53 +01:00
Armin Schrenk
1caf391936 use correct word for button label 2023-11-17 16:24:23 +01:00
Armin Schrenk
82caf76e12 clean up 2023-11-17 15:51:20 +01:00
Armin Schrenk
de27bbf96e always cancle unlock result when closing the unlock window 2023-11-17 15:50:39 +01:00
Armin Schrenk
1199ef40dd on 409 repsonse of registerDevice-request, show setupFailed with adjusted message 2023-11-17 15:47:08 +01:00
Jan-Peter Klein
e7e88f13e3 improved code quality 2023-11-17 14:51:13 +01:00
Armin Schrenk
41c22b7840 Rename leftovers 2023-11-17 13:30:40 +01:00
Armin Schrenk
19cc4e8a37 Merge pull request #3194 from AntoineJT/feature/3155-toggle-vault-status-on-double-click
Feature: Double click on a vault in the list to unlock it
2023-11-15 16:51:44 +01:00
Jan-Peter Klein
7bc1d52bf8 set deprecated since of settingsjson port to 1.12.0, changed button text and added tooltip to 'show vault options' button 2023-11-12 13:49:47 +01:00
Antoine James Tournepiche
fd84ff09e1 No longer lock vault on double click
See https://github.com/cryptomator/cryptomator/pull/3194#issuecomment-1806106843
2023-11-10 22:05:58 +01:00
Antoine James Tournepiche
3dce175f94 Improve naming, avoid shadowing 2023-11-10 17:42:19 +01:00
Antoine James Tournepiche
0aaa3263cf Improve feature #3155 implementation 2023-11-09 23:50:34 +01:00
Antoine James Tournepiche
c4dcbd8c44 Implement requested feature #3155
Toggle selected vault lock status on double click on a vault item
in the vault list on the main window
2023-11-09 23:42:22 +01:00
Jan-Peter Klein
ef9cdd8e92 Merge branch 'develop' into feature/vault-volume-type
# Conflicts:
#	src/main/resources/i18n/strings.properties
2023-11-08 11:45:03 +01:00
Armin Schrenk
09ced50590 [ci skip] reset to snapshot version 2023-11-08 11:28:21 +01:00
Armin Schrenk
b2ab1a30a5 Merge branch 'main' into develop 2023-11-08 11:26:49 +01:00
Armin Schrenk
9eff3916b3 Merge branch 'release/1.11.0' 2023-11-08 11:26:13 +01:00
Armin Schrenk
98472d1952 use correct release date 2023-11-08 11:25:45 +01:00
Armin Schrenk
1ceafb69a5 finalize 1.11.0 2023-11-08 11:22:27 +01:00
Armin Schrenk
f3f4b6576c Merge branch 'develop' into release/1.11.0
# Conflicts:
#	src/main/resources/i18n/strings.properties
2023-11-08 10:52:30 +01:00
Cryptobot
e699d7dafc New Crowdin updates (#3189)
* New translations strings.properties
German, Spanish, Turkish
[ci skip]
2023-11-08 10:51:07 +01:00
Cryptobot
5eb6d186c0 New Crowdin updates (#3188)
New translations strings.properties

Arabic; Belarusian; Bengali; Bosnian; Bulgarian; Catalan; Chinese Simplified; Chinese Traditional; Chinese Traditional, Hong Kong; Croatian; Czech; Danish; Dutch; Filipino; Finnish; French; Galician; German; Greek; Hebrew; Hindi; Hungarian; Indonesian; Italian; Japanese; Korean; Latvian; Macedonian; Norwegian Bokmal; Norwegian Nynorsk; Persian; Polish; Portuguese; Portuguese, Brazilian; Punjabi; Romanian; Russian; Serbian (Cyrillic); Serbian (Latin); Sinhala; Slovak; Slovenian; Spanish; Swahili, Tanzania; Swedish; Tamil; Telugu; Thai; Turkish; Ukrainian; Vietnamese; 

[ci skip]
2023-11-08 10:41:05 +01:00
Armin Schrenk
edc9409e56 pin wording 2023-11-08 10:19:12 +01:00
JaniruTEC
d015719fae Removed outdated translations 2023-11-07 18:52:48 +01:00
JaniruTEC
afc69e447e Renamed "setup code" to "Account Key" in localization files 2023-11-07 18:20:10 +01:00
JaniruTEC
54fbbd734f Renamed "setup code" to "Account Key" in UI 2023-11-07 18:19:12 +01:00
Jan-Peter Klein
2f657c7c14 migrate port to vault settings 2023-11-07 12:42:07 +01:00
Sebastian Stenzel
d29872e69e add "Action Required" prompt
when encountering http status 449 during vault unlock. fixes #3181

Co-authored-by: SailReal <julian.raufelder@skymatic.de>
(cherry picked from commit f2e7d0fae2)
2023-11-07 12:20:27 +01:00
Jan-Peter Klein
ab9278a9fc Merge branch 'develop' into feature/vault-volume-type 2023-11-03 10:48:00 +01:00
Jan-Peter Klein
49769f986a remove port from settings 2023-11-03 10:47:43 +01:00
Jan-Peter Klein
b68b895bba removed tcp port from volume preferences controller 2023-11-02 16:53:29 +01:00
Tobias Hagemann
99fb9972f9 updated sponsors
[ci skip]
2023-11-02 15:37:19 +01:00
Sebastian Stenzel
f2e7d0fae2 add "Action Required" prompt
when encountering http status 449 during vault unlock. fixes #3181

Co-authored-by: SailReal <julian.raufelder@skymatic.de>
2023-11-02 14:41:58 +01:00
Jan-Peter Klein
77f9e6c411 some ui and wording changes 2023-11-02 13:47:58 +01:00
Jan-Peter Klein
31fcf294e9 fix misbehaivour 2023-11-01 14:59:25 +01:00
Jan-Peter Klein
a03f00ee9a set up default mount service as pre fallbackProvider 2023-10-31 20:29:54 +01:00
Jan-Peter Klein
80af32bd82 introduced FuseRestartRequiredException and UnlockFuseRestartRequired window 2023-10-30 17:05:09 +01:00
Jan-Peter Klein
b7e4c0fe31 set default mount service and port while adding a vault 2023-10-30 15:27:11 +01:00
Jan-Peter Klein
76d499596f Merge branch 'develop' into feature/vault-volume-type 2023-10-30 14:33:32 +01:00
Jan-Peter Klein
1818344c49 different labeling for volume type option in general volume preferences and vault options 2023-10-30 14:33:01 +01:00
Armin Schrenk
7ff2e22f17 Merge branch 'develop' into release/1.11.0 2023-10-30 10:41:11 +01:00
Cryptobot
4eee66b0ef New Crowdin updates (#3128)
New translations strings.properties

Arabic; Belarusian; Bulgarian; Catalan; Chinese Simplified; Chinese Traditional; Chinese Traditional, Hong Kong; Czech; Danish; Dutch; Filipino; Finnish; French; German; Greek; Hebrew; Hungarian; Italian; Japanese; Korean; Norwegian Bokmal; Polish; Portuguese; Portuguese, Brazilian; Romanian; Russian; Slovak; Spanish; Swahili, Tanzania; Swedish; Turkish; Ukrainian; Vietnamese; 

[ci skip]
2023-10-30 10:39:04 +01:00
Sebastian Stenzel
19fe7ba6bf updated to tiny-oauth2-client 0.8.0 2023-10-27 19:54:58 +02:00
Armin Schrenk
7b522582fb Merge pull request #3163 from cryptomator/feature/3075-fix-ci-jdk-version
Feature: Use fixed JDK version for releases
2023-10-27 12:51:49 +02:00
Jan-Peter Klein
e79c975d7b prevent mounting via MountFailedException when fuseRestartRequired 2023-10-27 12:39:25 +02:00
Armin Schrenk
7594e51e2b Update debian.yml
Remove architecture in apt install dependency
2023-10-27 12:30:37 +02:00
Armin Schrenk
b3f0ff3662 use coffeelibs JDK for release builds 2023-10-27 12:10:37 +02:00
Armin Schrenk
8ce304a0c3 Add link to how-to-jdk-update in notification 2023-10-26 16:21:22 +02:00
Jan-Peter Klein
c85823fe04 code cleanup 2023-10-26 12:18:40 +02:00
Jan-Peter Klein
8f46aec851 created MountServiceConverter class 2023-10-26 10:35:16 +02:00
Jan-Peter Klein
cd6d1eeab3 moved fupfms to VaultModule 2023-10-26 10:25:11 +02:00
Jan-Peter Klein
52b74a74fe display specific mount options according to selected volume type in vault mounting options 2023-10-25 14:02:29 +02:00
Jan-Peter Klein
368f0630c1 some sonar cloud fixes 2023-10-25 12:44:22 +02:00
Jan-Peter Klein
040bc4c5df fix sonar cloud issues 2023-10-24 14:26:06 +02:00
Jan-Peter Klein
07906fbea5 modified mounter to utilize the mount service settings specified in the vault settings 2023-10-24 14:04:53 +02:00
Armin Schrenk
f893b2b5be Merge pull request #3026 from cryptomator/feature/uninstall-old-winfsp
Feature: Update to WinFsp 2.x and uninstall old winfsp in Windows EXE installer
2023-10-23 12:26:28 +02:00
Armin Schrenk
db868c6df7 move worklfow to correct directory 2023-10-20 16:22:45 +02:00
Jan-Peter Klein
44f67b7c89 Merge branch 'develop' into feature/vault-volume-type 2023-10-20 15:58:52 +02:00
Sebastian Stenzel
6225d8d1f0 Merge branch 'develop' into release/1.11.0 2023-10-20 14:00:42 +02:00
Sebastian Stenzel
ed975b459e bump dependencies 2023-10-20 14:00:08 +02:00
Armin Schrenk
652a6f5c4d use environment variables and update current jdk 2023-10-20 13:42:00 +02:00
Armin Schrenk
a7a94099a8 Closes #3075 2023-10-20 13:35:03 +02:00
Armin Schrenk
71a3cbc334 add workflow to check for jdk updates 2023-10-20 13:29:43 +02:00
Armin Schrenk
800b2440b3 Merge pull request #3157 from cryptomator/feature/3113-network-timeout
Time restrict network requests
2023-10-20 12:58:08 +02:00
Sebastian Stenzel
f50a49e7a3 prepare 1.11.0 2023-10-20 12:11:06 +02:00
Sebastian Stenzel
92ece4dfb6 increased request timeout to 10s 2023-10-20 12:06:10 +02:00
Sebastian Stenzel
174225c60e add timeout to OAuth2 requests 2023-10-20 12:03:07 +02:00
Sebastian Stenzel
3071410a22 Merge branch 'develop' into feature/3113-network-timeout 2023-10-20 12:00:16 +02:00
Sebastian Stenzel
5c5777ffc5 Merge pull request #3091 from cryptomator/feature/simplify-out-of-bounds
simplify out-of-bounds check
2023-10-20 11:56:36 +02:00
Sebastian Stenzel
8dd8b93656 Merge pull request #3041 from cryptomator/feature/new-hub-keyloading
Adjusted to Hub 1.3.x API
2023-10-20 11:55:28 +02:00
Armin Schrenk
3b2d455b4a Update dependencies 2023-10-19 17:31:52 +02:00
Sebastian Stenzel
b0dfa22903 removed unused class 2023-10-19 12:49:19 +02:00
Sebastian Stenzel
88b1c28d88 Merge branch 'develop' into feature/new-hub-keyloading 2023-10-19 11:33:13 +02:00
Sebastian Stenzel
5b85d7859a bump webdav-nio-adapter version 2023-10-19 11:28:54 +02:00
Sebastian Stenzel
468eed58d5 cleanup 2023-10-19 10:00:14 +02:00
Sebastian Stenzel
34c17be474 add request timeouts 2023-10-19 10:00:03 +02:00
Sebastian Stenzel
5dedd6b1c1 renamed class again 2023-10-18 11:30:22 +02:00
Sebastian Stenzel
25e8e81686 support apiBaseUrl in hub config 2023-10-18 11:08:42 +02:00
Sebastian Stenzel
1f7ab03bbb undo JEP 443 changes due to bug in javac
leads to invalid class files when built via Maven due to specific combination of javac arguments
2023-10-18 11:01:26 +02:00
Sebastian Stenzel
86f3cb7288 applied suggestions from code review 2023-10-18 09:40:34 +02:00
Sebastian Stenzel
a1b8bf23b4 Merge branch 'develop' into feature/new-hub-keyloading 2023-10-18 09:40:03 +02:00
Sebastian Stenzel
1f21d5ea4c Merge pull request #3129 from cryptomator/feature/jdk21
JDK 21
2023-10-18 09:39:12 +02:00
Sebastian Stenzel
f8ff7201d7 Merge branch 'develop' into feature/new-hub-keyloading 2023-10-18 08:50:34 +02:00
Armin Schrenk
3567c036c3 remove unused imports 2023-10-17 17:25:38 +02:00
Armin Schrenk
0cf1f087ad Closes #3113 2023-10-17 11:36:50 +02:00
Armin Schrenk
209f60727e fix f4ad7aa43d 2023-10-16 16:38:12 +02:00
Armin Schrenk
56624fc079 Replace URL files by hardcoded links in build scripts 2023-10-16 16:35:17 +02:00
Armin Schrenk
218c5243e3 Merge branch 'develop' into feature/uninstall-old-winfsp 2023-10-16 16:29:57 +02:00
Armin Schrenk
560a979e0e Merge pull request #3131 from cryptomator/feature/sign-all-dlls
Feature: Sign all dlls to pass Microsoft Windows Smart App control
2023-10-16 16:21:08 +02:00
Sebastian Stenzel
1debe4c7c8 explicitly set Logback ConfiguratorRank 2023-10-16 16:20:03 +02:00
Sebastian Stenzel
2e2aa77727 update dependencies 2023-10-16 16:19:11 +02:00
Sebastian Stenzel
162ebf6545 Merge branch 'develop' into feature/jdk21 2023-10-16 16:12:10 +02:00
Armin Schrenk
cf09eff640 Use new version of uninstaller:
* logging
* correct reboot
2023-10-13 17:49:48 +02:00
Armin Schrenk
2d503a0edb Merge pull request #3148 from cryptomator/feature/propagate-deleted-discussions
Propagate deleted discussions to the error database
2023-10-13 17:01:45 +02:00
Julian Raufelder
7f7f0a099a Propagate deleted discussions to the error database 2023-10-12 14:11:54 +02:00
Julian Raufelder
109f5d1faa Update the error-db when a discussion is deleted 2023-10-12 10:56:14 +02:00
Armin Schrenk
38a5d40b64 Merge branch 'develop' into feature/uninstall-old-winfsp 2023-10-11 16:14:26 +02:00
Armin Schrenk
9b55f6fc56 Refactor extraction and singing in seperate steps 2023-10-11 12:55:05 +02:00
Sebastian Stenzel
83879f5cfe revert 8e9d54b & 6c5ee14 due to bug in JDK 21
see https://bugs.openjdk.org/browse/JDK-8313323
2023-10-09 16:19:56 +02:00
Armin Schrenk
083ac5a7e0 Merge pull request #3133 from purejava/build-arch
Improve AppImage build script
2023-10-09 13:10:05 +02:00
dependabot[bot]
a7eba377ba Bump org.mockito:mockito-core from 5.5.0 to 5.6.0 (#3142) 2023-10-09 09:58:47 +00:00
dependabot[bot]
4ee1e6d9f1 Bump the github-actions group with 1 update (#3135) 2023-10-04 20:24:43 +00:00
Ralph Plawetzki
24a63c10d0 Build for aarch64 too 2023-09-30 14:54:15 +02:00
Armin Schrenk
0d805b2d43 clean up 2023-09-28 18:34:38 +02:00
Armin Schrenk
7bc47fe6d7 Really fixes #3130 2023-09-28 18:33:26 +02:00
Armin Schrenk
ae50846257 Revert ce466e7715 2023-09-28 18:33:01 +02:00
Armin Schrenk
ce466e7715 fixes #3130 2023-09-28 13:47:51 +02:00
Armin Schrenk
15885545b5 supress some output 2023-09-27 11:13:52 +02:00
Armin Schrenk
29fedcd390 integrate code from test script into github workflow 2023-09-27 10:24:59 +02:00
Armin Schrenk
fadd6b761f add cert import 2023-09-26 17:30:18 +02:00
Armin Schrenk
d857335901 update test script:
* use variables
* use signtool
* find newest signtool version
2023-09-26 16:43:00 +02:00
Armin Schrenk
93b4cbfb2c add test script 2023-09-26 13:42:18 +02:00
Armin Schrenk
625334c6c8 fix windows build script 2023-09-25 16:02:31 +02:00
Sebastian Stenzel
943374856e build using JDK 21 GA 2023-09-25 12:18:01 +02:00
Sebastian Stenzel
e1d7fd92ad Merge branch 'develop' into feature/jdk21
# Conflicts:
#	pom.xml
2023-09-25 12:15:14 +02:00
Sebastian Stenzel
c10dc74818 update integrations-linux to 1.4.0-beta1 2023-09-25 12:12:28 +02:00
Tobias Hagemann
92d9f2c18d try to fix mac build script to be compatible with create-dmg 1.2.0 2023-09-20 15:27:17 +02:00
Armin Schrenk
d7488b6984 fix wrong pom version 2023-09-20 15:16:18 +02:00
Tobias Hagemann
88ad3cd724 Merge branch 'develop' into feature/new-hub-keyloading 2023-09-20 14:38:13 +02:00
Armin Schrenk
ba9e0b0c12 Merge branch 'main' into develop 2023-09-20 11:34:37 +02:00
Armin Schrenk
bbe7255901 Merge branch 'release/1.10.1' 2023-09-20 11:33:39 +02:00
Armin Schrenk
51e55d3e3b finalize 1.10.1 2023-09-20 11:09:37 +02:00
Armin Schrenk
f704dc0de9 prepare 1.10.1 2023-09-20 11:07:50 +02:00
Cryptobot
e858280f30 New Crowdin updates (#3110)
New Crowdin updates (#3110)

New translations strings.properties

Bulgarian; Chinese Traditional; 

[ci skip]
2023-09-20 11:05:33 +02:00
Armin Schrenk
f9b170204a Merge pull request #3118 from cryptomator/feature/3117-disable-update-check
Disable Update Check
2023-09-20 11:02:14 +02:00
Armin Schrenk
0ed7415a0d Merge pull request #3109 from cryptomator/feature/error-dialog-request-with-errorcode
Enhance user agent string when downloading error code database
2023-09-20 11:02:01 +02:00
Armin Schrenk
7a0d50ecca removed unnecessary import 2023-09-20 10:48:26 +02:00
Armin Schrenk
19e035aa33 Merge pull request #3123 from cryptomator/feature/context-menu-focus
Fix addVaultButton misbehavior
2023-09-19 20:56:56 +02:00
Jan-Peter Klein
830970cb75 improved format and naming 2023-09-19 16:29:12 +02:00
Jan-Peter Klein
9b2987d0a2 improved function naming 2023-09-19 16:26:55 +02:00
Armin Schrenk
76a4062f8b update org.cryptomator.integrations:integrations-win from 1.2.2 to 1.2.3 2023-09-19 15:12:45 +02:00
Jan-Peter Klein
113717f955 addVaultButton context menu event filter removed 2023-09-19 15:12:40 +02:00
Jan-Peter Klein
c40ad58028 detached context menu from button to fix misbehavior 2023-09-19 15:03:22 +02:00
Jan-Peter Klein
d6a7efcb7f added OS_NAME, OS_VERSION and OS_ARCH to user-agent 2023-09-19 14:00:45 +02:00
Jan-Peter Klein
910b89d6ce Merge branch 'develop' into feature/error-dialog-request-with-errorcode 2023-09-19 13:19:40 +02:00
Tobias Hagemann
5554dfdd89 fixes #3121 2023-09-19 12:22:24 +02:00
Tobias Hagemann
1657cd50fc fixes #3112 2023-09-19 12:12:27 +02:00
Sebastian Stenzel
57bf5e11b5 Merge branch 'develop' into feature/simplify-out-of-bounds 2023-09-18 19:33:25 +02:00
Sebastian Stenzel
594ca47c85 Merge branch 'develop' into feature/jdk21
# Conflicts:
#	.github/workflows/appimage.yml
#	.github/workflows/mac-dmg.yml
2023-09-18 19:33:06 +02:00
Sebastian Stenzel
6c5ee14c73 rename unused var 2023-09-18 19:29:35 +02:00
Sebastian Stenzel
8e9d54b44b rename unused var 2023-09-18 19:27:28 +02:00
Sebastian Stenzel
70805665bf use features of Java 21 with --enable-preview 2023-09-18 19:21:56 +02:00
Sebastian Stenzel
ac243a706e improve readability 2023-09-18 19:13:03 +02:00
Sebastian Stenzel
aa382ce80d update coffeelibs jdk to 21 2023-09-18 19:10:54 +02:00
Sebastian Stenzel
b7da508ccc Update src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java
Co-authored-by: Bas Ruigrok <Rexbas@proton.me>
2023-09-18 13:19:58 +02:00
Sebastian Stenzel
47bd0ca647 disable update check for PPA builds 2023-09-18 13:10:19 +02:00
Sebastian Stenzel
c5d6c0ce98 add cryptomator.disableUpdateCheck property 2023-09-18 13:03:09 +02:00
Sebastian Stenzel
6017d6b7a9 bump webdav-nio-adapter
containing fixes for CVE-2023-40167, CVE-2023-2976, CVE-2023-37895
2023-09-18 12:34:49 +02:00
Sebastian Stenzel
e31e06b288 added @VisibleForTesting 2023-09-18 10:13:51 +02:00
Sebastian Stenzel
84ac803a7d reordered properties
[ci skip]
2023-09-18 10:10:50 +02:00
Armin Schrenk
bcb970afb1 Update bug.yml
Add missing FUSE option in volume type selection
2023-09-13 13:59:50 +02:00
Jan-Peter Klein
9d640b57ce added build number to user-agent header 2023-09-13 12:31:53 +02:00
Jan-Peter Klein
4c83617847 fixed build error 2023-09-12 18:07:30 +02:00
Jan-Peter Klein
5d7906972b added user-agent header with <product> / <product-version> to HttpRequest 2023-09-12 17:59:08 +02:00
Jan-Peter Klein
666cd4a4f0 enhanced request URI with URLEncoder for errorCode 2023-09-12 17:14:45 +02:00
Jan-Peter Klein
eb4d39e8b4 introduce 'errorCode' parameter in request 2023-09-12 13:34:55 +02:00
Jan-Peter Klein
44ec19122a added port and mountService to vaultSettings 2023-09-12 02:19:08 +02:00
Jan-Peter Klein
8ba2540b35 implemented volume type selection in 'vault options mount' 2023-09-11 14:23:31 +02:00
Armin Schrenk
a1ad89a2e2 Merge branch 'main' into develop [ci skip] 2023-09-11 09:56:35 +02:00
Armin Schrenk
38108299fa Merge branch 'release/1.10.0' 2023-09-11 09:55:14 +02:00
Armin Schrenk
189e2679f1 finalize 1.10.0 2023-09-11 09:53:35 +02:00
Armin Schrenk
22ceb57052 Merge branch 'develop' into release/1.10.0 2023-09-11 09:51:13 +02:00
Armin Schrenk
0130c7cce6 fix local windows build script [ci skip] 2023-09-11 09:50:41 +02:00
Cryptobot
18b6484731 New Crowdin updates (#3095)
New translations strings.properties

Arabic; Chinese Simplified; Filipino; German; Japanese; Norwegian Bokmal; Polish; Portuguese, Brazilian; Spanish; Swedish; Ukrainian; 

[ci skip]
2023-09-11 09:46:49 +02:00
Sebastian Stenzel
f19ff59005 add suffix to uploaded artifacts 2023-09-06 16:47:29 +02:00
Sebastian Stenzel
8786b5ee2a can't use env vars in matrix builds 2023-09-06 16:43:58 +02:00
Sebastian Stenzel
c7e23f9646 build AppImage for aarch64 2023-09-06 16:40:00 +02:00
Sebastian Stenzel
4043e3f71f build using JDK 21 2023-09-06 16:22:41 +02:00
Tobias Hagemann
08887f1147 Merge branch 'develop' into feature/new-hub-keyloading 2023-09-06 14:18:11 +02:00
Sebastian Stenzel
13a0578ab7 fix checksum file format 2023-09-06 13:05:01 +02:00
Sebastian Stenzel
888bf04ec2 fix workflow files 2023-09-06 13:01:48 +02:00
Sebastian Stenzel
d0822041ec renamed workflow file 2023-09-06 12:58:08 +02:00
Sebastian Stenzel
e65a57bba9 harmonize workflow files
in regards to JDK distribution and OpenJFX downloads
2023-09-06 12:57:41 +02:00
Armin Schrenk
2bb1b09789 Merge pull request #3097 from cryptomator/dependabot/maven/maven-dependencies-a3030d6477
Bump the maven-dependencies group with 3 updates
2023-09-04 14:00:36 +02:00
dependabot[bot]
b83dad4e24 Bump the maven-dependencies group with 3 updates
Bumps the maven-dependencies group with 3 updates: org.slf4j:slf4j-api, [com.google.dagger:dagger](https://github.com/google/dagger) and [com.google.dagger:dagger-compiler](https://github.com/google/dagger).


Updates `org.slf4j:slf4j-api` from 2.0.7 to 2.0.9

Updates `com.google.dagger:dagger` from 2.47 to 2.48
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/dagger/compare/dagger-2.47...dagger-2.48)

Updates `com.google.dagger:dagger-compiler` from 2.47 to 2.48
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/dagger/compare/dagger-2.47...dagger-2.48)

---
updated-dependencies:
- dependency-name: org.slf4j:slf4j-api
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: maven-dependencies
- dependency-name: com.google.dagger:dagger
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: maven-dependencies
- dependency-name: com.google.dagger:dagger-compiler
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: maven-dependencies
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-04 06:48:51 +00:00
Armin Schrenk
4bb28f4286 Merge branch 'develop' into release/1.10.0 2023-09-01 16:14:16 +02:00
Cryptobot
721cdf20e7 New Crowdin updates (#3071)
New translations strings.properties

Arabic; Belarusian; Bengali; Bosnian; Bulgarian; Catalan; Chinese Simplified; Chinese Traditional; Chinese Traditional, Hong Kong; Croatian; Czech; Danish; Dutch; Filipino; Finnish; French; Galician; German; Greek; Hebrew; Hindi; Hungarian; Indonesian; Italian; Japanese; Korean; Latvian; Macedonian; Norwegian Bokmal; Norwegian Nynorsk; Persian; Polish; Portuguese; Portuguese, Brazilian; Punjabi; Romanian; Russian; Serbian (Cyrillic); Serbian (Latin); Sinhala; Slovak; Slovenian; Spanish; Swahili, Tanzania; Swedish; Tamil; Telugu; Thai; Turkish; Ukrainian; Vietnamese; 

[ci skip]
2023-09-01 16:13:46 +02:00
Armin Schrenk
cf248c5cbc Merge pull request #3080 from purejava/fix-3079
Bring up the main window from the tray on pressing "Show" on the tray…
2023-09-01 16:06:15 +02:00
Armin Schrenk
151ca75e5f Merge branch 'develop' into release/1.10.0 2023-09-01 15:43:44 +02:00
mindmonk
0e52b7aff4 Merge pull request #3082 from cryptomator/feature/add-vault-button-to-dropdown
UI Enhancement: Improved 'Add Vault' Button Functionality
2023-08-31 15:39:12 +02:00
Jan-Peter Klein
3a0199a1e5 updated menuItemExisting to display folder icon instead of plus icon 2023-08-31 12:17:57 +02:00
Jan-Peter Klein
50e96095ba moved the context menu creation code to the fxml file 2023-08-31 11:49:49 +02:00
Jan-Peter Klein
2f5bce6229 Merge branch 'develop' into feature/add-vault-button-to-dropdown 2023-08-30 12:06:41 +02:00
Armin Schrenk
06f288ef76 only execute winfsp-uninstaller on install or repair 2023-08-29 17:51:05 +02:00
Armin Schrenk
ffcad9f1ec reformat 2023-08-29 17:32:49 +02:00
Armin Schrenk
031dc8a31a bump exe uninstaller to new version and skip uninstaller on bundle uninstall 2023-08-29 17:25:43 +02:00
Sebastian Stenzel
62f50ce366 rename groups
[ci skip]
2023-08-29 07:52:37 +02:00
dependabot[bot]
864c1c9c0d Bump the all group with 1 update (#3089)
Bumps the all group with 1 update: [org.mockito:mockito-core](https://github.com/mockito/mockito).

- [Release notes](https://github.com/mockito/mockito/releases)
- [Commits](https://github.com/mockito/mockito/compare/v5.4.0...v5.5.0)

---
updated-dependencies:
- dependency-name: org.mockito:mockito-core
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: all
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-29 07:48:37 +02:00
Sebastian Stenzel
cfd433b328 revert to simple of of bounds check
as suggested in https://github.com/cryptomator/cryptomator/pull/3017#discussion_r1264527894 with minor adjustments
2023-08-29 07:26:46 +02:00
Tobias Hagemann
ad97338f9b fixes #2517 2023-08-28 15:13:24 +02:00
Armin Schrenk
5d596f4fd0 Merge pull request #3017 from Rexbas/out_of_bounds_fix
Reset position when out of display bounds
2023-08-28 14:58:52 +02:00
Rexbas
aa14d79642 Restore a closed minimized window at (-32000, -32000) to the last saved position
Fixes #3079, second scenario.
2023-08-23 18:57:04 +02:00
Rexbas
745d435a57 Remove displayConfiguration from settings 2023-08-23 18:57:04 +02:00
Rexbas
094a7c6a20 Check display bounds onShowing event 2023-08-23 18:57:04 +02:00
Rexbas
aedbefc38a Reset window position when out of display bounds 2023-08-23 18:57:00 +02:00
dependabot[bot]
0cd3cf9e1c Merge pull request #3081 from cryptomator/dependabot/maven/all-f18bb33e46 2023-08-23 13:51:07 +00:00
Armin Schrenk
422efcc89f [ci skip] use new version of winfsp-uninstaller 2023-08-23 15:43:57 +02:00
Jan-Peter Klein
ef24141713 new stage titles for addNewVault and addExistingVault 2023-08-23 13:36:41 +02:00
Jan-Peter Klein
820d4ff573 disabled right click on add vault button and enhanced naming 2023-08-23 13:17:38 +02:00
Armin Schrenk
c1c0c2e82f [ci skip] use new version of winfsp-uninstaller 2023-08-22 10:47:18 +02:00
Jan-Peter Klein
f024f0ee5d Merge branch 'develop' into feature/add-vault-button-to-dropdown 2023-08-21 13:06:13 +02:00
Jan-Peter Klein
a038b34e29 implemented enhanced styling for MenuItems 2023-08-21 13:05:42 +02:00
dependabot[bot]
4cc516def6 Bump the all group with 2 updates
Bumps the all group with 2 updates: [com.nulab-inc:zxcvbn](https://github.com/nulab/zxcvbn4j) and [org.owasp:dependency-check-maven](https://github.com/jeremylong/DependencyCheck).


Updates `com.nulab-inc:zxcvbn` from 1.8.0 to 1.8.2
- [Release notes](https://github.com/nulab/zxcvbn4j/releases)
- [Changelog](https://github.com/nulab/zxcvbn4j/blob/main/CHANGELOG.md)
- [Commits](https://github.com/nulab/zxcvbn4j/compare/1.8.0...1.8.2)

Updates `org.owasp:dependency-check-maven` from 8.3.1 to 8.4.0
- [Release notes](https://github.com/jeremylong/DependencyCheck/releases)
- [Changelog](https://github.com/jeremylong/DependencyCheck/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jeremylong/DependencyCheck/compare/v8.3.1...v8.4.0)

---
updated-dependencies:
- dependency-name: com.nulab-inc:zxcvbn
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: org.owasp:dependency-check-maven
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-21 07:01:49 +00:00
Ralph Plawetzki
bb1095eb78 Bring up the main window from the tray on pressing "Show" on the tray menu for Windows
Fixes #3079
2023-08-19 19:14:46 +02:00
Armin Schrenk
4c11190be9 Improve error template 2023-08-18 15:11:19 +02:00
Armin Schrenk
c6790fec70 [ci skip] use new version of winfsp-uninstaller 2023-08-17 12:01:58 +02:00
Tobias Hagemann
8a7a5eeea1 fixed grammar 2023-08-16 17:17:27 +02:00
Jan-Peter Klein
34328c10bf changed add vault icon to caret down and set contentDisplay RIGHT 2023-08-15 16:31:42 +02:00
Jan-Peter Klein
c4d503c8d5 removed unused import 2023-08-15 16:24:07 +02:00
Jan-Peter Klein
5fdf5141a5 removed addVaultWelcome stuff 2023-08-15 14:47:47 +02:00
Jan-Peter Klein
9be00a2693 removed didClickAddVault and added SHORTCUT_O 2023-08-15 14:34:06 +02:00
Jan-Peter Klein
17778f32b9 expanded functionality: implemented showAddNewVaultWizard and showAddExistingVaultWizard functions 2023-08-15 14:30:55 +02:00
Armin Schrenk
bcbdad99bc Closes #1929 2023-08-14 17:26:44 +02:00
Jan-Peter Klein
1e6d2bb6fb enhanced ui by introducing context menu for 'add vault' button 2023-08-14 17:15:17 +02:00
Armin Schrenk
e9ef122e7f Merge branch 'develop' into feature/uninstall-old-winfsp 2023-08-14 15:13:11 +02:00
Armin Schrenk
57fee3e428 Adding plugin to display junit tests properly in console 2023-08-14 13:44:47 +02:00
Armin Schrenk
4ea45e937a extract mvn build plugin versions to own properties 2023-08-14 10:50:05 +02:00
Armin Schrenk
dc80d79da0 Merge pull request #3073 from cryptomator/dependabot/maven/all-f66be4cce2
Bump the all group with 20 updates
2023-08-14 10:42:34 +02:00
Armin Schrenk
57f68376fe Merge branch 'develop' into release/1.10.0 2023-08-14 10:28:13 +02:00
dependabot[bot]
f47cfa60c5 Bump the all group with 20 updates
Bumps the all group with 20 updates:

| Package | Update |
| --- | --- |
| [ch.qos.logback:logback-core](https://github.com/qos-ch/logback) | 1.4.7 to 1.4.11 |
| [ch.qos.logback:logback-classic](https://github.com/qos-ch/logback) | 1.4.7 to 1.4.11 |
| org.apache.commons:commons-lang3 | 3.12.0 to 3.13.0 |
| [io.github.coffeelibs:tiny-oauth2-client](https://github.com/coffeelibs/tiny-oauth2-client) | 0.5.1 to 0.6.0 |
| [com.nulab-inc:zxcvbn](https://github.com/nulab/zxcvbn4j) | 1.7.0 to 1.8.0 |
| [com.google.guava:guava](https://github.com/google/guava) | 32.0.1-jre to 32.1.2-jre |
| [com.google.dagger:dagger](https://github.com/google/dagger) | 2.45 to 2.47 |
| [com.google.dagger:dagger-compiler](https://github.com/google/dagger) | 2.45 to 2.47 |
| [org.junit.jupiter:junit-jupiter](https://github.com/junit-team/junit5) | 5.9.3 to 5.10.0 |
| [org.mockito:mockito-core](https://github.com/mockito/mockito) | 5.3.1 to 5.4.0 |
| [com.google.jimfs:jimfs](https://github.com/google/jimfs) | 1.2 to 1.3.0 |
| [org.jetbrains:annotations](https://github.com/JetBrains/java-annotations) | 23.0.0 to 24.0.1 |
| [org.cryptomator:integrations-mac](https://github.com/cryptomator/integrations-mac) | 1.2.0 to 1.2.1 |
| [org.apache.maven.plugins:maven-compiler-plugin](https://github.com/apache/maven-compiler-plugin) | 3.10.1 to 3.11.0 |
| [org.apache.maven.plugins:maven-resources-plugin](https://github.com/apache/maven-resources-plugin) | 3.3.0 to 3.3.1 |
| [org.apache.maven.plugins:maven-dependency-plugin](https://github.com/apache/maven-dependency-plugin) | 3.3.0 to 3.6.0 |
| [org.apache.maven.plugins:maven-surefire-plugin](https://github.com/apache/maven-surefire) | 3.0.0-M7 to 3.1.2 |
| [org.codehaus.mojo:license-maven-plugin](https://github.com/mojohaus/license-maven-plugin) | 2.0.0 to 2.2.0 |
| [org.jacoco:jacoco-maven-plugin](https://github.com/jacoco/jacoco) | 0.8.9 to 0.8.10 |
| [org.owasp:dependency-check-maven](https://github.com/jeremylong/DependencyCheck) | 8.1.2 to 8.3.1 |


Updates `ch.qos.logback:logback-core` from 1.4.7 to 1.4.11
- [Commits](https://github.com/qos-ch/logback/compare/v_1.4.7...v_1.4.11)

Updates `ch.qos.logback:logback-classic` from 1.4.7 to 1.4.11
- [Commits](https://github.com/qos-ch/logback/compare/v_1.4.7...v_1.4.11)

Updates `org.apache.commons:commons-lang3` from 3.12.0 to 3.13.0

Updates `io.github.coffeelibs:tiny-oauth2-client` from 0.5.1 to 0.6.0
- [Release notes](https://github.com/coffeelibs/tiny-oauth2-client/releases)
- [Commits](https://github.com/coffeelibs/tiny-oauth2-client/compare/0.5.1...0.6.0)

Updates `com.nulab-inc:zxcvbn` from 1.7.0 to 1.8.0
- [Release notes](https://github.com/nulab/zxcvbn4j/releases)
- [Changelog](https://github.com/nulab/zxcvbn4j/blob/master/CHANGELOG.md)
- [Commits](https://github.com/nulab/zxcvbn4j/compare/1.7.0...1.8.0)

Updates `com.google.guava:guava` from 32.0.1-jre to 32.1.2-jre
- [Release notes](https://github.com/google/guava/releases)
- [Commits](https://github.com/google/guava/commits)

Updates `com.google.dagger:dagger` from 2.45 to 2.47
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/dagger/compare/dagger-2.45...dagger-2.47)

Updates `com.google.dagger:dagger-compiler` from 2.45 to 2.47
- [Release notes](https://github.com/google/dagger/releases)
- [Changelog](https://github.com/google/dagger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/google/dagger/compare/dagger-2.45...dagger-2.47)

Updates `org.junit.jupiter:junit-jupiter` from 5.9.3 to 5.10.0
- [Release notes](https://github.com/junit-team/junit5/releases)
- [Commits](https://github.com/junit-team/junit5/compare/r5.9.3...r5.10.0)

Updates `org.mockito:mockito-core` from 5.3.1 to 5.4.0
- [Release notes](https://github.com/mockito/mockito/releases)
- [Commits](https://github.com/mockito/mockito/compare/v5.3.1...v5.4.0)

Updates `com.google.jimfs:jimfs` from 1.2 to 1.3.0
- [Release notes](https://github.com/google/jimfs/releases)
- [Commits](https://github.com/google/jimfs/compare/v1.2...v1.3.0)

Updates `org.jetbrains:annotations` from 23.0.0 to 24.0.1
- [Release notes](https://github.com/JetBrains/java-annotations/releases)
- [Changelog](https://github.com/JetBrains/java-annotations/blob/master/CHANGELOG.md)
- [Commits](https://github.com/JetBrains/java-annotations/compare/23.0.0...24.0.1)

Updates `org.cryptomator:integrations-mac` from 1.2.0 to 1.2.1
- [Release notes](https://github.com/cryptomator/integrations-mac/releases)
- [Commits](https://github.com/cryptomator/integrations-mac/compare/1.2.0...1.2.1)

Updates `org.apache.maven.plugins:maven-compiler-plugin` from 3.10.1 to 3.11.0
- [Release notes](https://github.com/apache/maven-compiler-plugin/releases)
- [Commits](https://github.com/apache/maven-compiler-plugin/compare/maven-compiler-plugin-3.10.1...maven-compiler-plugin-3.11.0)

Updates `org.apache.maven.plugins:maven-resources-plugin` from 3.3.0 to 3.3.1
- [Release notes](https://github.com/apache/maven-resources-plugin/releases)
- [Commits](https://github.com/apache/maven-resources-plugin/compare/maven-resources-plugin-3.3.0...maven-resources-plugin-3.3.1)

Updates `org.apache.maven.plugins:maven-dependency-plugin` from 3.3.0 to 3.6.0
- [Commits](https://github.com/apache/maven-dependency-plugin/compare/maven-dependency-plugin-3.3.0...maven-dependency-plugin-3.6.0)

Updates `org.apache.maven.plugins:maven-surefire-plugin` from 3.0.0-M7 to 3.1.2
- [Release notes](https://github.com/apache/maven-surefire/releases)
- [Commits](https://github.com/apache/maven-surefire/compare/surefire-3.0.0-M7...surefire-3.1.2)

Updates `org.codehaus.mojo:license-maven-plugin` from 2.0.0 to 2.2.0
- [Release notes](https://github.com/mojohaus/license-maven-plugin/releases)
- [Commits](https://github.com/mojohaus/license-maven-plugin/compare/license-maven-plugin-2.0.0...2.2.0)

Updates `org.jacoco:jacoco-maven-plugin` from 0.8.9 to 0.8.10
- [Release notes](https://github.com/jacoco/jacoco/releases)
- [Commits](https://github.com/jacoco/jacoco/compare/v0.8.9...v0.8.10)

Updates `org.owasp:dependency-check-maven` from 8.1.2 to 8.3.1
- [Release notes](https://github.com/jeremylong/DependencyCheck/releases)
- [Changelog](https://github.com/jeremylong/DependencyCheck/blob/main/CHANGELOG.md)
- [Commits](https://github.com/jeremylong/DependencyCheck/compare/v8.1.2...v8.3.1)

---
updated-dependencies:
- dependency-name: ch.qos.logback:logback-core
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: ch.qos.logback:logback-classic
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: org.apache.commons:commons-lang3
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: io.github.coffeelibs:tiny-oauth2-client
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: com.nulab-inc:zxcvbn
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: com.google.guava:guava
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: com.google.dagger:dagger
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: com.google.dagger:dagger-compiler
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: org.junit.jupiter:junit-jupiter
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: org.mockito:mockito-core
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: com.google.jimfs:jimfs
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: org.jetbrains:annotations
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: all
- dependency-name: org.cryptomator:integrations-mac
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: org.apache.maven.plugins:maven-compiler-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: org.apache.maven.plugins:maven-resources-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: org.apache.maven.plugins:maven-dependency-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: org.apache.maven.plugins:maven-surefire-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: org.codehaus.mojo:license-maven-plugin
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
- dependency-name: org.jacoco:jacoco-maven-plugin
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
- dependency-name: org.owasp:dependency-check-maven
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: all
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-14 06:46:37 +00:00
Julian Raufelder
de78cd014d Merge branch 'main' into develop 2023-08-11 16:44:23 +02:00
Julian Raufelder
9db53f73e2 Merge branch 'hotfix/1.9.4' 2023-08-11 16:07:37 +02:00
Julian Raufelder
e5f0aca477 Finalize 1.9.4 2023-08-11 15:54:50 +02:00
Julian Raufelder
261f2da105 Prepare 1.9.4 2023-08-11 15:53:26 +02:00
Julian Raufelder
ef4738f920 Use latest version of Java to avoid using an out of date version when building the release
See https://github.com/actions/setup-java/tree/main#check-latest for further information
2023-08-11 15:52:42 +02:00
Armin Schrenk
f23348eda2 Merge branch 'develop' into release/1.10.0 2023-08-09 22:56:05 +02:00
Armin Schrenk
6edfaf3eb6 fix windows installer ci script 2023-08-09 22:55:32 +02:00
Armin Schrenk
9d02035263 Merge branch 'develop' into release/1.10.0 2023-08-09 21:04:54 +02:00
Armin Schrenk
8bbcb86bfc fix windows build script 2023-08-09 20:59:13 +02:00
Armin Schrenk
abdc8672f1 update org.openjdk:javafx from 20.0.1 to 20.0.2 2023-08-09 20:41:14 +02:00
Armin Schrenk
333c7457ca bump org.cryptomator:cryptofs from 2.6.6 to 2.6.7 2023-08-09 20:23:51 +02:00
Cryptobot
9b9a354902 New Crowdin updates (#3029)
New translations strings.properties

Arabic; Belarusian; Bengali; Bosnian; Bulgarian; Catalan; Chinese Simplified; Chinese Traditional; Chinese Traditional, Hong Kong; Croatian; Czech; Danish; Dutch; Filipino; Finnish; French; Galician; German; Greek; Hebrew; Hindi; Hungarian; Indonesian; Italian; Japanese; Korean; Latvian; Macedonian; Norwegian Bokmal; Norwegian Nynorsk; Persian; Polish; Portuguese; Portuguese, Brazilian; Punjabi; Romanian; Russian; Serbian (Cyrillic); Serbian (Latin); Sinhala; Slovak; Slovenian; Spanish; Swahili, Tanzania; Swedish; Tamil; Telugu; Thai; Turkish; Ukrainian; Vietnamese; 

[ci skip]
2023-08-09 15:26:10 +02:00
Sebastian Stenzel
f48963a6d0 Merge branch 'develop' into feature/new-hub-keyloading
# Conflicts:
#	src/main/java/org/cryptomator/ui/keyloading/hub/ReceiveKeyController.java
2023-08-09 15:26:03 +02:00
Sebastian Stenzel
83b2ff8ce8 fixes #3051 2023-08-09 15:20:32 +02:00
dependabot[bot]
b7f514e16b Bump the all group with 2 updates (#3066)
Bumps the all group with 2 updates: [actions/checkout](https://github.com/actions/checkout) and [SamKirkland/FTP-Deploy-Action](https://github.com/samkirkland/ftp-deploy-action).


Updates `actions/checkout` from 2 to 3
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2...v3)

Updates `SamKirkland/FTP-Deploy-Action` from 4.3.0 to 4.3.4
- [Release notes](https://github.com/samkirkland/ftp-deploy-action/releases)
- [Commits](https://github.com/samkirkland/ftp-deploy-action/compare/4.3.0...v4.3.4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: all
- dependency-name: SamKirkland/FTP-Deploy-Action
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: all
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-09 15:03:35 +02:00
Sebastian Stenzel
5c4c59fe18 add dependabot config 2023-08-09 13:19:23 +02:00
mindmonk
296ae20cc2 Merge pull request #3060 from cryptomator/feature/error-dialog-lookup-permission
Ask before looking up error code
2023-08-07 16:25:40 +02:00
Jan-Peter Klein
7af5e00d71 clean up imports 2023-08-07 15:11:10 +02:00
Jan-Peter Klein
deaf71b4ce Merge branch 'develop' into feature/error-dialog-lookup-permission 2023-08-07 15:08:44 +02:00
Jan-Peter Klein
27f3d85ae2 renamed lookupDatabaseUserPermission to askedForLookupDatabasePermission 2023-08-07 15:08:25 +02:00
Jan-Peter Klein
f91a854b3e removed more info hyperlink and fixed ui by moving isLoadingHttpResponse.set(true) 2023-08-07 14:56:01 +02:00
Armin Schrenk
be7b265a00 Merge branch 'main' into develop
# Conflicts:
#	pom.xml
2023-08-07 10:27:13 +02:00
Armin Schrenk
34c0f1d13e Merge branch 'hotfix/1.9.3' 2023-08-07 10:26:43 +02:00
Armin Schrenk
da21c7fa80 suppress false positive
cherry picked from 9bd5b45ea7
2023-08-07 10:25:42 +02:00
Armin Schrenk
9ae9473b95 finalize 1.9.3 2023-08-07 10:19:04 +02:00
Armin Schrenk
32a17407de Add -NoProfile to windows build script to follow best practices 2023-08-07 10:15:25 +02:00
Tobias Hagemann
727c32ad50 Merge pull request from GHSA-62gx-54j7-mjh3
Add -NoProfile option to powershell scripts run during windows installer
2023-08-07 10:14:45 +02:00
Armin Schrenk
d939e91661 prepare 1.9.3 2023-08-07 10:04:08 +02:00
Armin Schrenk
151f2babd8 Add NoProfile option to powershell scripts run during windows instaler
Closes #GHSA-62gx-54j7-mjh3
2023-08-07 10:02:39 +02:00
Jan-Peter Klein
76340f31d1 undo changes in REPORT_BODY_TEMPLATE 2023-08-04 17:23:35 +02:00
Jan-Peter Klein
b2f2d3ac36 Merge branch 'develop' into feature/error-dialog-lookup-permission 2023-08-04 17:03:26 +02:00
Armin Schrenk
9bd5b45ea7 suppress false positive in dependecy-check (jackrabbit-webdav) 2023-08-04 17:01:19 +02:00
Jan-Peter Klein
a17b2029ec moved isLoadingHttpResponse.set(true) into void loadHttpResponse 2023-08-04 16:51:28 +02:00
Jan-Peter Klein
4c819807de implemented 'More Info...' hyperlink functionality 2023-08-04 16:12:01 +02:00
Jan-Peter Klein
175e05aae4 Merge branch 'develop' into feature/error-dialog-lookup-permission 2023-08-03 12:54:01 +02:00
Jan-Peter Klein
fa3e0efd12 init commit
added new string properties
added ui elements for user permission to look up error solutions in database
modified ErrorController for permission handling
2023-08-03 12:53:44 +02:00
Armin Schrenk
d08d992768 Bump integrations-win to 1.2.2 2023-08-02 09:44:31 +02:00
Armin Schrenk
7f0c92e2f0 Bump integrations-linux to 1.3.0-beta6
Fixes #3020
2023-08-02 09:44:18 +02:00
Armin Schrenk
f4ad7aa43d References #3045
Use different encoding reading process output
2023-08-01 16:29:36 +02:00
Armin Schrenk
40611b4ebe improve wording 2023-08-01 10:48:42 +02:00
Sebastian Stenzel
1f09a3fa3a allow notarization on manually dispatched builds 2023-08-01 10:04:34 +02:00
Sebastian Stenzel
7d7b88829d allow notarization on manually dispatched builds 2023-08-01 10:04:07 +02:00
Sebastian Stenzel
4078abeb33 Merge branch 'feature/fix-macOS-build' into release/1.10.0 2023-08-01 09:42:29 +02:00
Julian Raufelder
6f6c3936aa Merge pull request #3039 from cryptomator/feature/change-error-codes-url
Change error codes URL
2023-07-29 10:04:50 +00:00
Julian Raufelder
6771963686 Merge pull request #3038 from cryptomator/feature/change-update-check-url
Change update check URL
2023-07-29 10:04:28 +00:00
Julian Raufelder
ab409152e3 Change error codes URL 2023-07-28 16:14:58 +02:00
Sebastian Stenzel
6ce34efb52 Merge branch 'develop' into feature/new-hub-keyloading 2023-07-28 15:23:00 +02:00
Julian Raufelder
f92cf9c9e0 Change update check URL 2023-07-27 15:49:38 +02:00
Armin Schrenk
8b9d5d136e Merge pull request #3033 from cryptomator/feature/fix-macOS-build
CI: Use Temurin JVM+JFX Jmods from Gluon instead of Zulu JVM+FX

Fixes #3030
2023-07-26 19:53:48 +02:00
Armin Schrenk
3071cfbfb1 Merge pull request #2885 from purejava/libappindicator
appindicator support

Closes #1645
2023-07-26 14:25:55 +02:00
Armin Schrenk
1a153e1f6e Merge branch 'develop' into libappindicator 2023-07-26 14:18:42 +02:00
Armin Schrenk
b0a7c23055 correct comment 2023-07-26 14:16:07 +02:00
Armin Schrenk
27ca6591ea Apply suggestions from code review
Co-authored-by: Sebastian Stenzel <overheadhunter@users.noreply.github.com>
2023-07-26 13:01:14 +02:00
Armin Schrenk
ad3d36e06a check sha256 sum of downloaded artifact in ci 2023-07-26 11:37:05 +02:00
Armin Schrenk
83e91d361f fix errors in build script 2023-07-25 17:29:34 +02:00
JaniruTEC
221b4e85bc Merge pull request #2996 from cryptomator/feature/2856-folder-mounts-win
Improve handling of folder-mounts on Win
2023-07-25 15:51:18 +02:00
JaniruTEC
b536bd3e09 Applied suggestions from code review
Added exception to method signature
Renamed enum constant

See:
https://github.com/cryptomator/cryptomator/pull/2996#discussion_r1273497818
https://github.com/cryptomator/cryptomator/pull/2996#discussion_r1273499227
2023-07-25 15:33:16 +02:00
Armin Schrenk
b73993c375 add jfx to module path 2023-07-25 14:43:29 +02:00
JaniruTEC
ae392b4014 Refactored "handleMountPointFolder" (now: "getMountPointState")
See: https://github.com/cryptomator/cryptomator/pull/2996#discussion_r1273277804
2023-07-25 13:34:39 +02:00
JaniruTEC
1c34402c87 Applied minor corrections
See:
https://github.com/cryptomator/cryptomator/pull/2996#discussion_r1273277251
https://github.com/cryptomator/cryptomator/pull/2996#discussion_r1273280687
https://github.com/cryptomator/cryptomator/pull/2996#discussion_r1273287847
2023-07-25 13:17:21 +02:00
Armin Schrenk
a415e3b0a9 update local build script to download jfx jmods 2023-07-25 13:08:19 +02:00
Armin Schrenk
e41a33d250 fixes #3030 2023-07-25 13:07:40 +02:00
JaniruTEC
587cff9518 Added more tests 2023-07-24 19:22:47 +02:00
JaniruTEC
ea8e850aa9 Moved check for dir/emptiness to "handleMountPointFolder" 2023-07-24 19:15:22 +02:00
JaniruTEC
9bb24320bf Stopped user from mounting to vaults to the same path 2023-07-24 18:53:19 +02:00
Armin Schrenk
108df3ddbc Merge branch 'main' into develop
# Conflicts:
#	pom.xml
#	suppression.xml
2023-07-24 16:38:18 +02:00
Armin Schrenk
9ca1ff1a2d Merge branch 'hotfix/1.9.2' 2023-07-24 16:35:33 +02:00
Armin Schrenk
164a350e7e finalize 1.9.2 2023-07-24 16:34:49 +02:00
Tobias Hagemann
b48ebd524b Merge pull request from GHSA-9c9p-c3mg-hpjq
Fix LPE in win installer
2023-07-24 16:23:23 +02:00
Armin Schrenk
7ba9d4de4f Merge branch 'hotfix/1.9.2' into feature/fix-lpe-win-installer 2023-07-24 16:21:54 +02:00
Armin Schrenk
807e718d13 supress non affecting cve
(cherry picked from commit 4e3b2e0be0)
2023-07-24 15:38:42 +02:00
Armin Schrenk
6efb839fd0 prepare 1.10.0 2023-07-24 15:00:28 +02:00
Cryptobot
ca71bb207f New Crowdin updates (#2945)
New translations strings.properties

Arabic; Belarusian; Bengali; Bosnian; Bulgarian; Catalan; Chinese Simplified; Chinese Traditional; Chinese Traditional, Hong Kong; Croatian; Czech; Danish; Dutch; Filipino; Finnish; French; Galician; German; Greek; Hebrew; Hindi; Hungarian; Indonesian; Italian; Japanese; Korean; Latvian; Macedonian; Norwegian Bokmal; Norwegian Nynorsk; Persian; Polish; Portuguese; Portuguese, Brazilian; Punjabi; Romanian; Russian; Serbian (Cyrillic); Serbian (Latin); Sinhala; Slovak; Slovenian; Spanish; Swahili, Tanzania; Swedish; Tamil; Telugu; Thai; Turkish; Ukrainian; Vietnamese; 

[ci skip]
2023-07-24 14:58:36 +02:00
Armin Schrenk
0800c53aac update to uninstaller-beta4 2023-07-24 10:36:23 +02:00
Armin Schrenk
8ed1878035 prepare 1.9.2 2023-07-21 17:07:33 +02:00
Armin Schrenk
4e3b2e0be0 supress non affecting cve 2023-07-21 16:50:27 +02:00
JaniruTEC
59d89faf38 Turned calls to "assumeTrue" into guard functions
See: https://github.com/cryptomator/cryptomator/pull/2996#discussion_r1270734307
2023-07-21 16:48:33 +02:00
JaniruTEC
ca3a11de90 Made AtomicReference to mountHandle final
[ci skip]
2023-07-21 16:37:08 +02:00
Armin Schrenk
c2819963d2 Replace custom actions executing bat files to by quiet exec custom actions to surpress shown command prompts
Closes #GHSA-9c9p-c3mg-hpjq

(cherry picked from commit fb1ba6390dfcb7028be0eb051b893b744c0444dc)
2023-07-21 16:05:21 +02:00
JaniruTEC
8f67404766 Fixed method violating API contract
See: https://github.com/cryptomator/cryptomator/pull/2996#discussion_r1269458822
2023-07-21 15:35:56 +02:00
mindmonk
91ece74f57 Merge pull request #2998 from cryptomator/feature/update-reminder
Update Reminder
2023-07-21 09:46:48 +02:00
JaniruTEC
1942850888 Replaced OS-Check with Assumptions
See: https://github.com/cryptomator/cryptomator/pull/2996#discussion_r1269461956
2023-07-20 16:44:49 +02:00
JaniruTEC
821cc0940d Stopped wrapping IOEs as UncheckedIOEs
See:
https://github.com/cryptomator/cryptomator/pull/2996#discussion_r1269444937
https://github.com/cryptomator/cryptomator/pull/2996#discussion_r1269445672
https://github.com/cryptomator/cryptomator/pull/2996#discussion_r1269445894
2023-07-20 16:34:51 +02:00
Jan-Peter Klein
b9f77cb1d6 Merge branch 'develop' into feature/update-reminder 2023-07-20 11:32:12 +02:00
Jan-Peter Klein
b6d09016cd rearranged layout elements and changed window width 2023-07-20 11:31:52 +02:00
Jan-Peter Klein
0a07103a4f moved logic of update checking from FxApplication class to UpdateReminderComponent 2023-07-20 11:06:55 +02:00
Jan-Peter Klein
96253f636a removed unused provide method 2023-07-20 11:05:50 +02:00
JaniruTEC
419a7ab245 Fixed faulty unit test 2023-07-19 23:53:58 +02:00
JaniruTEC
a29ebfd302 Updated error message 2023-07-19 23:39:11 +02:00
JaniruTEC
73da954355 Merge branch 'feature/3001-more-error-messages' into feature/2856-folder-mounts-win
# Conflicts:
# src/main/java/org/cryptomator/common/mount/MountWithinParentUtil.java
# src/main/resources/i18n/strings.properties
2023-07-19 23:38:20 +02:00
Armin Schrenk
c6ab05979c cleanup [ci skip] 2023-07-19 16:33:40 +02:00
Armin Schrenk
2c8d5d3d5d update ci script 2023-07-19 16:30:08 +02:00
Armin Schrenk
b76a311ddc Replace winfsp-uninstaller by downloadlink 2023-07-19 16:24:44 +02:00
JaniruTEC
879e6dcab7 Updated error message
See: https://github.com/cryptomator/cryptomator/pull/3001#discussion_r1268035540
2023-07-19 16:10:48 +02:00
JaniruTEC
f9f8a6b357 Added unit tests for MountWithinParentUtil 2023-07-19 15:39:14 +02:00
JaniruTEC
3ea6da3c6d Fixed thrown exception 2023-07-19 15:36:23 +02:00
JaniruTEC
bb0b1b3592 Cleaned up merge 2023-07-19 15:36:22 +02:00
JaniruTEC
0b6782d44b Refactored error message to use ObservableValues 2023-07-18 20:11:24 +02:00
Armin Schrenk
bd932b1067 Fixes #3021 2023-07-18 17:06:03 +02:00
Armin Schrenk
238aaeb5a0 bump integrations-api to stable version 2023-07-18 12:40:06 +02:00
Jan-Peter Klein
ade277daf4 changed naming pattern and wording 2023-07-18 10:29:14 +02:00
Jan-Peter Klein
14776fc571 refactored UpdateReminderComponent.Builder to Factory 2023-07-17 15:40:11 +02:00
Jan-Peter Klein
c18f489e9d Merge branch 'develop' into feature/update-reminder 2023-07-17 15:32:25 +02:00
Jan-Peter Klein
bfc1e25335 some code cleanup 2023-07-17 12:23:23 +02:00
Jan-Peter Klein
4c2e6088a9 reformat code and optimized imports 2023-07-17 11:26:59 +02:00
JaniruTEC
ed6f1ad8d1 Merge branch 'feature/3001-more-error-messages' into feature/2856-folder-mounts-win
# Conflicts:
#	src/main/java/org/cryptomator/common/mount/MountWithinParentUtil.java
2023-07-14 23:05:48 +02:00
JaniruTEC
c3ac043c68 Removed MountPointPreparationException
See: https://github.com/cryptomator/cryptomator/pull/3001#discussion_r1263572178
2023-07-14 21:13:11 +02:00
Armin Schrenk
315bf0d51f Format confirmation dialog 2023-07-14 16:00:49 +02:00
JaniruTEC
a90e75ceba Renamed exceptions
See: https://github.com/cryptomator/cryptomator/pull/3001#discussion_r1263563166
2023-07-14 15:09:36 +02:00
JaniruTEC
aa2e63acb0 Added @PropertyKey
See: https://github.com/cryptomator/cryptomator/pull/3001#discussion_r1263039593
2023-07-14 14:58:56 +02:00
JaniruTEC
a259d554fa Removed unused import
See: https://github.com/cryptomator/cryptomator/pull/2996#discussion_r1263556873
2023-07-14 14:53:00 +02:00
Armin Schrenk
4cdbe50eb6 adjust to new winfsp-uninstaller exe 2023-07-13 17:29:50 +02:00
JaniruTEC
f5e035fa3b Applied suggestions from code review
Updated log message
Replaced caught exception

See: https://github.com/cryptomator/cryptomator/pull/2996#discussion_r1262297316
https://github.com/cryptomator/cryptomator/pull/2996#discussion_r1262298832
2023-07-13 15:22:21 +02:00
Armin Schrenk
f1d4bd4cd4 Closes #2989 2023-07-13 12:22:46 +02:00
mindmonk
2a0e0738be Merge pull request #2987 from cryptomator/feature/custom-shortening-threshold
Feature/custom shortening threshold
2023-07-13 12:15:07 +02:00
Ralph Plawetzki
9e25d0fcc0 Define property in a single line 2023-07-13 06:43:32 +02:00
JaniruTEC
96ebb67085 Applied suggestions from code review
See: https://github.com/cryptomator/cryptomator/pull/2996#discussion_r1260955250
2023-07-12 19:17:37 +02:00
Ralph Plawetzki
3fbc5e84e3 Define property in a single line 2023-07-12 19:16:04 +02:00
Jan-Peter Klein
1fec9781bf Merge branch 'develop' into feature/custom-shortening-threshold 2023-07-12 16:07:03 +02:00
Jan-Peter Klein
886c69f298 reordered ui elements and added expert settings section to strings.properties 2023-07-12 16:04:29 +02:00
JaniruTEC
614756c740 Added message for HideawayAlreadyExistsException 2023-07-11 22:35:08 +02:00
JaniruTEC
2a9d1e3fba Added messages for MountPointCouldNotBeClearedException and MountPointNotEmptyDirectoryException 2023-07-11 22:33:27 +02:00
JaniruTEC
9361a75cd8 Refactored UnlockInvalidMountPointController to use improved Exceptions 2023-07-11 21:53:18 +02:00
JaniruTEC
becc5e316a Made interaction between Unlock logic & UI more consistent 2023-07-11 21:53:18 +02:00
JaniruTEC
08a1e1ec7d Added/Refactored exceptions to account for more cases 2023-07-11 21:53:18 +02:00
JaniruTEC
12f5f41968 Redefined IllegalMountPointException and MountPointPreparationException 2023-07-11 21:53:18 +02:00
JaniruTEC
58c7774e0d Added arg3 to FormattedLabel 2023-07-11 21:50:52 +02:00
Ralph Plawetzki
da8410842b Change showTrayIcon to true for all Linux builds 2023-07-11 19:56:22 +02:00
Ralph Plawetzki
1cae1a5f2f Fix setting TRAYICONSDIR 2023-07-11 19:25:37 +02:00
Jan-Peter Klein
df31b214f5 changed button wording from "Not now" to "Ask Me Later" 2023-07-11 15:23:50 +02:00
Jan-Peter Klein
25474ce014 changed wording and window size 2023-07-11 14:53:36 +02:00
Jan-Peter Klein
5f62f038d5 removed message below the input field and inserted in the invalid message 2023-07-11 14:41:43 +02:00
Jan-Peter Klein
eebba45909 added comment to explain code that sets shorteningThreshold to 0
removed unnecessary introduction text
2023-07-11 14:10:26 +02:00
Armin Schrenk
ead0f0fae1 add exe for winfsp uninstallation and include in burn bundle 2023-07-11 09:41:54 +02:00
JaniruTEC
5e2e8c35d5 Added cleanup of junctions on Win 2023-07-10 17:38:30 +02:00
JaniruTEC
328f2f89a8 Removed unnecessary checks 2023-07-10 16:01:39 +02:00
JaniruTEC
92b77baf40 Improved handling of existing hideaways 2023-07-10 15:58:38 +02:00
Jan-Peter Klein
982e88d1c5 changed icon to question mark 2023-07-10 15:47:12 +02:00
Jan-Peter Klein
632d39bc9f added lastUpdateCheck to settings and integrated check in FXApplication start 2023-07-10 14:50:06 +02:00
Jan-Peter Klein
f25afb720f optimized isValidShorteningThreshold method and renamed DEFAULT_SHORTENING_THRESHOLD to MAX_SHORTENING_THRESHOLD 2023-07-10 13:14:58 +02:00
Jan-Peter Klein
bc361ea592 added ui elements for update reminder 2023-07-10 13:04:07 +02:00
Ralph Plawetzki
3d0741f4d2 Use version 1.3.3 of appindicator-gtk3-java 2023-07-09 19:48:52 +02:00
Ralph Plawetzki
b75459fbc6 Revert "Find native libraries on the system"
This reverts commit 58bb266085.
2023-07-09 19:47:52 +02:00
Jan-Peter Klein
2202c91564 rearranged view
added pencil icon
optimized code
cleaned up strings.properties
2023-07-07 16:22:53 +02:00
JaniruTEC
e484813233 Added check for deletion of hideaway 2023-07-07 16:19:16 +02:00
Sebastian Stenzel
cd10d38990 adjusted to latest API-changes 2023-07-06 18:57:10 +02:00
Jan-Peter Klein
f817bc5378 implement requested changes from PR review 2023-07-06 11:03:34 +02:00
JaniruTEC
c30c90d2c3 Merge pull request #2985 from cryptomator/feature/2981-differ-options-preferences
Fix 2981
2023-07-05 16:27:55 +02:00
Jan-Peter Klein
09b638eafa pr mentioned changes implemented 2023-07-05 16:19:11 +02:00
JaniruTEC
91de0c1813 Added called to #showMainWindow
See: https://github.com/cryptomator/cryptomator/pull/2985#discussion_r1252863161
2023-07-05 15:50:35 +02:00
JaniruTEC
a3c953d437 Refactored decision model
See: https://github.com/cryptomator/cryptomator/pull/2985#pullrequestreview-1514141146
2023-07-05 15:49:43 +02:00
JaniruTEC
743da019f9 Cleaned up UnlockInvalidMountPointController
See:
https://github.com/cryptomator/cryptomator/pull/2985#discussion_r1252868655
https://github.com/cryptomator/cryptomator/pull/2985#discussion_r1252874468
2023-07-05 15:26:19 +02:00
Jan-Peter Klein
2c506fcc97 rearranged view elements an renamed advancedSettings to expertSettings 2023-07-05 13:17:10 +02:00
Jan-Peter Klein
dd71df8382 Merge branch 'develop' into feature/custom-shortening-threshold 2023-07-05 11:55:51 +02:00
Sebastian Stenzel
8cb21c97e3 add mark for future improvement 2023-07-04 16:58:37 +02:00
Sebastian Stenzel
0ad8ce77ef handle "invalid setup code" error properly 2023-07-04 16:55:42 +02:00
Sebastian Stenzel
e358ffd666 added tests 2023-07-04 16:47:54 +02:00
Armin Schrenk
2c984ad405 use system property path.separator and fix failing unit test on windows 2023-07-04 16:31:28 +02:00
JaniruTEC
171b0e61ad Finished implementation 2023-07-04 16:14:08 +02:00
JaniruTEC
e5047c242c Moved subcomponent-bindings
Moved bindings for VaultOptionsComponent and HealthCheckComponent from MainWindowModule to FxApplicationModule
2023-07-04 15:35:23 +02:00
Sebastian Stenzel
496f9a9cd5 docs
[ci skip]
2023-07-04 15:05:22 +02:00
Sebastian Stenzel
61025de0d6 renamed var
[ci skip]
2023-07-04 14:43:56 +02:00
Sebastian Stenzel
f08049b960 fix "register device" on legacy hub instances 2023-07-04 14:34:36 +02:00
JaniruTEC
131145e8b8 Merge branch 'develop' into feature/2981-differ-options-preferences 2023-07-04 14:00:44 +02:00
JaniruTEC
11a0136cb9 Fixed run configurations
See: #2982
2023-07-04 13:55:42 +02:00
Armin Schrenk
e92b80bdf4 fix local win build script to download jfxmods 2023-07-04 12:42:55 +02:00
Armin Schrenk
9d81b2312f fix local build script to parse two digit verison nums correctly 2023-07-04 12:41:58 +02:00
Armin Schrenk
511dbe355a Fixes #2982 2023-07-04 12:41:06 +02:00
JaniruTEC
cca6d475b3 Updated UI 2023-07-03 21:14:12 +02:00
JaniruTEC
88c6246ceb Prepared UnlockInvalidMountPointController for new feature 2023-07-03 21:08:49 +02:00
Jan-Peter Klein
7bf2de6339 Merge branch 'develop' into feature/custom-shortening-threshold 2023-07-03 16:22:43 +02:00
Jan-Peter Klein
894d0528df refactoring 2023-07-03 15:34:01 +02:00
Armin Schrenk
168b9ef096 changed default folder mount location on macOS 2023-07-03 13:11:38 +02:00
Sebastian Stenzel
711a3881f8 fix appimage CI build 2023-07-03 11:00:12 +02:00
Sebastian Stenzel
399c5c0565 Merge branch 'develop' into feature/libappindicator 2023-07-03 10:59:50 +02:00
Sebastian Stenzel
6c8005e1b2 use github.ref instead of inputs.ref
[ci skip]
2023-07-03 10:59:32 +02:00
Sebastian Stenzel
ca6c1e244c use correct integrations API version 2023-07-03 10:40:50 +02:00
Ralph Plawetzki
449e330992 Merge branch cryptomator/develop 2023-07-01 18:45:45 +02:00
Ralph Plawetzki
0f0855165e Changes due to new handling of system environment
Introduced with PR #2957
2023-07-01 18:02:12 +02:00
Sebastian Stenzel
746c8f54eb Merge branch 'develop' into feature/new-hub-keyloading
# Conflicts:
#	src/main/java/org/cryptomator/ui/keyloading/hub/CreateDeviceDto.java
#	src/main/java/org/cryptomator/ui/keyloading/hub/RegisterDeviceController.java
2023-06-30 16:20:59 +02:00
Sebastian Stenzel
ed8457ff36 remove dead test 2023-06-30 13:53:25 +02:00
Sebastian Stenzel
a50bc8e05c reduce api surface 2023-06-30 13:53:06 +02:00
Sebastian Stenzel
e382a3bab9 make settings' fields public, remove accessor methods 2023-06-30 13:52:15 +02:00
Sebastian Stenzel
9cd50e8ae4 Merge pull request #2974 from cryptomator/feature/replace-gson
Replace GSON with Jackson
2023-06-30 13:48:19 +02:00
Sebastian Stenzel
1a6836dac6 remove unnecessary annotation
[ci skip]
2023-06-30 12:39:48 +02:00
Armin Schrenk
067814d5db Merge pull request #2957 from cryptomator/feature/preprocess-properties
Feature: Preprocess JVM properties at app start to adjust to OS environment.

Closes #2838
2023-06-30 12:38:55 +02:00
Armin Schrenk
29d63a0a83 final clean up 2023-06-30 11:57:09 +02:00
Armin Schrenk
8c3ede0d2a clean up 2023-06-30 11:20:28 +02:00
Armin Schrenk
ee82965ef5 adding "integration tests" 2023-06-30 11:20:07 +02:00
Armin Schrenk
ab048508a8 change getProperty(key, default) and add unit test 2023-06-30 10:57:36 +02:00
Sebastian Stenzel
47ae271126 cleanup
[ci skip]
2023-06-29 23:00:19 +02:00
Sebastian Stenzel
ef22928e01 undo formatter-induced changes
[ci skip]
2023-06-29 22:53:19 +02:00
Sebastian Stenzel
287584429b update code style
remove line break from `new Object() {}`

[ci skip]
2023-06-29 22:45:57 +02:00
Sebastian Stenzel
e23c0c23c9 remove GSON from dependencies 2023-06-29 22:44:22 +02:00
Sebastian Stenzel
e9bb3195dd cleanup 2023-06-29 22:44:05 +02:00
Sebastian Stenzel
b1ff94bdd6 replace GSON from settings 2023-06-29 22:41:19 +02:00
Armin Schrenk
79eea4814e renamed class 2023-06-29 18:56:32 +02:00
Armin Schrenk
cee0486d71 adding unit tests for getProperty 2023-06-29 18:55:49 +02:00
Armin Schrenk
12e990a8b3 cleanup 2023-06-29 18:24:48 +02:00
Armin Schrenk
24fc2888ef more unit tests 2023-06-29 18:20:25 +02:00
Armin Schrenk
9b0c940195 readd unit tests for Environment.java 2023-06-29 18:13:54 +02:00
Armin Schrenk
ce596698e3 stick to a unified path separator for cryptomator properties 2023-06-29 17:58:52 +02:00
Armin Schrenk
9383abbdbd let child method match parent 2023-06-29 15:55:07 +02:00
Armin Schrenk
a31d3185dc move boilerplate code to own class 2023-06-29 15:51:46 +02:00
Armin Schrenk
3098628db1 Fix problem of circular class init 2023-06-29 15:32:15 +02:00
Sebastian Stenzel
3c53968dd2 replace GSON from update checker 2023-06-29 13:20:39 +02:00
Armin Schrenk
6c18e3a929 apply suggestion from sonarCloud 2023-06-29 13:04:00 +02:00
Sebastian Stenzel
99862869bc replace GSON from error dialog 2023-06-29 13:03:27 +02:00
Armin Schrenk
c0368f2a50 Merge branch 'develop' into feature/preprocess-properties 2023-06-29 12:39:31 +02:00
Armin Schrenk
c6c292b505 bump google guava to 32.0.1 2023-06-29 12:39:19 +02:00
Armin Schrenk
ebc60c4fb3 make process function reliable testable and adjust unit test 2023-06-29 12:35:59 +02:00
Sebastian Stenzel
5f2497de90 replace GSON in "hub" 2023-06-29 12:26:45 +02:00
Sebastian Stenzel
b2a184bdf0 ignore unknown fields during JWT deserialization 2023-06-29 12:02:33 +02:00
Armin Schrenk
01da51e6e7 Refactor properties preprocessing:
* decorate Properties class
* set the system properties to decorator
* for logging setup, skip enviroment and access props over decorator
2023-06-29 11:37:35 +02:00
Sebastian Stenzel
9fc1efa005 adjust labels 2023-06-29 10:38:31 +02:00
Armin Schrenk
8417618615 Revert "fix missing logDir path resolution"
This reverts commit b3d8df0da0.
2023-06-28 16:04:10 +02:00
Jan-Peter Klein
386bdd3490 added new AdvancedSettings scene in AddVaultWizard 2023-06-28 12:24:14 +02:00
Tobias Hagemann
fe3abcaaa8 added leitzcloud location preset 2023-06-27 09:36:14 +02:00
Tobias Hagemann
56ba12fe56 fixed location presets of google drive and pcloud on macos 2023-06-27 09:31:43 +02:00
Sebastian Stenzel
448eac8ff5 cleanup 2023-06-23 12:06:06 +02:00
Sebastian Stenzel
5a18d086e0 register device using a setup code 2023-06-22 17:16:00 +02:00
Armin Schrenk
5e52f715ce Merge branch 'develop' into feature/preprocess-properties 2023-06-21 10:31:43 +02:00
Armin Schrenk
2c2606d6ad Merge pull request #2961 from sschuberth/win-drive-occupied
Show a dedicated message when mounting to an occupied Windows drive

Fixes #2309
2023-06-20 18:25:00 +02:00
Armin Schrenk
b3d8df0da0 fix missing logDir path resolution 2023-06-20 18:08:31 +02:00
Armin Schrenk
ebea8ef7e5 adjust windows buildscripts to use appdata instead of userhome/hard/coded/path 2023-06-20 17:32:23 +02:00
Armin Schrenk
ec645a4bb9 replace ~ by @{userhome} on unix systems 2023-06-20 16:37:32 +02:00
Armin Schrenk
2c0474ec46 add test 2023-06-20 12:37:07 +02:00
Sebastian Schuberth
4d09728880 Suppress a CVE false-positive for jackson-databind 2.14.2
Also see https://github.com/cryptomator/cryptomator/pull/2961#issuecomment-1597652134.
2023-06-19 22:31:50 +02:00
Sebastian Schuberth
173b1e8386 Show a dedicated message when mounting to an occupied Windows drive
The error message was restored from 6395f17. Fixes #2309.
2023-06-16 19:17:30 +02:00
mindmonk
9b18a179c2 Merge pull request #2953 from cryptomator/feature/error-dialog
Improved Error Dialog
2023-06-16 15:55:43 +02:00
Jan-Peter Klein
12b38ad8c8 removed extra tabs generated by reformat code 2023-06-16 15:25:22 +02:00
Armin Schrenk
4065e15aa1 Apply code suggestion from review
Co-authored-by: Sebastian Stenzel <overheadhunter@users.noreply.github.com>
2023-06-16 13:12:00 +02:00
Jan-Peter Klein
6fda206b9e just one little change 2023-06-16 12:57:21 +02:00
Jan-Peter Klein
638a6d1195 optimized code 2023-06-16 12:56:07 +02:00
Jan-Peter Klein
27bc62e602 Merge branch 'develop' into feature/error-dialog 2023-06-16 12:48:28 +02:00
Tobias Hagemann
2e7af0affa Update SECURITY.md
[ci skip]
2023-06-16 11:41:33 +02:00
Tobias Hagemann
19c41a3cca Update SECURITY.md
[ci skip]
2023-06-16 11:20:26 +02:00
Jan-Peter Klein
3bf4473f9d implemented changes mentioned by overheadhunter 2023-06-16 11:13:24 +02:00
Jan-Peter Klein
f92c436339 reformat code and optimize imports 2023-06-15 13:12:10 +02:00
Jan-Peter Klein
f054a1af03 optimized tests and some code docu 2023-06-15 10:54:44 +02:00
Armin Schrenk
c46eeb0401 first impl draft 2023-06-15 10:38:19 +02:00
Ralph Plawetzki
3ae847d5ad Code improvements and changes
Discussion: https://github.com/cryptomator/integrations-linux/pull/22#pullrequestreview-1479004107
2023-06-15 06:46:05 +02:00
Jan-Peter Klein
d680c5812d cleaned up code and using parameterized tests 2023-06-14 16:10:11 +02:00
Ralph Plawetzki
58bb266085 Find native libraries on the system 2023-06-14 11:20:15 +02:00
Sebastian Stenzel
918ace2eb6 Merge branch 'develop' into feature/new-hub-keyloading 2023-06-14 10:31:58 +02:00
Ralph Plawetzki
c8ed30574a Introduce JVM property for the SVG image loading path 2023-06-14 06:02:03 +02:00
Jan-Peter Klein
3120751d3e resolved sonarclouds mentioned issues 2023-06-13 12:48:35 +02:00
Jan-Peter Klein
3c623b7ed1 cleaned up code 2023-06-12 21:04:54 +02:00
Jan-Peter Klein
150dd3e542 Merge branch 'develop' of https://github.com/cryptomator/cryptomator into feature/error-dialog 2023-06-12 13:52:23 +02:00
Jan-Peter Klein
8f3f23939c created some tests for ErrorController 2023-06-12 13:50:43 +02:00
Armin Schrenk
5d796efe30 Merge branch 'main' into develop 2023-06-07 12:56:23 +02:00
Armin Schrenk
702ae72063 Merge branch 'release/1.9.1' 2023-06-07 12:55:46 +02:00
Armin Schrenk
b296dc775c finalize 1.9.1 2023-06-07 12:55:28 +02:00
Armin Schrenk
e5e0d4076a prepare 1.9.1 2023-06-07 12:52:42 +02:00
Armin Schrenk
da0eeb2e45 bump dependency-check 2023-06-07 12:50:24 +02:00
Armin Schrenk
ff49094f35 fixes #2936 2023-06-07 12:50:09 +02:00
Cryptobot
be1c5da54e New Crowdin updates (#2931)
New translations strings.properties

Filipino; Finnish; Hungarian; Slovak;

[ci skip]
2023-06-07 11:08:14 +02:00
Ralph Plawetzki
1cb5a3531a Fix symlinks for icons installed with the ppa 2023-06-06 19:44:02 +02:00
Ralph Plawetzki
d5cad1a704 Lost+found
Things I forgot or could be more simple
2023-06-05 19:13:25 +02:00
Sebastian Stenzel
c9dd7454f5 Merge branch 'develop' into feature/libappindicator
# Conflicts:
#	pom.xml
2023-06-04 20:40:03 +02:00
Sebastian Stenzel
7a7332a3f6 remove executable bit 2023-06-04 14:29:17 +02:00
Sebastian Stenzel
a22bfacfa2 create symlinks from "symbolic" to "scalable" icons 2023-06-04 14:18:05 +02:00
Sebastian Stenzel
1abf591459 cleanup 2023-06-04 14:17:57 +02:00
Ralph Plawetzki
641b21a144 Symbolic icons for the ppa 2023-06-02 06:31:35 +02:00
Ralph Plawetzki
20664ff3d3 1.3.0-beta3 is available 2023-06-02 05:42:04 +02:00
Armin Schrenk
40abf582c5 bump guava 2023-06-01 17:48:14 +02:00
Armin Schrenk
a8377be691 adjust init release notes file 2023-06-01 17:47:18 +02:00
Sebastian Stenzel
fe733967dc send device type in device registration request 2023-06-01 15:06:21 +02:00
Jan-Peter Klein
0e7a27b2e1 Merge branch 'develop' of https://github.com/cryptomator/cryptomator into feature/error-dialog 2023-05-30 12:06:50 +02:00
Jan-Peter Klein
d82d11feb7 optimized implementation 2023-05-30 12:03:56 +02:00
Armin Schrenk
81c12f50fe Merge branch 'main' into develop [ci skip] 2023-05-30 10:46:07 +02:00
Armin Schrenk
e2eac0e398 Merge branch 'release/1.9.0' 2023-05-30 10:44:02 +02:00
Armin Schrenk
9d573c497e finalize 1.9.0 2023-05-30 10:34:51 +02:00
Armin Schrenk
81087a9568 Merge branch 'develop' into release/1.9.0 2023-05-30 10:30:47 +02:00
Cryptobot
2806525397 New Crowdin updates (#2881)
New translations strings.properties

Bulgarian; Finnish; German; Japanese; Portuguese; Portuguese, Brazilian; Turkish; Ukrainian; 

[ci skip]
2023-05-30 10:29:07 +02:00
Ralph Plawetzki
c8cfe473f1 Set icons by icon name
Needed for icons to work on Mate DE
2023-05-29 15:55:01 +02:00
Ralph Plawetzki
ec03bc569c Find tray icons in mounted AppImage 2023-05-27 16:39:24 +02:00
Armin Schrenk
0c0060262a prepare 1.9.0 2023-05-26 16:37:53 +02:00
Armin Schrenk
9af4ffe83b use correct webdav adapter version 2023-05-26 15:44:10 +02:00
Armin Schrenk
c6f963793d bump dependencies 2023-05-26 13:10:11 +02:00
Ralph Plawetzki
1093cb618f Remove double setting symbolic links 2023-05-25 18:56:04 +02:00
Ralph Plawetzki
8c05c774bf Remove unneeded cp launcher.sh 2023-05-25 18:15:39 +02:00
Ralph Plawetzki
6af9132721 Add tray icons to AppImage build script 2023-05-25 18:07:13 +02:00
Ralph Plawetzki
1f443453c7 Modify copy-dependencies for new modules
Fix java.lang.module.FindException: Module jdk.net not found, required by org.freedesktop.dbus.transport.jre
Enable native access for module org.purejava.appindicator
2023-05-25 17:32:06 +02:00
Ralph Plawetzki
71caefbe70 Rename icons and bring them in place 2023-05-25 11:23:24 +02:00
Armin Schrenk
8c34fc76c5 prevent regressions for google drive preset 2023-05-24 12:07:08 +02:00
Armin Schrenk
785cf7a9a6 Merge pull request #2918 from cryptomator/feature/refactor-location-presets
Feature: Refactor finding and showing cloud location presets
2023-05-23 17:32:48 +02:00
Armin Schrenk
c63837c4ce renaming class 2023-05-23 17:01:14 +02:00
Armin Schrenk
b1a3ef9023 prevent dealing with unclosed directory streams 2023-05-23 12:35:14 +02:00
Armin Schrenk
32436f779f increase readability 2023-05-23 10:54:34 +02:00
Sebastian Stenzel
ccc6f605ba Merge branch 'develop' into feature/refactor-location-presets 2023-05-23 10:19:00 +02:00
Sebastian Stenzel
f338d2447b improved AutoUnlocker readability 2023-05-23 09:48:27 +02:00
Armin Schrenk
179240b325 Readd mac specifc google drive location provider 2023-05-23 09:44:37 +02:00
Armin Schrenk
32a65bddce Add OneDrive Mac location provider 2023-05-22 17:16:03 +02:00
Armin Schrenk
710cdf800d fix compile errors 2023-05-22 15:21:19 +02:00
Armin Schrenk
1d6edb8373 Apply code suggestions 2023-05-22 15:19:15 +02:00
Armin Schrenk
a3d30612ec Add linux paths for Dropbox and OneDrive 2023-05-22 14:51:52 +02:00
Armin Schrenk
6acda9b13c also adjust styleClass of location label 2023-05-17 18:48:12 +02:00
Armin Schrenk
28cb812dab add uses field to module info 2023-05-17 18:38:24 +02:00
Armin Schrenk
68ea4af0ad use correct import 2023-05-17 17:26:37 +02:00
Armin Schrenk
0af0a9e440 refactor location ui in addVault workflow to new locationPreset framework 2023-05-17 17:21:02 +02:00
Armin Schrenk
0989c735c0 improve error handling when querying registry 2023-05-17 14:25:46 +02:00
Armin Schrenk
a3492b9ea3 use correct registry keys for onedrive detection 2023-05-17 14:25:16 +02:00
Armin Schrenk
e345e6415f use @CheckAvailability annotation correctly 2023-05-17 14:17:28 +02:00
Armin Schrenk
5b6d09308b Create SPI for cloud location presets 2023-05-16 17:16:42 +02:00
Armin Schrenk
49bda58993 Merge pull request #2690 from Rexbas/auto-unlock
Auto unlock vaults that were missing at startup
2023-05-15 10:46:28 +02:00
Rexbas
32d7189a12 Add time unit parameter 2023-05-12 21:52:30 +02:00
Rexbas
1253b7db2b Make unlock method private and simplify missing vaults unlocker 2023-05-11 20:43:23 +02:00
Sebastian Stenzel
6bb69ea8d3 Merge branch 'develop' into libappindicator 2023-05-10 20:21:54 +02:00
Armin Schrenk
067a7ad3ee Merge pull request #2897 from cryptomator/feature/jdk20
Upgrade to jdk20 and jfx20
2023-05-10 14:16:42 +02:00
Ralph Plawetzki
06690e98c7 Code improvements continued
Discussion: https://github.com/cryptomator/cryptomator/pull/2885
2023-05-10 06:53:40 +02:00
Ralph Plawetzki
6e858746c1 Keep change to JDK 20 outside of this PR 2023-05-10 06:35:52 +02:00
Ralph Plawetzki
8b94c82889 Use icons provided by tobihagemann 2023-05-10 06:23:57 +02:00
Ralph Plawetzki
fbe997e6c4 Revert "Use second icon too provided by tobihagemann"
This reverts commit 491fdaa9bb.
2023-05-10 05:44:53 +02:00
Ralph Plawetzki
491fdaa9bb Use second icon too provided by tobihagemann 2023-05-09 19:52:41 +02:00
Armin Schrenk
a9ec76a344 update wix main file due to updated jpackage installer template 2023-05-09 17:40:13 +02:00
Sebastian Stenzel
59f5c0cb12 started new unlock workflow using user-specific private key 2023-05-09 17:09:49 +02:00
Armin Schrenk
085f762a35 further fixing debian 2023-05-09 15:48:06 +02:00
Armin Schrenk
7dd1c3576f always use the same JDK version in debian workflow 2023-05-09 15:02:15 +02:00
Armin Schrenk
d23bd2865a update location preset for Dropbox 2023-05-09 14:56:44 +02:00
Armin Schrenk
4429d57b5e ensure mutability of temporary collection 2023-05-09 14:52:15 +02:00
Armin Schrenk
2ff71ed7b0 remove langauges with insufficient translation 2023-05-09 14:51:44 +02:00
Armin Schrenk
82de8b6994 remove unrelated change 2023-05-09 09:57:23 +02:00
Armin Schrenk
d4cba2fd6e fix errors 2023-05-09 09:55:56 +02:00
Armin Schrenk
ff80f634d2 Apply suggestions from code review
Co-authored-by: Sebastian Stenzel <overheadhunter@users.noreply.github.com>
2023-05-09 09:42:01 +02:00
Jan-Peter Klein
b10523ea6c init commit 2023-05-09 09:00:56 +02:00
Armin Schrenk
6386dd3d50 update workflows 2023-05-08 19:41:58 +02:00
Armin Schrenk
a3f05db189 bump javafx 2023-05-08 19:41:02 +02:00
Armin Schrenk
151ef6c7b2 upgrade to jdk20
* use pattern matching preview feature
* bump fuse-nio-adapter
2023-05-08 19:12:35 +02:00
Ralph Plawetzki
2d17ad9a2e Add SVG icons to Linux build scripts 2023-05-06 17:36:39 +02:00
Ralph Plawetzki
5502f58637 Move SVG icons for Linux to the right location 2023-05-06 17:29:48 +02:00
Ralph Plawetzki
1006cb506f Fix wrong reference 2023-05-06 17:16:17 +02:00
Ralph Plawetzki
d7bc92aa09 org.cryptomator.integrations.linux not needed at all 2023-05-06 17:15:28 +02:00
Rexbas
72fd38baf1 Add timeout to periodic missing vaults check 2023-05-06 15:40:24 +02:00
Ralph Plawetzki
948a62b482 Code improvements continued
Discussion: https://github.com/cryptomator/integrations-linux/pull/18
2023-05-06 09:18:47 +02:00
Tobias Hagemann
532ffb1202 Merge pull request #2882 from bluen/develop
Respect user's locale when sorting language list
2023-05-05 11:51:17 +02:00
Tobias Hagemann
2a704d5eb4 init collator once 2023-05-05 11:45:02 +02:00
Sebastian Stenzel
e8f8466d9a adjusted labels used in auto-generated release notes
[ci skip]
2023-05-05 10:56:44 +02:00
Sebastian Stenzel
9297562c99 improve auto-generated release notes
[ci skip]
2023-05-05 10:52:51 +02:00
Ralph Plawetzki
2fbdce26ea Use JEP 433 pattern matching for switch 2023-05-03 09:50:44 +02:00
Ralph Plawetzki
317f3c3458 Move stuff to integrations-linux 2023-04-30 17:08:08 +02:00
Ralph Plawetzki
97cede12b7 Update to JDK 20 2023-04-27 18:39:46 +02:00
Jürgen Kleer
7d62fc78de Set preferred locale in constructor, make it default in applyPreferred 2023-04-27 18:03:41 +02:00
Rexbas
ba627d0d60 Add a scheduled service to auto unlock vaults that were missing at startup 2023-04-27 11:06:09 +02:00
Ralph Plawetzki
6da107f4db Add AppindicatorTrayMenuController 2023-04-26 18:24:01 +02:00
Jürgen Kleer
8e7e7de358 Refactoring
make LANGUAGE_TAGS private and provide a getter
2023-04-26 17:34:47 +02:00
Jürgen Kleer
10c60d7492 https://github.com/cryptomator/cryptomator/issues/2813
> List of languages should have system default, English and then all other languages in alphabetic order.
> That is, in alphabetic order with respect to the language the list is localized in (seems to be English always)
2023-04-26 15:24:50 +02:00
Armin Schrenk
aa03bd119a Merge branch 'main' into develop 2023-04-25 10:45:51 +02:00
Armin Schrenk
325ffda9af Merge branch 'release/1.8.0' 2023-04-25 10:45:08 +02:00
Armin Schrenk
d1270ceeb2 finalize 1.8.0 2023-04-25 10:44:41 +02:00
Armin Schrenk
901a290dd9 prepare 1.8.0 2023-04-24 17:35:25 +02:00
Cryptobot
35b9dadfc2 New Crowdin updates (#2848)
New translations strings.properties

Arabic; Belarusian; Bengali; Bosnian; Catalan; Chinese Simplified; Chinese Traditional; Chinese Traditional, Hong Kong; Croatian; Czech; Danish; Dutch; Filipino; French; Galician; German; Greek; Hebrew; Hindi; Hungarian; Indonesian; Italian; Japanese; Korean; Latvian; Macedonian; Norwegian Bokmal; Norwegian Nynorsk; Persian; Polish; Portuguese; Portuguese, Brazilian; Punjabi; Romanian; Russian; Serbian (Cyrillic); Serbian (Latin); Sinhala; Slovak; Slovenian; Spanish; Swahili, Tanzania; Swedish; Tamil; Telugu; Thai; Turkish; Ukrainian; Vietnamese; 

[ci skip]
2023-04-24 17:33:59 +02:00
Armin Schrenk
5f57678edc Merge pull request #2840 from cryptomator/feature/convert-hub-to-local
Feature: convert hub-based vault to password-based
2023-04-21 15:31:28 +02:00
Tobias Hagemann
30e1922bc9 fixed spacing
[ci skip]
2023-04-21 15:23:06 +02:00
Armin Schrenk
2e0908ab15 replace config manually instead of using CryptoFileSystem.init() 2023-04-21 09:40:34 +02:00
Julian Raufelder
689ce5b985 Revive status and no-response bot 2023-04-20 15:38:57 +02:00
Tobias Hagemann
a71a23aa31 replaced password bullet point with a different char that exists in open sans
[ci skip]
2023-04-18 16:36:27 +02:00
Tobias Hagemann
864454e6fc updated strings
[ci skip]
2023-04-18 16:03:05 +02:00
Armin Schrenk
94c3381723 forgot one renaming 2023-04-18 15:40:44 +02:00
Armin Schrenk
d9f945e70a Apply suggestions from code review
more renaming

Co-authored-by: Tobias Hagemann <tobias.hagemann@skymatic.de>
2023-04-18 15:34:20 +02:00
Armin Schrenk
dc9b39202f rename classes 2023-04-18 14:34:48 +02:00
Armin Schrenk
2a01aba3cf clean up 2023-04-17 12:51:36 +02:00
Armin Schrenk
4305fd3285 close also vault options window to prevent invalid state of options window 2023-04-17 12:50:46 +02:00
Armin Schrenk
a24cd1ba7f Apply suggestions from code review
Co-authored-by: Tobias Hagemann <tobias.hagemann@skymatic.de>
2023-04-14 16:47:45 +02:00
Tobias Hagemann
2ba0d963ec updated insets
[ci skip]
2023-04-13 16:12:08 +02:00
Julian Raufelder
cd0c6fbd33 Merge branch 'hotfix/1.7.5' into develop 2023-04-07 11:45:08 +02:00
Julian Raufelder
f4374a2606 Merge branch 'hotfix/1.7.5' 2023-04-07 11:41:24 +02:00
Julian Raufelder
a1d5b8a4e2 Prepare 1.7.5 2023-04-07 11:39:21 +02:00
Julian Raufelder
34e430aff6 Revert "bump cryptofs"
This reverts commit db2560fccf.
2023-04-07 11:35:38 +02:00
Armin Schrenk
c79766cdf6 Merge branch 'main' into develop 2023-04-05 09:58:30 +02:00
Armin Schrenk
bf76bad626 Merge branch 'release/1.7.4' 2023-04-05 09:57:55 +02:00
Armin Schrenk
c3f654b454 finalize release 2023-04-05 09:56:34 +02:00
Armin Schrenk
d1d990d47c prepare 1.7.4 2023-04-04 18:17:24 +02:00
Cryptobot
6052c0589e New Crowdin updates (#2800)
New translations strings.properties

Belarusian; Catalan; Chinese Simplified; Chinese Traditional; Chinese Traditional, Hong Kong; Danish; Dutch; French; German; Greek; Hebrew; Hungarian; Italian; Japanese; Norwegian Bokmal; Polish; Portuguese; Portuguese, Brazilian; Romanian; Russian; Slovak; Spanish; Swahili, Tanzania; Swedish; Turkish; 

[ci skip]
2023-04-04 18:15:07 +02:00
Armin Schrenk
db2560fccf bump cryptofs 2023-04-04 13:44:19 +02:00
Armin Schrenk
3a50c32e50 rework convert button logic 2023-04-04 12:42:23 +02:00
Armin Schrenk
65eca31d26 integrate internationalization 2023-04-04 12:17:22 +02:00
Armin Schrenk
3462e0b540 further design adjustment 2023-04-03 10:42:25 +02:00
Armin Schrenk
697529136e use regular jdk 2023-03-31 18:27:35 +02:00
Armin Schrenk
50d31bdc18 integrate debug installer feature into regular windows ci workflow 2023-03-31 18:24:10 +02:00
Armin Schrenk
84caf96d3f closes #2814
Zulu JDK does not create required directory structure, so use temurin + gluon jfx jmods instead
2023-03-31 18:21:30 +02:00
Armin Schrenk
a1a5fd3609 adjust design 2023-03-30 17:35:32 +02:00
Armin Schrenk
6c11cc8f1d complete workflow 2023-03-30 16:47:30 +02:00
Armin Schrenk
2b391a6ee3 Merge branch 'develop' into feature/convert-hub-to-local 2023-03-30 15:54:20 +02:00
Armin Schrenk
b7fc03213d bump fuse-nio-adapter
Fixes #2801
2023-03-30 11:28:07 +02:00
Armin Schrenk
dfe17569e1 Merge pull request #2789 from cryptomator/feature/2786-only-restart-macfuset
Feature: Only require app restart if switching between macFUSE and FUSE-T
2023-03-30 11:23:09 +02:00
Armin Schrenk
827f9ad141 adjust comment 2023-03-30 11:18:28 +02:00
Armin Schrenk
c8a6d0339e Use in volume preferences controller same objet as in MountModule to store first used fuse mount service 2023-03-29 17:42:18 +02:00
Tobias Hagemann
b5bbd21f25 refactored the refactoring to a macfuse/fuse-t workaround again 2023-03-29 16:50:02 +02:00
Tobias Hagemann
771468c8c6 refactored macfuse/fuse-t specific workaround to a generic fuse workaround 2023-03-29 16:16:04 +02:00
Armin Schrenk
ea2a48771f Closes #2829 2023-03-29 12:03:35 +02:00
Tobias Hagemann
0e10da25b3 Update README.md
[ci skip]
2023-03-29 11:58:14 +02:00
Armin Schrenk
943a3e9cfd adjust visibility 2023-03-29 11:42:14 +02:00
Armin Schrenk
c988fb50a7 increase readability 2023-03-29 11:39:18 +02:00
Armin Schrenk
219ee0da9a implement core functionality 2023-03-28 14:02:11 +02:00
Armin Schrenk
5665e92839 deduplicate and add convenience method 2023-03-28 14:01:57 +02:00
Armin Schrenk
04ff188624 rename method in recoveryKeyFactory 2023-03-28 13:59:59 +02:00
Armin Schrenk
ec7d6eafec add new password screen for convert hub vault flow 2023-03-24 18:11:39 +01:00
Armin Schrenk
28bb2ff9b1 add stub for vault conversion (hub to local) 2023-03-24 17:22:05 +01:00
Armin Schrenk
a92ebfdc7b replace builder by stateless, threadsafe factory 2023-03-24 16:42:04 +01:00
Armin Schrenk
f1e97fa64b fix workflow 2023-03-22 10:44:54 +01:00
Armin Schrenk
b9d5cf04c2 fix workflow 2023-03-22 10:40:52 +01:00
Armin Schrenk
75cd3e44d8 change win-debug workflow to use temurin and openjfx jmods from gluon 2023-03-22 10:39:00 +01:00
Armin Schrenk
3cf1b829b8 make recovery key ui validation reusable 2023-03-20 21:40:16 +01:00
Armin Schrenk
6e4e9cd261 Merge branch 'develop' into feature/hub-local-access 2023-03-20 20:43:34 +01:00
Armin Schrenk
e15dd7565f add workflow to build a windows debug launcher 2023-03-20 10:35:42 +01:00
Tobias Hagemann
77bc60fe5b Update README.md 2023-03-17 17:56:46 +01:00
Tobias Hagemann
9f633a1ecb Update README.md 2023-03-17 17:06:34 +01:00
Armin Schrenk
fcf59d12a8 remove winget workflow 2023-03-15 16:47:34 +01:00
Armin Schrenk
6721075831 Merge branch 'main' into develop 2023-03-15 13:51:59 +01:00
Armin Schrenk
4bb0026415 Merge branch 'release/1.7.3' 2023-03-15 13:51:20 +01:00
Armin Schrenk
bebae14744 finalize release 2023-03-15 13:51:09 +01:00
Armin Schrenk
997315eaf5 prepare 1.7.3 2023-03-15 13:49:53 +01:00
Cryptobot
16d677c40f New Crowdin updates (#2766)
New translations strings.properties

Belarusian; Catalan; Chinese Simplified; Chinese Traditional; Chinese Traditional, Hong Kong; French; German; Hebrew; Norwegian Bokmal; Russian; Swahili, Tanzania; Turkish; 

[ci skip]
2023-03-15 13:47:22 +01:00
Armin Schrenk
42a1913c17 Fixes #2797 and fixes #2760 2023-03-15 13:42:03 +01:00
Armin Schrenk
c3f6655e48 add developer 2023-03-15 12:34:13 +01:00
Armin Schrenk
fa1b0f2de8 reestablish interrupt state 2023-03-15 12:29:19 +01:00
Armin Schrenk
385574a618 prevent infinite loop 2023-03-15 12:10:15 +01:00
Armin Schrenk
a67477bf3b Fixes #2778
ensure that mountpoint is ready
2023-03-15 11:40:44 +01:00
Armin Schrenk
03a362e9b4 fix compilation 2023-03-13 13:01:13 +01:00
Armin Schrenk
2223bc5e78 use correct selection logic 2023-03-13 12:58:34 +01:00
Armin Schrenk
fdc0d2d6b5 only require restart in case if macFUSE or FUSE-T
Closes #2786
2023-03-13 12:44:56 +01:00
Armin Schrenk
58ed48b097 UI:
* remove restart notice for volume type
* only show restart label, when switching between macFUSE and FUSET
2023-03-13 11:17:56 +01:00
Julian Raufelder
7a0d255bd3 Use the same source tarball for signing that is linked in the release 2023-03-07 13:44:36 +01:00
Armin Schrenk
228fa099cb Merge branch 'main' into develop 2023-03-07 12:24:26 +01:00
Armin Schrenk
a60ff20f15 Merge branch 'release/1.7.2' 2023-03-07 12:23:30 +01:00
Armin Schrenk
2328a5e3a8 finalize release 2023-03-07 12:19:35 +01:00
Armin Schrenk
e7e181b1a5 Merge branch 'develop' into release/1.7.2 2023-03-07 12:19:23 +01:00
Armin Schrenk
f3e7c08b43 deactivate winget workflow 2023-03-07 12:19:05 +01:00
Armin Schrenk
2a41afcfa9 prepare 1.7.2 2023-03-07 11:52:04 +01:00
Cryptobot
5bf38a328c New Crowdin updates (#2743)
New translations strings.properties

Arabic; Belarusian; Bosnian; Catalan; Chinese Simplified; Chinese Traditional; Chinese Traditional, Hong Kong; Croatian; Czech; Danish; Dutch; French; German; Greek; Hebrew; Hungarian; Indonesian; Italian; Japanese; Korean; Latvian; Norwegian Bokmal; Norwegian Nynorsk; Polish; Portuguese; Portuguese, Brazilian; Punjabi; Romanian; Russian; Serbian (Cyrillic); Serbian (Latin); Slovak; Spanish; Swahili, Tanzania; Swedish; Tamil; Turkish; Ukrainian; Vietnamese; 

[ci skip]
2023-03-07 11:49:50 +01:00
Armin Schrenk
f983b29034 use correct docs URL for volume type 2023-03-07 11:40:10 +01:00
Armin Schrenk
4bc217e489 fixes #2761 2023-03-07 11:36:59 +01:00
Armin Schrenk
b24f52a4ec fixes 2741 2023-03-07 10:58:34 +01:00
Armin Schrenk
91e7fa3de3 fixes #2758, fixes #2754 2023-03-06 15:58:02 +01:00
Armin Schrenk
1365efab3f use recommended notation of unit prefixes 2023-03-06 15:54:43 +01:00
Armin Schrenk
852963b785 check for correct WinFsp version 2023-03-06 15:50:21 +01:00
Armin Schrenk
c47d4eaf02 Merge branch 'main' into develop 2023-03-03 16:37:45 +01:00
Armin Schrenk
36da26c6b9 Merge branch 'release/1.7.1' 2023-03-03 16:19:49 +01:00
Armin Schrenk
33e1cb3131 finalize release 2023-03-03 16:19:37 +01:00
Armin Schrenk
ed4b433df0 prepare 1.7.1 2023-03-03 16:14:01 +01:00
Armin Schrenk
d2ece543c8 suppress false positive 2023-03-03 16:04:34 +01:00
Armin Schrenk
4bb2df7d8f Fixes #2730 2023-03-03 16:03:36 +01:00
Cryptobot
4d5c6ca29a New Crowdin updates (#2712)
New translations strings.properties

Danish; German; Hebrew; 

[ci skip]

Closes #2724
2023-03-03 16:02:09 +01:00
Armin Schrenk
f0d597ba73 require fuse3 packge for deb to have fusermount3 2023-03-01 19:28:40 +01:00
Armin Schrenk
310329d0b5 use correct javafx patch version for debia build 2023-03-01 15:51:42 +01:00
Julian Raufelder
30f86a7f2a Fix issue template 2023-03-01 15:23:30 +01:00
Armin Schrenk
5237dc8cae Merge branch 'main' into develop 2023-03-01 12:07:46 +01:00
Armin Schrenk
67ff4da05b Merge branch 'release/1.7.0' 2023-03-01 12:06:40 +01:00
Armin Schrenk
947eb11198 set correct version in pom 2023-03-01 12:06:25 +01:00
Armin Schrenk
c6a9af1a04 update metainfo.xml 2023-03-01 12:03:03 +01:00
Armin Schrenk
0ddf221e26 Merge branch 'develop' into release/1.7.0 2023-03-01 11:43:49 +01:00
Cryptobot
3f2b5ccde9 New Crowdin updates (#2698)
New translations strings.properties

Chinese Simplified; Chinese Traditional; Chinese Traditional, Hong Kong; French; Japanese; 

[ci skip]
2023-03-01 11:42:57 +01:00
Armin Schrenk
4fc07c27b3 Merge branch 'develop' into feature/hub-local-access 2023-02-27 15:35:40 +01:00
Armin Schrenk
3d0b6dde28 Update README.md 2023-02-27 13:09:56 +01:00
Armin Schrenk
45534b0a2b suppress false positive 2023-02-27 12:19:13 +01:00
Armin Schrenk
6d906beeb8 bump dependency-check 2023-02-27 12:17:47 +01:00
Tobias Hagemann
e577c64c35 arm64 dmg installer (link + bg) for fuse-t 2023-02-27 11:06:19 +01:00
Armin Schrenk
b848e78372 Merge branch 'develop' into release/1.7.0 2023-02-24 14:16:38 +01:00
Armin Schrenk
39e9395b4b bump fuse-nio-adapter 2023-02-24 14:16:20 +01:00
Cryptobot
ca3157cc70 New Crowdin updates (#2695)
New translations strings.properties

Arabic; Belarusian; Bengali; Bosnian; Catalan; Chinese Simplified; Chinese Traditional; Chinese Traditional, Hong Kong; Croatian; Czech; Danish; Dutch; Filipino; French; Galician; German; Greek; Hebrew; Hindi; Hungarian; Indonesian; Italian; Japanese; Korean; Latvian; Macedonian; Norwegian Bokmal; Norwegian Nynorsk; Persian; Polish; Portuguese; Portuguese, Brazilian; Punjabi; Romanian; Russian; Serbian (Cyrillic); Serbian (Latin); Sinhala; Slovak; Slovenian; Spanish; Swahili, Tanzania; Swedish; Tamil; Telugu; Thai; Turkish; Ukrainian; Vietnamese; 

[ci skip]
2023-02-24 14:15:50 +01:00
Armin Schrenk
f94c1f07d6 add new wix extension to ci build 2023-02-24 13:23:10 +01:00
Armin Schrenk
d43f197c11 fix 67e566832c 2023-02-24 13:14:14 +01:00
Armin Schrenk
67e566832c use correct path to get winfsp download url 2023-02-24 13:13:07 +01:00
Armin Schrenk
6f5a88af1d extend winfsp uninstall instruction by reboot step 2023-02-24 13:10:15 +01:00
Armin Schrenk
210b891616 block exe installation if winFsp is outdated 2023-02-24 12:50:20 +01:00
Armin Schrenk
20e820c903 update IDE specific files 2023-02-24 12:48:41 +01:00
Armin Schrenk
5307e93c1b bump fuse-nio-adapter
fix illegalArgumentException when setting loopbackHostName
2023-02-24 12:48:29 +01:00
Armin Schrenk
ec1d25bf65 Merge branch 'develop' into feature/hub-local-access 2023-02-23 21:10:03 +01:00
Armin Schrenk
7aa554498b move new password files to changepassword package 2023-02-23 13:00:51 +01:00
Armin Schrenk
85ac3c244d rename forgetPassword package 2023-02-23 12:55:30 +01:00
Armin Schrenk
5db5346c88 refactor error component to own package 2023-02-23 12:53:29 +01:00
Armin Schrenk
e221019b57 Merge branch 'develop' into release/1.7.0 2023-02-23 12:09:03 +01:00
Armin Schrenk
eeaaced976 reorder settingsJsonAdapter switch statements 2023-02-23 12:08:48 +01:00
Armin Schrenk
d246b54268 ignore lastWrittenByVersion when reading settings 2023-02-23 12:00:14 +01:00
Armin Schrenk
8f4bf144c3 Merge branch 'develop' into feature/hub-local-access 2023-02-23 11:38:33 +01:00
Armin Schrenk
e94572960e enable drag and drop for linux aswell 2023-02-23 11:16:48 +01:00
Armin Schrenk
2d1c59bea9 Renamed objects related to license exceeded user flow 2023-02-23 10:45:55 +01:00
Armin Schrenk
921cbd6439 Merge branch 'develop' into release/1.7.0 2023-02-22 17:47:14 +01:00
Armin Schrenk
f811144ffa pom cleanup [ci skip] 2023-02-22 17:46:56 +01:00
Armin Schrenk
2ecc711f50 bump dependencies 2023-02-22 17:28:34 +01:00
Armin Schrenk
cfcc8782ef bump cryptomator dependencies to stable versions 2023-02-22 17:19:40 +01:00
Armin Schrenk
a1379bac40 For Windows try to migrate all user settings, not only the ones of local users 2023-02-22 15:33:37 +01:00
Armin Schrenk
fe3f2b5bd3 Merge branch 'develop' into release/1.7.0 2023-02-22 15:14:43 +01:00
Cryptobot
7fc07ae02c New Crowdin updates (#2689)
New translations strings.properties

Arabic; Belarusian; Bosnian; Catalan; Chinese Simplified; Chinese Traditional; Chinese Traditional, Hong Kong; Croatian; Czech; Danish; Dutch; French; German; Greek; Hebrew; Hungarian; Indonesian; Italian; Japanese; Korean; Latvian; Norwegian Bokmal; Norwegian Nynorsk; Polish; Portuguese, Brazilian; Punjabi; Romanian; Russian; Serbian (Cyrillic); Slovak; Slovenian; Spanish; Swahili, Tanzania; Swedish; Turkish; Vietnamese; 

[ci skip]
2023-02-22 15:12:58 +01:00
Armin Schrenk
268c66a108 add hub specific tab to vault options 2023-02-21 23:18:00 +01:00
Armin Schrenk
2a70e2f0f4 Merge pull request #2686 from cryptomator/feature/recovery-key-wrong-key
Display message if recovery key is not valid
2023-02-17 15:41:39 +01:00
Tobias Hagemann
ffe0302fba updated access modifier 2023-02-17 15:33:00 +01:00
Armin Schrenk
c5b86bc355 Closes #2648 2023-02-17 14:46:45 +01:00
Armin Schrenk
5f86473e3e fix recovery key state logic 2023-02-17 12:49:38 +01:00
Armin Schrenk
a91c74b6eb Revert "Update translation key"
This reverts commit 71a09eae67.
2023-02-17 11:19:21 +01:00
Armin Schrenk
76949d6ccb Update src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyRecoverController.java
Co-authored-by: Tobias Hagemann <tobias.hagemann@skymatic.de>
2023-02-17 11:18:55 +01:00
Armin Schrenk
71a09eae67 Update translation key 2023-02-17 10:59:04 +01:00
Armin Schrenk
8087fcecfb Apply suggestions from code review
Co-authored-by: Tobias Hagemann <tobias.hagemann@skymatic.de>
2023-02-17 10:56:18 +01:00
Armin Schrenk
29c73e1bc8 display different messages if recovery key is either not valid or does not belong to the vault 2023-02-16 11:51:03 +01:00
Armin Schrenk
8bbdb69cda Update doc links to 1.7 2023-02-16 09:55:42 +01:00
Armin Schrenk
e9ee15dcd5 add info about html comments to error form 2023-02-16 09:42:28 +01:00
Armin Schrenk
03f6e0a33c Use Label instead of Text 2023-02-15 23:44:51 +01:00
Armin Schrenk
c5b21b0d8c Add warning about error report deletion to the error controller 2023-02-15 11:44:37 +01:00
Armin Schrenk
c5c5e297b7 Fix getCiphertextPath for Windows again. 2023-02-14 17:39:34 +01:00
Armin Schrenk
24839985e9 Merge branch 'develop' into release/1.7.0 2023-02-14 11:40:10 +01:00
Armin Schrenk
a7b2802f34 show correct error message when using custom mountpoint with webdav (Http address) 2023-02-14 11:39:16 +01:00
Armin Schrenk
c85d0b4beb bump webdav-nio-adapter 2023-02-14 11:22:11 +01:00
Armin Schrenk
3dff3a8664 Fixes #2682
* allow windows installer to remove same version
* add revisionNumber to installer version
2023-02-14 11:20:22 +01:00
Armin Schrenk
5b0bbf539b improve FailOnRunningApp action 2023-02-13 23:34:43 +01:00
Armin Schrenk
1ff7c40fd9 Fixes #2672 and fixes #2668 2023-02-13 10:42:17 +01:00
Armin Schrenk
d0875ef49e Merge pull request #2669 from cryptomator/feature/virtual-volume-doc-link
Add link to volume type documentation
2023-02-09 13:06:03 +01:00
Armin Schrenk
e35ed9af72 enable localization of tooltip 2023-02-08 20:11:34 +01:00
Armin Schrenk
ac43efe149 change UI to be not so clunky:
* only use question mark icon
* use tooltip at icon instead of explicit label
* icon is the hyperlink
2023-02-08 11:33:41 +01:00
Armin Schrenk
202a2ea79f Load revealPathServiceProvider at app startup 2023-02-08 11:14:54 +01:00
Armin Schrenk
c19a86a348 add link to mounting documentation 2023-02-07 15:23:04 +01:00
Armin Schrenk
539dcaa85a Update issue template 2023-02-07 12:23:25 +01:00
405 changed files with 20246 additions and 5695 deletions

View File

@@ -3,7 +3,7 @@
## Did you find a bug?
- Ensure you're running the latest version of Cryptomator.
- Ensure the bug is related to the desktop version of Cryptomator. Bugs concerning the Cryptomator iOS and Android app can be reported on the [Cryptomator for iOS issues list](https://github.com/cryptomator/cryptomator-ios/issues) and [Cryptomator for Android issues list](https://github.com/cryptomator/cryptomator-android/issues) respectively.
- Ensure the bug is related to the desktop version of Cryptomator. Bugs concerning the Cryptomator iOS and Android app can be reported on the [Cryptomator for iOS issues list](https://github.com/cryptomator/ios/issues) and [Cryptomator for Android issues list](https://github.com/cryptomator/android/issues) respectively.
- Ensure the bug was not [already reported](https://github.com/cryptomator/cryptomator/issues). You can also check out our [FAQ](https://community.cryptomator.org/c/kb/faq).
- If you're unable to find an open issue addressing the problem, [submit a new one](https://github.com/cryptomator/cryptomator/issues/new/choose).

View File

@@ -26,6 +26,7 @@ body:
Examples:
- Operating System: Windows 10
- Cryptomator: 1.5.16
- OneDrive: 23.226
- LibreOffice: 7.1.4
value: |
- Operating System:
@@ -37,12 +38,18 @@ body:
id: volume-type
attributes:
label: Volume Type
description: What is selected under Settings → Virtual Drive?
multiple: true
description: What volume type is selected under Settings → Virtual Drive?
options:
- WinFsp
- WinFsp (Local Drive)
- FUSE-T
- macFUSE
- FUSE
- Dokany
- WebDAV
- WebDAV (Windows Explorer)
- WebDAV (AppleScript)
- WebDAV (gio)
- WebDAV (HTTP Address)
- Dokany (1.5)
validations:
required: false
- type: textarea
@@ -90,4 +97,4 @@ body:
id: further-info
attributes:
label: Anything else?
description: Links? References? Screenshots? Configurations? Any data that might be necessary to reproduce the issue?
description: Links? References? Screenshots? Configurations? Any data that might be necessary to reproduce the issue?

136
.github/SECURITY.md vendored
View File

@@ -2,123 +2,25 @@
## Reporting a Vulnerability
For reporting security-related vulnerabilities or exploits that [haven't been reported yet](https://github.com/cryptomator/cryptomator/labels/type%3Asecurity-issue), contact us at: security@cryptomator.org
We take security seriously at Cryptomator. We appreciate your efforts to responsibly disclose your findings, and will make every effort to acknowledge your contributions.
<details>
<summary>PGP Key</summary>
To report a security vulnerability, please use the [GitHub Security Advisory feature](https://github.com/cryptomator/cryptomator/security/advisories). This feature allows you to privately discuss, fix, and publish information about security vulnerabilities.
```
-----BEGIN PGP PUBLIC KEY BLOCK-----
Comment: GPGTools - https://gpgtools.org
If you prefer to report the vulnerability via email, please send an email to security@cryptomator.org.
mQINBFbgeicBEADM9AcU6DTgM5KZnBaJc6x9DBLr+TCMHntTt7YM9GLTlO2Z43Jt
oYoyqdRWAY28veqpLEFgRvvVD3fdBj/KUOxF1cr2JsErwXqbjwaLq0o/0KIXz7UK
a6pQSemZKfpOtJrfacofOTwvG6AuG9uakBYNMyxuojyOkoh3xsYS1KZ7TwPgCdET
t8/zva41Pa5kh5+GeSZJdCuygG6ynPBJEpmK5V7Qizvics5fziXecF+QaFZijafv
YahfxokvF9pXCQTmV4m57NQma9uK0w83U9nJCPjEd+x3wK0Hxrc1ojy8ZFTA1YND
AQg/MTABgHbQQkXDQhjS/TloOObqtbMBqNSbcSXpaR4teaCWKBl1MSq00nJLj8db
vPJGqfg7UbXhlALggp029/kskYlR5SmbxWquLbl0Xre3fDHuHEiWcJL6MS3454Wt
Mno13/4UhOlRFh5g0pLmPz7seOTJjDqc9abn/RXOLq0+3qX0gC0bDm5aCE5dQ2MV
FMbrrlw/dZESNLZvtB3gOsramSry1R3HVZ0QJ2vMaF2cxewebqcYbuecUNj6bxpv
5LEhEmqz6dG1meLLWDsvQLPEUWEIJnfpBiDSm342yxJq4pXnVF+aqAQsCL3FpmvZ
2j0FgFOs7iXOcFUJIiR0xUmWPk1NWYcUowqmRW8pMM9nFUzFF99iggPznwARAQAB
tC1DcnlwdG9tYXRvciBTdXBwb3J0IDxzdXBwb3J0QGNyeXB0b21hdG9yLm9yZz6J
AkAEEwEKACoCGwMFCQcrKAAFCwkIBwMFFQoJCAsFFgIDAQACHgECF4AFAleu2cQC
GQEACgkQI7Xb75TU2B3+7A/7BKRWdo5/moCCEbBzYQ7vRMLFdwmjFFlSZ7aGC0fP
YHdeUwxPbO0cATwmNpGMma7rBn1FDg3Vto6/wottGxm+XIRwlyY84CD1VZAihZ/e
WvjOO28/7VgRy6PGKzlhpDSoT8GwFOgO69e7bEff1Zj562RZe7nXc4tDivILMB++
KgmmSgtddygmNQCS3RD3KssGo+l+cSjsg09F5WAJ6nQe8Jq2hICq+o/P6UXPI5lX
bhvWYDn4/8sRHsIlGpQYYDDe0fz7IQKuSLAHpF5upNDxj6dYb05F8PPVrk6MW6nL
/kf1fZ27DlLN5/NFvhhBRuwxxoAFqPS7Iel3z7L0JkRUYmGLVB5m9Cqiw6FK8JRv
OtvakdDoKb5lVAoN5NeBfNBSqEcXVF/EdfTfIyyo7hZRA6xFMEVbmYbzt0sj0djV
ZOey2TOFrTCpkHfUUDgKvk5sn+F3u8mmPIbqquEzlFJSFjcyiYYDv22rg1In+zKV
Xmw4BFZRDS6IVSQRGlskRGJBixCaGyDYxHXXT2cg4Rk9uiCX11+0E9qlAsg6xPe6
rnaYDT8dU0AFyVpDpshflXH3kVQSpiqZS3jkAk1/54ODO8pE80Zrnd5m5AMuNcmX
+9MkZKE+h0882UskDs1dyt26GU2hoy4lAeRUaut7zIK/WO6nnuLaTvGWT95RDz+q
kD2JAiIEEwEKAAwFAleu2iYFgweGH4AACgkQZnuGbqgkCgnmCA//U22uhyEC/Tp3
Cbt5lctQmqbgMbjRBaHQyW52tPFMaq8vXMbo/5TTtVC6xsp2PJT84cxAd8KX8hWq
cPtF4wWCJGng/AzyxQ5dWfGvA/ll32ygjtJN3P/AvA9KlhG+6XYmS8cPkBkJBi6B
2yCdZT1cXc/TPAFzjgAwz7K9g3awG0OeOc/CXymH0DD/snkiwKQoucStolYywZGc
GszjMQgeT4zOc1wtEz24uL3dMNDlDcQMAh56YvK2oB0iMYmAFyX/IS+f2bM9paXi
HX+mg/z53iwgf5ZXbslNDbMTJ5GNksjEGjCFfDHAdNdgT+lcW4l2U7q4PYUaN4LA
DE9j2OlOlQ9qjucOgoCStirnTP7XHd4p31lgdz8+THOQowB5Ji95OkiNQAFCfxBt
mcA/bWnJZQDm7L8RVzHovBpAaK6vUjxEvR+DXdESSzyZwkpsZwGZcyqGRT26R1/L
JE5WvjKufNc5v3Cat320MjyrLZwVGRgvEpDMoCw3nTWl9AtOj5vgaakEWr7AnqET
xk7UFbYmdTlQqkWuLKubz9Rx/FbrBmvd6vwTHy1Dfl6QyMWNCClatgN00Hxped/6
CErg+R/RXd8apGxnOuWDqoujPn5LOHzgJolp1Ox16nTiZe2G+LbDr3hqRFi1wW6w
ioMB4KpkdA03uyxJSWmDEMiR1l3Oxom0KUNyeXB0b21hdG9yIFByZXNzIDxwcmVz
c0BjcnlwdG9tYXRvci5vcmc+iQI9BBMBCgAnBQJXrtnDAhsDBQkHKygABQsJCAcD
BRUKCQgLBRYCAwEAAh4BAheAAAoJECO12++U1NgdQYMQAKCIzNJF8rURQcFLSv3J
sPBjRy2HCzCWm21MuhU+bsaZx7U9M9dgEjzLfxN9s19VsBH3WKLgok2FgiYSGka3
6Oy/P8VFLFmHs7dS9i2fro2eF7i4zj/ZD/9t0jM4ZIgLpbzr5sTBld292nsfXGob
xOJeOx3oWYyR2FO9VQxXjC3JvJyZkFgoy0tauS4Mvii4cF56wJGcxDTbe1s7UaRC
a/fh4zgISZSBE3rYhCawkN4mqMDM5RDjrdtjKUPWk345HcjjQ4Wos8xw4YbGbNr9
Pc7m2URYJJ0jFM4tnoRF6cmA3bT9tm8pcOFg+K/ycVrltVEy+A8Wj8UGjyP1uI1t
EqWHN3LZpIGfW0w9AGrw7OUI9czXcukfngj/DsOU3WMBDIM8pW9+zBpr75yIS6lz
C0IqksLXSqX0b/Rby4O+wb6UZ1ZFkaim2GGtAZV+nGXtdnEXSNFiP7ykzjZ02m/1
7CKyj3VmdAgT56zEIypFSfxm9gOWsJPmfhSyuE8bFyoitgNxpheZk6xZy4upVMPR
WK3hutScU0yDv2HVCiA3o3Ggy42nmz9HpGF6W2DmBx4bhMaVs6I2VFyKdQzmJD/3
FCWjwz8PiEgVGHGPnD+WdPFLhrc/44gF4h/VuLjkubtULGuTVvgjeTIJ5LR1Gmwc
YOk6eD7MAJPzJVj5/PYFtIbKiQIiBBMBCgAMBQJXrtonBYMHhh+AAAoJEGZ7hm6o
JAoJBh4P/1w88YMTKUHpFTfJEwH2hK36BZN96Bf/k+vP7n1Xxp3NheInJblHFOt/
ccsup6am+APrk8gGtlIVmtVc3nO8WMsWxfJxGDecyRsNbessnODv/llyg3tzVU/H
tLk7gLiK0TcIsOLfeNXGTxRRSKWjVFsNfuixNCzzHa7tFq6ddVn9VRZ8fqJB2p21
OogWSDqUo9q9Wfb4RkYHguDx+8Jzoo/MxR1TSt8gUO2xDvEbqgeQiMCLF8R0lO3Y
zz0FrpyOsFU1CxVp+wo55bWv1UdwgQKQt4o0m5/zDJ2RAtscXpd4YcTE+XxKeK+4
qhihhkhLGpKsxzK5m9/qwMbodHwoBCBzfalkUR9xOq9yQIeEoC8XYL62NqB3BCSU
KfWFIHxUkE9WH5zHWaV+bhrlNgk7nz3xBfPf1P2mNIc1VUHoNqOZOmWwz2VaKLSW
f3GIqx9wGythFbLdXmUoC3W//DDYgQnvImvkncMqQ5nRHPf8uHcLQK5WZyIxpgWT
eKon5G/cj0BTptcBhapMwSIyfaC5FV7so0/CkOA6R9Fyq2VpGoHy7XPhFS+6ieLi
KUWhCvbuf2deWbSaJ0peMdzy1p72UXwrsEM0M3Fz+Jd8zvCaFzf5Fx27+pAAdlfg
4bT3/2gSf7S+cU3+DnYOH0NeRt2Z2mjEKg9OwttTO/oDboQHdZlrtDRDcnlwdG9t
YXRvciBTZWN1cml0eS1UZWFtIDxzZWN1cml0eUBjcnlwdG9tYXRvci5vcmc+iQI9
BBMBCgAnBQJXrtnWAhsDBQkHKygABQsJCAcDBRUKCQgLBRYCAwEAAh4BAheAAAoJ
ECO12++U1NgddzoQAI78+Nvm6VvNuptXJjEmrpHRyKCnHF9wH5kxvF8WZCgpOkJ4
vONmyS+9ZlepnT83MpGm/MzdIMCnDJmDmqmA5ISBRcD7k9Gjzz5rPKwE2zDyo0M0
wF1L2UEUqAlcvE0e4twZcP2DGoNqdSf6IaWsXhQMb1a/rTMsoGZLuTB8kCbv6Ntl
ULahcRToTB2shsbZjzE896P6X5hDCfGWl0Jhcbf53pnXX1dOsEw3et9AGru1IUMs
UGM+wpgTwagRj+XB/WY1x9IznKtiHTq83Fvt+3bkg0+NIcV3GDqXDIUtqIwy8gDd
4KgBU+LkyxXFDa4OxLc53n6b+Iy1nDosM+SiqSzdCCgEs/dY1tQBn/7P1GT18dEe
tFgeH/c6wLvEpDIc9urAsYXf8H+1uy7glWpWTq8DE0yhCr4adjCqlIsVHQQO4UUW
NfqMGEFpJ+3HjSSwnvDGY78lLQh5d4vqWV435aNaMqZg0gJIA0FtiP1fRtmT73BG
N/tBNiBxretFR4B+x/TWqPd5iJV7/MAn/pa1WSOcaxzJrVUsjXdgLQCqcHWd4/w1
f4DU9cJjl3sxZlMdAlg8Q1bF+pmjQQ4WKZkqMtwpoUilfVXmL42ay1LBCgW68/uJ
OTyGfp8ntUsbbm5raGsny3TLqnacyG9hxcPGNTzD1+MrbUvfsc7+4U0dCZTuiQIi
BBMBCgAMBQJXrtonBYMHhh+AAAoJEGZ7hm6oJAoJ1DQP/R+1drZiZQU45ChMbfTb
XQjJRsUOGZp3PTWtx4KrVFvE8ea0PF+DZX5gLJYIU+iZmPXRpzFu6dKPbcZ7RfRt
5RRH102zDZzijt2CQd7YLO8wxUFoWX9X7DGgxXEcNjl9kFVmnyHgiTwTzuZ0Zy4y
PvoiwrhcZmXEYbOeV40gLFie6wuzz5IIcs01e30xIs+1/1gwmgI5UnG3jveUgmcj
f/lvg3POKiwrY5Uzw1FSruJx21X06wTpDcfOACID4L7aY9eg2B/qL2Xj8nuhejqG
+1AVTMk2o6pxkvevHmxYQfEpuWGCw0RCBn9ObWwz6Zn5J9pjGbMrM+b1/M2Ouv3N
cpoGgCSahKNsRMKO7RMrBG0jtLcasPSgZFYPJSZAAb+YhxKUbpPHzDIwTEjgM7CL
gKSyRTKyp5IoFK53bpXL/ZIjkAhMvyDult6+BL6vI0+h3BBA9I0FF2Qhe139xLv/
DS7aDiYAE9vGMGoeCBfxJPwUsDU3hrGe/wgL7fR6nmN7R2QffisBHKHsklORy9t3
w3YFRd5sBAxv+EOcdkgXEmqKOfVQ8KU9adQcxPDGMAK/esjVwxUxsaf2PF5noxxW
3zL2ureUO/mMoH5Cwr0BuM3HFb82t1JJd4IXlLEyNvDMFMwD2d7h37bGK7Y5hEsl
zL7Dm+wQRY8sxg4QOZHbJjQXuQINBFbgeicBEADnkxGSEL1zwACaiVqADKC6/pgO
MMWjxoENBT6r8Vnp1D5hfNDkEi9iXUpCEO6nzywBf3/4c4Yk1wBOBZ7YWyWXMf4v
2g1evxELO5z1UlAwna6HSl7G0omIBqzz1Er5IS7C9WEZM8ZggwcuswCrbxfz4+fN
t7cCL5QyOvuxez+vrn+VIgLQzKm+LV4Wc+OFbHIys+0saQUhItKO0/CsXGc8R314
jdN5UsZk/MUdPPAs+6OCr8d3PpJvR6IST76TtN8aDjSS9T6em7dwdGFEwCGww3Jc
xrAkvvUmSlscz+rnvHA5DYQGK6NXLenB40sVQVfch1r1VqwvlzA0u7OovjwM8+7u
+DaBQ0YejbdnC7yfeE91LmZkG6jRKfvTJkv18tjNsgZsVmM13xzP67fCFIB9M+lN
t9zEldGKHVwm+06FHIWJsBDRgrquNb9xd1vgHHeIbJvKf+LqZhVrbKVEneG34Km+
ndtb+mvcGc0fOoMU9lYrFaxAWl8oU9BchC9IyjcPZB445R+AhfTuoHSUViSCo6IO
TG0hQsJuNoKmDAU8l5sTsiFXuXBOo1wK8gTkRnhZHduZrZIjJXvT7efz1knLQ6eG
prZHf4CtbgHyAe2XZabetWtCsFcPbOjC7ezNK57UvVH98h2GkckxOM00BESMCTee
kYy7uG0v0rrajzHY1wARAQABiQIlBBgBCgAPBQJW4HonAhsMBQkHKygAAAoJECO1
2++U1NgdyAsQAKZUVA6pY225BASkeNiW31L7K4VeRYpAdFkiRex2zQFtj9Vovfi1
JeTs0fRm35dUsQraf1bkhsjEdPVZ3gD324/baauFO04KX+soyQvK/tUq8KO+5ALt
Ul5aAljuSwxfJWFpApv+Mbf7gOjm+77jirs7pgG/gCow/mkRlmKTwAmn2DXjkckC
2EH0mqmh5pdoNWKO7WeTFFbUmESsPcnB2FwTpEjHFvgHll+rmKpXZTgFYN4dDhhm
HsL/SCf/Nw+YIsuvErQ9TJVdJDLG8ZYatruk7dZZMPtFxvxM1Q36gDIpPEOKPkvm
dMXg6jHaIdYIaoMpzXFaXsQMdRuMtzbcA+CdwXVY55qGLtfmM/QuEiIJdDeeh7iB
+VAMyEFOOpi8IFhixaeMoZAmrKDqOkzPcMJVklLYq8N+b9p5JszYNwZEbpyWCACM
6K+iJzlWzW/OPZttGLJBgYuSYIJIuG80Cx5m5m1e5RAgQ1iT8nbfrS+gYttwP48J
V7SXQg7QugxG9l1vlK4VjnXiOFulJ7V0e/VyUBpJp3qHcCxFq3RnxVwlIqKZh+jm
Q1bk0H0Xodd27nQITfDP5ullByGW2Jrjs6SsXeR3jl9+t0XQfInU1L9d/wSOkMjL
9IMUt06lV4vB/WP2xioqLZiZ4eAi0E+lWkFxjZsgNs2xbOAYRThMB8a5
=W1Ri
-----END PGP PUBLIC KEY BLOCK-----
```
</details>
PGP key fingerprint: `3647 9903 B23A E0A5 9359  9A3E 23B5 DBEF 94D4 D81D` ([public key](https://gist.github.com/cryptobot/864300b6b44ae2d2a15abedfe14bd040))
## Expectations
When reporting a vulnerability, please provide us with a detailed report that includes:
- A description of the vulnerability
- Steps to reproduce the vulnerability
- Possible impact of the vulnerability
- Any additional information that may be helpful
We ask that you do not publicly disclose the vulnerability until we have had a chance to address it.
## Thank You
We appreciate your help in keeping Cryptomator secure. Thank you for your contributions to the security of our project.

58
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,58 @@
version: 2
updates:
- package-ecosystem: "maven"
directory: "/"
schedule:
interval: "weekly"
day: "monday"
time: "06:00"
timezone: "Etc/UTC"
ignore:
- dependency-name: "org.cryptomator:integrations-api"
versions: ["2.0.0-alpha1"]
- dependency-name: "jakarta.inject:jakarta.inject-api"
versions: ["2.0.1.MR"]
- dependency-name: "org.openjfx:*"
update-types: ["version-update:semver-major"]
groups:
java-test-dependencies:
patterns:
- "org.junit.jupiter:*"
- "org.mockito:*"
- "org.hamcrest:*"
- "com.google.jimfs:jimfs"
maven-build-plugins:
patterns:
- "org.apache.maven.plugins:*"
- "org.jacoco:jacoco-maven-plugin"
- "org.owasp:dependency-check-maven"
- "me.fabriciorby:maven-surefire-junit5-tree-reporter"
- "org.codehaus.mojo:license-maven-plugin"
javafx:
patterns:
- "org.openjfx:*"
java-production-dependencies:
patterns:
- "*"
exclude-patterns:
- "org.openjfx:*"
- "org.apache.maven.plugins:*"
- "org.jacoco:jacoco-maven-plugin"
- "org.owasp:dependency-check-maven"
- "me.fabriciorby:maven-surefire-junit5-tree-reporter"
- "org.codehaus.mojo:license-maven-plugin"
- "org.junit.jupiter:*"
- "org.mockito:*"
- "org.hamcrest:*"
- "com.google.jimfs:jimfs"
- package-ecosystem: "github-actions"
directory: "/" # even for `.github/workflows`
schedule:
interval: "monthly"
groups:
github-actions:
patterns:
- "*"
labels:
- "misc:ci"

View File

@@ -1,13 +0,0 @@
# Configuration for probot-no-response - https://github.com/probot/no-response
# Number of days of inactivity before an Issue is closed for lack of response
daysUntilClose: 14
# Label requiring a response
responseRequiredLabel: state:awaiting-response
# Comment to post when closing an Issue for lack of response. Set to `false` to disable
closeComment: >
This issue has been automatically closed because there has been no response
to our request for more information from the original author. With only the
information that is currently in the issue, we don't have enough information
to take action. Please reach out if you have or find the answers we need so
that we can investigate further.

29
.github/release.yml vendored Normal file
View File

@@ -0,0 +1,29 @@
# .github/release.yml
# see https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes#configuring-automatically-generated-release-notes
changelog:
exclude:
authors:
- cryptobot
- dependabot
- github-actions
categories:
- title: What's New 🎉
labels:
- type:feature-request
- type:enhancement
- title: Bugfixes 🐛
labels:
- type:security-issue
- type:bug
- type:minor-bug
- title: Other Changes 📎
labels:
- "*"
exclude:
labels:
- type:feature-request
- type:enhancement
- type:security-issue
- type:bug
- type:minor-bug

24
.github/stale.yml vendored
View File

@@ -1,24 +0,0 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 365
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 90
# Issues with these labels will never be considered stale
exemptLabels:
- type:security-issue # never close automatically
- type:feature-request # never close automatically
- type:enhancement # never close automatically
- type:upstream-bug # never close automatically
- state:awaiting-response # handled by different bot
- state:blocked
- state:confirmed
# Set to true to ignore issues in a milestone (defaults to false)
exemptMilestones: true
# Label to use when marking an issue as stale
staleLabel: state:stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false

View File

@@ -10,7 +10,8 @@ on:
required: false
env:
JAVA_VERSION: 19
JAVA_DIST: 'temurin'
JAVA_VERSION: '23.0.1+11'
jobs:
get-version:
@@ -20,51 +21,71 @@ jobs:
build:
name: Build AppImage
runs-on: ubuntu-latest
runs-on: ${{ matrix.os }}
needs: [get-version]
strategy:
fail-fast: false
matrix:
include:
- os: ubuntu-latest
appimage-suffix: x86_64
openjfx-url: 'https://download2.gluonhq.com/openjfx/23.0.1/openjfx-23.0.1_linux-x64_bin-jmods.zip'
openjfx-sha: '2164bca470bf70a5e2764645e2078ba7f787b274e5be3d7df30d87c5bb62bba6'
- os: ubuntu-24.04-arm
appimage-suffix: aarch64
openjfx-url: 'https://download2.gluonhq.com/openjfx/23.0.1/openjfx-23.0.1_linux-aarch64_bin-jmods.zip'
openjfx-sha: '09c92fa9fa0b82adefd88640a14ebb2a49e5f3f733a57d1542f5590d060ffe1b'
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
distribution: 'zulu'
distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }}
java-package: 'jdk+fx'
check-latest: true
cache: 'maven'
- name: Ensure major jfx version in pom equals in jdk
shell: pwsh
- name: Download OpenJFX jmods
id: download-jmods
run: |
$jfxPomVersion = (&mvn help:evaluate "-Dexpression=javafx.version" -q -DforceStdout) -split "\."
$jfxJdkVersion = ((Get-Content -path "${env:JAVA_HOME}/lib/javafx.properties" | Where-Object {$_ -like 'javafx.version=*' }) -replace '.*=','') -split "\."
if ($jfxPomVersion[0] -ne $jfxJdkVersion[0]) {
Write-Error "Major part of JavaFX version in pom($($jfxPomVersion[0])) does not match the version in JDK($($jfxJdkVersion[0])) "
curl -L ${{ matrix.openjfx-url }} -o openjfx-jmods.zip
echo "${{ matrix.openjfx-sha }} openjfx-jmods.zip" | shasum -a256 --check
mkdir -p openjfx-jmods
unzip -j openjfx-jmods.zip \*/javafx.base.jmod \*/javafx.controls.jmod \*/javafx.fxml.jmod \*/javafx.graphics.jmod -d openjfx-jmods
- name: Ensure major jfx version in pom and in jmods is the same
run: |
JMOD_VERSION=$(jmod describe openjfx-jmods/javafx.base.jmod | head -1)
JMOD_VERSION=${JMOD_VERSION#*@}
JMOD_VERSION=${JMOD_VERSION%%.*}
POM_JFX_VERSION=$(mvn help:evaluate "-Dexpression=javafx.version" -q -DforceStdout)
POM_JFX_VERSION=${POM_JFX_VERSION#*@}
POM_JFX_VERSION=${POM_JFX_VERSION%%.*}
if [ $POM_JFX_VERSION -ne $JMOD_VERSION_AMD64 ]; then
>&2 echo "Major JavaFX version in pom.xml (${POM_JFX_VERSION}) != amd64 jmod version (${JMOD_VERSION})"
exit 1
}
fi
- name: Set version
run : mvn versions:set -DnewVersion=${{ needs.get-version.outputs.semVerStr }}
- name: Run maven
run: mvn -B clean package -Pdependency-check,linux -DskipTests
run: mvn -B clean package -Plinux -DskipTests -Djavafx.platform=linux
- name: Patch target dir
run: |
cp LICENSE.txt target
cp target/cryptomator-*.jar target/mods
- name: Run jlink
#Remark: no compression is applied for improved build compression later (here appimage)
run: >
${JAVA_HOME}/bin/jlink
--verbose
--output runtime
--module-path "${JAVA_HOME}/jmods"
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.crypto.ec,jdk.security.auth,jdk.accessibility,jdk.management.jfr
--module-path "${JAVA_HOME}/jmods:openjfx-jmods"
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.security.auth,jdk.accessibility,jdk.management.jfr,jdk.net,java.compiler
--strip-native-commands
--no-header-files
--no-man-pages
--strip-debug
--compress=1
- name: Prepare additional launcher
run: envsubst '${SEMVER_STR} ${REVISION_NUM}' < dist/linux/launcher-gtk2.properties > launcher-gtk2.properties
env:
SEMVER_STR: ${{ needs.get-version.outputs.semVerStr }}
REVISION_NUM: ${{ needs.get-version.outputs.revNum }}
--compress zip-0
- name: Run jpackage
run: >
${JAVA_HOME}/bin/jpackage
@@ -77,23 +98,25 @@ jobs:
--dest appdir
--name Cryptomator
--vendor "Skymatic GmbH"
--copyright "(C) 2016 - 2023 Skymatic GmbH"
--copyright "(C) 2016 - 2025 Skymatic GmbH"
--app-version "${{ needs.get-version.outputs.semVerNum }}.${{ needs.get-version.outputs.revNum }}"
--java-options "--enable-preview"
--java-options "--enable-native-access=org.cryptomator.jfuse.linux.amd64,org.cryptomator.jfuse.linux.aarch64"
--java-options "--enable-native-access=org.cryptomator.jfuse.linux.amd64,org.cryptomator.jfuse.linux.aarch64,org.purejava.appindicator"
--java-options "-Xss5m"
--java-options "-Xmx256m"
--java-options "-Dcryptomator.appVersion=\"${{ needs.get-version.outputs.semVerStr }}\""
--java-options "-Dfile.encoding=\"utf-8\""
--java-options "-Dcryptomator.logDir=\"~/.local/share/Cryptomator/logs\""
--java-options "-Dcryptomator.pluginDir=\"~/.local/share/Cryptomator/plugins\""
--java-options "-Dcryptomator.settingsPath=\"~/.config/Cryptomator/settings.json:~/.Cryptomator/settings.json\""
--java-options "-Dcryptomator.p12Path=\"~/.config/Cryptomator/key.p12\""
--java-options "-Dcryptomator.ipcSocketPath=\"~/.config/Cryptomator/ipc.socket\""
--java-options "-Dcryptomator.mountPointsDir=\"~/.local/share/Cryptomator/mnt\""
--java-options "-Dcryptomator.showTrayIcon=false"
--java-options "-Djava.net.useSystemProxies=true"
--java-options "-Dcryptomator.logDir=\"@{userhome}/.local/share/Cryptomator/logs\""
--java-options "-Dcryptomator.pluginDir=\"@{userhome}/.local/share/Cryptomator/plugins\""
--java-options "-Dcryptomator.settingsPath=\"@{userhome}/.config/Cryptomator/settings.json:@{userhome}/.Cryptomator/settings.json\""
--java-options "-Dcryptomator.p12Path=\"@{userhome}/.config/Cryptomator/key.p12\""
--java-options "-Dcryptomator.ipcSocketPath=\"@{userhome}/.config/Cryptomator/ipc.socket\""
--java-options "-Dcryptomator.mountPointsDir=\"@{userhome}/.local/share/Cryptomator/mnt\""
--java-options "-Dcryptomator.showTrayIcon=true"
--java-options "-Dcryptomator.integrationsLinux.trayIconsDir=\"@{appdir}/usr/share/icons/hicolor/symbolic/apps\""
--java-options "-Dcryptomator.buildNumber=\"appimage-${{ needs.get-version.outputs.revNum }}\""
--add-launcher Cryptomator-gtk2=launcher-gtk2.properties
--java-options "-Dcryptomator.networking.truststore.p12Path=\"/etc/cryptomator/certs.p12\""
--resource-dir dist/linux/resources
- name: Patch Cryptomator.AppDir
run: |
@@ -102,17 +125,21 @@ jobs:
cp dist/linux/common/org.cryptomator.Cryptomator256.png Cryptomator.AppDir/usr/share/icons/hicolor/256x256/apps/org.cryptomator.Cryptomator.png
cp dist/linux/common/org.cryptomator.Cryptomator512.png Cryptomator.AppDir/usr/share/icons/hicolor/512x512/apps/org.cryptomator.Cryptomator.png
cp dist/linux/common/org.cryptomator.Cryptomator.svg Cryptomator.AppDir/usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg
cp dist/linux/common/org.cryptomator.Cryptomator.tray.svg Cryptomator.AppDir/usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.tray.svg
cp dist/linux/common/org.cryptomator.Cryptomator.tray-unlocked.svg Cryptomator.AppDir/usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.tray-unlocked.svg
cp dist/linux/common/org.cryptomator.Cryptomator.tray.svg Cryptomator.AppDir/usr/share/icons/hicolor/symbolic/apps/org.cryptomator.Cryptomator.tray-symbolic.svg
cp dist/linux/common/org.cryptomator.Cryptomator.tray-unlocked.svg Cryptomator.AppDir/usr/share/icons/hicolor/symbolic/apps/org.cryptomator.Cryptomator.tray-unlocked-symbolic.svg
cp dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml Cryptomator.AppDir/usr/share/metainfo/org.cryptomator.Cryptomator.metainfo.xml
cp dist/linux/common/org.cryptomator.Cryptomator.desktop Cryptomator.AppDir/usr/share/applications/org.cryptomator.Cryptomator.desktop
cp dist/linux/common/application-vnd.cryptomator.vault.xml Cryptomator.AppDir/usr/share/mime/packages/application-vnd.cryptomator.vault.xml
ln -s usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg Cryptomator.AppDir/org.cryptomator.Cryptomator.svg
ln -s usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg Cryptomator.AppDir/Cryptomator.svg
ln -s usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg Cryptomator.AppDir/.DirIcon
ln -s usr/share/applications/org.cryptomator.Cryptomator.desktop Cryptomator.AppDir/Cryptomator.desktop
ln -s usr/share/applications/org.cryptomator.Cryptomator.desktop Cryptomator.AppDir/org.cryptomator.Cryptomator.desktop
ln -s org.cryptomator.Cryptomator.metainfo.xml Cryptomator.AppDir/usr/share/metainfo/org.cryptomator.Cryptomator.appdata.xml
ln -s bin/cryptomator.sh Cryptomator.AppDir/AppRun
- name: Download AppImageKit
run: |
curl -L https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-x86_64.AppImage -o appimagetool.AppImage
curl -L https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-${{ matrix.appimage-suffix }}.AppImage -o appimagetool.AppImage
chmod +x appimagetool.AppImage
./appimagetool.AppImage --appimage-extract
- name: Prepare GPG-Agent for signing with key 615D449FE6E6A235
@@ -124,29 +151,29 @@ jobs:
GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }}
- name: Build AppImage
run: >
./squashfs-root/AppRun Cryptomator.AppDir cryptomator-${{ needs.get-version.outputs.semVerStr }}-x86_64.AppImage
-u 'gh-releases-zsync|cryptomator|cryptomator|latest|cryptomator-*-x86_64.AppImage.zsync'
--sign --sign-key=615D449FE6E6A235 --sign-args="--batch --pinentry-mode loopback"
./squashfs-root/AppRun Cryptomator.AppDir cryptomator-${{ needs.get-version.outputs.semVerStr }}-${{ matrix.appimage-suffix }}.AppImage
-u 'gh-releases-zsync|cryptomator|cryptomator|latest|cryptomator-*-${{ matrix.appimage-suffix }}.AppImage.zsync'
--sign --sign-key=615D449FE6E6A235
- name: Create detached GPG signatures
run: |
gpg --batch --quiet --passphrase-fd 0 --pinentry-mode loopback -u 615D449FE6E6A235 --detach-sign -a cryptomator-*.AppImage
gpg --batch --quiet --passphrase-fd 0 --pinentry-mode loopback -u 615D449FE6E6A235 --detach-sign -a cryptomator-*.AppImage.zsync
- name: Upload artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: appimage
name: appimage-${{ matrix.appimage-suffix }}
path: |
cryptomator-*.AppImage
cryptomator-*.AppImage.zsync
cryptomator-*.asc
if-no-files-found: error
- name: Publish AppImage on GitHub Releases
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/') && github.event.action == 'published'
uses: softprops/action-gh-release@v2
with:
fail_on_unmatched_files: true
token: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}
files: |
cryptomator-*.AppImage
cryptomator-*.zsync
cryptomator-*.asc
cryptomator-*.asc

40
.github/workflows/av-whitelist.yml vendored Normal file
View File

@@ -0,0 +1,40 @@
name: AntiVirus Whitelisting
on:
workflow_call:
inputs:
url:
description: "Url to the file to upload"
required: true
type: string
workflow_dispatch:
inputs:
url:
description: "Url to the file to upload"
required: true
type: string
jobs:
allowlist:
name: Anti Virus Allowlisting
runs-on: ubuntu-latest
steps:
- name: Download file
run: |
curl --remote-name ${{ inputs.url }} -L
- name: Upload to Kaspersky
uses: SamKirkland/FTP-Deploy-Action@v4.3.5
with:
protocol: ftps
server: allowlist.kaspersky-labs.com
port: 990
username: ${{ secrets.ALLOWLIST_KASPERSKY_USERNAME }}
password: ${{ secrets.ALLOWLIST_KASPERSKY_PASSWORD }}
- name: Upload to Avast
uses: SamKirkland/FTP-Deploy-Action@v4.3.5
with:
protocol: ftp
server: whitelisting.avast.com
port: 21
username: ${{ secrets.ALLOWLIST_AVAST_USERNAME }}
password: ${{ secrets.ALLOWLIST_AVAST_PASSWORD }}

View File

@@ -6,7 +6,8 @@ on:
types: [labeled]
env:
JAVA_VERSION: 19
JAVA_DIST: 'temurin'
JAVA_VERSION: 23
defaults:
run:
@@ -17,14 +18,14 @@ jobs:
name: Compile and Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'zulu'
distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }}
cache: 'maven'
- name: Cache SonarCloud packages
uses: actions/cache@v3
uses: actions/cache@v4
with:
path: ~/.sonar/cache
key: ${{ runner.os }}-sonar
@@ -32,10 +33,10 @@ jobs:
- name: Build and Test
run: >
xvfb-run
mvn -B verify
mvn -B verify -Djavafx.platform=linux
jacoco:report
org.sonarsource.scanner.maven:sonar-maven-plugin:sonar
-Pcoverage,dependency-check
-Pcoverage
-Dsonar.projectKey=cryptomator_cryptomator
-Dsonar.organization=cryptomator
-Dsonar.host.url=https://sonarcloud.io
@@ -44,7 +45,7 @@ jobs:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
- name: Draft a release
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v1
uses: softprops/action-gh-release@v2
with:
draft: true
discussion_category_name: releases
@@ -52,5 +53,25 @@ jobs:
generate_release_notes: true
body: |-
:construction: Work in Progress
### What's New 🎉
### Bugfixes 🐛
### Other Changes 📎
---
TODO FULL CHANGELOG
📜 List of closed issues is available [here](TODO)
---
⏳ Please be patient, the builds are still [running](https://github.com/cryptomator/cryptomator/actions). New versions of Cryptomator can be found here in a few moments. ⏳
<!-- Don't forget to include the
💾 SHA-256 checksums of release artifacts:
```
```
-->
As usual, the GPG signatures can be checked using [our public key `5811 7AFA 1F85 B3EE C154 677D 615D 449F E6E6 A235`](https://gist.github.com/cryptobot/211111cf092037490275f39d408f461a).

83
.github/workflows/check-jdk-updates.yml vendored Normal file
View File

@@ -0,0 +1,83 @@
name: Check JDK for non-major updates
on:
schedule:
- cron: '0 0 1 * *' # run once a month at the first day of month
workflow_dispatch:
env:
JDK_VERSION: '23.0.1+11'
JDK_VENDOR: temurin
RUNTIME_VERSION_HELPER: >
public class Test {
public static void main(String[] args) {
System.out.println(Runtime.version());
}
}
jobs:
check-version:
name: Checkout latest jdk version
runs-on: ubuntu-latest
env:
JDK_MAJOR_VERSION: 'toBeFilled'
steps:
- name: Determine current major version
run: echo 'JDK_MAJOR_VERSION=${{ env.JDK_VERSION }}'.substring(0,20) >> "$env:GITHUB_ENV"
shell: pwsh
- name: Checkout latest JDK ${{ env.JDK_MAJOR_VERSION }}
uses: actions/setup-java@v4
with:
java-version: ${{ env.JDK_MAJOR_VERSION}}
distribution: ${{ env.JDK_VENDOR }}
check-latest: true
- name: Determine if update is available
id: determine
shell: pwsh
run: |
$latestVersion = 0,0,0,0 #INTERIM, UPDATE, PATCH and BUILD
$currentVersion = 0,0,0,0
# Get the latest JDK runtime version
"${env:RUNTIME_VERSION_HELPER}" | Set-Content -Path "GetRuntimeVersion.java"
$latestVersionString = & java GetRuntimeVersion.java
$runtimeVersionAndBuild = $latestVersionString.Split('+')
if($runtimeVersionAndBuild.Length -eq 2) {
$latestVersion[3]=$runtimeVersionAndBuild[1];
}
$tmp=$runtimeVersionAndBuild[0].Split('.')
for($i=0;$i -lt $latestVersion.Length; $i++) {
$latestVersion[$i]=$tmp[$i+1];
}
# Get the current JDK version
$runtimeVersionAndBuild = '${{ env.JDK_VERSION}}'.Split('+')
if($runtimeVersionAndBuild.Length -eq 2) {
$currentVersion[3]=$runtimeVersionAndBuild[1];
}
$tmp=$runtimeVersionAndBuild[0].Split('.')
for($i=0;$i -lt $currentVersion.Length; $i++) {
$currentVersion[$i]=$tmp[$i+1];
}
# compare
for($i=0; $i -lt $currentVersion.Length ; $i++) {
if($latestVersion[$i] -gt $currentVersion[$i]){
echo 'UPDATE_AVAILABLE=true' >> "$env:GITHUB_OUTPUT"
echo "LATEST_JDK_VERSION='${latestVersionString}'" >> "$env:GITHUB_OUTPUT"
return 0;
}
}
- name: Notify
if: steps.determine.outputs.UPDATE_AVAILABLE == 'true'
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
SLACK_USERNAME: 'Cryptobot'
SLACK_ICON: false
SLACK_ICON_EMOJI: ':bot:'
SLACK_CHANNEL: 'cryptomator-desktop'
SLACK_TITLE: "JDK update available"
SLACK_MESSAGE: "Cryptomator-CI JDK can be upgraded to ${{ steps.determine.outputs.LATEST_JDK_VERSION }}. Check the Nextcloud collective for instructions."
SLACK_FOOTER: false
MSG_MINIMAL: true

View File

@@ -3,9 +3,6 @@ name: Build Debian Package
on:
workflow_dispatch:
inputs:
ref:
description: 'GitHub Ref (e.g. refs/tags/1.6.16)'
required: true
semver:
description: 'SemVer String (e.g. 1.7.0-beta1)'
required: true
@@ -19,19 +16,21 @@ on:
type: boolean
env:
JAVA_VERSION: 19
OPENJFX_JMODS_AMD64: 'https://download2.gluonhq.com/openjfx/19/openjfx-19_linux-x64_bin-jmods.zip'
OPENJFX_JMODS_AARCH64: 'https://download2.gluonhq.com/openjfx/19/openjfx-19_linux-aarch64_bin-jmods.zip'
JAVA_DIST: 'temurin'
JAVA_VERSION: '23.0.1+11'
COFFEELIBS_JDK: 23
COFFEELIBS_JDK_VERSION: '23.0.1+11-0ppa1'
OPENJFX_JMODS_AMD64: 'https://download2.gluonhq.com/openjfx/23.0.1/openjfx-23.0.1_linux-x64_bin-jmods.zip'
OPENJFX_JMODS_AMD64_HASH: '2164bca470bf70a5e2764645e2078ba7f787b274e5be3d7df30d87c5bb62bba6'
OPENJFX_JMODS_AARCH64: 'https://download2.gluonhq.com/openjfx/23.0.1/openjfx-23.0.1_linux-aarch64_bin-jmods.zip'
OPENJFX_JMODS_AARCH64_HASH: '09c92fa9fa0b82adefd88640a14ebb2a49e5f3f733a57d1542f5590d060ffe1b'
jobs:
build:
name: Build Debian Package
runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v3
with:
ref: ${{ inputs.ref }}
fetch-depth: 0
- uses: actions/checkout@v4
- id: versions
name: Get version information
run: |
@@ -45,22 +44,25 @@ jobs:
run: |
sudo add-apt-repository ppa:coffeelibs/openjdk
sudo apt-get update
sudo apt-get install debhelper devscripts dput coffeelibs-jdk-19 libgtk2.0-0
sudo apt-get install debhelper devscripts dput coffeelibs-jdk-${{ env.COFFEELIBS_JDK }}=${{ env.COFFEELIBS_JDK_VERSION }}
- name: Setup Java
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
distribution: 'zulu'
distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }}
check-latest: true
cache: 'maven'
- name: Run maven
run: mvn -B clean package -Pdependency-check,linux -DskipTests
run: mvn -B clean package -Plinux -Djavafx.platform=linux -DskipTests
- name: Download OpenJFX jmods
id: download-jmods
run: |
curl -L ${{ env.OPENJFX_JMODS_AMD64 }} -o openjfx-amd64.zip
echo "${{ env.OPENJFX_JMODS_AMD64_HASH }} openjfx-amd64.zip" | shasum -a256 --check
mkdir -p jmods/amd64
unzip -j openjfx-amd64.zip \*/javafx.base.jmod \*/javafx.controls.jmod \*/javafx.fxml.jmod \*/javafx.graphics.jmod -d jmods/amd64
curl -L ${{ env.OPENJFX_JMODS_AARCH64 }} -o openjfx-aarch64.zip
echo "${{ env.OPENJFX_JMODS_AARCH64_HASH }} openjfx-aarch64.zip" | shasum -a256 --check
mkdir -p jmods/aarch64
unzip -j openjfx-aarch64.zip \*/javafx.base.jmod \*/javafx.controls.jmod \*/javafx.fxml.jmod \*/javafx.graphics.jmod -d jmods/aarch64
- name: Ensure major jfx version in pom and in jmods is the same
@@ -97,7 +99,8 @@ jobs:
run: |
cp -r dist/linux/debian/ pkgdir
export RFC2822_TIMESTAMP=`date --rfc-2822`
envsubst '${SEMVER_STR} ${VERSION_NUM} ${REVISION_NUM}' < dist/linux/debian/rules > pkgdir/debian/rules
export DISABLE_UPDATE_CHECK=${{ inputs.dput }}
envsubst '${SEMVER_STR} ${VERSION_NUM} ${REVISION_NUM} ${DISABLE_UPDATE_CHECK}' < dist/linux/debian/rules > pkgdir/debian/rules
envsubst '${PPA_VERSION} ${RFC2822_TIMESTAMP}' < dist/linux/debian/changelog > pkgdir/debian/changelog
find . -name "*.jar" >> pkgdir/debian/source/include-binaries
mv pkgdir cryptomator_${{ inputs.ppaver }}
@@ -125,7 +128,7 @@ jobs:
run: |
gpg --batch --quiet --passphrase-fd 0 --pinentry-mode loopback -u 615D449FE6E6A235 --detach-sign -a cryptomator_*_amd64.deb
- name: Upload artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: linux-deb-package
path: |
@@ -139,17 +142,11 @@ jobs:
- name: Publish on PPA
if: inputs.dput
run: dput ppa:sebastian-stenzel/cryptomator-beta cryptomator_*_source.changes
# If ref is a tag, also upload to GitHub Releases:
- name: Determine tag name
if: startsWith(inputs.ref, 'refs/tags/')
run: |
REF=${{ inputs.ref }}
echo "TAG_NAME=${REF##*/}" >> $GITHUB_ENV
- name: Publish Debian package on GitHub Releases
if: startsWith(inputs.ref, 'refs/tags/')
if: startsWith(github.ref, 'refs/tags/') && inputs.dput
env:
GITHUB_TOKEN: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}
run: |
artifacts=$(ls | grep cryptomator*.deb)
gh release upload ${{ env.TAG_NAME }} $artifacts
gh release upload ${{ github.ref_name }} $artifacts

18
.github/workflows/dependency-check.yml vendored Normal file
View File

@@ -0,0 +1,18 @@
name: OWASP Maven Dependency Check
on:
schedule:
- cron: '0 8 * * 0'
workflow_dispatch:
jobs:
check-dependencies:
uses: skymatic/workflows/.github/workflows/run-dependency-check.yml@v1
with:
runner-os: 'ubuntu-latest'
java-distribution: 'temurin'
java-version: 23
check-command: 'mvn -B validate -Pdependency-check -Djavafx.platform=linux'
secrets:
nvd-api-key: ${{ secrets.NVD_API_KEY }}
slack-webhook-url: ${{ secrets.SLACK_WEBHOOK_URL }}

View File

@@ -10,7 +10,7 @@ jobs:
steps:
- name: Get download count of latest releases
id: get-stats
uses: actions/github-script@v6
uses: actions/github-script@v7
with:
script: |
const query = `query($owner:String!, $name:String!) {

View File

@@ -2,7 +2,7 @@ name: Update Error Database
on:
discussion:
types: [created, edited, category_changed, answered, unanswered]
types: [created, edited, deleted, category_changed, answered, unanswered]
discussion_comment:
types: [created, edited, deleted]
@@ -12,8 +12,9 @@ jobs:
if: github.event.discussion.category.name == 'Errors'
steps:
- name: Query Discussion Data
if: github.event_name == 'discussion_comment' || github.event_name == 'discussion' && github.event.action != 'deleted'
id: query-data
uses: actions/github-script@v6
uses: actions/github-script@v7
with:
script: |
const query = `query ($owner: String!, $name: String!, $discussionNumber: Int!) {
@@ -47,8 +48,13 @@ jobs:
- name: Merge Error Code Data
run: |
jq -c '.' ${{ steps.get-gist.outputs.file }} > original.json
echo $DISCUSSION | jq -c '.repository.discussion | .comments = .comments.totalCount | {(.id|tostring) : .}' > new.json
jq -s '.[0] * .[1]' original.json new.json > merged.json
if [ ! -z "$DISCUSSION" ]
then
echo $DISCUSSION | jq -c '.repository.discussion | .comments = .comments.totalCount | {(.id|tostring) : .}' > new.json
jq -s '.[0] * .[1]' original.json new.json > merged.json
else
cat original.json | jq 'del(.[] | select(.url=="https://github.com/cryptomator/cryptomator/discussions/${{ github.event.discussion.number }}"))' > merged.json
fi
env:
DISCUSSION: ${{ steps.query-data.outputs.result }}
- name: Patch Gist

88
.github/workflows/flathub.yml vendored Normal file
View File

@@ -0,0 +1,88 @@
name: Create PR for flathub
on:
release:
types: [published]
workflow_dispatch:
inputs:
tag:
description: 'Release tag'
required: true
jobs:
get-version:
uses: ./.github/workflows/get-version.yml
with:
version: ${{ inputs.tag }}
tarball:
name: Determines tarball url and compute checksum
runs-on: ubuntu-latest
needs: [get-version]
if: github.event_name == 'workflow_dispatch' || needs.get-version.outputs.versionType == 'stable'
outputs:
url: ${{ steps.url.outputs.url}}
sha512: ${{ steps.sha512.outputs.sha512}}
steps:
- name: Determine tarball url
id: url
run: |
URL="";
if [[ -n "${{ inputs.tag }}" ]]; then
URL="https://github.com/cryptomator/cryptomator/archive/refs/tags/${{ inputs.tag }}.tar.gz"
else
URL="https://github.com/cryptomator/cryptomator/archive/refs/tags/${{ github.event.release.tag_name }}.tar.gz"
fi
echo "url=${URL}" >> "$GITHUB_OUTPUT"
- name: Download source tarball and compute checksum
id: sha512
run: |
curl --silent --fail-with-body -L -H "Accept: application/vnd.github+json" ${{ steps.url.outputs.url }} --output cryptomator.tar.gz
TARBALL_SHA512=$(sha512sum cryptomator.tar.gz | cut -d ' ' -f1)
echo "sha512=${TARBALL_SHA512}" >> "$GITHUB_OUTPUT"
flathub:
name: Create PR for flathub
runs-on: ubuntu-latest
needs: [tarball, get-version]
env:
FLATHUB_PR_URL: tbd
steps:
- uses: actions/checkout@v4
with:
repository: 'flathub/org.cryptomator.Cryptomator'
token: ${{ secrets.CRYPTOBOT_WINGET_TOKEN }}
- name: Checkout release branch
run: |
git checkout -b release/${{ needs.get-version.outputs.semVerStr }}
- name: Update build file
run: |
sed -i -e 's/VERSION: [0-9]\+\.[0-9]\+\.[0-9]\+.*/VERSION: ${{ needs.get-version.outputs.semVerStr }}/g' org.cryptomator.Cryptomator.yaml
sed -i -e 's/sha512: [0-9A-Za-z_\+-]\{128\} #CRYPTOMATOR/sha512: ${{ needs.tarball.outputs.sha512 }} #CRYPTOMATOR/g' org.cryptomator.Cryptomator.yaml
sed -i -e 's;url: https://github.com/cryptomator/cryptomator/archive/refs/tags/[^[:blank:]]\+;url: ${{ needs.tarball.outputs.url }};g' org.cryptomator.Cryptomator.yaml
- name: Commit and push
run: |
git config user.name "${{ github.actor }}"
git config user.email "${{ github.actor_id }}+${{ github.actor }}@users.noreply.github.com"
git config push.autoSetupRemote true
git stage .
git commit -m "Prepare release ${{needs.get-version.outputs.semVerStr}}"
git push
- name: Create pull request
run: |
printf "> [!IMPORTANT]\n> Todos:\n> - [ ] Update maven dependencies\n> - [ ] Check for JDK update\n> - [ ] Check for JFX update" > pr_body.md
PR_URL=$(gh pr create --title "Release ${{ needs.get-version.outputs.semVerStr }}" --body-file pr_body.md)
echo "FLATHUB_PR_URL=$PR_URL" >> "$GITHUB_ENV"
env:
GH_TOKEN: ${{ secrets.CRYPTOBOT_WINGET_TOKEN }}
- name: Slack Notification
uses: rtCamp/action-slack-notify@v2
if: github.event_name == 'release'
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
SLACK_USERNAME: 'Cryptobot'
SLACK_ICON: false
SLACK_ICON_EMOJI: ':bot:'
SLACK_CHANNEL: 'cryptomator-desktop'
SLACK_TITLE: "Flathub release PR created for ${{ github.event.repository.name }} ${{ github.event.release.tag_name }} created."
SLACK_MESSAGE: "See <${{ env.FLATHUB_PR_URL }}|PR> on how to proceed.>."
SLACK_FOOTER: false
MSG_MINIMAL: true

View File

@@ -22,9 +22,8 @@ on:
value: ${{ jobs.determine-version.outputs.type }}
env:
JAVA_VERSION: 19
JAVA_DIST: 'temurin'
JAVA_CACHE: 'maven'
JAVA_VERSION: 23
jobs:
determine-version:
@@ -36,22 +35,22 @@ jobs:
revNum: ${{ steps.versions.outputs.revNum }}
type: ${{ steps.versions.outputs.type}}
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Java
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }}
cache: ${{ env.JAVA_CACHE }}
cache: 'maven'
- id: versions
name: Get version information
run: |
if [[ $GITHUB_REF =~ refs/tags/[0-9]+\.[0-9]+\.[0-9]+.* ]]; then
SEM_VER_STR=${GITHUB_REF##*/}
elif [[ "${{ inputs.version }}" =~ [0-9]+\.[0-9]+\.[0-9]+.* ]]; then
SEM_VER_STR="${{ github.event.inputs.version }}"
SEM_VER_STR="${{ inputs.version }}"
else
SEM_VER_STR=`mvn help:evaluate -Dexpression=project.version -q -DforceStdout`
fi
@@ -72,6 +71,6 @@ jobs:
echo "revNum=${REVCOUNT}" >> $GITHUB_OUTPUT
echo "type=${TYPE}" >> $GITHUB_OUTPUT
- name: Validate Version
uses: skymatic/semver-validation-action@v2
uses: skymatic/semver-validation-action@v3
with:
version: ${{ steps.versions.outputs.semVerStr }}
version: ${{ steps.versions.outputs.semVerStr }}

264
.github/workflows/mac-dmg-x64.yml vendored Normal file
View File

@@ -0,0 +1,264 @@
name: Build macOS .dmg for x64
#######################################
# STOP! DO NOT EDIT THIS FILE!
#
# It is a copy of mac-dmg.yml with tiny adjustements (mainly lines 42 to 47)
# It was made necessary, since Github does not offer free macos intel runners for macos 15 and above.
# This workflow can only be triggered by a release.
#
#######################################
on:
release:
types: [published]
env:
JAVA_DIST: 'temurin'
JAVA_VERSION: '23.0.1+11'
jobs:
get-version:
uses: ./.github/workflows/get-version.yml
with:
version: ${{ inputs.version }}
build-arm:
name: Build Cryptomator.app for ${{ matrix.output-suffix }}
runs-on: ${{ matrix.os }}
needs: [get-version]
strategy:
fail-fast: false
matrix:
include:
- os: macos-15-large
architecture: x64
output-suffix: x64
fuse-lib: macFUSE
openjfx-url: 'https://download2.gluonhq.com/openjfx/23.0.1/openjfx-23.0.1_osx-x64_bin-jmods.zip'
openjfx-sha: '8857965975c464a0e5d57709292ce357d0ebb39f6168c41d5ca38301e42c3c8e'
steps:
- uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }}
architecture: ${{ matrix.architecture }}
check-latest: true
cache: 'maven'
- name: Download OpenJFX jmods
id: download-jmods
run: |
curl -L ${{ matrix.openjfx-url }} -o openjfx-jmods.zip
echo "${{ matrix.openjfx-sha }} *openjfx-jmods.zip" | shasum -a256 --check
mkdir -p openjfx-jmods/
unzip -jo openjfx-jmods.zip \*/javafx.base.jmod \*/javafx.controls.jmod \*/javafx.fxml.jmod \*/javafx.graphics.jmod -d openjfx-jmods
- name: Ensure major jfx version in pom and in jmods is the same
run: |
JMOD_VERSION=$(jmod describe openjfx-jmods/javafx.base.jmod | head -1)
JMOD_VERSION=${JMOD_VERSION#*@}
JMOD_VERSION=${JMOD_VERSION%%.*}
POM_JFX_VERSION=$(mvn help:evaluate "-Dexpression=javafx.version" -q -DforceStdout)
POM_JFX_VERSION=${POM_JFX_VERSION#*@}
POM_JFX_VERSION=${POM_JFX_VERSION%%.*}
if [ "${POM_JFX_VERSION}" -ne "${JMOD_VERSION}" ]; then
>&2 echo "Major JavaFX version in pom.xml (${POM_JFX_VERSION}) != jmod version (${JMOD_VERSION})"
exit 1
fi
- name: Set version
run : mvn versions:set -DnewVersion=${{ needs.get-version.outputs.semVerStr }}
- name: Run maven
run: mvn -B -Djavafx.platform=mac clean package -Pmac -DskipTests
- name: Patch target dir
run: |
cp LICENSE.txt target
cp target/cryptomator-*.jar target/mods
- name: Run jlink
#Remark: no compression is applied for improved build compression later (here dmg)
run: >
${JAVA_HOME}/bin/jlink
--verbose
--output runtime
--module-path "${JAVA_HOME}/jmods:openjfx-jmods"
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.accessibility,jdk.management.jfr,java.compiler
--strip-native-commands
--no-header-files
--no-man-pages
--strip-debug
--compress zip-0
- name: Run jpackage
run: >
${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 appdir
--name Cryptomator
--vendor "Skymatic GmbH"
--copyright "(C) 2016 - 2025 Skymatic GmbH"
--app-version "${{ needs.get-version.outputs.semVerNum }}"
--java-options "--enable-preview"
--java-options "--enable-native-access=org.cryptomator.jfuse.mac"
--java-options "-Xss5m"
--java-options "-Xmx256m"
--java-options "-Dfile.encoding=\"utf-8\""
--java-options "-Djava.net.useSystemProxies=true"
--java-options "-Dapple.awt.enableTemplateImages=true"
--java-options "-Dsun.java2d.metal=true"
--java-options "-Dcryptomator.appVersion=\"${{ needs.get-version.outputs.semVerStr }}\""
--java-options "-Dcryptomator.logDir=\"@{userhome}/Library/Logs/Cryptomator\""
--java-options "-Dcryptomator.pluginDir=\"@{userhome}/Library/Application Support/Cryptomator/Plugins\""
--java-options "-Dcryptomator.settingsPath=\"@{userhome}/Library/Application Support/Cryptomator/settings.json\""
--java-options "-Dcryptomator.p12Path=\"@{userhome}/Library/Application Support/Cryptomator/key.p12\""
--java-options "-Dcryptomator.ipcSocketPath=\"@{userhome}/Library/Application Support/Cryptomator/ipc.socket\""
--java-options "-Dcryptomator.integrationsMac.keychainServiceName=\"Cryptomator\""
--java-options "-Dcryptomator.mountPointsDir=\"@{userhome}/Library/Application Support/Cryptomator/mnt\""
--java-options "-Dcryptomator.showTrayIcon=true"
--java-options "-Dcryptomator.buildNumber=\"dmg-${{ needs.get-version.outputs.revNum }}\""
--mac-package-identifier org.cryptomator
--resource-dir dist/mac/resources
- name: Patch Cryptomator.app
run: |
mv appdir/Cryptomator.app Cryptomator.app
mv dist/mac/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
echo -n "$PROVISIONING_PROFILE_BASE64" | base64 --decode --output Cryptomator.app/Contents/embedded.provisionprofile
env:
VERSION_NO: ${{ needs.get-version.outputs.semVerNum }}
REVISION_NO: ${{ needs.get-version.outputs.revNum }}
PROVISIONING_PROFILE_BASE64: ${{ secrets.MACOS_PROVISIONING_PROFILE_BASE64 }}
- name: Generate license for dmg
run: >
mvn -B -Djavafx.platform=mac license:add-third-party
-Dlicense.thirdPartyFilename=license.rtf
-Dlicense.outputDirectory=dist/mac/dmg/resources
-Dlicense.fileTemplate=dist/mac/dmg/resources/licenseTemplate.ftl
-Dlicense.includedScopes=compile
-Dlicense.excludedGroups=^org\.cryptomator
-Dlicense.failOnMissing=true
-Dlicense.licenseMergesUrl=file://${{ github.workspace }}/license/merges
- name: Install codesign certificate
run: |
# create variables
CERTIFICATE_PATH=$RUNNER_TEMP/codesign.p12
KEYCHAIN_PATH=$RUNNER_TEMP/codesign.keychain-db
# import certificate and provisioning profile from secrets
echo -n "$CODESIGN_P12_BASE64" | base64 --decode --output $CERTIFICATE_PATH
# create temporary keychain
security create-keychain -p "$CODESIGN_TMP_KEYCHAIN_PW" $KEYCHAIN_PATH
security set-keychain-settings -lut 900 $KEYCHAIN_PATH
security unlock-keychain -p "$CODESIGN_TMP_KEYCHAIN_PW" $KEYCHAIN_PATH
# import certificate to keychain
security import $CERTIFICATE_PATH -P "$CODESIGN_P12_PW" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
security list-keychain -d user -s $KEYCHAIN_PATH
env:
CODESIGN_P12_BASE64: ${{ secrets.MACOS_CODESIGN_P12_BASE64 }}
CODESIGN_P12_PW: ${{ secrets.MACOS_CODESIGN_P12_PW }}
CODESIGN_TMP_KEYCHAIN_PW: ${{ secrets.MACOS_CODESIGN_TMP_KEYCHAIN_PW }}
- name: Codesign
run: |
echo "Codesigning jdk files..."
find Cryptomator.app/Contents/runtime/Contents/Home/lib/ -name '*.dylib' -exec codesign --force -s ${CODESIGN_IDENTITY} {} \;
find Cryptomator.app/Contents/runtime/Contents/Home/lib/ \( -name 'jspawnhelper' -o -name 'pauseengine' -o -name 'simengine' \) -exec codesign --force -o runtime -s ${CODESIGN_IDENTITY} {} \;
echo "Codesigning jar contents..."
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..."
sed -i '' "s|###APP_IDENTIFIER_PREFIX###|${TEAM_IDENTIFIER}.|g" dist/mac/Cryptomator.entitlements
sed -i '' "s|###TEAM_IDENTIFIER###|${TEAM_IDENTIFIER}|g" dist/mac/Cryptomator.entitlements
codesign --force --deep --entitlements dist/mac/Cryptomator.entitlements -o runtime -s ${CODESIGN_IDENTITY} Cryptomator.app
env:
CODESIGN_IDENTITY: ${{ secrets.MACOS_CODESIGN_IDENTITY }}
TEAM_IDENTIFIER: ${{ secrets.MACOS_TEAM_IDENTIFIER }}
- name: Prepare .dmg contents
run: |
mkdir dmg
mv Cryptomator.app dmg
cp dist/mac/dmg/resources/${{ matrix.fuse-lib }}.webloc dmg
ls -l dmg
- name: Install create-dmg
run: |
brew install create-dmg
create-dmg --help
- name: Create .dmg
run: >
create-dmg
--volname Cryptomator
--volicon "dist/mac/dmg/resources/Cryptomator-Volume.icns"
--background "dist/mac/dmg/resources/Cryptomator-${{ matrix.fuse-lib }}-background.tiff"
--window-pos 400 100
--window-size 640 694
--icon-size 128
--icon "Cryptomator.app" 128 245
--hide-extension "Cryptomator.app"
--icon "${{ matrix.fuse-lib }}.webloc" 320 501
--hide-extension "${{ matrix.fuse-lib }}.webloc"
--app-drop-link 512 245
--eula "dist/mac/dmg/resources/license.rtf"
--icon ".background" 128 758
--icon ".VolumeIcon.icns" 512 758
Cryptomator-${VERSION_NO}-${{ matrix.output-suffix }}.dmg dmg
env:
VERSION_NO: ${{ needs.get-version.outputs.semVerNum }}
- name: Notarize .dmg
if: startsWith(github.ref, 'refs/tags/') || inputs.notarize
uses: cocoalibs/xcode-notarization-action@v1
with:
app-path: 'Cryptomator-*.dmg'
apple-id: ${{ secrets.MACOS_NOTARIZATION_APPLE_ID }}
password: ${{ secrets.MACOS_NOTARIZATION_PW }}
team-id: ${{ secrets.MACOS_NOTARIZATION_TEAM_ID }}
xcode-path: '/Applications/Xcode_16.app'
- name: Add possible alpha/beta tags to installer name
run: mv Cryptomator-*.dmg Cryptomator-${{ needs.get-version.outputs.semVerStr }}-${{ matrix.output-suffix }}.dmg
- name: Create detached GPG signature with key 615D449FE6E6A235
run: |
echo "${GPG_PRIVATE_KEY}" | gpg --batch --quiet --import
echo "${GPG_PASSPHRASE}" | gpg --batch --quiet --passphrase-fd 0 --pinentry-mode loopback -u 615D449FE6E6A235 --detach-sign -a Cryptomator-*.dmg
env:
GPG_PRIVATE_KEY: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }}
GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }}
- name: Clean up codesign certificate
if: ${{ always() }}
run: security delete-keychain $RUNNER_TEMP/codesign.keychain-db
continue-on-error: true
- name: Upload artifacts
uses: actions/upload-artifact@v4
with:
name: dmg-${{ matrix.output-suffix }}
path: |
Cryptomator-*.dmg
Cryptomator-*.asc
if-no-files-found: error
- name: Publish dmg on GitHub Releases
if: startsWith(github.ref, 'refs/tags/') && github.event.action == 'published'
uses: softprops/action-gh-release@v2
with:
fail_on_unmatched_files: true
token: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}
files: |
Cryptomator-*.dmg
Cryptomator-*.asc

View File

@@ -1,4 +1,4 @@
name: Build macOS .dmg
name: Build macOS .dmg for arm64
on:
release:
@@ -8,9 +8,15 @@ on:
version:
description: 'Version'
required: false
notarize:
description: 'Notarize'
required: true
default: false
type: boolean
env:
JAVA_VERSION: 19
JAVA_DIST: 'temurin'
JAVA_VERSION: '23.0.1+11'
jobs:
get-version:
@@ -26,54 +32,63 @@ jobs:
fail-fast: false
matrix:
include:
- os: macos-11
architecture: x64
output-suffix: x64
xcode-path: '/Applications/Xcode_13.2.1.app'
- os: [self-hosted, macOS, ARM64]
- os: macos-15
architecture: aarch64
output-suffix: arm64
xcode-path: '/Applications/Xcode_13.2.1.app'
fuse-lib: FUSE-T
openjfx-url: 'https://download2.gluonhq.com/openjfx/23.0.1/openjfx-23.0.1_osx-aarch64_bin-jmods.zip'
openjfx-sha: 'a800724a1f3e6757ecfa0bd5bf7ed64d2e6a7a3f5b3522650a70b8cfc7782fb6'
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
distribution: 'zulu'
distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }}
java-package: 'jdk+fx'
architecture: ${{ matrix.architecture }}
check-latest: true
cache: 'maven'
- name: Ensure major jfx version in pom equals in jdk
if: ${{ !contains(matrix.os, 'self-hosted') }}
shell: pwsh
- name: Download OpenJFX jmods
id: download-jmods
run: |
$jfxPomVersion = (&mvn help:evaluate "-Dexpression=javafx.version" -q -DforceStdout) -split "\."
$jfxJdkVersion = ((Get-Content -path "${env:JAVA_HOME}/lib/javafx.properties" | Where-Object {$_ -like 'javafx.version=*' }) -replace '.*=','') -split "\."
if ($jfxPomVersion[0] -ne $jfxJdkVersion[0]) {
Write-Error "Major part of JavaFX version in pom($($jfxPomVersion[0])) does not match the version in JDK($($jfxJdkVersion[0])) "
curl -L ${{ matrix.openjfx-url }} -o openjfx-jmods.zip
echo "${{ matrix.openjfx-sha }} *openjfx-jmods.zip" | shasum -a256 --check
mkdir -p openjfx-jmods/
unzip -jo openjfx-jmods.zip \*/javafx.base.jmod \*/javafx.controls.jmod \*/javafx.fxml.jmod \*/javafx.graphics.jmod -d openjfx-jmods
- name: Ensure major jfx version in pom and in jmods is the same
run: |
JMOD_VERSION=$(jmod describe openjfx-jmods/javafx.base.jmod | head -1)
JMOD_VERSION=${JMOD_VERSION#*@}
JMOD_VERSION=${JMOD_VERSION%%.*}
POM_JFX_VERSION=$(mvn help:evaluate "-Dexpression=javafx.version" -q -DforceStdout)
POM_JFX_VERSION=${POM_JFX_VERSION#*@}
POM_JFX_VERSION=${POM_JFX_VERSION%%.*}
if [ "${POM_JFX_VERSION}" -ne "${JMOD_VERSION}" ]; then
>&2 echo "Major JavaFX version in pom.xml (${POM_JFX_VERSION}) != jmod version (${JMOD_VERSION})"
exit 1
}
fi
- name: Set version
run : mvn versions:set -DnewVersion=${{ needs.get-version.outputs.semVerStr }}
- name: Run maven
run: mvn -B clean package -Pdependency-check,mac -DskipTests
run: mvn -B -Djavafx.platform=mac clean package -Pmac -DskipTests
- name: Patch target dir
run: |
cp LICENSE.txt target
cp target/cryptomator-*.jar target/mods
- name: Run jlink
#Remark: no compression is applied for improved build compression later (here dmg)
run: >
${JAVA_HOME}/bin/jlink
--verbose
--output runtime
--module-path "${JAVA_HOME}/jmods"
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.crypto.ec,jdk.accessibility,jdk.management.jfr
--module-path "${JAVA_HOME}/jmods:openjfx-jmods"
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.accessibility,jdk.management.jfr,java.compiler
--strip-native-commands
--no-header-files
--no-man-pages
--strip-debug
--compress=1
--compress zip-0
- name: Run jpackage
run: >
${JAVA_HOME}/bin/jpackage
@@ -86,23 +101,24 @@ jobs:
--dest appdir
--name Cryptomator
--vendor "Skymatic GmbH"
--copyright "(C) 2016 - 2023 Skymatic GmbH"
--copyright "(C) 2016 - 2025 Skymatic GmbH"
--app-version "${{ needs.get-version.outputs.semVerNum }}"
--java-options "--enable-preview"
--java-options "--enable-native-access=org.cryptomator.jfuse.mac"
--java-options "-Xss5m"
--java-options "-Xmx256m"
--java-options "-Dfile.encoding=\"utf-8\""
--java-options "-Djava.net.useSystemProxies=true"
--java-options "-Dapple.awt.enableTemplateImages=true"
--java-options "-Dsun.java2d.metal=true"
--java-options "-Dcryptomator.appVersion=\"${{ needs.get-version.outputs.semVerStr }}\""
--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.p12Path=\"~/Library/Application Support/Cryptomator/key.p12\""
--java-options "-Dcryptomator.ipcSocketPath=\"~/Library/Application Support/Cryptomator/ipc.socket\""
--java-options "-Dcryptomator.logDir=\"@{userhome}/Library/Logs/Cryptomator\""
--java-options "-Dcryptomator.pluginDir=\"@{userhome}/Library/Application Support/Cryptomator/Plugins\""
--java-options "-Dcryptomator.settingsPath=\"@{userhome}/Library/Application Support/Cryptomator/settings.json\""
--java-options "-Dcryptomator.p12Path=\"@{userhome}/Library/Application Support/Cryptomator/key.p12\""
--java-options "-Dcryptomator.ipcSocketPath=\"@{userhome}/Library/Application Support/Cryptomator/ipc.socket\""
--java-options "-Dcryptomator.integrationsMac.keychainServiceName=\"Cryptomator\""
--java-options "-Dcryptomator.mountPointsDir=\"~/Cryptomator\""
--java-options "-Dcryptomator.mountPointsDir=\"@{userhome}/Library/Application Support/Cryptomator/mnt\""
--java-options "-Dcryptomator.showTrayIcon=true"
--java-options "-Dcryptomator.buildNumber=\"dmg-${{ needs.get-version.outputs.revNum }}\""
--mac-package-identifier org.cryptomator
@@ -113,12 +129,14 @@ jobs:
mv dist/mac/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
echo -n "$PROVISIONING_PROFILE_BASE64" | base64 --decode --output Cryptomator.app/Contents/embedded.provisionprofile
env:
VERSION_NO: ${{ needs.get-version.outputs.semVerNum }}
REVISION_NO: ${{ needs.get-version.outputs.revNum }}
PROVISIONING_PROFILE_BASE64: ${{ secrets.MACOS_PROVISIONING_PROFILE_BASE64 }}
- name: Generate license for dmg
run: >
mvn -B license:add-third-party
mvn -B -Djavafx.platform=mac license:add-third-party
-Dlicense.thirdPartyFilename=license.rtf
-Dlicense.outputDirectory=dist/mac/dmg/resources
-Dlicense.fileTemplate=dist/mac/dmg/resources/licenseTemplate.ftl
@@ -151,7 +169,7 @@ jobs:
run: |
echo "Codesigning jdk files..."
find Cryptomator.app/Contents/runtime/Contents/Home/lib/ -name '*.dylib' -exec codesign --force -s ${CODESIGN_IDENTITY} {} \;
find Cryptomator.app/Contents/runtime/Contents/Home/lib/ -name 'jspawnhelper' -exec codesign --force -o runtime -s ${CODESIGN_IDENTITY} {} \;
find Cryptomator.app/Contents/runtime/Contents/Home/lib/ \( -name 'jspawnhelper' -o -name 'pauseengine' -o -name 'simengine' \) -exec codesign --force -o runtime -s ${CODESIGN_IDENTITY} {} \;
echo "Codesigning jar contents..."
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
@@ -170,14 +188,17 @@ jobs:
fi
done
echo "Codesigning Cryptomator.app..."
sed -i '' "s|###APP_IDENTIFIER_PREFIX###|${TEAM_IDENTIFIER}.|g" dist/mac/Cryptomator.entitlements
sed -i '' "s|###TEAM_IDENTIFIER###|${TEAM_IDENTIFIER}|g" dist/mac/Cryptomator.entitlements
codesign --force --deep --entitlements dist/mac/Cryptomator.entitlements -o runtime -s ${CODESIGN_IDENTITY} Cryptomator.app
env:
CODESIGN_IDENTITY: ${{ secrets.MACOS_CODESIGN_IDENTITY }}
TEAM_IDENTIFIER: ${{ secrets.MACOS_TEAM_IDENTIFIER }}
- name: Prepare .dmg contents
run: |
mkdir dmg
mv Cryptomator.app dmg
cp dist/mac/dmg/resources/macFUSE.webloc dmg
cp dist/mac/dmg/resources/${{ matrix.fuse-lib }}.webloc dmg
ls -l dmg
- name: Install create-dmg
run: |
@@ -188,31 +209,30 @@ jobs:
create-dmg
--volname Cryptomator
--volicon "dist/mac/dmg/resources/Cryptomator-Volume.icns"
--background "dist/mac/dmg/resources/Cryptomator-background.tiff"
--background "dist/mac/dmg/resources/Cryptomator-${{ matrix.fuse-lib }}-background.tiff"
--window-pos 400 100
--window-size 640 694
--icon-size 128
--icon "Cryptomator.app" 128 245
--hide-extension "Cryptomator.app"
--icon "macFUSE.webloc" 320 501
--hide-extension "macFUSE.webloc"
--icon "${{ matrix.fuse-lib }}.webloc" 320 501
--hide-extension "${{ matrix.fuse-lib }}.webloc"
--app-drop-link 512 245
--eula "dist/mac/dmg/resources/license.rtf"
--icon ".background" 128 758
--icon ".fseventsd" 320 758
--icon ".VolumeIcon.icns" 512 758
Cryptomator-${VERSION_NO}-${{ matrix.output-suffix }}.dmg dmg
env:
VERSION_NO: ${{ needs.get-version.outputs.semVerNum }}
- name: Notarize .dmg
if: startsWith(github.ref, 'refs/tags/')
if: startsWith(github.ref, 'refs/tags/') || inputs.notarize
uses: cocoalibs/xcode-notarization-action@v1
with:
app-path: 'Cryptomator-*.dmg'
apple-id: ${{ secrets.MACOS_NOTARIZATION_APPLE_ID }}
password: ${{ secrets.MACOS_NOTARIZATION_PW }}
team-id: ${{ secrets.MACOS_NOTARIZATION_TEAM_ID }}
xcode-path: ${{ matrix.xcode-path }}
xcode-path: '/Applications/Xcode_16.app'
- name: Add possible alpha/beta tags to installer name
run: mv Cryptomator-*.dmg Cryptomator-${{ needs.get-version.outputs.semVerStr }}-${{ matrix.output-suffix }}.dmg
- name: Create detached GPG signature with key 615D449FE6E6A235
@@ -227,14 +247,16 @@ jobs:
run: security delete-keychain $RUNNER_TEMP/codesign.keychain-db
continue-on-error: true
- name: Upload artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: dmg-${{ matrix.output-suffix }}
path: Cryptomator-*.dmg
path: |
Cryptomator-*.dmg
Cryptomator-*.asc
if-no-files-found: error
- name: Publish dmg on GitHub Releases
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v1
if: startsWith(github.ref, 'refs/tags/') && github.event.action == 'published'
uses: softprops/action-gh-release@v2
with:
fail_on_unmatched_files: true
token: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}

22
.github/workflows/no-response.yml vendored Normal file
View File

@@ -0,0 +1,22 @@
# Configuration for close-stale-issues - https://github.com/marketplace/actions/close-stale-issues
name: 'Close awaiting response issues'
on:
schedule:
- cron: '00 09 * * *'
jobs:
no-response:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- uses: actions/stale@v9
with:
days-before-stale: 14
days-before-close: 0
days-before-pr-close: -1
stale-issue-label: 'state:stale'
close-issue-message: "This issue has been automatically closed because there has been no response to our request for more information from the original author. With only the information that is currently in the issue, we don't have enough information to take action. Please reach out if you have or find the answers we need so that we can investigate further."
only-labels: 'state:awaiting-response'

View File

@@ -10,7 +10,7 @@ jobs:
steps:
- name: Download source tarball
run: |
curl -L -H "Accept: application/vnd.github+json" ${{ github.event.release.tarball_url }} --output cryptomator-${{ github.event.release.tag_name }}.tar.gz
curl -L -H "Accept: application/vnd.github+json" https://github.com/cryptomator/cryptomator/archive/refs/tags/${{ github.event.release.tag_name }}.tar.gz --output cryptomator-${{ github.event.release.tag_name }}.tar.gz
- name: Sign source tarball with key 615D449FE6E6A235
run: |
echo "${GPG_PRIVATE_KEY}" | gpg --batch --quiet --import
@@ -19,7 +19,7 @@ jobs:
GPG_PRIVATE_KEY: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }}
GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }}
- name: Publish asc on GitHub Releases
uses: softprops/action-gh-release@v1
uses: softprops/action-gh-release@v2
with:
fail_on_unmatched_files: true
token: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}

View File

@@ -4,7 +4,8 @@ on:
pull_request:
env:
JAVA_VERSION: 19
JAVA_DIST: 'temurin'
JAVA_VERSION: 23
defaults:
run:
@@ -16,11 +17,11 @@ jobs:
runs-on: ubuntu-latest
if: "!contains(github.event.head_commit.message, '[ci skip]') && !contains(github.event.head_commit.message, '[skip ci]')"
steps:
- uses: actions/checkout@v3
- uses: actions/setup-java@v3
- uses: actions/checkout@v4
- uses: actions/setup-java@v4
with:
distribution: 'zulu'
distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }}
cache: 'maven'
- name: Build and Test
run: xvfb-run mvn -B clean install jacoco:report -Pcoverage,dependency-check
run: xvfb-run mvn -B clean install jacoco:report -Pcoverage -Djavafx.platform=linux

View File

@@ -6,19 +6,26 @@ on:
- 'release/**'
- 'hotfix/**'
env:
JAVA_VERSION: 19
defaults:
run:
shell: bash
env:
JAVA_DIST: 'temurin'
JAVA_VERSION: 23
jobs:
release-check-precondition:
check-preconditions:
name: Validate commits pushed to release/hotfix branch to fulfill release requirements
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }}
cache: 'maven'
- id: validate-pom-version
name: Validate POM version
run: |
@@ -37,7 +44,27 @@ jobs:
fi
- name: Validate release in org.cryptomator.Cryptomator.metainfo.xml file
run: |
if ! grep -q "<release date=\".*\" version=\"${{ steps.validate-pom-version.outputs.semVerStr }}\"/>" dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml; then
if ! grep -q "<release date=\".*\" version=\"${{ steps.validate-pom-version.outputs.semVerStr }}\">" dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml; then
echo "Release not set in dist/linux/common/org.cryptomator.Cryptomator.metainfo.xml"
exit 1
fi
fi
- name: Cache NVD DB
uses: actions/cache@v4
with:
path: ~/.m2/repository/org/owasp/dependency-check-data/
key: dependency-check-${{ github.run_id }}
restore-keys: |
dependency-check
env:
SEGMENT_DOWNLOAD_TIMEOUT_MINS: 5
- name: Validate urls used in app
uses: urlstechie/urlchecker-action@0.0.34
with:
file_types: .md,.json
include_files: README.md,src/main/resources/hyperlinks.json
- name: Run org.owasp:dependency-check plugin
id: dependency-check
continue-on-error: true
run: mvn -B verify -Pdependency-check -DskipTests -Djavafx.platform=linux
env:
NVD_API_KEY: ${{ secrets.NVD_API_KEY }}

24
.github/workflows/stale.yml vendored Normal file
View File

@@ -0,0 +1,24 @@
# Configuration for close-stale-issues - https://github.com/marketplace/actions/close-stale-issues
name: 'Close stale issues'
on:
schedule:
- cron: '00 09 * * *'
jobs:
stale:
runs-on: ubuntu-latest
permissions:
issues: write
pull-requests: write
steps:
- uses: actions/stale@v9
with:
days-before-stale: 365
days-before-close: 90
exempt-issue-labels: 'type:security-issue,type:feature-request,type:enhancement,type:upstream-bug,state:awaiting-response,state:blocked,state:confirmed'
exempt-all-milestones: true
stale-issue-label: 'state:stale'
stale-pr-label: 'state:stale'
stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.'
stale-pr-message: 'This PR has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.'

View File

@@ -8,11 +8,19 @@ on:
version:
description: 'Version'
required: false
isDebug:
description: 'Build debug version with console output'
type: boolean
default: false
env:
JAVA_VERSION: 19
JAVA_DIST: 'zulu'
JAVA_CACHE: 'maven'
JAVA_VERSION: '23.0.1+11'
OPENJFX_JMODS_AMD64: 'https://download2.gluonhq.com/openjfx/23.0.1/openjfx-23.0.1_windows-x64_bin-jmods.zip'
OPENJFX_JMODS_AMD64_HASH: 'ee176dcee3bd78bde7910735bd67f67c792882f5b89626796ae06f7a1c0119d3'
WINFSP_MSI: 'https://github.com/winfsp/winfsp/releases/download/v2.0/winfsp-2.0.23075.msi'
WINFSP_UNINSTALLER: 'https://github.com/cryptomator/winfsp-uninstaller/releases/latest/download/winfsp-uninstaller.exe'
defaults:
run:
@@ -30,44 +38,66 @@ jobs:
needs: [get-version]
env:
LOOPBACK_ALIAS: 'cryptomator-vault'
WIN_CONSOLE_FLAG: ''
steps:
- uses: actions/checkout@v3
- name: Upgrade WIX to latest version
run: choco install wixtoolset --version 3.14.1
shell: pwsh
- uses: actions/checkout@v4
- name: Setup Java
uses: actions/setup-java@v3
uses: actions/setup-java@v4
with:
distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }}
java-package: 'jdk+fx'
cache: ${{ env.JAVA_CACHE }}
- name: Ensure major jfx version in pom equals in jdk
shell: pwsh
check-latest: true
cache: 'maven'
- name: Download and extract JavaFX jmods from Gluon
#In the last step we move all jmods files a dir level up because jmods are placed inside a directory in the zip
run: |
$jfxPomVersion = (&mvn help:evaluate "-Dexpression=javafx.version" -q -DforceStdout) -split "\."
$jfxJdkVersion = ((Get-Content -path "${env:JAVA_HOME}/lib/javafx.properties" | Where-Object {$_ -like 'javafx.version=*' }) -replace '.*=','') -split "\."
if ($jfxPomVersion[0] -ne $jfxJdkVersion[0]) {
Write-Error "Major part of JavaFX version in pom($($jfxPomVersion[0])) does not match the version in JDK($($jfxJdkVersion[0])) "
exit 1
curl --output jfxjmods.zip -L "${{ env.OPENJFX_JMODS_AMD64 }}"
if(!(Get-FileHash -Path jfxjmods.zip -Algorithm SHA256).Hash.ToLower().equals("${{ env.OPENJFX_JMODS_AMD64_HASH }}")) {
throw "Wrong checksum of JMOD archive downloaded from ${{ env.OPENJFX_JMODS_AMD64 }}.";
}
Expand-Archive -Path jfxjmods.zip -DestinationPath jfxjmods
Get-ChildItem -Path jfxjmods -Recurse -Filter "*.jmod" | ForEach-Object { Move-Item -Path $_ -Destination $_.Directory.Parent}
shell: pwsh
- name: Ensure major jfx version in pom and in jmods is the same
run: |
JMOD_VERSION_AMD64=$(jmod describe jfxjmods/javafx.base.jmod | head -1)
JMOD_VERSION_AMD64=${JMOD_VERSION_AMD64#*@}
JMOD_VERSION_AMD64=${JMOD_VERSION_AMD64%%.*}
POM_JFX_VERSION=$(mvn help:evaluate "-Dexpression=javafx.version" -q -DforceStdout)
POM_JFX_VERSION=${POM_JFX_VERSION#*@}
POM_JFX_VERSION=${POM_JFX_VERSION%%.*}
if [ $POM_JFX_VERSION -ne $JMOD_VERSION_AMD64 ]; then
>&2 echo "Major JavaFX version in pom.xml (${POM_JFX_VERSION}) != amd64 jmod version (${JMOD_VERSION_AMD64})"
exit 1
fi
- name: Set version
run : mvn versions:set -DnewVersion=${{ needs.get-version.outputs.semVerStr }}
- name: Run maven
run: mvn -B clean package -Pdependency-check,win -DskipTests
run: mvn -B clean package -Pwin -DskipTests -Djavafx.platform=win
- name: Patch target dir
run: |
cp LICENSE.txt target
cp target/cryptomator-*.jar target/mods
- name: Run jlink
#Remark: no compression is applied for improved build compression later (here msi)
run: >
${JAVA_HOME}/bin/jlink
--verbose
--output runtime
--module-path "${JAVA_HOME}/jmods"
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.crypto.ec,jdk.accessibility,jdk.management.jfr
--module-path "jfxjmods;${JAVA_HOME}/jmods"
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.crypto.mscapi,jdk.unsupported,jdk.accessibility,jdk.management.jfr,java.compiler
--strip-native-commands
--no-header-files
--no-man-pages
--strip-debug
--compress=1
--compress zip-0
- name: Change win-console flag if debug is active
if: ${{ inputs.isDebug }}
run: echo "WIN_CONSOLE_FLAG=--win-console" >> $GITHUB_ENV
- name: Run jpackage
run: >
${JAVA_HOME}/bin/jpackage
@@ -80,27 +110,30 @@ jobs:
--dest appdir
--name Cryptomator
--vendor "Skymatic GmbH"
--copyright "(C) 2016 - 2023 Skymatic GmbH"
--copyright "(C) 2016 - 2025 Skymatic GmbH"
--app-version "${{ needs.get-version.outputs.semVerNum }}.${{ needs.get-version.outputs.revNum }}"
--java-options "--enable-preview"
--java-options "--enable-native-access=org.cryptomator.jfuse.win"
--java-options "--enable-native-access=org.cryptomator.jfuse.win,org.cryptomator.integrations.win"
--java-options "-Xss5m"
--java-options "-Xmx256m"
--java-options "-Dcryptomator.appVersion=\"${{ needs.get-version.outputs.semVerStr }}\""
--java-options "-Dfile.encoding=\"utf-8\""
--java-options "-Dcryptomator.logDir=\"~/AppData/Roaming/Cryptomator\""
--java-options "-Dcryptomator.pluginDir=\"~/AppData/Roaming/Cryptomator/Plugins\""
--java-options "-Dcryptomator.settingsPath=\"~/AppData/Roaming/Cryptomator/settings.json\""
--java-options "-Dcryptomator.p12Path=\"~/AppData/Roaming/Cryptomator/key.p12\""
--java-options "-Dcryptomator.ipcSocketPath=\"~/AppData/Roaming/Cryptomator/ipc.socket\""
--java-options "-Dcryptomator.mountPointsDir=\"~/Cryptomator\""
--java-options "-Djava.net.useSystemProxies=true"
--java-options "-Dcryptomator.logDir=\"@{localappdata}/Cryptomator\""
--java-options "-Dcryptomator.pluginDir=\"@{appdata}/Cryptomator/Plugins\""
--java-options "-Dcryptomator.settingsPath=\"@{appdata}/Cryptomator/settings.json;@{userhome}/AppData/Roaming/Cryptomator/settings.json\""
--java-options "-Dcryptomator.p12Path=\"@{appdata}/Cryptomator/key.p12;@{userhome}/AppData/Roaming/Cryptomator/key.p12\""
--java-options "-Dcryptomator.ipcSocketPath=\"@{localappdata}/Cryptomator/ipc.socket\""
--java-options "-Dcryptomator.mountPointsDir=\"@{userhome}/Cryptomator\""
--java-options "-Dcryptomator.loopbackAlias=\"${{ env.LOOPBACK_ALIAS }}\""
--java-options "-Dcryptomator.showTrayIcon=true"
--java-options "-Dcryptomator.buildNumber=\"msi-${{ needs.get-version.outputs.revNum }}\""
--java-options "-Dcryptomator.integrationsWin.autoStartShellLinkName=\"Cryptomator\""
--java-options "-Dcryptomator.integrationsWin.keychainPaths=\"~/AppData/Roaming/Cryptomator/keychain.json\""
--java-options "-Dcryptomator.integrationsWin.keychainPaths=\"@{appdata}/Cryptomator/keychain.json;@{userhome}/AppData/Roaming/Cryptomator/keychain.json\""
--java-options "-Djavafx.verbose=${{ inputs.isDebug }}"
--resource-dir dist/win/resources
--icon dist/win/resources/Cryptomator.ico
${WIN_CONSOLE_FLAG}
- name: Patch Application Directory
run: |
cp dist/win/contrib/* appdir/Cryptomator
@@ -117,26 +150,56 @@ jobs:
- name: Fix permissions
run: attrib -r appdir/Cryptomator/Cryptomator.exe
shell: pwsh
- name: Extract integrations DLL for code signing
- name: Extract jars with DLLs for Codesigning
shell: pwsh
run: gci ./appdir/Cryptomator/app/mods/ -File integrations-win-*.jar | ForEach-Object {Set-Location -Path $_.Directory; jar --file=$($_.FullName) --extract integrations.dll }
run: |
Add-Type -AssemblyName "System.io.compression.filesystem"
$jarFolder = Resolve-Path ".\appdir\Cryptomator\app\mods"
$jarExtractDir = New-Item -Path ".\appdir\jar-extract" -ItemType Directory
#for all jars inspect
Get-ChildItem -Path $jarFolder -Filter "*.jar" | ForEach-Object {
$jar = [Io.compression.zipfile]::OpenRead($_.FullName)
if (@($jar.Entries | Where-Object {$_.Name.ToString().EndsWith(".dll")} | Select-Object -First 1).Count -gt 0) {
#jars containing dlls extract
Set-Location $jarExtractDir
Expand-Archive -Path $_.FullName
}
$jar.Dispose()
}
- name: Extract wixhelper.dll for Codesigning #see https://github.com/cryptomator/cryptomator/issues/3130
shell: pwsh
run: |
New-Item -Path appdir/jpackage-jmod -ItemType Directory
& $env:JAVA_HOME\bin\jmod.exe extract --dir jpackage-jmod "${env:JAVA_HOME}\jmods\jdk.jpackage.jmod"
Get-ChildItem -Recurse -Path "jpackage-jmod" -File wixhelper.dll | Select-Object -Last 1 | Copy-Item -Destination "appdir"
- name: Codesign
uses: skymatic/code-sign-action@v2
uses: skymatic/code-sign-action@v3
with:
certificate: ${{ secrets.WIN_CODESIGN_P12_BASE64 }}
password: ${{ secrets.WIN_CODESIGN_P12_PW }}
certificatesha1: 5FC94CE149E5B511E621F53A060AC67CBD446B3A
description: Cryptomator
timestampUrl: 'http://timestamp.digicert.com'
folder: appdir/Cryptomator
folder: appdir
recursive: true
- name: Repack signed DLL into jar
- name: Replace DLLs inside jars with signed ones
shell: pwsh
run: |
gci ./appdir/Cryptomator/app/mods/ -File integrations-win-*.jar | ForEach-Object {Set-Location -Path $_.Directory; jar --file=$($_.FullName) --update integrations.dll; Remove-Item integrations.dll}
$jarExtractDir = Resolve-Path ".\appdir\jar-extract"
$jarFolder = Resolve-Path ".\appdir\Cryptomator\app\mods"
Get-ChildItem -Path $jarExtractDir | ForEach-Object {
$jarName = $_.Name
$jarFile = "${jarFolder}\${jarName}.jar"
Set-Location $_
Get-ChildItem -Path $_ -Recurse -File "*.dll" | ForEach-Object {
# update jar with signed dll
jar --file="$jarFile" --update $(Resolve-Path -Relative -Path $_)
}
}
- name: Generate license for MSI
run: >
mvn -B license:add-third-party
mvn -B license:add-third-party "-Djavafx.platform=win"
"-Dlicense.thirdPartyFilename=license.rtf"
"-Dlicense.outputDirectory=dist/win/resources"
"-Dlicense.fileTemplate=dist/win/resources/licenseTemplate.ftl"
@@ -155,20 +218,21 @@ jobs:
--dest installer
--name Cryptomator
--vendor "Skymatic GmbH"
--copyright "(C) 2016 - 2023 Skymatic GmbH"
--app-version "${{ needs.get-version.outputs.semVerNum }}"
--copyright "(C) 2016 - 2025 Skymatic GmbH"
--app-version "${{ needs.get-version.outputs.semVerNum }}.${{ needs.get-version.outputs.revNum}}"
--win-menu
--win-dir-chooser
--win-shortcut-prompt
--win-update-url "https:\\cryptomator.org"
--win-update-url "https:\\cryptomator.org\downloads"
--win-menu-group Cryptomator
--resource-dir dist/win/resources
--license-file dist/win/resources/license.rtf
--file-associations dist/win/resources/FAvaultFile.properties
env:
JP_WIXWIZARD_RESOURCES: ${{ github.workspace }}/dist/win/resources # requires abs path, used in resources/main.wxs
JP_WIXHELPER_DIR: ${{ github.workspace }}\appdir
- name: Codesign MSI
uses: skymatic/code-sign-action@v2
uses: skymatic/code-sign-action@v3
with:
certificate: ${{ secrets.WIN_CODESIGN_P12_BASE64 }}
password: ${{ secrets.WIN_CODESIGN_P12_PW }}
@@ -186,53 +250,36 @@ jobs:
GPG_PRIVATE_KEY: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }}
GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }}
- name: Upload artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: msi
path: |
Cryptomator-*.msi
Cryptomator-*.asc
if-no-files-found: error
- name: Publish .msi on GitHub Releases
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v1
with:
fail_on_unmatched_files: true
token: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}
files: |
*.msi
*.asc
call-winget-flow:
needs: [get-version, build-msi]
if: github.event.action == 'published' && needs.get-version.outputs.versionType == 'stable'
uses: ./.github/workflows/winget.yml
with:
releaseTag: ${{ github.event.release.tag_name }}
secrets: inherit
build-exe:
name: Build .exe installer
runs-on: windows-latest
needs: [get-version, build-msi]
steps:
- uses: actions/checkout@v3
- uses: actions/checkout@v4
- name: Download .msi
uses: actions/download-artifact@v3
uses: actions/download-artifact@v4
with:
name: msi
path: dist/win/bundle/resources
- name: Strip version info from msi file name
run: mv dist/win/bundle/resources/Cryptomator*.msi dist/win/bundle/resources/Cryptomator.msi
- uses: actions/setup-java@v3
- uses: actions/setup-java@v4
with:
distribution: ${{ env.JAVA_DIST }}
java-version: ${{ env.JAVA_VERSION }}
cache: ${{ env.JAVA_CACHE }}
check-latest: true
cache: 'maven'
- name: Generate license for exe
run: >
mvn -B license:add-third-party
mvn -B license:add-third-party "-Djavafx.platform=win"
"-Dlicense.thirdPartyFilename=license.rtf"
"-Dlicense.fileTemplate=dist/win/bundle/resources/licenseTemplate.ftl"
"-Dlicense.outputDirectory=dist/win/bundle/resources"
@@ -243,17 +290,21 @@ jobs:
shell: pwsh
- name: Download WinFsp
run: |
$winfspUrl= (Select-String -Path ".\dist\win\bundle\resources\winfsp-download.url" -Pattern 'https:.*').Matches.Value
curl --output dist/win/bundle/resources/winfsp.msi -L $winfspUrl
curl --output dist/win/bundle/resources/winfsp.msi -L ${{ env.WINFSP_MSI }}
shell: pwsh
- name: Download Legacy-WinFsp uninstaller
run: |
curl --output dist/win/bundle/resources/winfsp-uninstaller.exe -L ${{ env.WINFSP_UNINSTALLER }}
shell: pwsh
- name: Compile to wixObj file
run: >
"${WIX}/bin/candle.exe" dist/win/bundle/bundleWithWinfsp.wxs
-ext WixBalExtension
-ext WixUtilExtension
-out dist/win/bundle/
-dBundleVersion="${{ needs.get-version.outputs.semVerNum }}.${{ needs.get-version.outputs.revNum }}"
-dBundleVendor="Skymatic GmbH"
-dBundleCopyright="(C) 2016 - 2023 Skymatic GmbH"
-dBundleCopyright="(C) 2016 - 2025 Skymatic GmbH"
-dAboutUrl="https://cryptomator.org"
-dHelpUrl="https://cryptomator.org/contact"
-dUpdateUrl="https://cryptomator.org/downloads/"
@@ -261,6 +312,7 @@ jobs:
run: >
"${WIX}/bin/light.exe" -b dist/win/ dist/win/bundle/bundleWithWinfsp.wixobj
-ext WixBalExtension
-ext WixUtilExtension
-out installer/unsigned/Cryptomator-Installer.exe
- name: Detach burn engine in preparation to sign
run: >
@@ -268,7 +320,7 @@ jobs:
-ib installer/unsigned/Cryptomator-Installer.exe
-o tmp/engine.exe
- name: Codesign burn engine
uses: skymatic/code-sign-action@v2
uses: skymatic/code-sign-action@v3
with:
certificate: ${{ secrets.WIN_CODESIGN_P12_BASE64 }}
password: ${{ secrets.WIN_CODESIGN_P12_PW }}
@@ -282,7 +334,7 @@ jobs:
-ab tmp/engine.exe installer/unsigned/Cryptomator-Installer.exe
-o installer/Cryptomator-Installer.exe
- name: Codesign EXE
uses: skymatic/code-sign-action@v2
uses: skymatic/code-sign-action@v3
with:
certificate: ${{ secrets.WIN_CODESIGN_P12_BASE64 }}
password: ${{ secrets.WIN_CODESIGN_P12_PW }}
@@ -300,59 +352,68 @@ jobs:
GPG_PRIVATE_KEY: ${{ secrets.RELEASES_GPG_PRIVATE_KEY }}
GPG_PASSPHRASE: ${{ secrets.RELEASES_GPG_PASSPHRASE }}
- name: Upload artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: exe
path: |
Cryptomator-*.exe
Cryptomator-*.asc
if-no-files-found: error
publish:
name: Publish installers to the github release
if: startsWith(github.ref, 'refs/tags/') && github.event.action == 'published'
runs-on: ubuntu-latest
needs: [build-msi, build-exe]
outputs:
download-url-msi: ${{ fromJSON(steps.publish.outputs.assets)[0].browser_download_url }}
download-url-exe: ${{ fromJSON(steps.publish.outputs.assets)[1].browser_download_url }}
steps:
- name: Download installers
uses: actions/download-artifact@v4
with:
merge-multiple: true
- name: Publish .msi on GitHub Releases
if: startsWith(github.ref, 'refs/tags/')
uses: softprops/action-gh-release@v1
id: publish
uses: softprops/action-gh-release@v2
with:
fail_on_unmatched_files: true
token: ${{ secrets.CRYPTOBOT_RELEASE_TOKEN }}
# do not change ordering of filelist, required for correct job output
files: |
Cryptomator-*.exe
Cryptomator-*.asc
*.msi
*.exe
*.asc
allowlist:
name: Anti Virus Allowlisting
if: startsWith(github.ref, 'refs/tags/')
allowlist-msi:
uses: ./.github/workflows/av-whitelist.yml
needs: [publish]
with:
url: ${{ needs.publish.outputs.download-url-msi }}
secrets: inherit
allowlist-exe:
uses: ./.github/workflows/av-whitelist.yml
needs: [publish]
with:
url: ${{ needs.publish.outputs.download-url-exe }}
secrets: inherit
notify-winget:
name: Notify for winget-release
if: needs.get-version.outputs.versionType == 'stable'
needs: [publish, get-version]
runs-on: ubuntu-latest
needs: [build-msi, build-exe]
steps:
- name: Download .msi
uses: actions/download-artifact@v3
with:
name: msi
path: msi
- name: Download .exe
uses: actions/download-artifact@v3
with:
name: exe
path: exe
- name: Collect files
run: |
mkdir files
cp msi/*.msi files
cp exe/*.exe files
- name: Upload to Kaspersky
uses: SamKirkland/FTP-Deploy-Action@4.3.3
with:
protocol: ftps
server: allowlist.kaspersky-labs.com
port: 990
username: ${{ secrets.ALLOWLIST_KASPERSKY_USERNAME }}
password: ${{ secrets.ALLOWLIST_KASPERSKY_PASSWORD }}
local-dir: files/
- name: Upload to Avast
uses: SamKirkland/FTP-Deploy-Action@4.3.0
with:
protocol: ftp
server: whitelisting.avast.com
port: 21
username: ${{ secrets.ALLOWLIST_AVAST_USERNAME }}
password: ${{ secrets.ALLOWLIST_AVAST_PASSWORD }}
local-dir: files/
- name: Slack Notification
uses: rtCamp/action-slack-notify@v2
env:
SLACK_WEBHOOK: ${{ secrets.SLACK_WEBHOOK_URL }}
SLACK_USERNAME: 'Cryptobot'
SLACK_ICON: false
SLACK_ICON_EMOJI: ':bot:'
SLACK_CHANNEL: 'cryptomator-desktop'
SLACK_TITLE: "MSI of ${{ github.event.repository.name }} ${{ github.event.release.tag_name }} published."
SLACK_MESSAGE: "Ready to <https://github.com/${{ github.repository }}/actions/workflows/winget.yml| release to winget>."
SLACK_FOOTER: false
MSG_MINIMAL: true

View File

@@ -1,49 +1,27 @@
name: Release to Winget
name: Publish MSI to winget-pkgs
on:
workflow_call:
inputs:
releaseTag:
required: true
type: string
workflow_dispatch:
inputs:
releaseTag:
description: 'Release tag name'
tag:
description: 'Release tag'
required: true
type: string
jobs:
publish-winget:
name: Publish on winget repo
winget:
name: Publish winget package
runs-on: windows-latest
steps:
- name: Get download url for release assets
id: get-release-assets
uses: actions/github-script@v6
with:
script: |
const query =`query($tag:String!) {
repository(owner:"cryptomator", name:"cryptomator"){
release(tagName: $tag) {
releaseAssets(first:20) {
nodes {
name
downloadUrl
}
}
}
}
}`;
const variables = {
tag: "${{ inputs.releaseTag }}"
}
return await github.graphql(query, variables)
- name: Submit package to Windows Package Manager Community Repository
id: submit-winget
- name: Sync winget-pkgs fork
run: |
iwr https://aka.ms/wingetcreate/latest -OutFile wingetcreate.exe
$releaseAssets = (ConvertFrom-Json '${{ steps.get-release-assets.outputs.result }}').repository.release.releaseAssets.nodes
$installerUrl = $releaseAssets | Where-Object -Property name -match '^Cryptomator-.*\.msi$' | Select -ExpandProperty downloadUrl -First 1
.\wingetcreate.exe update Cryptomator.Cryptomator -s -v "${{ inputs.releaseTag }}" -u "$installerUrl" -t ${{ secrets.CRYPTOBOT_WINGET_TOKEN }}
shell: pwsh
gh repo sync cryptomator/winget-pkgs -b master --force
env:
GH_TOKEN: ${{ secrets.CRYPTOBOT_WINGET_TOKEN }}
- name: Submit package
uses: vedantmgoyal2009/winget-releaser@main
with:
identifier: Cryptomator.Cryptomator
version: ${{ inputs.tag }}
release-tag: ${{ inputs.tag }}
installers-regex: '\.msi$'
token: ${{ secrets.CRYPTOBOT_WINGET_TOKEN }}

View File

@@ -53,9 +53,10 @@
<option name="KEEP_LINE_BREAKS" value="false" />
<option name="BLANK_LINES_AFTER_CLASS_HEADER" value="1" />
<option name="BINARY_OPERATION_SIGN_ON_NEXT_LINE" value="true" />
<option name="KEEP_SIMPLE_BLOCKS_IN_ONE_LINE" value="true" />
<option name="KEEP_SIMPLE_METHODS_IN_ONE_LINE" value="true" />
<option name="KEEP_SIMPLE_LAMBDAS_IN_ONE_LINE" value="true" />
<option name="KEEP_SIMPLE_CLASSES_IN_ONE_LINE" value="true" />
<option name="IF_BRACE_FORCE" value="3" />
<option name="ENUM_CONSTANTS_WRAP" value="2" />
<indentOptions>
<option name="USE_TAB_CHARACTER" value="true" />

62
.idea/compiler.xml generated
View File

@@ -14,30 +14,56 @@
<option name="dagger.fastInit" value="enabled" />
<option name="dagger.formatGeneratedSource" value="enabled" />
<processorPath useClasspath="false">
<entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger-compiler/2.44/dagger-compiler-2.44.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger/2.44/dagger-2.44.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger-compiler/2.55/dagger-compiler-2.55.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger/2.55/dagger-2.55.jar" />
<entry name="$MAVEN_REPOSITORY$/jakarta/inject/jakarta.inject-api/2.0.1/jakarta.inject-api-2.0.1.jar" />
<entry name="$MAVEN_REPOSITORY$/javax/inject/javax.inject/1/javax.inject-1.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger-producers/2.44/dagger-producers-2.44.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/guava/failureaccess/1.0.1/failureaccess-1.0.1.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/guava/guava/31.0.1-jre/guava-31.0.1-jre.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jspecify/jspecify/1.0.0/jspecify-1.0.0.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger-spi/2.55/dagger-spi-2.55.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar" />
<entry name="$MAVEN_REPOSITORY$/org/checkerframework/checker-qual/3.12.0/checker-qual-3.12.0.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/errorprone/error_prone_annotations/2.7.1/error_prone_annotations-2.7.1.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/j2objc/j2objc-annotations/1.3/j2objc-annotations-1.3.jar" />
<entry name="$MAVEN_REPOSITORY$/org/checkerframework/checker-compat-qual/2.5.5/checker-compat-qual-2.5.5.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger-spi/2.44/dagger-spi-2.44.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/devtools/ksp/symbol-processing-api/1.7.0-1.0.6/symbol-processing-api-1.7.0-1.0.6.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/1.7.0/kotlin-stdlib-1.7.0.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-common/1.7.0/kotlin-stdlib-common-1.7.0.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/devtools/ksp/symbol-processing-api/2.0.21-1.0.28/symbol-processing-api-2.0.21-1.0.28.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/2.0.21/kotlin-stdlib-2.0.21.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/guava/failureaccess/1.0.2/failureaccess-1.0.2.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/guava/guava/33.0.0-jre/guava-33.0.0-jre.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" />
<entry name="$MAVEN_REPOSITORY$/org/checkerframework/checker-qual/3.41.0/checker-qual-3.41.0.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/errorprone/error_prone_annotations/2.23.0/error_prone_annotations-2.23.0.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/j2objc/j2objc-annotations/2.8/j2objc-annotations-2.8.jar" />
<entry name="$MAVEN_REPOSITORY$/com/squareup/javapoet/1.13.0/javapoet-1.13.0.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.7.0/kotlin-stdlib-jdk8-1.7.0.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.7.0/kotlin-stdlib-jdk7-1.7.0.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/googlejavaformat/google-java-format/1.5/google-java-format-1.5.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/errorprone/javac-shaded/9-dev-r4023-3/javac-shaded-9-dev-r4023-3.jar" />
<entry name="$MAVEN_REPOSITORY$/com/squareup/kotlinpoet/1.11.0/kotlinpoet-1.11.0.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.6.10/kotlin-stdlib-jdk8-1.6.10.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.6.10/kotlin-stdlib-jdk7-1.6.10.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.jar" />
<entry name="$MAVEN_REPOSITORY$/net/ltgt/gradle/incap/incap/0.2/incap-0.2.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlinx/kotlinx-metadata-jvm/0.5.0/kotlinx-metadata-jvm-0.5.0.jar" />
<entry name="$MAVEN_REPOSITORY$/org/checkerframework/checker-compat-qual/2.5.5/checker-compat-qual-2.5.5.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger-compiler/2.55/dagger-compiler-2.55.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger/2.55/dagger-2.55.jar" />
<entry name="$MAVEN_REPOSITORY$/jakarta/inject/jakarta.inject-api/2.0.1/jakarta.inject-api-2.0.1.jar" />
<entry name="$MAVEN_REPOSITORY$/javax/inject/javax.inject/1/javax.inject-1.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jspecify/jspecify/1.0.0/jspecify-1.0.0.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/dagger/dagger-spi/2.55/dagger-spi-2.55.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/code/findbugs/jsr305/3.0.2/jsr305-3.0.2.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/devtools/ksp/symbol-processing-api/2.0.21-1.0.28/symbol-processing-api-2.0.21-1.0.28.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib/2.0.21/kotlin-stdlib-2.0.21.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/annotations/13.0/annotations-13.0.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/guava/failureaccess/1.0.2/failureaccess-1.0.2.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/guava/guava/33.0.0-jre/guava-33.0.0-jre.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/guava/listenablefuture/9999.0-empty-to-avoid-conflict-with-guava/listenablefuture-9999.0-empty-to-avoid-conflict-with-guava.jar" />
<entry name="$MAVEN_REPOSITORY$/org/checkerframework/checker-qual/3.41.0/checker-qual-3.41.0.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/errorprone/error_prone_annotations/2.23.0/error_prone_annotations-2.23.0.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/j2objc/j2objc-annotations/2.8/j2objc-annotations-2.8.jar" />
<entry name="$MAVEN_REPOSITORY$/com/squareup/javapoet/1.13.0/javapoet-1.13.0.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/googlejavaformat/google-java-format/1.5/google-java-format-1.5.jar" />
<entry name="$MAVEN_REPOSITORY$/com/google/errorprone/javac-shaded/9-dev-r4023-3/javac-shaded-9-dev-r4023-3.jar" />
<entry name="$MAVEN_REPOSITORY$/com/squareup/kotlinpoet/1.11.0/kotlinpoet-1.11.0.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.6.10/kotlin-stdlib-jdk8-1.6.10.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.6.10/kotlin-stdlib-jdk7-1.6.10.jar" />
<entry name="$MAVEN_REPOSITORY$/org/jetbrains/kotlin/kotlin-reflect/1.6.10/kotlin-reflect-1.6.10.jar" />
<entry name="$MAVEN_REPOSITORY$/net/ltgt/gradle/incap/incap/0.2/incap-0.2.jar" />
<entry name="$MAVEN_REPOSITORY$/org/checkerframework/checker-compat-qual/2.5.5/checker-compat-qual-2.5.5.jar" />
</processorPath>
<module name="cryptomator" />
</profile>
@@ -45,7 +71,7 @@
</component>
<component name="JavacSettings">
<option name="ADDITIONAL_OPTIONS_OVERRIDE">
<module name="cryptomator" options="-Adagger.fastInit=enabled -Adagger.formatGeneratedSource=enabled --enable-preview" />
<module name="cryptomator" options="-Adagger.fastInit=enabled -Adagger.formatGeneratedSource=enabled" />
</option>
</component>
</project>

2
.idea/misc.xml generated
View File

@@ -8,7 +8,7 @@
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_19" default="true" project-jdk-name="19" project-jdk-type="JavaSDK">
<component name="ProjectRootManager" version="2" languageLevel="JDK_23" project-jdk-name="23" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/out" />
</component>
</project>

View File

@@ -2,7 +2,7 @@
<configuration default="false" name="Cryptomator Linux" type="Application" factoryName="Application">
<option name="MAIN_CLASS_NAME" value="org.cryptomator.launcher.Cryptomator" />
<module name="cryptomator" />
<option name="VM_PARAMETERS" value="-Dcryptomator.settingsPath=&quot;~/.config/Cryptomator/settings.json&quot; -Dcryptomator.p12Path=&quot;~/.config/Cryptomator/key.p12&quot; -Dcryptomator.ipcSocketPath=&quot;~/.config/Cryptomator/ipc.socket&quot; -Dcryptomator.logDir=&quot;~/.local/share/Cryptomator/logs&quot; -Dcryptomator.pluginDir=&quot;~/.local/share/Cryptomator/plugins&quot; -Dcryptomator.mountPointsDir=&quot;~/.local/share/Cryptomator/mnt&quot; -Dcryptomator.showTrayIcon=true -Xss20m -Xmx512m --enable-preview --enable-native-access=org.cryptomator.jfuse.linux.amd64,org.cryptomator.jfuse.linux.aarch64" />
<option name="VM_PARAMETERS" value="-Dcryptomator.settingsPath=&quot;@{userhome}/.config/Cryptomator/settings.json&quot; -Dcryptomator.p12Path=&quot;@{userhome}/.config/Cryptomator/key.p12&quot; -Dcryptomator.ipcSocketPath=&quot;@{userhome}/.config/Cryptomator/ipc.socket&quot; -Dcryptomator.logDir=&quot;@{userhome}/.local/share/Cryptomator/logs&quot; -Dcryptomator.pluginDir=&quot;@{userhome}/.local/share/Cryptomator/plugins&quot; -Dcryptomator.mountPointsDir=&quot;@{userhome}/.local/share/Cryptomator/mnt&quot; -Dcryptomator.showTrayIcon=true -Xss20m -Xmx512m --enable-preview --enable-native-access=org.cryptomator.jfuse.linux.amd64,org.cryptomator.jfuse.linux.aarch64,org.purejava.appindicator" />
<method v="2">
<option name="Make" enabled="true" />
</method>

View File

@@ -2,7 +2,7 @@
<configuration default="false" name="Cryptomator Linux Dev" type="Application" factoryName="Application">
<option name="MAIN_CLASS_NAME" value="org.cryptomator.launcher.Cryptomator" />
<module name="cryptomator" />
<option name="VM_PARAMETERS" value="-Dcryptomator.settingsPath=&quot;~/.config/Cryptomator-Dev/settings.json&quot; -Dcryptomator.p12Path=&quot;~/.config/Cryptomator-Dev/key.p12&quot; -Dcryptomator.ipcSocketPath=&quot;~/.config/Cryptomator-Dev/ipc.socket&quot; -Dcryptomator.logDir=&quot;~/.local/share/Cryptomator-Dev/logs&quot; -Dcryptomator.pluginDir=&quot;~/.local/share/Cryptomator-Dev/plugins&quot; -Dcryptomator.mountPointsDir=&quot;~/.local/share/Cryptomator-Dev/mnt&quot; -Dcryptomator.showTrayIcon=true -Dfuse.experimental=&quot;true&quot; -Xss20m -Xmx512m --enable-preview --enable-native-access=org.cryptomator.jfuse.linux.amd64,org.cryptomator.jfuse.linux.aarch64" />
<option name="VM_PARAMETERS" value="-Dcryptomator.settingsPath=&quot;@{userhome}/.config/Cryptomator-Dev/settings.json&quot; -Dcryptomator.p12Path=&quot;@{userhome}/.config/Cryptomator-Dev/key.p12&quot; -Dcryptomator.ipcSocketPath=&quot;@{userhome}/.config/Cryptomator-Dev/ipc.socket&quot; -Dcryptomator.logDir=&quot;@{userhome}/.local/share/Cryptomator-Dev/logs&quot; -Dcryptomator.pluginDir=&quot;@{userhome}/.local/share/Cryptomator-Dev/plugins&quot; -Dcryptomator.mountPointsDir=&quot;@{userhome}/.local/share/Cryptomator-Dev/mnt&quot; -Dcryptomator.showTrayIcon=true -Dfuse.experimental=&quot;true&quot; -Xss20m -Xmx512m --enable-preview --enable-native-access=org.cryptomator.jfuse.linux.amd64,org.cryptomator.jfuse.linux.aarch64,org.purejava.appindicator" />
<method v="2">
<option name="Make" enabled="true" />
</method>

View File

@@ -2,7 +2,7 @@
<configuration default="false" name="Cryptomator Windows" type="Application" factoryName="Application">
<option name="MAIN_CLASS_NAME" value="org.cryptomator.launcher.Cryptomator" />
<module name="cryptomator" />
<option name="VM_PARAMETERS" value="-Dcryptomator.settingsPath=&quot;~/AppData/Roaming/Cryptomator/settings.json&quot; -Dcryptomator.ipcSocketPath=&quot;~/AppData/Roaming/Cryptomator/ipc.socket&quot; -Dcryptomator.logDir=&quot;~/AppData/Roaming/Cryptomator&quot; -Dcryptomator.pluginDir=&quot;~/AppData/Roaming/Cryptomator/Plugins&quot; -Dcryptomator.integrationsWin.keychainPaths=&quot;~/AppData/Roaming/Cryptomator/keychain.json&quot; -Dcryptomator.p12Path=&quot;~/AppData/Roaming/Cryptomator/key.p12&quot; -Dcryptomator.mountPointsDir=&quot;~/Cryptomator&quot; -Dcryptomator.showTrayIcon=true -Xss2m -Xmx512m --enable-preview --enable-native-access=org.cryptomator.jfuse.win" />
<option name="VM_PARAMETERS" value="-Dcryptomator.settingsPath=&quot;@{appdata}/Cryptomator/settings.json;@{userhome}/AppData/Roaming/Cryptomator/settings.json&quot; -Dcryptomator.ipcSocketPath=&quot;@{localappdata}/Cryptomator/ipc.socket&quot; -Dcryptomator.logDir=&quot;@{localappdata}/Cryptomator&quot; -Dcryptomator.pluginDir=&quot;@{appdata}/Cryptomator/Plugins&quot; -Dcryptomator.integrationsWin.keychainPaths=&quot;@{appdata}/Cryptomator/keychain.json;@{userhome}/AppData/Roaming/Cryptomator/keychain.json&quot; -Dcryptomator.p12Path=&quot;@{appdata}/Cryptomator/key.p12;@{userhome}/AppData/Roaming/Cryptomator/key.p12&quot; -Dcryptomator.mountPointsDir=&quot;@{userhome}/Cryptomator&quot; -Dcryptomator.showTrayIcon=true -Xss2m -Xmx512m --enable-preview --enable-native-access=org.cryptomator.jfuse.win,org.cryptomator.integrations.win" />
<method v="2">
<option name="Make" enabled="true" />
</method>

View File

@@ -2,7 +2,7 @@
<configuration default="false" name="Cryptomator Windows Dev" type="Application" factoryName="Application">
<option name="MAIN_CLASS_NAME" value="org.cryptomator.launcher.Cryptomator" />
<module name="cryptomator" />
<option name="VM_PARAMETERS" value="-Dcryptomator.settingsPath=&quot;~/AppData/Roaming/Cryptomator-Dev/settings.json&quot; -Dcryptomator.ipcSocketPath=&quot;~/AppData/Roaming/Cryptomator-Dev/ipc.socket&quot; -Dcryptomator.logDir=&quot;~/AppData/Roaming/Cryptomator-Dev&quot; -Dcryptomator.pluginDir=&quot;~/AppData/Roaming/Cryptomator-Dev/Plugins&quot; -Dcryptomator.integrationsWin.keychainPaths=&quot;~/AppData/Roaming/Cryptomator-Dev/keychain.json&quot; -Dcryptomator.p12Path=&quot;~/AppData/Roaming/Cryptomator-Dev/key.p12&quot; -Dcryptomator.mountPointsDir=&quot;~/Cryptomator-Dev&quot; -Dcryptomator.showTrayIcon=true -Xss2m -Xmx512m --enable-preview --enable-native-access=org.cryptomator.jfuse.win" />
<option name="VM_PARAMETERS" value="-Dcryptomator.settingsPath=&quot;@{appdata}/Cryptomator-Dev/settings.json;@{userhome}/AppData/Roaming/Cryptomator-Dev/settings.json&quot; -Dcryptomator.ipcSocketPath=&quot;@{localappdata}/Cryptomator-Dev/ipc.socket&quot; -Dcryptomator.logDir=&quot;@{localappdata}/Cryptomator-Dev&quot; -Dcryptomator.pluginDir=&quot;@{appdata}/Cryptomator-Dev/Plugins&quot; -Dcryptomator.integrationsWin.keychainPaths=&quot;@{appdata}/Cryptomator-Dev/keychain.json;@{userhome}/AppData/Roaming/Cryptomator-Dev/keychain.json&quot; -Dcryptomator.p12Path=&quot;@{appdata}/Cryptomator-Dev/key.p12;@{userhome}/AppData/Roaming/Cryptomator-Dev/key.p12&quot; -Dcryptomator.mountPointsDir=&quot;@{userhome}/Cryptomator-Dev&quot; -Dcryptomator.showTrayIcon=true -Xss2m -Xmx512m --enable-preview --enable-native-access=org.cryptomator.jfuse.win,org.cryptomator.integrations.win" />
<method v="2">
<option name="Make" enabled="true" />
</method>

View File

@@ -5,7 +5,7 @@
</envs>
<option name="MAIN_CLASS_NAME" value="org.cryptomator.launcher.Cryptomator" />
<module name="cryptomator" />
<option name="VM_PARAMETERS" value="-Dapple.awt.enableTemplateImages=true -Dcryptomator.settingsPath=&quot;~/Library/Application Support/Cryptomator/settings.json&quot; -Dcryptomator.p12Path=&quot;~/Library/Application Support/Cryptomator/key.p12&quot; -Dcryptomator.ipcSocketPath=&quot;~/Library/Application Support/Cryptomator/ipc.socket&quot; -Dcryptomator.logDir=&quot;~/Library/Logs/Cryptomator&quot; -Dcryptomator.pluginDir=&quot;~/Library/Application Support/Cryptomator/Plugins&quot; -Dcryptomator.mountPointsDir=&quot;~/Cryptomator&quot; -Dcryptomator.showTrayIcon=true -Dcryptomator.integrationsMac.keychainServiceName=Cryptomator -Xss2m -Xmx512m -ea --enable-preview --enable-native-access=org.cryptomator.jfuse.mac" />
<option name="VM_PARAMETERS" value="-Dapple.awt.enableTemplateImages=true -Dcryptomator.settingsPath=&quot;@{userhome}/Library/Application Support/Cryptomator/settings.json&quot; -Dcryptomator.p12Path=&quot;@{userhome}/Library/Application Support/Cryptomator/key.p12&quot; -Dcryptomator.ipcSocketPath=&quot;@{userhome}/Library/Application Support/Cryptomator/ipc.socket&quot; -Dcryptomator.logDir=&quot;@{userhome}/Library/Logs/Cryptomator&quot; -Dcryptomator.pluginDir=&quot;@{userhome}/Library/Application Support/Cryptomator/Plugins&quot; -Dcryptomator.mountPointsDir=&quot;@{userhome}/Cryptomator&quot; -Dcryptomator.showTrayIcon=true -Dcryptomator.integrationsMac.keychainServiceName=Cryptomator -Xss2m -Xmx512m -ea --enable-preview --enable-native-access=org.cryptomator.jfuse.mac" />
<method v="2">
<option name="Make" enabled="true" />
</method>

View File

@@ -5,7 +5,7 @@
</envs>
<option name="MAIN_CLASS_NAME" value="org.cryptomator.launcher.Cryptomator" />
<module name="cryptomator" />
<option name="VM_PARAMETERS" value="-Dapple.awt.enableTemplateImages=true -Dcryptomator.settingsPath=&quot;~/Library/Application Support/Cryptomator-Dev/settings.json&quot; -Dcryptomator.p12Path=&quot;~/Library/Application Support/Cryptomator-Dev/key.p12&quot; -Dcryptomator.ipcSocketPath=&quot;~/Library/Application Support/Cryptomator-Dev/ipc.socket&quot; -Dcryptomator.logDir=&quot;~/Library/Logs/Cryptomator-Dev&quot; -Dcryptomator.pluginDir=&quot;~/Library/Application Support/Cryptomator-Dev/Plugins&quot; -Dcryptomator.mountPointsDir=&quot;~/Cryptomator&quot; -Dcryptomator.showTrayIcon=true -Dcryptomator.integrationsMac.keychainServiceName=Cryptomator -Xss2m -Xmx512m -ea --enable-preview --enable-native-access=org.cryptomator.jfuse.mac" />
<option name="VM_PARAMETERS" value="-Dapple.awt.enableTemplateImages=true -Dcryptomator.settingsPath=&quot;@{userhome}/Library/Application Support/Cryptomator-Dev/settings.json&quot; -Dcryptomator.p12Path=&quot;@{userhome}/Library/Application Support/Cryptomator-Dev/key.p12&quot; -Dcryptomator.ipcSocketPath=&quot;@{userhome}/Library/Application Support/Cryptomator-Dev/ipc.socket&quot; -Dcryptomator.logDir=&quot;@{userhome}/Library/Logs/Cryptomator-Dev&quot; -Dcryptomator.pluginDir=&quot;@{userhome}/Library/Application Support/Cryptomator-Dev/Plugins&quot; -Dcryptomator.mountPointsDir=&quot;@{userhome}/Library/Application Support/Cryptomator-Dev/mnt&quot; -Dcryptomator.showTrayIcon=true -Dcryptomator.integrationsMac.keychainServiceName=Cryptomator -Xss2m -Xmx512m -ea --enable-preview --enable-native-access=org.cryptomator.jfuse.mac" />
<method v="2">
<option name="Make" enabled="true" />
</method>

View File

@@ -3,7 +3,7 @@
[![Build](https://github.com/cryptomator/cryptomator/workflows/Build/badge.svg)](https://github.com/cryptomator/cryptomator/actions?query=workflow%3ABuild)
[![Known Vulnerabilities](https://snyk.io/test/github/cryptomator/cryptomator/badge.svg)](https://snyk.io/test/github/cryptomator/cryptomator)
[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=cryptomator_cryptomator&metric=alert_status)](https://sonarcloud.io/dashboard?id=cryptomator_cryptomator)
[![Twitter](https://img.shields.io/badge/twitter-@Cryptomator-blue.svg?style=flat)](http://twitter.com/Cryptomator)
[![Mastodon](https://img.shields.io/mastodon/follow/176112?domain=mastodon.online&style=flat)](https://mastodon.online/@cryptomator)
[![Crowdin](https://badges.crowdin.net/cryptomator/localized.svg)](https://translate.cryptomator.org/)
[![Latest Release](https://img.shields.io/github/release/cryptomator/cryptomator.svg)](https://github.com/cryptomator/cryptomator/releases/latest)
[![Community](https://img.shields.io/badge/help-Community-orange.svg)](https://community.cryptomator.org)
@@ -17,32 +17,24 @@ Cryptomator is provided free of charge as an open-source project despite the hig
### Gold Sponsors
<table>
<tbody>
<tr>
<td><a href="https://www.gee-whiz.de/"><img src="https://cryptomator.org/img/sponsors/geewhiz.svg" alt="gee-whiz" height="80"></a></td>
<td><a href="https://proxy-hub.com/"><img src="https://cryptomator.org/img/sponsors/proxyhub.svg" alt="Proxy-Hub" height="80"></a></td>
</tr>
</tbody>
</table>
Become our Gold Sponsor and showcase your brand to a targeted audience! Please contact us if you are interested.
### Silver Sponsors
<table>
<tbody>
<tr>
<td><a href="https://mowcapital.com/"><img src="https://cryptomator.org/img/sponsors/mowcapital.svg" alt="Mow Capital" height="40"></a></td>
<td><a href="https://www.easeus.com/"><img src="https://cryptomator.org/img/sponsors/easeus.png" alt="EaseUS" height="40"></a></td>
<td><a href="https://www.hassmann-it-forensik.de/"><img src="https://cryptomator.org/img/sponsors/hassmannitforensik.png" alt="Hassmann IT-Forensik" height="40"></a></td>
<td><a href="https://www.gee-whiz.de/"><img src="https://cryptomator.org/img/sponsors/geewhiz.svg" alt="gee-whiz" height="56"></a></td>
<td><a href="https://www.route4me.com/"><img src="https://cryptomator.org/img/sponsors/route4me.svg" alt="Route4Me" height="56"></a></td>
</tr>
</tbody>
</table>
### Special Shoutout
Continuous integration hosting for ARM64 builds is provided by [MacStadium](https://www.macstadium.com/opensource).
Continuous integration hosting for ARM64 builds is provided by [MacStadium](https://www.macstadium.com/company/opensource).
<a href="https://www.macstadium.com/opensource"><img src="https://uploads-ssl.webflow.com/5ac3c046c82724970fc60918/5c019d917bba312af7553b49_MacStadium-developerlogo.png" alt="MacStadium" height="100"></a>
<a href="https://www.macstadium.com/company/opensource"><img src="https://uploads-ssl.webflow.com/5ac3c046c82724970fc60918/5c019d917bba312af7553b49_MacStadium-developerlogo.png" alt="MacStadium" height="100"></a>
---
@@ -62,7 +54,7 @@ Download native binaries of Cryptomator on [cryptomator.org](https://cryptomator
- File names get encrypted
- Folder structure gets obfuscated
- Use as many vaults in your Dropbox as you want, each having individual passwords
- Four thousand commits for the security of your data!! :tada:
- More than Five thousand commits for the security of your data!! :tada:
### Privacy
@@ -74,19 +66,19 @@ Download native binaries of Cryptomator on [cryptomator.org](https://cryptomator
### Consistency
- HMAC over file contents to recognize changed ciphertext before decryption
- Authenticated encryption is used for file content to recognize changed ciphertext before decryption
- I/O operations are transactional and atomic, if the filesystems support it
- Each file contains all information needed for decryption (except for the key of course), no common metadata means no [SPOF](http://en.wikipedia.org/wiki/Single_point_of_failure)
### Security Architecture
For more information on the security details visit [cryptomator.org](https://docs.cryptomator.org/en/latest/security/architecture/).
For more information on the security details visit [cryptomator.org](https://docs.cryptomator.org/security/architecture/).
## Building
### Dependencies
* JDK 19 (e.g. temurin)
* JDK 23 (e.g. temurin, zulu)
* Maven 3
### Run Maven

View File

@@ -1,4 +1,6 @@
# created during build
# downloaded/created during build
openjfx-jmods.zip
*.jmod
Cryptomator.AppDir
*.AppImage
*.AppImage.zsync

View File

@@ -1,4 +1,5 @@
#!/bin/bash
set -e
cd $(dirname $0)
REVISION_NO=`git rev-list --count HEAD`
@@ -7,32 +8,62 @@ REVISION_NO=`git rev-list --count HEAD`
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; }
command -v curl >/dev/null 2>&1 || { echo >&2 "curl not found."; exit 1; }
command -v unzip >/dev/null 2>&1 || { echo >&2 "unzip not found."; exit 1; }
VERSION=$(mvn -f ../../../pom.xml help:evaluate -Dexpression=project.version -q -DforceStdout)
SEMVER_STR=${VERSION}
CPU_ARCH=$(uname -p)
if [[ ! "${CPU_ARCH}" =~ x86_64|aarch64 ]]; then echo "Platform ${CPU_ARCH} not supported"; exit 1; fi
mvn -f ../../../pom.xml versions:set -DnewVersion=${SEMVER_STR}
# compile
mvn -B -f ../../../pom.xml clean package -Plinux -DskipTests
mvn -B -f ../../../pom.xml clean package -Plinux -DskipTests -Djavafx.platform=linux
cp ../../../LICENSE.txt ../../../target
cp ../launcher.sh ../../../target
cp ../../../target/cryptomator-*.jar ../../../target/mods
JAVAFX_VERSION=22.0.2
JAVAFX_ARCH="x64"
JAVAFX_JMODS_SHA256='2164bca470bf70a5e2764645e2078ba7f787b274e5be3d7df30d87c5bb62bba6'
if [ "${CPU_ARCH}" = "aarch64" ]; then
JAVAFX_ARCH="aarch64"
JAVAFX_JMODS_SHA256='09c92fa9fa0b82adefd88640a14ebb2a49e5f3f733a57d1542f5590d060ffe1b'
fi
# download javaFX jmods
JAVAFX_JMODS_URL="https://download2.gluonhq.com/openjfx/${JAVAFX_VERSION}/openjfx-${JAVAFX_VERSION}_linux-${JAVAFX_ARCH}_bin-jmods.zip"
curl -L ${JAVAFX_JMODS_URL} -o openjfx-jmods.zip
echo "${JAVAFX_JMODS_SHA256} openjfx-jmods.zip" | shasum -a256 --check
mkdir -p openjfx-jmods
unzip -o -j openjfx-jmods.zip \*/javafx.base.jmod \*/javafx.controls.jmod \*/javafx.fxml.jmod \*/javafx.graphics.jmod -d openjfx-jmods
JMOD_VERSION=$(jmod describe ./openjfx-jmods/javafx.base.jmod | head -1)
JMOD_VERSION=${JMOD_VERSION#*@}
JMOD_VERSION=${JMOD_VERSION%%.*}
POM_JFX_VERSION=$(mvn help:evaluate "-Dexpression=javafx.version" -q -DforceStdout -B -f ../../../pom.xml)
POM_JFX_VERSION=${POM_JFX_VERSION#*@}
POM_JFX_VERSION=${POM_JFX_VERSION%%.*}
if [ $POM_JFX_VERSION -ne $JMOD_VERSION ]; then
>&2 echo "Major JavaFX version in pom.xml (${POM_JFX_VERSION}) != amd64 jmod version (${JMOD_VERSION})"
exit 1
fi
# add runtime
${JAVA_HOME}/bin/jlink \
--verbose \
--output runtime \
--module-path "${JAVA_HOME}/jmods" \
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.crypto.ec,jdk.security.auth,jdk.accessibility,jdk.management.jfr \
--module-path "${JAVA_HOME}/jmods:openjfx-jmods" \
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.security.auth,jdk.accessibility,jdk.management.jfr,jdk.net,java.compiler \
--strip-native-commands \
--no-header-files \
--no-man-pages \
--strip-debug \
--compress=1
--compress zip-0
# create app dir
envsubst '${SEMVER_STR} ${REVISION_NUM}' < ../launcher-gtk2.properties > launcher-gtk2.properties
${JAVA_HOME}/bin/jpackage \
--verbose \
--type app-image \
@@ -44,21 +75,23 @@ ${JAVA_HOME}/bin/jpackage \
--name Cryptomator \
--vendor "Skymatic GmbH" \
--java-options "--enable-preview" \
--java-options "--enable-native-access=org.cryptomator.jfuse.linux.amd64,org.cryptomator.jfuse.linux.aarch64" \
--copyright "(C) 2016 - 2023 Skymatic GmbH" \
--java-options "--enable-native-access=org.cryptomator.jfuse.linux.amd64,org.cryptomator.jfuse.linux.aarch64,org.purejava.appindicator" \
--copyright "(C) 2016 - 2025 Skymatic GmbH" \
--java-options "-Xss5m" \
--java-options "-Xmx256m" \
--app-version "${VERSION}.${REVISION_NO}" \
--java-options "-Dfile.encoding=\"utf-8\"" \
--java-options "-Dcryptomator.logDir=\"~/.local/share/Cryptomator/logs\"" \
--java-options "-Dcryptomator.pluginDir=\"~/.local/share/Cryptomator/plugins\"" \
--java-options "-Dcryptomator.settingsPath=\"~/.config/Cryptomator/settings.json:~/.Cryptomator/settings.json\"" \
--java-options "-Dcryptomator.p12Path=\"~/.config/Cryptomator/key.p12\"" \
--java-options "-Dcryptomator.ipcSocketPath=\"~/.config/Cryptomator/ipc.socket\"" \
--java-options "-Dcryptomator.mountPointsDir=\"~/.local/share/Cryptomator/mnt\"" \
--java-options "-Dcryptomator.showTrayIcon=false" \
--java-options "-Djava.net.useSystemProxies=true" \
--java-options "-Dcryptomator.logDir=\"@{userhome}/.local/share/Cryptomator/logs\"" \
--java-options "-Dcryptomator.pluginDir=\"@{userhome}/.local/share/Cryptomator/plugins\"" \
--java-options "-Dcryptomator.settingsPath=\"@{userhome}/.config/Cryptomator/settings.json:@{userhome}/.Cryptomator/settings.json\"" \
--java-options "-Dcryptomator.p12Path=\"@{userhome}/.config/Cryptomator/key.p12\"" \
--java-options "-Dcryptomator.ipcSocketPath=\"@{userhome}/.config/Cryptomator/ipc.socket\"" \
--java-options "-Dcryptomator.mountPointsDir=\"@{userhome}/.local/share/Cryptomator/mnt\"" \
--java-options "-Dcryptomator.showTrayIcon=true" \
--java-options "-Dcryptomator.integrationsLinux.trayIconsDir=\"@{appdir}/usr/share/icons/hicolor/symbolic/apps\"" \
--java-options "-Dcryptomator.buildNumber=\"appimage-${REVISION_NO}\"" \
--add-launcher cryptomator-gtk2=launcher-gtk2.properties \
--java-options "-Dcryptomator.networking.truststore.p12Path=\"/etc/cryptomator/certs.p12\"" \
--resource-dir ../resources
# transform AppDir
@@ -68,27 +101,31 @@ envsubst '${REVISION_NO}' < resources/AppDir/bin/cryptomator.sh > Cryptomator.Ap
cp ../common/org.cryptomator.Cryptomator256.png Cryptomator.AppDir/usr/share/icons/hicolor/256x256/apps/org.cryptomator.Cryptomator.png
cp ../common/org.cryptomator.Cryptomator512.png Cryptomator.AppDir/usr/share/icons/hicolor/512x512/apps/org.cryptomator.Cryptomator.png
cp ../common/org.cryptomator.Cryptomator.svg Cryptomator.AppDir/usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg
cp ../common/org.cryptomator.Cryptomator.tray.svg Cryptomator.AppDir/usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.tray.svg
cp ../common/org.cryptomator.Cryptomator.tray-unlocked.svg Cryptomator.AppDir/usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.tray-unlocked.svg
cp ../common/org.cryptomator.Cryptomator.tray.svg Cryptomator.AppDir/usr/share/icons/hicolor/symbolic/apps/org.cryptomator.Cryptomator.tray-symbolic.svg
cp ../common/org.cryptomator.Cryptomator.tray-unlocked.svg Cryptomator.AppDir/usr/share/icons/hicolor/symbolic/apps/org.cryptomator.Cryptomator.tray-unlocked-symbolic.svg
cp ../common/org.cryptomator.Cryptomator.desktop Cryptomator.AppDir/usr/share/applications/org.cryptomator.Cryptomator.desktop
cp ../common/org.cryptomator.Cryptomator.metainfo.xml Cryptomator.AppDir/usr/share/metainfo/org.cryptomator.Cryptomator.metainfo.xml
cp ../common/application-vnd.cryptomator.vault.xml Cryptomator.AppDir/usr/share/mime/packages/application-vnd.cryptomator.vault.xml
ln -s usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg Cryptomator.AppDir/org.cryptomator.Cryptomator.svg
ln -s usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg Cryptomator.AppDir/Cryptomator.svg
ln -s usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.svg Cryptomator.AppDir/.DirIcon
ln -s usr/share/applications/org.cryptomator.Cryptomator.desktop Cryptomator.AppDir/Cryptomator.desktop
ln -s usr/share/applications/org.cryptomator.Cryptomator.desktop Cryptomator.AppDir/org.cryptomator.Cryptomator.desktop
ln -s org.cryptomator.Cryptomator.metainfo.xml Cryptomator.AppDir/usr/share/metainfo/org.cryptomator.Cryptomator.appdata.xml
ln -s bin/cryptomator.sh Cryptomator.AppDir/AppRun
# load AppImageTool
curl -L https://github.com/AppImage/AppImageKit/releases/download/13/appimagetool-x86_64.AppImage -o /tmp/appimagetool.AppImage
curl -L https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-${CPU_ARCH}.AppImage -o /tmp/appimagetool.AppImage
chmod +x /tmp/appimagetool.AppImage
# create AppImage
/tmp/appimagetool.AppImage \
Cryptomator.AppDir \
cryptomator-${SEMVER_STR}-x86_64.AppImage \
-u 'gh-releases-zsync|cryptomator|cryptomator|latest|cryptomator-*-x86_64.AppImage.zsync'
cryptomator-${SEMVER_STR}-${CPU_ARCH}.AppImage \
-u 'gh-releases-zsync|cryptomator|cryptomator|latest|cryptomator-*-${CPU_ARCH}.AppImage.zsync'
echo ""
echo "Done. AppImage successfully created: cryptomator-${SEMVER_STR}-x86_64.AppImage"
echo "Done. AppImage successfully created: cryptomator-${SEMVER_STR}-${CPU_ARCH}.AppImage"
echo ""
echo >&2 "To clean up, run: rm -rf Cryptomator.AppDir appdir runtime squashfs-root openjfx-jmods; rm /tmp/appimagetool.AppImage openjfx-jmods.zip"
echo ""
echo >&2 "To clean up, run: rm -rf Cryptomator.AppDir appdir jni runtime squashfs-root; rm launcher-gtk2.properties /tmp/appimagetool.AppImage"
echo ""

View File

@@ -5,26 +5,27 @@
<metadata_license>FSFAP</metadata_license>
<project_license>GPL-3.0-or-later</project_license>
<name>Cryptomator</name>
<summary>Multi-platform client-side encryption tool optimized for cloud storages</summary>
<summary>Encryption made easy and optimized for the cloud</summary>
<description>
<p>
Cryptomator provides transparent, client-side encryption for your cloud. Protect your documents from unauthorized
access. Cryptomator is free and open source software, so you can rest assured there are no backdoors.
Cryptomator provides easy-to-use, transparent, client-side encryption for your cloud.
It protects your documents from unauthorized access and prying eyes, while you will still be able to view and edit your documents locally.
By not requiring any registration or account and performing all encryption locally, it gives you back control over your data and ensures your privacy.
Cryptomator is offered for all major platforms (including Android and iOS).
</p>
<p>
Cryptomator encrypts file contents and names using AES. Your passphrase is protected against bruteforcing attempts
using scrypt. Directory structures get obfuscated. The only thing which cannot be encrypted without breaking your
cloud synchronization is the modification date of your files.
Cryptomator encrypts file contents and names using the widespread industry standard AES.
Your passphrase is protected against brute forcing attempts using scrypt.
Additionally, directory structures get obfuscated.
For more info about the Cryptomator encryption scheme, check out the online documentation.
</p>
<p>
Cryptomator is a free and open source software licensed under the GPLv3. This allows anyone to check our code. It
is impossible to introduce backdoors for third parties. Also we cannot hide vulnerabilities. And the best thing
is: There is no need to trust us, as you can control us!
</p>
<p>
Vendor lock-ins are impossible. Even if we decided to stop development: The source code is already cloned by
hundreds of other developers. As you don't need an account, you will never stand in front of locked doors.
Cryptomator is a free and open-source software licensed under the GPLv3.
This allows anyone to check our code.
Thus, it is impossible to introduce backdoors for third parties or to hide vulnerabilities, so you do not need to trust Cryptomator.
Also, vendor lock-ins are impossible.
Even if we decided to stop development: The source code is already cloned by hundreds of other developers and development can be picked up by others.
</p>
</description>
@@ -42,7 +43,7 @@
</provides>
<screenshots>
<screenshot>
<screenshot type="default">
<caption>Light theme</caption>
<image>https://user-images.githubusercontent.com/11858409/156986109-6e58f59c-8b8c-4501-b33b-bb1e33007cea.png</image>
</screenshot>
@@ -52,29 +53,131 @@
</screenshot>
</screenshots>
<branding>
<color type="primary" scheme_preference="light">#EBF5EB</color>
<color type="primary" scheme_preference="dark">#2F4858</color>
</branding>
<url type="homepage">https://cryptomator.org/</url>
<url type="bugtracker">https://github.com/cryptomator/cryptomator/issues/</url>
<url type="donation">https://cryptomator.org/donate</url>
<url type="faq">https://community.cryptomator.org/c/kb/faq</url>
<url type="help">https://community.cryptomator.org/</url>
<url type="help">https://docs.cryptomator.org/</url>
<url type="translate">https://translate.cryptomator.org</url>
<developer_name>Skymatic GmbH</developer_name>
<developer id="de.skymatic">
<name>Skymatic GmbH</name>
</developer>
<content_rating type="oars-1.1">
<content_attribute id="social-info">mild</content_attribute> <!-- update checker connects to https://api.cryptomator.org/updates/latestVersion.json -->
</content_rating>
<releases>
<release date="2022-12-14" version="1.6.17"/>
<release date="2022-12-06" version="1.6.16"/>
<release date="2022-10-06" version="1.6.15"/>
<release date="2022-08-31" version="1.6.14"/>
<release date="2022-07-27" version="1.6.12"/>
<release date="2022-07-26" version="1.6.11"/>
<release date="2022-05-03" version="1.6.10"/>
<release date="2022-04-27" version="1.6.9"/>
<release date="2022-03-30" version="1.6.8"/>
<release date="2021-12-16" version="1.6.5"/>
<release date="2025-02-03" version="1.15.0">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.15.0</url>
</release>
<release date="2024-11-19" version="1.14.2">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.14.2</url>
</release>
<release date="2024-09-17" version="1.14.0">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.14.0</url>
</release>
<release date="2024-06-26" version="1.13.0">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.13.0</url>
</release>
<release date="2024-03-27" version="1.12.4">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.12.4</url>
</release>
<release date="2024-02-27" version="1.12.3">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.12.3</url>
</release>
<release date="2024-02-09" version="1.12.2">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.12.2</url>
</release>
<release date="2024-02-07" version="1.12.1">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.12.1</url>
</release>
<release date="2024-02-06" version="1.12.0">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.12.0</url>
</release>
<release date="2023-12-05" version="1.11.1">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.11.1</url>
</release>
<release date="2023-11-08" version="1.11.0">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.11.0</url>
</release>
<release date="2023-09-20" version="1.10.1">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.10.1</url>
</release>
<release date="2023-09-11" version="1.10.0">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.10.0</url>
</release>
<release date="2023-08-11" version="1.9.4">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.9.4</url>
</release>
<release date="2023-08-07" version="1.9.3">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.9.3</url>
</release>
<release date="2023-07-24" version="1.9.2">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.9.2</url>
</release>
<release date="2023-06-07" version="1.9.1">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.9.1</url>
</release>
<release date="2023-05-30" version="1.9.0">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.9.0</url>
</release>
<release date="2023-04-25" version="1.8.0">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.8.0</url>
</release>
<release date="2023-04-07" version="1.7.5">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.7.5</url>
</release>
<release date="2023-04-05" version="1.7.4">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.7.4</url>
</release>
<release date="2023-03-15" version="1.7.3">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.7.3</url>
</release>
<release date="2023-03-07" version="1.7.2">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.7.2</url>
</release>
<release date="2023-03-03" version="1.7.1">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.7.1</url>
</release>
<release date="2023-03-01" version="1.7.0">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.7.0</url>
</release>
<release date="2022-12-14" version="1.6.17">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.6.17</url>
</release>
<release date="2022-12-06" version="1.6.16">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.6.16</url>
</release>
<release date="2022-10-06" version="1.6.15">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.6.15</url>
</release>
<release date="2022-08-31" version="1.6.14">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.6.14</url>
</release>
<release date="2022-07-27" version="1.6.12">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.6.12</url>
</release>
<release date="2022-07-26" version="1.6.11">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.6.11</url>
</release>
<release date="2022-05-03" version="1.6.10">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.6.10</url>
</release>
<release date="2022-04-27" version="1.6.9">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.6.9</url>
</release>
<release date="2022-03-30" version="1.6.8">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.6.8</url>
</release>
<release date="2021-12-16" version="1.6.5">
<url type="details">https://github.com/cryptomator/cryptomator/releases/1.6.5</url>
</release>
</releases>
</component>

View File

@@ -0,0 +1,12 @@
<svg height="16" viewBox="0 0 42 42" width="16" xmlns="http://www.w3.org/2000/svg">
<style
id="current-color-scheme" type="text/css">
.ColorScheme-Text {
color:#232629;
}
</style>
<g fill-rule="evenodd" style="fill:#f2f2f2;fill-opacity:1" class="ColorScheme-Text" fill="currentColor">
<path d="m15.591 35.824c-.019.009-.936.775-1.458 1.208a.418.418 0 0 1 -.627-.111 9.322 9.322 0 0 1 -.3-5.974 15.843 15.843 0 0 0 2.894 2.043c.051 1.03-.161 2.644-.509 2.834zm6.409-6.824h-2l.5-5a2 2 0 1 1 1 0zm-14.544-3.241.744-1.366a1.579 1.579 0 0 0 -.019-1.557l.653-1.2c.2.014-.03-.113.165-.14.051-.217-.051-.336 0-.5a3.269 3.269 0 0 0 0-1.5 7.151 7.151 0 0 1 0-3 2.366 2.366 0 0 0 -2.378 1.448 2.409 2.409 0 0 0 .229 2.661l-.7 1.278a1.779 1.779 0 0 0 -1.317.891l-.741 1.372a1.577 1.577 0 0 0 -.019 1.487 3.028 3.028 0 0 0 -2.746 1.525 2.648 2.648 0 0 0 .044 2.631.748.748 0 0 0 .981.266.656.656 0 0 0 .284-.92 1.37 1.37 0 0 1 -.023-1.361 1.6 1.6 0 0 1 2.079-.63 1.408 1.408 0 0 1 .672 1.95 1.546 1.546 0 0 1 -1.2.78.688.688 0 0 0 -.636.749.707.707 0 0 0 .717.6.789.789 0 0 0 .082 0 2.989 2.989 0 0 0 2.322-1.513 2.669 2.669 0 0 0 -.377-3.084 1.767 1.767 0 0 0 1.184-.867zm13.544-10.759a13.013 13.013 0 0 1 5-1 21.6 21.6 0 0 1 4.5.5 9.312 9.312 0 0 0 -9.5-8.5c-5.794 0-9.176 4-9.5 8.5a21.858 21.858 0 0 1 4.5-.5 12.819 12.819 0 0 1 5 1zm3.5-5c1.209 0 2.5.866 2.5 2h-5c0-1.134 1.291-2 2.5-2zm-7 0c1.209 0 2.5.866 2.5 2h-5c0-1.134 1.291-2 2.5-2zm14.473 6a8.067 8.067 0 0 0 -8.08 8v2.141a3.891 3.891 0 0 0 -2.893 3.734v5.125a23.166 23.166 0 0 1 -4.174-1.623 7.857 7.857 0 0 1 -.027.878 3.263 3.263 0 0 1 -.729 2.074l-1.794 1.483a.379.379 0 0 1 -.276.188h-4c-1.324 0-2.346-1.336-2.653-3.343a7.058 7.058 0 0 1 .234-3.18 3.477 3.477 0 0 1 1.636-2.157 1.868 1.868 0 0 1 .783-.32h1.5a8.035 8.035 0 0 1 -1.5-5 11.1 11.1 0 0 1 .5-3 2.519 2.519 0 0 0 0-1.5 13.272 13.272 0 0 1 -.5-3.5c6.687-1.936 11 0 11 0s4.319-1.955 11 0"/>
<path d="m39 28h-10v-4a3.13 3.13 0 0 1 3-3 3.087 3.087 0 0 1 3 3v1a1.034 1.034 0 0 0 1 1h1a1.034 1.034 0 0 0 1-1v-1a6 6 0 0 0 -12 0v4h-1a2.073 2.073 0 0 0 -2 2v6a2.073 2.073 0 0 0 2 2h14a2.073 2.073 0 0 0 2-2v-6a2.073 2.073 0 0 0 -2-2zm-5.391 5.94a1.609 1.609 0 0 1 -3.217 0v-1.876a1.609 1.609 0 0 1 3.217 0z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1,8 @@
<svg height="16" viewBox="0 0 42 42" width="16" xmlns="http://www.w3.org/2000/svg">
<style id="current-color-scheme" type="text/css">
.ColorScheme-Text {
color:#232629;
}
</style>
<path d="m32.66 29.319a1.432 1.432 0 0 0 -.66-.319h-1.5a8.125 8.125 0 0 0 1.5-5 11.027 11.027 0 0 0 -.5-3 2.519 2.519 0 0 1 0-1.5 12.987 12.987 0 0 0 .5-3.5c-6.681-1.955-11 0-11 0s-4.313-1.936-11 0a13.272 13.272 0 0 0 .5 3.5 2.519 2.519 0 0 1 0 1.5 11.1 11.1 0 0 0 -.5 3 8.035 8.035 0 0 0 1.5 5h-1.5a1.868 1.868 0 0 0 -.783.319 3.477 3.477 0 0 0 -1.636 2.157 7.058 7.058 0 0 0 -.234 3.18c.307 2.008 1.329 3.344 2.653 3.344h4a.379.379 0 0 0 .277-.187l1.793-1.483a3.263 3.263 0 0 0 .729-2.074 7.857 7.857 0 0 0 .027-.878 23.166 23.166 0 0 0 4.174 1.622 24.4 24.4 0 0 0 4.051-1.614 7.848 7.848 0 0 0 .027.869 3.263 3.263 0 0 0 .729 2.074l1.793 1.484a.61.61 0 0 0 .4.187h4c1.324 0 2.223-1.336 2.529-3.343a7.057 7.057 0 0 0 -.234-3.18 3.477 3.477 0 0 0 -1.635-2.158zm-17.069 6.5c-.019.009-.936.775-1.458 1.208a.418.418 0 0 1 -.627-.111 9.322 9.322 0 0 1 -.3-5.974 15.843 15.843 0 0 0 2.894 2.048c.051 1.03-.161 2.644-.509 2.834zm6.409-6.819h-2l.5-5a2 2 0 1 1 1 0zm6.38 7.921a.418.418 0 0 1 -.627.111c-.522-.433-1.439-1.2-1.458-1.208-.348-.189-.56-1.8-.505-2.828a15.84 15.84 0 0 0 2.9-2.037 9.322 9.322 0 0 1 -.31 5.962zm-20.924-11.162.744-1.366a1.579 1.579 0 0 0 -.019-1.557l.653-1.2c.2.014-.03-.113.165-.14.051-.217-.051-.336 0-.5a3.269 3.269 0 0 0 0-1.5 7.151 7.151 0 0 1 0-3 2.366 2.366 0 0 0 -2.378 1.448 2.409 2.409 0 0 0 .229 2.661l-.7 1.278a1.779 1.779 0 0 0 -1.317.891l-.741 1.372a1.577 1.577 0 0 0 -.019 1.487 3.028 3.028 0 0 0 -2.746 1.525 2.648 2.648 0 0 0 .044 2.631.748.748 0 0 0 .981.266.656.656 0 0 0 .284-.92 1.37 1.37 0 0 1 -.023-1.361 1.6 1.6 0 0 1 2.079-.63 1.408 1.408 0 0 1 .672 1.95 1.546 1.546 0 0 1 -1.2.78.688.688 0 0 0 -.636.749.707.707 0 0 0 .717.6.789.789 0 0 0 .082 0 2.989 2.989 0 0 0 2.322-1.513 2.669 2.669 0 0 0 -.377-3.084 1.767 1.767 0 0 0 1.184-.867zm33.217 1.2a3.021 3.021 0 0 0 -2.658-1.525 1.574 1.574 0 0 0 -.107-1.283l-.745-1.367a1.779 1.779 0 0 0 -1.317-.891l-.7-1.278a2.409 2.409 0 0 0 .229-2.661 2.283 2.283 0 0 0 -2.375-1.454 7.039 7.039 0 0 1 0 3 3.272 3.272 0 0 0 0 1.5c.047.152-.047.3 0 .5.227.04-.069.156.165.14l.653 1.2a1.579 1.579 0 0 0 -.019 1.557l.745 1.367a1.753 1.753 0 0 0 1.045.832 2.66 2.66 0 0 0 -.238 2.916 2.989 2.989 0 0 0 2.326 1.509.79.79 0 0 0 .082 0 .707.707 0 0 0 .717-.6.688.688 0 0 0 -.636-.749 1.546 1.546 0 0 1 -1.2-.78 1.408 1.408 0 0 1 .672-1.95 1.628 1.628 0 0 1 1.179-.089 1.512 1.512 0 0 1 .9.719 1.37 1.37 0 0 1 -.023 1.361.656.656 0 0 0 .284.92.748.748 0 0 0 .981-.266 2.648 2.648 0 0 0 .04-2.633zm-19.673-11.959a13.013 13.013 0 0 1 5-1 21.6 21.6 0 0 1 4.5.5 9.312 9.312 0 0 0 -9.5-8.5c-5.794 0-9.176 4-9.5 8.5a21.858 21.858 0 0 1 4.5-.5 12.819 12.819 0 0 1 5 1zm3.5-5c1.209 0 2.5.866 2.5 2h-5c0-1.134 1.291-2 2.5-2zm-7 0c1.209 0 2.5.866 2.5 2h-5c0-1.134 1.291-2 2.5-2z" fill-rule="evenodd" style="fill:#f2f2f2;fill-opacity:1" class="ColorScheme-Text" fill="currentColor"/>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -2,7 +2,7 @@ Source: cryptomator
Maintainer: Cryptobot <releases@cryptomator.org>
Section: utils
Priority: optional
Build-Depends: debhelper (>=10), coffeelibs-jdk-19, libgtk2.0-0, libgtk-3-0, libxxf86vm1, libgl1
Build-Depends: debhelper (>=10), coffeelibs-jdk-23 (>= 23.0.1+11-0ppa1), libgtk-3-0, libxxf86vm1, libgl1
Standards-Version: 4.5.0
Homepage: https://cryptomator.org
Vcs-Git: https://github.com/cryptomator/cryptomator.git
@@ -12,7 +12,7 @@ Package: cryptomator
Architecture: any
Section: utils
Priority: optional
Depends: ${shlibs:Depends}, ${misc:Depends}, libfuse3-3
Depends: ${shlibs:Depends}, ${misc:Depends}, fuse3
Recommends: gvfs-backends, gvfs-fuse, gnome-keyring
XB-AppName: Cryptomator
XB-Category: Utility;Security;FileTools;

View File

@@ -4,11 +4,11 @@ Upstream-Contact: Cryptomator <info@cryptomator.org>
Source: https://cryptomator.org
Files: *
Copyright: 2016-2023 Skymatic GmbH
Copyright: 2016-2025 Skymatic GmbH
License: GPL-3+
Files: debian/org.cryptomator.Cryptomator.appdata.xml
Copyright: 2016-2023 Skymatic GmbH
Copyright: 2016-2025 Skymatic GmbH
License: FSFAP
License: GPL-3+

View File

@@ -1,6 +1,8 @@
cryptomator usr/lib
common/org.cryptomator.Cryptomator.desktop usr/share/applications
common/org.cryptomator.Cryptomator.svg usr/share/icons/hicolor/scalable/apps
common/org.cryptomator.Cryptomator.tray.svg usr/share/icons/hicolor/scalable/apps
common/org.cryptomator.Cryptomator.tray-unlocked.svg usr/share/icons/hicolor/scalable/apps
common/org.cryptomator.Cryptomator256.png usr/share/icons/hicolor/256x256/apps
common/org.cryptomator.Cryptomator512.png usr/share/icons/hicolor/512x512/apps
common/org.cryptomator.Cryptomator.metainfo.xml usr/share/metainfo

View File

@@ -1 +1,3 @@
usr/lib/cryptomator/bin/cryptomator usr/bin/cryptomator
usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.tray.svg usr/share/icons/hicolor/symbolic/apps/org.cryptomator.Cryptomator.tray-symbolic.svg
usr/share/icons/hicolor/scalable/apps/org.cryptomator.Cryptomator.tray-unlocked.svg usr/share/icons/hicolor/symbolic/apps/org.cryptomator.Cryptomator.tray-unlocked-symbolic.svg

View File

@@ -4,7 +4,7 @@
# Uncomment this to turn on verbose mode.
#export DH_VERBOSE=1
JAVA_HOME = /usr/lib/jvm/java-19-coffeelibs
JAVA_HOME = /usr/lib/jvm/java-23-coffeelibs
DEB_BUILD_ARCH ?= $(shell dpkg-architecture -qDEB_BUILD_ARCH)
ifeq ($(DEB_BUILD_ARCH),amd64)
JMODS_PATH = jmods/amd64:${JAVA_HOME}/jmods
@@ -24,15 +24,16 @@ override_dh_auto_clean:
override_dh_auto_build:
mkdir resources
ln -s ../common/org.cryptomator.Cryptomator512.png resources/cryptomator.png
# Remark: no compression is applied for improved build compression later (here deb)
$(JAVA_HOME)/bin/jlink \
--output runtime \
--module-path "${JMODS_PATH}" \
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.crypto.ec,jdk.security.auth,jdk.accessibility,jdk.management.jfr \
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.security.auth,jdk.accessibility,jdk.management.jfr,jdk.net,java.compiler \
--strip-native-commands \
--no-header-files \
--no-man-pages \
--strip-debug \
--compress=2
--compress zip-0
$(JAVA_HOME)/bin/jpackage \
--type app-image \
--runtime-image runtime \
@@ -43,20 +44,25 @@ override_dh_auto_build:
--name cryptomator \
--vendor "Skymatic GmbH" \
--java-options "--enable-preview" \
--java-options "--enable-native-access=org.cryptomator.jfuse.linux.amd64,org.cryptomator.jfuse.linux.aarch64" \
--copyright "(C) 2016 - 2023 Skymatic GmbH" \
--java-options "--enable-native-access=org.cryptomator.jfuse.linux.amd64,org.cryptomator.jfuse.linux.aarch64,org.purejava.appindicator" \
--copyright "(C) 2016 - 2025 Skymatic GmbH" \
--java-options "-Xss5m" \
--java-options "-Xmx256m" \
--java-options "-Dfile.encoding=\"utf-8\"" \
--java-options "-Dcryptomator.logDir=\"~/.local/share/Cryptomator/logs\"" \
--java-options "-Dcryptomator.pluginDir=\"~/.local/share/Cryptomator/plugins\"" \
--java-options "-Dcryptomator.settingsPath=\"~/.config/Cryptomator/settings.json:~/.Cryptomator/settings.json\"" \
--java-options "-Dcryptomator.p12Path=\"~/.config/Cryptomator/key.p12\"" \
--java-options "-Dcryptomator.ipcSocketPath=\"~/.config/Cryptomator/ipc.socket\"" \
--java-options "-Dcryptomator.mountPointsDir=\"~/.local/share/Cryptomator/mnt\"" \
--java-options "-Dcryptomator.showTrayIcon=false" \
--java-options "-Djava.net.useSystemProxies=true" \
--java-options "-Dcryptomator.logDir=\"@{userhome}/.local/share/Cryptomator/logs\"" \
--java-options "-Dcryptomator.pluginDir=\"@{userhome}/.local/share/Cryptomator/plugins\"" \
--java-options "-Dcryptomator.settingsPath=\"@{userhome}/.config/Cryptomator/settings.json:@{userhome}/.Cryptomator/settings.json\"" \
--java-options "-Dcryptomator.p12Path=\"@{userhome}/.config/Cryptomator/key.p12\"" \
--java-options "-Dcryptomator.ipcSocketPath=\"@{userhome}/.config/Cryptomator/ipc.socket\"" \
--java-options "-Dcryptomator.mountPointsDir=\"@{userhome}/.local/share/Cryptomator/mnt\"" \
--java-options "-Dcryptomator.showTrayIcon=true" \
--java-options "-Dcryptomator.integrationsLinux.trayIconsDir=\"/usr/share/icons/hicolor/symbolic/apps\"" \
--java-options "-Dcryptomator.buildNumber=\"deb-${REVISION_NUM}\"" \
--java-options "-Dcryptomator.appVersion=\"${SEMVER_STR}\"" \
--java-options "-Dcryptomator.disableUpdateCheck=\"${DISABLE_UPDATE_CHECK}\"" \
--java-options "-Dcryptomator.integrationsLinux.autoStartCmd=\"cryptomator\"" \
--java-options "-Dcryptomator.networking.truststore.p12Path=\"/etc/cryptomator/certs.p12\"" \
--app-version "${VERSION_NUM}.${REVISION_NUM}" \
--resource-dir resources \
--verbose

View File

@@ -1,14 +0,0 @@
java-options=-Xss5m \
-Xmx256m \
--enable-preview \
--enable-native-access=org.cryptomator.jfuse.linux.amd64,org.cryptomator.jfuse.linux.aarch64 \
-Dfile.encoding=\"utf-8\" \
-Dcryptomator.appVersion=\"${SEMVER_STR}\" \
-Dcryptomator.logDir=\"~/.local/share/Cryptomator/logs\" \
-Dcryptomator.pluginDir=\"~/.local/share/Cryptomator/plugins\" \
-Dcryptomator.settingsPath=\"~/.config/Cryptomator/settings.json:~/.Cryptomator/settings.json\" \
-Dcryptomator.ipcSocketPath=\"~/.config/Cryptomator/ipc.socket\" \
-Dcryptomator.mountPointsDir=\"~/.local/share/Cryptomator/mnt\" \
-Dcryptomator.showTrayIcon=false \
-Dcryptomator.buildNumber=\"appimage-${REVISION_NUM}\" \
-Djdk.gtk.version=2

1
dist/mac/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
embedded.provisionprofile

View File

@@ -2,6 +2,10 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.application-identifier</key>
<string>###APP_IDENTIFIER_PREFIX###org.cryptomator</string>
<key>com.apple.developer.team-identifier</key>
<string>###TEAM_IDENTIFIER###</string>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
@@ -10,5 +14,9 @@
<true/>
<key>com.apple.security.cs.disable-library-validation</key>
<true/>
<key>keychain-access-groups</key>
<array>
<string>###APP_IDENTIFIER_PREFIX###org.cryptomator</string>
</array>
</dict>
</plist>

View File

@@ -1,6 +1,9 @@
# created during build
# downloaded/created during build
Cryptomator.app/
runtime/
dmg/
*.dmg
license.rtf
license.rtf
openjfx-jmods.zip
*.jmod
Cryptomator.entitlements

84
dist/mac/dmg/build.sh vendored
View File

@@ -1,12 +1,15 @@
#!/bin/bash
# parse options
usage() { echo "Usage: $0 [-s <codesign-identity>]" 1>&2; exit 1; }
while getopts ":s:" o; do
usage() { echo "Usage: $0 [-s <codesign-identity>] [-t <team-identifier>]" 1>&2; exit 1; }
while getopts ":s:t:" o; do
case "${o}" in
s)
CODESIGN_IDENTITY=${OPTARG}
;;
t)
TEAM_IDENTIFIER=${OPTARG}
;;
*)
usage
;;
@@ -21,12 +24,25 @@ rm -rf runtime dmg *.app *.dmg
# set variables
APP_NAME="Cryptomator"
VENDOR="Skymatic GmbH"
COPYRIGHT_YEARS="2016 - 2023"
COPYRIGHT_YEARS="2016 - 2025"
PACKAGE_IDENTIFIER="org.cryptomator"
MAIN_JAR_GLOB="cryptomator-*.jar"
MODULE_AND_MAIN_CLASS="org.cryptomator.desktop/org.cryptomator.launcher.Cryptomator"
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'`
FUSE_LIB="FUSE-T"
JAVAFX_VERSION=23.0.1
JAVAFX_ARCH="undefined"
JAVAFX_JMODS_SHA256="undefined"
if [ "$(machine)" = "arm64e" ]; then
JAVAFX_ARCH="aarch64"
JAVAFX_JMODS_SHA256="a800724a1f3e6757ecfa0bd5bf7ed64d2e6a7a3f5b3522650a70b8cfc7782fb6"
else
JAVAFX_ARCH="x64"
JAVAFX_JMODS_SHA256="8857965975c464a0e5d57709292ce357d0ebb39f6168c41d5ca38301e42c3c8e"
fi
JAVAFX_JMODS_URL="https://download2.gluonhq.com/openjfx/${JAVAFX_VERSION}/openjfx-${JAVAFX_VERSION}_osx-${JAVAFX_ARCH}_bin-jmods.zip"
# check preconditions
if [ -z "${JAVA_HOME}" ]; then echo "JAVA_HOME not set. Run using JAVA_HOME=/path/to/jdk ./build.sh"; exit 1; fi
@@ -37,20 +53,38 @@ if [ -n "${CODESIGN_IDENTITY}" ]; then
if [[ ! `security find-identity -v -p codesigning | grep -w "${CODESIGN_IDENTITY}"` ]]; then echo "Given codesign identity is invalid."; exit 1; fi
fi
# download and check jmods
curl -L ${JAVAFX_JMODS_URL} -o openjfx-jmods.zip
echo "${JAVAFX_JMODS_SHA256} openjfx-jmods.zip" | shasum -a256 --check
mkdir -p openjfx-jmods/
unzip -jo openjfx-jmods.zip \*/javafx.base.jmod \*/javafx.controls.jmod \*/javafx.fxml.jmod \*/javafx.graphics.jmod -d openjfx-jmods
JMOD_VERSION=$(jmod describe openjfx-jmods/javafx.base.jmod | head -1)
JMOD_VERSION=${JMOD_VERSION#*@}
JMOD_VERSION=${JMOD_VERSION%%.*}
POM_JFX_VERSION=$(mvn -f../../../pom.xml help:evaluate "-Dexpression=javafx.version" -q -DforceStdout)
POM_JFX_VERSION=${POM_JFX_VERSION#*@}
POM_JFX_VERSION=${POM_JFX_VERSION%%.*}
if [ "${POM_JFX_VERSION}" -ne "${JMOD_VERSION}" ]; then
>&2 echo "Major JavaFX version in pom.xml (${POM_JFX_VERSION}) != jmod version (${JMOD_VERSION})"
exit 1
fi
# compile
mvn -B -f../../../pom.xml clean package -DskipTests -Pmac
mvn -B -Djavafx.platform=mac -f../../../pom.xml clean package -DskipTests -Pmac
cp ../../../LICENSE.txt ../../../target
cp ../../../target/${MAIN_JAR_GLOB} ../../../target/mods
# add runtime
${JAVA_HOME}/bin/jlink \
--output runtime \
--module-path "${JAVA_HOME}/jmods" \
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,jdk.unsupported,jdk.crypto.ec,jdk.accessibility,jdk.management.jfr \
--module-path "${JAVA_HOME}/jmods:openjfx-jmods" \
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,javafx.base,javafx.graphics,javafx.controls,javafx.fxml,jdk.unsupported,jdk.security.auth,jdk.accessibility,jdk.management.jfr,java.compiler \
--strip-native-commands \
--no-header-files \
--no-man-pages \
--strip-debug \
--compress=1
--compress zip-0
# create app dir
${JAVA_HOME}/bin/jpackage \
@@ -70,16 +104,17 @@ ${JAVA_HOME}/bin/jpackage \
--java-options "-Xss5m" \
--java-options "-Xmx256m" \
--java-options "-Dfile.encoding=\"utf-8\"" \
--java-options "-Djava.net.useSystemProxies=true" \
--java-options "-Dapple.awt.enableTemplateImages=true" \
--java-options "-Dsun.java2d.metal=true" \
--java-options "-Dcryptomator.appVersion=\"${VERSION_NO}\"" \
--java-options "-Dcryptomator.logDir=\"~/Library/Logs/${APP_NAME}\"" \
--java-options "-Dcryptomator.pluginDir=\"~/Library/Application Support/${APP_NAME}/Plugins\"" \
--java-options "-Dcryptomator.settingsPath=\"~/Library/Application Support/${APP_NAME}/settings.json\"" \
--java-options "-Dcryptomator.ipcSocketPath=\"~/Library/Application Support/${APP_NAME}/ipc.socket\"" \
--java-options "-Dcryptomator.p12Path=\"~/Library/Application Support/${APP_NAME}/key.p12\"" \
--java-options "-Dcryptomator.logDir=\"@{userhome}/Library/Logs/${APP_NAME}\"" \
--java-options "-Dcryptomator.pluginDir=\"@{userhome}/Library/Application Support/${APP_NAME}/Plugins\"" \
--java-options "-Dcryptomator.settingsPath=\"@{userhome}/Library/Application Support/${APP_NAME}/settings.json\"" \
--java-options "-Dcryptomator.ipcSocketPath=\"@{userhome}/Library/Application Support/${APP_NAME}/ipc.socket\"" \
--java-options "-Dcryptomator.p12Path=\"@{userhome}/Library/Application Support/${APP_NAME}/key.p12\"" \
--java-options "-Dcryptomator.integrationsMac.keychainServiceName=\"${APP_NAME}\"" \
--java-options "-Dcryptomator.mountPointsDir=\"~/${APP_NAME}\"" \
--java-options "-Dcryptomator.mountPointsDir=\"@{userhome}/Library/Application Support${APP_NAME}/mnt\"" \
--java-options "-Dcryptomator.showTrayIcon=true" \
--java-options "-Dcryptomator.buildNumber=\"dmg-${REVISION_NO}\"" \
--mac-package-identifier ${PACKAGE_IDENTIFIER} \
@@ -89,9 +124,10 @@ ${JAVA_HOME}/bin/jpackage \
cp ../resources/${APP_NAME}-Vault.icns ${APP_NAME}.app/Contents/Resources/
sed -i '' "s|###BUNDLE_SHORT_VERSION_STRING###|${VERSION_NO}|g" ${APP_NAME}.app/Contents/Info.plist
sed -i '' "s|###BUNDLE_VERSION###|${REVISION_NO}|g" ${APP_NAME}.app/Contents/Info.plist
cp ../embedded.provisionprofile ${APP_NAME}.app/Contents/
# generate license
mvn -B -f../../../pom.xml license:add-third-party \
mvn -B -Djavafx.platform=mac -f../../../pom.xml license:add-third-party \
-Dlicense.thirdPartyFilename=license.rtf \
-Dlicense.outputDirectory=dist/mac/dmg/resources \
-Dlicense.fileTemplate=resources/licenseTemplate.ftl \
@@ -101,7 +137,11 @@ mvn -B -f../../../pom.xml license:add-third-party \
-Dlicense.licenseMergesUrl=file://$(pwd)/../../../license/merges
# codesign
if [ -n "${CODESIGN_IDENTITY}" ]; then
if [ -n "${CODESIGN_IDENTITY}" ] && [ -n "${TEAM_IDENTIFIER}" ]; then
echo "Codesigning jdk files..."
find ${APP_NAME}.app/Contents/runtime/Contents/Home/lib/ -name '*.dylib' -exec codesign --force -s ${CODESIGN_IDENTITY} {} \;
find ${APP_NAME}.app/Contents/runtime/Contents/Home/lib/ -name 'jspawnhelper' -exec codesign --force -o runtime -s ${CODESIGN_IDENTITY} {} \;
echo "Codesigning jar contents..."
find ${APP_NAME}.app/Contents/runtime/Contents/MacOS -name '*.dylib' -exec codesign --force -s ${CODESIGN_IDENTITY} {} \;
for JAR_PATH in `find ${APP_NAME}.app -name "*.jar"`; do
if [[ `unzip -l ${JAR_PATH} | grep '.dylib\|.jnilib'` ]]; then
@@ -119,29 +159,31 @@ if [ -n "${CODESIGN_IDENTITY}" ]; then
fi
done
echo "Codesigning ${APP_NAME}.app..."
codesign --force --deep --entitlements ../${APP_NAME}.entitlements -o runtime -s ${CODESIGN_IDENTITY} ${APP_NAME}.app
cp ../${APP_NAME}.entitlements .
sed -i '' "s|###APP_IDENTIFIER_PREFIX###|${TEAM_IDENTIFIER}.|g" ${APP_NAME}.entitlements
sed -i '' "s|###TEAM_IDENTIFIER###|${TEAM_IDENTIFIER}|g" ${APP_NAME}.entitlements
codesign --force --deep --entitlements ${APP_NAME}.entitlements -o runtime -s ${CODESIGN_IDENTITY} ${APP_NAME}.app
fi
# prepare dmg contents
mkdir dmg
mv ${APP_NAME}.app dmg
cp resources/macFUSE.webloc dmg
cp resources/${FUSE_LIB}.webloc dmg
# create dmg
create-dmg \
--volname ${APP_NAME} \
--volicon "resources/${APP_NAME}-Volume.icns" \
--background "resources/${APP_NAME}-background.tiff" \
--background "resources/${APP_NAME}-${FUSE_LIB}-background.tiff" \
--window-pos 400 100 \
--window-size 640 694 \
--icon-size 128 \
--icon "${APP_NAME}.app" 128 245 \
--hide-extension "${APP_NAME}.app" \
--icon "macFUSE.webloc" 320 501 \
--hide-extension "macFUSE.webloc" \
--icon "${FUSE_LIB}.webloc" 320 501 \
--hide-extension "${FUSE_LIB}.webloc" \
--app-drop-link 512 245 \
--eula "resources/license.rtf" \
--icon ".background" 128 758 \
--icon ".fseventsd" 320 758 \
--icon ".VolumeIcon.icns" 512 758 \
${APP_NAME}-${VERSION_NO}.dmg dmg

Binary file not shown.

8
dist/mac/dmg/resources/FUSE-T.webloc vendored Normal file
View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>URL</key>
<string>https://www.fuse-t.org/</string>
</dict>
</plist>

View File

@@ -17,7 +17,7 @@
\f1\b0 \
\
\f0\b \'a9 2016 \'96 2023 Skymatic GmbH
\f0\b \'a9 2016 \'96 2025 Skymatic GmbH
\f1\b0 \
\
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\

Binary file not shown.

View File

@@ -3,7 +3,7 @@
<plist version="1.0">
<dict>
<key>LSMinimumSystemVersion</key>
<string>10.13.0</string>
<string>11</string>
<key>CFBundleDevelopmentRegion</key>
<string>English</string>
<key>CFBundleAllowMixedLocalizations</key>

3
dist/win/.gitignore vendored
View File

@@ -4,4 +4,7 @@ installer
*.wixobj
*.pdb
*.msi
*.exe
*.jmod
resources/jfxJmods.zip
license.rtf

2
dist/win/build.bat vendored
View File

@@ -11,7 +11,7 @@ SET HELP_URL="https://cryptomator.org/contact/"
SET MODULE_AND_MAIN_CLASS="org.cryptomator.desktop/org.cryptomator.launcher.Cryptomator"
SET LOOPBACK_ALIAS="cryptomator-vault"
powershell -NoLogo -ExecutionPolicy Unrestricted -Command .\build.ps1^
pwsh -NoLogo -NoProfile -ExecutionPolicy Unrestricted -Command .\build.ps1^
-AppName %APPNAME%^
-MainJarGlob "%MAIN_JAR_GLOB%"^
-ModuleAndMainClass "%MODULE_AND_MAIN_CLASS%"^

71
dist/win/build.ps1 vendored
View File

@@ -12,6 +12,9 @@ Param(
[bool] $clean
)
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$ProgressPreference = 'SilentlyContinue' # disables Invoke-WebRequest's progress bar, which slows down downloads to a few bytes/s
# check preconditions
if ((Get-Command "git" -ErrorAction SilentlyContinue) -eq $null)
{
@@ -26,7 +29,7 @@ if ((Get-Command "mvn" -ErrorAction SilentlyContinue) -eq $null)
$buildDir = Split-Path -Parent $PSCommandPath
$version = $(mvn -f $buildDir/../../pom.xml help:evaluate -Dexpression="project.version" -q -DforceStdout)
$semVerNo = $version -replace '(\d\.\d\.\d).*','$1'
$semVerNo = $version -replace '(\d+\.\d+\.\d+).*','$1'
$revisionNo = $(git rev-list --count HEAD)
Write-Output "`$version=$version"
@@ -38,7 +41,7 @@ Write-Output "`$Env:JAVA_HOME=$Env:JAVA_HOME"
$copyright = "(C) $CopyrightStartYear - $((Get-Date).Year) $Vendor"
# compile
&mvn -B -f $buildDir/../../pom.xml clean package -DskipTests -Pwin
&mvn -B -f $buildDir/../../pom.xml clean package -DskipTests -Pwin "-Djavafx.platform=win"
Copy-Item "$buildDir\..\..\target\$MainJarGlob.jar" -Destination "$buildDir\..\..\target\mods"
# add runtime
@@ -47,16 +50,37 @@ if ($clean -and (Test-Path -Path $runtimeImagePath)) {
Remove-Item -Path $runtimeImagePath -Force -Recurse
}
## download jfx jmods
$javaFxVersion='23.0.1'
$javaFxJmodsUrl = "https://download2.gluonhq.com/openjfx/${javaFxVersion}/openjfx-${javaFxVersion}_windows-x64_bin-jmods.zip"
$javaFxJmodsSHA256 = 'ee176dcee3bd78bde7910735bd67f67c792882f5b89626796ae06f7a1c0119d3'
$javaFxJmods = '.\resources\jfxJmods.zip'
if( !(Test-Path -Path $javaFxJmods) ) {
Write-Output "Downloading ${javaFxJmodsUrl}..."
Invoke-WebRequest $javaFxJmodsUrl -OutFile $javaFxJmods # redirects are followed by default
}
$jmodsChecksumActual = $(Get-FileHash -Path $javaFxJmods -Algorithm SHA256).Hash.ToLower()
if( $jmodsChecksumActual -ne $javaFxJmodsSHA256 ) {
Write-Error "Checksum mismatch for jfxJmods.zip. Expected: $javaFxJmodsSHA256
, actual: $jmodsChecksumActual"
exit 1;
}
Expand-Archive -Path $javaFxJmods -Force -DestinationPath ".\resources\"
Remove-Item -Recurse -Force -Path ".\resources\javafx-jmods" -ErrorAction Ignore
Move-Item -Force -Path ".\resources\javafx-jmods-*" -Destination ".\resources\javafx-jmods" -ErrorAction Stop
## create custom runtime
& "$Env:JAVA_HOME\bin\jlink" `
--verbose `
--output runtime `
--module-path "$Env:JAVA_HOME/jmods" `
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,jdk.unsupported,jdk.crypto.ec,jdk.accessibility,jdk.management.jfr `
--module-path "$Env:JAVA_HOME/jmods;$buildDir/resources/javafx-jmods" `
--add-modules java.base,java.desktop,java.instrument,java.logging,java.naming,java.net.http,java.scripting,java.sql,java.xml,jdk.unsupported,jdk.accessibility,jdk.management.jfr,jdk.crypto.mscapi,java.compiler,javafx.base,javafx.graphics,javafx.controls,javafx.fxml `
--strip-native-commands `
--no-header-files `
--no-man-pages `
--strip-debug `
--compress=1
--compress "zip-0" #do not compress to have improved msi compression
$appPath = ".\$AppName"
if ($clean -and (Test-Path -Path $appPath)) {
@@ -76,28 +100,29 @@ if ($clean -and (Test-Path -Path $appPath)) {
--vendor $Vendor `
--copyright $copyright `
--java-options "--enable-preview" `
--java-options "--enable-native-access=org.cryptomator.jfuse.win" `
--java-options "--enable-native-access=org.cryptomator.jfuse.win,org.cryptomator.integrations.win" `
--java-options "-Xss5m" `
--java-options "-Xmx256m" `
--java-options "-Dcryptomator.appVersion=`"$semVerNo`"" `
--app-version "$semVerNo.$revisionNo" `
--java-options "-Dfile.encoding=`"utf-8`"" `
--java-options "-Dcryptomator.logDir=`"~/AppData/Roaming/$AppName`"" `
--java-options "-Dcryptomator.pluginDir=`"~/AppData/Roaming/$AppName/Plugins`"" `
--java-options "-Dcryptomator.settingsPath=`"~/AppData/Roaming/$AppName/settings.json`"" `
--java-options "-Dcryptomator.ipcSocketPath=`"~/AppData/Roaming/$AppName/ipc.socket`"" `
--java-options "-Dcryptomator.p12Path=`"~/AppData/Roaming/$AppName/key.p12`"" `
--java-options "-Dcryptomator.mountPointsDir=`"~/$AppName`"" `
--java-options "-Djava.net.useSystemProxies=true" `
--java-options "-Dcryptomator.logDir=`"@{localappdata}/$AppName`"" `
--java-options "-Dcryptomator.pluginDir=`"@{appdata}/$AppName/Plugins`"" `
--java-options "-Dcryptomator.settingsPath=`"@{appdata}/$AppName/settings.json;@{userhome}/AppData/Roaming/$AppName/settings.json`"" `
--java-options "-Dcryptomator.ipcSocketPath=`"@{localappdata}/$AppName/ipc.socket`"" `
--java-options "-Dcryptomator.p12Path=`"@{appdata}/$AppName/key.p12;@{userhome}/AppData/Roaming/$AppName/key.p12`"" `
--java-options "-Dcryptomator.mountPointsDir=`"@{userhome}/$AppName`"" `
--java-options "-Dcryptomator.loopbackAlias=`"$LoopbackAlias`"" `
--java-options "-Dcryptomator.integrationsWin.autoStartShellLinkName=`"$AppName`"" `
--java-options "-Dcryptomator.integrationsWin.keychainPaths=`"~/AppData/Roaming/$AppName/keychain.json`"" `
--java-options "-Dcryptomator.integrationsWin.keychainPaths=`"@{appdata}/$AppName/keychain.json;@{userhome}/AppData/Roaming/$AppName/keychain.json`"" `
--java-options "-Dcryptomator.showTrayIcon=true" `
--java-options "-Dcryptomator.buildNumber=`"msi-$revisionNo`"" `
--resource-dir resources `
--icon resources/$AppName.ico
#Create RTF license for msi
&mvn -B -f $buildDir/../../pom.xml license:add-third-party `
&mvn -B -f $buildDir/../../pom.xml license:add-third-party "-Djavafx.platform=win" `
"-Dlicense.thirdPartyFilename=license.rtf" `
"-Dlicense.fileTemplate=$buildDir\resources\licenseTemplate.ftl" `
"-Dlicense.outputDirectory=$buildDir\resources\" `
@@ -120,6 +145,7 @@ try {
# create .msi
$Env:JP_WIXWIZARD_RESOURCES = "$buildDir\resources"
$Env:JP_WIXHELPER_DIR = "."
& "$Env:JAVA_HOME\bin\jpackage" `
--verbose `
--type msi `
@@ -129,7 +155,7 @@ $Env:JP_WIXWIZARD_RESOURCES = "$buildDir\resources"
--name $AppName `
--vendor $Vendor `
--copyright $copyright `
--app-version "$semVerNo" `
--app-version "$semVerNo.$revisionNo" `
--win-menu `
--win-dir-chooser `
--win-shortcut-prompt `
@@ -141,7 +167,7 @@ $Env:JP_WIXWIZARD_RESOURCES = "$buildDir\resources"
--file-associations resources/FAvaultFile.properties
#Create RTF license for bundle
&mvn -B -f $buildDir/../../pom.xml license:add-third-party `
&mvn -B -f $buildDir/../../pom.xml license:add-third-party "-Djavafx.platform=win" `
"-Dlicense.thirdPartyFilename=license.rtf" `
"-Dlicense.fileTemplate=$buildDir\bundle\resources\licenseTemplate.ftl" `
"-Dlicense.outputDirectory=$buildDir\bundle\resources\" `
@@ -151,21 +177,24 @@ $Env:JP_WIXWIZARD_RESOURCES = "$buildDir\resources"
"-Dlicense.licenseMergesUrl=file:///$buildDir/../../license/merges"
# download Winfsp
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$ProgressPreference = 'SilentlyContinue' # disables Invoke-WebRequest's progress bar, which slows down downloads to a few bytes/s
$winfspMsiUrl= (Select-String -Path ".\bundle\resources\winfsp-download.url" -Pattern 'https:.*').Matches.Value
$winfspMsiUrl= 'https://github.com/winfsp/winfsp/releases/download/v2.0/winfsp-2.0.23075.msi'
Write-Output "Downloading ${winfspMsiUrl}..."
Invoke-WebRequest $winfspMsiUrl -OutFile ".\bundle\resources\winfsp.msi" # redirects are followed by default
# download legacy-winfsp uninstaller
$winfspUninstaller= 'https://github.com/cryptomator/winfsp-uninstaller/releases/latest/download/winfsp-uninstaller.exe'
Write-Output "Downloading ${winfspUninstaller}..."
Invoke-WebRequest $winfspUninstaller -OutFile ".\bundle\resources\winfsp-uninstaller.exe" # redirects are followed by default
# copy MSI to bundle resources
Copy-Item ".\installer\$AppName-*.msi" -Destination ".\bundle\resources\$AppName.msi"
# create bundle including winfsp
& "$env:WIX\bin\candle.exe" .\bundle\bundleWithWinfsp.wxs -ext WixBalExtension -out bundle\ `
& "$env:WIX\bin\candle.exe" .\bundle\bundleWithWinfsp.wxs -ext WixBalExtension -ext WixUtilextension -out bundle\ `
-dBundleVersion="$semVerNo.$revisionNo" `
-dBundleVendor="$Vendor" `
-dBundleCopyright="$copyright" `
-dAboutUrl="$AboutUrl" `
-dHelpUrl="$HelpUrl" `
-dUpdateUrl="$UpdateUrl"
& "$env:WIX\bin\light.exe" -b . .\bundle\BundlewithWinfsp.wixobj -ext WixBalExtension -out installer\$AppName-Installer.exe
& "$env:WIX\bin\light.exe" -b . .\bundle\BundlewithWinfsp.wixobj -ext WixBalExtension -ext WixUtilextension -out installer\$AppName-Installer.exe

View File

@@ -1,13 +1,21 @@
<?xml version="1.0"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension">
<!-- For Built in variables, see https://wixtoolset.org/docs/tools/burn/builtin-variables/-->
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<!-- see https://wixtoolset.org/documentation/manual/v3/xsd/wix/bundle.html-->
<!-- Attributes explicitly not used:
Condition - the single msi files have their own install conditions, no need to copy them here
-->
<Bundle Name="Cryptomator" UpgradeCode="29eea626-2e5b-4449-b5f8-4602925ddf7b" Version="$(var.BundleVersion)" Manufacturer="$(var.BundleVendor)"
AboutUrl="$(var.AboutUrl)" HelpUrl="$(var.HelpUrl)" UpdateUrl="$(var.UpdateUrl)" Copyright="$(var.BundleCopyright)" IconSourceFile="bundle\resources\Cryptomator.ico">
<!-- detect outdated WinFsp installations -->
<util:ProductSearch
Variable="InstalledLegacyWinFspVersion"
Result="version"
UpgradeCode="82F812D9-4083-4EF1-8BC8-0F1EDA05B46B"/>
<!-- for definition of the standard themes, see https://github.com/wixtoolset/wix3/blob/master/src/ext/BalExtension/wixstdba/Resources/-->
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLargeLicense">
<!-- see https://wixtoolset.org/documentation/manual/v3/xsd/bal/wixstandardbootstrapperapplication.html -->
@@ -18,26 +26,41 @@
SuppressOptionsUI="yes"
ThemeFile="bundle\customBootstrapperTheme.xml"
LocalizationFile="bundle\customBootstrapperTheme.wxl"
LogoFile="bundle\resources\logo.png"
/>
LogoFile="bundle\resources\logo.png"/>
<Payload SourceFile="bundle\resources\logoSide.png" />
</BootstrapperApplicationRef>
<Chain>
<ExePackage Cache="yes" PerMachine="yes" Permanent="no"
SourceFile="resources\winfsp-uninstaller.exe"
DisplayName="Removing outdated WinFsp Driver"
Description="Executable to remove old winfsp"
DetectCondition="false"
InstallCondition="(InstalledLegacyWinFspVersion &lt;&gt; v0.0.0.0) AND ((WixBundleAction = 7) OR (WixBundleAction = 5))">
<CommandLine Condition="WixBundleUILevel &lt;= 3" InstallArgument="-q -l &quot;[WixBundleLog].winfsp-uninstaller.log&quot;" RepairArgument="-q" UninstallArgument="-s" />
<!-- XML allows line breaks in attributes, hence keep the line breaks here -->
<CommandLine Condition="WixBundleUILevel &gt; 3" InstallArgument="-l &quot;[WixBundleLog].winfsp-uninstaller.log&quot; -t &quot;Cryptomator Installer&quot; -m &quot;Cryptomator requires a newer version of the WinFsp driver. The installer will now uninstall WinFsp, possibly reboot, and afterwards proceed with the installation.
Do you want to continue?&quot;" RepairArgument="-q" UninstallArgument="-s" />
<ExitCode Behavior="success" Value="0"/>
<ExitCode Behavior="success" Value="1"/>
<ExitCode Behavior="error" Value="2"/>
<ExitCode Behavior="error" Value="3"/>
<ExitCode Behavior="forceReboot" Value="4"/>
<ExitCode Behavior="success" Value="5"/>
</ExePackage>
<!-- see https://wixtoolset.org/documentation/manual/v3/xsd/wix/msipackage.html-->
<MsiPackage
SourceFile="resources\Cryptomator.msi"
CacheId="cryptomator-bundle-cryptomator"
DisplayInternalUI="no"
Visible="no"
/>
Visible="no"/>
<MsiPackage
SourceFile="resources\winfsp.msi"
CacheId="cryptomator-bundle-winfsp"
Visible="yes"
DisplayInternalUI="no"
Vital="no"
Permanent="yes"
/>
Permanent="yes"/>
</Chain>
</Bundle>
</Wix>

View File

@@ -10,6 +10,7 @@
<Font Id="2" Height="-22" Weight="500" Foreground="666666">Segoe UI</Font>
<Font Id="3" Height="-12" Weight="500" Foreground="000000" Background="FFFFFF">Segoe UI</Font>
<Font Id="4" Height="-12" Weight="500" Foreground="ff0000" Background="FFFFFF" Underline="yes">Segoe UI</Font>
<Font Id="5" Height="-12" Weight="700" Foreground="000000" Background="FFFFFF">Segoe UI</Font>
<Image X="11" Y="11" Width="64" Height="64" ImageFile="logo.png" />
<Text X="80" Y="11" Width="-11" Height="64" FontId="1" DisablePrefix="yes">#(loc.Title)</Text>
@@ -82,7 +83,7 @@
<Text Name="FailureUninstallHeader" X="185" Y="50" Width="-11" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureUninstallHeader)</Text>
<Text Name="FailureRepairHeader" X="185" Y="50" Width="-11" Height="30" FontId="2" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureRepairHeader)</Text>
<Hypertext Name="FailureLogFileLink" X="185" Y="121" Width="-11" Height="68" FontId="3" TabStop="yes" HideWhenDisabled="yes">#(loc.FailureHyperlinkLogText)</Hypertext>
<Hypertext Name="FailureMessageText" X="185" Y="-115" Width="-11" Height="80" FontId="3" TabStop="yes" HideWhenDisabled="yes" />
<Hypertext Name="FailureMessageText" X="185" Y="-80" Width="-11" Height="140" FontId="5" TabStop="yes" HideWhenDisabled="yes" />
<Text Name="FailureRestartText" X="185" Y="-57" Width="-11" Height="80" FontId="3" HideWhenDisabled="yes" DisablePrefix="yes">#(loc.FailureRestartText)</Text>
<Button Name="FailureRestartButton" X="-91" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0" HideWhenDisabled="yes">#(loc.FailureRestartButton)</Button>
<Button Name="FailureCloseButton" X="-11" Y="-11" Width="75" Height="23" TabStop="yes" FontId="0">#(loc.FailureCloseButton)</Button>

View File

@@ -10,7 +10,7 @@
\vieww12000\viewh15840\viewkind0
\pard\tx283\tx567\tx850\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\b\fs16\lang7 Cryptomator is distributed under the GPLv3 License, found below. Please see the bottom of this document for any other license applicable to code used within Cryptomator.\b0\par
\par
\b\'a9 2016 \'96 2023 Skymatic GmbH \b0\par
\b\'a9 2016 \'96 2025 Skymatic GmbH \b0\par
\par
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\par
\par

View File

@@ -1,2 +0,0 @@
[InternetShortcut]
URL=https://github.com/winfsp/winfsp/releases/download/v1.12/winfsp-1.12.22301.msi

Binary file not shown.

View File

@@ -3,5 +3,5 @@
::REPLACE ME
cd %~dp0
powershell -NoLogo -NonInteractive -ExecutionPolicy Unrestricted -Command .\patchWebDAV.ps1^
powershell -NoLogo -NoProfile -NonInteractive -ExecutionPolicy RemoteSigned -Command .\patchWebDAV.ps1^
-LoopbackAlias %LOOPBACK_ALIAS%

View File

@@ -1,5 +0,0 @@
@echo off
:: see comments in file ./version170-migrate-settings.ps1
cd %~dp0
powershell -NoLogo -NonInteractive -ExecutionPolicy Unrestricted -Command .\version170-migrate-settings.ps1

View File

@@ -1,45 +0,0 @@
# This script migrates Cryptomator settings for all local users on Windows in case the users uses custom directories as mountpoint
# See also https://github.com/cryptomator/cryptomator/pull/2654.
#
# TODO: This script should be evaluated in a yearly interval if it is still needed and if not, should be removed
#
#Requires -RunAsAdministrator
#Get all active, local user profiles
$profileList = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList'
$localUsers = Get-LocalUser | Where-Object {$_.Enabled} | ForEach-Object { $_.Name}
Get-ChildItem $profileList | ForEach-Object { $_.GetValue("ProfileImagePath") } | Where-Object {
$profileNameMatches = ($_ | Select-String -Pattern "\\([^\\]+)$").Matches
if($profileNameMatches.Count -eq 1) {
#check if the last path part is contained in the local user name list
#otherwise do not touch it
return $localUsers.Contains($profileNameMatches[0].Groups[1].Value)
} else {
return $false;
}
} | ForEach-Object {
$settingsPath = "$_\AppData\Roaming\Cryptomator\settings.json"
if(!(Test-Path -Path $settingsPath -PathType Leaf)) {
#No settings file, nothing to do.
return;
}
$settings = Get-Content -Path $settingsPath | ConvertFrom-Json
if($settings.preferredVolumeImpl -ne "FUSE") {
#Fuse not used, nothing to do
return;
}
#check if customMountPoints are used
$atLeastOneCustomPath = $false;
foreach ($vault in $settings.directories){
$atLeastOneCustomPath = $atLeastOneCustomPath -or ($vault.useCustomMountPath -eq "True")
}
#if so, use WinFsp Local Drive
if( $atLeastOneCustomPath ) {
Add-Member -Force -InputObject $settings -Name "mountService" -Value "org.cryptomator.frontend.fuse.mount.WinFspMountProvider" -MemberType NoteProperty
$newSettings = $settings | Select-Object * -ExcludeProperty "preferredVolumeImpl"
ConvertTo-Json $newSettings | Set-Content -Path $settingsPath
}
}

View File

@@ -10,7 +10,7 @@
\vieww12000\viewh15840\viewkind0
\pard\tx283\tx567\tx850\tx2267\tx2834\tx3401\tx3968\tx4535\tx5102\tx5669\tx6236\tx6803\b\fs16\lang7 Cryptomator is distributed under the GPLv3 License, found below. Please see the bottom of this document for any other license applicable to code used within Cryptomator.\b0\par
\par
\b\'a9 2016 \'96 2023 Skymatic GmbH \b0\par
\b\'a9 2016 \'96 2025 Skymatic GmbH \b0\par
\par
This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.\par
\par

View File

@@ -54,7 +54,7 @@
Property="JP_UPGRADABLE_FOUND"
Maximum="$(var.JpAppVersion)"
MigrateFeatures="yes"
IncludeMaximum="$(var.JpUpgradeVersionOnlyDetectUpgrade)" />
IncludeMaximum="yes" /> <!-- TODO: check if this needs to be set to yes-->
<UpgradeVersion
OnlyDetect="$(var.JpUpgradeVersionOnlyDetectDowngrade)"
Property="JP_DOWNGRADABLE_FOUND"
@@ -70,6 +70,9 @@
<CustomAction Id="JpDisallowDowngrade" Error="!(loc.DowngradeErrorMessage)" />
<?endif?>
<Binary Id="JpCaDll" SourceFile="$(env.JP_WIXHELPER_DIR)\wixhelper.dll"/>
<CustomAction Id="JpFindRelatedProducts" BinaryKey="JpCaDll" DllEntry="FindRelatedProductsEx" />
<?ifndef SkipCryptomatorLegacyCheck ?>
<!-- Block installation if innosetup entry of Cryptomator is found -->
<Property Id="OLDEXEINSTALLER">
@@ -129,11 +132,12 @@
<CustomAction Id="JpSetARPURLUPDATEINFO" Property="ARPURLUPDATEINFO" Value="$(var.JpUpdateURL)" />
<?endif?>
<Property Id="WixQuietExec64CmdTimeout" Value="20" />
<!-- Note for custom actions: Immediate CAs run BEFORE the files are installed, hence if you depend on installed files, the CAs must be deferred.-->
<!-- WebDAV patches -->
<CustomAction Id="PatchWebDAV" Impersonate="no" ExeCommand="[INSTALLDIR]patchWebDAV.bat" Directory="INSTALLDIR" Execute="deferred" Return="asyncWait" />
<!-- Special Settings migration for 1.7.0,. Should be removed eventually, for more info, see ../contrib/version170-migrate-settings.ps1-->
<CustomAction Id="V170MigrateSettings" Impersonate="no" ExeCommand="[INSTALLDIR]version170-migrate-settings.bat" Directory="INSTALLDIR" Execute="deferred" Return="asyncWait" />
<SetProperty Id="PatchWebDAV" Value="&quot;[INSTALLDIR]patchWebDAV.bat&quot;"
Sequence="execute" Before="PatchWebDAV" />
<CustomAction Id="PatchWebDAV" BinaryKey="WixCA" DllEntry="WixQuietExec64" Execute="deferred" Return="ignore" Impersonate="no"/>
<!-- Running App detection and exit -->
<Property Id="FOUNDRUNNINGAPP" Admin="yes"/>
@@ -143,11 +147,11 @@
CloseMessage="no"
RebootPrompt="no"
PromptToContinue="yes"
Description="A running instance of $(var.JpAppName) is found. Please close it to continue."
Description="A running instance of $(var.JpAppName) is found, using files marked for update. Please close it to continue."
Property="FOUNDRUNNINGAPP"
>
</util:CloseApplication>
<CustomAction Id="FailOnRunningApp" Impersonate="no" ExeCommand="[SystemFolder]\cmd.exe /c &quot;exit 1&quot;" Directory="INSTALLDIR" Execute="immediate" Return="check" />
<CustomAction Id="FailOnRunningApp" Error="Installation aborted, because files marked for update are used by a running instance of $(var.JpAppName)."/>
<?ifdef JpIcon ?>
<Property Id="ARPPRODUCTICON" Value="JpARPPRODUCTICON"/>
@@ -172,22 +176,26 @@
<?endif?>
<?ifndef JpAllowUpgrades ?>
<Custom Action="JpDisallowUpgrade" After="FindRelatedProducts">JP_UPGRADABLE_FOUND</Custom>
<Custom Action="JpDisallowUpgrade" After="JpFindRelatedProducts">JP_UPGRADABLE_FOUND</Custom>
<?endif?>
<?ifndef JpAllowDowngrades ?>
<Custom Action="JpDisallowDowngrade" After="FindRelatedProducts">JP_DOWNGRADABLE_FOUND</Custom>
<Custom Action="JpDisallowDowngrade" After="JpFindRelatedProducts">JP_DOWNGRADABLE_FOUND</Custom>
<?endif?>
<Custom Action="JpFindRelatedProducts" After="FindRelatedProducts"/>
<!-- Check and fail if Cryptomator is running -->
<Custom Action="WixCloseApplications" Before="InstallValidate"></Custom>
<Custom Action="FailOnRunningApp" After="WixCloseApplications" >FOUNDRUNNINGAPP</Custom>
<RemoveExistingProducts After="InstallValidate"/>
<RemoveExistingProducts After="InstallValidate"/> <!-- Moved from CostInitialize, due to WixCloseApplications -->
<Custom Action="PatchWebDAV" After="InstallFiles">NOT Installed OR REINSTALL</Custom>
<Custom Action="V170MigrateSettings" After="InstallFiles">NOT Installed OR REINSTALL</Custom>
</InstallExecuteSequence>
<InstallUISequence>
<Custom Action="JpFindRelatedProducts" After="FindRelatedProducts"/>
</InstallUISequence>
<WixVariable Id="WixUIBannerBmp" Value="$(env.JP_WIXWIZARD_RESOURCES)\banner.bmp" />
<WixVariable Id="WixUIDialogBmp" Value="$(env.JP_WIXWIZARD_RESOURCES)\background.bmp" />
</Product>

213
pom.xml
View File

@@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.cryptomator</groupId>
<artifactId>cryptomator</artifactId>
<version>1.7.0-SNAPSHOT</version>
<version>1.16.0-SNAPSHOT</version>
<name>Cryptomator Desktop App</name>
<organization>
@@ -17,59 +17,70 @@
<email>sebastian.stenzel@gmail.com</email>
<timezone>+1</timezone>
</developer>
<developer>
<name>Armin Schrenk</name>
<email>armin.schrenk+dev@mailbox.org</email>
<timezone>+1</timezone>
</developer>
</developers>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.jdk.version>19</project.jdk.version>
<project.jdk.version>23</project.jdk.version>
<!-- Group IDs of jars that need to stay on the class path for now -->
<!-- Once hypfvieh, swiesend, purejava and integrations-linux have module-info, remove them-->
<nonModularGroupIds>org.ow2.asm,org.apache.jackrabbit,org.apache.httpcomponents,de.swiesend,org.purejava,com.github.hypfvieh</nonModularGroupIds>
<!-- remove them, as soon they got modularized or support is dropped (i.e., WebDAV) -->
<nonModularGroupIds>org.ow2.asm,org.apache.jackrabbit,org.apache.httpcomponents</nonModularGroupIds>
<!-- cryptomator dependencies -->
<cryptomator.cryptolib.version>2.1.1</cryptomator.cryptolib.version>
<cryptomator.cryptofs.version>2.6.1</cryptomator.cryptofs.version>
<cryptomator.integrations.version>1.2.0-beta4</cryptomator.integrations.version>
<cryptomator.integrations.win.version>1.2.0-beta2</cryptomator.integrations.win.version>
<cryptomator.integrations.mac.version>1.2.0-beta2</cryptomator.integrations.mac.version>
<cryptomator.integrations.linux.version>1.2.0-beta1</cryptomator.integrations.linux.version>
<cryptomator.fuse.version>2.0.0-beta5</cryptomator.fuse.version>
<cryptomator.dokany.version>2.0.0-beta2</cryptomator.dokany.version>
<cryptomator.webdav.version>2.0.0-beta4</cryptomator.webdav.version>
<cryptomator.cryptofs.version>2.8.0</cryptomator.cryptofs.version>
<cryptomator.integrations.version>1.5.0</cryptomator.integrations.version>
<cryptomator.integrations.win.version>1.3.0</cryptomator.integrations.win.version>
<cryptomator.integrations.mac.version>1.2.4</cryptomator.integrations.mac.version>
<cryptomator.integrations.linux.version>1.5.2</cryptomator.integrations.linux.version>
<cryptomator.fuse.version>5.0.2</cryptomator.fuse.version>
<cryptomator.webdav.version>2.0.7</cryptomator.webdav.version>
<!-- 3rd party dependencies -->
<commons-lang3.version>3.12.0</commons-lang3.version>
<dagger.version>2.44</dagger.version>
<commons-lang3.version>3.17.0</commons-lang3.version>
<dagger.version>2.55</dagger.version>
<easybind.version>2.2</easybind.version>
<guava.version>31.1-jre</guava.version>
<gson.version>2.9.1</gson.version>
<javafx.version>19</javafx.version>
<jwt.version>4.2.1</jwt.version>
<nimbus-jose.version>9.25.4</nimbus-jose.version>
<logback.version>1.4.4</logback.version>
<slf4j.version>2.0.3</slf4j.version>
<tinyoauth2.version>0.5.1</tinyoauth2.version>
<zxcvbn.version>1.7.0</zxcvbn.version>
<jackson.version>2.18.2</jackson.version>
<javafx.version>23.0.1</javafx.version>
<jwt.version>4.4.0</jwt.version>
<nimbus-jose.version>9.37.3</nimbus-jose.version>
<logback.version>1.5.16</logback.version>
<slf4j.version>2.0.16</slf4j.version>
<tinyoauth2.version>0.8.0</tinyoauth2.version>
<zxcvbn.version>1.9.0</zxcvbn.version>
<!-- test dependencies -->
<junit.jupiter.version>5.9.1</junit.jupiter.version>
<mockito.version>4.8.0</mockito.version>
<hamcrest.version>2.2</hamcrest.version>
<junit.jupiter.version>5.11.4</junit.jupiter.version>
<mockito.version>5.15.2</mockito.version>
<hamcrest.version>3.0</hamcrest.version>
<!-- build-time dependencies -->
<jetbrains.annotations.version>23.0.0</jetbrains.annotations.version>
<dependency-check.version>7.4.4</dependency-check.version>
<jacoco.version>0.8.8</jacoco.version>
<jetbrains.annotations.version>26.0.1</jetbrains.annotations.version>
<dependency-check.version>12.0.1</dependency-check.version>
<jacoco.version>0.8.12</jacoco.version>
<license-generator.version>2.5.0</license-generator.version>
<junit-tree-reporter.version>1.4.0</junit-tree-reporter.version>
<mvn-compiler.version>3.13.0</mvn-compiler.version>
<mvn-resources.version>3.3.1</mvn-resources.version>
<mvn-dependency.version>3.8.1</mvn-dependency.version>
<mvn-surefire.version>3.5.2</mvn-surefire.version>
<mvn-jar.version>3.4.2</mvn-jar.version>
<!-- Property used by surefire to determine jacoco engine -->
<surefire.jacoco.args></surefire.jacoco.args>
</properties>
<dependencies>
<!-- Cryptomator Libs -->
<dependency>
<!-- needed due to https://github.com/cryptomator/cryptolib/issues/34-->
<groupId>org.cryptomator</groupId>
<artifactId>cryptolib</artifactId>
<version>${cryptomator.cryptolib.version}</version>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>org.cryptomator</groupId>
@@ -81,11 +92,6 @@
<artifactId>fuse-nio-adapter</artifactId>
<version>${cryptomator.fuse.version}</version>
</dependency>
<dependency>
<groupId>org.cryptomator</groupId>
<artifactId>dokany-nio-adapter</artifactId>
<version>${cryptomator.dokany.version}</version>
</dependency>
<dependency>
<groupId>org.cryptomator</groupId>
<artifactId>webdav-nio-adapter</artifactId>
@@ -160,6 +166,18 @@
<version>${nimbus-jose.version}</version>
</dependency>
<!-- Jackson -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.datatype</groupId>
<artifactId>jackson-datatype-jsr310</artifactId>
<version>${jackson.version}</version>
</dependency>
<!-- EasyBind -->
<dependency>
<groupId>com.tobiasdiez</groupId>
@@ -175,45 +193,23 @@
</dependency>
<!-- Google -->
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>${guava.version}</version>
<exclusions>
<!-- see https://github.com/google/guava/wiki/UseGuavaInYourBuild#what-about-guavas-own-dependencies -->
<exclusion>
<groupId>com.google.guava</groupId>
<artifactId>listenablefuture</artifactId>
</exclusion>
<exclusion>
<groupId>com.google.code.findbugs</groupId>
<artifactId>jsr305</artifactId>
</exclusion>
<exclusion>
<groupId>org.checkerframework</groupId>
<artifactId>checker-qual</artifactId>
</exclusion>
<exclusion>
<groupId>com.google.errorprone</groupId>
<artifactId>error_prone_annotations</artifactId>
</exclusion>
<exclusion>
<groupId>com.google.j2objc</groupId>
<artifactId>j2objc-annotations</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.google.dagger</groupId>
<artifactId>dagger</artifactId>
<version>${dagger.version}</version>
</dependency>
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>${gson.version}</version>
<groupId>jakarta.inject</groupId>
<artifactId>jakarta.inject-api</artifactId>
<version>2.0.1</version>
</dependency>
<!-- Caffeine -->
<dependency>
<groupId>com.github.ben-manes.caffeine</groupId>
<artifactId>caffeine</artifactId>
<version>3.2.0</version>
</dependency>
<!-- JUnit / Mockito / Hamcrest -->
<dependency>
<groupId>org.junit.jupiter</groupId>
@@ -242,7 +238,7 @@
<dependency>
<groupId>com.google.jimfs</groupId>
<artifactId>jimfs</artifactId>
<version>1.2</version>
<version>1.3.0</version>
<scope>test</scope>
</dependency>
@@ -260,32 +256,32 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.10.1</version>
<version>${mvn-compiler.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.3.0</version>
<version>${mvn-resources.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>3.3.0</version>
<version>${mvn-dependency.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M7</version>
<version>${mvn-surefire.version}</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>license-maven-plugin</artifactId>
<version>2.0.0</version>
<version>${license-generator.version}</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>3.3.0</version>
<version>${mvn-jar.version}</version>
</plugin>
<plugin>
<groupId>org.jacoco</groupId>
@@ -315,45 +311,9 @@
<compilerArgs>
<arg>-Adagger.fastInit=enabled</arg>
<arg>-Adagger.formatGeneratedSource=enabled</arg>
<arg>--enable-preview</arg>
</compilerArgs>
</configuration>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<id>compile-light-theme</id>
<phase>compile</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>javafx.graphics/com.sun.javafx.css.parser.Css2Bin</mainClass>
<arguments>
<arg>${project.basedir}/src/main/resources/css/light_theme.css</arg>
<arg>${project.build.outputDirectory}/css/light_theme.bss</arg>
</arguments>
</configuration>
</execution>
<execution>
<id>compile-dark-theme</id>
<phase>compile</phase>
<goals>
<goal>java</goal>
</goals>
<configuration>
<mainClass>javafx.graphics/com.sun.javafx.css.parser.Css2Bin</mainClass>
<arguments>
<arg>${project.basedir}/src/main/resources/css/dark_theme.css</arg>
<arg>${project.build.outputDirectory}/css/dark_theme.bss</arg>
</arguments>
</configuration>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
@@ -369,11 +329,35 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<dependencies>
<dependency>
<groupId>me.fabriciorby</groupId>
<artifactId>maven-surefire-junit5-tree-reporter</artifactId>
<version>${junit-tree-reporter.version}</version>
</dependency>
</dependencies>
<configuration>
<reportFormat>plain</reportFormat>
<consoleOutputReporter>
<disable>true</disable>
</consoleOutputReporter>
<argLine>@{surefire.jacoco.args} -javaagent:${org.mockito:mockito-core:jar}</argLine>
<statelessTestsetInfoReporter
implementation="org.apache.maven.plugin.surefire.extensions.junit5.JUnit5StatelessTestsetInfoTreeReporter">
</statelessTestsetInfoReporter>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>jar-paths-to-properties</id>
<phase>validate</phase>
<goals>
<goal>properties</goal>
</goals>
</execution>
<!-- sort jars into two buckets (classpath and modulepath). exclude openjfx, which gets jlinked separately -->
<execution>
<id>copy-mods</id>
@@ -446,6 +430,9 @@
<goals>
<goal>prepare-agent</goal>
</goals>
<configuration>
<propertyName>surefire.jacoco.args</propertyName>
</configuration>
</execution>
<execution>
<id>report</id>
@@ -473,17 +460,19 @@
<groupId>org.owasp</groupId>
<artifactId>dependency-check-maven</artifactId>
<configuration>
<cveValidForHours>24</cveValidForHours>
<nvdValidForHours>24</nvdValidForHours>
<failBuildOnCVSS>0</failBuildOnCVSS>
<skipTestScope>true</skipTestScope>
<detail>true</detail>
<suppressionFile>suppression.xml</suppressionFile>
<nvdApiKeyEnvironmentVariable>NVD_API_KEY</nvdApiKeyEnvironmentVariable>
</configuration>
<executions>
<execution>
<goals>
<goal>check</goal>
</goals>
<phase>validate</phase>
</execution>
</executions>
</plugin>

View File

@@ -1,4 +1,22 @@
import ch.qos.logback.classic.spi.Configurator;
import org.cryptomator.networking.SSLContextWithPKCS12TrustStore;
import org.cryptomator.common.locationpresets.DropboxLinuxLocationPresetsProvider;
import org.cryptomator.common.locationpresets.DropboxMacLocationPresetsProvider;
import org.cryptomator.common.locationpresets.DropboxWindowsLocationPresetsProvider;
import org.cryptomator.common.locationpresets.GoogleDriveMacLocationPresetsProvider;
import org.cryptomator.common.locationpresets.GoogleDriveWindowsLocationPresetsProvider;
import org.cryptomator.common.locationpresets.ICloudMacLocationPresetsProvider;
import org.cryptomator.common.locationpresets.ICloudWindowsLocationPresetsProvider;
import org.cryptomator.common.locationpresets.LeitzcloudLocationPresetsProvider;
import org.cryptomator.common.locationpresets.LocationPresetsProvider;
import org.cryptomator.common.locationpresets.MegaLocationPresetsProvider;
import org.cryptomator.common.locationpresets.OneDriveLinuxLocationPresetsProvider;
import org.cryptomator.common.locationpresets.OneDriveMacLocationPresetsProvider;
import org.cryptomator.common.locationpresets.OneDriveWindowsLocationPresetsProvider;
import org.cryptomator.common.locationpresets.PCloudLocationPresetsProvider;
import org.cryptomator.networking.SSLContextWithMacKeychain;
import org.cryptomator.networking.SSLContextProvider;
import org.cryptomator.networking.SSLContextWithWindowsCertStore;
import org.cryptomator.integrations.tray.TrayMenuController;
import org.cryptomator.logging.LogbackConfiguratorFactory;
import org.cryptomator.ui.traymenu.AwtTrayMenuController;
@@ -8,7 +26,6 @@ open module org.cryptomator.desktop {
requires org.cryptomator.cryptolib;
requires org.cryptomator.cryptofs;
requires org.cryptomator.frontend.dokany;
requires org.cryptomator.frontend.fuse;
requires org.cryptomator.frontend.webdav;
requires org.cryptomator.integrations.api;
@@ -19,13 +36,13 @@ open module org.cryptomator.desktop {
requires javafx.graphics;
requires javafx.controls;
requires javafx.fxml;
requires jdk.crypto.ec;
// 3rd party:
requires ch.qos.logback.classic;
requires ch.qos.logback.core;
requires com.auth0.jwt;
requires com.google.common;
requires com.google.gson;
requires com.fasterxml.jackson.databind;
requires com.fasterxml.jackson.datatype.jsr310;
requires com.nimbusds.jose.jwt;
requires com.nulabinc.zxcvbn;
requires com.tobiasdiez.easybind;
@@ -34,9 +51,24 @@ open module org.cryptomator.desktop {
requires org.slf4j;
requires org.apache.commons.lang3;
/* TODO: filename-based modules: */
requires static javax.inject; /* ugly dagger/guava crap */
/* dagger bs */
requires jakarta.inject;
requires static javax.inject;
requires java.compiler;
requires com.github.benmanes.caffeine;
uses org.cryptomator.common.locationpresets.LocationPresetsProvider;
uses SSLContextProvider;
provides TrayMenuController with AwtTrayMenuController;
provides Configurator with LogbackConfiguratorFactory;
provides SSLContextProvider with SSLContextWithWindowsCertStore, SSLContextWithMacKeychain, SSLContextWithPKCS12TrustStore;
provides LocationPresetsProvider with //
DropboxWindowsLocationPresetsProvider, DropboxMacLocationPresetsProvider, DropboxLinuxLocationPresetsProvider, //
GoogleDriveMacLocationPresetsProvider, GoogleDriveWindowsLocationPresetsProvider, //
ICloudWindowsLocationPresetsProvider, ICloudMacLocationPresetsProvider, //
LeitzcloudLocationPresetsProvider, //
MegaLocationPresetsProvider, //
OneDriveWindowsLocationPresetsProvider, OneDriveMacLocationPresetsProvider, OneDriveLinuxLocationPresetsProvider, //
PCloudLocationPresetsProvider;
}

View File

@@ -5,10 +5,8 @@
*******************************************************************************/
package org.cryptomator.common;
import com.tobiasdiez.easybind.EasyBind;
import dagger.Module;
import dagger.Provides;
import org.apache.commons.lang3.SystemUtils;
import org.cryptomator.common.keychain.KeychainModule;
import org.cryptomator.common.mount.MountModule;
import org.cryptomator.common.settings.Settings;
@@ -16,16 +14,16 @@ import org.cryptomator.common.settings.SettingsProvider;
import org.cryptomator.common.vaults.VaultComponent;
import org.cryptomator.common.vaults.VaultListModule;
import org.cryptomator.cryptolib.common.MasterkeyFileAccess;
import org.cryptomator.integrations.revealpath.RevealPathService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import javax.inject.Named;
import javax.inject.Singleton;
import javafx.beans.value.ObservableValue;
import java.net.InetSocketAddress;
import java.security.NoSuchAlgorithmException;
import java.security.SecureRandom;
import java.util.Comparator;
import java.util.Optional;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.SynchronousQueue;
@@ -83,6 +81,13 @@ public abstract class CommonsModule {
return new SemVerComparator();
}
@Provides
@Singleton
static Optional<RevealPathService> provideRevealPathService() {
return RevealPathService.get().findFirst();
}
@Provides
@Singleton
static Settings provideSettings(SettingsProvider settingsProvider) {
@@ -127,13 +132,4 @@ public abstract class CommonsModule {
LOG.error("Uncaught exception in " + thread.getName(), throwable);
}
@Provides
@Singleton
static ObservableValue<InetSocketAddress> provideServerSocketAddressBinding(Settings settings) {
return settings.port().map(port -> {
String host = SystemUtils.IS_OS_WINDOWS ? "127.0.0.1" : "localhost";
return InetSocketAddress.createUnresolved(host, settings.port().intValue());
});
}
}

View File

@@ -1,5 +1,9 @@
package org.cryptomator.common;
import org.cryptomator.ui.keyloading.masterkeyfile.MasterkeyFileLoadingStrategy;
import java.net.URI;
public interface Constants {
String MASTERKEY_FILENAME = "masterkey.cryptomator";
@@ -7,6 +11,7 @@ public interface Constants {
String VAULTCONFIG_FILENAME = "vault.cryptomator";
String CRYPTOMATOR_FILENAME_EXT = ".cryptomator";
String CRYPTOMATOR_FILENAME_GLOB = "*.cryptomator";
URI DEFAULT_KEY_ID = URI.create(MasterkeyFileLoadingStrategy.SCHEME + ":" + MASTERKEY_FILENAME);
byte[] PEPPER = new byte[0];
}

View File

@@ -2,6 +2,7 @@ package org.cryptomator.common;
import com.google.common.base.Splitter;
import com.google.common.base.Strings;
import org.jetbrains.annotations.VisibleForTesting;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -18,8 +19,6 @@ import java.util.stream.StreamSupport;
public class Environment {
private static final Logger LOG = LoggerFactory.getLogger(Environment.class);
private static final Path RELATIVE_HOME_DIR = Paths.get("~");
private static final char PATH_LIST_SEP = ':';
private static final int DEFAULT_MIN_PW_LENGTH = 8;
private static final String SETTINGS_PATH_PROP_NAME = "cryptomator.settingsPath";
private static final String IPC_SOCKET_PATH_PROP_NAME = "cryptomator.ipcSocketPath";
@@ -33,6 +32,7 @@ public class Environment {
private static final String BUILD_NUMBER_PROP_NAME = "cryptomator.buildNumber";
private static final String PLUGIN_DIR_PROP_NAME = "cryptomator.pluginDir";
private static final String TRAY_ICON_PROP_NAME = "cryptomator.showTrayIcon";
private static final String DISABLE_UPDATE_CHECK_PROP_NAME = "cryptomator.disableUpdateCheck";
private Environment() {}
@@ -45,15 +45,16 @@ public class Environment {
logCryptomatorSystemProperty(SETTINGS_PATH_PROP_NAME);
logCryptomatorSystemProperty(IPC_SOCKET_PATH_PROP_NAME);
logCryptomatorSystemProperty(KEYCHAIN_PATHS_PROP_NAME);
logCryptomatorSystemProperty(P12_PATH_PROP_NAME);
logCryptomatorSystemProperty(LOG_DIR_PROP_NAME);
logCryptomatorSystemProperty(LOOPBACK_ALIAS_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(PLUGIN_DIR_PROP_NAME);
logCryptomatorSystemProperty(TRAY_ICON_PROP_NAME);
logCryptomatorSystemProperty(P12_PATH_PROP_NAME);
logCryptomatorSystemProperty(DISABLE_UPDATE_CHECK_PROP_NAME);
}
public static Environment getInstance() {
@@ -76,11 +77,7 @@ public class Environment {
return getPaths(SETTINGS_PATH_PROP_NAME);
}
public Stream<Path> getP12Path() {
return getPaths(P12_PATH_PROP_NAME);
}
public Stream<Path> ipcSocketPath() {
public Stream<Path> getIpcSocketPath() {
return getPaths(IPC_SOCKET_PATH_PROP_NAME);
}
@@ -88,20 +85,24 @@ public class Environment {
return getPaths(KEYCHAIN_PATHS_PROP_NAME);
}
public Stream<Path> getP12Path() {
return getPaths(P12_PATH_PROP_NAME);
}
public Optional<Path> getLogDir() {
return getPath(LOG_DIR_PROP_NAME).map(this::replaceHomeDir);
return getPath(LOG_DIR_PROP_NAME);
}
public Optional<String> getLoopbackAlias() {
return Optional.ofNullable(System.getProperty(LOOPBACK_ALIAS_PROP_NAME));
}
public Optional<Path> getPluginDir() {
return getPath(PLUGIN_DIR_PROP_NAME).map(this::replaceHomeDir);
public Optional<Path> getMountPointsDir() {
return getPath(MOUNTPOINT_DIR_PROP_NAME);
}
public Optional<Path> getMountPointsDir() {
return getPath(MOUNTPOINT_DIR_PROP_NAME).map(this::replaceHomeDir);
public int getMinPwLength() {
return Integer.getInteger(MIN_PW_LENGTH_PROP_NAME, DEFAULT_MIN_PW_LENGTH);
}
/**
@@ -117,36 +118,27 @@ public class Environment {
return Optional.ofNullable(System.getProperty(BUILD_NUMBER_PROP_NAME));
}
public int getMinPwLength() {
return Integer.getInteger(MIN_PW_LENGTH_PROP_NAME, DEFAULT_MIN_PW_LENGTH);
public Optional<Path> getPluginDir() {
return getPath(PLUGIN_DIR_PROP_NAME);
}
public boolean showTrayIcon() {
return Boolean.getBoolean(TRAY_ICON_PROP_NAME);
}
public boolean disableUpdateCheck() {
return Boolean.getBoolean(DISABLE_UPDATE_CHECK_PROP_NAME);
}
private Optional<Path> getPath(String propertyName) {
String value = System.getProperty(propertyName);
return Optional.ofNullable(value).map(Paths::get);
}
// visible for testing
public Path getHomeDir() {
return getPath("user.home").orElseThrow();
}
// visible for testing
public Stream<Path> getPaths(String propertyName) {
Stream<String> rawSettingsPaths = getRawList(propertyName, PATH_LIST_SEP);
return rawSettingsPaths.filter(Predicate.not(Strings::isNullOrEmpty)).map(Paths::get).map(this::replaceHomeDir);
}
private Path replaceHomeDir(Path path) {
if (path.startsWith(RELATIVE_HOME_DIR)) {
return getHomeDir().resolve(RELATIVE_HOME_DIR.relativize(path));
} else {
return path;
}
@VisibleForTesting
Stream<Path> getPaths(String propertyName) {
Stream<String> rawSettingsPaths = getRawList(propertyName, System.getProperty("path.separator").charAt(0));
return rawSettingsPaths.filter(Predicate.not(Strings::isNullOrEmpty)).map(Path::of);
}
private Stream<String> getRawList(String propertyName, char separator) {

View File

@@ -3,6 +3,7 @@ package org.cryptomator.common;
import com.google.common.base.Preconditions;
import com.google.common.base.Strings;
import com.google.common.base.Throwables;
import org.jetbrains.annotations.VisibleForTesting;
import java.util.Locale;
import java.util.Objects;
@@ -32,18 +33,15 @@ public class ErrorCode {
this.rootCauseSpecificFrames = rootCauseSpecificFrames;
}
// visible for testing
String methodCode() {
public String methodCode() {
return format(traceCode(rootCause, LATEST_FRAME));
}
// visible for testing
String rootCauseCode() {
public String rootCauseCode() {
return format(traceCode(rootCause, rootCauseSpecificFrames));
}
// visible for testing
String throwableCode() {
public String throwableCode() {
return format(traceCode(throwable, ALL_FRAMES));
}
@@ -117,7 +115,7 @@ public class ErrorCode {
* @param bottomFrames Other stack frames, potentially forming the bottom of the stack of <code>allFrames</code>
* @return The number of additional frames in <code>allFrames</code>. In most cases this should be equal to the difference in size.
*/
// visible for testing
@VisibleForTesting
static int countTopmostFrames(StackTraceElement[] allFrames, StackTraceElement[] bottomFrames) {
if (allFrames.length < bottomFrames.length) {
// if frames had been stacked on top of bottomFrames, allFrames would be larger
@@ -127,7 +125,7 @@ public class ErrorCode {
}
}
// visible for testing
@VisibleForTesting
static <T> int commonSuffixLength(T[] set, T[] subset) {
Preconditions.checkArgument(set.length >= subset.length);
// iterate items backwards as long as they are identical

View File

@@ -0,0 +1,31 @@
package org.cryptomator.common;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;
public record Hyperlinks(String docsVolumeType, String docsGettingStarted, String homepageHub) {
private static final ObjectMapper JSON_DESERIALIZER = new ObjectMapper();
/*
String docsAccessingVaults;
String docsExpertSettings;
String docsManualMigration;
String homepageDownload;
String homepageHub;
String homepageDonate;
String homepageSponsors;
String storeDesktop;
*/
public static Hyperlinks load() {
try {
return JSON_DESERIALIZER.readValue(Hyperlinks.class.getResource("/hyperlinks.json"), Hyperlinks.class);
} catch (IOException e) {
throw new RuntimeException(e);
}
}
}

View File

@@ -30,7 +30,7 @@ public class LicenseHolder {
this.licenseSubject = validJwtClaims.map(DecodedJWT::getSubject);
this.validLicenseProperty = validJwtClaims.isNotNull();
Optional<DecodedJWT> claims = licenseChecker.check(settings.licenseKey().get());
Optional<DecodedJWT> claims = licenseChecker.check(settings.licenseKey.get());
validJwtClaims.set(claims.orElse(null));
}
@@ -38,7 +38,7 @@ public class LicenseHolder {
Optional<DecodedJWT> claims = licenseChecker.check(licenseKey);
validJwtClaims.set(claims.orElse(null));
if (claims.isPresent()) {
settings.licenseKey().set(licenseKey);
settings.licenseKey.set(licenseKey);
return true;
} else {
return false;

View File

@@ -1,64 +0,0 @@
package org.cryptomator.common;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.List;
/**
* Enum of common cloud providers and their default local storage location path.
*/
public enum LocationPreset {
DROPBOX("Dropbox", "~/Dropbox"),
ICLOUDDRIVE("iCloud Drive", "~/Library/Mobile Documents/com~apple~CloudDocs", "~/iCloudDrive"),
GDRIVE("Google Drive", "~/Google Drive/My Drive", "~/Google Drive"),
MEGA("MEGA", "~/MEGA"),
ONEDRIVE("OneDrive", "~/OneDrive"),
PCLOUD("pCloud", "~/pCloudDrive"),
LOCAL("local");
private final String name;
private final List<Path> candidates;
LocationPreset(String name, String... candidates) {
this.name = name;
this.candidates = Arrays.stream(candidates).map(UserHome::resolve).map(Path::of).toList();
}
/**
* Checks for this LocationPreset if any of the associated paths exist.
*
* @return the first existing path or null, if none exists.
*/
public Path existingPath() {
return candidates.stream().filter(Files::isDirectory).findFirst().orElse(null);
}
public String getDisplayName() {
return name;
}
@Override
public String toString() {
return getDisplayName();
}
//this contruct is needed, since static members are initialized after every enum member is initialized
//TODO: refactor this to normal class and use this also in different parts of the project
private static class UserHome {
private static final String USER_HOME = System.getProperty("user.home");
private static String resolve(String path) {
if (path.startsWith("~/")) {
return UserHome.USER_HOME + path.substring(1);
} else {
return path;
}
}
}
}

View File

@@ -2,7 +2,9 @@ package org.cryptomator.common;
import javafx.beans.binding.Bindings;
import javafx.beans.value.ObservableValue;
import java.util.Objects;
import java.util.function.Function;
import java.util.function.Supplier;
public class ObservableUtil {
@@ -15,4 +17,14 @@ public class ObservableUtil {
}
}, observable);
}
public static <T, U> ObservableValue<U> mapWithDefault(ObservableValue<T> observable, Function<? super T, ? extends U> mapper, Supplier<U> defaultValue) {
return Bindings.createObjectBinding(() -> {
if (observable.getValue() == null) {
return defaultValue.get();
} else {
return mapper.apply(observable.getValue());
}
}, observable);
}
}

View File

@@ -0,0 +1,171 @@
package org.cryptomator.common;
import org.jetbrains.annotations.Nullable;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.io.Reader;
import java.io.Writer;
import java.nio.charset.Charset;
import java.util.Collection;
import java.util.Enumeration;
import java.util.InvalidPropertiesFormatException;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
import java.util.function.BiConsumer;
import java.util.function.BiFunction;
import java.util.function.Function;
class PropertiesDecorator extends Properties {
protected final Properties delegate;
PropertiesDecorator(Properties delegate) {
this.delegate = delegate;
}
@Override
public String getProperty(String key) {return delegate.getProperty(key);}
@Override
public String getProperty(String key, String defaultValue) {return delegate.getProperty(key, defaultValue);}
@Override
public synchronized Object setProperty(String key, String value) {
return delegate.setProperty(key, value);
}
@Override
public synchronized void load(Reader reader) throws IOException {delegate.load(reader);}
@Override
public synchronized void load(InputStream inStream) throws IOException {delegate.load(inStream);}
@Override
public void store(Writer writer, String comments) throws IOException {delegate.store(writer, comments);}
@Override
public void store(OutputStream out, @Nullable String comments) throws IOException {delegate.store(out, comments);}
@Override
public synchronized void loadFromXML(InputStream in) throws IOException, InvalidPropertiesFormatException {delegate.loadFromXML(in);}
@Override
public void storeToXML(OutputStream os, String comment) throws IOException {delegate.storeToXML(os, comment);}
@Override
public void storeToXML(OutputStream os, String comment, String encoding) throws IOException {delegate.storeToXML(os, comment, encoding);}
@Override
public void storeToXML(OutputStream os, String comment, Charset charset) throws IOException {delegate.storeToXML(os, comment, charset);}
@Override
public Enumeration<?> propertyNames() {return delegate.propertyNames();}
@Override
public Set<String> stringPropertyNames() {return delegate.stringPropertyNames();}
@Override
public void list(PrintStream out) {delegate.list(out);}
@Override
public void list(PrintWriter out) {delegate.list(out);}
@Override
public int size() {return delegate.size();}
@Override
public boolean isEmpty() {return delegate.isEmpty();}
@Override
public Enumeration<Object> keys() {return delegate.keys();}
@Override
public Enumeration<Object> elements() {return delegate.elements();}
@Override
public boolean contains(Object value) {return delegate.contains(value);}
@Override
public boolean containsValue(Object value) {return delegate.containsValue(value);}
@Override
public boolean containsKey(Object key) {return delegate.containsKey(key);}
@Override
public Object get(Object key) {return delegate.get(key);}
@Override
public synchronized Object put(Object key, Object value) {return delegate.put(key, value);}
@Override
public synchronized Object remove(Object key) {return delegate.remove(key);}
@Override
public synchronized void putAll(Map<?, ?> t) {delegate.putAll(t);}
@Override
public synchronized void clear() {delegate.clear();}
@Override
public synchronized String toString() {return delegate.toString();}
@Override
public Set<Object> keySet() {return delegate.keySet();}
@Override
public Collection<Object> values() {return delegate.values();}
@Override
public Set<Map.Entry<Object, Object>> entrySet() {return delegate.entrySet();}
@Override
public synchronized boolean equals(Object o) {return delegate.equals(o);}
@Override
public synchronized int hashCode() {return delegate.hashCode();}
@Override
public Object getOrDefault(Object key, Object defaultValue) {return delegate.getOrDefault(key, defaultValue);}
@Override
public synchronized void forEach(BiConsumer<? super Object, ? super Object> action) {delegate.forEach(action);}
@Override
public synchronized void replaceAll(BiFunction<? super Object, ? super Object, ?> function) {delegate.replaceAll(function);}
@Override
public synchronized Object putIfAbsent(Object key, Object value) {return delegate.putIfAbsent(key, value);}
@Override
public synchronized boolean remove(Object key, Object value) {return delegate.remove(key, value);}
@Override
public synchronized boolean replace(Object key, Object oldValue, Object newValue) {return delegate.replace(key, oldValue, newValue);}
@Override
public synchronized Object replace(Object key, Object value) {return delegate.replace(key, value);}
@Override
public synchronized Object computeIfAbsent(Object key, Function<? super Object, ?> mappingFunction) {return delegate.computeIfAbsent(key, mappingFunction);}
@Override
public synchronized Object computeIfPresent(Object key, BiFunction<? super Object, ? super Object, ?> remappingFunction) {return delegate.computeIfPresent(key, remappingFunction);}
@Override
public synchronized Object compute(Object key, BiFunction<? super Object, ? super Object, ?> remappingFunction) {return delegate.compute(key, remappingFunction);}
@Override
public synchronized Object merge(Object key, Object value, BiFunction<? super Object, ? super Object, ?> remappingFunction) {return delegate.merge(key, value, remappingFunction);}
@Override
public synchronized Object clone() {
var delegateClone = (Properties) delegate.clone();
return new PropertiesDecorator(delegateClone);
}
}

View File

@@ -0,0 +1,71 @@
package org.cryptomator.common;
import org.jetbrains.annotations.VisibleForTesting;
import org.slf4j.LoggerFactory;
import java.util.Map;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class SubstitutingProperties extends PropertiesDecorator {
private static final Pattern TEMPLATE = Pattern.compile("@\\{(\\w+)}");
private final Map<String, String> env;
public SubstitutingProperties(Properties props, Map<String, String> systemEnvironment) {
super(props);
this.env = systemEnvironment;
}
@Override
public String getProperty(String key) {
var value = delegate.getProperty(key);
if (key.startsWith("cryptomator.") && value != null) {
return process(value);
} else {
return value;
}
}
@Override
public String getProperty(String key, String defaultValue) {
var result = getProperty(key);
return result != null ? result : defaultValue;
}
@VisibleForTesting
String process(String value) {
return TEMPLATE.matcher(value).replaceAll(match -> //
switch (match.group(1)) {
case "appdir" -> resolveFrom("APPDIR", Source.ENV);
case "appdata" -> resolveFrom("APPDATA", Source.ENV);
case "localappdata" -> resolveFrom("LOCALAPPDATA", Source.ENV);
case "userhome" -> resolveFrom("user.home", Source.PROPS);
default -> {
LoggerFactory.getLogger(SubstitutingProperties.class).warn("Unknown variable {} in property value {}.", match.group(), value);
yield match.group();
}
});
}
private String resolveFrom(String key, Source src) {
var val = switch (src) {
case ENV -> env.get(key);
case PROPS -> delegate.getProperty(key);
};
if (val == null) {
LoggerFactory.getLogger(SubstitutingProperties.class).warn("Variable {} used for substitution not found in {}. Replaced with empty string.", key, src);
return "";
} else {
return Matcher.quoteReplacement(val);
}
}
private enum Source {
ENV,
PROPS;
}
}

View File

@@ -1,8 +1,7 @@
package org.cryptomator.common.keychain;
import com.google.common.cache.CacheBuilder;
import com.google.common.cache.CacheLoader;
import com.google.common.cache.LoadingCache;
import com.github.benmanes.caffeine.cache.Caffeine;
import com.github.benmanes.caffeine.cache.LoadingCache;
import org.cryptomator.integrations.keychain.KeychainAccessException;
import org.cryptomator.integrations.keychain.KeychainAccessProvider;
@@ -24,9 +23,9 @@ public class KeychainManager implements KeychainAccessProvider {
@Inject
KeychainManager(ObjectExpression<KeychainAccessProvider> selectedKeychain) {
this.keychain = selectedKeychain;
this.passphraseStoredProperties = CacheBuilder.newBuilder() //
this.passphraseStoredProperties = Caffeine.newBuilder() //
.weakValues() //
.build(CacheLoader.from(this::createStoredPassphraseProperty));
.build(this::createStoredPassphraseProperty);
keychain.addListener(ignored -> passphraseStoredProperties.invalidateAll());
}
@@ -44,7 +43,7 @@ public class KeychainManager implements KeychainAccessProvider {
}
@Override
public void storePassphrase(String key, String displayName, CharSequence passphrase) throws KeychainAccessException {
public void storePassphrase(String key, String displayName, CharSequence passphrase, boolean ignored) throws KeychainAccessException {
getKeychainOrFail().storePassphrase(key, displayName, passphrase);
setPassphraseStored(key, true);
}
@@ -124,7 +123,7 @@ public class KeychainManager implements KeychainAccessProvider {
* @see #isPassphraseStored(String)
*/
public ReadOnlyBooleanProperty getPassphraseStoredProperty(String key) {
return passphraseStoredProperties.getUnchecked(key);
return passphraseStoredProperties.get(key);
}
private BooleanProperty createStoredPassphraseProperty(String key) {

View File

@@ -23,14 +23,14 @@ public class KeychainModule {
@Singleton
static ObjectExpression<KeychainAccessProvider> provideKeychainAccessProvider(Settings settings, List<KeychainAccessProvider> providers) {
return Bindings.createObjectBinding(() -> {
if (!settings.useKeychain().get()) {
if (!settings.useKeychain.get()) {
return null;
}
var selectedProviderClass = settings.keychainProvider().get();
var selectedProviderClass = settings.keychainProvider.get();
var selectedProvider = providers.stream().filter(provider -> provider.getClass().getName().equals(selectedProviderClass)).findAny();
var fallbackProvider = providers.stream().findFirst().orElse(null);
return selectedProvider.orElse(fallbackProvider);
}, settings.keychainProvider(), settings.useKeychain());
}, settings.keychainProvider, settings.useKeychain);
}
}

View File

@@ -0,0 +1,32 @@
package org.cryptomator.common.locationpresets;
import org.cryptomator.integrations.common.OperatingSystem;
import java.io.IOException;
import java.io.UncheckedIOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.function.Predicate;
import java.util.regex.Pattern;
import java.util.stream.Stream;
import static org.cryptomator.integrations.common.OperatingSystem.Value.LINUX;
@OperatingSystem(LINUX)
public final class DropboxLinuxLocationPresetsProvider implements LocationPresetsProvider {
private static final Path USER_HOME = LocationPresetsProvider.resolveLocation("~/.").toAbsolutePath();
private static final Predicate<String> PATTERN = Pattern.compile("Dropbox \\(.+\\)").asMatchPredicate();
@Override
public Stream<LocationPreset> getLocations() {
try (var dirStream = Files.list(USER_HOME)) {
var presets = dirStream.filter(p -> Files.isDirectory(p) && PATTERN.test(p.getFileName().toString())) //
.map(p -> new LocationPreset(p.getFileName().toString(), p)) //
.toList();
return presets.stream(); //workaround to ensure that the directory stream is always closed
} catch (IOException | UncheckedIOException e) { //UncheckedIOException thrown by the stream of Files.list()
return Stream.of();
}
}
}

View File

@@ -0,0 +1,35 @@
package org.cryptomator.common.locationpresets;
import org.cryptomator.integrations.common.CheckAvailability;
import org.cryptomator.integrations.common.OperatingSystem;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.stream.Stream;
import static org.cryptomator.integrations.common.OperatingSystem.Value.MAC;
@OperatingSystem(MAC)
@CheckAvailability
public final class DropboxMacLocationPresetsProvider implements LocationPresetsProvider {
private static final Path LOCATION = LocationPresetsProvider.resolveLocation("~/Library/CloudStorage/Dropbox");
private static final Path FALLBACK_LOCATION = LocationPresetsProvider.resolveLocation("~/Dropbox");
@CheckAvailability
public static boolean isPresent() {
return Files.isDirectory(LOCATION) || Files.isDirectory(FALLBACK_LOCATION);
}
@Override
public Stream<LocationPreset> getLocations() {
if(Files.isDirectory(LOCATION)) {
return Stream.of(new LocationPreset("Dropbox", LOCATION));
} else if(Files.isDirectory(FALLBACK_LOCATION)) {
return Stream.of(new LocationPreset("Dropbox", FALLBACK_LOCATION));
} else {
return Stream.of();
}
}
}

View File

@@ -0,0 +1,28 @@
package org.cryptomator.common.locationpresets;
import org.cryptomator.integrations.common.CheckAvailability;
import org.cryptomator.integrations.common.OperatingSystem;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.stream.Stream;
import static org.cryptomator.integrations.common.OperatingSystem.Value.WINDOWS;
@OperatingSystem(WINDOWS)
@CheckAvailability
public final class DropboxWindowsLocationPresetsProvider implements LocationPresetsProvider {
private static final Path LOCATION = LocationPresetsProvider.resolveLocation("~/Dropbox");
@CheckAvailability
public static boolean isPresent() {
return Files.isDirectory(LOCATION);
}
@Override
public Stream<LocationPreset> getLocations() {
return Stream.of(new LocationPreset("Dropbox", LOCATION));
}
}

View File

@@ -0,0 +1,144 @@
package org.cryptomator.common.locationpresets;
import org.cryptomator.integrations.common.CheckAvailability;
import org.cryptomator.integrations.common.OperatingSystem;
import java.io.IOException;
import java.io.UncheckedIOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.function.Predicate;
import java.util.regex.Pattern;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
import static org.cryptomator.integrations.common.OperatingSystem.Value.MAC;
@OperatingSystem(MAC)
@CheckAvailability
public final class GoogleDriveMacLocationPresetsProvider implements LocationPresetsProvider {
private static final Path ROOT_LOCATION = LocationPresetsProvider.resolveLocation("~/Library/CloudStorage/").toAbsolutePath();
private static final Predicate<String> PATTERN = Pattern.compile("^GoogleDrive-[^/]+$").asMatchPredicate();
private static final List<Path> FALLBACK_LOCATIONS = List.of( //
LocationPresetsProvider.resolveLocation("~/GoogleDrive/My Drive"), //
LocationPresetsProvider.resolveLocation("~/Google Drive/My Drive"), //
LocationPresetsProvider.resolveLocation("~/GoogleDrive"), //
LocationPresetsProvider.resolveLocation("~/Google Drive") //
);
@Override
public Stream<LocationPreset> getLocations() {
List<LocationPreset> cloudStorageDirLocations = getCloudStorageDirLocations();
return cloudStorageDirLocations.isEmpty() ? getFallbackLocation().stream() : cloudStorageDirLocations.stream();
}
@CheckAvailability
public static boolean isPresent() {
return isRootLocationPresent() || FALLBACK_LOCATIONS.stream().anyMatch(Files::isDirectory);
}
/**
* Checks if a root location directory is present that matches the specified pattern.
* <p>
* This method scans the {@code ROOT_LOCATION} directory for subdirectories and tests each one against a pre-defined pattern ({@code PATTERN}).
*
* @return {@code true} if a matching root location is present, otherwise {@code false}.
*/
public static boolean isRootLocationPresent() {
try (var dirStream = Files.list(ROOT_LOCATION)) {
return dirStream.anyMatch(path -> Files.isDirectory(path) && PATTERN.test(path.getFileName().toString()));
} catch (IOException | UncheckedIOException e) {
return false;
}
}
/**
* Returns Google Drive preset String.
*
* @param accountPath The path to the Google Drive account directory (e.g. {@code ~/Library/CloudStorage/GoogleDrive-username})
* @return {@code String}. For example: "Google Drive - username"
*/
private String getDriveLocationString(Path accountPath) {
String accountName = accountPath.getFileName().toString().replace("GoogleDrive-", "");
return "Google Drive - " + accountName;
}
/**
* Retrieves a list of cloud storage directory locations based on the {@code ROOT_LOCATION}.
* <p>
* This method lists all directories in the {@code ROOT_LOCATION}, filters them based on whether their names match
* a predefined pattern ({@code PATTERN}), and then extracts presets using {@code getPresetsFromAccountPath(Path)}.
* <p>
*
* @return a list of {@code LocationPreset} objects representing valid cloud storage directory locations.
*/
private List<LocationPreset> getCloudStorageDirLocations() {
try (var dirStream = Files.list(ROOT_LOCATION)) {
return dirStream.filter(path -> Files.isDirectory(path) && PATTERN.test(path.getFileName().toString()))
.flatMap(this::getPresetsFromAccountPath)
.toList();
} catch (IOException | UncheckedIOException e) {
return List.of();
}
}
/**
* Retrieves a stream of {@code LocationPreset} objects from a given Google Drive account path.
* <p>
* This method lists all directories within the provided {@code accountPath} and filters them
* to identify folders whose names match any of the translations defined in {@code MY_DRIVE_TRANSLATIONS}.
*
* @param accountPath the root path of the Google Drive account to scan.
* @return a stream of {@code LocationPreset} objects representing matching directories.
*/
private Stream<LocationPreset> getPresetsFromAccountPath(Path accountPath) {
try (var driveStream = Files.list(accountPath)) {
return driveStream
.filter(preset -> MY_DRIVE_TRANSLATIONS
.contains(preset.getFileName().toString()))
.map(drivePath -> new LocationPreset(
getDriveLocationString(accountPath),
drivePath
)).toList().stream();
} catch (IOException e) {
return Stream.empty();
}
}
/**
* Returns a list containing a fallback location preset for Google Drive.
* <p>
* This method iterates through the predefined fallback locations, checks if any of them is a directory,
* and creates a {@code LocationPreset} object for the first matching directory found.
*
* @return a list containing a single fallback location preset if a valid directory is found, otherwise an empty list.
* @deprecated This method is intended for legacy support and may be removed in future releases.
*/
@Deprecated
private List<LocationPreset> getFallbackLocation() {
return FALLBACK_LOCATIONS.stream()
.filter(Files::isDirectory)
.map(location -> new LocationPreset("Google Drive", location))
.findFirst()
.stream()
.toList();
}
/**
* Set of translations for "My Drive" in various languages.
* <p>
* This constant is used to identify different language-specific labels for "My Drive" in Google Drive.
* <p>
* The translations were originally extracted from the Chromium projects Chrome OS translation files.
* <p>
* Source: `ui/chromeos/translations` directory in the Chromium repository.
*/
private static final Set<String> MY_DRIVE_TRANSLATIONS = Set.of("My Drive", "የእኔ Drive", "ملفاتي", "মোৰ ড্ৰাইভ", "Diskim", "Мой Дыск", "Моят диск", "আমার ড্রাইভ", "Moj disk", "La meva unitat", "Můj disk", "Mit drev", "Meine Ablage", "Το Drive μου", "Mi unidad", "Minu ketas", "Nire unitatea", "Aking Drive", "Oma Drive", "Mon disque", "Mon Drive", "A miña unidade", "મારી ડ્રાઇવ", "मेरी ड्राइव", "Saját meghajtó", "Իմ դրայվը", "Drive Saya", "Drifið mitt", "I miei file", "האחסון שלי", "マイドライブ", "ჩემი Drive", "Менің Drive дискім", "ដ្រាយរបស់ខ្ញុំ", "ನನ್ನ ಡ್ರೈವ್", "내 드라이브", "Менин Drive'ым", "Mano Diskas", "Mans disks", "Мојот Drive", "എന്റെ ഡ്രൈവ്", "Миний Драйв", "माझा ड्राइव्ह", "मेरो ड्राइभ", "Mijn Drive", "Min disk", "ମୋ ଡ୍ରାଇଭ୍", "Mój dysk", "Meu Drive", "O meu disco", "Contul meu Drive", "Мой диск", "මගේ Drive", "Môj disk", "Disku im", "Мој диск", "Min enhet", "Hifadhi Yangu", "எனது இயக்ககம்", "నా డ్రైవ్‌", "ไดรฟ์ของฉัน", "Drive'ım", "Мій диск", "میری ڈرائیو", "Drive của tôi", "我的云端硬盘", "我的雲端硬碟", "IDrayivu yami");
}

View File

@@ -0,0 +1,38 @@
package org.cryptomator.common.locationpresets;
import org.cryptomator.integrations.common.CheckAvailability;
import org.cryptomator.integrations.common.OperatingSystem;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;
import static org.cryptomator.integrations.common.OperatingSystem.Value.WINDOWS;
@OperatingSystem(WINDOWS)
@CheckAvailability
public final class GoogleDriveWindowsLocationPresetsProvider implements LocationPresetsProvider {
private static final List<Path> LOCATIONS = Arrays.asList( //
LocationPresetsProvider.resolveLocation("~/GoogleDrive/My Drive"), //
LocationPresetsProvider.resolveLocation("~/Google Drive/My Drive"), //
LocationPresetsProvider.resolveLocation("~/GoogleDrive"), //
LocationPresetsProvider.resolveLocation("~/Google Drive") //
);
@CheckAvailability
public static boolean isPresent() {
return LOCATIONS.stream().anyMatch(Files::isDirectory);
}
@Override
public Stream<LocationPreset> getLocations() {
return LOCATIONS.stream() //
.filter(Files::isDirectory) //
.map(location -> new LocationPreset("Google Drive", location)) //
.findFirst() //
.stream();
}
}

View File

@@ -0,0 +1,27 @@
package org.cryptomator.common.locationpresets;
import org.cryptomator.integrations.common.CheckAvailability;
import org.cryptomator.integrations.common.OperatingSystem;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.stream.Stream;
import static org.cryptomator.integrations.common.OperatingSystem.Value.MAC;
@OperatingSystem(MAC)
@CheckAvailability
public final class ICloudMacLocationPresetsProvider implements LocationPresetsProvider {
private static final Path LOCATION = LocationPresetsProvider.resolveLocation("~/Library/Mobile Documents/com~apple~CloudDocs");
@CheckAvailability
public static boolean isPresent() {
return Files.isDirectory(LOCATION);
}
@Override
public Stream<LocationPreset> getLocations() {
return Stream.of(new LocationPreset("iCloud Drive", LOCATION));
}
}

View File

@@ -0,0 +1,27 @@
package org.cryptomator.common.locationpresets;
import org.cryptomator.integrations.common.CheckAvailability;
import org.cryptomator.integrations.common.OperatingSystem;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.stream.Stream;
import static org.cryptomator.integrations.common.OperatingSystem.Value.WINDOWS;
@OperatingSystem(WINDOWS)
@CheckAvailability
public final class ICloudWindowsLocationPresetsProvider implements LocationPresetsProvider {
private static final Path LOCATION = LocationPresetsProvider.resolveLocation("~/iCloudDrive");
@CheckAvailability
public static boolean isPresent() {
return Files.isDirectory(LOCATION);
}
@Override
public Stream<LocationPreset> getLocations() {
return Stream.of(new LocationPreset("iCloud Drive", LOCATION));
}
}

View File

@@ -0,0 +1,30 @@
package org.cryptomator.common.locationpresets;
import org.cryptomator.integrations.common.CheckAvailability;
import org.cryptomator.integrations.common.OperatingSystem;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.stream.Stream;
import static org.cryptomator.integrations.common.OperatingSystem.Value.MAC;
import static org.cryptomator.integrations.common.OperatingSystem.Value.WINDOWS;
@OperatingSystem(WINDOWS)
@OperatingSystem(MAC)
@CheckAvailability
public final class LeitzcloudLocationPresetsProvider implements LocationPresetsProvider {
private static final Path LOCATION = LocationPresetsProvider.resolveLocation("~/leitzcloud");
@CheckAvailability
public static boolean isPresent() {
return Files.isDirectory(LOCATION);
}
@Override
public Stream<LocationPreset> getLocations() {
return Stream.of(new LocationPreset("leitzcloud", LOCATION));
}
}

View File

@@ -0,0 +1,9 @@
package org.cryptomator.common.locationpresets;
import java.nio.file.Path;
public record LocationPreset(String name, Path path) {
}

View File

@@ -0,0 +1,97 @@
package org.cryptomator.common.locationpresets;
import org.cryptomator.integrations.common.CheckAvailability;
import org.cryptomator.integrations.common.IntegrationsLoader;
import org.cryptomator.integrations.common.OperatingSystem;
import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.lang.reflect.Method;
import java.lang.reflect.Modifier;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.ServiceLoader;
import java.util.stream.Stream;
public interface LocationPresetsProvider {
Logger LOG = LoggerFactory.getLogger(LocationPresetsProvider.class);
String USER_HOME = System.getProperty("user.home");
/**
* Streams account-separated location presets found by this provider
* @return Stream of LocationPresets
*/
Stream<LocationPreset> getLocations();
static Path resolveLocation(String p) {
if (p.startsWith("~/")) {
return Path.of(USER_HOME, p.substring(2));
} else {
return Path.of(p);
}
}
//copied from org.cryptomator.integrations.common.IntegrationsLoader
//TODO: delete, once migrated to integrations-api
static <T> Stream<T> loadAll(Class<T> clazz) {
return ServiceLoader.load(clazz)
.stream()
.filter(LocationPresetsProvider::isSupportedOperatingSystem)
.filter(LocationPresetsProvider::passesStaticAvailabilityCheck)
.map(ServiceLoader.Provider::get)
.peek(impl -> logServiceIsAvailable(clazz, impl.getClass()));
}
private static boolean isSupportedOperatingSystem(ServiceLoader.Provider<?> provider) {
var annotations = provider.type().getAnnotationsByType(OperatingSystem.class);
return annotations.length == 0 || Arrays.stream(annotations).anyMatch(OperatingSystem.Value::isCurrent);
}
private static boolean passesStaticAvailabilityCheck(ServiceLoader.Provider<?> provider) {
return passesStaticAvailabilityCheck(provider.type());
}
static boolean passesStaticAvailabilityCheck(Class<?> type) {
return passesAvailabilityCheck(type, null);
}
private static void logServiceIsAvailable(Class<?> apiType, Class<?> implType) {
if (LOG.isDebugEnabled()) {
LOG.debug("{}: Implementation is available: {}", apiType.getSimpleName(), implType.getName());
}
}
private static <T> boolean passesAvailabilityCheck(Class<? extends T> type, @Nullable T instance) {
if (!type.isAnnotationPresent(CheckAvailability.class)) {
return true; // if type is not annotated, skip tests
}
if (!type.getModule().isExported(type.getPackageName(), IntegrationsLoader.class.getModule())) {
LOG.error("Can't run @CheckAvailability tests for class {}. Make sure to export {} to {}!", type.getName(), type.getPackageName(), IntegrationsLoader.class.getPackageName());
return false;
}
return Arrays.stream(type.getMethods())
.filter(m -> isAvailabilityCheck(m, instance == null))
.allMatch(m -> passesAvailabilityCheck(m, instance));
}
private static boolean passesAvailabilityCheck(Method m, @Nullable Object instance) {
assert Boolean.TYPE.equals(m.getReturnType());
try {
return (boolean) m.invoke(instance);
} catch (ReflectiveOperationException e) {
LOG.warn("Failed to invoke @CheckAvailability test {}#{}", m.getDeclaringClass(), m.getName(), e);
return false;
}
}
private static boolean isAvailabilityCheck(Method m, boolean isStatic) {
return m.isAnnotationPresent(CheckAvailability.class)
&& Boolean.TYPE.equals(m.getReturnType())
&& m.getParameterCount() == 0
&& Modifier.isStatic(m.getModifiers()) == isStatic;
}
}

View File

@@ -0,0 +1,29 @@
package org.cryptomator.common.locationpresets;
import org.cryptomator.integrations.common.CheckAvailability;
import org.cryptomator.integrations.common.OperatingSystem;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.stream.Stream;
import static org.cryptomator.integrations.common.OperatingSystem.Value.MAC;
import static org.cryptomator.integrations.common.OperatingSystem.Value.WINDOWS;
@OperatingSystem(WINDOWS)
@OperatingSystem(MAC)
@CheckAvailability
public final class MegaLocationPresetsProvider implements LocationPresetsProvider {
private static final Path LOCATION = LocationPresetsProvider.resolveLocation("~/MEGA");
@CheckAvailability
public static boolean isPresent() {
return Files.isDirectory(LOCATION);
}
@Override
public Stream<LocationPreset> getLocations() {
return Stream.of(new LocationPreset("MEGA", LOCATION));
}
}

View File

@@ -0,0 +1,28 @@
package org.cryptomator.common.locationpresets;
import org.cryptomator.integrations.common.CheckAvailability;
import org.cryptomator.integrations.common.OperatingSystem;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.stream.Stream;
import static org.cryptomator.integrations.common.OperatingSystem.Value.LINUX;
@OperatingSystem(LINUX)
@CheckAvailability
public final class OneDriveLinuxLocationPresetsProvider implements LocationPresetsProvider {
private static final Path LOCATION = LocationPresetsProvider.resolveLocation("~/OneDrive");
@CheckAvailability
public static boolean isPresent() {
return Files.isDirectory(LOCATION);
}
@Override
public Stream<LocationPreset> getLocations() {
return Stream.of(new LocationPreset("OneDrive", LOCATION));
}
}

View File

@@ -0,0 +1,44 @@
package org.cryptomator.common.locationpresets;
import org.cryptomator.integrations.common.OperatingSystem;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.stream.Stream;
import java.util.stream.StreamSupport;
import static org.cryptomator.integrations.common.OperatingSystem.Value.MAC;
@OperatingSystem(MAC)
public final class OneDriveMacLocationPresetsProvider implements LocationPresetsProvider {
private static final Path FALLBACK_LOCATION = LocationPresetsProvider.resolveLocation("~/OneDrive");
private static final Path PARENT_LOCATION = LocationPresetsProvider.resolveLocation("~/Library/CloudStorage");
@Override
public Stream<LocationPreset> getLocations() {
var newLocations = getNewLocations().toList();
if (newLocations.size() >= 1) {
return newLocations.stream();
} else {
return getOldLocation();
}
}
private Stream<LocationPreset> getNewLocations() {
try (var dirStream = Files.newDirectoryStream(PARENT_LOCATION, "OneDrive*")) {
return StreamSupport.stream(dirStream.spliterator(), false) //
.filter(Files::isDirectory) //
.map(p -> new LocationPreset(String.join(" - ", p.getFileName().toString().split("-")), p));
} catch (IOException e) {
return Stream.of();
}
}
private Stream<LocationPreset> getOldLocation() {
return Stream.of(new LocationPreset("OneDrive", FALLBACK_LOCATION)).filter(preset -> Files.isDirectory(preset.path()));
}
}

View File

@@ -0,0 +1,108 @@
package org.cryptomator.common.locationpresets;
import org.cryptomator.integrations.common.OperatingSystem;
import org.jetbrains.annotations.Blocking;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import static org.cryptomator.integrations.common.OperatingSystem.Value.WINDOWS;
@OperatingSystem(WINDOWS)
public final class OneDriveWindowsLocationPresetsProvider implements LocationPresetsProvider {
private static final Logger LOG = LoggerFactory.getLogger(OneDriveWindowsLocationPresetsProvider.class);
private static final String REGSTR_TOKEN = "REG_SZ";
private static final String REG_ONEDRIVE_ACCOUNTS = "HKEY_CURRENT_USER\\Software\\Microsoft\\OneDrive\\Accounts\\";
@Override
public Stream<LocationPreset> getLocations() {
try {
var accountRegKeys = queryRegistry(REG_ONEDRIVE_ACCOUNTS, List.of(), l -> l.startsWith(REG_ONEDRIVE_ACCOUNTS)).toList();
var cloudLocations = new ArrayList<LocationPreset>();
for (var accountRegKey : accountRegKeys) {
var path = queryRegistry(accountRegKey, List.of("/v", "UserFolder"), l -> l.contains("UserFolder")).map(result -> result.substring(result.indexOf(REGSTR_TOKEN) + REGSTR_TOKEN.length()).trim()) //
.map(Path::of) //
.findFirst().orElseThrow();
var name = "OneDrive"; //we assume personal oneDrive account by default
if (!accountRegKey.endsWith("Personal")) {
name = queryRegistry(accountRegKey, List.of("/v", "DisplayName"), l -> l.contains("DisplayName")).map(result -> result.substring(result.indexOf(REGSTR_TOKEN) + REGSTR_TOKEN.length()).trim()) //
.map("OneDrive - "::concat) //
.findFirst().orElseThrow();
}
cloudLocations.add(new LocationPreset(name, path));
}
return cloudLocations.stream();
} catch (IOException | CommandFailedException | TimeoutException e) {
LOG.error("Unable to determine OneDrive location", e);
return Stream.of();
} catch (InterruptedException e) {
Thread.currentThread().interrupt();
LOG.error("Determination of OneDrive location interrupted", e);
return Stream.of();
}
}
private Stream<String> queryRegistry(String keyname, List<String> moreArgs, Predicate<String> outputFilter) throws InterruptedException, CommandFailedException, TimeoutException, IOException {
var args = new ArrayList<String>();
args.add("reg");
args.add("query");
args.add(keyname);
args.addAll(moreArgs);
ProcessBuilder command = new ProcessBuilder(args);
Process p = command.start();
waitForSuccess(p, 3, "`reg query`");
return p.inputReader(StandardCharsets.ISO_8859_1).lines().filter(outputFilter);
}
/**
* Waits {@code timeoutSeconds} seconds for {@code process} to finish with exit code {@code 0}.
*
* @param process The process to wait for
* @param timeoutSeconds How long to wait (in seconds)
* @param cmdDescription A short description of the process used to generate log and exception messages
* @throws TimeoutException Thrown when the process doesn't finish in time
* @throws InterruptedException Thrown when the thread is interrupted while waiting for the process to finish
* @throws CommandFailedException Thrown when the process exit code is non-zero
*/
@Blocking
private static void waitForSuccess(Process process, int timeoutSeconds, String cmdDescription) throws TimeoutException, InterruptedException, CommandFailedException {
boolean exited = process.waitFor(timeoutSeconds, TimeUnit.SECONDS);
if (!exited) {
throw new TimeoutException(cmdDescription + " timed out after " + timeoutSeconds + "s");
}
if (process.exitValue() != 0) {
@SuppressWarnings("resource") var stdout = process.inputReader(StandardCharsets.ISO_8859_1).lines().collect(Collectors.joining("\n"));
@SuppressWarnings("resource") var stderr = process.errorReader(StandardCharsets.ISO_8859_1).lines().collect(Collectors.joining("\n"));
throw new CommandFailedException(cmdDescription, process.exitValue(), stdout, stderr);
}
}
private static class CommandFailedException extends Exception {
int exitCode;
String stdout;
String stderr;
private CommandFailedException(String cmdDescription, int exitCode, String stdout, String stderr) {
super(cmdDescription + " returned with non-zero exit code " + exitCode);
this.exitCode = exitCode;
this.stdout = stdout;
this.stderr = stderr;
}
}
}

View File

@@ -0,0 +1,39 @@
package org.cryptomator.common.locationpresets;
import org.cryptomator.integrations.common.CheckAvailability;
import org.cryptomator.integrations.common.OperatingSystem;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;
import static org.cryptomator.integrations.common.OperatingSystem.Value.MAC;
import static org.cryptomator.integrations.common.OperatingSystem.Value.WINDOWS;
@OperatingSystem(WINDOWS)
@OperatingSystem(MAC)
@CheckAvailability
public final class PCloudLocationPresetsProvider implements LocationPresetsProvider {
private static final List<Path> LOCATIONS = Arrays.asList( //
LocationPresetsProvider.resolveLocation("~/pCloudDrive"), //
LocationPresetsProvider.resolveLocation("~/pCloud Drive") //
);
@CheckAvailability
public static boolean isPresent() {
return LOCATIONS.stream().anyMatch(Files::isDirectory);
}
@Override
public Stream<LocationPreset> getLocations() {
return LOCATIONS.stream() //
.filter(Files::isDirectory) //
.map(location -> new LocationPreset("pCloud", location)) //
.findFirst() //
.stream();
}
}

Some files were not shown because too many files have changed in this diff Show More