1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-08-24 20:19:10 +02:00

Compare commits

...

512 Commits

Author SHA1 Message Date
Laurent Cozic
bfae770b19 Testing adding type to plugin framework 2020-10-06 19:08:33 +01:00
Laurent Cozic
e570f7a226 Disable filters for now 2020-10-06 18:23:15 +01:00
Laurent Cozic
9b28a8995f Open plugin dev tool window 2020-10-06 18:14:46 +01:00
Laurent Cozic
197f509f5d Increase version to 1.3 2020-10-06 14:04:21 +01:00
Laurent Cozic
4c83d7aa75 Fixed sidebar resize issue 2020-10-06 12:03:15 +01:00
Laurent Cozic
17e053b358 Handle module change event 2020-10-06 11:33:13 +01:00
Laurent Cozic
a29c93634d Converted locale file to TS 2020-10-06 10:27:43 +01:00
Laurent Cozic
a5f5bfcfec clean up 2020-10-06 10:16:18 +01:00
Laurent Cozic
b509329383 Convert interopservicehelper to TS 2020-10-06 10:14:54 +01:00
Laurent Cozic
91c7abed42 Added back support for keymap on command service 2020-10-06 09:55:23 +01:00
Laurent Cozic
54fda6ac97 Refactored menu bar 2020-10-05 19:29:53 +01:00
Laurent Cozic
341eefebaf Converted BaseApplication to TypeScripy 2020-10-05 14:44:56 +01:00
Laurent Cozic
af714cbdac Optimize command state handling 2020-10-05 13:20:23 +01:00
Laurent Cozic
6a0bf15c28 Clean up 2020-10-03 18:24:44 +01:00
Laurent Cozic
5a2bdad348 Cleaned up toolbar code to improve rendering 2020-10-03 18:22:39 +01:00
Laurent Cozic
fd08bfdd86 Better way to create buttonToolbarInfos 2020-10-03 17:49:28 +01:00
Laurent Cozic
1a5cead659 Added @typescript-eslint/explicit-member-accessibility rule 2020-10-03 15:45:32 +01:00
Laurent Cozic
85df133386 Added command service tests and a way to get multiple toolbar buttons 2020-10-03 15:36:23 +01:00
Laurent Cozic
869d11e113 Added way to parse when-clauses for commands 2020-10-03 14:40:12 +01:00
Laurent Cozic
d7a01d3965 Fixed issue with state that was accidentally mutated 2020-10-02 20:06:52 +01:00
Laurent Cozic
989036241d Fixed toolbar button label 2020-10-02 20:03:14 +01:00
Laurent Cozic
433cef1827 Fixed encryption config screen password save logic 2020-10-02 19:59:36 +01:00
Laurent Cozic
433d34f62b Resize app content when banner is added on top 2020-10-02 19:40:12 +01:00
Laurent Cozic
e7ec33bbf9 Added event tests 2020-10-02 18:48:25 +01:00
Laurent Cozic
a29f42d78d Converted synchronizer to TypeScript 2020-10-02 18:03:29 +01:00
Laurent Cozic
74ed234ab9 Added support for onAlarmTrigger event 2020-10-02 17:41:18 +01:00
Laurent Cozic
86b76ccb77 Fixed setting plugin 2020-10-02 16:49:39 +01:00
Laurent Cozic
29aedf8480 Fixed toc demo 2020-10-02 16:21:32 +01:00
Laurent Cozic
9486f5e0d2 Simplify plugin 2020-10-02 16:07:04 +01:00
Laurent Cozic
9a458431b8 Fixed sandbox proxy namespace logic 2020-10-02 15:56:34 +01:00
Laurent Cozic
2c9db9d18c Fixed dialog plugin API 2020-10-02 15:21:58 +01:00
Laurent Cozic
ae9c535842 Improved setting API 2020-10-02 13:02:39 +01:00
Laurent Cozic
a518da587e Fixed demo 2020-10-02 12:52:05 +01:00
Laurent Cozic
92e6e00d9e Fixed commands 2020-10-02 12:49:40 +01:00
Laurent Cozic
b64c9cf18a Finished refactoring interop service 2020-10-02 12:42:25 +01:00
Laurent Cozic
275d6e230d Converted shim to TypeScript 2020-10-02 11:38:04 +01:00
Laurent Cozic
ab8ce15c33 Fixed command api 2020-10-02 10:42:03 +01:00
Laurent Cozic
3fb6179587 lonter 2020-10-02 01:03:39 +01:00
Laurent Cozic
28cc38064c Fixed interop plugin API to work with multi-process arch and cleaned up interop service 2020-10-02 00:44:42 +01:00
Laurent Cozic
1fa5ab2b96 Refactoring and got ipc messages to work 2020-10-01 23:42:49 +01:00
Laurent Cozic
15f4e635d9 Minor tweaks 2020-10-01 15:10:59 +01:00
Laurent Cozic
7a79d7ef7e Refactoring and got ipc messages to work 2020-10-01 14:47:38 +01:00
Laurent Cozic
776e7dfe3f renaming logger 2020-10-01 10:31:01 +01:00
Laurent Cozic
790b622cbc Updated doc 2020-09-30 23:38:28 +01:00
Laurent Cozic
89117b4ee9 Renamed 2020-09-30 23:36:27 +01:00
Laurent Cozic
c245517e0f Renamed to PlatformImplementation 2020-09-30 23:31:27 +01:00
Laurent Cozic
31db95d0c4 Cleaned up plugin API names 2020-09-30 23:17:18 +01:00
Laurent Cozic
2cd50de065 Moved plugin classes under /plugins namespace 2020-09-30 23:07:46 +01:00
Laurent Cozic
6dcb7e2605 Added doc 2020-09-30 17:19:34 +01:00
Laurent Cozic
9c9bd4ba51 Changed plugin system architecture to allow using one process per plugin 2020-09-30 16:56:41 +01:00
Laurent Cozic
71e6964945 Added proxy class 2020-09-30 10:24:15 +01:00
Laurent Cozic
97dc2fa6bd Fixed tests 2020-09-29 16:42:32 +01:00
Laurent Cozic
161e112e7b Added support for getting selected notes and adding a context menu item 2020-09-29 16:28:25 +01:00
Laurent Cozic
c93a6f86cd Added way to add a custom Markdown plugin 2020-09-29 15:29:11 +01:00
Laurent Cozic
9bb178b9d9 Fixed broken merge 2020-09-29 15:28:12 +01:00
Laurent Cozic
8087bc5280 Merge branch 'dev' into plugin_system 2020-09-29 14:30:33 +01:00
Laurent Cozic
26f5a606e0 Merge branch 'release-1.2' into dev 2020-09-29 14:29:38 +01:00
Laurent Cozic
9ebb574059 Merge branch 'release-1.2' of github.com:laurent22/joplin into release-1.2 2020-09-29 14:27:33 +01:00
Laurent Cozic
d29c3c2466 Desktop: Regression: Sidebar toggle button did not work anymore 2020-09-29 14:26:05 +01:00
Laurent Cozic
a71f1c19ec Android release v1.2.2 2020-09-29 12:40:46 +01:00
Laurent Cozic
485921d879 CLI v1.2.2 2020-09-29 12:34:42 +01:00
Laurent Cozic
15de7572c0 Electron release v1.2.3 2020-09-29 12:32:24 +01:00
Laurent Cozic
09f41dd50e Desktop: Make global search field wider when it has focus 2020-09-29 12:31:19 +01:00
Laurent Cozic
7b8ee467a0 Desktop: Improved rendering of All Notes item in sidebar 2020-09-29 11:49:51 +01:00
Laurent Cozic
99a496d684 Desktop: Always label "Click to add tags" 2020-09-29 11:33:22 +01:00
Laurent Cozic
100aaab58d Refactor reducer to TypeScript and using immerjs 2020-09-29 11:16:01 +01:00
Laurent Cozic
126c7b5a75 Merge branch 'dev' into reducer_refactor 2020-09-29 11:00:31 +01:00
Laurent Cozic
d448ea3a02 Merge branch 'dev' into plugin_system 2020-09-29 10:59:55 +01:00
Laurent Cozic
9d6975a9e2 Merge branch 'dev' of github.com:laurent22/joplin into dev 2020-09-29 10:57:34 +01:00
Laurent Cozic
555727e5fe Refactor reducer 2020-09-29 10:56:33 +01:00
Laurent Cozic
f43ee123d8 Tools: Fixed tests 2020-09-29 10:54:31 +01:00
Laurent Cozic
f42fb1b871 Changed tag label 2020-09-29 10:51:47 +01:00
Laurent Cozic
cf2442c5b2 Desktop: Fixes #3835: Prevent crash in rare case when opening the config screen 2020-09-29 08:40:14 +01:00
Laurent Cozic
e0e4735b03 Desktop: Fixes #3754: Refresh search results when searching by tag and when a tag is changed 2020-09-29 08:11:52 +01:00
osso73
138faa2aae All: Translation: Update ca.po (#3844) 2020-09-29 02:06:23 -04:00
Laurent Cozic
8bd58c9608 Merge branch 'release-1.2' of github.com:laurent22/joplin into release-1.2 2020-09-28 19:19:52 +01:00
Laurent Cozic
215a725ded Mobile: Fixes #3834: Fixed search highlights 2020-09-28 19:19:21 +01:00
Naveen M V
12c0a05af0 Desktop: Keep search fuzzy scores between 0 and 2 (#3812) 2020-09-28 18:58:19 +01:00
Caleb John
a7fa119041 Desktop: Extend functionality of codemirror vim (#3823)
add swapLine(Up/Down)
have `o` use the more complex list indent
enable sync initializing from vim (and maybe emacs)
split keymap stuff into it's own file
2020-09-28 18:57:17 +01:00
Laurent Cozic
7fb52b8b0e Desktop: Fix issue with highlighted search terms in CodeMirror viewer 2020-09-28 18:44:21 +01:00
Laurent Cozic
3e86ae4a82 Desktop: Disable fuzzy search for now due to performance issues 2020-09-28 18:41:16 +01:00
Laurent Cozic
77eceea426 Ensure plugin settings are within their own namespaces 2020-09-28 18:11:53 +01:00
Laurent Cozic
a09c6f152c Added support for plugin dialogs 2020-09-28 17:26:22 +01:00
Laurent Cozic
3830195752 Allow creating new section from plugin 2020-09-27 13:45:08 +01:00
Laurent Cozic
c9594065c3 Refactor Settings 2020-09-27 13:31:45 +01:00
Laurent Cozic
360d3bbff9 Allow creating new settings from plugin 2020-09-27 13:03:37 +01:00
Laurent Cozic
6fde8dfe52 Refactored Settings into TypeScript 2020-09-26 18:14:00 +01:00
Laurent Cozic
de2ccfbfe0 Added explanation for shim timers and implemented RN side 2020-09-26 12:42:44 +01:00
Laurent Cozic
31f53b12fd Move timers to shim 2020-09-26 12:19:13 +01:00
Laurent Cozic
d45b280ada Done text selection plugin 2020-09-25 11:18:06 +01:00
Ji-Hyeon Gim
ca46590ff3 All: Translation: Update ko.po (#3813)
Signed-off-by: Ji-Hyeon Gim <potatogim@potatogim.net>
2020-09-24 21:17:53 -04:00
Laurent Cozic
b5a137545e Add support getting and replacing editor selection 2020-09-24 18:35:20 +01:00
Laurent Cozic
4e80dbb7a7 Allow tagging desktop-only feature in plugin doc 2020-09-24 15:53:37 +01:00
Laurent Cozic
90b0c99806 Merge branch 'release-1.2' into plugin_system 2020-09-24 14:50:20 +01:00
Laurent Cozic
947d81d96d Desktop: Optimised sidebar rendering speed 2020-09-24 14:30:20 +01:00
Laurent Cozic
6ca640d2ed Desktop: Fix: Fade out checked items in Rich Text editor too 2020-09-23 17:49:25 +01:00
Laurent Cozic
c8c0c3af46 Changed to node-slug 2020-09-23 17:34:58 +01:00
Laurent Cozic
110de50bf9 Allow setting custom shortcuts and saving/loading them 2020-09-23 17:26:30 +01:00
Laurent Cozic
b7e110d888 Converted eventManager to TypeScript 2020-09-23 16:25:00 +01:00
Laurent Cozic
f1c557cb43 Converted app to TypeScript 2020-09-23 15:51:31 +01:00
Laurent Cozic
43e9fc92c9 Adding support for custom menu items 2020-09-23 15:24:42 +01:00
Laurent Cozic
10fa331731 Define plugin state types 2020-09-23 15:18:45 +01:00
Laurent Cozic
cc8e122de3 Added support for custom commands and toolbar buttons 2020-09-23 15:10:31 +01:00
Laurent Cozic
bca5fd8db9 gitignore 2020-09-23 14:10:02 +01:00
Laurent Cozic
13101f7d9b Merge branch 'dev' into plugin_system 2020-09-23 14:09:21 +01:00
Laurent Cozic
6aca233b21 CLI v1.2.1 2020-09-23 12:16:58 +01:00
Laurent Cozic
2200be697e Cli: Fixed crash due to missing spellfix extension 2020-09-23 12:14:17 +01:00
Laurent Cozic
25ab3c323b Desktop: Fixes #3801: Fixed editor font size 2020-09-23 11:39:36 +01:00
Laurent Cozic
5bf30a9586 Merge branch 'release-1.2' into dev 2020-09-23 10:24:55 +01:00
Laurent Cozic
b6779a8074 Desktop: Fixes #3810: Only disable relevant toolbar buttons when editor is read-only 2020-09-23 10:21:24 +01:00
Caleb John
59599d318c Desktop: Adjust the codemirror code block colors for the dark theme (#3794) 2020-09-23 09:34:39 +01:00
Arda Kılıçdağı
538600fd6c All: Translation: Update tr_TR.po (#3798) 2020-09-22 21:12:31 -04:00
Ji-Hyeon Gim
63264ba471 All: Translation: Update ko.po (#3778)
This patch includes the translation of missing strings, the improvement of the existing translation

Signed-off-by: Ji-Hyeon Gim <potatogim@potatogim.net>
2020-09-22 21:11:55 -04:00
Laurent Cozic
95e7f3df7d Electron release v1.2.2 2020-09-22 16:39:18 +01:00
Laurent Cozic
366fd2a333 Fixed desktop build 2020-09-22 16:38:47 +01:00
Laurent Cozic
5be99a4a16 Merge branch 'release-1.2' of github.com:laurent22/joplin into release-1.2 2020-09-22 16:37:23 +01:00
Laurent Cozic
d86f6a1fbd Tools: Require setting type flag for new Android releases 2020-09-22 16:36:46 +01:00
Laurent Cozic
7d68208cb4 Android release v1.2.1 2020-09-22 16:17:11 +01:00
Laurent Cozic
e9de9d9128 Electron release v1.2.1 2020-09-22 16:02:51 +01:00
Laurent Cozic
1af16d9f0b Tools: Update package locks 2020-09-22 16:02:22 +01:00
Laurent Cozic
8e11eababa Android: Fixes #3797: Disable beta editor even if it was already enabled 2020-09-22 16:01:00 +01:00
Laurent Cozic
4ec9faadd5 Desktop: Disable auto-update by default 2020-09-22 15:41:25 +01:00
Laurent Cozic
5cf462c885 Tools: Increase release version to 1.2 2020-09-22 15:31:32 +01:00
Laurent Cozic
f7ef0a2b1e Tools: Added script to automatically increase major and minor version numbers on new releases 2020-09-22 15:30:20 +01:00
Laurent Cozic
870f55a6c5 Merge branch 'release-1.2' of github.com:laurent22/joplin into release-1.2 2020-09-22 14:37:34 +01:00
Caleb John
7f7e38b434 Desktop, Mobile: Resolves #3740: Upgrade Mermaid to v8.8.0 (#3745)
Co-authored-by: Laurent <laurent22@users.noreply.github.com>
2020-09-22 13:21:35 +01:00
Caleb John
460a07b1a3 Desktop: Fix missed highlighting when using the global search (#3717) 2020-09-22 13:17:51 +01:00
Caleb John
48c9b86d2b Desktop: Fixes #3791: Add stricter rules for katex blocks (#3795) 2020-09-22 13:16:37 +01:00
Caleb John
7202066c1f Desktop: Fix bug where editor would scroll to focus global search (#3787) 2020-09-22 13:12:22 +01:00
Carlos Eduardo
5226f0019b Desktop: Add frequently used languages to markdown editor (#3786) 2020-09-22 13:11:12 +01:00
Laurent Cozic
26ac745419 Deskop, Cli: Fixes #3780: Fixed link generation when exporting to PDF or HTML 2020-09-22 12:56:56 +01:00
Laurent Cozic
b3f2bbee5b Desktop, Cli: Fixes #3760: Improved handling of special characters when exporting to Markdown 2020-09-22 12:06:19 +01:00
Laurent Cozic
56c6cfc785 Update website 2020-09-21 17:53:14 +01:00
Laurent Cozic
1db4932573 Merge branch 'release-1.2' into dev 2020-09-21 17:52:25 +01:00
Laurent Cozic
a2873ebbc5 Merge branch 'release-1.1' into dev 2020-09-21 17:52:19 +01:00
Laurent Cozic
f652011d59 Desktop: Fixes #3748: Fixed issue when switching from search to "All notes" 2020-09-21 17:50:59 +01:00
Laurent Cozic
27c572b2f5 Desktop: Fixes #3700: Disable editor shortcuts when a dialog, such as GotoAnything, is visible 2020-09-21 17:31:25 +01:00
Laurent Cozic
7a4c97618d Desktop: Improved menu enabled states when not in main screen 2020-09-21 17:09:57 +01:00
Laurent Cozic
3ac4fbeee5 Desktop, Mobile: Fixes #3698: Always use light theme for notes in HTML mode 2020-09-21 16:41:24 +01:00
Laurent Cozic
9e05fa553c Desktop: Fixes #3684: Allow Read Time label to be translated 2020-09-21 16:16:28 +01:00
Laurent Cozic
d4f0d2423d CLI v1.1.8 2020-09-21 13:03:33 +01:00
Laurent Cozic
abdd7e3256 Tools: Improved git changelog 2020-09-21 13:01:46 +01:00
Laurent Cozic
f3ea476f27 Merge branch 'release-1.1' of github.com:laurent22/joplin into release-1.1 2020-09-21 12:40:28 +01:00
Laurent Cozic
aa22af443c Tools: Clean up after spellfix build 2020-09-21 12:35:20 +01:00
Laurent Cozic
ce3bd2a47d Tools: Fixed Cli version handling 2020-09-21 12:16:05 +01:00
Laurent Cozic
a9b26246e6 Merge branch 'dev' into release-1.2 2020-09-21 11:56:32 +01:00
Laurent Cozic
cc1e941dd9 Merge branch 'release-1.1' into dev 2020-09-21 11:55:47 +01:00
Laurent Cozic
9610b7e6bd Electron release v1.1.4 2020-09-21 11:42:26 +01:00
Laurent Cozic
4f2884a0f7 Started adding support for registering commands 2020-09-21 11:38:09 +01:00
Laurent Cozic
4872f1419c Also add placeholder for JSON import 2020-09-20 16:57:17 +01:00
Laurent Cozic
fdcaab3caf Got JSON export working as a plugin 2020-09-20 16:19:37 +01:00
Laurent Cozic
9f2c4b938f Added complete lib to plugin doc 2020-09-20 15:36:30 +01:00
Laurent Cozic
8be65acf7d Testing interop plugin 2020-09-20 12:09:32 +01:00
Marc BOUVIER
ad85a12535 All: Translation: Update fr_FR.po (#3776) 2020-09-19 13:35:05 -04:00
Ji-Hyeon Gim
b825346829 All: Translation: Update ko.po (#3771)
Update ko.po translations.

Signed-off-by: Ji-Hyeon Gim <potatogim@potatogim.net>
2020-09-19 13:32:37 -04:00
Ettore Atalan
bd4cbaf93d All: Translation: Update de_DE.po (#3770)
This patch includes the translation of missing strings, the improvement of the existing translation and the replacement of Anglicisms by German words.
2020-09-19 13:31:25 -04:00
Laurent Cozic
e05aa433e4 Allow creating custom exporters 2020-09-19 15:50:46 +01:00
Laurent Cozic
ccfb0b43d6 Refactor 2020-09-19 14:56:49 +01:00
Laurent Cozic
4211e962c6 Merge branch 'release-1.2' into plugin_system 2020-09-19 14:22:24 +01:00
Laurent Cozic
9af2a19bdf Merge branch 'dev' into release-1.2 2020-09-19 14:22:02 +01:00
Laurent Cozic
d3fa906a9a Merge branch 'dev' of github.com:laurent22/joplin into dev 2020-09-19 14:20:02 +01:00
Laurent Cozic
6b54c4244b Refactored 2020-09-19 14:19:09 +01:00
Laurent Cozic
1d5a4bd381 Simplified interop interface 2020-09-19 12:20:01 +01:00
Laurent Cozic
86a1103a64 Remove JSON exporter 2020-09-19 11:13:49 +01:00
Laurent Cozic
45edaaa96f Converted interop service to TypeScript 2020-09-19 11:04:29 +01:00
Laurent Cozic
b7b158aa94 Fixed doc title 2020-09-18 15:53:25 +01:00
Laurent Cozic
e6bc55b6f8 Update plugin doc 2020-09-18 15:46:25 +01:00
Laurent Cozic
111092791c Updated plugin doc 2020-09-18 13:10:47 +01:00
Laurent Cozic
4e91e01ddc Updated plugin doc 2020-09-18 13:08:01 +01:00
Laurent Cozic
44dce6c6c3 Fixed frozen state issue 2020-09-18 10:10:26 +01:00
Laurent Cozic
b25ad50a1b Add more doc 2020-09-18 09:59:22 +01:00
Gen Neko
22679641ee All: Translation: Update ja_JP.po (#3761) 2020-09-18 01:56:18 -04:00
Laurent Cozic
e2e3be66ee doc 2020-09-17 18:02:57 +01:00
Laurent Cozic
4b3119ebba Finished tutorial 2020-09-17 17:39:15 +01:00
Laurent Cozic
1712a67e2e Doc draft 2020-09-17 16:19:25 +01:00
Laurent Cozic
cd563b050c Bottom border on user views 2020-09-17 15:41:05 +01:00
Laurent Cozic
4426f2dbec Make sure plugin views can be resized 2020-09-17 15:08:43 +01:00
Laurent Cozic
0fbbf2eee0 Remember plugin view sizes 2020-09-17 14:51:50 +01:00
Laurent Cozic
0ca7457000 Electron release v1.1.3 2020-09-17 10:19:25 +01:00
Laurent Cozic
c84e49c71c All: Fixes #3696: Increased file extension limit to 20 to prevent issue when using external editors 2020-09-17 10:17:45 +01:00
Laurent Cozic
07ab0e986d Merge branch 'release-1.1' of github.com:laurent22/joplin into release-1.1 2020-09-17 10:00:30 +01:00
Laurent Cozic
17957f5da4 Desktop, Cli: Do not prevent export when one item is still encrypted 2020-09-17 10:00:13 +01:00
Naveen M V
a7b5d43e69 Desktop: Fix: Creating a note after backward redirection places it in a wrong notebook (#3759) 2020-09-17 09:32:52 +01:00
Caleb John
38eda3f151 Desktop: Fixes #3749: Use joplin list handling in emacs mode (#3758) 2020-09-17 09:29:19 +01:00
Laurent Cozic
2fdad2fe80 Make sure user views have a stable ID 2020-09-17 09:22:03 +01:00
Laurent Cozic
0249ff48ca Removed obsolete handlers 2020-09-17 08:51:12 +01:00
Laurent Cozic
142fc02f9c Simplified UserWebview component 2020-09-16 17:57:30 +01:00
Laurent Cozic
842b123285 Fixed slub 2020-09-16 17:30:39 +01:00
Laurent Cozic
a4aca68b85 Support for theme in webview 2020-09-16 17:27:13 +01:00
Laurent Cozic
1397af0692 User webviews 2020-09-16 16:19:33 +01:00
Laurent Cozic
5da760dd0c Added a way to load a plugin for development 2020-09-15 17:49:43 +01:00
Laurent Cozic
511d58d3af Various improvements 2020-09-15 17:02:02 +01:00
Laurent Cozic
a1c9e675ad Improve plugin build 2020-09-15 16:56:48 +01:00
Laurent Cozic
0349ad0b80 Merge branch 'release-1.2' into plugin_system 2020-09-15 14:41:47 +01:00
Laurent
056285deda Desktop: UI update (#3586) 2020-09-15 14:01:07 +01:00
Laurent Cozic
9d8411a25e Add TOC plugin demo 2020-09-15 13:47:47 +01:00
Laurent Cozic
754ba2267a Merge branch 'dev' into plugin_system 2020-09-15 13:41:57 +01:00
Laurent Cozic
bdedf69439 Tools: Remove console statement 2020-09-15 12:13:29 +01:00
Laurent Cozic
c9451d8675 Electron release v1.1.2 2020-09-15 12:12:16 +01:00
Laurent Cozic
c38834b04c Updated French translation 2020-09-15 12:08:49 +01:00
Laurent Cozic
851eee1500 Fixed and simplified translations 2020-09-15 12:08:25 +01:00
Laurent Cozic
4cdac308d1 Wraps console calls 2020-09-15 10:36:32 +01:00
Laurent Cozic
c0d5c7c282 Merge branch 'dev' into plugin_system 2020-09-14 14:06:21 +01:00
Laurent Cozic
40e24102ce Merge branch 'release-1.1' into dev 2020-09-14 13:06:56 +01:00
Laurent Cozic
7614a795e9 Fixed tests 2020-09-14 13:06:33 +01:00
Laurent Cozic
1273a1dc5f Merge branch 'dev' of github.com:laurent22/joplin into dev 2020-09-14 11:26:41 +01:00
Laurent Cozic
10909fe4fc Merge branch 'release-1.1' into dev 2020-09-14 11:26:27 +01:00
Laurent Cozic
9b3d3026bf Merge branch 'release-1.0' into dev 2020-09-14 11:26:18 +01:00
Laurent Cozic
96076c84f4 CLI v1.0.168 2020-09-14 09:50:09 +01:00
Helmut K. C. Tessarek
2c553db45a Update translations 2020-09-14 02:22:27 -04:00
Laurent Cozic
7d7005596f Desktop: Security: Upgrade packages to fix vulnerabilities 2020-09-13 17:25:46 +01:00
Laurent Cozic
998dd52adc Desktop: Clarifies labels of certain actions, and added shortcut for note list toggle 2020-09-13 17:21:11 +01:00
Patryk Długajczyk
2a1c6d6475 Linux: Fixes #3720: Fix icons path in AppImage build (#3721) 2020-09-12 00:45:44 +01:00
Laurent Cozic
1ba0644142 Merge branch 'release-1.1' of github.com:laurent22/joplin into release-1.1 2020-09-12 00:24:10 +01:00
Laurent Cozic
88ac57d7f3 Tools: Fixed handling of security vulnerabilities in git-changelog 2020-09-12 00:22:17 +01:00
Laurent Cozic
314686bede Android release v1.1.1 2020-09-12 00:18:03 +01:00
Laurent Cozic
af8845f209 Tools: Fixed Android version handling 2020-09-12 00:10:18 +01:00
Laurent Cozic
c95d7f9d37 Electron release v1.1.1 2020-09-12 00:06:59 +01:00
Laurent Cozic
2510c659e6 Clear build number 2020-09-12 00:06:25 +01:00
Laurent Cozic
b7523e1b21 Merge branch 'dev' into release-1.1 2020-09-12 00:03:29 +01:00
Laurent Cozic
e4e9e801a2 Android: Fix build 2020-09-11 23:57:06 +01:00
Laurent Cozic
524ec12d8a Android: Remove option for new editor as it crashes the app 2020-09-11 23:56:45 +01:00
Laurent Cozic
1108e8c28a Merge branch 'release-1.0' into dev 2020-09-11 23:34:44 +01:00
Laurent Cozic
0f1156ab9c Desktop: Fixed clock sync logic when creating new sync target 2020-09-11 23:33:34 +01:00
Laurent Cozic
2a08cc332a Merge branch 'dev' of github.com:laurent22/joplin into dev 2020-09-11 23:02:53 +01:00
Naveen M V
5d2baa872e Desktop: Fix wildcard search (#3713) 2020-09-11 22:52:32 +01:00
Naveen M V
4b377589aa Desktop: Fix bug with quotes when searching (#3735) 2020-09-11 11:30:57 +01:00
Laurent Cozic
cf78204c85 Doc: Added more info about sync lock refresh mechanism 2020-09-11 11:26:07 +01:00
Laurent Cozic
c513cdd4eb Desktop: Sync immediately on startup 2020-09-09 14:45:26 +01:00
Laurent Cozic
5f410e80e6 Merge branch 'release-1.0' into dev 2020-09-09 13:59:36 +01:00
Laurent Cozic
2aa7eaa192 Electron release v1.0.245 2020-09-09 12:39:06 +01:00
Laurent Cozic
b24d060281 All: Got clock sync to work on mobile 2020-09-09 12:25:31 +01:00
Laurent Cozic
a014b9347e Merge branch 'release-1.0' of github.com:laurent22/joplin into release-1.0 2020-09-09 11:39:57 +01:00
Laurent Cozic
582ab4ac13 All: Implemented more reliable way to sync device and server clocks that would work with filesystem sync too 2020-09-09 11:39:13 +01:00
Laurent Cozic
c9adccad4a Get NTP time working on Android 2020-09-09 10:56:17 +01:00
Laurent Cozic
f41ba67e15 Improved ntp time 2020-09-09 00:34:27 +01:00
Laurent Cozic
1f70a76c7e Desktop: Fixes #3729: Fix lock issue when device does not have the right time 2020-09-08 23:57:48 +01:00
Cristi
5fe3732a38 All: Translation: Update ro.po (#3728) 2020-09-08 18:29:07 -04:00
Harris Arvanitis
445533cfcc All: Translation: Update el_GR.po (#3718) 2020-09-08 18:28:42 -04:00
Laurent Cozic
a8e29249d6 Electron release v1.1.244 2020-09-08 01:03:29 +01:00
Laurent Cozic
e4a3cbd2ff Increase minor version 2020-09-08 01:03:12 +01:00
Laurent Cozic
96b7ce9d50 Electron release v1.0.243 2020-09-08 00:57:35 +01:00
Laurent Cozic
2bbc1e7ecd Desktop: Fixes #3710: Fix applying tags to multiple notes 2020-09-08 00:49:58 +01:00
Laurent Cozic
83619b279d Desktop: Fixes #3697: Fixed copying link in Rich Text editor 2020-09-08 00:29:31 +01:00
Laurent Cozic
8b5a99d494 Desktop: Fixes #3553: Fixed viewer font size, in particular for inline code 2020-09-08 00:00:43 +01:00
Laurent Cozic
67d4123608 Desktop: Add log statement to try to fix issue #3536 2020-09-07 23:55:37 +01:00
Laurent Cozic
a424e3c899 Desktop, Cli: Fixes #3689: Fixed note export when there are folders with non-existing parents. Also fixed long path issue on Windows. 2020-09-07 22:12:51 +01:00
Laurent
08d4b5a714 Mobile: Fixes #3022: Fix issue with action button disappearing in some contexts (#3702) 2020-09-07 17:42:16 +01:00
Laurent Cozic
68aefd5e4c Desktop: Rename menu item from "Export" to "Export all" to clarify what it does 2020-09-07 17:33:51 +01:00
Laurent Cozic
57d750bc9a All: Security: Disallow EMBED tags to prevent XSS vulnerability 2020-09-06 19:29:42 +01:00
Caleb John
fbe966903b Desktop: Resolves #3560: Make codemirror the default code editor (#3703) 2020-09-06 16:28:23 +01:00
Jose Esteve
652748f969 Cli: Resolves #3711: Fix keytar library being loaded up in FreeBSD. (#3712)
Issue https://github.com/laurent22/joplin/issues/3711

This patch replaces the 'isLinux' check by a more restrictive version
which fixes the false positive in BSD systems. This was causing Joplin
not to load due to the lack of X11 in headless mode.
2020-09-06 15:20:38 +01:00
Naveen M V
e108fdb1d8 Desktop: Fuzzy search (#3632) 2020-09-06 13:07:00 +01:00
Anjula Karunarathne
a8296e2e37 Desktop: Add keyboard shortcut editor (#3525) 2020-09-06 13:00:25 +01:00
Laurent Cozic
0998fc0ad7 Doc: Update dontate page 2020-09-05 22:49:40 +01:00
Laurent Cozic
d5f3e860b9 Merge branch 'dev' of github.com:laurent22/joplin into dev 2020-09-05 22:48:42 +01:00
Laurent Cozic
4e624f7db5 Doc: Added new sponsor 2020-09-05 22:28:28 +01:00
Anton Deriabin
5b697b7e16 Doc: Fixed wrong e2ee spec link (#3655) 2020-09-05 00:14:49 +01:00
Caleb John
30e0d69a74 Desktop: Load Codemirror css in index.html (#3673) 2020-09-05 00:02:20 +01:00
Caleb John
652816fd26 Desktop: Change codemirror default home and end to be visual line based (#3672) 2020-09-05 00:01:06 +01:00
Laurent Cozic
3a33e5f416 Electron release v1.0.242 2020-09-04 22:46:26 +01:00
Laurent Cozic
277dac5512 Desktop: Fixes sync target upgrade issue when custom TLS settings are used 2020-09-04 22:46:09 +01:00
Laurent Cozic
81d97d9f9d Update website 2020-09-04 19:34:43 +01:00
Laurent Cozic
a4873cd40d Android release v1.0.340 2020-09-04 19:22:28 +01:00
Laurent Cozic
20cb2daf43 Merge branch 'dev' of github.com:laurent22/joplin into dev 2020-09-04 19:15:04 +01:00
Laurent Cozic
e5b5250a91 Tools: Make it easier to create Android pre-releases 2020-09-04 19:11:46 +01:00
Laurent Cozic
db7d617e2b Update website 2020-09-04 19:06:36 +01:00
Laurent Cozic
a627884876 Merge branch 'dev' of github.com:laurent22/joplin into dev 2020-09-04 18:31:01 +01:00
Laurent Cozic
ed30d09e07 ios-v10.0.53 2020-09-04 18:30:43 +01:00
Laurent Cozic
179e3f9aee Electron release v1.0.241 2020-09-04 18:25:04 +01:00
Laurent Cozic
a67aedba35 Tools: Fixed changelog script 2020-09-04 18:24:53 +01:00
Laurent Cozic
199c411a7d CLI v1.0.167 2020-09-04 18:17:24 +01:00
Laurent Cozic
5cd7bb5bdb Electron release v1.0.240 2020-09-04 18:01:38 +01:00
Laurent Cozic
30b8f5e2aa Merge branch 'dev' of github.com:laurent22/joplin into dev 2020-09-04 18:01:05 +01:00
Laurent Cozic
44f2842820 Android release v1.0.339-3 2020-09-04 17:28:18 +01:00
Laurent Cozic
569355a318 Mobile: Add startup screen to show progress of db migration 2020-09-04 17:07:57 +01:00
Laurent Cozic
8464e16d5d Doc: Added note on how to update Katex or Mermaid package 2020-09-02 22:54:58 +01:00
Laurent Cozic
874c1e3e82 Fixing mermaid script 2020-09-02 22:51:16 +01:00
Laurent Cozic
2530ecfc86 All: Fixes #3664: Fixed Katex font rendering 2020-09-02 22:48:24 +01:00
Laurent Cozic
6b49f1dfcc Desktop: Fixes #3618: Fix links within Mermaid documents 2020-09-02 22:44:24 +01:00
Laurent Cozic
b1af25ea18 Electron release v1.0.239 2020-09-01 22:26:52 +01:00
Laurent Cozic
3086007a9c Electron release v1.0.238 2020-09-01 22:25:42 +01:00
Laurent Cozic
bdfb6b97f5 Desktop: Fixes #3645: Improved handling of startup errors, and prevent window from being invisible when upgrading sync target 2020-09-01 22:25:23 +01:00
Laurent Cozic
c01219e6be Merge branch 'dev' of github.com:laurent22/joplin into dev 2020-09-01 20:55:12 +01:00
Laurent Cozic
743c11c279 Android release v1.0.338 2020-08-30 20:42:09 +01:00
Laurent Cozic
11646d1c21 Desktop: Added more logging info to sync target upgrade process 2020-08-29 19:12:02 +01:00
Laurent Cozic
797f4a9669 Electron release v1.0.237 2020-08-29 11:28:12 +01:00
Laurent Cozic
815775ad8f Linux: Fixes #3645: Prevent lock when restarting app 2020-08-29 11:27:13 +01:00
Eduardo Kimmel
085109288f All: Translation: Update pt_BR.po (#3668)
Updated some pt_br translations.
2020-08-28 17:43:30 -04:00
Alexander Knyazev
c6cf0f3ba5 All: Translation: Update ru_RU.po (#3666)
Co-authored-by: Alexander Knyazev <a.knyazev@omprussia.ru>
2020-08-28 17:42:31 -04:00
rnbastos
f9bdce7e24 All: Translation: Update pt_BR.po (#3642)
Update pt_BR translation.
2020-08-28 17:41:29 -04:00
Kourosh
f8cf4db5db All: Translation: Update fa.po (#3637) 2020-08-28 17:40:33 -04:00
Laurent Cozic
14e6ae373f Electron release v1.0.236 2020-08-28 09:49:48 +01:00
jonath92
39bffd2790 Regression: Fixed OneDrive synchronisation (#3674) 2020-08-28 09:46:41 +01:00
Laurent
f3cb903901 Doc: Mentioned that we don't accept pull requests created using an automated tool 2020-08-20 11:55:13 +01:00
Laurent Cozic
abad1883bc Merge branch 'master' into dev 2020-08-19 14:30:36 +01:00
Laurent Cozic
bb8770a967 Update website 2020-08-19 14:29:49 +01:00
Laurent Cozic
c903947704 Merge branch 'dev' of github.com:laurent22/joplin into dev 2020-08-19 00:12:33 +01:00
Naveen M V
82e96840e9 All: When searching, weight notes using Okapi BM25 score (#3454) 2020-08-18 23:53:28 +01:00
Laurent Cozic
e190d90832 Desktop: Fixed restarting portable app 2020-08-18 23:51:23 +01:00
Caleb John
0ae8d454ad Focus the editor whenever the user toggles the visible panes (#3646) 2020-08-18 22:26:57 +01:00
Laurent Cozic
77c7f966cf Electron release v1.0.235 2020-08-18 21:56:50 +01:00
Laurent Cozic
619fa1d607 Revert "Desktop, Mobile: Add support for media player for video and audio files"
Reverted as it now attempts to render note links as images. See:

https://discourse.joplinapp.org/t/joplin-for-windows-1-0-234-bug/10558?u=laurent

This reverts commit 13280ce1b3.
2020-08-18 21:52:00 +01:00
Laurent Cozic
157736ff7e Desktop: Fixed regression: Several menu items did not work anymore 2020-08-18 21:45:22 +01:00
Naveen M V
0b57d906f8 Doc: Update search engine doc (#3614)
Add documentation for search filters
2020-08-18 00:15:00 +01:00
Laurent Cozic
86bfdb5c79 Android release v1.0.337 2020-08-17 21:48:37 +01:00
Laurent Cozic
fc7d34f79c Electron release v1.0.234 2020-08-17 21:44:40 +01:00
Matias Laporte
9d962f0328 All: Translation: Update es_ES.po (#3629) 2020-08-13 20:38:30 -04:00
Laurent Cozic
79e1a33b28 Fixed tabs 2020-08-08 10:21:25 +01:00
Caleb John
0eedae1f62 Desktop: Fixed vim mode issue where status bar was not visible (#3606) 2020-08-08 10:15:01 +01:00
Caleb John
e1144c098e Desktop: Fixed scrolling issue when editing while searching in CodeMirror (#3593)
Only scroll to search matchs when the user changes the search or
explicitly changes the search index
https://discourse.joplinapp.org/t/codemirror-feedback/10397
2020-08-08 10:11:55 +01:00
Caleb John
5c5cb0f781 Desktop: Implement scroll-past-end on CodeMirror editor (#3589) 2020-08-08 09:55:10 +01:00
Laurent Cozic
656615b571 Merge branch 'dev' of github.com:laurent22/joplin into dev 2020-08-08 00:35:55 +01:00
jonath92
799a9e810d All: Resolves #1266: Add support for OneDrive for Business (#3433) 2020-08-08 00:35:30 +01:00
R3dError
aa147bbcdc Desktop: Added attach file to menu bar (#3540) 2020-08-08 00:32:49 +01:00
alexchee
8c7a24282c All: Fixes #3591: Fixed sync fetching issue (#3599) 2020-08-08 00:30:11 +01:00
Naveen M V
f99f3f8a6d All: Resolves #1877: Add search filters (#3213) 2020-08-08 00:13:21 +01:00
Laurent Cozic
29fbafdfff Mobile: Fixed issue when creating new notebook and going back 2020-08-07 02:03:33 +00:00
Laurent Cozic
3253146dae Merge branch 'master' into dev 2020-08-06 15:30:00 +01:00
Laurent Cozic
7e4ac0fd73 Tools: Add complexity rule 2020-08-05 23:16:51 +00:00
Laurent Cozic
60d77cb5ea ios-v10.0.52 2020-08-05 15:57:21 +01:00
Laurent Cozic
8299164964 Android release v1.0.336 2020-08-05 00:18:42 +01:00
Laurent Cozic
488393e75d Mobile: Fixes #3597: Fixed regression when saving a new notebook 2020-08-05 00:08:11 +01:00
Laurent Cozic
c19f8c8035 Mobile: Fixes #3597: Fixed regression when saving a new notebook 2020-08-05 00:07:55 +01:00
Laurent Cozic
b0b55718cc Merge branch 'dev' of github.com:laurent22/joplin into dev 2020-08-04 23:00:38 +01:00
Laurent Cozic
5ade9ff2f6 Tools: Updated eslint and clarified comma-dangle rule 2020-08-04 23:00:11 +01:00
Allan Jacquet-Cretides
e4cfb518ba Desktop: Resolves #3569: Show full folder name in mouse-over pop-up text (#3590) 2020-08-04 22:45:32 +01:00
Laurent Cozic
89864de1ff Tools: Added eslint radix rule 2020-08-04 22:36:50 +01:00
Laurent
ee2a474611 Update .travis.yml 2020-08-04 22:31:59 +01:00
Caleb John
223caca0f5 Desktop: Enable CodeMirror keybindings (#3545) 2020-08-02 16:26:26 +01:00
Laurent Cozic
ee358f70dd Desktop: Add version info to error screen 2020-08-02 16:21:30 +01:00
Laurent Cozic
0718828d60 Merge branch 'master' into dev 2020-08-02 16:12:11 +01:00
Laurent Cozic
d13f54c2ce CLI v1.0.166 2020-08-02 15:03:57 +01:00
Laurent Cozic
90f7f99cd1 ios-v10.0.51 2020-08-02 15:01:39 +01:00
Laurent Cozic
a273bbaeee Fixed Android build 2020-08-02 13:37:32 +01:00
Laurent Cozic
619b426689 Android release v1.0.335 2020-08-02 13:34:09 +01:00
Laurent Cozic
97c752a39e Fixed config 2020-08-02 13:16:41 +01:00
Laurent Cozic
7565f1cada Fixed mobile version build 2020-08-02 12:38:36 +01:00
Laurent
0c147236a3 All: Add mechanism to lock and upgrade sync targets (#3524) 2020-08-02 12:28:50 +01:00
Anjula Karunarathne
88f22fabf7 Desktop: Added KeymapService to manage keyboard shortcuts (#3252) 2020-08-02 12:26:55 +01:00
Thatcher Chamberlin
5f46d60c5e Desktop, Cli, Update Katex to v0.12.0 (#3571) 2020-08-02 12:24:03 +01:00
Jess
cc8c200826 Desktop: Resolves #3529: Fix AppImage Icon (#3570) 2020-08-02 12:17:51 +01:00
Laurent
4485947b0f Desktop: Fixed copy, cut and paste in Rich Text editor (#3565) 2020-08-02 12:16:42 +01:00
Roman Musin
9f1a877f96 Android: remove hardcoded portrait screen orientation for share activity (#3418) 2020-08-02 12:14:56 +01:00
Laurent Cozic
13280ce1b3 Desktop, Mobile: Add support for media player for video and audio files
Co-authored-by: Bryan <bryan.r.gerlach@gmail.com>
2020-08-02 12:03:49 +01:00
Caleb John
7f73931530 Desktop: Fixes #3560: Modify the CodeMirror linter plugin to fix katex (#3582)
Rewrite the joplin mode to manually handle parsing.

This gives us more control over katex parsing and the ability to upgrade
in the future
2020-08-02 11:33:59 +01:00
Caleb John
bbfed9bca8 Desktop: Codemirror: clean up list indent code (#3581) 2020-08-01 19:09:52 +01:00
Caleb John
bab29cd582 Desktop: Toggle Editor rather than setting split mode on search (#3561) 2020-08-01 19:07:52 +01:00
Laurent
f9296992bf Merge branch 'dev' into plugin_system 2020-08-01 18:58:08 +01:00
Laurent Cozic
baea44cbd6 Fixed mobile version build 2020-08-01 18:56:56 +01:00
Laurent Cozic
ab0538df43 All: Security: Apply latest package security updates 2020-08-01 18:56:26 +01:00
Laurent Cozic
5b06ebde1e Updated 2020-08-01 18:38:43 +01:00
Laurent Cozic
d309c75974 Merge branch 'dev' into plugin_system 2020-08-01 18:35:05 +01:00
Laurent Cozic
58d4a69053 Merge branch 'dev' of github.com:laurent22/joplin into dev 2020-08-01 18:21:42 +01:00
Laurent
9147b3061a Desktop: Hide completed to-dos in GotoAnything (#3580) 2020-08-01 18:17:40 +01:00
Laurent
1b0102f62c Update stale.yml 2020-08-01 18:15:17 +01:00
j-krl
471631933b CLI: Resolves #3217: Added link navigation shortcuts (#3275) 2020-08-01 17:57:45 +01:00
Laurent
cd761932c1 Merge branch 'dev' into cli-shortcuts-ts 2020-08-01 17:50:03 +01:00
Laurent Cozic
e63eee89ef Electron release v1.0.233 2020-08-01 15:27:30 +01:00
Laurent Cozic
4393ebbcc6 Desktop: Fixed potential crash when notebook does not have a title 2020-08-01 15:20:17 +01:00
Laurent Cozic
ed82390a8d Desktop: Fixed toolbar button state when going from setting screen to main screen 2020-08-01 15:11:14 +01:00
Laurent Cozic
79e708779f Merge branch 'master' of github.com:laurent22/joplin 2020-08-01 14:49:31 +01:00
Laurent Cozic
98905f6892 Tools: Cleaned up and improve build config, and fixed TypeScript Watch high CPU usage 2020-08-01 14:48:56 +01:00
Retew
44e57c3959 All: Translation: Update ru_RU.po (#3579) 2020-07-29 23:35:43 -04:00
voltinus
35d48394ce All: Translation: Update pl_PL.po (#3577) 2020-07-29 23:32:24 -04:00
Laurent Cozic
eb42a5f34b Mobile: Reduced auto-sync interval when opening app, and fixed Amazon S3 config 2020-07-28 22:47:24 +00:00
Laurent Cozic
729c8c6fac Electron release v1.0.232 2020-07-28 19:11:14 +01:00
Laurent Cozic
7a1707d864 Finished reverting hierarchical tag feature 2020-07-28 19:09:50 +01:00
Laurent Cozic
64d7603eed Revert "All: Added support for hierarchical/nested tags (#2572)"
This reverts commit e11e57f1d8.
2020-07-28 18:50:34 +01:00
Laurent Cozic
89e6b680a6 Revert "Desktop: Regression: Fix sort tags alphabetically in side-menu (#3489)"
This reverts commit 10ff43f4f0.
2020-07-28 18:49:34 +01:00
Helmut K. C. Tessarek
da071a804c Update website 2020-07-27 13:27:45 -04:00
Helmut K. C. Tessarek
7833ca5ae6 https://joplin.cozic.net -> https://joplinapp.org 2020-07-27 13:26:17 -04:00
Mehrad Mahmoudian
44d49b57b9 fixed a typo and added checked checkbox in Markdown Guide (#3556)
* Doc: Fixed a typo in a markdown syntax of a link

* Doc: added an example of a checked checkbox

and added how the checkboxes would get translated when turned to HTML

* Doc: added a picture of a rendered markdown checkbox in Joplin
2020-07-27 13:19:11 -04:00
Laurent
9db150f8ff Update stale.yml 2020-07-27 11:06:45 +01:00
Laurent Cozic
e2d3630783 Tools: Added sync target snapshots 2020-07-25 11:38:43 +01:00
Laurent Cozic
cb1b5cae9f Update website 2020-07-24 19:46:27 +01:00
Laurent Cozic
3af5b31c1c Merge branch 'master' of github.com:laurent22/joplin 2020-07-24 19:44:33 +01:00
Laurent Cozic
b6dafd6da6 Doc: Showcasing plugins as screenshots (#3549)
Co-authored-by: Mehrad Mahmoudian <m.mahmoudian@gmail.com>
2020-07-24 19:42:44 +01:00
Laurent Cozic
d08b922632 Electron release v1.0.231 2020-07-24 18:02:12 +01:00
Laurent Cozic
9d4e250f6b Electron release v1.0.230 2020-07-24 17:45:14 +01:00
Laurent Cozic
c19cc1b39a Merge branch 'master' of github.com:laurent22/joplin 2020-07-24 17:28:55 +01:00
Laurent Cozic
73bd6f9776 Update turndown 2020-07-24 17:28:28 +01:00
WhiredPlanck
6fef55398f All: Translation: Update zh_CN.po (#3542)
* [trans] Update zh_CN.po

* [trans] Give the specific names of AWS secret and AWS key
2020-07-24 11:58:09 -04:00
Laurent Cozic
d209d5036b Desktop, Cli: Security: Fixed a path traversal vulnerability in clipper server API that could allow an attacker to read or write an arbitrary file (CVE-2020-15844) 2020-07-24 00:45:15 +00:00
Laurent Cozic
4be02bc33c Desktop: Fixed save issue in Rich Text editor when making a change to a note and quickly switching to a different notebook 2020-07-23 23:55:01 +00:00
Laurent Cozic
d6daa34e0a Linter 2020-07-23 23:06:58 +00:00
Laurent Cozic
9cebbbe7cf Desktop, Cli: Fixed attachments being out of order when importing Enex file 2020-07-23 18:43:01 +01:00
Laurent Cozic
71e5304298 Desktop: Fixes #3534: Undoing changes multiple time on an existing note could result in a blank note 2020-07-23 19:56:53 +00:00
Laurent Cozic
8f8d11c9b3 Desktop: Fixes #3510: Note links would be broken after saving a note in Rich Text editor 2020-07-23 19:38:42 +00:00
Laurent Cozic
1cd86fd3ea Cli: Fixes #3548: Desktop-only scripts were incorrectly being loaded in CLI server tool 2020-07-23 19:04:04 +00:00
Laurent Cozic
7f1f5a8c3d Desktop: Fixes #3503: Editor window was no longer being resized with the main window 2020-07-22 23:26:45 +01:00
Caleb John
9dfb0642da Desktop: Split Codemirror setOptions into different effects (#3522) 2020-07-22 23:18:52 +01:00
Caleb John
0fa8dfa063 Desktop: Enforce that whitespace check for unindent checks the begining of a (#3515) 2020-07-22 23:17:49 +01:00
Caleb John
1d79dedf6d Fix architecture check to only search within machine details (#3512) 2020-07-22 23:16:42 +01:00
Caleb John
a274a56e65 Desktop: CodeMirror: Change rootSize parameters to prevent collision with styles.editor (#3505) 2020-07-22 23:16:06 +01:00
Caleb John
44d3a4213f Desktop: Enable searching in editor rather than the viewer for CodeMirror (#3360) 2020-07-22 23:13:23 +01:00
Laurent Cozic
e68eb196b7 Removed debug code 2020-07-22 19:09:20 +01:00
Laurent Cozic
4bef79cd71 Desktop: Fixes #3407: In some cases, changes made to an attachment would not be saved. Also added banner to show that an attachment is being edited 2020-07-22 19:03:31 +01:00
Laurent Cozic
f3dc3602c8 Desktop: Fixes #3366: Revealing file in Windows did not work 2020-07-22 17:24:01 +01:00
Vaidotas Šimkus
17e140ba56 Api: Fixes #3539: Fixes nested tag API to handle calls with no 'fields' query key 2020-07-22 10:38:49 +01:00
Laurent Cozic
89d0575ccd All: Security: Upgrade packages to fix minor vulnerabilities 2020-07-21 22:22:58 +01:00
Helmut K. C. Tessarek
ca0197a319 fix linter error (#3518) 2020-07-20 00:19:08 +01:00
Helmut K. C. Tessarek
62bc296abe Update translations 2020-07-19 15:18:42 -04:00
Gen Neko
e58dc809ec All: Translation: Update ja_JP.po (#3526)
Translate new strings for the nested tag and note properties.
2020-07-19 14:41:40 -04:00
Arda Kılıçdağı
abd57ad384 All: Translation: Update tr_TR.po (#3523)
Turkish translations updated
2020-07-18 13:42:48 -04:00
Tim Mundt
bada9286d0 All: Translation: Update de_DE.po (#3517) 2020-07-17 19:34:14 -04:00
Roman Musin
3807317e66 Mobile: Increase max resource size to 100mb (#3431) 2020-07-15 18:29:16 +01:00
Vaidotas Šimkus
10ff43f4f0 Desktop: Regression: Fix sort tags alphabetically in side-menu (#3489) 2020-07-15 18:28:40 +01:00
Caleb John
282f6de1a9 Desktop: Load more CodeMirror modes for syntax highlighting (#3401) 2020-07-15 11:46:14 +01:00
alexchee
9a55afec01 All: Add support for AWS S3 synchronisation (Beta) (#2815) 2020-07-15 10:22:55 +01:00
Robert
c8c4bb3245 Update nl_NL.po (#3498) 2020-07-15 10:14:21 +01:00
Chen Yuyang
e1f831af62 Update translation zh_CN.po (#3490) 2020-07-15 10:13:39 +01:00
Laurent Cozic
657cebfda9 Desktop: Improved GotoAnything speed and made it safer
Previously we'd use the remove-markdown package to create the note
preview however this function would freeze on certain notes, and was
probably unsafe as it used regex to parse Markdown. Replaced this in
favour of Markdown-it along with htmlparser2 to strip all markup from a
note.
2020-07-14 23:27:45 +01:00
Laurent Cozic
7f1c25793a Desktop: Fixes #3449: Fixed style caching 2020-07-14 19:17:25 +00:00
Laurent Cozic
b770ffda4d Desktop: Regression: Fixed adding a new sub-notebook to a notebook 2020-07-14 18:56:02 +00:00
Laurent Cozic
d0b3e15999 Electron release v1.0.229 2020-07-14 15:33:20 +01:00
Laurent Cozic
20433b0282 Desktop: Fixed alarms on macOS 2020-07-14 15:32:49 +01:00
Caleb John
452b41de0f Desktop: Fixes #3440: Improve Markdown rendering in CodeMirror, in particular for math expressions (#3448) 2020-07-12 19:42:19 +01:00
Helmut K. C. Tessarek
b69008225f Update translations 2020-07-12 14:33:09 -04:00
yaozeye
b3a778e983 All: Translation: Update zh_TW.po (#3470) 2020-07-12 14:22:26 -04:00
yaozeye
a57c6e9155 All: Translation: Update zh_CN.po (#3468) 2020-07-12 14:22:07 -04:00
Laurent Cozic
3fbfba2c03 Merge branch 'master' of github.com:laurent22/joplin 2020-07-12 19:20:32 +01:00
Laurent Cozic
8a5e6875f0 Desktop, Cli: Fixes #3473: Fix filename when exporting notebook as Markdown 2020-07-12 19:13:08 +01:00
Vaidotas Šimkus
e11e57f1d8 All: Added support for hierarchical/nested tags (#2572)
The implementation uses / symbol as a nesting separator. I.e. tag/subtag is a nested tag, where tag is the parent tag and subtag is its child. Creating a tag named tag/subtag/subsubtag creates three tags, one for each level. The tags are associated using parent_id field.

In the app, viewing notes with a tag will also show all notes that are associated with any of the tag's descendant tags (same for the note count). Deleting a tag will also delete all its descendant tags.

In the desktop app the tags are shown nested just like the notebooks.
2020-07-12 18:09:07 +01:00
Laurent Cozic
073bd80f89 Electron release v1.0.228 2020-07-12 18:05:06 +01:00
Laurent Cozic
e3aaee738a Desktop: Fixes #3482: Fixed regression when moving note to notebook from menu 2020-07-12 17:27:56 +01:00
Laurent Cozic
f1b2b7b86b Desktop: Fixes #3481: Crash when applying tags to multiple notes from within another tag 2020-07-12 17:15:17 +01:00
Laurent Cozic
e0a87d6253 Revert "All: Add support for sync target lock"
This reverts commit 51235f191d.

Not ready yet, moving to a branch
2020-07-12 16:38:54 +01:00
Laurent Cozic
a7eae2e033 Update donate.md 2020-07-11 14:27:35 +01:00
Laurent Cozic
51235f191d All: Add support for sync target lock
The goal is to allow locking a sync target so that maintenance
operations, such as upgrading the target to a more efficient format,
can be done. For now, only the lock mechanism is in place, as a way to
evaluate it, and to see if it can cause any issue.
2020-07-10 23:42:03 +01:00
Laurent Cozic
003ead2511 Clean up 2020-07-10 19:54:29 +01:00
Laurent Cozic
8dc8527fdc CLI v1.0.165 2020-07-10 19:52:58 +01:00
Laurent Cozic
985dcc2605 Update stale.yml
30 days should be enough - either we tag the issue or it gets closed, and it's likely all issues will be checked by at least one mod within 30 days.
2020-07-10 18:02:35 +01:00
WhiredPlanck
4063cdba11 All: Translation: Update zh_CN.po (#3451)
* branch off from master

* fix typo and improve translations
2020-07-07 15:14:52 -04:00
WhiredPlanck
c96c591fa9 All: Translation: Update zh_TW.po (#3450)
* Update zh_TW.po

* fix typo and improve translations
2020-07-07 15:14:27 -04:00
Laurent Cozic
4913fdb800 Electron release v1.0.227 2020-07-07 19:18:03 +01:00
Laurent Cozic
24bc7f153a Desktop: Fixes #3461: Fixed regression which could cause a crash after deleting a notebook 2020-07-07 19:17:33 +01:00
Laurent Cozic
8732c97dcd Desktop: Fixed GotoAnything rendering issue with HTML notes 2020-07-07 19:17:33 +01:00
Damien MASCRÉ
e092eaef6f Updates to the french translation (#3466)
* Update french translation.

* Update french translation.
2020-07-07 15:09:30 +01:00
cadolphs
4ade1bf65f Desktop: Add approximate reading time to note statistics (#3373)
* First stab at a reading time calculator

* Use ceil instead of floor for rounding

* Fix variable names to camelCase

* Up wpm to 250, add source
2020-07-07 00:39:36 +01:00
Laurent Cozic
807c89a42f Added way to get dev mode command line 2020-07-05 18:55:21 +01:00
Laurent Cozic
0b8350e9ea Adding plugin doc 2020-07-05 17:58:24 +01:00
Laurent Cozic
49e7be8924 Ignored files 2020-07-05 17:24:20 +01:00
Laurent Cozic
810c63e3b2 Update doc 2020-07-04 18:38:12 +01:00
Laurent Cozic
d917ca5551 Added plugin doc auto-generation 2020-07-04 18:27:47 +01:00
Laurent Cozic
ec642300ab Moved sandbox to sub-folder 2020-07-04 17:56:21 +01:00
Laurent Cozic
9034d646bf Moved sandbox to a class 2020-07-04 17:02:32 +01:00
Laurent Cozic
96f6bbb035 Allow executing commands from plugin 2020-07-04 16:05:02 +01:00
Laurent Cozic
e14ed655d2 Freeze state in dev mode 2020-07-04 15:32:24 +01:00
Laurent Cozic
54e5323f54 Fixed another issue due to modifying state data 2020-07-04 15:24:53 +01:00
Laurent Cozic
ef58affed1 Fix tests 2020-07-04 15:09:14 +01:00
Laurent Cozic
76fa87d878 Fixed test issue due modification of immutable state 2020-07-04 14:52:55 +01:00
Laurent Cozic
2db2225788 Merge branch 'master' into plugin_system 2020-07-04 14:31:54 +01:00
Laurent Cozic
425c1763f4 Desktop: Fixed GotoAnything rendering issue with HTML notes 2020-07-04 12:57:19 +01:00
Laurent Cozic
77a03599de Desktop: WYSIWYG: Fixed inserting date time and other content inside header 2020-07-04 12:17:30 +01:00
Laurent Cozic
9c057071b5 Electron release v1.0.226 2020-07-04 10:47:04 +01:00
Laurent Cozic
ee3f4beeaf Desktop: Dev fix: Better handling of command props 2020-07-04 10:46:22 +01:00
Laurent Cozic
7035b1f9f6 Desktop: Dev fix: Added back title on header buttons 2020-07-04 10:46:22 +01:00
Deep Majumder
3aea55ee63 Tools: Generates SHA-256 sum of AppImage for Linux (#3410) 2020-07-03 22:46:20 +01:00
Laurent Cozic
28acb4eca6 Electron release v1.0.225 2020-07-03 22:43:19 +01:00
Laurent Cozic
c63c6370b5 Desktop: Refactored command system
The goal is to make the command system more modular, so each command can
be defined as a single object that includes a declaration (name, label,
etc.) and a runtime (to execute the command, test if it should be
enabled, etc.)

Utility methods are provided to convert a command to a menu item or a
toolbar button, thus reducing duplicated and boiler plate code across the
codebase (often the menu item logic was duplicated in the toolbar
button logic and vice versa).

The goal is to make it easier to add new commands (and associated menu
item and toolbar buttons) and to call them from
anywhere. This is also useful for plugins, which can also easily define
new commands.

Could also allow creating a command palette.
2020-07-03 22:32:39 +01:00
Laurent Cozic
6046f40e45 Tools: Fixed tests following highlight.js upgrade (changed in HTML escape mode) 2020-07-03 22:30:33 +01:00
Caleb John
262159cf73 Desktop: Codemirror: Remove cancelled keys in favour of explicit keymaps (#3417) 2020-07-02 23:00:56 +01:00
Caleb John
8eb94bc8ab Desktop: Manually refresh codemirror whenever the window size changes (#3388)
* Manually refresh codemirror whenever the parent div size changes

* Set editor width through style rather than adding an extra property

* use Memo for editorStyle
2020-07-02 22:45:43 +01:00
WhiredPlanck
a9390affaa All: Translation: Update zh_CN.po (#3430)
* Update zh_CN.po

* Correct typo

* Correct typo: NextCloud --> Nextcloud; Improved translation

* Improved translation (2)
2020-06-30 10:30:09 -04:00
Arda Kılıçdağı
66392b4e8a Yandex disk removed from supported WEBDAV clients (#3432)
Yandex.disk recently removed file upload support from WebDAV

https://ru.stackoverflow.com/questions/1043523/После-загрузки-файла-на-Яндекс-Диск-по-webdav-происходят-паузы-по-60-секунд-на-к
https://qna.habr.com/q/677787

So this makes Yandex.disk unusable at the moment.

Here's a similar issue, please see recent comments: https://github.com/PhilippC/keepass2android/issues/506

I've personally tried, and cannot even access to Yandex.disk at the moment through WebDAV.

This PR simply removes yandex.disk line from the ReadMe.

Thanks,
2020-06-30 10:26:30 -04:00
Laurent Cozic
3283f34c79 ios-v10.0.50 2020-06-28 20:17:13 +01:00
Laurent Cozic
044f2eac6a Improved view support 2020-06-28 17:10:34 +01:00
Laurent Cozic
281f135125 Improved view support 2020-06-28 17:08:38 +01:00
Laurent Cozic
6c88f8b8ae Merge branch 'plugin_system' of github.com:laurent22/joplin into plugin_system 2020-06-28 16:57:28 +01:00
Laurent Cozic
832abcddf0 Add support for state watch 2020-06-27 11:54:42 +01:00
Laurent Cozic
e6c481f45c Fixed tests 2020-06-27 01:05:40 +01:00
Laurent Cozic
11fecfb83a Cleaned up naming and types 2020-06-26 23:03:20 +01:00
Laurent Cozic
2facc9868e Renamed control to view 2020-06-26 22:52:40 +01:00
Laurent Cozic
7b9ad9d1c3 Moved listener to view itself 2020-06-26 22:46:45 +01:00
Laurent Cozic
3b96a99f3e Allow sending messages from webview script to plugin 2020-06-26 18:13:00 +01:00
Laurent Cozic
575ce5128b Added reducer 2020-06-26 16:14:59 +01:00
Laurent Cozic
dece28da35 Better integration of custom webviews 2020-06-25 22:15:31 +01:00
Laurent Cozic
2ffc429971 Merge branch 'master' into plugin_system 2020-06-25 20:27:38 +01:00
Laurent Cozic
8baa125842 Refactored to save plugin state in Redux store 2020-06-25 20:25:50 +01:00
Laurent Cozic
6b6092ffc7 Merge branch 'master' into plugin_system 2020-06-24 23:14:16 +01:00
Laurent Cozic
714c912aff Added support for plugin webview 2020-06-24 23:10:19 +01:00
Laurent Cozic
ebf8b744e1 Tools: Fixed build issues 2020-06-24 16:33:35 +01:00
Laurent Cozic
1039e98396 Only load plugins if dir present 2020-06-23 17:25:35 +01:00
Laurent Cozic
8f00538cb1 Merge branch 'master' into plugin_system 2020-06-22 23:07:12 +01:00
Laurent Cozic
2b530a3ff9 Merge branch 'master' into plugin_system 2020-06-21 21:37:58 +00:00
Laurent Cozic
d089511aa6 Added support filters and custom views 2020-06-21 21:30:07 +00:00
j-krl
fd568b5300 interop unnecessary 2020-06-18 15:50:19 -06:00
Laurent Cozic
450c8dbf22 Added support for setting and getting runtime preferences and done CodeMirror plugin test 2020-06-18 00:49:32 +01:00
Laurent Cozic
94d87285dc Merge branch 'master' into plugin_system 2020-06-17 23:50:12 +01:00
j-krl
f19f148297 word choice 2020-05-25 20:18:13 -06:00
j-krl
79c6eb5503 Added to docs and rewrote LinkSelector as ts file 2020-05-25 20:14:38 -06:00
j-krl
1204bed80a Merge branch 'cli-shortcuts-ts' of https://github.com/j-krl/joplin into cli-shortcuts-ts 2020-05-25 20:10:04 -06:00
j-krl
dc91b1f7d6 Added to docs and rewrote LinkSelector as ts file 2020-05-25 20:09:53 -06:00
j-krl
66dc2b33de Added to docs and rewrote LinkSelector as ts file 2020-05-25 20:00:16 -06:00
Laurent Cozic
ffeb7d0ecd Add support for TypeScript in plugins 2020-05-25 18:04:15 +01:00
Laurent Cozic
aba92857cb Load plugins from directory 2020-05-25 17:28:32 +01:00
Laurent Cozic
5918c81dbb Merge branch 'master' into plugin_system 2020-05-25 16:56:04 +01:00
j-krl
811942d45e Merge branch 'cli-shortcuts' of https://github.com/j-krl/joplin into cli-shortcuts 2020-05-24 03:20:44 -06:00
j-krl
dbde239a25 formatting 2020-05-24 03:20:05 -06:00
j-krl
ab3ba3e2ca formatting 2020-05-24 03:11:45 -06:00
j-krl
79e77b5a10 removed personal comments 2020-05-24 02:44:24 -06:00
j-krl
c3395133c9 automatic page scrolling, docs updated 2020-05-24 02:38:14 -06:00
j-krl
b1d073cdeb next/prev link index is buggy on page change 2020-05-23 21:09:22 -06:00
j-krl
25d723b373 switched to class based implementation 2020-05-23 07:23:55 -06:00
Laurent Cozic
819d9fd977 Added more tests 2020-05-23 10:40:10 +01:00
j-krl
e9783d050b I'm going to have to rewrite this entire thing... 2020-05-22 15:26:42 -06:00
j-krl
e1be1ead86 big link doesn't work but regular link does 2020-05-22 06:39:08 -06:00
j-krl
b129bed69f installed open package 2020-05-22 06:06:28 -06:00
j-krl
265ad50ce4 app 2020-05-22 05:50:56 -06:00
j-krl
3e2570601f app-gui 2020-05-22 05:48:27 -06:00
Laurent Cozic
ad80e074de Started plugin system 2020-05-21 23:51:51 +00:00
1730 changed files with 164787 additions and 45009 deletions

View File

@@ -59,17 +59,90 @@ Tools/node_modules
Tools/PortableAppsLauncher
Modules/TinyMCE/IconPack/postinstall.js
Modules/TinyMCE/langs/
CliClient/build/
# AUTO-GENERATED - EXCLUDED TYPESCRIPT BUILD
CliClient/app/LinkSelector.js
CliClient/app/services/plugins/PluginRunner.js
CliClient/tests/models_Setting.js
CliClient/tests/services_CommandService.js
CliClient/tests/services_InteropService.js
CliClient/tests/services_PluginService.js
CliClient/tests/services/plugins/sandboxProxy.js
CliClient/tests/support/plugins/codemirror_test/global.d.js
CliClient/tests/support/plugins/codemirror_test/src/index.js
CliClient/tests/support/plugins/dialog/global.d.js
CliClient/tests/support/plugins/dialog/src/index.js
CliClient/tests/support/plugins/events/global.d.js
CliClient/tests/support/plugins/events/src/index.js
CliClient/tests/support/plugins/json_export/global.d.js
CliClient/tests/support/plugins/json_export/src/index.js
CliClient/tests/support/plugins/markdown_plugin/global.d.js
CliClient/tests/support/plugins/markdown_plugin/src/index.js
CliClient/tests/support/plugins/multi_selection/global.d.js
CliClient/tests/support/plugins/multi_selection/src/index.js
CliClient/tests/support/plugins/register_command/global.d.js
CliClient/tests/support/plugins/register_command/src/index.js
CliClient/tests/support/plugins/selected_text/global.d.js
CliClient/tests/support/plugins/selected_text/src/index.js
CliClient/tests/support/plugins/settings/global.d.js
CliClient/tests/support/plugins/settings/src/index.js
CliClient/tests/support/plugins/toc/global.d.js
CliClient/tests/support/plugins/toc/src/index.js
CliClient/tests/support/plugins/withExternalModules/global.d.js
CliClient/tests/support/plugins/withExternalModules/src/index.js
CliClient/tests/synchronizer_LockHandler.js
CliClient/tests/synchronizer_MigrationHandler.js
ElectronClient/app.js
ElectronClient/bridge.js
ElectronClient/commands/copyDevCommand.js
ElectronClient/commands/focusElement.js
ElectronClient/commands/startExternalEditing.js
ElectronClient/commands/stopExternalEditing.js
ElectronClient/ElectronAppWrapper.js
ElectronClient/global.d.js
ElectronClient/gui/Button/Button.js
ElectronClient/gui/ConfigScreen/ButtonBar.js
ElectronClient/gui/ConfigScreen/ConfigScreen.js
ElectronClient/gui/ConfigScreen/SideBar.js
ElectronClient/gui/DropboxLoginScreen.js
ElectronClient/gui/ErrorBoundary.js
ElectronClient/gui/KeymapConfig/KeymapConfigScreen.js
ElectronClient/gui/KeymapConfig/ShortcutRecorder.js
ElectronClient/gui/KeymapConfig/styles/index.js
ElectronClient/gui/KeymapConfig/utils/getLabel.js
ElectronClient/gui/KeymapConfig/utils/useCommandStatus.js
ElectronClient/gui/KeymapConfig/utils/useKeymap.js
ElectronClient/gui/MainScreen/commands/editAlarm.js
ElectronClient/gui/MainScreen/commands/exportPdf.js
ElectronClient/gui/MainScreen/commands/hideModalMessage.js
ElectronClient/gui/MainScreen/commands/moveToFolder.js
ElectronClient/gui/MainScreen/commands/newFolder.js
ElectronClient/gui/MainScreen/commands/newNote.js
ElectronClient/gui/MainScreen/commands/newTodo.js
ElectronClient/gui/MainScreen/commands/print.js
ElectronClient/gui/MainScreen/commands/renameFolder.js
ElectronClient/gui/MainScreen/commands/renameTag.js
ElectronClient/gui/MainScreen/commands/search.js
ElectronClient/gui/MainScreen/commands/selectTemplate.js
ElectronClient/gui/MainScreen/commands/setTags.js
ElectronClient/gui/MainScreen/commands/showModalMessage.js
ElectronClient/gui/MainScreen/commands/showNoteContentProperties.js
ElectronClient/gui/MainScreen/commands/showNoteProperties.js
ElectronClient/gui/MainScreen/commands/showShareNoteDialog.js
ElectronClient/gui/MainScreen/commands/toggleEditors.js
ElectronClient/gui/MainScreen/commands/toggleNoteList.js
ElectronClient/gui/MainScreen/commands/toggleSidebar.js
ElectronClient/gui/MainScreen/commands/toggleVisiblePanes.js
ElectronClient/gui/MainScreen/MainScreen.js
ElectronClient/gui/MenuBar.js
ElectronClient/gui/MultiNoteActions.js
ElectronClient/gui/NoteContentPropertiesDialog.js
ElectronClient/gui/NoteEditor/NoteBody/AceEditor/AceEditor.js
ElectronClient/gui/NoteEditor/NoteBody/AceEditor/styles/index.js
ElectronClient/gui/NoteEditor/NoteBody/AceEditor/Toolbar.js
ElectronClient/gui/NoteEditor/NoteBody/AceEditor/utils/index.js
ElectronClient/gui/NoteEditor/NoteBody/AceEditor/utils/types.js
ElectronClient/gui/NoteEditor/NoteBody/AceEditor/utils/useListIdent.js
ElectronClient/gui/NoteEditor/commands/editorCommandDeclarations.js
ElectronClient/gui/NoteEditor/commands/focusElementNoteBody.js
ElectronClient/gui/NoteEditor/commands/focusElementNoteTitle.js
ElectronClient/gui/NoteEditor/commands/showLocalSearch.js
ElectronClient/gui/NoteEditor/commands/showRevisions.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/Editor.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/styles/index.js
@@ -77,9 +150,13 @@ ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/Toolbar.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/index.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/types.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/useCursorUtils.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/useEditorSearch.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/useJoplinMode.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/useKeymap.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/useLineSorting.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/useListIdent.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/useScrollUtils.js
ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/styles/index.js
ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.js
ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/utils/useScroll.js
ElectronClient/gui/NoteEditor/NoteEditor.js
@@ -89,37 +166,168 @@ ElectronClient/gui/NoteEditor/utils/index.js
ElectronClient/gui/NoteEditor/utils/resourceHandling.js
ElectronClient/gui/NoteEditor/utils/types.js
ElectronClient/gui/NoteEditor/utils/useDropHandler.js
ElectronClient/gui/NoteEditor/utils/useFolder.js
ElectronClient/gui/NoteEditor/utils/useFormNote.js
ElectronClient/gui/NoteEditor/utils/useMarkupToHtml.js
ElectronClient/gui/NoteEditor/utils/useMessageHandler.js
ElectronClient/gui/NoteEditor/utils/useNoteSearchBar.js
ElectronClient/gui/NoteEditor/utils/usePluginServiceRegistration.js
ElectronClient/gui/NoteEditor/utils/useSearchMarkers.js
ElectronClient/gui/NoteEditor/utils/useWindowCommandHandler.js
ElectronClient/gui/NoteList/commands/focusElementNoteList.js
ElectronClient/gui/NoteList/NoteList.js
ElectronClient/gui/NoteListControls/commands/focusSearch.js
ElectronClient/gui/NoteListControls/NoteListControls.js
ElectronClient/gui/NoteListItem.js
ElectronClient/gui/NoteTextViewer.js
ElectronClient/gui/NoteToolbar/NoteToolbar.js
ElectronClient/gui/OneDriveLoginScreen.js
ElectronClient/gui/ResizableLayout/hooks/useLayoutItemSizes.js
ElectronClient/gui/ResizableLayout/hooks/useWindowResizeEvent.js
ElectronClient/gui/ResizableLayout/ResizableLayout.js
ElectronClient/gui/ResourceScreen.js
ElectronClient/gui/Root_UpgradeSyncTarget.js
ElectronClient/gui/Root.js
ElectronClient/gui/SearchBar/hooks/useSearch.js
ElectronClient/gui/SearchBar/SearchBar.js
ElectronClient/gui/SearchBar/styles/index.js
ElectronClient/gui/ShareNoteDialog.js
ElectronClient/gui/SideBar/commands/focusElementSideBar.js
ElectronClient/gui/SideBar/SideBar.js
ElectronClient/gui/SideBar/styles/index.js
ElectronClient/gui/StatusScreen/StatusScreen.js
ElectronClient/gui/style/StyledInput.js
ElectronClient/gui/style/StyledTextInput.js
ElectronClient/gui/ToggleEditorsButton/styles/index.js
ElectronClient/gui/ToggleEditorsButton/ToggleEditorsButton.js
ElectronClient/gui/ToolbarBase.js
ElectronClient/gui/ToolbarButton/styles/index.js
ElectronClient/gui/ToolbarButton/ToolbarButton.js
ElectronClient/gui/utils/NoteListUtils.js
ElectronClient/InteropServiceHelper.js
ElectronClient/services/bridge.js
ElectronClient/services/plugins/hooks/useThemeCss.js
ElectronClient/services/plugins/hooks/useViewIsReady.js
ElectronClient/services/plugins/PlatformImplementation.js
ElectronClient/services/plugins/PluginRunner.js
ElectronClient/services/plugins/UserWebview.js
ElectronClient/services/plugins/UserWebviewDialog.js
ElectronClient/services/plugins/UserWebviewDialogButtonBar.js
ReactNativeClient/lib/AsyncActionQueue.js
ReactNativeClient/lib/BaseApplication.js
ReactNativeClient/lib/checkPermissions.js
ReactNativeClient/lib/commands/historyBackward.js
ReactNativeClient/lib/commands/historyForward.js
ReactNativeClient/lib/commands/synchronize.js
ReactNativeClient/lib/components/screens/UpgradeSyncTargetScreen.js
ReactNativeClient/lib/eventManager.js
ReactNativeClient/lib/hooks/useEffectDebugger.js
ReactNativeClient/lib/hooks/useImperativeHandlerDebugger.js
ReactNativeClient/lib/hooks/usePrevious.js
ReactNativeClient/lib/hooks/usePropsDebugger.js
ReactNativeClient/lib/joplin-renderer/MdToHtml/rules/checkbox.js
ReactNativeClient/lib/joplin-renderer/MdToHtml/rules/fence.js
ReactNativeClient/lib/joplin-renderer/MdToHtml/rules/mermaid.js
ReactNativeClient/lib/joplin-renderer/MdToHtml/rules/sanitize_html.js
ReactNativeClient/lib/JoplinServerApi.js
ReactNativeClient/lib/locale.js
ReactNativeClient/lib/Logger.js
ReactNativeClient/lib/models/Alarm.js
ReactNativeClient/lib/models/Setting.js
ReactNativeClient/lib/ntpDate.js
ReactNativeClient/lib/reducer.js
ReactNativeClient/lib/services/AlarmService.js
ReactNativeClient/lib/services/AlarmServiceDriver.android.js
ReactNativeClient/lib/services/AlarmServiceDriver.ios.js
ReactNativeClient/lib/services/AlarmServiceDriverNode.js
ReactNativeClient/lib/services/BaseService.js
ReactNativeClient/lib/services/BooleanExpression.js
ReactNativeClient/lib/services/commands/MenuUtils.js
ReactNativeClient/lib/services/commands/propsHaveChanged.js
ReactNativeClient/lib/services/commands/ToolbarButtonUtils.js
ReactNativeClient/lib/services/CommandService.js
ReactNativeClient/lib/services/contextkey/contextkey.js
ReactNativeClient/lib/services/debug/populateDatabase.js
ReactNativeClient/lib/services/interop/InteropService_Exporter_Base.js
ReactNativeClient/lib/services/interop/InteropService_Exporter_Custom.js
ReactNativeClient/lib/services/interop/InteropService_Exporter_Html.js
ReactNativeClient/lib/services/interop/InteropService_Exporter_Jex.js
ReactNativeClient/lib/services/interop/InteropService_Exporter_Md.js
ReactNativeClient/lib/services/interop/InteropService_Exporter_Raw.js
ReactNativeClient/lib/services/interop/InteropService_Importer_Base.js
ReactNativeClient/lib/services/interop/InteropService_Importer_Custom.js
ReactNativeClient/lib/services/interop/InteropService_Importer_EnexToHtml.js
ReactNativeClient/lib/services/interop/InteropService_Importer_EnexToMd.js
ReactNativeClient/lib/services/interop/InteropService_Importer_Jex.js
ReactNativeClient/lib/services/interop/InteropService_Importer_Md.js
ReactNativeClient/lib/services/interop/InteropService_Importer_Raw.js
ReactNativeClient/lib/services/interop/InteropService.js
ReactNativeClient/lib/services/interop/types.js
ReactNativeClient/lib/services/keychain/KeychainService.js
ReactNativeClient/lib/services/keychain/KeychainServiceDriver.dummy.js
ReactNativeClient/lib/services/keychain/KeychainServiceDriver.mobile.js
ReactNativeClient/lib/services/keychain/KeychainServiceDriver.node.js
ReactNativeClient/lib/services/keychain/KeychainServiceDriverBase.js
ReactNativeClient/lib/services/ResourceEditWatcher.js
ReactNativeClient/lib/services/KeymapService.js
ReactNativeClient/lib/services/plugins/api/Global.js
ReactNativeClient/lib/services/plugins/api/Joplin.js
ReactNativeClient/lib/services/plugins/api/JoplinCommands.js
ReactNativeClient/lib/services/plugins/api/JoplinData.js
ReactNativeClient/lib/services/plugins/api/JoplinFilters.js
ReactNativeClient/lib/services/plugins/api/JoplinInterop.js
ReactNativeClient/lib/services/plugins/api/JoplinPlugins.js
ReactNativeClient/lib/services/plugins/api/JoplinSettings.js
ReactNativeClient/lib/services/plugins/api/JoplinUtils.js
ReactNativeClient/lib/services/plugins/api/JoplinViews.js
ReactNativeClient/lib/services/plugins/api/JoplinViewsDialogs.js
ReactNativeClient/lib/services/plugins/api/JoplinViewsMenuItems.js
ReactNativeClient/lib/services/plugins/api/JoplinViewsPanels.js
ReactNativeClient/lib/services/plugins/api/JoplinViewsToolbarButtons.js
ReactNativeClient/lib/services/plugins/api/JoplinWorkspace.js
ReactNativeClient/lib/services/plugins/BasePluginRunner.js
ReactNativeClient/lib/services/plugins/MenuItemController.js
ReactNativeClient/lib/services/plugins/Plugin.js
ReactNativeClient/lib/services/plugins/PluginService.js
ReactNativeClient/lib/services/plugins/reducer.js
ReactNativeClient/lib/services/plugins/sandboxProxy.js
ReactNativeClient/lib/services/plugins/ToolbarButtonController.js
ReactNativeClient/lib/services/plugins/utils/createViewHandle.js
ReactNativeClient/lib/services/plugins/utils/executeSandboxCall.js
ReactNativeClient/lib/services/plugins/utils/manifestFromObject.js
ReactNativeClient/lib/services/plugins/utils/mapEventHandlersToIds.js
ReactNativeClient/lib/services/plugins/utils/types.js
ReactNativeClient/lib/services/plugins/ViewController.js
ReactNativeClient/lib/services/plugins/WebviewController.js
ReactNativeClient/lib/services/ResourceEditWatcher/index.js
ReactNativeClient/lib/services/ResourceEditWatcher/reducer.js
ReactNativeClient/lib/services/rest/actionApi.desktop.js
ReactNativeClient/lib/services/rest/errors.js
ReactNativeClient/lib/services/searchengine/filterParser.js
ReactNativeClient/lib/services/searchengine/queryBuilder.js
ReactNativeClient/lib/services/SettingUtils.js
ReactNativeClient/lib/services/synchronizer/gui/useSyncTargetUpgrade.js
ReactNativeClient/lib/services/synchronizer/LockHandler.js
ReactNativeClient/lib/services/synchronizer/MigrationHandler.js
ReactNativeClient/lib/services/synchronizer/migrations/1.js
ReactNativeClient/lib/services/synchronizer/migrations/2.js
ReactNativeClient/lib/services/synchronizer/utils/types.js
ReactNativeClient/lib/services/UndoRedoService.js
ReactNativeClient/lib/ShareExtension.js
ReactNativeClient/lib/shareHandler.js
ReactNativeClient/lib/shim.js
ReactNativeClient/lib/Synchronizer.js
ReactNativeClient/lib/theme.js
ReactNativeClient/lib/themes/aritimDark.js
ReactNativeClient/lib/themes/dark.js
ReactNativeClient/lib/themes/dracula.js
ReactNativeClient/lib/themes/light.js
ReactNativeClient/lib/themes/nord.js
ReactNativeClient/lib/themes/oledDark.js
ReactNativeClient/lib/themes/solarizedDark.js
ReactNativeClient/lib/themes/solarizedLight.js
ReactNativeClient/lib/themes/type.js
ReactNativeClient/lib/uuid.js
ReactNativeClient/lib/versionInfo.js
ReactNativeClient/PluginAssetsLoader.js
ReactNativeClient/setUpQuickActions.js
# AUTO-GENERATED - EXCLUDED TYPESCRIPT BUILD

View File

@@ -4,9 +4,9 @@ module.exports = {
'es6': true,
'node': true,
},
"parser": "@typescript-eslint/parser",
'parser': '@typescript-eslint/parser',
'extends': ['eslint:recommended'],
"settings": {
'settings': {
'react': {
'version': '16.12',
},
@@ -37,33 +37,39 @@ module.exports = {
},
'parserOptions': {
'ecmaVersion': 2018,
"ecmaFeatures": {
"jsx": true,
},
"sourceType": "module",
'ecmaFeatures': {
'jsx': true,
},
'sourceType': 'module',
},
'rules': {
// -------------------------------
// Code correctness
// -------------------------------
"react/jsx-uses-react": "error",
"react/jsx-uses-vars": "error",
"no-unused-vars": "error",
"@typescript-eslint/no-unused-vars": "error",
"no-constant-condition": 0,
"no-prototype-builtins": 0,
'react/jsx-uses-react': 'error',
'react/jsx-uses-vars': 'error',
'no-unused-vars': ['error', { 'argsIgnorePattern': '^_' }],
'@typescript-eslint/no-unused-vars': ['error', { 'argsIgnorePattern': '^_' }],
'@typescript-eslint/explicit-member-accessibility': 'off',
'no-constant-condition': 0,
'no-prototype-builtins': 0,
// This error is always a false positive so far since it detects
// possible race conditions in contexts where we know it cannot happen.
"require-atomic-updates": 0,
"prefer-const": ["error"],
"no-var": ["error"],
"no-new-func": ["error"],
"import/prefer-default-export": ["error"],
"import/first": ["error"],
"no-array-constructor": ["error"],
'require-atomic-updates': 0,
'prefer-const': ['error'],
'no-var': ['error'],
'no-new-func': ['error'],
'import/prefer-default-export': ['error'],
'import/first': ['error'],
'no-array-constructor': ['error'],
'radix': ['error'],
// Warn only for now because fixing everything would take too much
// refactoring, but new code should try to stick to it.
'complexity': ['warn', { max: 10 }],
// Checks rules of Hooks
"react-hooks/rules-of-hooks": "error",
'react-hooks/rules-of-hooks': 'error',
// Checks effect dependencies
// Disable because of this: https://github.com/facebook/react/issues/16265
// "react-hooks/exhaustive-deps": "warn",
@@ -71,43 +77,60 @@ module.exports = {
// -------------------------------
// Formatting
// -------------------------------
"space-in-parens": ["error", "never"],
"space-infix-ops": ["error"],
"curly": ["error", "multi-line", "consistent"],
"semi": ["error", "always"],
"eol-last": ["error", "always"],
"quotes": ["error", "single"],
"indent": ["error", "tab"],
"comma-dangle": ["error", "always-multiline"],
"no-trailing-spaces": "error",
"linebreak-style": ["error", "unix"],
"prefer-template": ["error"],
"template-curly-spacing": ["error", "never"],
"object-curly-spacing": ["error", "always"],
"array-bracket-spacing": ["error", "never"],
"key-spacing": ["error", {
"beforeColon": false,
"afterColon": true,
"mode": "strict"
'space-in-parens': ['error', 'never'],
'space-infix-ops': ['error'],
'curly': ['error', 'multi-line', 'consistent'],
'semi': ['error', 'always'],
'eol-last': ['error', 'always'],
'quotes': ['error', 'single'],
'indent': ['error', 'tab'],
'comma-dangle': ['error', {
'arrays': 'always-multiline',
'objects': 'always-multiline',
'imports': 'always-multiline',
'exports': 'always-multiline',
'functions': 'never',
}],
"block-spacing": ["error"],
"brace-style": ["error", "1tbs", { "allowSingleLine": true }],
"no-spaced-func": ["error"],
"func-call-spacing": ["error"],
"space-before-function-paren": ["error", {
"anonymous": "never",
"named": "never",
"asyncArrow": "always"
'no-trailing-spaces': 'error',
'linebreak-style': ['error', 'unix'],
'prefer-template': ['error'],
'template-curly-spacing': ['error', 'never'],
'object-curly-spacing': ['error', 'always'],
'array-bracket-spacing': ['error', 'never'],
'key-spacing': ['error', {
'beforeColon': false,
'afterColon': true,
'mode': 'strict',
}],
"multiline-comment-style": ["error", "separate-lines"],
"space-before-blocks": "error",
"spaced-comment": ["error", "always"],
"keyword-spacing": ["error", { "before": true, "after": true }],
'block-spacing': ['error'],
'brace-style': ['error', '1tbs', { 'allowSingleLine': true }],
'no-spaced-func': ['error'],
'func-call-spacing': ['error'],
'space-before-function-paren': ['error', {
'anonymous': 'never',
'named': 'never',
'asyncArrow': 'always',
}],
'multiline-comment-style': ['error', 'separate-lines'],
'space-before-blocks': 'error',
'spaced-comment': ['error', 'always'],
'keyword-spacing': ['error', { 'before': true, 'after': true }],
},
"plugins": [
"react",
"@typescript-eslint",
"react-hooks",
"import",
'plugins': [
'react',
'@typescript-eslint',
'react-hooks',
'import',
],
'overrides': [
{
// enable the rule specifically for TypeScript files
'files': ['*.ts', '*.tsx'],
'rules': {
// Warn only because it would make it difficult to convert JS classes to TypeScript, unless we
// make everything public which is not great. New code however should specify member accessibility.
'@typescript-eslint/explicit-member-accessibility': ['warn'],
},
},
],
};

3
.github/stale.yml vendored
View File

@@ -1,6 +1,6 @@
# Configuration for probot-stale - https://github.com/probot/stale
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 45
daysUntilStale: 30
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
@@ -9,6 +9,7 @@ exemptLabels:
- "upstream"
- "backlog"
- "high"
- "spec"
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable

225
.gitignore vendored
View File

@@ -37,6 +37,7 @@ _mydocs
Assets/DownloadBadges*.psd
node_modules
Tools/github_oauth_token.txt
CliClient/tests/support/amazon-s3-auth.json
_releases
ReactNativeClient/lib/csstojs/
ReactNativeClient/lib/rnInjectedJs/
@@ -49,17 +50,92 @@ joplin-webclipper-source.zip
Tools/commit_hook.txt
.vscode/*
*.map
ReactNativeClient/lib/sql-extensions/spellfix.so
ReactNativeClient/lib/sql-extensions/spellfix.dylib
CliClient/build/
# AUTO-GENERATED - EXCLUDED TYPESCRIPT BUILD
CliClient/app/LinkSelector.js
CliClient/app/services/plugins/PluginRunner.js
CliClient/tests/models_Setting.js
CliClient/tests/services_CommandService.js
CliClient/tests/services_InteropService.js
CliClient/tests/services_PluginService.js
CliClient/tests/services/plugins/sandboxProxy.js
CliClient/tests/support/plugins/codemirror_test/global.d.js
CliClient/tests/support/plugins/codemirror_test/src/index.js
CliClient/tests/support/plugins/dialog/global.d.js
CliClient/tests/support/plugins/dialog/src/index.js
CliClient/tests/support/plugins/events/global.d.js
CliClient/tests/support/plugins/events/src/index.js
CliClient/tests/support/plugins/json_export/global.d.js
CliClient/tests/support/plugins/json_export/src/index.js
CliClient/tests/support/plugins/markdown_plugin/global.d.js
CliClient/tests/support/plugins/markdown_plugin/src/index.js
CliClient/tests/support/plugins/multi_selection/global.d.js
CliClient/tests/support/plugins/multi_selection/src/index.js
CliClient/tests/support/plugins/register_command/global.d.js
CliClient/tests/support/plugins/register_command/src/index.js
CliClient/tests/support/plugins/selected_text/global.d.js
CliClient/tests/support/plugins/selected_text/src/index.js
CliClient/tests/support/plugins/settings/global.d.js
CliClient/tests/support/plugins/settings/src/index.js
CliClient/tests/support/plugins/toc/global.d.js
CliClient/tests/support/plugins/toc/src/index.js
CliClient/tests/support/plugins/withExternalModules/global.d.js
CliClient/tests/support/plugins/withExternalModules/src/index.js
CliClient/tests/synchronizer_LockHandler.js
CliClient/tests/synchronizer_MigrationHandler.js
ElectronClient/app.js
ElectronClient/bridge.js
ElectronClient/commands/copyDevCommand.js
ElectronClient/commands/focusElement.js
ElectronClient/commands/startExternalEditing.js
ElectronClient/commands/stopExternalEditing.js
ElectronClient/ElectronAppWrapper.js
ElectronClient/global.d.js
ElectronClient/gui/Button/Button.js
ElectronClient/gui/ConfigScreen/ButtonBar.js
ElectronClient/gui/ConfigScreen/ConfigScreen.js
ElectronClient/gui/ConfigScreen/SideBar.js
ElectronClient/gui/DropboxLoginScreen.js
ElectronClient/gui/ErrorBoundary.js
ElectronClient/gui/KeymapConfig/KeymapConfigScreen.js
ElectronClient/gui/KeymapConfig/ShortcutRecorder.js
ElectronClient/gui/KeymapConfig/styles/index.js
ElectronClient/gui/KeymapConfig/utils/getLabel.js
ElectronClient/gui/KeymapConfig/utils/useCommandStatus.js
ElectronClient/gui/KeymapConfig/utils/useKeymap.js
ElectronClient/gui/MainScreen/commands/editAlarm.js
ElectronClient/gui/MainScreen/commands/exportPdf.js
ElectronClient/gui/MainScreen/commands/hideModalMessage.js
ElectronClient/gui/MainScreen/commands/moveToFolder.js
ElectronClient/gui/MainScreen/commands/newFolder.js
ElectronClient/gui/MainScreen/commands/newNote.js
ElectronClient/gui/MainScreen/commands/newTodo.js
ElectronClient/gui/MainScreen/commands/print.js
ElectronClient/gui/MainScreen/commands/renameFolder.js
ElectronClient/gui/MainScreen/commands/renameTag.js
ElectronClient/gui/MainScreen/commands/search.js
ElectronClient/gui/MainScreen/commands/selectTemplate.js
ElectronClient/gui/MainScreen/commands/setTags.js
ElectronClient/gui/MainScreen/commands/showModalMessage.js
ElectronClient/gui/MainScreen/commands/showNoteContentProperties.js
ElectronClient/gui/MainScreen/commands/showNoteProperties.js
ElectronClient/gui/MainScreen/commands/showShareNoteDialog.js
ElectronClient/gui/MainScreen/commands/toggleEditors.js
ElectronClient/gui/MainScreen/commands/toggleNoteList.js
ElectronClient/gui/MainScreen/commands/toggleSidebar.js
ElectronClient/gui/MainScreen/commands/toggleVisiblePanes.js
ElectronClient/gui/MainScreen/MainScreen.js
ElectronClient/gui/MenuBar.js
ElectronClient/gui/MultiNoteActions.js
ElectronClient/gui/NoteContentPropertiesDialog.js
ElectronClient/gui/NoteEditor/NoteBody/AceEditor/AceEditor.js
ElectronClient/gui/NoteEditor/NoteBody/AceEditor/styles/index.js
ElectronClient/gui/NoteEditor/NoteBody/AceEditor/Toolbar.js
ElectronClient/gui/NoteEditor/NoteBody/AceEditor/utils/index.js
ElectronClient/gui/NoteEditor/NoteBody/AceEditor/utils/types.js
ElectronClient/gui/NoteEditor/NoteBody/AceEditor/utils/useListIdent.js
ElectronClient/gui/NoteEditor/commands/editorCommandDeclarations.js
ElectronClient/gui/NoteEditor/commands/focusElementNoteBody.js
ElectronClient/gui/NoteEditor/commands/focusElementNoteTitle.js
ElectronClient/gui/NoteEditor/commands/showLocalSearch.js
ElectronClient/gui/NoteEditor/commands/showRevisions.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/Editor.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/styles/index.js
@@ -67,9 +143,13 @@ ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/Toolbar.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/index.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/types.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/useCursorUtils.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/useEditorSearch.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/useJoplinMode.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/useKeymap.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/useLineSorting.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/useListIdent.js
ElectronClient/gui/NoteEditor/NoteBody/CodeMirror/utils/useScrollUtils.js
ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/styles/index.js
ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.js
ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/utils/useScroll.js
ElectronClient/gui/NoteEditor/NoteEditor.js
@@ -79,37 +159,168 @@ ElectronClient/gui/NoteEditor/utils/index.js
ElectronClient/gui/NoteEditor/utils/resourceHandling.js
ElectronClient/gui/NoteEditor/utils/types.js
ElectronClient/gui/NoteEditor/utils/useDropHandler.js
ElectronClient/gui/NoteEditor/utils/useFolder.js
ElectronClient/gui/NoteEditor/utils/useFormNote.js
ElectronClient/gui/NoteEditor/utils/useMarkupToHtml.js
ElectronClient/gui/NoteEditor/utils/useMessageHandler.js
ElectronClient/gui/NoteEditor/utils/useNoteSearchBar.js
ElectronClient/gui/NoteEditor/utils/usePluginServiceRegistration.js
ElectronClient/gui/NoteEditor/utils/useSearchMarkers.js
ElectronClient/gui/NoteEditor/utils/useWindowCommandHandler.js
ElectronClient/gui/NoteList/commands/focusElementNoteList.js
ElectronClient/gui/NoteList/NoteList.js
ElectronClient/gui/NoteListControls/commands/focusSearch.js
ElectronClient/gui/NoteListControls/NoteListControls.js
ElectronClient/gui/NoteListItem.js
ElectronClient/gui/NoteTextViewer.js
ElectronClient/gui/NoteToolbar/NoteToolbar.js
ElectronClient/gui/OneDriveLoginScreen.js
ElectronClient/gui/ResizableLayout/hooks/useLayoutItemSizes.js
ElectronClient/gui/ResizableLayout/hooks/useWindowResizeEvent.js
ElectronClient/gui/ResizableLayout/ResizableLayout.js
ElectronClient/gui/ResourceScreen.js
ElectronClient/gui/Root_UpgradeSyncTarget.js
ElectronClient/gui/Root.js
ElectronClient/gui/SearchBar/hooks/useSearch.js
ElectronClient/gui/SearchBar/SearchBar.js
ElectronClient/gui/SearchBar/styles/index.js
ElectronClient/gui/ShareNoteDialog.js
ElectronClient/gui/SideBar/commands/focusElementSideBar.js
ElectronClient/gui/SideBar/SideBar.js
ElectronClient/gui/SideBar/styles/index.js
ElectronClient/gui/StatusScreen/StatusScreen.js
ElectronClient/gui/style/StyledInput.js
ElectronClient/gui/style/StyledTextInput.js
ElectronClient/gui/ToggleEditorsButton/styles/index.js
ElectronClient/gui/ToggleEditorsButton/ToggleEditorsButton.js
ElectronClient/gui/ToolbarBase.js
ElectronClient/gui/ToolbarButton/styles/index.js
ElectronClient/gui/ToolbarButton/ToolbarButton.js
ElectronClient/gui/utils/NoteListUtils.js
ElectronClient/InteropServiceHelper.js
ElectronClient/services/bridge.js
ElectronClient/services/plugins/hooks/useThemeCss.js
ElectronClient/services/plugins/hooks/useViewIsReady.js
ElectronClient/services/plugins/PlatformImplementation.js
ElectronClient/services/plugins/PluginRunner.js
ElectronClient/services/plugins/UserWebview.js
ElectronClient/services/plugins/UserWebviewDialog.js
ElectronClient/services/plugins/UserWebviewDialogButtonBar.js
ReactNativeClient/lib/AsyncActionQueue.js
ReactNativeClient/lib/BaseApplication.js
ReactNativeClient/lib/checkPermissions.js
ReactNativeClient/lib/commands/historyBackward.js
ReactNativeClient/lib/commands/historyForward.js
ReactNativeClient/lib/commands/synchronize.js
ReactNativeClient/lib/components/screens/UpgradeSyncTargetScreen.js
ReactNativeClient/lib/eventManager.js
ReactNativeClient/lib/hooks/useEffectDebugger.js
ReactNativeClient/lib/hooks/useImperativeHandlerDebugger.js
ReactNativeClient/lib/hooks/usePrevious.js
ReactNativeClient/lib/hooks/usePropsDebugger.js
ReactNativeClient/lib/joplin-renderer/MdToHtml/rules/checkbox.js
ReactNativeClient/lib/joplin-renderer/MdToHtml/rules/fence.js
ReactNativeClient/lib/joplin-renderer/MdToHtml/rules/mermaid.js
ReactNativeClient/lib/joplin-renderer/MdToHtml/rules/sanitize_html.js
ReactNativeClient/lib/JoplinServerApi.js
ReactNativeClient/lib/locale.js
ReactNativeClient/lib/Logger.js
ReactNativeClient/lib/models/Alarm.js
ReactNativeClient/lib/models/Setting.js
ReactNativeClient/lib/ntpDate.js
ReactNativeClient/lib/reducer.js
ReactNativeClient/lib/services/AlarmService.js
ReactNativeClient/lib/services/AlarmServiceDriver.android.js
ReactNativeClient/lib/services/AlarmServiceDriver.ios.js
ReactNativeClient/lib/services/AlarmServiceDriverNode.js
ReactNativeClient/lib/services/BaseService.js
ReactNativeClient/lib/services/BooleanExpression.js
ReactNativeClient/lib/services/commands/MenuUtils.js
ReactNativeClient/lib/services/commands/propsHaveChanged.js
ReactNativeClient/lib/services/commands/ToolbarButtonUtils.js
ReactNativeClient/lib/services/CommandService.js
ReactNativeClient/lib/services/contextkey/contextkey.js
ReactNativeClient/lib/services/debug/populateDatabase.js
ReactNativeClient/lib/services/interop/InteropService_Exporter_Base.js
ReactNativeClient/lib/services/interop/InteropService_Exporter_Custom.js
ReactNativeClient/lib/services/interop/InteropService_Exporter_Html.js
ReactNativeClient/lib/services/interop/InteropService_Exporter_Jex.js
ReactNativeClient/lib/services/interop/InteropService_Exporter_Md.js
ReactNativeClient/lib/services/interop/InteropService_Exporter_Raw.js
ReactNativeClient/lib/services/interop/InteropService_Importer_Base.js
ReactNativeClient/lib/services/interop/InteropService_Importer_Custom.js
ReactNativeClient/lib/services/interop/InteropService_Importer_EnexToHtml.js
ReactNativeClient/lib/services/interop/InteropService_Importer_EnexToMd.js
ReactNativeClient/lib/services/interop/InteropService_Importer_Jex.js
ReactNativeClient/lib/services/interop/InteropService_Importer_Md.js
ReactNativeClient/lib/services/interop/InteropService_Importer_Raw.js
ReactNativeClient/lib/services/interop/InteropService.js
ReactNativeClient/lib/services/interop/types.js
ReactNativeClient/lib/services/keychain/KeychainService.js
ReactNativeClient/lib/services/keychain/KeychainServiceDriver.dummy.js
ReactNativeClient/lib/services/keychain/KeychainServiceDriver.mobile.js
ReactNativeClient/lib/services/keychain/KeychainServiceDriver.node.js
ReactNativeClient/lib/services/keychain/KeychainServiceDriverBase.js
ReactNativeClient/lib/services/ResourceEditWatcher.js
ReactNativeClient/lib/services/KeymapService.js
ReactNativeClient/lib/services/plugins/api/Global.js
ReactNativeClient/lib/services/plugins/api/Joplin.js
ReactNativeClient/lib/services/plugins/api/JoplinCommands.js
ReactNativeClient/lib/services/plugins/api/JoplinData.js
ReactNativeClient/lib/services/plugins/api/JoplinFilters.js
ReactNativeClient/lib/services/plugins/api/JoplinInterop.js
ReactNativeClient/lib/services/plugins/api/JoplinPlugins.js
ReactNativeClient/lib/services/plugins/api/JoplinSettings.js
ReactNativeClient/lib/services/plugins/api/JoplinUtils.js
ReactNativeClient/lib/services/plugins/api/JoplinViews.js
ReactNativeClient/lib/services/plugins/api/JoplinViewsDialogs.js
ReactNativeClient/lib/services/plugins/api/JoplinViewsMenuItems.js
ReactNativeClient/lib/services/plugins/api/JoplinViewsPanels.js
ReactNativeClient/lib/services/plugins/api/JoplinViewsToolbarButtons.js
ReactNativeClient/lib/services/plugins/api/JoplinWorkspace.js
ReactNativeClient/lib/services/plugins/BasePluginRunner.js
ReactNativeClient/lib/services/plugins/MenuItemController.js
ReactNativeClient/lib/services/plugins/Plugin.js
ReactNativeClient/lib/services/plugins/PluginService.js
ReactNativeClient/lib/services/plugins/reducer.js
ReactNativeClient/lib/services/plugins/sandboxProxy.js
ReactNativeClient/lib/services/plugins/ToolbarButtonController.js
ReactNativeClient/lib/services/plugins/utils/createViewHandle.js
ReactNativeClient/lib/services/plugins/utils/executeSandboxCall.js
ReactNativeClient/lib/services/plugins/utils/manifestFromObject.js
ReactNativeClient/lib/services/plugins/utils/mapEventHandlersToIds.js
ReactNativeClient/lib/services/plugins/utils/types.js
ReactNativeClient/lib/services/plugins/ViewController.js
ReactNativeClient/lib/services/plugins/WebviewController.js
ReactNativeClient/lib/services/ResourceEditWatcher/index.js
ReactNativeClient/lib/services/ResourceEditWatcher/reducer.js
ReactNativeClient/lib/services/rest/actionApi.desktop.js
ReactNativeClient/lib/services/rest/errors.js
ReactNativeClient/lib/services/searchengine/filterParser.js
ReactNativeClient/lib/services/searchengine/queryBuilder.js
ReactNativeClient/lib/services/SettingUtils.js
ReactNativeClient/lib/services/synchronizer/gui/useSyncTargetUpgrade.js
ReactNativeClient/lib/services/synchronizer/LockHandler.js
ReactNativeClient/lib/services/synchronizer/MigrationHandler.js
ReactNativeClient/lib/services/synchronizer/migrations/1.js
ReactNativeClient/lib/services/synchronizer/migrations/2.js
ReactNativeClient/lib/services/synchronizer/utils/types.js
ReactNativeClient/lib/services/UndoRedoService.js
ReactNativeClient/lib/ShareExtension.js
ReactNativeClient/lib/shareHandler.js
ReactNativeClient/lib/shim.js
ReactNativeClient/lib/Synchronizer.js
ReactNativeClient/lib/theme.js
ReactNativeClient/lib/themes/aritimDark.js
ReactNativeClient/lib/themes/dark.js
ReactNativeClient/lib/themes/dracula.js
ReactNativeClient/lib/themes/light.js
ReactNativeClient/lib/themes/nord.js
ReactNativeClient/lib/themes/oledDark.js
ReactNativeClient/lib/themes/solarizedDark.js
ReactNativeClient/lib/themes/solarizedLight.js
ReactNativeClient/lib/themes/type.js
ReactNativeClient/lib/uuid.js
ReactNativeClient/lib/versionInfo.js
ReactNativeClient/PluginAssetsLoader.js
ReactNativeClient/setUpQuickActions.js
# AUTO-GENERATED - EXCLUDED TYPESCRIPT BUILD

View File

@@ -9,6 +9,7 @@ rvm: 2.3.3
branches:
only:
- master
- dev
- /^v\d+\.\d+(\.\d+)?(-\S*)?$/
matrix:
@@ -69,7 +70,7 @@ script:
# and that would break the desktop release.
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
cd CliClient
npm run test
npm run test-ci
testResult=$?
if [ $testResult -ne 0 ]; then
exit $testResult

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 71 KiB

View File

@@ -11,6 +11,7 @@ Note that all the applications share the same library, which, for historical rea
- macOS, Linux: Install rsync - https://nodejs.org/en/
- macOS: Install Cocoapods - `brew install cocoapods`
- Windows: Install Windows Build Tools - `npm install -g windows-build-tools`
- Linux: Install dependencies - `sudo apt install libnss3 libsecret-1-dev`
## Building
@@ -25,6 +26,8 @@ Then you can test the various applications:
cd ElectronClient
npm start
You can also run it under WSL 2. To do so, [follow these instructions](https://www.beekeeperstudio.io/blog/building-electron-windows-ubuntu-wsl2) to setup your environment.
## Testing the Terminal application
cd CliClient
@@ -87,6 +90,10 @@ It still requires you to quit the application each time you want it to rebuild,
2. Switch to the Electron app and <kbd>cmd</kbd>+<kbd>Q</kbd> to quit it.
3. `watchman` immediately restarts the app for you (whereas usually you'd have to switch back to the terminal, type `"npm start"`, and hit enter).
# Updating Markdown renderer packages
The Markdown renderer is located under ReactNativeClient/lib/joplin-renderer. Whenever updating one of its dependencies, such as Mermaid or Katex, please run `npm run buildAssets` to make sure all assets such as fonts or CSS files are deployed correctly.
# Troubleshooting
Please read for the [Build Troubleshooting Document](https://github.com/laurent22/joplin/blob/master/readme/build_troubleshooting.md) for various tips on how to get the build working.

View File

@@ -36,6 +36,7 @@ If you want to start contributing to the project's code, please follow these gui
- Before adding a new feature, ask about it in the [Github Issue Tracker](https://github.com/laurent22/joplin/issues?utf8=%E2%9C%93&q=is%3Aissue) or the [Joplin Forum](https://discourse.joplinapp.org/), or check if existing discussions exist to make sure the new functionality is desired.
- **Changes that will consist in more than 50 lines of code should be discussed the [Joplin Forum](https://discourse.joplinapp.org/)**, so that you don't spend too much time implementing something that might not be accepted.
- All the applications share the same backend (database, synchronisation, settings, models, business logic, etc.) so if you change something in the backend in one app, makes sure it still work in the other apps. Usually it does, but keep this in mind.
- Pull requests that make many changes using an automated tool, like for spell fixing, styling, etc. will not be accepted. An exception would be if the changes have been discussed in the forum and someone has agreed to review **and test** the pull request.
Building the apps is relatively easy - please [see the build instructions](https://github.com/laurent22/joplin/blob/master/BUILD.md) for more details.

View File

@@ -1,13 +1,13 @@
module.exports = {
"overrides": [
'overrides': [
{
"files": ["tests/**/*.js"],
'files': ['tests/**/*.js'],
'rules': {
// Ignore all unused function arguments, because in some
// case they are kept to indicate the function signature.
"no-unused-vars": ["error", { "argsIgnorePattern": ".*" }],
"@typescript-eslint/no-unused-vars": 0,
}
'no-unused-vars': ['error', { 'argsIgnorePattern': '.*' }],
'@typescript-eslint/no-unused-vars': 0,
},
},
],
};
};

View File

@@ -20,4 +20,6 @@ out.txt
linkToLocal.sh
yarn-error.log
tests/support/dropbox-auth.txt
tests/support/nextcloud-auth.json
tests/support/onedrive-auth.txt
build/

View File

@@ -0,0 +1,134 @@
const open = require('open');
interface LinkStoreEntry {
link: string;
noteX: number;
noteY: number;
}
class LinkSelector {
noteId_: string;
scrollTop_: number;
renderedText_: string;
currentLinkIndex_: number;
linkStore_: LinkStoreEntry[];
linkRegex_: RegExp;
constructor() {
this.noteId_ = null;
this.scrollTop_ = null; // used so 'o' won't open unhighlighted link after scrolling
this.renderedText_ = null;
this.currentLinkIndex_ = null;
this.linkStore_ = null;
this.linkRegex_ = /http:\/\/[0-9.]+:[0-9]+\/[0-9]+/g;
}
get link(): string | null {
if (this.currentLinkIndex_ === null) return null;
return this.linkStore_[this.currentLinkIndex_].link;
}
get noteX(): number | null {
if (this.currentLinkIndex_ === null) return null;
return this.linkStore_[this.currentLinkIndex_].noteX;
}
get noteY(): number | null {
if (this.currentLinkIndex_ === null) return null;
return this.linkStore_[this.currentLinkIndex_].noteY;
}
findLinks(renderedText: string): LinkStoreEntry[] {
const newLinkStore: LinkStoreEntry[] = [];
const lines: string[] = renderedText.split('\n');
for (let i = 0; i < lines.length; i++) {
const matches = [...lines[i].matchAll(this.linkRegex_)];
matches.forEach((_e, n) => {
newLinkStore.push(
{
link: matches[n][0],
noteX: matches[n].index,
noteY: i,
}
);
});
}
return newLinkStore;
}
updateText(renderedText: string): void {
this.currentLinkIndex_ = null;
this.renderedText_ = renderedText;
this.linkStore_ = this.findLinks(this.renderedText_);
}
updateNote(textWidget: any): void {
this.noteId_ = textWidget.noteId;
this.scrollTop_ = textWidget.scrollTop_;
this.updateText(textWidget.renderedText_);
}
scrollWidget(textWidget: any): void {
if (this.currentLinkIndex_ === null) return;
const noteY = this.linkStore_[this.currentLinkIndex_].noteY;
let viewBoxMin = textWidget.scrollTop_ + 1;
let viewBoxMax = viewBoxMin + textWidget.innerHeight - 2;
if (noteY < viewBoxMin) {
for (; noteY < viewBoxMin; textWidget.pageUp()) {
viewBoxMin = textWidget.scrollTop_;
viewBoxMax = viewBoxMin + textWidget.innerHeight;
}
return;
} else if (noteY > viewBoxMax) {
for (; noteY > viewBoxMax; textWidget.pageDown()) {
viewBoxMin = textWidget.scrollTop_;
viewBoxMax = viewBoxMin + textWidget.innerHeight;
}
return;
}
return;
}
changeLink(textWidget: any, offset: number): void | null {
if (textWidget.noteId !== this.noteId_) {
this.updateNote(textWidget);
this.changeLink(textWidget, offset);
return;
}
if (textWidget.renderedText_ !== this.renderedText_) {
this.updateText(textWidget.renderedText_);
this.changeLink(textWidget, offset);
return;
}
if (textWidget.scrollTop_ !== this.scrollTop_) this.scrollTop_ = textWidget.scrollTop_;
if (!this.linkStore_.length) return null;
let offsetMod = (offset + this.currentLinkIndex_) % this.linkStore_.length;
if (this.currentLinkIndex_ === null) {
if (offsetMod < 0) this.currentLinkIndex_ = this.linkStore_.length + offsetMod;
else if (!offsetMod) this.currentLinkIndex_ = 0;
else this.currentLinkIndex_ = offsetMod - 1;
return;
}
if (offsetMod < 0) offsetMod = this.linkStore_.length + offsetMod;
this.currentLinkIndex_ = offsetMod;
return;
}
openLink(textWidget: any): void {
if (textWidget.noteId !== this.noteId_) return;
if (textWidget.renderedText_ !== this.renderedText_) return;
if (textWidget.scrollTop_ !== this.scrollTop_) return;
open(this.linkStore_[this.currentLinkIndex_].link);
}
}
export default LinkSelector;

View File

@@ -1,4 +1,4 @@
const { Logger } = require('lib/logger.js');
const Logger = require('lib/Logger').default;
const { netUtils } = require('lib/net-utils.js');
const http = require('http');

View File

@@ -1,15 +1,17 @@
const { Logger } = require('lib/logger.js');
const Logger = require('lib/Logger').default;
const Folder = require('lib/models/Folder.js');
const BaseItem = require('lib/models/BaseItem.js');
const Tag = require('lib/models/Tag.js');
const BaseModel = require('lib/BaseModel.js');
const Note = require('lib/models/Note.js');
const Resource = require('lib/models/Resource.js');
const Setting = require('lib/models/Setting.js');
const { reducer, defaultState } = require('lib/reducer.js');
const Setting = require('lib/models/Setting').default;
const reducer = require('lib/reducer').default;
const { defaultState } = require('lib/reducer');
const { splitCommandString } = require('lib/string-utils.js');
const { reg } = require('lib/registry.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const shim = require('lib/shim').default;
const Entities = require('html-entities').AllHtmlEntities;
const htmlentities = new Entities().encode;
@@ -33,6 +35,8 @@ const FolderListWidget = require('./gui/FolderListWidget.js');
const NoteListWidget = require('./gui/NoteListWidget.js');
const StatusBarWidget = require('./gui/StatusBarWidget.js');
const ConsoleWidget = require('./gui/ConsoleWidget.js');
const LinkSelector = require('./LinkSelector.js').default;
class AppGui {
constructor(app, store, keymap) {
@@ -74,6 +78,8 @@ class AppGui {
this.currentShortcutKeys_ = [];
this.lastShortcutKeyTime_ = 0;
this.linkSelector_ = new LinkSelector();
// Recurrent sync is setup only when the GUI is started. In
// a regular command it's not necessary since the process
// exits right away.
@@ -455,6 +461,30 @@ class AppGui {
} else {
this.stdout(_('Please select the note or notebook to be deleted first.'));
}
} else if (cmd === 'next_link' || cmd === 'previous_link') {
const noteText = this.widget('noteText');
noteText.render();
if (cmd === 'next_link') this.linkSelector_.changeLink(noteText, 1);
else this.linkSelector_.changeLink(noteText, -1);
this.linkSelector_.scrollWidget(noteText);
const cursorOffsetX = this.widget('mainWindow').width - noteText.innerWidth - 8;
const cursorOffsetY = 1 - noteText.scrollTop_;
if (this.linkSelector_.link) {
this.term_.moveTo(
this.linkSelector_.noteX + cursorOffsetX,
this.linkSelector_.noteY + cursorOffsetY
);
shim.setTimeout(() => this.term_.term().inverse(this.linkSelector_.link), 50);
}
} else if (cmd === 'open_link') {
if (this.widget('noteText').hasFocus) {
this.linkSelector_.openLink(this.widget('noteText'));
}
} else if (cmd === 'toggle_console') {
if (!this.consoleIsShown()) {
this.showConsole();

View File

@@ -1,4 +1,4 @@
const { BaseApplication } = require('lib/BaseApplication');
const BaseApplication = require('lib/BaseApplication').default;
const { FoldersScreenUtils } = require('lib/folders-screen-utils.js');
const ResourceService = require('lib/services/ResourceService');
const BaseModel = require('lib/BaseModel.js');
@@ -6,14 +6,15 @@ const Folder = require('lib/models/Folder.js');
const BaseItem = require('lib/models/BaseItem.js');
const Note = require('lib/models/Note.js');
const Tag = require('lib/models/Tag.js');
const Setting = require('lib/models/Setting.js');
const Setting = require('lib/models/Setting').default;
const { reg } = require('lib/registry.js');
const { fileExtension } = require('lib/path-utils.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const fs = require('fs-extra');
const { cliUtils } = require('./cli-utils.js');
const Cache = require('lib/Cache');
const RevisionService = require('lib/services/RevisionService');
const shim = require('lib/shim').default;
class Application extends BaseApplication {
constructor() {
@@ -161,7 +162,7 @@ class Application extends BaseApplication {
};
// Give it a few seconds to cancel otherwise exit anyway
setTimeout(async () => {
shim.setTimeout(async () => {
await doExit();
}, 5000);
@@ -324,6 +325,9 @@ class Application extends BaseApplication {
{ keys: ['PAGE_DOWN'], type: 'function', command: 'page_down' },
{ keys: ['ENTER'], type: 'function', command: 'activate' },
{ keys: ['DELETE', 'BACKSPACE'], type: 'function', command: 'delete' },
{ keys: ['n'], type: 'function', command: 'next_link' },
{ keys: ['b'], type: 'function', command: 'previous_link' },
{ keys: ['o'], type: 'function', command: 'open_link' },
{ keys: [' '], command: 'todo toggle $n' },
{ keys: ['tc'], type: 'function', command: 'toggle_console' },
{ keys: ['tm'], type: 'function', command: 'toggle_metadata' },

View File

@@ -1,4 +1,4 @@
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const { reg } = require('lib/registry.js');
class BaseCommand {

View File

@@ -1,7 +1,7 @@
const fs = require('fs-extra');
const { fileExtension, dirname } = require('lib/path-utils.js');
const wrap_ = require('word-wrap');
const { languageCode } = require('lib/locale.js');
const { languageCode } = require('lib/locale');
const rootDir = dirname(dirname(__dirname));
const MAX_WIDTH = 78;

View File

@@ -1,14 +1,14 @@
'use strict';
const fs = require('fs-extra');
const { Logger } = require('lib/logger.js');
const Logger = require('lib/Logger').default;
const { dirname } = require('lib/path-utils.js');
const { DatabaseDriverNode } = require('lib/database-driver-node.js');
const { JoplinDatabase } = require('lib/joplin-database.js');
const BaseModel = require('lib/BaseModel.js');
const Folder = require('lib/models/Folder.js');
const Note = require('lib/models/Note.js');
const Setting = require('lib/models/Setting.js');
const Setting = require('lib/models/Setting').default;
const { sprintf } = require('sprintf-js');
const exec = require('child_process').exec;

View File

@@ -1,7 +1,8 @@
const yargParser = require('yargs-parser');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const { time } = require('lib/time-utils.js');
const stringPadding = require('string-padding');
const Logger = require('lib/Logger').default;
const cliUtils = {};
@@ -245,4 +246,17 @@ cliUtils.redrawDone = function() {
redrawStarted_ = false;
};
cliUtils.stdoutLogger = function(stdout) {
const stdoutFn = (...s) => stdout(s.join(' '));
const logger = new Logger();
logger.addTarget('console', { console: {
info: stdoutFn,
warn: stdoutFn,
error: stdoutFn,
} });
return logger;
};
module.exports = { cliUtils };

View File

@@ -1,8 +1,8 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const BaseModel = require('lib/BaseModel.js');
const { shim } = require('lib/shim.js');
const shim = require('lib/shim').default;
class Command extends BaseCommand {
usage() {

View File

@@ -1,6 +1,6 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const BaseModel = require('lib/BaseModel.js');
const BaseItem = require('lib/models/BaseItem.js');
const Note = require('lib/models/Note.js');

View File

@@ -1,8 +1,8 @@
const { BaseCommand } = require('./base-command.js');
const { _, setLocale } = require('lib/locale.js');
const { _, setLocale } = require('lib/locale');
const { app } = require('./app.js');
const fs = require('fs-extra');
const Setting = require('lib/models/Setting.js');
const Setting = require('lib/models/Setting').default;
class Command extends BaseCommand {
usage() {

View File

@@ -1,6 +1,6 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const BaseModel = require('lib/BaseModel.js');
const Note = require('lib/models/Note.js');

View File

@@ -1,6 +1,6 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const BaseModel = require('lib/BaseModel.js');
const Note = require('lib/models/Note.js');
const { time } = require('lib/time-utils.js');

View File

@@ -1,10 +1,10 @@
const { BaseCommand } = require('./base-command.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const EncryptionService = require('lib/services/EncryptionService');
const DecryptionWorker = require('lib/services/DecryptionWorker');
const BaseItem = require('lib/models/BaseItem');
const Setting = require('lib/models/Setting.js');
const { shim } = require('lib/shim');
const Setting = require('lib/models/Setting').default;
const shim = require('lib/shim').default;
const pathUtils = require('lib/path-utils.js');
const imageType = require('image-type');
const readChunk = require('read-chunk');
@@ -38,7 +38,7 @@ class Command extends BaseCommand {
this.stdout(_('Operation cancelled'));
return false;
}
Setting.setObjectKey('encryption.passwordCache', masterKeyId, password);
Setting.setObjectValue('encryption.passwordCache', masterKeyId, password);
await EncryptionService.instance().loadMasterKeysFromSettings();
return true;
};

View File

@@ -1,11 +1,11 @@
const fs = require('fs-extra');
const { BaseCommand } = require('./base-command.js');
const { splitCommandString } = require('lib/string-utils.js');
const { uuid } = require('lib/uuid.js');
const uuid = require('lib/uuid').default;
const { app } = require('./app.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const Note = require('lib/models/Note.js');
const Setting = require('lib/models/Setting.js');
const Setting = require('lib/models/Setting').default;
const BaseModel = require('lib/BaseModel.js');
class Command extends BaseCommand {

View File

@@ -1,6 +1,6 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
class Command extends BaseCommand {
usage() {

View File

@@ -1,6 +1,6 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const Setting = require('lib/models/Setting.js');
const Setting = require('lib/models/Setting').default;
const { ReportService } = require('lib/services/report.js');
const fs = require('fs-extra');

View File

@@ -1,8 +1,8 @@
const { BaseCommand } = require('./base-command.js');
const InteropService = require('lib/services/InteropService.js');
const InteropService = require('lib/services/interop/InteropService').default;
const BaseModel = require('lib/BaseModel.js');
const { app } = require('./app.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
class Command extends BaseCommand {
usage() {
@@ -14,7 +14,7 @@ class Command extends BaseCommand {
}
options() {
const service = new InteropService();
const service = InteropService.instance();
const formats = service
.modules()
.filter(m => m.type === 'exporter' && m.format !== 'html')
@@ -41,7 +41,7 @@ class Command extends BaseCommand {
exportOptions.sourceFolderIds = folders.map(n => n.id);
}
const service = new InteropService();
const service = InteropService.instance();
const result = await service.export(exportOptions);
result.warnings.map(w => this.stdout(w));

View File

@@ -1,6 +1,6 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const BaseModel = require('lib/BaseModel.js');
const Note = require('lib/models/Note.js');

View File

@@ -1,7 +1,7 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { renderCommandHelp } = require('./help-utils.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const { cliUtils } = require('./cli-utils.js');
class Command extends BaseCommand {

View File

@@ -1,9 +1,9 @@
const { BaseCommand } = require('./base-command.js');
const InteropService = require('lib/services/InteropService.js');
const InteropService = require('lib/services/interop/InteropService').default;
const BaseModel = require('lib/BaseModel.js');
const { cliUtils } = require('./cli-utils.js');
const { app } = require('./app.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
class Command extends BaseCommand {
usage() {
@@ -15,7 +15,7 @@ class Command extends BaseCommand {
}
options() {
const service = new InteropService();
const service = InteropService.instance();
const formats = service
.modules()
.filter(m => m.type === 'importer')
@@ -63,7 +63,7 @@ class Command extends BaseCommand {
app().gui().showConsole();
this.stdout(_('Importing notes...'));
const service = new InteropService();
const service = InteropService.instance();
const result = await service.import(importOptions);
result.warnings.map(w => this.stdout(w));
cliUtils.redrawDone();

View File

@@ -1,9 +1,9 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const BaseModel = require('lib/BaseModel.js');
const Folder = require('lib/models/Folder.js');
const Setting = require('lib/models/Setting.js');
const Setting = require('lib/models/Setting').default;
const Note = require('lib/models/Note.js');
const { sprintf } = require('sprintf-js');
const { time } = require('lib/time-utils.js');

View File

@@ -1,6 +1,6 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const Folder = require('lib/models/Folder.js');
class Command extends BaseCommand {

View File

@@ -1,6 +1,6 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const Note = require('lib/models/Note.js');
class Command extends BaseCommand {

View File

@@ -1,6 +1,6 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const Note = require('lib/models/Note.js');
class Command extends BaseCommand {

View File

@@ -1,6 +1,6 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const BaseModel = require('lib/BaseModel.js');
const Folder = require('lib/models/Folder.js');
const Note = require('lib/models/Note.js');

View File

@@ -1,6 +1,6 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const BaseModel = require('lib/BaseModel.js');
const Folder = require('lib/models/Folder.js');
const Note = require('lib/models/Note.js');

View File

@@ -1,6 +1,6 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const Folder = require('lib/models/Folder.js');
const BaseModel = require('lib/BaseModel.js');

View File

@@ -1,6 +1,6 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const Note = require('lib/models/Note.js');
const BaseModel = require('lib/BaseModel.js');

View File

@@ -1,8 +1,8 @@
const { BaseCommand } = require('./base-command.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const BaseModel = require('lib/BaseModel.js');
const Folder = require('lib/models/Folder.js');
const { uuid } = require('lib/uuid.js');
const uuid = require('lib/uuid').default;
class Command extends BaseCommand {
usage() {

View File

@@ -1,8 +1,8 @@
const { BaseCommand } = require('./base-command.js');
const { _ } = require('lib/locale.js');
const Setting = require('lib/models/Setting.js');
const { Logger } = require('lib/logger.js');
const { shim } = require('lib/shim');
const { _ } = require('lib/locale');
const Setting = require('lib/models/Setting').default;
const Logger = require('lib/Logger').default;
const shim = require('lib/shim').default;
class Command extends BaseCommand {
@@ -18,7 +18,8 @@ class Command extends BaseCommand {
const command = args.command;
const ClipperServer = require('lib/ClipperServer');
const stdoutFn = (s) => this.stdout(s);
ClipperServer.instance().initialize();
const stdoutFn = (...s) => this.stdout(s.join(' '));
const clipperLogger = new Logger();
clipperLogger.addTarget('file', { path: `${Setting.value('profileDir')}/log-clipper.txt` });
clipperLogger.addTarget('console', { console: {

View File

@@ -1,6 +1,6 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const BaseModel = require('lib/BaseModel.js');
const { Database } = require('lib/database.js');
const Note = require('lib/models/Note.js');

View File

@@ -1,7 +1,7 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const Setting = require('lib/models/Setting.js');
const { _ } = require('lib/locale.js');
const Setting = require('lib/models/Setting').default;
const { _ } = require('lib/locale');
const { ReportService } = require('lib/services/report.js');
class Command extends BaseCommand {

View File

@@ -1,16 +1,17 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const { OneDriveApiNodeUtils } = require('lib/onedrive-api-node-utils.js');
const Setting = require('lib/models/Setting.js');
const Setting = require('lib/models/Setting').default;
const ResourceFetcher = require('lib/services/ResourceFetcher');
const { Synchronizer } = require('lib/synchronizer.js');
const Synchronizer = require('lib/Synchronizer').default;
const { reg } = require('lib/registry.js');
const { cliUtils } = require('./cli-utils.js');
const md5 = require('md5');
const locker = require('proper-lockfile');
const fs = require('fs-extra');
const SyncTargetRegistry = require('lib/SyncTargetRegistry');
const MigrationHandler = require('lib/services/synchronizer/MigrationHandler').default;
class Command extends BaseCommand {
constructor() {
@@ -29,7 +30,10 @@ class Command extends BaseCommand {
}
options() {
return [['--target <target>', _('Sync to provided target (defaults to sync.target config value)')]];
return [
['--target <target>', _('Sync to provided target (defaults to sync.target config value)')],
['--upgrade', _('Upgrade the sync target to the latest version.')],
];
}
static lockFile(filePath) {
@@ -148,12 +152,8 @@ class Command extends BaseCommand {
const syncTarget = reg.syncTarget(this.syncTargetId_);
if (!(await syncTarget.isAuthenticated())) {
app()
.gui()
.showConsole();
app()
.gui()
.maximizeConsole();
app().gui().showConsole();
app().gui().maximizeConsole();
const authDone = await this.doAuth();
if (!authDone) return cleanUp();
@@ -176,6 +176,34 @@ class Command extends BaseCommand {
if (!sync) throw new Error(_('Cannot initialise synchroniser.'));
if (args.options.upgrade) {
let migrationError = null;
try {
const migrationHandler = new MigrationHandler(
sync.api(),
sync.lockHandler(),
Setting.value('appType'),
Setting.value('clientId')
);
migrationHandler.setLogger(cliUtils.stdoutLogger(this.stdout.bind(this)));
await migrationHandler.upgrade();
} catch (error) {
migrationError = error;
}
if (!migrationError) {
Setting.setValue('sync.upgradeState', Setting.SYNC_UPGRADE_STATE_IDLE);
await Setting.saveAll();
}
if (migrationError) throw migrationError;
return cleanUp();
}
this.stdout(_('Starting synchronisation...'));
const contextKey = `sync.${this.syncTargetId_}.context`;
@@ -210,6 +238,12 @@ class Command extends BaseCommand {
throw error;
}
if (Setting.value('sync.upgradeState') > Setting.SYNC_UPGRADE_STATE_IDLE) {
this.stdout(`/!\\ ${_('Sync target must be upgraded! Run `%s` to proceed.', 'sync --upgrade')}`);
app().gui().showConsole();
app().gui().maximizeConsole();
}
cleanUp();
}

View File

@@ -1,6 +1,6 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const Tag = require('lib/models/Tag.js');
const BaseModel = require('lib/BaseModel.js');
const { time } = require('lib/time-utils.js');

View File

@@ -1,6 +1,6 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const BaseModel = require('lib/BaseModel.js');
const Note = require('lib/models/Note.js');
const { time } = require('lib/time-utils.js');

View File

@@ -1,5 +1,5 @@
const { BaseCommand } = require('./base-command.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const CommandDone = require('./command-done.js');

View File

@@ -1,6 +1,6 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const BaseModel = require('lib/BaseModel.js');
class Command extends BaseCommand {

View File

@@ -1,6 +1,6 @@
const { BaseCommand } = require('./base-command.js');
const Setting = require('lib/models/Setting.js');
const { _ } = require('lib/locale.js');
const Setting = require('lib/models/Setting').default;
const { _ } = require('lib/locale');
class Command extends BaseCommand {
usage() {

View File

@@ -1,7 +1,7 @@
'use strict';
const { time } = require('lib/time-utils.js');
const { Logger } = require('lib/logger.js');
const Logger = require('lib/Logger').default;
const Resource = require('lib/models/Resource.js');
const { dirname } = require('lib/path-utils.js');
const { FsDriverNode } = require('./fs-driver-node.js');

View File

@@ -2,7 +2,7 @@ const Folder = require('lib/models/Folder.js');
const Tag = require('lib/models/Tag.js');
const BaseModel = require('lib/BaseModel.js');
const ListWidget = require('tkwidgets/ListWidget.js');
const _ = require('lib/locale.js')._;
const _ = require('lib/locale')._;
class FolderListWidget extends ListWidget {
constructor() {

View File

@@ -1,6 +1,6 @@
const Note = require('lib/models/Note.js');
const TextWidget = require('tkwidgets/TextWidget.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
class NoteWidget extends TextWidget {
constructor() {

View File

@@ -1,6 +1,6 @@
const { wrap } = require('lib/string-utils.js');
const Setting = require('lib/models/Setting.js');
const { _ } = require('lib/locale.js');
const Setting = require('lib/models/Setting').default;
const { _ } = require('lib/locale');
const MAX_WIDTH = 78;
const INDENT = ' ';

View File

@@ -21,12 +21,12 @@ const Note = require('lib/models/Note.js');
const Tag = require('lib/models/Tag.js');
const NoteTag = require('lib/models/NoteTag.js');
const MasterKey = require('lib/models/MasterKey');
const Setting = require('lib/models/Setting.js');
const Setting = require('lib/models/Setting').default;
const Revision = require('lib/models/Revision.js');
const { Logger } = require('lib/logger.js');
const Logger = require('lib/Logger').default;
const { FsDriverNode } = require('lib/fs-driver-node.js');
const { shimInit } = require('lib/shim-init-node.js');
const { _ } = require('lib/locale.js');
const { _ } = require('lib/locale');
const { FileApiDriverLocal } = require('lib/file-api-driver-local.js');
const EncryptionService = require('lib/services/EncryptionService');
const envFromArgs = require('lib/envFromArgs');

View File

@@ -0,0 +1,68 @@
import * as vm from 'vm';
import Plugin from 'lib/services/plugins/Plugin';
import sandboxProxy from 'lib/services/plugins/sandboxProxy';
import BasePluginRunner from 'lib/services/plugins/BasePluginRunner';
import executeSandboxCall from 'lib/services/plugins/utils/executeSandboxCall';
import Global from 'lib/services/plugins/api/Global';
import mapEventHandlersToIds, { EventHandlers } from 'lib/services/plugins/utils/mapEventHandlersToIds';
function createConsoleWrapper(pluginId:string) {
const wrapper:any = {};
for (const n in console) {
if (!console.hasOwnProperty(n)) continue;
wrapper[n] = (...args:any[]) => {
const newArgs = args.slice();
newArgs.splice(0, 0, `Plugin "${pluginId}":`);
return (console as any)[n](...newArgs);
};
}
return wrapper;
}
// The CLI plugin runner is more complex than it needs to be because it more or less emulates
// how it would work in a multi-process architecture, as in the desktop app (and probably how
// it would work in the mobile app too). This is mainly to allow doing integration testing.
//
// For example, all plugin calls go through a proxy, however they could made directly since
// the plugin script is running within the same process as the main app.
export default class PluginRunner extends BasePluginRunner {
private eventHandlers_:EventHandlers = {};
constructor() {
super();
this.eventHandler = this.eventHandler.bind(this);
}
private async eventHandler(eventHandlerId:string, args:any[]) {
const cb = this.eventHandlers_[eventHandlerId];
return cb(...args);
}
private newSandboxProxy(pluginId:string, sandbox:Global) {
const target = async (path:string, args:any[]) => {
return executeSandboxCall(pluginId, sandbox, `joplin.${path}`, mapEventHandlersToIds(args, this.eventHandlers_), this.eventHandler);
};
return {
joplin: sandboxProxy(target),
console: createConsoleWrapper(pluginId),
};
}
async run(plugin:Plugin, sandbox:Global) {
const vmSandbox = vm.createContext(this.newSandboxProxy(plugin.id, sandbox));
try {
vm.runInContext(plugin.scriptText, vmSandbox);
} catch (error) {
this.logger().error(`In plugin ${plugin.id}:`, error);
return;
}
}
}

View File

@@ -2,11 +2,15 @@ const gulp = require('gulp');
const fs = require('fs-extra');
const utils = require('../Tools/gulp/utils');
const tasks = {
compileExtensions: {
fn: require('../Tools/gulp/tasks/compileExtensions.js'),
},
copyLib: require('../Tools/gulp/tasks/copyLib'),
tsc: require('../Tools/gulp/tasks/tsc'),
updateIgnoredTypeScriptBuild: require('../Tools/gulp/tasks/updateIgnoredTypeScriptBuild'),
};
tasks.build = {
tasks.prepareBuild = {
fn: async () => {
const buildDir = `${__dirname}/build`;
await utils.copyDir(`${__dirname}/app`, buildDir, {
@@ -28,7 +32,7 @@ tasks.build = {
},
};
tasks.buildTests = {
tasks.prepareTestBuild = {
fn: async () => {
const testBuildDir = `${__dirname}/tests-build`;
@@ -37,25 +41,33 @@ tasks.buildTests = {
'lib/',
'locales/',
'node_modules/',
'*.ts',
'*.tsx',
],
});
await utils.copyDir(`${__dirname}/../ReactNativeClient/lib`, `${testBuildDir}/lib`);
await utils.copyDir(`${__dirname}/../ReactNativeClient/locales`, `${testBuildDir}/locales`);
const rootDir = utils.rootDir();
await utils.copyDir(`${rootDir}/ReactNativeClient/lib`, `${testBuildDir}/lib`, {
excluded: [
`${rootDir}/ReactNativeClient/lib/joplin-renderer/node_modules`,
],
});
await utils.copyDir(`${rootDir}/ReactNativeClient/locales`, `${testBuildDir}/locales`);
await fs.mkdirp(`${testBuildDir}/data`);
},
};
const buildTestSeries = [
tasks.buildTests.fn,
];
utils.registerGulpTasks(gulp, tasks);
if (require('os').platform() === 'win32') {
gulp.task('copyLib', tasks.copyLib.fn);
gulp.task('tsc', tasks.tsc.fn);
buildTestSeries.push('copyLib');
buildTestSeries.push('tsc');
}
gulp.task('build', gulp.series([
'prepareBuild',
'compileExtensions',
'copyLib',
]));
gulp.task('build', tasks.build.fn);
gulp.task('buildTests', gulp.series(...buildTestSeries));
gulp.task('buildTests', gulp.series([
'prepareTestBuild',
'compileExtensions',
'copyLib',
]));

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@@ -38,42 +38,42 @@ locales['tr_TR'] = require('./tr_TR.json');
locales['vi'] = require('./vi.json');
locales['zh_CN'] = require('./zh_CN.json');
locales['zh_TW'] = require('./zh_TW.json');
stats['ar'] = {"percentDone":83};
stats['eu'] = {"percentDone":35};
stats['bs_BA'] = {"percentDone":87};
stats['bg_BG'] = {"percentDone":69};
stats['ca'] = {"percentDone":55};
stats['hr_HR'] = {"percentDone":29};
stats['cs_CZ'] = {"percentDone":86};
stats['da_DK'] = {"percentDone":77};
stats['de_DE'] = {"percentDone":97};
stats['et_EE'] = {"percentDone":69};
stats['ar'] = {"percentDone":80};
stats['eu'] = {"percentDone":34};
stats['bs_BA'] = {"percentDone":83};
stats['bg_BG'] = {"percentDone":66};
stats['ca'] = {"percentDone":53};
stats['hr_HR'] = {"percentDone":28};
stats['cs_CZ'] = {"percentDone":82};
stats['da_DK'] = {"percentDone":74};
stats['de_DE'] = {"percentDone":95};
stats['et_EE'] = {"percentDone":66};
stats['en_GB'] = {"percentDone":100};
stats['en_US'] = {"percentDone":100};
stats['es_ES'] = {"percentDone":93};
stats['eo'] = {"percentDone":40};
stats['fr_FR'] = {"percentDone":98};
stats['gl_ES'] = {"percentDone":45};
stats['id_ID'] = {"percentDone":97};
stats['it_IT'] = {"percentDone":94};
stats['nl_NL'] = {"percentDone":88};
stats['nl_BE'] = {"percentDone":35};
stats['nb_NO'] = {"percentDone":92};
stats['fa'] = {"percentDone":35};
stats['pl_PL'] = {"percentDone":88};
stats['pt_PT'] = {"percentDone":92};
stats['pt_BR'] = {"percentDone":99};
stats['ro'] = {"percentDone":35};
stats['sl_SI'] = {"percentDone":44};
stats['sv'] = {"percentDone":74};
stats['th_TH'] = {"percentDone":55};
stats['vi'] = {"percentDone":89};
stats['tr_TR'] = {"percentDone":98};
stats['el_GR'] = {"percentDone":94};
stats['ru_RU'] = {"percentDone":92};
stats['sr_RS'] = {"percentDone":75};
stats['zh_CN'] = {"percentDone":97};
stats['zh_TW'] = {"percentDone":93};
stats['ja_JP'] = {"percentDone":97};
stats['ko'] = {"percentDone":90};
stats['es_ES'] = {"percentDone":95};
stats['eo'] = {"percentDone":38};
stats['fr_FR'] = {"percentDone":94};
stats['gl_ES'] = {"percentDone":43};
stats['id_ID'] = {"percentDone":93};
stats['it_IT'] = {"percentDone":91};
stats['nl_NL'] = {"percentDone":96};
stats['nl_BE'] = {"percentDone":34};
stats['nb_NO'] = {"percentDone":88};
stats['fa'] = {"percentDone":80};
stats['pl_PL'] = {"percentDone":96};
stats['pt_PT'] = {"percentDone":89};
stats['pt_BR'] = {"percentDone":96};
stats['ro'] = {"percentDone":78};
stats['sl_SI'] = {"percentDone":42};
stats['sv'] = {"percentDone":71};
stats['th_TH'] = {"percentDone":52};
stats['vi'] = {"percentDone":85};
stats['tr_TR'] = {"percentDone":96};
stats['el_GR'] = {"percentDone":96};
stats['ru_RU'] = {"percentDone":95};
stats['sr_RS'] = {"percentDone":72};
stats['zh_CN'] = {"percentDone":96};
stats['zh_TW'] = {"percentDone":95};
stats['ja_JP'] = {"percentDone":96};
stats['ko'] = {"percentDone":86};
module.exports = { locales: locales, stats: stats };

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

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