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

Compare commits

...

760 Commits

Author SHA1 Message Date
Laurent Cozic
8eff3f5616 Electron release v1.0.210 2020-05-20 09:10:50 +01:00
Laurent Cozic
6f8332bad1 Desktop: Fixes #3228: Markdown editor would not scroll in sync with viewer in some cases 2020-05-20 01:16:03 +01:00
Laurent Cozic
01e0c0c21f Desktop: Made Markdown editor default again 2020-05-20 00:59:12 +01:00
Laurent Cozic
7a1eecc815 Desktop: Fixes #3200: Fixed infinite rendering loop, which would cause the app to crash (white window) 2020-05-20 00:58:35 +01:00
Laurent Cozic
bec91863e2 All: Fixes #3234: Sync would fail in some cases due to a database error 2020-05-19 23:17:56 +01:00
Ayush Jain
341b763088 Desktop: Resolves #2883: Themes switched for more appealing text highlighting (#3192)
* conflicts fixed and changes made to aceEditor.tsx

* theme imported

* theme imported
2020-05-18 11:30:29 +01:00
Laurent Cozic
e0721493e9 Electron release v1.0.209 2020-05-17 18:07:54 +01:00
Laurent Cozic
2d467f7fa5 CI: Upgrade required Node version to 10 2020-05-17 18:07:44 +01:00
Laurent Cozic
23ecbfcb3a Electron release v1.0.208 2020-05-17 16:54:23 +01:00
Laurent Cozic
f8ad782991 Desktop: Fixes #3219: Fix notebook associated with note when doing search, and expand correct notebook 2020-05-17 16:45:27 +01:00
Laurent Cozic
c2684a8149 Desktop: Added more info on how to switch to Markdown editor 2020-05-17 16:29:55 +01:00
Laurent Cozic
4e7c6b0aea Update welcome note 2020-05-17 16:00:45 +01:00
Laurent Cozic
c568f5b33c Desktop: Resolves #3137: Switch to Font Awesome as icon library 2020-05-17 15:34:42 +01:00
Laurent Cozic
e85d4fca5d Desktop: Moved note-related toolbar button next to tag bar 2020-05-17 14:01:42 +01:00
Naveen M V
d9601f3136 Desktop: Dev fix: Remove redundant handleHistory call. (#3216)
handleHistory calls have been moved out of the switch statement.
2020-05-16 13:42:27 +01:00
Laurent Cozic
3ee5deb9f3 Update website 2020-05-16 13:31:29 +01:00
Laurent Cozic
8bc92e88df Doc: Added sponsors 2020-05-16 13:30:54 +01:00
anirudh murali
ebe06c9c38 Desktop: Fixes #2865: Make sidebar resizable when note list is not displayed (#2895)
Co-authored-by: Laurent Cozic <laurent22@users.noreply.github.com>
2020-05-15 12:20:56 +01:00
Naveen M V
b3f32ffc59 Desktop: Resolves #2409: Add note history (back/forward buttons) (#2819) 2020-05-15 12:13:42 +01:00
Laurent Cozic
ecc50790ed Desktop: Refactor: Minor refactoring following counter feature update in a09c7b72c7 2020-05-15 11:52:59 +01:00
RedDocMD
a09c7b72c7 Desktop: Fixes #3009: Word/character counter includes Markdown syntax and HTML tags (#3037)
* Updated commit

* Update package.json

* Update package.json

Co-authored-by: Laurent Cozic <laurent22@users.noreply.github.com>
2020-05-15 11:28:31 +01:00
roman-r-m
7d767cf0c9 Mobile: Resolves #2327: Handle back button when sort popup is open (#3187) 2020-05-14 16:03:13 +01:00
Caleb John
b5fc8e7fc1 Merge pull request #3012 from Rishgod/theme-bold
Desktop: Changing bold-text preview color for Aritim-dark theme
2020-05-13 17:55:09 -06:00
zawnk
91ec0dce37 Minor type in German translation (#3208) 2020-05-13 17:33:27 +01:00
Laurent Cozic
1aa2786ba0 CLI v1.0.164 2020-05-13 16:32:15 +01:00
Laurent Cozic
3265fafd76 Cli: Improve handling of encrypted items 2020-05-13 16:28:54 +01:00
roman-r-m
17fd8ee504 Mobile: Fixes #2685: Fix quick actions (#2796)
* Fix quick actions

* Receive quick actions when the app is cold-launched

* Force side menu close before creating quick note

* Fix react warning: Can't perform a react state update on an unmounted component

The warning was:
Warning: Can't perform a React state update on an unmounted component. This is a no-op, but it indicates a memory leak in your application. To fix, cancel all subscriptions and asynchronous tasks in the componentWillUnmount method.
    in NoteScreenComponent (created by Connect(NoteScreenComponent))
    in Connect(NoteScreenComponent) (at app-nav.js:74)

* Fix auto title generation for quick notes.

The previous version created a new provisional note but then while handling NAV_BACK at reduxSharedMiddleware:35 the list of provisional note ids was cleared so when NoteScreenComponent was being mounted later the note was no longer considered provisional and Joplin would not generate the note title from its contents.

* Check for quick action data to be present before processing.

For some reason sometimes it gets called with null.
2020-05-13 11:39:16 +01:00
Laurent Cozic
05adb06aeb Desktop: WYSIWYG: Allow pasting images in editor 2020-05-11 19:26:04 +01:00
Laurent Cozic
dacf6377ae Desktop: WYSIWYG: Fixed UI translation issue for certain languages 2020-05-11 18:59:23 +01:00
Laurent Cozic
fa76c5db8d Desktop: Upgraded to Electron 8.2.5 2020-05-10 22:11:46 +00:00
Laurent Cozic
17f6d6e8c1 Merge branch 'master' of github.com:laurent22/joplin 2020-05-11 09:42:38 +01:00
Laurent Cozic
347d84526b Tools: Improve git-changelog tool 2020-05-10 17:54:18 +01:00
Laurent Cozic
172327613f Doc: Clarify ID format 2020-05-10 17:52:53 +01:00
Laurent Cozic
3e1ee7f330 Update PULL_REQUEST_TEMPLATE 2020-05-10 17:42:21 +01:00
Laurent Cozic
22b5888671 Electron release v1.0.207 2020-05-10 17:16:36 +01:00
Laurent Cozic
41edae9719 All: Security: Fixes #3143: Filter SVG element event attributes to prevent XSS vulnerability 2020-05-10 16:51:15 +01:00
Laurent Cozic
6446a3c4de Revert "Desktop: Resolves #2894: Set editor color scheme according to theme (#3188)"
This reverts commit 488cb99d4c.

Reason: The app doesn't even start

https://github.com/laurent22/joplin/pull/3188#issuecomment-626334459
2020-05-10 16:33:28 +01:00
Laurent Cozic
9c4939e051 Merge branch 'master' of github.com:laurent22/joplin 2020-05-10 16:28:34 +01:00
Laurent Cozic
9f9f760ede Desktop: WYSIWYG: Handle drag and drop of notes and files 2020-05-10 16:28:22 +01:00
Ayush Jain
488cb99d4c Desktop: Resolves #2894: Set editor color scheme according to theme (#3188)
* conflicts fixed and changes made to aceEditor.tsx

* theme imported
2020-05-10 15:13:55 +01:00
Giacomo Rossetto
4167ecafd2 Desktop: Support Windows tiles (#3063)
* Add vector assets

Useful for future tile designs, they contain suggested content guides

* Add tile files

Images and manifest

* Make build script retrieve new files

* Automate Windows Tiles icon generation

* Fix alignment bug

* Replace handcraftet tiles with automatically generetad ones
2020-05-10 15:01:53 +01:00
Laurent Cozic
6ca41ddf80 Desktop: WYSIWYG: Enable context menu on resources, links and text 2020-05-09 19:18:41 +01:00
Rahul Mohata
734f83470c Desktop, Mobile: Fixes #3109: Fixed background color on large Mermaid graphs (#3111) 2020-05-09 16:21:01 +01:00
Siddhant Sehgal
0f8f7aeb14 Desktop: Fixes #3052: Fixed order of notebooks in "Move to notebook" dialog (#3084)
* Added Folder::sortFolderTree

* Added unit tests
2020-05-09 16:19:30 +01:00
Mohammed Rabeeh
3b653a95a0 Desktop: Fixes #3066: Fix focus after exiting GotoAnything (#3075)
* Fix focus on GotoAnything and Layout Switching

* Update app.js

Co-authored-by: Laurent Cozic <laurent22@users.noreply.github.com>
2020-05-09 16:17:11 +01:00
Yuvaraj J
06eb389b21 CLI: Made layout configurable (#3069) 2020-05-09 16:12:09 +01:00
Rahul Mohata
17d2d6f959 Mobile: Fixed note title placeholder color (#3006)
Co-authored-by: Laurent Cozic <laurent22@users.noreply.github.com>
2020-05-09 16:07:47 +01:00
Rahul Mohata
20e065a371 Mobile : Disabled the header items when no note is selected (#2988) 2020-05-09 16:01:39 +01:00
anirudh murali
57cf826e2c All: Resolves #2915: Improve automatic title generation (#2955) 2020-05-09 15:55:00 +01:00
Rahul Mohata
dbe8d3a68e Mobile: Fixed the switch background color on config screen (#2919) 2020-05-09 15:39:02 +01:00
Ishant Gupta
5a174b2236 Mobile: Fixes #2875: Fixed notebook title text overflow (#2877)
* uses no_of_lines to fix the issue

* ellipsizeMode added
2020-05-09 15:33:06 +01:00
Mohammed Rabeeh
b8158f3b53 Desktop: Fixes #3131: Long URIs break Note Info dialog (#3136) 2020-05-09 11:53:16 +01:00
roman-r-m
e768b8cfea Mobile: Avoid crash when downloading large files (#3113) 2020-05-09 11:52:09 +01:00
Vas Sudanagunta
c593546575 Docs: minor improvements to search type table (#2957)
- fixed grammar
- removed redundant "query"
2020-05-09 11:31:15 +01:00
roman-r-m
578f93fb90 Mobile: Improve performance of attaching images, especially large ones (#2945)
* Disable sending serialized data over the react-native bridge when attaching image or file

* Remove noData opt from DocumentPicker as it's only relevant for ImagePicker
2020-05-09 11:26:03 +01:00
Caleb John
24a90036b7 Linux: Fixes #2906 : Update install script to remove command -v check (#2926)
* Linux: update install script to remove command -v check

* Formatting change

* spacing
2020-05-09 11:23:42 +01:00
Laurent Cozic
488c0f1828 Merge branch 'master' of github.com:laurent22/joplin 2020-05-09 11:12:36 +01:00
Laurent Cozic
f4717d0a3d Desktop: Add option to "Reveal file in folder" when right-clicking on image
Co-authored-by: Vaidotas Šimkus
2020-05-09 11:10:47 +01:00
Pranav Shridhar
913c78f45d macOS: Resolves #2804: Add search feature in Help Menu (#2805)
* added search feature in help menu (for mac users)

* Update app.js

Co-authored-by: Laurent Cozic <laurent22@users.noreply.github.com>
2020-05-09 10:47:13 +01:00
Laurent Cozic
4e90c05472 Electron release v1.0.206 2020-05-09 09:38:50 +01:00
Zaid Kesarani
d31d9f2638 Android: Fixed Export Profile Error (#3082)
* Fixed issue: #3010

* solved linter errors

* Optimized Code
2020-05-08 22:46:12 +01:00
Laurent Cozic
0cf56d5a9a Merge branch 'master' of github.com:laurent22/joplin 2020-05-08 13:41:42 +01:00
Shotaro Yamada
80112e7b35 Desktop: Handle compositionend event in TinyMCE (#3164) 2020-05-08 00:16:04 +01:00
Laurent Cozic
b2f1fac133 Delete question.md 2020-05-08 00:11:26 +01:00
Laurent Cozic
cd57877175 Update issue templates 2020-05-08 00:09:09 +01:00
Laurent Cozic
30f515d473 Update question.md 2020-05-08 00:01:16 +01:00
Laurent Cozic
199113341f Update question.md 2020-05-07 23:59:54 +01:00
Laurent Cozic
64aef69d74 Change issue template for questions
Many users unfortunately don't care about the template asking not post support queries here, so we'll now accept questions but we'll just ignore them and let stale bot take care of them.

Also removed the "invalid" template because I believe it make people try to game the system by posting instead a bug report for their support or feature request. At least now we can hope there will less off-topic issues in the bug label.
2020-05-07 23:57:30 +01:00
Laurent Cozic
2073755498 Electron release v1.0.205 2020-05-07 23:11:24 +01:00
Laurent Cozic
f72b5c1028 Desktop: WYSIWYG: Fix CODE element style 2020-05-07 23:10:56 +01:00
Laurent Cozic
561b24f6fd Merge branch 'master' of github.com:laurent22/joplin 2020-05-07 18:20:23 +01:00
Laurent Cozic
d41221bd90 Desktop: Fixed regression with Ace Editor list indentation, and cleaned up code 2020-05-07 18:20:07 +01:00
Laurent Cozic
132c6543b2 Desktop: Fixed regression with Ace Editor (switching layout had bugs) 2020-05-07 18:08:03 +01:00
AlphaJack
7152344fe1 All: Translation: Update it_IT.po (#3172) 2020-05-07 00:32:51 -04:00
Laurent Cozic
a04092c99c Desktop: Fixes #2467: Disable or enable menu items depending on the current view 2020-05-06 23:31:18 +00:00
Laurent Cozic
c273fd4d63 Desktop: Fixed regression with local search (could not be closed anymore) 2020-05-06 23:17:03 +01:00
Renato Rosa
e06dd9c69f Update locale pt_BR to add latest strings. (#3159) 2020-05-05 19:09:19 +01:00
Laurent Cozic
463b20013d Fixed linter errors 2020-05-05 19:03:13 +01:00
Laurent Cozic
204fbec648 Desktop: WYSIWYG: Handle "Paste as text" when pressing Ctrl+Shift+V 2020-05-05 18:52:06 +01:00
Laurent Cozic
d65706aa9c Desktop: TinyMCE: Fixed undo issue when pasting text 2020-05-05 00:01:13 +00:00
Laurent Cozic
f2a1597ecc Desktop: TinyMCE: Fixed clicking a link within a checkbox label 2020-05-04 23:08:36 +01:00
Laurent Cozic
9a2f0bee29 Clean up 2020-05-04 18:37:22 +01:00
Laurent Cozic
3f8833eaf1 Desktop: TinyMCE: Added support for scroll restore 2020-05-04 18:31:55 +01:00
Laurent Cozic
c3a1e7c6e9 Desktop: Fixed note toolbar layout 2020-05-04 00:14:28 +00:00
Laurent Cozic
f5aec137bd Desktop: TinyMCE: Added localisation support 2020-05-03 23:55:41 +00:00
Laurent Cozic
20960dbd47 Electron release v1.0.204 2020-05-03 23:21:54 +01:00
Laurent Cozic
e45fd6b4d3 Fixed typo 2020-05-03 23:21:45 +01:00
Laurent Cozic
8eacba972e Electron release v1.0.203 2020-05-03 18:46:27 +01:00
Laurent Cozic
51732a5adb Desktop: Fixed various bugs and regressions following note editor refactoring
Squashed commit of the following:

commit 5fde36f5c3fa7c7efbce6d81f48fe841c823e88c
Author: Laurent Cozic <laurent@cozic.net>
Date:   Sun May 3 18:43:20 2020 +0100

    Cannot fix for now

commit 251284db3c8b7da6db83f3e06fd19bfdc8b8dd3f
Author: Laurent Cozic <laurent@cozic.net>
Date:   Sun May 3 18:31:08 2020 +0100

    Fixed print to multiple PDFs logic

commit 00d9557996fb984b400fe650594150ae2681e03f
Author: Laurent Cozic <laurent@cozic.net>
Date:   Sun May 3 17:49:20 2020 +0100

    Fixed local search in TinyMCE

commit 46778bf0a79f3bba9ddbc27389fadce4f8944507
Author: Laurent Cozic <laurent@cozic.net>
Date:   Sun May 3 17:37:31 2020 +0100

    Restored note toolbar buttons

commit 3e623c98f0a1cf08bf7d0136f0c8982c5e1ddcd8
Author: Laurent Cozic <laurent@cozic.net>
Date:   Sun May 3 12:30:57 2020 +0100

    Various fixes and moved note toolbar to left of title

commit 790262fe9df5b08d4a619e5244d2906047b39855
Author: Laurent Cozic <laurent@cozic.net>
Date:   Sun May 3 11:21:11 2020 +0100

    Clean up

commit cea30f42e69014ecabda6fa5083199a1ba7b7510
Author: Laurent Cozic <laurent@cozic.net>
Date:   Sun May 3 11:08:23 2020 +0100

    Fixed note loading in TinyMCE
2020-05-03 18:44:49 +01:00
Laurent Cozic
f51873d877 Desktop: Remove colour gradient from sidebar and replaced expand icons with chrevrons 2020-05-02 17:17:15 +01:00
Laurent Cozic
d738fa54ad Electron release v1.0.202 2020-05-02 16:52:38 +01:00
Laurent Cozic
ec8ccc94aa Revert "Tests: Fix random failures (#2777)"
This reverts commit d1cab4b7f5.
Part of this revert: d2582f4fdf

For rationale see https://github.com/laurent22/joplin/pull/2819#issuecomment-616148984
2020-05-02 16:45:25 +01:00
Laurent Cozic
cb8dca747b Refactor note editor
Refactor note editor using React Hooks and TypeScript
and moved editor-specific code to separate files.
Moved business logic into more maintainable custom hooks.

Squashed commit of the following:

commit f243d9bf89bdcfa1849ee26df5c0dd3e33405010
Author: Laurent Cozic <laurent@cozic.net>
Date:   Sat May 2 16:04:14 2020 +0100

    Fixed saving issue

commit 055f68d2e8b6cf6f130336c38ac2ab480887583d
Author: Laurent Cozic <laurent@cozic.net>
Date:   Sat May 2 15:43:38 2020 +0100

    Fixed HTML notes

commit 99a3cf71f58d2fedcdf3001bf4110b6e8e3993da
Merge: 9be85c45f2 b16ebbbf7a
Author: Laurent Cozic <laurent@cozic.net>
Date:   Sat May 2 12:54:42 2020 +0100

    Merge branch 'master' into refactor_note_text

commit 9be85c45f23e5cb1ecd612b0ee631947871ada6f
Author: Laurent Cozic <laurent@cozic.net>
Date:   Sat May 2 12:21:01 2020 +0100

    Ident to space

commit 848dde1869c010fe5851f493ef7287ada5f2991e
Author: Laurent Cozic <laurent@cozic.net>
Date:   Sat May 2 11:28:50 2020 +0100

    Refactor prop types

commit 13c3bbe2b4f9a522ea3f8a25e7e5e7bb026dfd4f
Author: Laurent Cozic <laurent@cozic.net>
Date:   Sat May 2 11:15:45 2020 +0100

    Fixed resource loading issue

commit 50cb38e3f00ef40ea8b6a468eadd66728a3ec332
Author: Laurent Cozic <laurent@cozic.net>
Date:   Fri May 1 23:46:58 2020 +0100

    Fixed resource loading logic

commit bc42ed03735f50c8394d597bb9e67312e55752fe
Author: Laurent Cozic <laurent@cozic.net>
Date:   Fri May 1 23:08:41 2020 +0100

    Various fixes

commit 03c038e6d6cbde03bd474798b96c4eb120fd1647
Author: Laurent Cozic <laurent@cozic.net>
Date:   Wed Apr 29 23:22:49 2020 +0100

    Fixed resource handling

commit dc6c15302fac094c4e7dec5a20c9fcc4edb3d132
Author: Laurent Cozic <laurent@cozic.net>
Date:   Wed Apr 29 22:55:13 2020 +0100

    Moved more code to files

commit 398d5121e53df34de89b4148ef2cfd3a7bbe4feb
Author: Laurent Cozic <laurent@cozic.net>
Date:   Wed Apr 29 00:22:43 2020 +0000

    More fixes

commit 3ebbb80147d7d502fd955776c7fedb743400597f
Author: Laurent Cozic <laurent@cozic.net>
Date:   Wed Apr 29 00:12:44 2020 +0000

    Various improvements and bug fixes

commit 52a65ed3875e0709117ca93ba723e20624577d05
Author: Laurent Cozic <laurent@cozic.net>
Date:   Tue Apr 28 23:51:07 2020 +0000

    Move more code to sub-files

commit 33ccf530fb442d7ddae0852cbab2c335efdbbf33
Author: Laurent Cozic <laurent@cozic.net>
Date:   Tue Apr 28 23:25:12 2020 +0100

    Moved code to sub-files

commit ba3ad2cf9fcc1d7809df4afe93cd9737585a9960
Merge: 445acdab73 150ee14de6
Author: Laurent Cozic <laurent@cozic.net>
Date:   Tue Apr 28 22:28:56 2020 +0100

    Merge branch 'master' into refactor_note_text

commit 445acdab7368345369d7f69b9becd1e77c8383dc
Author: Laurent Cozic <laurent@cozic.net>
Date:   Tue Apr 28 19:01:41 2020 +0100

    Imported more code

commit 772481d3a3ac7f0b0b00e86394c0f4fd2f3a9fa7
Author: Laurent Cozic <laurent@cozic.net>
Date:   Mon Apr 27 23:43:17 2020 +0000

    Handle save/load state

commit b3b92192ae3a1a30e3018810346cebfad47ac5e3
Author: Laurent Cozic <laurent@cozic.net>
Date:   Mon Apr 27 23:11:11 2020 +0000

    Clean up and added back scroll

commit 7a19ecfd0cb7fef1d58ece2e024099c7e40986da
Author: Laurent Cozic <laurent@cozic.net>
Date:   Mon Apr 27 22:29:39 2020 +0100

    More refactoring

commit ac388afd381eaecfa4582b3566d032c9d953c4dc
Author: Laurent Cozic <laurent@cozic.net>
Date:   Sun Apr 26 17:07:01 2020 +0100

    Restored print

commit 1d2c0ed389a5398dacc584d24922c5ea0dda861a
Author: Laurent Cozic <laurent@cozic.net>
Date:   Sun Apr 26 12:03:15 2020 +0100

    Put back search

commit c618cb59d43fa3bb507dbd0b757b302ecfe907b3
Author: Laurent Cozic <laurent@cozic.net>
Date:   Sat Apr 25 18:21:11 2020 +0100

    Restore scrolling behaviour

commit 324e6ea79ebafab1d2bca246ef030751147a47eb
Author: Laurent Cozic <laurent@cozic.net>
Date:   Sat Apr 25 10:22:31 2020 +0100

    Simplified saving notes

commit ef089aaf2289193bf275d94c1f2785f6d88657e4
Author: Laurent Cozic <laurent@cozic.net>
Date:   Sat Apr 25 10:12:16 2020 +0100

    More refactoring

commit 61b102307d5a98d2c1502d7bf073592da21af720
Author: Laurent Cozic <laurent@cozic.net>
Date:   Fri Apr 24 18:04:44 2020 +0100

    Added back note revisions

commit 7d5e3694d0df044b8493d9114e89e2d81c9b69ad
Author: Laurent Cozic <laurent@cozic.net>
Date:   Thu Apr 23 22:51:52 2020 +0000

    More note toolbar refactoring

commit a56d58e7c80d91f29afadaffaaa004f3254482f7
Author: Laurent Cozic <laurent@cozic.net>
Date:   Thu Apr 23 20:54:37 2020 +0100

    Finished toolbar refactoring

commit 6c8ef9f44f880a9569eed5c54c9c47dca2251e5e
Author: Laurent Cozic <laurent@cozic.net>
Date:   Thu Apr 23 19:17:44 2020 +0100

    More refactoring

commit 7de8057158a9256e2e0dcf948081e10a6a642216
Author: Laurent Cozic <laurent@cozic.net>
Date:   Wed Apr 22 23:48:42 2020 +0100

    Started refactoring commands

commit 177263c85e7d17d8ddc01b583738c2ab14b3acd7
Merge: f58f1a06e0 7ceb68d835
Author: Laurent Cozic <laurent@cozic.net>
Date:   Wed Apr 22 20:26:19 2020 +0100

    Merge branch 'master' into refactor_note_text

commit f58f1a06e08b3cf80e2ac7a794b15f4b5caf8932
Author: Laurent Cozic <laurent@cozic.net>
Date:   Wed Apr 22 20:25:43 2020 +0100

    Moving Ace Editor to separate component

commit a83d3a220515137985c0f334f5848c91b8539138
Author: Laurent Cozic <laurent@cozic.net>
Date:   Mon Apr 20 20:33:21 2020 +0000

    Cleaned up directory structure for note editor

commit c6f2e609c9443bac21de5033bbedf86ac6f12cc0
Author: Laurent Cozic <laurent@cozic.net>
Date:   Mon Apr 20 19:23:06 2020 +0100

    Added "note" menu to move note-related items to it

commit 1219465318ae5a7a2c777ae2ec15d3357e1499df
Author: Laurent Cozic <laurent@cozic.net>
Date:   Mon Apr 20 19:05:04 2020 +0100

    Moved note related toolbar to separate component
2020-05-02 16:41:07 +01:00
Laurent Cozic
b16ebbbf7a Tools: Fixed clipper watch tool 2020-05-02 12:52:24 +01:00
Laurent Cozic
90ccb34916 Doc: Update contributor list 2020-05-01 14:51:29 +01:00
Laurent Cozic
724af8f757 Docs: Add Season of Docs info 2020-05-01 14:50:28 +01:00
mic704b
125fa8647a All: Fix format of geolocation data (#2673)
* Maintain geolocation data format through serialization.

* Add test.
2020-04-30 16:56:47 +01:00
Helmut K. C. Tessarek
bf47237d8f Desktop: Add + to access 'Zoom In', allows to use the numpad (#2630)
* add + to access 'Zoom In', allows to use the numpad

This change aligns Joplin's behavior with all other apps that have shortcuts for `Zoom In`.
It therefore improves the user experience.

/ref

https://discourse.joplinapp.org/t/please-help-test-the-new-desktop-pre-release/6445/2?u=tessus
https://github.com/laurent22/joplin/pull/2165#issuecomment-593106648

* add comment

* improve comment
2020-04-30 10:08:19 +01:00
PackElend
294b9fc941 refreshed ideas 1 and 2, added 3 2020-04-30 00:48:52 +02:00
PackElend
699c1ab58c added sup-steps in recommended steps
Added important sub-steps under point 5 in the recommended steps to ensure that the applicants don't blow the backlog
2020-04-30 00:32:39 +02:00
Laurent Cozic
150ee14de6 Update website 2020-04-28 19:09:03 +01:00
Laurent Cozic
b207f7a53f Doc: Fixed GitHub Sponsor button 2020-04-28 19:08:31 +01:00
Laurent Cozic
096698912e Update website 2020-04-28 19:03:54 +01:00
Xaris Ar
a5ec1be7d1 All: Translation: Update el_GR.po (#3128) 2020-04-25 16:09:12 -04:00
espinosa
f9f884a7f3 All: Translation: Update fr_FR.po (#3123)
* Partial translation in French

* Remplacé "décryptage" par "déchiffrage"
2020-04-25 13:12:20 -04:00
James ADJINWA
31d59c1e21 Doc: Little typo correction in E2EE (#3122) 2020-04-25 11:14:35 +01:00
Laurent Cozic
7663044e9f Doc: Added GitHub Sponsor button 2020-04-22 23:44:48 +00:00
Rahul Mohata
7ceb68d835 Desktop: Fixes #3095: Fixed the Goto Anything item list overflow (#3096)
* fixed the Goto Anything item list overflowing

* added dialog box styles
2020-04-21 23:57:04 +01:00
Helmut K. C. Tessarek
ac2635a363 Update translations 2020-04-21 08:03:29 -04:00
Arda Kılıçdağı
2496e6e738 All: Translation: Update tr_TR.po (#3104) 2020-04-21 07:41:31 -04:00
Gen Neko
b4b36c6f22 All: Translation: Update ja_JP.po (#3105) 2020-04-21 07:39:45 -04:00
Laurent Cozic
0171ea837f Merge branch 'master' of github.com:laurent22/joplin 2020-04-21 11:17:40 +01:00
Laurent Cozic
79a343c2d9 Tools: Removed obsolete labels 2020-04-21 10:10:01 +01:00
Laurent Cozic
dd5ed48c7e Tools: Better handling of translation messages in changelog 2020-04-20 18:10:27 +00:00
Laurent Cozic
e7169cc70d Desktop: Fixes #3093: Prevent Goto Anything from freezing when inputting special characters 2020-04-20 18:01:28 +00:00
Zaid Kesarani
c65ee4a424 Desktop: Fixed KaTeX font issue in exported PDF and HTML (#3089)
* Fixed issue: #3078

* updated comments

* Changed as requested
2020-04-20 15:17:11 +01:00
Mohammed Rabeeh
feee162578 Mobile: Fixes #3098: Fixed table background colour on dark themes (#3100) 2020-04-20 15:15:31 +01:00
mic704b
d1cab4b7f5 Tests: Fix random failures (#2777)
* Update new feature tests following test harness fixes.

* Fix lint errors.
2020-04-20 11:32:42 +01:00
Laurent Cozic
d2acf314f5 Android release v1.0.329 2020-04-20 10:13:04 +01:00
Laurent Cozic
b803984773 Android: Fixes #3041: Fixed text scrolling issue on older devices 2020-04-20 22:31:21 +00:00
Laurent Cozic
d2582f4fdf Revert "Restored note history feature by Naveen M V <naveenmv7@gmail.com>"
This reverts commit 61d3582357.

For rational see https://github.com/laurent22/joplin/pull/2819#issuecomment-616148984
2020-04-19 17:14:57 +01:00
Laurent Cozic
dfd18ebe24 Android release v1.0.328 2020-04-19 16:25:38 +01:00
Laurent Cozic
94082bc6a5 Android: Fixes #3041 (maybe): Fixed scrolling issue on certain Android devices when displaying large notes 2020-04-19 16:21:09 +01:00
Laurent Cozic
5c3c72c37e Merge branch 'master' of github.com:laurent22/joplin 2020-04-19 16:02:28 +01:00
Laurent Cozic
d730e068b0 All: Fixes #3088: Better handling of missing table field bug on Linux 2020-04-19 16:02:10 +01:00
PackElend
b2f8c38842 changed gsos2020 to gsod2020 2020-04-19 12:39:06 +02:00
PackElend
71b2e36429 changed from GSoD-2020 to gsod2020 2020-04-19 12:33:50 +02:00
Laurent Cozic
e598c64241 Merge branch 'master' of github.com:laurent22/joplin 2020-04-19 10:12:04 +01:00
Laurent Cozic
2b2ec2c655 All: Started resource fetcher service when a note has been decrypted 2020-04-19 10:11:46 +01:00
Helmut K. C. Tessarek
381d757525 Update translations 2020-04-18 19:20:09 -04:00
Helmut K. C. Tessarek
d54c59cf74 fix nl_BE.po - for some reason the CI did not catch this 2020-04-18 19:19:22 -04:00
johanvanheusden
1f481fba4e All: Translation: Update nl_BE.po (#3086)
File corrected and completed until line 470
2020-04-18 19:14:16 -04:00
Lorinson
69cd88e4a5 All: Translation: Update pt_PT.po (#3018)
* PT-PT Locale Update

* PT-PT 18/04/2020 Update

* Update pt_PT.po
2020-04-18 14:40:02 -04:00
PackElend
b140a9d7de GSoD ideas
first draft of the idea summery for Google's Season of Doc 2020
2020-04-18 17:33:57 +02:00
PackElend
b1b530edf2 GSoDoc-2020 intro
Creating the first draft of the intro page for Google Season of Doc 2020
2020-04-18 17:17:20 +02:00
Laurent Cozic
ab63316f83 Merge branch 'master' of github.com:laurent22/joplin 2020-04-18 12:46:08 +01:00
Laurent Cozic
35df8e5d9e All: Added support for basic search 2020-04-18 12:45:54 +01:00
jabdoa2
ea3c82733c Add LXDE to installer as it works fine there (#3081) 2020-04-18 00:03:06 +01:00
rnbastos
60f75fe2db All: Translation: Update pt_BR.po (#3065) 2020-04-17 06:57:40 -04:00
Mohammed Rabeeh
9214095a64 iOS: Resolves #2798: Switch keyboard colour with theme (#3061) 2020-04-16 23:35:31 +01:00
Laurent Cozic
676c43ebab Doc: Added blog posts for archival purpose and to allow listing them in notifications 2020-04-15 22:11:42 +00:00
Laurent Cozic
e65af8c1e4 Electron release v1.0.201 2020-04-15 17:38:14 +01:00
Laurent Cozic
2321455723 Update stale.yml 2020-04-15 11:45:03 +01:00
Laurent Cozic
9260235224 Tools: Set stale limit to 45 days
As the project is active, 45 days is enough time to label the issue (and then it won't be closed). If it has not been labelled within that time it's probably not important enough to keep it open, or we don't have resources to deal with it.
2020-04-15 11:44:55 +01:00
Laurent Cozic
56801c0a08 Merge branch 'master' of github.com:laurent22/joplin 2020-04-15 11:24:53 +01:00
Helmut K. C. Tessarek
aa738cc086 Revert "Desktop: Add global shortcut to show/hide Joplin (#2653)"
This reverts commit 0863f0d564.
2020-04-15 05:50:26 -04:00
Laurent Cozic
900b0f3eb2 Merge branch 'master' of github.com:laurent22/joplin 2020-04-15 09:51:44 +01:00
Mohammed Rabeeh
b5a64e2c3e Doc: Fix start scripts for iOS and Android (#3062) 2020-04-15 09:51:06 +01:00
Laurent Cozic
4163d9e474 All: Fixed regression caused by commit 6164e2d8eb 2020-04-14 23:31:28 +00:00
Laurent Cozic
d769dc2b94 Desktop: Fix issue where last used filename was displayed when exporting directory 2020-04-15 00:05:57 +01:00
Laurent Cozic
c9fc52ec74 Merge branch 'master' of github.com:laurent22/joplin 2020-04-14 23:58:37 +01:00
Laurent Cozic
fe72568d3b Desktop, Mobile: Fixes #3058: In some cases, notes with Katex code were not exported correctly as PDF 2020-04-14 23:58:23 +01:00
Mohammed Rabeeh
c5c379f38a Mobile: Fixes #2853: Fix white rectangle issue on dark theme (#3055) 2020-04-14 20:12:18 +01:00
Laurent Cozic
2050889590 Desktop: Fixes #2968: Trying to resource path issue in WYSIWYG editor 2020-04-13 22:55:24 +00:00
Laurent Cozic
6164e2d8eb Desktop: Search in title and body by default when using Goto Anything 2020-04-13 22:10:59 +00:00
Siddhant Sehgal
30c175ef29 Desktop: Resolves #2799: Disable prompt dialog OK button when input is empty (#2905) 2020-04-14 12:20:05 +01:00
Laurent Cozic
f6fed72b64 Desktop, Mobile: Fixes #3033: Fixed Katex rendering issue when greater than symbol appears in markup 2020-04-12 22:54:42 +00:00
Laurent Cozic
7596ff2eda Mobile, Desktop: Disable BASE html tag, which can break certain plugins such as Katex 2020-04-12 23:00:36 +01:00
Laurent Cozic
142976f012 Electron release v1.0.200 2020-04-12 12:54:25 +01:00
Laurent Cozic
ab5c97f75a Desktop: Add more log statements to attempt to fix #2968 2020-04-12 10:09:24 +01:00
Anjula Karunarathne
aea3de982a Desktop: Fixes #3028: Fix Go To Anything closing when clicking inside the modal (#3029)
* Fix Go To Anything closing when clicking inside the modal

* Update GotoAnything.jsx

* Update GotoAnything.jsx

Co-authored-by: Laurent Cozic <laurent22@users.noreply.github.com>
2020-04-12 09:59:00 +01:00
Assim Deodia
83aff6f478 Linux: Fix install script to add support for non-default home dir (#2969)
If user home directory is configured to anything other than `/home/${USER}`, `Exec` command in desktop entry points to non-existing file, and desktop entry is not considered valid, thus does not appear in list of application. Standard way to get home directory is using `${HOME}` environment variable. This could also be possible root cause of https://discourse.joplinapp.org/t/joplin-not-installing-completely/5669/2
2020-04-12 00:29:39 +01:00
Martin Giger
6cb7154bf4 Support icon install on elementary OS (#3023) 2020-04-12 00:27:06 +01:00
Caleb John
3aa38d35d7 Desktop: Fix JEX export (#3026)
* Return empty default for exports with no note ids (jex for example)

* switch to ! syntax instead of == null
2020-04-12 00:14:53 +01:00
Siddhant Sehgal
870a76c570 Desktop: Fixes #2830: Fixes todo mouse hover behaviour (#2831)
* Fixed-todoitem-hover

* Added empty space for build fix

* Fixed-todo-hover
2020-04-11 11:38:00 +01:00
Rishabh Malhotra
206a64eff6 Desktop: Fixes #2736: Fixes selection in text editor after applying formatting (#2737)
* Appliying changes

* Update NoteText.jsx
2020-04-11 11:02:19 +01:00
Laurent Cozic
6b97839617 Merge branch 'master' of github.com:laurent22/joplin 2020-04-11 10:51:36 +01:00
Laurent Cozic
456d979aa6 Desktop: Fixes #3019: Title auto-update didn't work anymore
Revert "Desktop: Resolves #2681: Clear provisional flag as soon as note is modified to avoid data loss"

This reverts commit 518af9dc0a.
2020-04-11 10:49:16 +01:00
Ethan Chen
ea5e0d337c All: Translation: Update zh_TW.po (#3020) 2020-04-11 03:52:00 -04:00
abolishallprivateproperty
9651317695 All: Translation: Update sv.po (#3013) 2020-04-10 21:48:37 -04:00
Laurent Cozic
a4cc2076d7 Update website 2020-04-11 00:39:25 +01:00
Laurent Cozic
db820d500d Merge branch 'master' of github.com:laurent22/joplin 2020-04-11 00:38:37 +01:00
Laurent Cozic
722192127c Doc: Added info on how to fix broken installations on Windows 2020-04-11 00:36:57 +01:00
Laurent Cozic
36e23d6432 Tools: Minor update of CLI release script 2020-04-10 19:33:25 +01:00
Laurent Cozic
8cfb014f60 CLI v1.0.163 2020-04-10 19:32:20 +01:00
Laurent Cozic
b4a572c8ae ios-v10.0.47 2020-04-10 19:30:43 +01:00
Laurent Cozic
531e92e2da Android release v1.0.327 2020-04-10 19:20:26 +01:00
Laurent Cozic
53a857b706 Electron release v1.0.199 2020-04-10 19:16:48 +01:00
Laurent Cozic
4f5473f8a2 All: Display WYSIWYG info in config screen only in desktop app 2020-04-10 19:16:18 +01:00
Laurent Cozic
1b617a4adc Android release v1.0.326 2020-04-10 18:57:20 +01:00
Laurent Cozic
7741a43d42 Electron release v1.0.198 2020-04-10 18:53:04 +01:00
Laurent Cozic
776411f882 Desktop: WYSIWYG: Added support for tables 2020-04-10 18:22:17 +00:00
Laurent Cozic
ae4cecc621 Desktop: WYSIWYG: Handle internal note links 2020-04-10 17:59:51 +00:00
Laurent Cozic
5be98a46e3 Desktop: WYSIWYG: Improved documentation on what plugins are compatible with WYSIWYG editor 2020-04-10 17:33:09 +00:00
Laurent Cozic
1907ef0c99 Tools: Dynamically generate PortableApps images 2020-04-10 18:19:17 +01:00
Laurent Cozic
bd99b25848 Desktop: WYSIWYG: Preserve HTML code in Markdown when editing from wysiwyg editor 2020-04-10 17:12:41 +00:00
Rishabh Malhotra
616401ebba Update aritimDark.js
Changing #fff to #d3dae3
2020-04-10 19:11:15 +05:30
Rishabh Malhotra
d0fb6acccd changing bold text preview color 2020-04-10 13:22:35 +05:30
Laurent Cozic
12a7b3c73c Desktop: WYSIWYG: Do not display target list in link dialog 2020-04-09 19:05:07 +01:00
Laurent Cozic
75b28c46af Desktop: Wait for note to be saved before closing the app 2020-04-09 18:57:20 +01:00
Laurent Cozic
93dccf62df Desktop: WYSIWYG: Added support for custom icon package and set Attach toolbar icon 2020-04-09 17:49:56 +01:00
Laurent Cozic
ec499eecd5 Desktop: WYSIWYG: Added support for code blocks edition and creation 2020-04-09 17:47:12 +01:00
Laurent Cozic
7ccd19e21d Cli: Fixes #2981: Add support for retrying decryption after it has failed multiple times 2020-04-08 18:02:31 +01:00
Laurent Cozic
a6459d3641 Mobile: Fixes #2941: Fixed resource download auto mode 2020-04-08 17:40:32 +00:00
Laurent Cozic
9b26378fdd All: Fixes #2709: When modifying a conflicted note, it would disappear from the view 2020-04-07 23:06:29 +00:00
Laurent Cozic
6b8e84332d Desktop: Resolves #2639: Resource screen improvements (#2850)
Co-authored-by: Georg Grab <talkdirty@users.noreply.github.com>
2020-04-08 11:12:25 +01:00
Laurent Cozic
6d56bb8afd Revert "Mobile: Fixes #2847: Fixed text issue in config screen on some devices (#2851)"
Reverted to fix regression (crash) in iOS app.

https://github.com/laurent22/joplin/pull/2851#issuecomment-610688103

This reverts commit e024015d5e.
2020-04-08 01:38:39 +01:00
Laurent Cozic
be9e873277 Mobile: Fixes #1437: Allow scrolling past end of note 2020-04-08 01:22:18 +01:00
Laurent Cozic
10feeeeb6b All: Fixes #2257: Prevent decryption loop when a resource cannot be decrypted 2020-04-08 01:00:01 +01:00
Laurent Cozic
518af9dc0a Desktop: Resolves #2681: Clear provisional flag as soon as note is modified to avoid data loss 2020-04-06 21:10:44 +00:00
Laurent Cozic
093fc811eb All: Fixes #2604: Fixed iOS and macOS icons and created script to automate icon creation 2020-04-06 20:55:40 +00:00
Tobias Johansson
2a8b27033f Desktop: Added new Aritim-Dark theme (#2997)
* Working on an aritim-dark theme, very WIP still

* Update aritim.js

* Added new theme "Aritim-Dark"

* removing aritim-dark "brace" theme for now

* Updating style with some changes

* Reset branch back to the original upstream state, to create a different pull-request for moving all themes outside

* Reset branch back to the original upstream state

* Moved all themes out into their own .js theme files

* Updating master to use the seperated themes stuff

* Moved themes into their own const

* Removed switch case for themes and simplified it. Thanks Laurent for the help!

* Adding Aritim-Dark to theme options
2020-04-07 10:23:40 +01:00
Tobias Johansson
62bddd7c69 Desktop: Moved all themes out into their own .js theme files (#2951)
* Working on an aritim-dark theme, very WIP still

* Update aritim.js

* Added new theme "Aritim-Dark"

* removing aritim-dark "brace" theme for now

* Updating style with some changes

* Reset branch back to the original upstream state, to create a different pull-request for moving all themes outside

* Reset branch back to the original upstream state

* Moved all themes out into their own .js theme files

* Updating master to use the seperated themes stuff

* Moved themes into their own const

* Removed switch case for themes and simplified it. Thanks Laurent for the help!
2020-04-07 09:19:53 +01:00
Helmut K. C. Tessarek
113f91b3c5 Update website 2020-04-05 20:39:10 -04:00
Helmut K. C. Tessarek
d40ad2de89 Update translations 2020-04-05 20:37:15 -04:00
Kwangmyung Kim
3b7733018c All: Translation: Update ko.po (#2986)
* Translation: Update ko.po

* Update README.md

Both the words ‘한국어’ and ‘한국말’ are composed of two meaning blocks : Korean + language.

어, which can be written in the Chinese character 語, means “language”, and 말, which is a native Korean word, also means “language”. So basically 한국어 and 한국말 are the same meaning, but I’d say 한국어 is a little more formal word while 한국말 is a more colloquial word.

‘어’ can be found in many other language names, but ‘말’ is not so commonly used other than in the word ‘한국말’ or ‘우리말(uri mal - ‘our language’, which is a word that Korean people use to mean ‘Korean’).

Here are some examples:

English = 영어
Chinese = 중국어
Japanese = 일본어
Arabic = 아랍어
Spanish = 스페인어
French =  프랑스어
Latin = 라틴어
Russian = 러시아어

* change incorect word

* Revert "Update README.md"

This reverts commit 88199a40df.
2020-04-05 20:31:15 -04:00
Helmut K. C. Tessarek
e319864669 Tools: Fix Korean language name: 한국어 (#2989) 2020-04-05 21:14:31 +01:00
Ishant Gupta
7251813634 Mobile: Fixed config text input not visible in dark mode (#2910) 2020-04-05 20:47:30 +01:00
Ishant Gupta
e024015d5e Mobile: Fixes #2847: Fixed text issue in config screen on some devices (#2851)
* fixed text issue on some devices and closes #2847

* changes added to global file
2020-04-05 20:05:04 +01:00
Gen Neko
3f5e6d72d6 Fix a blank Goto Anything screen (#2983) 2020-04-05 08:55:00 +01:00
abonte
9fd43a30f9 All: Translation: Update it_IT.po (#2978) 2020-04-04 21:08:33 -04:00
Laurent Cozic
0707a0e05f Merge branch 'master' of github.com:laurent22/joplin 2020-04-04 18:31:56 +01:00
Laurent Cozic
f550d847c4 Desktop: Resolves #2688: Add "Retry All" option to synchronisation page
Based on pull request #2712 by fhfuih

commit 7d3815e51dbf682ecc1ed3544a15e51b79d5d12d
Author: Laurent Cozic <laurent@cozic.net>
Date:   Sat Apr 4 18:26:01 2020 +0100

    Fix issues

commit dad1d2c4d4eb37fdd23096a3344cf4f14498e335
Merge: 16cf0a3058 0a1ba511ea
Author: Laurent Cozic <laurent@cozic.net>
Date:   Sat Apr 4 18:09:46 2020 +0100

    Merge branch 'master' of https://github.com/fhfuih/joplin into fhfuih-master

commit 0a1ba511ea
Merge: 6207b42044 bdd760f343
Author: fhfuih <fhfuih@outlook.com>
Date:   Sat Mar 14 20:30:27 2020 -0400

    Merge branch 'master' into master

commit 6207b42044
Author: fhfuih <sam.zyhuang@outlook.com>
Date:   Sat Mar 14 20:13:28 2020 -0400

    Decryption Retry All RN frontend

commit 6f46d1985f
Author: fhfuih <sam.zyhuang@outlook.com>
Date:   Sat Mar 14 20:10:55 2020 -0400

    Decryption Retry All backend & desktop

commit 4c3d37b311
Author: fhfuih <sam.zyhuang@outlook.com>
Date:   Fri Mar 13 13:21:21 2020 -0400

    Revert "Add "retry all" option to synchronisation page"

    This reverts commit 15daaa16fd.

commit cffc919791
Author: fhfuih <sam.zyhuang@outlook.com>
Date:   Fri Mar 13 13:19:51 2020 -0400

    Revert "Refactor "retry all" renderer to avoid hacks"

    This reverts commit 51ba6ea655.

commit 51ba6ea655
Author: fhfuih <sam.zyhuang@outlook.com>
Date:   Tue Mar 10 18:27:22 2020 -0400

    Refactor "retry all" renderer to avoid hacks

commit 57d71712e1
Merge: 15daaa16fd b367955e56
Author: fhfuih <sam.zyhuang@outlook.com>
Date:   Mon Mar 9 20:42:02 2020 -0400

    Merge branch 'master' of https://github.com/fhfuih/joplin

commit 15daaa16fd
Author: fhfuih <sam.zyhuang@outlook.com>
Date:   Mon Mar 9 20:36:09 2020 -0400

    Add "retry all" option to synchronisation page
2020-04-04 18:30:13 +01:00
Siddhant Sehgal
1e9a0036e7 Desktop: Resolves #2296: Right-click to move note to notebook (#2566)
* Assign Notebook functionality added

* Made the changes acc. to laurent22

* Changes done till 9/03/20

* Removed NoteContentPropertiesDialog.js

* Render notebooks in tree hierarchy

* Update PromptDialog.jsx

Co-authored-by: Laurent Cozic <laurent22@users.noreply.github.com>
2020-04-04 18:03:09 +01:00
Laurent Cozic
16cf0a3058 Merge branch 'master' of github.com:laurent22/joplin 2020-04-04 17:36:29 +01:00
Helmut K. C. Tessarek
0fa19a281c fix heading 2020-04-04 03:46:23 -04:00
Mats Estensen
9c53f485e6 All: Translation: Update nb_NO.po (#2973) 2020-04-03 18:21:20 -04:00
Li
dc131f77d4 All: Translation: Update zh_CN.po (#2971) 2020-04-03 18:20:17 -04:00
Laurent Cozic
712601b8c0 Desktop: WYSIWYG: Apply theme to toolbar 2020-04-03 18:12:14 +00:00
Caleb John
ff7775b344 Desktop: Add friendly default filenames to export options (#2749)
* Add friendly default filenames to export options

* remove extension from safefilename call

* Load parent folder for all exports

* convert foldername and filename to friendly versions separatly

* Add null guards to the filename export
2020-04-03 00:24:33 +01:00
Laurent Cozic
0512fa6208 Desktop: Fixed regression when drag and dropping files 2020-04-02 23:01:14 +01:00
Laurent Cozic
27ab2b8e30 Desktop: Fixed styling issues with rendered Markdown 2020-04-02 22:54:06 +01:00
Laurent Cozic
9fa7c9c20a Desktop: WYSIWYG: Better handling of links on macOS and inside Katex block 2020-04-02 19:58:25 +01:00
Laurent Cozic
6bd0250ef8 Desktop: WYSIWYG: Handle resource download mode 2020-04-02 18:16:11 +01:00
Laurent Cozic
0d736bcb58 CLI v1.0.162 2020-04-01 18:18:41 +01:00
Laurent Cozic
c1129604ba Tools: Disable logging to console by default 2020-04-01 18:15:40 +01:00
Laurent Cozic
693f6cbfe7 Desktop: Add message box to ask confirmation when resizing image 2020-03-31 22:40:38 +01:00
Jonas
7f397a4da8 Fix Joplin_install_and_update.sh (#2913)
Make space after '"tag_name":' optional, to avoid the whole script failing without further notice.

Co-authored-by: Laurent Cozic <laurent22@users.noreply.github.com>
2020-03-30 18:36:10 +01:00
Siddhant Sehgal
52ba5c5bb7 Desktop: Close Goto Anything modal on outside click (#2940)
* Close goto modal on outside click

* Renamed for consistency

Co-authored-by: Laurent Cozic <laurent22@users.noreply.github.com>
2020-03-30 18:33:36 +01:00
Laurent Cozic
ce24942a03 Update website 2020-03-30 18:23:46 +01:00
Laurent Cozic
719afba05a Electron release v1.0.197 2020-03-30 18:03:36 +01:00
Laurent Cozic
c99dd2ba87 Tools: Fixed Electron build 2020-03-30 18:03:02 +01:00
Helmut K. C. Tessarek
a59cc94afc Update translations 2020-03-30 11:03:18 -04:00
nmiquan
336cadbc12 Translation: add Vietnamese (vi.po) (#2931)
* Vietnamese Translation

* removed cli messages

* updated translation
2020-03-30 10:59:49 -04:00
Laurent Cozic
a946dc69c1 Android release v1.0.325 2020-03-29 20:12:36 +01:00
Laurent Cozic
e2e95df057 Electron release v1.0.196 2020-03-29 20:06:44 +01:00
Laurent Cozic
e095369e1a Desktop: WYSIWYG: Prevent scripts from loading multiple times 2020-03-29 20:06:13 +01:00
Laurent Cozic
1c938a5998 Update build_troubleshooting.md 2020-03-29 11:08:53 +01:00
Anjula Karunarathne
a45128807e Desktop: Resolves #2683: Go To Anything by body (#2686)
* Go to anything by body

* Made limit parameter required

* Made parameter required

Co-authored-by: Laurent Cozic <laurent22@users.noreply.github.com>
2020-03-28 13:05:00 +00:00
Brandon Wulf
d54e52b1a8 Desktop: Cleaning up the install / update script (#2719)
* Cleaning up the install script

* New `--force` option always downloads the latest version
* New `--notes` option shows the release notes
* Actually print the version installed at the end
* Show download progress, but not extra garbage
* Blue logo

* refactor and cleanup

* Handle space, but no args
2020-03-27 21:58:04 -04:00
Laurent Cozic
5743729d11 Desktop: WYSIWYG: Getting links to work 2020-03-27 18:28:13 +00:00
Laurent Cozic
11d8466db1 Desktop: WYSIWYG: Getting links to work 2020-03-27 18:26:52 +00:00
Laurent Cozic
c3360d6c48 Merge branch 'master' of github.com:laurent22/joplin 2020-03-27 16:12:43 +00:00
Bart
37158fdb89 Desktop: Fixes #2334: MD importer handle special chars in linked image name (#2346)
* md importer: decode uri encoded links to cover case of special chars in linked image names

* md importer: temp debug logs for linux test pipeline

* md importer: more temp debug logs

* md importer: tests, add special char image name on linux

* md importer: tests, use const not let

* md importer: remove debug logs
2020-03-27 12:20:38 +00:00
anirudh murali
ae73051797 Desktop: Fixes #2917: Prevent title overflow on small windows (#2918) 2020-03-27 12:16:40 +00:00
Ishant Gupta
62db3d09ea Mobile: Fixes #2900: Fixed bold text not visible in dark theme (#2909)
* fixed bold text not visible in oled dark theme

* fixed variable names
2020-03-27 12:13:22 +00:00
Amit singh
f82aa0adde Mobile: Fixes #2867: Fixed styling issue in config screen (#2868)
* fixes hidden path text

* fixes hidden path text lable
2020-03-27 12:09:26 +00:00
Laurent Cozic
5e5b6cdc42 Desktop: WYSIWYG: Restored focus logic and fixed undo issue 2020-03-26 17:19:13 +00:00
Gen NK
351306eb03 Translation: Update ja_JP.po (#2914) 2020-03-26 11:55:00 -04:00
Laurent Cozic
e4fffa52d4 Doc: Updated info about unit tests and feature tests 2020-03-25 17:56:05 +00:00
Ishant Gupta
d622ff4a78 Mobile: Fixes #2843: Fixed overlapping text in Dropbox sync page (#2845) 2020-03-25 11:18:39 +00:00
Devon Zuegel
b6d4fd16c9 Mobile: Add toolbar, list continuation and Markdown preview to editor (#2224)
* The basic editor is working! No list continuation still though

* List continuation is working! Now to delete when entering again and not typing on line + handle ordered lists

* Supports checkboxes + attempted at setting font

* Editor font works now; now need to fix the delete (look at past state)

* Fix deletion problem

* Add ordered list handler

* Add comments

* Extract insertListLine

* End lists on enter for empty bullets

* Add MarkdownView (renders badly though)

* Save edited text from MarkdownEditor

* Cleanup

* Refactor react-native-markdown-editor/

* Rename react-native-markdown-editor/ => MarkdownEditor/

* Cleanup

* Fix preview styles; still need to fix checkbox problem

* Fix keyboard padding

* Change name back to #body_changeText

* Incorporate PR feedback from @laurent22

* wip: Move MarkdownEditor/ from ReactNativeClient/lib/ to ReactNativeClient/

* Move MarkdownEditor/ from ReactNativeClient/lib/ to ReactNativeClient/

* Remove log statement

* Focus TextInput in MarkdownEditor from grandparent

* Make eslint happy

* Extract textInputRefName to shared variable

* Remove accidental #setState

* Cleanup

* Cleanup

* Run linter

* Cleanup

* Update button order

* Improve styles for config descriptions

* Allow descriptions to be added to BOOL type Setting configs

* Add editorBeta Setting

* Move FailSafe details to description text

* Update descriptionText styles

* Put the editor under the beta flag toggle

* Incorporate PR feedback from @laurent22

* Refactor Markdown editor focusing

* Cleanup

* Reorder MarkdownEditor formats

* Make applyListFormat behavior more intuitive

* Add comment

* Show MarkdownEditor with preview by default

* Show preview by default, then hide on typing

* Fix MarkdownEditor selection bug

* Cleanup

* Update Markdown button styles

* Make Markdown button colors theme-conscious

* Fix merge conflict resolution mistake

* Fix broken import

* Delete package-lock.json

* Reset package-lock.json

Co-authored-by: Laurent Cozic <laurent22@users.noreply.github.com>
2020-03-25 10:50:45 +00:00
Sergey
a548d695f2 Doc: Update macOS troubleshooting for IOS build (#2898) 2020-03-25 09:31:05 +00:00
Aaron Murray
499f318192 Doc: Update text to match Desktop text (#2897) 2020-03-24 19:01:45 +00:00
Laurent Cozic
42ecf98344 Doc: Added build troubleshooting document 2020-03-24 17:22:44 +00:00
Caleb John
6f08e1e4ff Linux: Quit out of install script early if an ARM or 32 bit system is detected (#2881)
* Quit out of install script early if an arm system is detected

* improved error message
2020-03-24 17:08:07 +00:00
Helmut K. C. Tessarek
9524eb7e37 Update translations 2020-03-23 20:57:14 -04:00
Helmut K. C. Tessarek
84e478f8fe update de_DE.po 2020-03-23 20:56:09 -04:00
Arda Kılıçdağı
0cc77f99ac Translation: Update tr_TR.po (#2880)
* Turkish translations updated

* fullpaths updated

* Language string now respects the original one

* Line endings fixed

* Mysterious new lines cleaned

* Revert Readme

* Old translations added back
2020-03-23 20:46:59 -04:00
Ishant Gupta
622049dfad Mobile: Fixes #2859: Fixed code block styling in OLED theme (#2876) 2020-03-23 23:15:00 +00:00
Siddhant Sehgal
65bcc58261 Desktop: Fixes #2824: Fixed top margin of toolbar (#2828)
* Fixed_topmargin

* Fixed todolist hover

* Revert "Fixed todolist hover"

This reverts commit 38a4da622e.
2020-03-23 22:47:10 +00:00
Ishant Gupta
9749a2b9b7 Mobile: Resolves #2738: Auto-save after closing a note (#2782)
* latest changes merged

* fixed linting syntax
2020-03-23 22:34:13 +00:00
krzysiekwie
7b365194ba Translation: Update pl_PL.po (#2869) 2020-03-23 14:33:04 -04:00
Laurent Cozic
6e5c2730f1 Android release v1.0.324 2020-03-23 09:44:22 +00:00
Laurent Cozic
8d045f0c96 Revert "Mobile: Resolves #2286: Always show scrollbar in editor mode (#2594)"
This reverts commit 91d864bded.

To try to fix this: https://github.com/laurent22/joplin/issues/2856
2020-03-23 09:35:54 +00:00
Laurent Cozic
c370358bd1 Merge branch 'master' of github.com:laurent22/joplin 2020-03-23 01:33:12 +00:00
Laurent Cozic
03e8d921d3 Desktop: Fixed a few WISIWYG issues with checkboxes 2020-03-23 01:32:28 +00:00
Laurent Cozic
6cf624c18d Delete linkToLocal.sh 2020-03-23 00:57:33 +00:00
Laurent Cozic
41acdce165 Desktop: Added support for checkboxes and fixed various issues with WYSIWYG editor 2020-03-23 00:47:25 +00:00
Guilherme Teixeira
c607444c23 Translation: Update pt_BR.po (#2846) 2020-03-22 20:09:14 -04:00
Sergey
940198b9a0 Translation: Update ru_RU.po (#2839) 2020-03-22 20:08:03 -04:00
Laurent Cozic
9c3cf705c6 Update website 2020-03-22 22:24:37 +00:00
Laurent Cozic
6027725fae ios-v10.0.46 2020-03-22 20:07:49 +00:00
Laurent Cozic
054aa52bc8 Android release v1.0.323 2020-03-22 19:50:02 +00:00
Laurent Cozic
f4a562bc3c Electron release v1.0.195 2020-03-22 19:43:12 +00:00
Laurent Cozic
de8bf33ad9 Tools: Disabling tool checks for now as it is printing many unecessary messages to log 2020-03-22 19:41:23 +00:00
妙呀
159eaf7899 Translation: Update zh_CN.po (#2825)
Adjusted and added some Chinese simplified translation text
I like Joplin very much and hope to do my best
------------
调整和新增了部分中文简体翻译文本
非常喜欢Joplin,希望能尽绵薄之力
2020-03-21 14:34:31 -04:00
lighthousebulb
1bc045eb18 Translation: Update de_DE.po (#2806)
updated some translation strings
2020-03-21 14:33:40 -04:00
Laurent Cozic
0f934e48bc Revert "Desktop: Fixes #2467: Menu items were not disabled in viewer-only mode (#2576)"
Some items still need to be enabled so implementation needs to be
reviewed. Reverting for now.

This reverts commit 0be982c798.
2020-03-21 13:18:37 +00:00
Naveen M V
3ecd29d0b5 All: Fixes #2803: Remember last selected note (#2809)
* Fix : Remember last selected note

Fixes #2803

* Add unit test
2020-03-21 11:29:22 +00:00
Helmut K. C. Tessarek
42498842b5 translation fixes 2020-03-19 00:02:36 -04:00
Helmut K. C. Tessarek
ed4fbf093d Update translations 2020-03-18 23:49:06 -04:00
StarFang208
96b19027ec Translation: Update it_IT.po (#2791)
* Update it_IT.po

New translated lines and translator's name fixed.

* fix it_IT.po

Added the removed lines.
2020-03-18 23:47:48 -04:00
nullpointer666
cdb8a1e98c Desktop: fix menu bar shortcut (Alt+E) while editing a note (Win) (#2776) 2020-03-17 12:49:36 -04:00
mic704b
8cd26c9380 All: Fix integration test harness issues. (#2723) 2020-03-16 13:30:54 +11:00
Helmut K. C. Tessarek
0863f0d564 Desktop: Add global shortcut to show/hide Joplin (#2653)
Previously it was possible to open Joplin by clicking on the tray icon.
This functionality is no longer available due to changes in Electron.

The following key combination will show or hide Joplin in the current workspace:

- macOS: `Cmd+Opt+J`
- Linux, Windows: `Ctrl+Alt+J`
2020-03-16 00:36:18 +00:00
mic704b
63a2f7b7a5 All: Fix calls to non-existent function (#2675)
* Fix calls to non-existent function

* Add tests.

* Fix travis lint problems.
2020-03-16 08:53:49 +11:00
PackElend
9b562276f3 updated ## Recommended steps
- replaced Development by Features in `4. Come up with project that you're interested in and discuss it in [Features category](https://discourse.joplinapp.org/c/features)`
-
2020-03-15 21:52:24 +01:00
mic704b
a17e01793e All: Fix format of note timestamps (#2672)
* Correct format of timestamps during unserialization.

* Add tests.
2020-03-15 12:07:01 +00:00
mic704b
7fb061ea76 Desktop: Fix show-all-notes update bugs. (#2642) 2020-03-15 12:05:17 +00:00
gasolin
91d864bded Mobile: Resolves #2286: Always show scrollbar in editor mode (#2594)
* Mobile: show scrollbar in editor mode

* always show the scrollbar
2020-03-15 11:55:41 +00:00
Laurent Cozic
339d7d16c7 Desktop: Fix issue with tag not being displayed below note when it is created 2020-03-15 11:45:33 +00:00
Laurent Cozic
8e5762c3a3 Merge branch 'master' of github.com:laurent22/joplin 2020-03-15 10:19:46 +00:00
Rahul Mohata
50a811720f Mobile: Fixes #2695: Fixed colour of background in OLED dark theme (#2757) 2020-03-15 10:13:44 +00:00
Anjula Karunarathne
c2e1c4c1e1 Desktop: Fixes #2700: Fix button label wrapping in toolbar (#2708) 2020-03-15 09:49:24 +00:00
Laurent Cozic
e7b11a2d82 Desktop: Fixes #2618: Fixed renaming tag issue 2020-03-15 09:47:47 +00:00
Laurent Cozic
61d3582357 Restored note history feature by Naveen M V <naveenmv7@gmail.com> 2020-03-15 09:40:57 +00:00
Laurent Cozic
9e66219690 Revert "Desktop: Reolves #2409: Added arrows to go front and back through note history (#2563)"
Fixing merge issue...

This reverts commit d049b8846c.
2020-03-15 09:40:12 +00:00
Naveen M V
d049b8846c Desktop: Reolves #2409: Added arrows to go front and back through note history (#2563) 2020-03-15 09:38:19 +00:00
RedDocMD
bdd760f343 Desktop: Resolves #2703: Fast notebook deletion (#2730)
* Batch delete for Notebooks added

* Extended the Folder.delete() unit test

* Unit tests added for Note.batchDelete()
2020-03-14 21:01:45 +11:00
Helmut K. C. Tessarek
1ee88618e8 reencrypt -> re-encrypt 2020-03-13 20:52:28 -04:00
Laurent Cozic
e399474b4e Tools: Apply "curly" eslint rule 2020-03-13 23:57:34 +00:00
Laurent Cozic
e2e55b6e08 Tools: Apply eslint space-infix-ops rule 2020-03-13 23:52:40 +00:00
Laurent Cozic
d0d2bad7f4 Tools: Enforce and apply eslint rules prefer-const and no-var 2020-03-13 23:46:14 +00:00
Laurent Cozic
92bee549a1 Electron release v1.0.194 2020-03-13 23:24:56 +00:00
Ishant Gupta
02121f66de Mobile: Resolves #2721: Added button to select all notes (#2744)
* added feature of select all and closes #2721

* added functionality of toggle select all button to deselect all notes
2020-03-13 22:41:56 +00:00
Ishant Gupta
115eb6f511 Mobile: Resolves #2715: Close sidebar when displaying error dialog (#2720)
* added a new close function to close sidebar for an error and fixed #2715

* changed function to inline call of dispatch fixes #2715
2020-03-13 19:58:17 +00:00
Rahul Mohata
d208da577f iOS: Resolves #2701: Removed "Export debug report" button (#2704) 2020-03-13 19:55:26 +00:00
Runo Saduwa
62665899c6 Tools: Added build tools detection script (#2661)
* finished writing first script version

* added preinstall script

* removed white space and platform if statements

* remove error log

* removed install function

* corrected commands

* changed ls to list
2020-03-13 18:48:17 +00:00
Laurent Cozic
7640839f92 Let's leave that undocumented for now
Not the recommended way to create tags - there's the /tags and /notes/:id/tags for this
2020-03-13 18:46:38 +00:00
Yuvaraj J
cda837247a API: Resolves #941: Add support for "tags" property for note PUT request (#2649)
* API: Fix updation of tags when updating a note

* Add test for fix updation of tags

* Rewrite unit test and change variable name

* Use consistent variables and function calls

* Use default function call and change variable

* Handle case when tags is empty string

* Restructure test cases and improve tags check

* Update documentation
2020-03-13 18:44:47 +00:00
Laurent Cozic
8e2ba0d963 Android release v1.0.322 2020-03-13 17:56:56 +00:00
Laurent Cozic
f4958de885 All: Security: Added way to upgrade master key encryption and sync target encryption 2020-03-13 17:42:50 +00:00
Helmut K. C. Tessarek
3917e3469d Desktop: Add button to About box to copy Joplin's information to the clipboard (#2711)
* add button to About box to copy Joplin's information to the clipboard

On certain OS it is not possible to copy the text in the About window.
This change allows to copy that info to the Clipboard.

Due to some shortfalls in Electron, it is not possible to set `defaultId` and `cancelId` to 0.
(Actually one can set them to 0, but the result is not what one would expect.)
Thus I had to move the default `OK` button to the left.

I also added a hack to position the `OK` button approximately in the middle of the dialog box (if the copyLabel is not longer than 14 characters).

* remove hack to position button

* add a new bridge function showMessageBox

The function returns the index of the clicked button.

* we don't need the first 3 lines (product name and copyright)
2020-03-12 23:13:18 +00:00
Laurent Cozic
5ce79b1761 Android release v1.0.321 2020-03-12 17:34:23 +00:00
Laurent Cozic
7a621e0cd7 Android: Fixes #2733: Trying to fix slider crash on LineageOS 2020-03-12 17:27:44 +00:00
mic704b
34a1c965be Desktop: Enhance notelist focus behaviour (#2520)
* Ensure after a note is deleted the next note is given focus.

* Fix handling of focus when navigating away from multiple selections.

* Refocus after note deletion.

* Mintor refactor.

* Clean up.

* Remove accidental white space change.

* Remove accidental white space change.
2020-03-11 13:08:35 -04:00
Dusan Stanic
17b42ae051 Translation: update sr_RS.po (#2724)
Co-authored-by: Dusan Stanic <end53114@adobe.com>
2020-03-11 12:30:34 -04:00
Shotaro Yamada
55ae00af27 Desktop: Resolves #498: Indent lists by pressing tab when caret is after bullet (#2713)
* Desktop: Markdown list indentation

* Add comment

* Save original indent function correctly
2020-03-11 14:30:33 +00:00
Mohammed Rabeeh
7e200b1ec7 Desktop: Fixes #2616: Expand notebook tree when clicking on notebook in search results (#2620) 2020-03-11 14:20:25 +00:00
Laurent Cozic
f65a3be231 Clipper release v1.0.25 2020-03-10 23:10:59 +00:00
Laurent Cozic
20bec7e26c Clipper: Refactoring to allow reproducible build, to comply with Mozilla requirements 2020-03-10 23:01:05 +00:00
Laurent Cozic
b367955e56 Android: Fixes #2694: Remove gap on top of window when there is a notch 2020-03-09 23:44:38 +00:00
Laurent Cozic
84c3ef144d Desktop: Resolves #176: Added experimental WYSIWYG editor (#2556)
* Trying to get TuiEditor to work

* Tests with TinyMCE

* Fixed build

* Improved asset loading

* Added support for Joplin source blocks

* Added support for Joplin source blocks

* Better integration

* Make sure noteDidUpdate event is always dispatched at the right time

* Minor tweaks

* Fixed tests

* Add support for checkboxes

* Minor refactoring

* Added support for file attachments

* Add support for fenced code blocks

* Fix new line issue on code block

* Added support for Fountain scripts

* Refactoring

* Better handling of saving and loading notes

* Fix saving and loading ntoes

* Handle multi-note selection and fixed new note creation issue

* Fixed newline issue in test

* Fixed newline issue in test

* Improve saving and loading

* Improve saving and loading note

* Removed undeeded prop

* Fixed issue when new note being saved is incorrectly reloaded

* Refactoring and improve saving of note when unmounting component

* Fixed TypeScript error

* Small changes

* Improved further handling of saving and loading notes

* Handle provisional notes and fixed various saving and loading bugs

* Adding back support for HTML notes

* Added support for HTML notes

* Better handling of editable nodes

* Preserve image HTML tag when the size is set

* Handle switching between editor when the note has note finished saving

* Handle templates

* Handle templates

* Handle loading note that is being saved

* Handle note being reloaded via sync

* Clean up

* Clean up and improved logging

* Fixed TS error

* Fixed a few issues

* Fixed test

* Logging

* Various improvements

* Add blockquote support

* Moved CWD operation to shim

* Removed deleted files

* Added support for Joplin commands
2020-03-09 23:24:57 +00:00
PackElend
ab2c8e3826 updated link for idea #2, corrected numbering
replaced 
https://discourse.joplinapp.org/t/joplin-api-in-nextcloud-prototype/
by
https://discourse.joplinapp.org/t/joplin-web-api-for-nextcloud/4491
2020-03-09 14:42:37 +01:00
Helmut K. C. Tessarek
f2c6ff7904 Update translations 2020-03-08 19:21:39 -04:00
Helmut K. C. Tessarek
06ee4d08d6 Update translations 2020-03-08 19:13:13 -04:00
Пэйнт
e96679c820 Translation: Add Thai language (#2679)
* Add Thai language translation

* Translation: Update th_TH.po

* Translation: Update th_TH.po
2020-03-08 19:10:19 -04:00
Laurent Cozic
105e4652c6 Update README.md 2020-03-08 14:43:39 +00:00
Laurent Cozic
e5b8f149bf Update release-android.js 2020-03-08 14:42:32 +00:00
Laurent Cozic
334cb23691 Clipper release v1.0.23 2020-03-08 09:25:17 +00:00
Laurent Cozic
52d9807648 Doc: Update CLI doc 2020-03-08 09:17:10 +00:00
Laurent Cozic
b44a2075a8 Update website 2020-03-08 09:06:07 +00:00
Laurent Cozic
b60952d684 Tools: Fixed building of API doc 2020-03-08 09:05:52 +00:00
Laurent Cozic
5db362e812 ios-v10.0.45 2020-03-08 08:56:18 +00:00
Laurent Cozic
0b74168343 Android release v1.0.320 2020-03-08 08:17:42 +00:00
Laurent Cozic
58e2d7be61 Electron release v1.0.193 2020-03-08 08:07:56 +00:00
ChunFeng
728c167660 Translation: Update zh_CN.po (#2678)
"Editor"  should translate to :  "编辑器"
2020-03-06 23:08:08 -05:00
Laurent Cozic
982f274425 CLI v1.0.161 2020-03-07 01:20:14 +00:00
Laurent Cozic
557c7a2877 Cli: Fix build 2020-03-07 01:19:41 +00:00
Laurent Cozic
dbba7af4b5 CLI v1.0.160 2020-03-07 01:12:03 +00:00
Laurent Cozic
82eefca110 Cli: Fix build 2020-03-07 01:11:35 +00:00
Laurent Cozic
778b30b1cf CLI v1.0.159 2020-03-07 01:09:56 +00:00
Laurent Cozic
2d4616da01 Cli: Fix build 2020-03-07 01:09:15 +00:00
Laurent Cozic
37a12326dc CLI v1.0.158 2020-03-07 01:00:46 +00:00
Laurent Cozic
5516b3284c Cli: Fix build 2020-03-07 01:00:11 +00:00
Laurent Cozic
ed0fae36ad CLI v1.0.157 2020-03-07 00:57:10 +00:00
Laurent Cozic
35d27f03bd Cli: Fix build 2020-03-07 00:55:59 +00:00
Laurent Cozic
1600d27db4 CLI v1.0.156 2020-03-07 00:33:12 +00:00
Laurent Cozic
0feca7ee7f Android release v1.0.319-rc1 2020-03-07 00:00:15 +00:00
Laurent Cozic
6e0bb6cf8b Merge branch 'master' of github.com:laurent22/joplin 2020-03-06 23:45:14 +00:00
Laurent Cozic
e6d66eba7d Tools: Adding support for Android release candidates 2020-03-06 23:45:07 +00:00
Runo Saduwa
bd6e77bf32 Desktop: Fixes #2628: Disable Toggle Editor Layout Shortcut and Button in Empty Notebook (#2628)
* added toggleLayout logic

* added id

* improved code
2020-03-06 23:27:32 +00:00
Siddhant Sehgal
9027f3fb10 Desktop : Fixes #2659: Do not wrap tag title in tag bar (#2668)
* No change

* Fixed Tag Wrap
2020-03-06 23:24:28 +00:00
Isham Mahajan
95eb302a62 Android: Enable debugging of WebView on browser (#2586)
Enables debugging for the android plugin which
`react-native-webview` uses. This method is mentioned in their guide
for the same.
https://github.com/react-native-community/react-native-webview/blob/master/docs/Debugging.md

Unfortunately the call requires API version >= 19 (After Kitkat),
which is fine because this will be disabled in production builds
anyways.
2020-03-06 23:01:10 +00:00
Runo Saduwa
0be982c798 Desktop: Fixes #2467: Menu items were not disabled in viewer-only mode (#2576)
* preview mode fix

* preview-edit mode fixed

* remove unecessary white space

* improved logic and removed empty line

* improved code and removed comment

* improved code again

* changed note type check logic

* improved code
2020-03-06 22:58:52 +00:00
Mohammed Rabeeh
67e5451c7c Desktop: Fixes #2560: Add toggling functionality for bold, italics and code in Editor Toolbar (#2565)
* Add toggling functionality for bold, italics and code in Editor toolbar

* Shorten code
2020-03-06 22:50:49 +00:00
Laurent Cozic
b31721b836 Electron release v1.0.192 2020-03-06 22:33:47 +00:00
Laurent Cozic
03146ed85f All: Security: Changed default encryption method to CCM 2020-03-06 22:33:33 +00:00
Laurent Cozic
3007918647 Electron release v1.0.191 2020-03-06 22:24:16 +00:00
Laurent Cozic
c6c4e950db All: Fixes #2591: Handle invalid UTF-8 data when encrypting 2020-03-06 19:11:51 +00:00
Laurent Cozic
40eba9e95e All: Fixed top margin issue on note rendering 2020-03-06 18:57:46 +00:00
Laurent Cozic
51ce7c939d Mobile: Fixed handling of provisional notes 2020-03-06 18:49:30 +00:00
Laurent Cozic
972e5aed8a All: Regression: Fixed issue with style embeded in notes 2020-03-06 18:22:40 +00:00
Laurent Cozic
8ba9e9efd8 Electron release v1.0.190 2020-03-06 00:55:09 +00:00
Laurent Cozic
63ca925786 Merge branch 'master' of github.com:laurent22/joplin 2020-03-06 00:54:42 +00:00
Laurent Cozic
71d1e6eb82 All: Fixes #2667: Fixed sanitize function so that it does not break HTML 2020-03-06 00:54:21 +00:00
Laurent Cozic
8641f69dae Docs: Add documentation about Joplin privacy. (#2650)
* Add documentation about privacy.

* Fix welcome assets.

* Cosmetic.

* Cosmetic.
2020-03-05 23:36:28 +00:00
Laurent Cozic
120aa066c2 Merge branch 'master' of github.com:laurent22/joplin 2020-03-04 19:42:23 +00:00
Laurent Cozic
27bcf6badb Desktop: Fixes #2660: Templates when creating note were broken 2020-03-04 19:41:57 +00:00
Gen NK
465691d5c9 Translation: Update ja_JP.po (#2657)
* Translate new strings

* Make existing translations for 'title' consistent
2020-03-04 12:36:20 -05:00
Laurent Cozic
48eb115cb9 Electron release v1.0.189 2020-03-04 16:53:57 +00:00
Laurent Cozic
51ee872179 All: Add more context to encryption errors 2020-03-04 16:53:45 +00:00
Laurent Cozic
c617f43e42 Electron release v1.0.188 2020-03-04 16:38:52 +00:00
Laurent Cozic
4920f64816 Desktop: Fixes #2656: Fix creation of new notes 2020-03-04 16:36:53 +00:00
Laurent Cozic
880134ce80 Desktop, Mobile: Fixes #2638: Improved Mermaid rendering on small viewports 2020-03-04 01:55:48 +00:00
Laurent Cozic
6e47652566 Desktop, Mobile: Fixes #2652: Fixed auto-title feature 2020-03-04 01:13:10 +00:00
Laurent Cozic
cb2df32d91 All: Fixes #2640: HTML code within Markdown was rendered incorrectly in some cases 2020-03-04 00:54:27 +00:00
Helmut K. C. Tessarek
80fff62b34 update de_DE.po 2020-03-03 03:20:09 -05:00
Helmut K. C. Tessarek
0f6867662c Update translations 2020-03-03 02:56:10 -05:00
Laurent Cozic
3bb431f18e Clipper release v1.0.22 2020-03-02 18:28:45 +00:00
Laurent Cozic
91a3adf2a2 Tools: Fix clipper release script 2020-03-02 18:28:28 +00:00
Laurent Cozic
e27d059376 Clipper release v1.0.21 2020-03-02 18:23:08 +00:00
Laurent Cozic
22c61ba603 Tools: Fix clipper release script 2020-03-02 18:22:51 +00:00
Laurent Cozic
6807f7e07b Tools: Fix clipper release script 2020-03-02 18:21:35 +00:00
Laurent Cozic
8632ef34eb Tools: Fix clipper release script 2020-03-02 18:19:17 +00:00
Laurent Cozic
47c0d9500a Tools: Fix clipper release script 2020-03-02 18:18:06 +00:00
Laurent Cozic
ee01d26915 Tools: Fix clipper release script 2020-03-02 18:06:57 +00:00
Laurent Cozic
0910dc4e54 Tools: Fix clipper release script 2020-03-02 18:03:49 +00:00
RAJPRAKASH
96cf42fb06 DESKTOP: Improve code css for Solarized Dark (#2626)
* Code border was not prominent

* Update theme.js
2020-03-01 16:33:57 -05:00
Jeremy Robertson
8b22f03c09 Desktop: Empty note body has 0 line count (#2623)
Empty note body has 0 line count
2020-03-01 15:39:10 +00:00
Laurent Cozic
299604838d Update website 2020-03-01 12:37:54 +00:00
Laurent Cozic
e9e4a0d0db Resize Mermaid image 2020-03-01 12:37:01 +00:00
Laurent Cozic
c2049b21fc Electron release v1.0.187 2020-03-01 11:44:23 +00:00
Laurent Cozic
a415b9d7ae Electron release v1.0.186 2020-03-01 11:43:47 +00:00
Laurent Cozic
cb4fd1ebf9 Tools: Build tools on initial install, and removed build warnings 2020-03-01 11:42:44 +00:00
Anjula Karunarathne
a28b790256 Desktop: Fixes #2615: Fix issue with disappearing button labels in toolbar (#2619)
* Fix undefined showButtonLabels

* Add showButtonLabels to the state; Removed conditional statement checking if state is undefined
2020-03-01 11:12:22 +00:00
Laurent Cozic
55847fa22f Fixed regression 2020-02-29 12:59:10 +00:00
Laurent Cozic
6ca0e6adcc All: Added concept of provisional note to simplify creation and handling of newly created notes 2020-02-29 12:39:23 +00:00
Caleb John
6542a60d61 Merge pull request #2612 from Ullas-Aithal/patch-3
Fixed a typo in faq :)
2020-02-28 14:43:23 -07:00
Ullas Aithal
ef4e1c53b7 Fixed a typo :) 2020-02-28 14:52:46 -06:00
Daulet Amirkhanov
ec64bf2f0f Desktop: Fixes #2476: Fix window dimensions and position when the application starts (#2514)
* ElectronClient window minimum size set

Hardcoded minimum width and height of 100 px.

Signed-off-by: daukadolt <daulet.amirkhanov.official@gmail.com>

* Set Electron window position if outside displays

Set Electron window at the center of primaryDisplay if BrowserWindow is not on any displays.

Signed-off-by: daukadolt <daulet.amirkhanov.official@gmail.com>

* Set Electron window default size dependent on screen

Set Electron window defaultWidth, defaultHeight to 80% of primary display workArea width, height, respectively.

Signed-off-by: daukadolt <daulet.amirkhanov.official@gmail.com>

* Hotfixing Electron defaultHeight depending on width, not height

Hotfix of a typo that calculates Electron app's default height at first run using primary screen's width, not height.

Signed-off-by: daukadolt <daulet.amirkhanov.official@gmail.com>

* Refactoring Electron app defaultWidth/defaultHeight setup

Setting defaultWidth/defaultHeight directly without extra variables.
Rounding defaultWidth/defaultHeight.

Signed-off-by: daukadolt <daulet.amirkhanov.official@gmail.com>
2020-02-27 18:38:08 +00:00
mic704b
54dc2219fe Tests: Integration harness fixes and refactors. (#2569)
* Test harness fixes and integration test refactor and addition.

* Clean up.

* Address review comments.

* Improve method names.
2020-02-27 18:25:42 +00:00
Helmut K. C. Tessarek
a576ad2a39 All: Change geolocation service to freegeoip.app to improve privacy (#2503)
removed unnecessary request to `api.ipify.org`

closes #2469
2020-02-27 09:48:22 +00:00
Runo Saduwa
25a246b6ae Tools: Resolves #2579: Add support for Rule of Hooks plugin (#2579) (#2585)
* installed eslint-plugin-react-hooks and set up rules of hooks

* fixed linter error

* changed react-hooks/exhaustive-deps option to error

* changed spaces to tabs in eslint config
2020-02-27 00:20:55 +00:00
Rishabh Malhotra
4840671f0e Desktop: Fixes #2573: Improved detection of selected text when applying formatting (#2582)
* fixes #2573 

This fixes the bug with spaces

* Update NoteText.jsx
2020-02-27 00:18:57 +00:00
WisdomCode
1d284a3528 Desktop: Fixes #1023: Speed up WebDAV and Nextcloud Sync on Linux (#2577)
* Speed up Linux Sync with KeepAlive Client

* Tidying up

* eslint

* Fix Breaking of building mobile client

* Refactor to make building on android possible

* Coding Convention

* Update shim-init-node.js

Co-authored-by: Laurent Cozic <laurent22@users.noreply.github.com>
2020-02-27 00:14:40 +00:00
Amit singh
721dd17686 Mobile: Fixes #2496: Allow loading images from plain HTTP urls (#2562) 2020-02-26 23:45:26 +00:00
mic704b
3830f5ee46 Desktop: Fix to update tag list when note is deleted. (#2554)
* Ensure tag list updated when note is deleted.

Add integration tests.

* Revert whitespace changes.
2020-02-26 23:42:14 +00:00
R-L-T-Y
ef8af13500 Desktop: Use asar packing to improve performances (#2531)
* Use the strongly recommended asar packing on linux

* Use asar for macOS packaging

* Update package.json

Co-authored-by: Laurent Cozic <laurent22@users.noreply.github.com>
2020-02-26 23:39:24 +00:00
Brandon D
16fb1bda53 Doc: Added Styling Information To CONTRIBUTING.md (#2474)
* Added Styling Information To CONTRIBUTING.md

* Typo Fix + Section Movement

* Coding Style Guidelines Init

* Fixes as per requested by devs
2020-02-25 14:06:56 +00:00
Laurent Cozic
e8fcb0cc87 Update CONTRIBUTING.md 2020-02-25 13:47:44 +00:00
Jeremy Robertson
0e23ea5284 Desktop: Resolves #160: Add word counter feature to notes (#2444)
* Add word counter logic

Fix errant whitespace changes

* update to using react hooks
Use React hooks
remove extra theme set
Update styling function

* correct linting and package lock issues

* WIP: update button functionality

* Add line count and update styling from feedback

* corrected file location to fit new build
2020-02-25 09:43:31 +00:00
Pavel Moiseenko
f9143ad817 Improve ISSUE_TEMPLATE.md (#2571) 2020-02-24 19:43:08 -05:00
Helmut K. C. Tessarek
925c03acca Update website 2020-02-24 17:12:27 -05:00
Laurent Cozic
421d7a947f Tools: Added back RN bundler command and cleaned up files 2020-02-24 17:30:11 +00:00
Devon Zuegel
7104d5b480 Doc: Add docs for auto-reloading the Electron client (#2564) 2020-02-24 11:27:26 +00:00
Laurent Cozic
ddb631d800 Merge branch 'refactor_clipper_build' 2020-02-23 21:31:30 +00:00
PackElend
6107af625f change path to GSoC live blog 2020-02-24 11:43:44 +01:00
Laurent Cozic
2ce40e0390 Finished fixing clipper build 2020-02-23 21:15:37 +00:00
Laurent Cozic
3f267f3774 Clean up unusued files 2020-02-23 21:04:14 +00:00
Laurent Cozic
91ef985353 Moved clipper files one level down 2020-02-23 20:51:04 +00:00
PackElend
cc759afe16 added RTFM and ask for structured writting
- added RTFM 
- added to watch the live blog
- added "in a structured manner" to Recommended steps
- Changed [Development  category] to [GSoC category]
2020-02-23 20:05:00 +01:00
StarFang208
fd405457e4 Translation: Update it_IT.po (#2551)
Translated the missing lines.
2020-02-22 17:53:25 -05:00
Sem
65706980a2 Translation: Update de_DE.po (#2557) 2020-02-22 15:48:24 -05:00
Laurent Cozic
04851284ca Merge branch 'master' of github.com:laurent22/joplin 2020-02-22 18:09:17 +00:00
mic704b
fbedc6b29b Desktop: Resolves #262: Implement "show all notes" (#2472)
* Implement "show all notes" feature.

* Ensure middleware is completely flushed and shutdown before continuing tests.
2020-02-22 11:25:16 +00:00
Laurent Cozic
d228ff9fbd Tools: Improve tsc watch 2020-02-22 11:20:41 +00:00
saif elhak awainia
0f28060795 Mobile: Fixing mobile plateform detection in settings (#2549) 2020-02-22 09:03:49 +00:00
PackElend
1df8509e4d escaped < in ## Recommended steps 2020-02-21 23:12:42 +01:00
PackElend
1229b772fe specified introduction topic subject
The subject of the topic shall contain your username, e.g. _Introducing <username>_.
2020-02-21 23:10:47 +01:00
Laurent Cozic
3cf3cd1598 Cli: Fixes #2536: Fixed issue when a notebook does not have a parent 2020-02-21 18:01:15 +00:00
Laurent Cozic
c5f1f11f2d Update stale.yml 2020-02-21 16:31:35 +00:00
Laurent Cozic
b4b424bf8a Tools: Moved testing under "npm run test" and clean-up no longer used shell scripts 2020-02-21 12:15:06 +00:00
mic704b
2d1aa27955 Doc: Update CONTRIBUTING.md (#2543)
Fix instruction to build unit tests.
2020-02-21 11:52:35 +00:00
mic704b
1f803662d3 Tools: Improve test building (#2546) 2020-02-21 11:48:53 +00:00
Laurent Cozic
2cbbc7100a Update BUILD.md 2020-02-21 11:06:00 +00:00
Laurent Cozic
ed2a6f15fd Update BUILD.md 2020-02-21 11:04:56 +00:00
Laurent Cozic
1aa806df85 Update BUILD.md
Typo
2020-02-21 11:00:02 +00:00
Laurent Cozic
17aa5ae243 Update BUILD.md
Removed non-breaking space
2020-02-21 10:55:09 +00:00
Laurent Cozic
1a96ee4c6b Tools: Fixed auto-ignored files and updated BUILD.md 2020-02-21 07:16:03 +00:00
Anjula Karunarathne
0d9ff26d51 Update BUILD.md (#2542) 2020-02-21 00:53:08 -05:00
Helmut K. C. Tessarek
ce40813bcf Desktop: fix Resources menu item on macOS (#2530)
* fix Resources menu item

On macOS the menu item `Resources` never showed up under `Tools`.

* var -> let
2020-02-21 00:33:48 -05:00
genneko
ea1db84fcc Translation: Fix an sprintf format error in ja (#2541) 2020-02-20 23:10:21 -05:00
Laurent Cozic
c79ee74b4c Electron release v1.0.185 2020-02-20 23:00:14 +00:00
Laurent Cozic
3407a31cf6 Tools: Improve and simplify how to build the apps (#2538)
* Improving CLI build

* Improving CLI build

* Remove requirement to build the tools

* Moved Electron app one level down

* Clean up Electron build

* Moved tools to sub-dir

* Updated root script

* update root

* update root

* update root

* update root

* update root

* update root

* Updated build

* Added doc

* Update CI config

* Should not lint index.js

* Fixing jetify

* Fixed linter errors

* Fixed pod build

* Fixed Windows build
2020-02-20 22:59:18 +00:00
PackElend
2dfe693564 added: share your GitHub username
added "share your GitHub username" to recommended steps to track PR more easily
2020-02-20 20:17:38 +01:00
PackElend
e99edd4af9 added: share your GitHub username
added "share your GitHub username" to recommended steps to track PR more easily
2020-02-20 20:06:47 +01:00
genneko
8d43e1215a Translation: Update ja_JP.po (#2537) 2020-02-20 12:02:59 -05:00
Ji-Hyeon Gim
6449289147 Translation: Update ko.po (#2534)
Signed-off-by: Ji-Hyeon Gim <potatogim@potatogim.net>
2020-02-20 12:00:52 -05:00
zaoyifan
5a33dcaf07 Translation: Update zh_CN.po (#2525)
* Improve Simplified Chinese translation

* Improve Simplified Chinese translation
2020-02-20 02:52:59 -05:00
TheoDutch
2e804086eb Translation: Update nl_NL .po (#2526) 2020-02-19 19:02:30 -05:00
Georg Grab
5bbedc7e3c Desktop: Resolves #592: Create a screen that list all the resouces (#2189)
* Add a Basic Resource Screen

Implement "Open in External Viewer"

Add @types/lodash as a devDependency, prettyBytes for pretty printing bytes

Implement display of Orphaned Resources

Implement deletion of Resources

Implement sorting logic

Minor Styling

Remove Compiled js

Review - No more Orphan display, LIMIT resources

ResourceScreen - use DB for sorting

Database - Version 28 (Index on Resource size)

Add compiled JS with eslint --fix

Add ResourceScreen to ignore files, delete from repo

Disable enforce-react-hooks

* Second review round

* Update ResourceScreen.tsx

Co-authored-by: Laurent Cozic <laurent22@users.noreply.github.com>
2020-02-19 10:13:33 +00:00
Laurent Cozic
9455936f19 Merge branch 'master' of github.com:laurent22/joplin 2020-02-19 00:45:46 +00:00
Helmut K. C. Tessarek
9af4ec7b04 Mobile: Update react-native-version-info to 1.0.1 (#2522) 2020-02-19 00:45:22 +00:00
Laurent Cozic
fb619a0099 Fixed TypeScript issues 2020-02-19 00:41:49 +00:00
Laurent Cozic
35e369ff1a Merge branch 'master' into improve-build 2020-02-19 00:18:38 +00:00
Laurent Cozic
2fa8e2ff09 Fix build 2020-02-19 00:09:19 +00:00
Devon Zuegel
eeb9999334 Mobile: Add quick actions (#2247)
* Super basic QuickAction is working!

* QuickAction successfully creates notes

* Update icons

* Update icons and support new to-do

* Update icons and support new to-do

* Fixed

* Extract QuickActions

* It works as long as you go out of the edit screen (saving is not sufficient)

* working? but still kinda buggy...

* Cleanup

* Cleanup

* Cleanup

* Use the same pattern as onJoplinLinkClick_

* Cleanup

* Cleanup

* Remove pluginAssets/index.js change

* manual Andoid linking

* Transition QuickActions.js to .ts

* Unstage QuickActions.js in favor of .ts

* Move QuickActions out of lib/

* Add comment about userInfo in QuickActions

* Remove redundant QuickActions file

* Remove pluginAssets/index to resolve conflict

* Update CONTRIBUTING.md to include test runner troubleshooting

* Add `npm run tsc` to Unit Tests docs

Co-authored-by: Helmut K. C. Tessarek <tessarek@evermeet.cx>
2020-02-18 23:52:36 +00:00
Helmut K. C. Tessarek
e6cbd8c8f8 Update translations 2020-02-18 15:01:29 -05:00
Mario
5a40204cb3 Translation: add Estonian language (et_EE.po) (#2512)
* Estonian lang

* correction of mistakes
2020-02-18 14:58:13 -05:00
Laurent Cozic
805cf06af7 Merge branch 'master' of github.com:laurent22/joplin 2020-02-18 16:19:25 +00:00
mic704b
bdce832fee Desktop: Ensure tabs act like tabs and spaces act like spaces in editor. (#2508) 2020-02-17 23:28:55 +00:00
Laurent Cozic
4c97aa8542 Improving build 2020-02-17 20:55:09 +00:00
Laurent Cozic
ca9102d4f5 Tools: Move Cli compiles locales under git to simplify build 2020-02-17 20:41:11 +00:00
Laurent Cozic
4f8e7b0e2b Clipper release v1.0.20 2020-02-15 15:22:38 +00:00
Laurent Cozic
9e92c9230b Merge branch 'master' of github.com:laurent22/joplin 2020-02-15 15:22:13 +00:00
Laurent Cozic
2fef4a0c09 Fixing CRA 2020-02-15 15:21:58 +00:00
Helmut K. C. Tessarek
00dc711ffa change clipper manifest to correct version - it will be changed by the release script 2020-02-14 22:48:19 -05:00
Laurent Cozic
a52c261d95 Fixed tests 2020-02-14 09:43:22 +00:00
Laurent Cozic
c63d8a70b8 Desktop: Fixed search bar text not visible in dark mode 2020-02-14 00:57:20 +00:00
Laurent Cozic
79f5bcd2fc All: Fixes #2485: Better handling of rare error in WebDAV server 2020-02-14 00:53:51 +00:00
Laurent Cozic
675ef8aefd Mobile: Fixes #2141: Fixed links not working within TOC 2020-02-14 00:36:11 +00:00
Laurent Cozic
f97bae0b27 iOS: Fixes #2384: Improve support for dark mode 2020-02-14 00:17:09 +00:00
Laurent Cozic
3361901cd8 Merge branch 'master' of github.com:laurent22/joplin 2020-02-13 23:59:34 +00:00
Laurent Cozic
3db47b575b All: Security: Fixed potential Arbitrary File Read via XSS 2020-02-13 23:59:23 +00:00
Helmut K. C. Tessarek
b1ab59b2e6 Desktop: Update Electron to 7.1.12 (#2500)
This is only a minor bump but several issues have been fixed since 7.1.9:

- Fixed an issue where sending complex objects over IPC could in some cases cause the renderer process to be terminated. electron/electron#21922
- Fixed crash with Date.toLocaleString for invalid locale and locale of the format aa@BB. electron/electron#21969
- Fixed flash plugin not working. electron/electron#22109
- Fixed issue where renderers could crash during GC when using the contextBridge module. electron/electron#22112
- Fixed netLog.stopLogging returning undefined instead of the path to the log. electron/electron#21988
- Fixed an edge case in checkbox logic on Windows. electron/electron#21860
- Fixed an issue where window.print() only worked once on a single BrowserWindow. electron/electron#21911
- Fixed an issue where the credits set in About Panel credits were not dark mode aware on macOS. electron/electron#21924
- Fixed error thrown when importing powerMonitor on Linux before app's 'ready' event. electron/electron#21941
- Fixed fuzzy font rendering when hot-plugging displays on macOS Catalina. electron/electron#21872
- Fixed BrowserWindow.setFocusable(true) not working on Windows. electron/electron#21855
- Fixed set-cookie header not passed in net module. electron/electron#21770
- Fixed an issue where custom stream protocols would sometimes not complete responses when the data stream ended. electron/electron#21758
- Fixed crash when restoring minimized hidden window on Windows. electron/electron#21820
- Fixed issue where non-zero size pixels in CSS styles could be rounded down to zero size pixels. electron/electron#21857
- Fixed memory leak when using javascript generator functions. electron/electron#21773
- Fixed potential hang when sending synchronous IPC messages on process shutdown. electron/electron#21776
2020-02-13 00:49:52 +00:00
Bailey
652b852f6d Translation: Update nl_NL.po (#2498)
I felt like improving some of the Dutch translation work for Joplin so here are some more and improved translations

(not all that many but more may come)
2020-02-12 18:03:28 -05:00
Fernando Pindado
54fd2049a8 Translation: Update es_ES.po (#2497)
Updated some already translated messages and translated new ones
2020-02-12 16:28:28 -05:00
Laurent Cozic
06d807d9ff Clipper: Fixes #2489: Fixed clipping of pages that contain images without sources (YouTube), and improved support for SVG graphics 2020-02-12 18:15:16 +00:00
Laurent Cozic
b66b1ba9e6 Clipper: Upgrade create-react-app to remove need for unsafe-eval CSP flag 2020-02-12 17:46:42 +00:00
Laurent Cozic
06f71cea24 Desktop: Resolves #2162: Added zoom controls to the application menu
commit 2285000a6ac09eed12d4215d71b4f88f1660411a
Author: Laurent Cozic <laurent@cozic.net>
Date:   Tue Feb 11 22:25:12 2020 +0000

    Deprecate style.zoom

commit 3a6da4ffee280dd93eee1f4ae8891a72ecaea8e3
Author: Laurent Cozic <laurent@cozic.net>
Date:   Tue Feb 11 22:13:01 2020 +0000

    Fix zoom branch

commit c46c080a06
Author: Elizabeth Schafer <elizabeth.schafer.wenk@gmail.com>
Date:   Sun Dec 15 10:37:10 2019 -0500

    Using componentDidUpdate rather than deprecated componentWillRecieveProps

    https://github.com/laurent22/joplin/pull/2165#discussion_r357441917

commit 069444fd02
Author: Elizabeth Schafer <elizabeth.schafer.wenk@gmail.com>
Date:   Sun Dec 15 10:33:23 2019 -0500

    Zoom factor is saved to private setting

    https://github.com/laurent22/joplin/pull/2165#issuecomment-565258704

commit 34a1b2dc3e
Author: Elizabeth Schafer <elizabeth.schafer.wenk@gmail.com>
Date:   Sun Dec 15 10:30:29 2019 -0500

    Basing new zoom value off redux state

    https://github.com/laurent22/joplin/pull/2165#discussion_r357441406
    https://github.com/laurent22/joplin/pull/2165#discussion_r357441512

commit 7ec15ff4c4
Author: Elizabeth Schafer <elizabeth.schafer.wenk@gmail.com>
Date:   Fri Dec 13 12:50:11 2019 -0500

    Reducer shouldn't have any side effects

    https://github.com/laurent22/joplin/pull/2165#discussion_r357440767

commit 9e676ece13
Author: Elizabeth Schafer <elizabeth.schafer.wenk@gmail.com>
Date:   Sun Dec 8 11:11:28 2019 -0500

    Added zoom options to the view menu
2020-02-12 12:41:32 +00:00
Laurent Cozic
88eed12c78 Merge branch 'master' of github.com:laurent22/joplin 2020-02-12 11:20:46 +00:00
Laurent Cozic
ea75f65e35 Desktop, Mobile: Fixed note renderer asset caching issue 2020-02-12 10:17:15 +00:00
axq
b1a9b448a6 Documentation: Extend copyright date range to 2020 (#2495)
* Minor English improvements in README.md

* Update LICENSE

* Update License.txt

* Update terminal.md

* Extend copyright date range to 2020

Minor housekeeping on copyright date range, so the app doesn't look stale in 2020
2020-02-12 05:14:08 -05:00
Helmut K. C. Tessarek
c27c3c48ba commit files added by buildAssets.js 2020-02-11 22:29:37 -05:00
saif elhak awainia
fdf28c3513 Mobile: Added OLED dark theme (#2368)
* Android: Adding Oled dark theme

* Mobile: Fixing coding style issues

* Making oled dark mode only reachable in mobile app

* Fixing eslint errors

* Update Setting.js

* Update Setting.js

Co-authored-by: Laurent Cozic <laurent22@users.noreply.github.com>
2020-02-11 23:32:15 +00:00
Helmut K. C. Tessarek
018222a1f4 Desktop, Mobile: Fixes #2477: Add new Katex fonts to improve rendering (#2478)
* add katex font KaTeX_Size4-Regular.woff2

fixes #2477

* deleted:    ElectronClient/app/gui/note-viewer/pluginAssets/katex/fonts/KaTeX_Size4-Regular.woff2

* add font to buildAssets.js

* register font in katex.js

* prepare files in case we need other fonts in the future

* use all fonts
2020-02-11 22:53:12 +00:00
Brandon Wulf
ca5d6c5cfe Desktop: Fix .desktop file & force refresh (#2479) 2020-02-11 22:33:10 +00:00
Laurent Cozic
d02488f00c Merge branch 'master' of github.com:laurent22/joplin 2020-02-11 22:29:02 +00:00
Laurent Cozic
1d14c8a706 Desktop, Mobile: Resolves #2001: Added Mermaid diagrams support
commit ae8a0641ab3681a3b25f6dc4ac40f20d52aaeb4d
Author: Laurent Cozic <laurent@cozic.net>
Date:   Tue Feb 11 17:58:08 2020 +0000

    Fixed plugin asset

commit 03adf7fc7c878f82f6a43515d37fd5e3dd59390f
Author: Laurent Cozic <laurent@cozic.net>
Date:   Mon Feb 10 22:09:18 2020 +0000

    Desktop: Adding Mermaid support
2020-02-11 22:28:43 +00:00
mic704b
573b744293 Desktop: Support export of multiple notes to PDF files. (#2468)
* Support export of multiple notes to pdf files.

* Update in response to review comments.

Find unique filenames when exporting multiple pdfs.
Simplify delay.

* Eliminate redundant retries and fix error message in fs shim unique filename search.

* Make output filenames consistent between single and multi pdf export.

* Remove unnecessary white space.

* Remove legacy sleep in pdf export and add a little more variability to unique filename search.
2020-02-11 14:14:04 +00:00
Marcus Hill
4bd326f72c Clipper: Add ability to launch clipper window with shortcut (#2272)
* Clipper: Add ability to launch clipper window with shortcut

This change adds a command to the manifest.json file for the web clipper
which launches the webclipper rather than clicking on it.
Because this is a WebExtensions feature and not something homegrown,
 users are able to change (or remove) the shortcut using native browser functionality.

* Add commands for all clipping options

* Remove empty suggestedKeys property from extension manifest

* Add ability to focus the webclipper buttons

* Remove debug log

* Change sendClipMessage warning to error

* Refactor to add a sendContentToJoplin command

* Update index.js

Co-authored-by: Laurent Cozic <laurent22@users.noreply.github.com>
2020-02-11 10:49:07 +00:00
Anjula Karunarathne
d278809659 Desktop: Fixed incorect location format (#2480) 2020-02-11 09:49:48 +00:00
Helmut K. C. Tessarek
8053e11b9a minor improvements of wording
There's no word `toggle-able`. It does not exist.
functionality is a mass noun. There's no plural form. (same as `data` or `information`)
2020-02-10 19:17:02 -05:00
Laurent Cozic
5f544fba8a Update markdown.md 2020-02-11 00:08:29 +00:00
Laurent Cozic
8ee0d8a73e Doc: More info about Markdown plugins and standards 2020-02-11 00:05:43 +00:00
Laurent Cozic
b56352cb4e Updated buildAssets script 2020-02-10 22:26:25 +00:00
Laurent Cozic
6d0cc97635 Removed auto-generated assets 2020-02-10 22:21:43 +00:00
Laurent Cozic
384c7cd831 Merge branch 'master' of github.com:laurent22/joplin 2020-02-10 21:51:18 +00:00
Laurent Cozic
9ec1e84ed0 Desktop, Cli: Fix importing of very large attachments (150MB+) from Evernote ENEX files 2020-02-10 21:50:45 +00:00
Laurent Cozic
691521c5b9 ios-v10.0.44 2020-02-10 21:44:27 +00:00
PackElend
a1e77b4ccd Rename lessons learned to lessons learned.md 2020-02-10 18:08:09 +01:00
PackElend
f90da61a85 Create lessons learned 2020-02-10 18:07:54 +01:00
Helmut K. C. Tessarek
0b0ff15dde Desktop: Use current year in About box (in the copyright text) (#2466) 2020-02-10 15:54:53 +00:00
Laurent Cozic
9b157c7ac3 Android release v1.0.318 2020-02-09 22:25:18 +00:00
Laurent Cozic
525ba12fc8 Merge branch 'master' of github.com:laurent22/joplin 2020-02-09 22:17:10 +00:00
Laurent Cozic
2785b8ffc5 Mobile: Upgrading to React Native to 0.61.5 - fixed Android build 2020-02-09 22:15:36 +00:00
mic704b
cd9d5db3c2 Desktop: Fix to update the note list if the selected tag is deleted. (#2398)
* Refresh the note list if the selected tag is deleted.

* Handle case where last note is untagged (by following the note)

* Corrections.

* Correct call to asynchronous function.
2020-02-09 22:08:24 +00:00
Laurent Cozic
d8ef15a1e2 Mobile: Upgrading to React Native to 0.61.5 2020-02-09 20:21:52 +00:00
Laurent Cozic
f1015ca73d Android release v1.0.317 2020-02-09 17:50:51 +00:00
Laurent Cozic
e865a5d7c6 RN upgrade: Fixing Android app 2020-02-09 17:42:19 +00:00
Laurent Cozic
cd6e5ccfb8 RN upgrade: Fix sidebar dark overlay 2020-02-09 16:41:30 +00:00
Laurent Cozic
46ca24cf9d RN upgrade: Restore iOS notification feature 2020-02-09 16:29:46 +00:00
Laurent Cozic
813137efc9 RN upgrade: Fix SafeAreaView on iOS 2020-02-09 15:48:09 +00:00
Laurent Cozic
4235288c55 Mobile: Upgrading to RN 60 2020-02-09 14:51:12 +00:00
Laurent Cozic
7fd445173d Desktop, Mobile: Fixes #2277: Fix alignment of checkboxes and other list items in rendered note 2020-02-08 17:15:22 +00:00
Laurent Cozic
1e190bbe70 Clipper: Fixes #2294: Clipping selection in some cases would not work, when that selection contains multiple code blocks 2020-02-08 12:16:49 +00:00
Laurent Cozic
0229686203 iOS: Fixes #2301: Removed filesystem sync option, which was not supported 2020-02-08 11:59:19 +00:00
Laurent Cozic
1606076b4e Mobile: Fixes #2401: Fixed code syntax highlighting on dark theme 2020-02-08 11:31:22 +00:00
Laurent Cozic
cd630e9516 Removed auto-copied assets 2020-02-08 11:20:44 +00:00
Laurent Cozic
3b200e5c92 Desktop, Mobile: Fixes #2357: Fix slow rendering and memory leak issues with Katex notes 2020-02-08 11:11:04 +00:00
Helmut K. C. Tessarek
639712c003 Merge branch 'master' of github.com:laurent22/joplin 2020-02-07 20:06:57 -05:00
Helmut K. C. Tessarek
1abff212f9 CLI v1.0.155 2020-02-07 20:06:29 -05:00
Helmut K. C. Tessarek
cfb59f2f19 Desktop: show master instead of HEAD as branch in about box (#2465)
Builds in CI are done from a 'detached HEAD' state. Thus `git rev-parse --abbrev-ref HEAD` always returns HEAD, which is not master.
Releases are always created from the master branch, thus HEAD -> master.
2020-02-08 01:02:10 +00:00
Helmut K. C. Tessarek
df63572b7c Update translations 2020-02-07 19:47:39 -05:00
Laurent Cozic
d89071dc03 Merge branch 'master' of github.com:laurent22/joplin 2020-02-08 00:16:16 +00:00
Laurent Cozic
95e0e8d459 Desktop, Mobile: Fixes #2374: Fix rendering of certain letters in Katex. Fixed printing when note contains Katex code 2020-02-08 00:15:56 +00:00
mic704b
6973952892 Desktop, Cli: Fixes #2455: Fix markdown export (#2463)
* Ensure directory exists when export md file.

* Add tests.
2020-02-07 23:36:25 +00:00
Laurent Cozic
56cf5271a2 Electron release v1.0.184 2020-02-07 23:30:00 +00:00
Laurent Cozic
d679ceeb9b Removed postinstall for joplin-renderer 2020-02-07 23:29:53 +00:00
Laurent Cozic
49cb391486 Electron release v1.0.183 2020-02-07 23:27:27 +00:00
Laurent Cozic
cfdde4c2ce Removed package.json comments as it breaks CI 2020-02-07 23:27:16 +00:00
Laurent Cozic
57864a388a Electron release v1.0.182 2020-02-07 23:24:00 +00:00
Laurent Cozic
74c8a38d48 CLI v1.0.154 2020-02-07 23:23:30 +00:00
Laurent Cozic
cd19cedd46 Moved joplin-renderer dependencies to client package.json as a workaround to electron-builder bug
Due to this bug:

https://github.com/electron-userland/electron-builder/issues/3185
2020-02-07 23:21:16 +00:00
Helmut K. C. Tessarek
3f23d8ed06 Desktop, Cli: Fixes #2085: Fix escaping of title when generating a markdown link (#2456)
Previously a title with brackets was escaped incorrectly. The brackets were replaced by underscores.

The following title `title [square] (round)` looked like this:

[title _square_ _round_](:/c54794f53e5e4b1aa558699e255d5f95)

Now it looks like this:

[title \[square\] (round)](:/c54794f53e5e4b1aa558699e255d5f95)

fixes #2085
2020-02-07 22:15:41 +00:00
Helmut K. C. Tessarek
8cbb0d03e8 fix de_DE.po 2020-02-07 16:31:47 -05:00
Tomáš Bambas
52b99a1520 Translation: Update cs_CZ.po (#2462) 2020-02-07 16:07:22 -05:00
Helmut K. C. Tessarek
7eabe74402 Cli: Fix console messages being displayed in GUI (#2457)
see https://discourse.joplinapp.org/t/joplin-terminal-question-sync/5700?u=tessus
2020-02-07 09:49:47 +00:00
Laurent Cozic
10cf80d6ca Merge branch 'master' of github.com:laurent22/joplin 2020-02-06 11:55:35 +00:00
Helmut K. C. Tessarek
bccfd0bcbd Desktop: Sort tags in drop-down list (when adding tags) (#2453)
see https://discourse.joplinapp.org/t/request-better-tag-organisation/5662?u=tessus
2020-02-06 10:51:24 +00:00
mic704b
fa9e2bd6dd Desktop: Support scrolling in the note list using keys (eg page up, page down) (#2404)
* Implement note list navigation: page up/down and home/end.

* Adjust key code mappings.

* Refactor.

* Add comments to clarify key codes.

* Fix formatting.
2020-02-06 09:38:33 +00:00
mic704b
b15b3d6ac5 Desktop: Do not select pasted text no matter the paste method (#2431) 2020-02-06 01:38:17 -05:00
Laurent Cozic
c4fb5b72cd Electron release v1.0.181 2020-02-05 22:34:21 +00:00
Laurent Cozic
fd706c3dbc Trying to revert to electron-builder 20.15.0 to go around build issue 2020-02-05 22:34:13 +00:00
mic704b
5128190942 Desktop: Resolves #2330: Fix rendering of tabs in code blocks (#2446)
* Add renderer plugin to handle tabs in code blocks.

* Add plugin to renderer package list.

* Attempt to fix unrelated linter issues.

* Fix unrelated linter problems.

The problems exist on master prior to the branch.

* Fix more inherited linter problems.
2020-02-05 22:15:40 +00:00
mic704b
c6f127b48e Desktop: Fixes #2407: Do not show "could not print" warning dialog after cancelling print. (#2410)
* Do not show "failed to print" warning dialog after cancelling print.

* Add reason to error string.

* Reform message string.

* Ensure OK button is displayed on error dialog.
2020-02-05 21:50:05 +00:00
mic704b
011d66356f Desktop: Resolves #1014: Support list creation on multi-line selections (#2408)
* Support multi-line selections for creating ordered lists, unordered lists, checkboxes.

* Modify to maintain previous behaviour wrt insertion of new line if not on empty line.

* Review update: rename variables (or eliminate them).

* Review update: variable naming.
2020-02-05 21:38:55 +00:00
Amit singh
d24a974219 Desktop: fixes long lines warpped (#2447) 2020-02-05 21:35:37 +00:00
mic704b
82f5e26ef4 Desktop: Resolves #539: Add "add or remove tags" for multiple notes. (#2386)
* Add `add or remove tags` for multiple notes.

* Fix test.

* Handle invalid argument.

* Enable "Edit > Tag" menu item.

* Clean up variable naming.
2020-02-05 21:24:12 +00:00
0xCLOVER
247182edbf Desktop: Fix #2365: Ensure the main window is hidden when Joplin starts (#2432)
* Ensure window is hidden when application launches

* Update ElectronAppWrapper.js

Co-authored-by: Laurent Cozic <laurent22@users.noreply.github.com>
2020-02-05 11:26:57 +00:00
Vaidotas Simkus
69fc518e39 Desktop: Allow --no-sandbox flag to go around AppImage limitation (#2436) 2020-02-05 11:24:09 +00:00
Andrey Dolgov
aef4a88d7f All: Reset time fields when duplicating a note (#2428) 2020-02-05 11:18:14 +00:00
mic704b
69e70d88f4 Desktop: Improved Note search bar UI (#2329)
* Add colour hints to the local search bar.

* Refactor.

* Refactor.

* Fix annoying flicker when entering first query character.

* Refactor in response to review comments.

Cache the information at the source, remove state updates during render.

* Move cached data into searchbar component.

* Refactor.

* Show number of matches and disable prev/next buttons when no matches.

* Improve no matches message.

* More note searchbar enhancements.

Indicate selected match
Fade search result text
Ctrl-F selects input content upon repeat

* Update following review.

Modify message to remove need for translation.
Flatten properties structure.

* Made tweaks to avoid having two queries in the state

* Cache searchbox background colour to stop compoenent flashing.

* Update NoteSearchBar.jsx

Co-authored-by: Laurent Cozic <laurent22@users.noreply.github.com>
2020-02-05 10:45:24 +00:00
Laurent Cozic
aac0a45beb Merge branch 'enhance-note-searchbox' of https://github.com/mic704b/joplin 2020-02-05 10:38:16 +00:00
mic704b
d04d89d622 Desktop: Emphasise note title (#2311)
* Emphasise note title and de-emphasise note toolbar.

* Remove redundant titles from pre-packaged notes.

* Revert additions to theme.

* Revert de-emphasis of note toolbar icons.

* Revert bolding of title.

* Undo change to theme

* Use h1 style as basis for title editor style.

Times a factor to make up for html scaling.

* Use text style as basis for editor title style, scaled to match html h1.
2020-02-05 10:37:26 +00:00
Laurent Cozic
0f1633dfbf Tools: Linter: Enforce array-bracket-spacing - never 2020-02-04 22:11:35 +00:00
Laurent Cozic
737c3f62db Tools: Linter: Enforce object-curly-spacing - always 2020-02-04 22:09:34 +00:00
fab4x
49701fbc55 Translation: update de_DE.po (#2443)
* update de_DE.po

Added some translations

* Update German translation 

Added some translations

* deletion
2020-02-04 16:56:11 -05:00
mic704b
5395d57df8 Desktop: Support "select all" in the note list (#2403)
* Select all notes in note list, block select all in folder and tags lists.

* Adjust key mappings.

* Adjust key mappings.
2020-02-04 21:55:05 +00:00
Laurent Cozic
8a7e3fe36f Update website 2020-02-04 12:49:21 +00:00
Laurent Cozic
7bc0a52cc9 Doc: GSoC: Added Roeland Jago Douma from Nextcloud as mentor 2020-02-04 12:48:34 +00:00
mic704b
f428cc26a2 All: More info for "unknown profile version" error message (#2361)
* Add version info to profile error message. Add profile version to desktop About Box.

* Add profile error to log.

* Use shim to retrive version number.

* Refactor to use registry instead of BaseModel to get database.

* Remove call to logger.

* Improve code readability.
2020-02-03 21:40:48 +00:00
Diego Betto
cf6c141e57 version attribute inside joplin.desktop is X-AppImage-Version (#2393)
- version attribute inside `joplin.desktop` is `X-AppImage-Version` and not `X-AppImage-BuildId`
- format is `X-AppImage-Version=X.Y.Z" so we need to change `cut` parameters (split on '=' and get 2nd value)
2020-02-03 21:38:52 +00:00
mic704b
3a29b5f321 Update tools build command to end in directory from which it started. (#2434) 2020-02-03 19:59:12 +00:00
chenlhlinux
ffdae41605 Translation: Update zh_CN.po (#2421) 2020-01-31 18:41:04 -05:00
Laurent Cozic
688edd4b32 Moved the Joplin renderer back to the main repository to make development easier 2020-01-30 21:05:23 +00:00
Laurent Cozic
d687ef5c09 Merge branch 'master' of github.com:laurent22/joplin 2020-01-31 09:48:54 +00:00
Marton Paulo
59c8a87047 Remove personal e-mail address eo.po pt_BR.po (#2414)
* Remove personal e-mail address

* Remove personal e-mail address

* Remove personal e-mail address

* Revert "Remove personal e-mail address"

This reverts commit 7a66c4a5b6.

* Remove space

* Remove space
2020-01-30 15:55:23 -05:00
Laurent Cozic
759d59c2e6 Tools: Ignore existing components for react-hook rule 2020-01-29 18:03:55 +00:00
Laurent Cozic
73d12e1ed5 Tools: Enforce React hooks on linter 2020-01-29 17:54:25 +00:00
Kirtan Purohit
fcda843778 All: Resolves #2279: Handle Thai language in search (#2387)
* Update SearchEngine.js

use basicSearch if thai string

* Update string-utils.js

added thai regex support

* Update services_SearchEngine.js

added thai language test

* Update services_SearchEngine.js

remove trailing spaces
2020-01-29 12:50:52 +00:00
Helmut K. C. Tessarek
dcbd8aed30 clarify 2 paragraphs in CONTRIBUTING.md 2020-01-27 19:49:36 -05:00
Helmut K. C. Tessarek
154c838e9f dynamically retrieve copyright year in web site generation 2020-01-27 19:25:10 -05:00
Helmut K. C. Tessarek
f90f688299 fix the 'Improve this doc' link on the index (main) page
The 'improve this doc' link results in a 404 on the main page, because no filename is actually given for the index page.
2020-01-27 19:06:54 -05:00
Helmut K. C. Tessarek
fca9b57af5 Update website 2020-01-27 19:00:52 -05:00
Helmut K. C. Tessarek
59eed8395d fix copyright year in web site generation 2020-01-27 18:56:33 -05:00
Helmut K. C. Tessarek
a4ccd2d43a fix print function in installer script
fixes #2379
2020-01-27 03:40:29 -05:00
Helmut K. C. Tessarek
5136e7a0e0 Merge branch 'master' of github.com:laurent22/joplin 2020-01-27 03:30:09 -05:00
Helmut K. C. Tessarek
423243c84b clarify bug reports and feature requests in the community section 2020-01-27 03:29:52 -05:00
Runo Saduwa
2042deb2bf Documentation: Edit build instructions to avoid confusion (#2376)
* Edits build instructions to avoid confusion

When i was trying to build the Electron Project, i was a bit confused about which commands to follow for building in the projects on my OS (Windows).
there was two header  **Building the Electron application** and   **Building the Electron application for windows**, the former can lead a beginner to confusion because it seems to be "a generalized statement", unlike the latter that was more specific. In order to improve the developers experience, i had to change the former heading to "Building the Electron application for Linux and macOS" to help them understand easily.

* Implemented advises from Reviewer (tessus) to further improve  the documentation instructions for building the Electron App on Linux, macOS and Windows
2020-01-27 03:16:12 -05:00
Helmut K. C. Tessarek
e1216dce4b Update en_US.po 2020-01-26 23:19:54 -05:00
Helmut K. C. Tessarek
3839c7818e Update de_DE.po 2020-01-26 23:19:37 -05:00
abonte
90652e40b4 Translation: Update it_IT.po (#2366)
* Update Italian translations

* fix double quotes
2020-01-26 19:56:06 -05:00
mic704b
83c1c20ce3 Desktop: Fix hang when selecting tag when multiple notes are selected (also for search) (#2372)
* Fix hang when tag clicked while multiple notes selected.

* Fix hang when search changed while multiple notes selected from previous search.
2020-01-26 17:46:19 +00:00
Helmut K. C. Tessarek
0bb1484b2d Deskop: Fix deprecation of getName() in Electron (#2367)
This change fixes the following deprecation:
(electron) 'getName function' is deprecated and will be removed. Please use 'name property' instead.
2020-01-26 17:32:00 +00:00
XSAkos
5881cee167 All: Added new date format YYYY.MM.DD (#2318)
* Added new date format YYYY.MM.DD.

* revert change as this file is autogenerated

Co-authored-by: Akos Keresztes <60130238+keresztesa@users.noreply.github.com>
2020-01-26 17:26:50 +00:00
Laurent Cozic
101935e594 Tools: Allow creating simplified changelog for app stores 2020-01-25 10:42:36 +00:00
Laurent Cozic
9dda65de20 Merge branch 'master' of github.com:laurent22/joplin 2020-01-25 10:28:57 +00:00
Laurent Cozic
a00e35fb57 ios-v10.0.43 2020-01-25 10:28:22 +00:00
mic074b
2c85b55ff8 Cache searchbox background colour to stop compoenent flashing. 2020-01-25 15:30:57 +11:00
Laurent Cozic
d1b51b409a Made tweaks to avoid having two queries in the state 2020-01-25 15:29:48 +11:00
Laurent Cozic
c3d5463589 Tools: Improved CLI release script 2020-01-24 23:18:46 +00:00
Laurent Cozic
710447f879 Merge branch 'master' of github.com:laurent22/joplin 2020-01-24 23:18:02 +00:00
Laurent Cozic
c61e4cae4d CLI v1.0.153 2020-01-24 23:17:46 +00:00
Laurent Cozic
333aebf32c Tools: Removed debugging code 2020-01-24 23:15:05 +00:00
Laurent Cozic
2657c8736e Tools: Fixes #2256: Better handling of git failure when building package-info 2020-01-24 23:10:24 +00:00
Laurent Cozic
5b28f6b25f Tools: Improved git changelog 2020-01-24 22:43:55 +00:00
Laurent Cozic
715253da2f Android release v1.0.316 2020-01-24 22:34:02 +00:00
Laurent Cozic
66356d83ab Electron release v1.0.179 2020-01-24 22:29:17 +00:00
Laurent Cozic
8e531ca87a Update translations 2020-01-24 22:28:54 +00:00
Laurent Cozic
18c46851fd Desktop: Fixes #2324: Apply userstyle again when exporting to PDF or printing 2020-01-24 21:46:48 +00:00
Laurent Cozic
5456dbbf16 Merge branch 'master' of github.com:laurent22/joplin 2020-01-24 21:16:33 +00:00
Laurent Cozic
5c54b83108 Desktop: Fixed update message box 2020-01-24 21:16:25 +00:00
Laurent Cozic
cbf7f03bff Desktop: Improve appearance of note Info dialog 2020-01-24 21:16:18 +00:00
mic704b
ea05fea234 Desktop: Fix identification of note in pdf export from main menu. (#2323) 2020-01-24 20:57:11 +00:00
mic704b
f78729ad1f Cross-platform version number retrieval (#2355)
* Add shim to retrieve application version.

* Create shim to retrieve app version number.

* Add a fall through handler to throw an error.
2020-01-24 20:56:44 +00:00
genneko
4ec9492f7c Update ja_JP.po (#2358) 2020-01-24 15:19:57 +00:00
bedwardly-down
f86b953420 Tools: Updated Request to v2.88.0 to remove dependency on Outdated and Insecure Hawk and Cryptiles Dependencies (#2353)
* Updated Cryptiles dependency to 3.1.4

The maintainer is no longer supporting any version of cryptiles before
v4.2.0 on npm; npm's older versions stop at 3.1.2 and a high security
vulnerability was thrown during a build on linux: https://npmjs.com/advisories/720

The maintainer still has 3.1.4 tagged in his repo and this commit
updates cryptiles to solve that issue without breaking compatibility
since it was primarily bug fixes for a code freeze.

* Updated Request Dependency to 2.86.0

* Updated Reqiest to 2.88.0
2020-01-24 15:19:22 +00:00
mic074b
d8f91a2ece Update following review.
Modify message to remove need for translation.
Flatten properties structure.
2020-01-24 19:23:01 +11:00
Laurent Cozic
6563606799 Merge branch 'master' of github.com:laurent22/joplin 2020-01-23 17:43:16 +00:00
Laurent Cozic
c01bc1c363 All: Added new, more secure encryption methods, so that they can be switched to at a later time 2020-01-22 22:01:58 +00:00
Laurent Cozic
6f8c634756 Tools: Add developer names to changelog 2020-01-22 20:33:43 +00:00
Alexander Pankratov
22a93994aa Translation: Update ru_RU.po (#2347) 2020-01-23 01:07:12 -05:00
Xaris Ar
e0013858c4 Translation: Update el_GR.po (#2340)
* Create el_GR.po (part1)

* Update el_GR.po

* Update el_GR.po (part 2)

* Update el_GR.po

* Finished Greek(el_GR) translation

Finished translating all texts.
Update el_GR.po (beta)

* Update el_GR.po

to meet requirements for Joplin 1.0.173

* Update locale.js

* Delete el_GR.po

* Create el_GR.po

* Update Greek Translation

* Update Greek Translation
2020-01-22 22:31:19 -05:00
Laurent Cozic
b6e0df57eb Desktop: Fixes #2352: undefined text was being displayed on top of notes in revision viewer 2020-01-22 17:32:21 +00:00
Laurent Cozic
be210233be Desktop, Mobile: Fixes #2339, Fixes #2343, Fixes #2345: Fixed issues with Katex and MultiMd table plugin 2020-01-22 17:16:37 +00:00
Carl Bordum Hansen
1a1a1d3841 Desktop: Fix Linux installation script (#2333) 2020-01-22 13:47:20 +00:00
Laurent Cozic
4283bbde7f Doc: Fixed changelog generation for API 2020-01-21 10:40:29 +00:00
Laurent Cozic
fba325f60e Doc: Fixed APIdoc 2020-01-21 09:44:46 +00:00
Laurent Cozic
fcd76dabac Update website 2020-01-21 09:42:27 +00:00
mic074b
f661cad6a3 More note searchbar enhancements.
Indicate selected match
Fade search result text
Ctrl-F selects input content upon repeat
2020-01-21 20:06:28 +11:00
mic074b
1faac68441 Merge branch 'enhance-search-box' into enhance-search-box-extras 2020-01-21 18:45:08 +11:00
Helmut K. C. Tessarek
e9366a0d41 Update translations 2020-01-20 19:11:57 -05:00
Laurent Cozic
953aa5d0b5 Electron release v1.0.178 2020-01-20 18:44:23 +00:00
mic074b
fc5782990f Improve no matches message. 2020-01-20 22:27:38 +11:00
mic074b
01163783ef Show number of matches and disable prev/next buttons when no matches. 2020-01-20 22:13:02 +11:00
mic074b
be19a92f59 Refactor. 2020-01-20 21:25:28 +11:00
Laurent Cozic
3fed1abc36 API: Add ability to search by folder or tag title 2020-01-20 02:19:57 +00:00
Alexander Teterkin
6973bf9331 Documentation: Added 'Yandex Disk' to the list of WebDAV-compatible services known to work with Joplin. (#2285)
* Add Yandex Disk to the list of WebDAV-compatible services

Yandex Disk (cloud storage by Yandex) supports WebDAV access and is known to work with Joplin.

* Add Yandex Disk to the list of WebDAV-compatible services

Added 'Yandex Disk' to the list of WebDAV-compatible services known to work with Joplin (now in correct alphabetical order).
2020-01-20 01:02:54 -05:00
Laurent Cozic
e8867fa0f1 Doc: Added CalebJohn as mentor on three ideas 2020-01-19 16:24:13 +00:00
Bart
d9c15b84d0 Desktop: when importing MD files create resources for local linked files (#2262)
* md importer: first pass import attachment resources with markdown files

* md importer: import resources from md - no unneeded saves, check if files exist, regex name

* md importer: test import of local files as resources, separate method for importing linked files, comment regex matching md tags

* md importer: move stateful regex to method scope, remove spurius await

* md importer: lint

* md importer: respond to PR comments: remove test nesting, test sample, check if path is dir, use shim.fsDriver

* md importer: use file-path methods for getting attachment path

* md importer: use extractImageUrls helper, test for file with zero links

* md importer: try catch around importLocalImages, improve test

* md importer: importing attached images cover case where link also appears elsewhere in doc

* md importer: only create 1 resource if note contains duplicate links, test

* md importer: remove log

* md importer: remove use of lodash
2020-01-19 15:39:38 +00:00
Helmut K. C. Tessarek
81876c7bf3 Desktop: Update Electron to 7.1.9 (#2314)
This is only a minor bump but several issues have been fixed since 7.1.5.

The most pressing one that we've experienced for a long time:

default button in dialog not working on macOS
https://github.com/electron/electron/issues/21633
2020-01-19 15:34:45 +00:00
mic074b
ce6c7c8783 Move cached data into searchbar component. 2020-01-19 11:18:52 +11:00
mic074b
fad2ff674e Refactor in response to review comments.
Cache the information at the source, remove state updates during render.
2020-01-19 10:51:15 +11:00
Laurent Cozic
1dd7727e97 Doc: Fixed GitHub icon 2020-01-18 15:06:35 +00:00
Laurent Cozic
fe0318584e Update website 2020-01-18 14:54:10 +00:00
Laurent Cozic
8508fe737b Doc: Added GitHub Sponsor icon 2020-01-18 14:53:49 +00:00
Laurent Cozic
c7a9e5f656 Merge branch 'master' of github.com:laurent22/joplin 2020-01-18 14:27:26 +00:00
Laurent Cozic
3e43fbce13 Doc: Fix GSoC doc 2020-01-18 14:27:21 +00:00
mic704b
b304e2ae1f Desktop: Fix bug in note tags display due to error in comparison of tag lists. (#2302) 2020-01-18 13:55:35 +00:00
lightray22
35f4ede11a Desktop: show completed date in note properties (#2292) 2020-01-18 13:53:59 +00:00
mic704b
65cbb6e388 Desktop: Maintain selection when non-selected note is deleted (#2290)
* Fix jump of focus following deletion action.

Applies to notes, folders and tags.

* Add tests for reducer item delete handling.

* Add comments.

* Clean up.
2020-01-18 13:53:00 +00:00
lightray22
960d7f84eb Desktop: Don't count completed to-dos in note counts when they are not shown (#2288)
* Desktop: don't count completed to-dos in note counts when they are not shown

* Desktop: review comments for commit 0383dcc

* Desktop: fix remaining lint issues with commit 1fe4685
2020-01-18 13:46:04 +00:00
mic704b
8a392e1c06 Desktop: Fixes #2254: Fix pdf export when mouse over non-selected note in notelist. (#2255) 2020-01-18 13:30:15 +00:00
Vaidotas Simkus
d9d75d6c71 Desktop, Cli: Replace note links with relative paths in MD Exporter (#2161)
* Replace linked Note ids by relative paths in MD Exporter.

* Added tests for the MD Exporter.

* Changed fs.readdirSync use for earlier Node version (v8)

In the previous commit the code used fs.readdirSync from Node v10 or
later. But since Joplin still uses v8, I changed the use of
fs.readdirSync to be in line with the earlier api.

* Updated readDirSync use for Node v10, which allows gets folder names too.

* Revert "Updated readDirSync use for Node v10, which allows gets folder names too."

This reverts commit 8f255db120861dd7773d99e1b63f4864d39594cf.
Because the Travis builds still use Node v8. This is fine as well, the
readdirSync returns the filenames in the directory.

* Added reservedNames param to findUniqueFilename
2020-01-18 13:16:14 +00:00
Laurent Cozic
69f9e38730 Doc: Improved test unit doc 2020-01-18 13:11:42 +00:00
Laurent Cozic
7f95186a97 Doc: Updated GSoC ideas and added section about abandoned pull requests 2020-01-18 13:08:23 +00:00
mic074b
b6db2bf2c5 Fix annoying flicker when entering first query character. 2020-01-18 14:16:12 +11:00
Laurent Cozic
6f976abf42 Doc: Added "Custom keyboard shortcuts" idea for GSoC 2020-01-17 10:53:53 +00:00
Laurent Cozic
d80ffeeba1 Doc: Update mentors for GSoC 2020-01-17 10:48:35 +00:00
mic074b
c856e8d9ac Refactor. 2020-01-17 17:13:28 +11:00
mic074b
6736bda429 Refactor. 2020-01-17 17:08:41 +11:00
mic074b
0a8f9163db Add colour hints to the local search bar. 2020-01-16 23:02:36 +11:00
zen-quo
e078de25f0 Translation: Update tr_TR.po (#2295) 2020-01-12 19:01:00 -05:00
Laurent Cozic
cd284f78ad Update website 2020-01-11 16:58:32 +00:00
Laurent Cozic
0a13c988fa Mobile: Fixes #1816: When creating a new note, it was not possible to focus the body text field 2020-01-08 17:42:28 +00:00
Laurent Cozic
b61bfd6ffe Android: Fixes #2270: Note files could become corrupted when using file system sync on certain Android versions 2020-01-08 18:57:40 +00:00
Laurent Cozic
fc61b474cd Clipper: Fixes #2252: Some pages that contain tables with only one cell would trigger an error 2020-01-08 18:35:41 +00:00
Laurent Cozic
bf25364333 Clipper: Fixes #2267: Fixed race condition when importing page that have multiple images with similar names 2020-01-08 18:21:13 +00:00
Laurent Cozic
bc7099d29b Desktop, Mobile: Fixed regression in HTML note rendering 2020-01-08 18:05:13 +00:00
Laurent Cozic
00c3ed715c Update PT translation 2020-01-07 15:44:54 +00:00
Caleb John
701b57de89 Fix casing typo for PluginAssetsLoader.js in gitignore (#2250)
* Fix casing typo for PluginAssetsLoader.js in gitignore

* Add change to eslintignore
2020-01-07 00:47:51 +00:00
Caleb John
e674d7d23b Desktop: Add option to disable auto-matching braces (#2251)
* Add option to disable auto-matching braces

* Only Make option desktop only
2020-01-06 22:27:37 +00:00
Devon Zuegel
4a2d9bb028 CLI: Upgrade sqlite (#2248)
* Upgrade sqlite

* Add info about sqlite installation to docs
2020-01-06 22:24:38 +00:00
Abijeet Patro
ae3a278ac4 Desktop: New: Display selected tags under a note title (#2217)
Follow up to #893

Now using middleware to set the tags when a note is selected

This avoids the ugly code in the NoteTextComponent where we determine
if tags are to be fetched, identify if they have been modified, fetch
them  and then dispatch an action to update the store which might
again re-render the component.

Also implements style related fixes from #1000

Signed-off-by: Abijeet <abijeetpatro@gmail.com>
Fixes: #469
2020-01-06 21:23:22 +00:00
mic704b
42ada7123c Desktop: Add external editor actions to the note context menu. (#2214)
* Add external editor actions to the note context menu.

Also start up external editor on note double click.

These changes enhance user experience by placing the actions where
they feel natural.

* Remove double-click behaviour and change menu text.

Changes in response to review comments.

* Move handling of external editor actions to main screen from note text

This is to ensure correct behaviour even when the user launches the
action on a note in the list that is under the pointer, but not selected.

* Move external edit actions to NoteListUtils from MainScreen.

* Reconnect external edit action in main edit menu.
2020-01-06 21:16:39 +00:00
Laurent Cozic
6d9f73eef7 Improved integration of external renderer 2019-12-30 21:54:13 +01:00
Laurent Cozic
541372eb91 Merge branch 'master' of github.com:laurent22/joplin 2019-12-30 20:54:53 +01:00
Laurent Cozic
8d7d70bc13 Desktop: Fixed export to HTML, PDF and printing 2019-12-30 20:44:15 +01:00
Scott Bronson
e77cc18468 Documentation: Fix broken link (#2245)
The folder is `gsoc2020`, not just `gsoc`
2019-12-30 12:42:44 -05:00
Laurent Cozic
193978a8be Android release v1.0.315 2019-12-30 15:16:55 +01:00
Laurent Cozic
853ac0cca8 Electron release v1.0.177 2019-12-30 15:11:34 +01:00
Laurent Cozic
589f0803e6 Fixed Electron upgrade regressions 2019-12-30 15:10:43 +01:00
Laurent Cozic
fc67a44f95 Desktop: Fixed scrolling issue when clicking on anchor 2019-12-30 13:00:53 +01:00
Laurent Cozic
204365b2ae Tools: Fixed desktop build 2019-12-30 10:54:31 +01:00
Laurent Cozic
2a63ecef2a All: Extract note renderer to separate package (WIP) (#2206)
* Started updating to use external renderer package

* Added way to build renderer assets

* Done mobile compatilibty

* Upgrade joplin-renderer

* Added joplin-renderer package
2019-12-29 18:58:40 +01:00
2jaeyeol
1d660d7141 Translation: update ko.po (#2227)
* translate_korean

* translate_korean2
2019-12-29 11:20:54 +01:00
Ibrahim AHMED BACHA
69000c0fc5 Translation: update ar.po (#2231) 2019-12-29 08:52:41 +01:00
Rafael Cavalcanti
c8a0138b3b Desktop: Fixes #2122: Fix Goto Anything scrolling issue (#2199)
* Fix Goto scrolling (#2122)

* Better fix to Goto scrolling (#2122)

* Fix #2122: fix bottomItemIndex and top values
2019-12-28 22:53:21 +01:00
Marcus Hill
90de63e650 CLI: Add --export, --import, and --import-file flags to joplin config (#2179)
* Add --export, --import, and --import-file flags to joplin config

* Convert config --export/--import to work with JSON

* Remove unnecessary check in renderKeyValue
2019-12-28 22:48:34 +01:00
Laurent Cozic
6b6e17cbad Mobile: Display warning box when a resource cannot be downloaded 2019-12-28 20:50:06 +01:00
Laurent Cozic
071bd2b0ca Android release v1.0.314 2019-12-28 20:28:11 +01:00
Laurent Cozic
f74db06176 All: Better handling of resource download errors, and added resource info to sync status screen 2019-12-28 20:23:38 +01:00
Laurent Cozic
a6b3ddc7ed Android release v1.0.313 2019-12-28 18:58:04 +01:00
Laurent Cozic
4ff889d4ec Android: Added button to export profile to external SD card for debugging 2019-12-28 18:47:37 +01:00
Laurent Cozic
12b9f1b969 Merge branch 'master' of github.com:laurent22/joplin 2019-12-28 17:57:21 +01:00
Helmut K. C. Tessarek
59bb1015ab fix Nextcloud name (NextCloud -> Nextcloud) 2019-12-25 11:37:50 +01:00
oscaretu
f9c77171cf Translation: Update es_ES.po (#2211) 2019-12-23 12:32:23 +01:00
Ethan Chen
9628b64d3e Translation: Update zh_TW.po (#2215) 2019-12-23 12:30:41 +01:00
Laurent Cozic
d3f47a38b8 Update README.md 2019-12-20 21:47:06 +00:00
genneko
8111213691 Translation: Update ja_JP.po (#2210) 2019-12-20 11:46:32 +01:00
Laurent Cozic
a88ff902b4 Merge branch 'master' of github.com:laurent22/joplin 2019-12-19 15:19:29 +00:00
Helmut K. C. Tessarek
1e57e1e486 Translation: update es_ES.po
closes #2205
2019-12-19 12:59:17 +01:00
Joel Taylor
172afb0789 Cli: Update CliClient node dependency to 10+ (#2177) 2019-12-18 22:25:14 +00:00
Helmut K. C. Tessarek
5bfd1849c1 Desktop, Mobile: Update Katex to 0.11.1 (#2201)
* update Katex to 0.11.1

* add package-lock.json files
2019-12-18 22:23:32 +00:00
Helmut K. C. Tessarek
f61c9c93bb update firefox addon link
closes #2203
2019-12-18 18:02:58 +01:00
Laurent Cozic
b0efdb6ee8 Merge branch 'master' of github.com:laurent22/joplin 2019-12-18 16:05:02 +00:00
Laurent Cozic
888a9ddaf4 Desktop: Improved Nextcloud API error handling 2019-12-18 15:32:19 +00:00
Helmut K. C. Tessarek
d2482d6554 Translation: update de_DE.po 2019-12-18 14:55:43 +01:00
Helmut K. C. Tessarek
21cac248b3 Translation: update en_US.po 2019-12-18 14:09:08 +01:00
Laurent Cozic
ce7671151c Desktop: Remove useless React warnings from console 2019-12-18 11:49:44 +00:00
Helmut K. C. Tessarek
b77525e570 Update translations 2019-12-18 12:45:10 +01:00
Laurent Cozic
e93cc50d1c Translation: add Portuguese (pt_PT.po) (Thanks Diogo Caveiro) (#2194)
Author name: Diogo Caveiro
2019-12-18 12:42:49 +01:00
Laurent Cozic
c534305c7b Desktop: Fixes #2157: Prevent app from crashing when pressing focus shortcut from search bar 2019-12-18 11:16:13 +00:00
Laurent Cozic
797b71d903 Doc: Fixes #2187: Fixed API doc 2019-12-18 11:00:52 +00:00
Laurent Cozic
74fd9e1e9e All: Fixes #2091: Handle WebDAV servers that do not return a last modified date (fixes mail.ru) 2019-12-18 10:46:12 +00:00
Laurent Cozic
ff94a95589 Desktop: Fixes #2144: Fix notifications on Windows 7 2019-12-18 10:22:01 +00:00
Laurent Cozic
0f5192bf19 Tools: Display script line in translation files 2019-12-18 10:21:36 +00:00
Laurent Cozic
eabbbba0c7 Desktop: Fixed HTML export 2019-12-18 10:00:59 +00:00
Laurent Cozic
840cdf5512 Doc: Added troubleshooting section to BUILD.md for Windows development 2019-12-18 09:34:03 +00:00
Laurent Cozic
757a6854ab Desktop: Updated OneDrive login to remove webview dependency 2019-12-18 09:21:12 +00:00
Laurent Cozic
b16dd051f1 Merge branch 'master' of github.com:laurent22/joplin 2019-12-17 17:07:15 +00:00
Laurent Cozic
68e73b658a Desktop: Fixed dev tool support 2019-12-17 17:06:55 +00:00
Laurent Cozic
af5f301276 Update ideas.md 2019-12-17 14:51:25 +00:00
Laurent Cozic
2b9818a94d Merge branch 'master' of github.com:laurent22/joplin 2019-12-17 12:49:16 +00:00
Laurent Cozic
58200ecdb1 Desktop: Decrypt notes that are meant to be shared 2019-12-17 12:45:57 +00:00
Ladislav Benc
acaf22fa11 Doc: Fixing a couple typos (#2198) 2019-12-17 12:22:28 +00:00
Laurent Cozic
f60d6e0748 Desktop: Make it easier to view early errors when the app starts 2019-12-17 12:09:57 +00:00
Helmut K. C. Tessarek
ae9163e9bb add description for soft breaks to plugin section of markdown page
closes #2192
2019-12-17 12:55:46 +01:00
Laurent Cozic
cad6b7971f Desktop: Upgrade to Electron 7 2019-12-17 11:08:55 +00:00
Laurent Cozic
ee38590c35 Allow printing and creating PDF from iframe 2019-12-17 09:44:48 +00:00
Laurent Cozic
f10695fb8f Desktop: Render note using iframe instead of deprecated webview 2019-12-17 00:45:27 +00:00
Laurent Cozic
b44ecc1958 Tools: Added build scripts for Windows 2019-12-17 00:40:49 +00:00
Laurent Cozic
931e7a7795 Improved export to HTML when note is already HTML 2019-12-17 00:40:25 +00:00
Laurent Cozic
df85bb189d Update website 2019-12-16 23:22:46 +00:00
Laurent Cozic
27e1f53b5f Doc: More clean up for GSoC 2019-12-16 23:22:28 +00:00
Laurent Cozic
266ddedaef Update website 2019-12-16 23:19:45 +00:00
Laurent Cozic
44dd327d22 Doc: More clean up for GSoC 2019-12-16 23:18:23 +00:00
Laurent Cozic
13be56a2e3 Doc: Moved all GSoC ideas to single document 2019-12-16 22:53:45 +00:00
Laurent Cozic
5d0ba460ae Update website 2019-12-16 17:22:44 +00:00
Laurent Cozic
6988b3accb Doc: Added idea: Multi-profile support, for GSoC 2019-12-16 17:21:35 +00:00
Laurent Cozic
3e2676a8c6 Doc: Removed number from GSoC ideas 2019-12-16 16:51:36 +00:00
Laurent Cozic
0f88c947f1 Doc: Cleaned up GSoC projects and added spec for OCR 2019-12-16 16:47:06 +00:00
Laurent Cozic
07b175c2ee Revert "Desktop: Upgrade to Electron 5"
This reverts commit 37dbb81425.
2019-12-15 19:05:44 +00:00
Laurent Cozic
6132cf2128 Desktop, Cli: Allow exporting a note as HTML 2019-12-15 18:41:13 +00:00
Laurent Cozic
37dbb81425 Desktop: Upgrade to Electron 5 2019-12-14 23:43:34 +00:00
Laurent Cozic
c1028ec2cf Update website 2019-12-14 10:57:05 +00:00
Laurent Cozic
f98dc4e576 Update website 2019-12-14 10:56:13 +00:00
Laurent Cozic
da044960f9 Tools: Improved TypeScript config 2019-12-14 10:55:58 +00:00
Laurent Cozic
03522b48a5 CliClient: Fixed regression following recent PR 2019-12-14 10:55:42 +00:00
Laurent Cozic
1b31525773 Doc: Update Nextcloud app doc 2019-12-14 10:36:30 +00:00
Laurent Cozic
64a1408d6c Electron release v1.0.176 2019-12-14 01:28:50 +00:00
Laurent Cozic
3a5e68fca0 Minor changes for TypeScript 2019-12-14 01:28:37 +00:00
Laurent Cozic
48ce788118 Merge branch 'master' of github.com:laurent22/joplin 2019-12-13 22:38:39 +00:00
Laurent Cozic
34f0a2951a Desktop: Add ability to share a note publicly using Nextcloud (#2173)
* Moved button row to separate component file and started Sharing dialog

* Adding Sharing dialog

* Applied "npx react-codemod rename-unsafe-lifecycles"

* More UI

* Tools: Improved TypeScript integration

* Improved share dialog

* Tools Added support for translation validation in CI, and added support for plural translations

* Improved UI and sharing workflow

* Share workflow

* Cleaned up and improved sharing config error handling

* Fixed build scripts and doc for TypeScript

* Run linter
2019-12-13 01:16:34 +00:00
Laurent Cozic
66546418e3 Merge branch 'master' of github.com:laurent22/joplin 2019-12-13 00:53:57 +00:00
Devon Zuegel
611be7c0fa Desktop: Allow for custom Joplin theme and Ace editor styles (#2099)
* Delete unused file

* Implement CssUtils

* Inject custom CSS styles

* Add info about custom CSS styles to README

* Add note that ElectronClient/app/app.js is generated

* Add support for Setting.TYPE_BUTTON

* Add buttons in Preferences to open custom CSS files

* Swap custom CSS filenames

* Swap custom CSS filenames

* Wrap "Edit" with translation fn

* Incorporate PR feedback from @laurent22

* Add openOrCreateFile to Settings

* Move openOrCreateFile to shim

* Removing header for now - see https://github.com/laurent22/joplin/pull/2099#discussion_r353120915
2019-12-13 00:40:58 +00:00
Helmut K. C. Tessarek
4f3e031f4f Update website 2019-12-12 19:34:51 +01:00
Laurent Cozic
554c46182a Reverted sv translation update has it is invalid 2019-12-11 10:16:19 +00:00
Laurent Cozic
b5d5d02a9c Tools Added support for translation validation in CI, and added support for plural translations 2019-12-10 21:10:47 +00:00
Laurent Cozic
4640b65b85 finished renaming 2019-12-10 15:23:43 +00:00
Laurent Cozic
1615c6bdc8 renaming 2019-12-10 15:23:29 +00:00
Laurent Cozic
c003b8d32d iOS: Update application icon 2019-12-09 16:56:01 +00:00
Alexey
3a1f924fb1 Translation: Update ru_RU.po (#2164)
Filled untranslated string and correct some sentencies.
2019-12-09 06:38:57 -05:00
githubaccount073
583460c0a8 Translation: Update sv.po (#2163)
Added missing translations
Made adjustments to previous translations.
2019-12-09 06:38:03 -05:00
Laurent Cozic
1550a52002 iOS v10.0.41 2019-12-08 12:08:02 +00:00
Laurent Cozic
9bd3bc8404 Fixed clipper icons 2019-12-08 10:22:10 +00:00
Laurent Cozic
8c1d13b364 Android release v1.0.312 2019-12-08 10:09:25 +00:00
1082 changed files with 171755 additions and 48182 deletions

View File

@@ -6,6 +6,7 @@ _releases/
Assets/
CliClient/build
CliClient/locales
CliClient/locales-build
CliClient/node_modules
CliClient/tests-build
CliClient/tests/enex_to_md
@@ -14,35 +15,86 @@ CliClient/tests/logs
CliClient/tests/support
CliClient/tests/sync
CliClient/tests/tmp
Clipper/joplin-webclipper/content_scripts/JSDOMParser.js
Clipper/joplin-webclipper/content_scripts/Readability-readerable.js
Clipper/joplin-webclipper/content_scripts/Readability.js
Clipper/joplin-webclipper/dist
Clipper/joplin-webclipper/icons
Clipper/joplin-webclipper/popup/build
Clipper/joplin-webclipper/popup/node_modules
Clipper/content_scripts/JSDOMParser.js
Clipper/content_scripts/Readability-readerable.js
Clipper/content_scripts/Readability.js
Clipper/dist
Clipper/icons
Clipper/popup/build
Clipper/popup/config/webpack.config.js
Clipper/popup/config/webpack_config_at_eject_time.js
Clipper/popup/node_modules
Clipper/popup/scripts/build.js
docs/
ElectronClient/app/dist
ElectronClient/app/lib
ElectronClient/app/lib/vendor/sjcl-rn.js
ElectronClient/app/lib/vendor/sjcl.js
ElectronClient/app/locales
ElectronClient/app/node_modules
ElectronClient/dist
ElectronClient/lib
ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/plugins/lists.js
ElectronClient/lib/vendor/sjcl-rn.js
ElectronClient/lib/vendor/sjcl.js
ElectronClient/locales
ElectronClient/node_modules
ElectronClient/packageInfo.js
ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/supportedLocales.js
highlight.pack.js
Modules/TinyMCE/JoplinLists/
node_modules/
ReactNativeClient/android
ReactNativeClient/ios
ReactNativeClient/lib/joplin-renderer/assets/
ReactNativeClient/lib/joplin-renderer/vendor/fountain.min.js
ReactNativeClient/lib/rnInjectedJs/
ReactNativeClient/lib/vendor/
ReactNativeClient/lib/welcomeAssets.js
ReactNativeClient/locales
ReactNativeClient/node_modules
ReactNativeClient/pluginAssets/
readme/
Tools/node_modules
Tools/PortableAppsLauncher
Server/.git/
Server/.github/
Server/docs/
Server/dist/
Server/bin/
Server/dist/
Server/docs/
Server/node_modules/
ElectronClient/app/packageInfo.js
Tools/node_modules
Tools/PortableAppsLauncher
Modules/TinyMCE/IconPack/postinstall.js
Modules/TinyMCE/langs/
# AUTO-GENERATED - EXCLUDED TYPESCRIPT BUILD
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/NoteBody/TinyMCE/TinyMCE.js
ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/utils/useScroll.js
ElectronClient/gui/NoteEditor/NoteEditor.js
ElectronClient/gui/NoteEditor/styles/index.js
ElectronClient/gui/NoteEditor/utils/contextMenu.js
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/useFormNote.js
ElectronClient/gui/NoteEditor/utils/useMarkupToHtml.js
ElectronClient/gui/NoteEditor/utils/useMessageHandler.js
ElectronClient/gui/NoteEditor/utils/useNoteSearchBar.js
ElectronClient/gui/NoteEditor/utils/useSearchMarkers.js
ElectronClient/gui/NoteEditor/utils/useWindowCommandHandler.js
ElectronClient/gui/NoteToolbar/NoteToolbar.js
ElectronClient/gui/ResourceScreen.js
ElectronClient/gui/ShareNoteDialog.js
ReactNativeClient/lib/AsyncActionQueue.js
ReactNativeClient/lib/hooks/useImperativeHandlerDebugger.js
ReactNativeClient/lib/hooks/usePrevious.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/PluginAssetsLoader.js
ReactNativeClient/setUpQuickActions.js
# AUTO-GENERATED - EXCLUDED TYPESCRIPT BUILD

View File

@@ -6,6 +6,11 @@ module.exports = {
},
"parser": "@typescript-eslint/parser",
'extends': ['eslint:recommended'],
"settings": {
'react': {
'version': '16.12',
},
},
'globals': {
'Atomics': 'readonly',
'SharedArrayBuffer': 'readonly',
@@ -14,7 +19,10 @@ module.exports = {
'expect': 'readonly',
'describe': 'readonly',
'it': 'readonly',
'beforeAll': 'readonly',
'afterAll': 'readonly',
'beforeEach': 'readonly',
'afterEach': 'readonly',
'jasmine': 'readonly',
// React Native variables
@@ -24,6 +32,8 @@ module.exports = {
'browserSupportsPromises_': true,
'chrome': 'readonly',
'browser': 'readonly',
'tinymce': 'readonly',
},
'parserOptions': {
'ecmaVersion': 2018,
@@ -39,17 +49,27 @@ module.exports = {
"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,
// 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,
// "no-lonely-if": "error",
"prefer-const": ["error"],
"no-var": ["error"],
// Checks rules of Hooks
"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",
// -------------------------------
// 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"],
@@ -59,6 +79,8 @@ module.exports = {
"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,
@@ -76,10 +98,11 @@ module.exports = {
"multiline-comment-style": ["error", "separate-lines"],
"space-before-blocks": "error",
"spaced-comment": ["error", "always"],
"keyword-spacing": ["error", { "before": true, "after": true }]
"keyword-spacing": ["error", { "before": true, "after": true }],
},
"plugins": [
"react",
"@typescript-eslint",
"react-hooks"
],
};
};

View File

@@ -0,0 +1,15 @@
---
name: "\U0001F914 Feature requests and support"
about: 'For non-bug issues we recommend using the forum, where you''ll be more likely
to get an answer: https://discourse.joplinapp.org/'
title: ''
labels: ''
assignees: ''
---
If this is a feature request or a support query, please note that you'll not get an answer here.
Instead we recommend using the forum where you'll are a lot more likely to get an answer: https://discourse.joplinapp.org/
The forum is also the right place to submit a feature request so that it can be discussed by other users.

View File

@@ -1,8 +1,9 @@
---
name: "🐛 Bug Report"
name: "\U0001F41B Bug Report"
about: Report a reproducible bug or regression in Joplin.
title: ''
labels: 'bug'
labels: bug
assignees: ''
---
@@ -19,24 +20,26 @@ labels: 'bug'
## Environment
Joplin version:
Platform:
OS specifcs:
Joplin version:
Platform:
OS specifics:
<!--
Platform can be one of: macOS, Linux, Windows, Android, iOS, terminal (or a combination)
OS specifcs: e.g. OS version, Linux distribution, Android/iOS version, ...
OS specifics: e.g. OS version, Linux distribution, Android/iOS version...
-->
## Steps To Reproduce
## Steps to reproduce
1.
2.
1.
2.
3.
<!--
Issues without reproduction steps are likely to stall.
-->
Describe what you expected to happen:
## Describe what you expected to happen

View File

@@ -1,29 +0,0 @@
---
name: "🤔 Questions and Help"
about: The issue tracker is not for questions. Please ask questions on https://discourse.joplinapp.org/.
title: ''
labels: 'invalid'
---
⚠🚨⛔ The issue tracker is not for questions. ⛔🚨⚠
As it happens, support requests that are created as issues are likely to be closed. We want to make sure you are able to find the help you seek.
## Questions and Help
Please read the [documentation](https://joplinapp.org/) and [FAQ](https://joplinapp.org/faq/) first.
### https://discourse.joplinapp.org/
If you have still questions related to Joplin, please open a topic in the [forum](https://discourse.joplinapp.org/).
You can use your GitHub credentials to login to the forum.
## Links
- Documentation: https://joplinapp.org
- FAQ: https://joplinapp.org/faq/
- Forum: https://discourse.joplinapp.org
- How to enable end-to-end encryption: https://joplinapp.org/e2ee/
- API documentation: https://joplinapp.org/api/
- How to enable debug mode: https://joplinapp.org/debugging/

View File

@@ -2,14 +2,24 @@
Please prefix the title with the platform you are targetting:
Here are some examples of good titles:
- Desktop: Resolves #123: Added new setting to change font
- Mobile, Desktop: Fixes #456: Fixed config screen error
- All: Resolves #777: Made synchronisation faster
And here's an explanation of the title format:
- "Desktop" for the Windows/macOS/Linux app (Electron app)
- "Mobile" for the mobile app (or "Android" / "iOS" if the pull request only applies to one of the mobile platforms)
- "CLI" for the CLI app
If it's two platforms, separate them with commas - "Desktop, Mobile" or if it's for all platforms, prefix with "All".
If it's not related to any platform (such as a translation, change to the documentation, etc.), simply don't add a platform.
For example: "Desktop: Added new setting to change font", or "Mobile: Fixed config screen error"
Then please append the issue that you've addressed or fixed. Use "Resolves #123" for new features or improvements and "Fixes #123" for bug fixes.
PLEASE READ THE GUIDE FIRST: https://github.com/laurent22/joplin/blob/master/CONTRIBUTING.md
AND PLEASE READ THE GUIDE: https://github.com/laurent22/joplin/blob/master/CONTRIBUTING.md
-->

7
.github/stale.yml vendored
View File

@@ -1,17 +1,14 @@
# Configuration for probot-stale - https://github.com/probot/stale
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 90
daysUntilStale: 45
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- "good first issue"
- "essential"
- "essential-reviewed"
- "help wanted"
- "nice to have"
- "upstream"
- "backlog"
- "high"
# 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

48
.gitignore vendored
View File

@@ -40,7 +40,51 @@ Tools/github_oauth_token.txt
_releases
ReactNativeClient/lib/csstojs/
ReactNativeClient/lib/rnInjectedJs/
ElectronClient/app/gui/note-viewer/fonts/
ElectronClient/app/gui/note-viewer/lib.js
ElectronClient/gui/note-viewer/fonts/
ElectronClient/gui/note-viewer/lib.js
ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/supportedLocales.js
Clipper-source/
Clipper/joplin-webclipper-source.zip
joplin-webclipper-source.zip
Tools/commit_hook.txt
.vscode/*
*.map
# AUTO-GENERATED - EXCLUDED TYPESCRIPT BUILD
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/NoteBody/TinyMCE/TinyMCE.js
ElectronClient/gui/NoteEditor/NoteBody/TinyMCE/utils/useScroll.js
ElectronClient/gui/NoteEditor/NoteEditor.js
ElectronClient/gui/NoteEditor/styles/index.js
ElectronClient/gui/NoteEditor/utils/contextMenu.js
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/useFormNote.js
ElectronClient/gui/NoteEditor/utils/useMarkupToHtml.js
ElectronClient/gui/NoteEditor/utils/useMessageHandler.js
ElectronClient/gui/NoteEditor/utils/useNoteSearchBar.js
ElectronClient/gui/NoteEditor/utils/useSearchMarkers.js
ElectronClient/gui/NoteEditor/utils/useWindowCommandHandler.js
ElectronClient/gui/NoteToolbar/NoteToolbar.js
ElectronClient/gui/ResourceScreen.js
ElectronClient/gui/ShareNoteDialog.js
ReactNativeClient/lib/AsyncActionQueue.js
ReactNativeClient/lib/hooks/useImperativeHandlerDebugger.js
ReactNativeClient/lib/hooks/usePrevious.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/PluginAssetsLoader.js
ReactNativeClient/setUpQuickActions.js
# AUTO-GENERATED - EXCLUDED TYPESCRIPT BUILD

View File

@@ -16,7 +16,7 @@ matrix:
- os: osx
osx_image: xcode9.0
language: node_js
node_js: "8"
node_js: "10"
env:
- ELECTRON_CACHE=$HOME/.cache/electron
- ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder
@@ -25,7 +25,7 @@ matrix:
sudo: required
dist: trusty
language: node_js
node_js: "8"
node_js: "10"
env:
- ELECTRON_CACHE=$HOME/.cache/electron
- ELECTRON_BUILDER_CACHE=$HOME/.cache/electron-builder
@@ -50,6 +50,7 @@ before_install:
echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list
sudo apt-get update || true
sudo apt-get install -y yarn
sudo apt-get install -y gettext
fi
script:
@@ -65,8 +66,7 @@ script:
# and that would break the desktop release.
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
cd CliClient
npm install
./run_test.sh
npm run test
testResult=$?
if [ $testResult -ne 0 ]; then
exit $testResult
@@ -84,6 +84,19 @@ script:
fi
fi
# Validate translations - this is needed as some users manually
# edit .po files (and often make mistakes) instead of using a proper
# tool like poedit. Doing it for Linux only is sufficient.
if [ "$TRAVIS_PULL_REQUEST" != "false" ]; then
if [ "$TRAVIS_OS_NAME" != "osx" ]; then
node Tools/validate-translation.js
testResult=$?
if [ $testResult -ne 0 ]; then
exit $testResult
fi
fi
fi
# Find out if we should run the build or not. Electron-builder gets stuck when
# builing PRs so we disable it in this case. The Linux build should provide
# enough info if the app builds or not.
@@ -95,6 +108,5 @@ script:
fi
# Prepare the Electron app and build it
cd ElectronClient/app
rsync -aP --delete ../../ReactNativeClient/lib/ lib/
npm install && USE_HARD_LINKS=false yarn dist
cd ElectronClient
USE_HARD_LINKS=false yarn dist

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

View File

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

View File

@@ -0,0 +1,31 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
id="svg40"
version="1.1"
width="1536"
height="1536"
viewBox="0 0 1536 1536">
<metadata
id="metadata46">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<defs
id="defs44" />
<path
id="path38"
fill="#ffffff"
d="M 373.834,0 C 168.227,0 0,168.223 0,373.834 V 1162.17 C 0,1367.778 168.227,1536 373.834,1536 H 1162.17 C 1367.778,1536 1536,1367.778 1536,1162.17 V 373.834 C 1536,168.224 1367.778,0 1162.17,0 Z m 397.222,205.431 h 417.424 a 7.132,7.132 0 0 1 7.132,7.133 v 132.552 c 0,4.461 -3.619,8.073 -8.077,8.073 h -57.23 c -24.168,0 -43.768,19.338 -44.284,43.374 v 2.377 h -0.017 v 136.191 h -0.053 l -0.466,509.375 c -5.02,77.667 -39.222,149.056 -96.324,201.046 -60.28,54.834 -141.948,85.017 -229.962,85.017 -12.45,0 -25.208,-0.61 -37.907,-1.785 -92.157,-8.682 -181.494,-48.601 -251.662,-112.438 -71.99,-65.517 -117.147,-150.03 -127.164,-238 -11.226,-98.763 23.42,-192.783 95.045,-257.937 81.99,-74.637 198.185,-101.768 316.613,-75.704 5.574,1.227 9.55,6.282 9.55,11.997 v 199.52 c -0.199,2.625 -1.481,6.599 -8.183,2.896 -0.663,-0.365 -1.194,-0.511 -1.653,-0.531 -21.987,-10.587 -45.159,-17.57 -68.559,-19.916 -0.38,-0.04 -0.757,-0.124 -1.138,-0.163 -0.537,-0.048 -1.034,-0.033 -1.556,-0.075 -4.13,-0.354 -8.183,-0.517 -12.203,-0.58 -0.87,-0.011 -1.771,-0.127 -2.641,-0.127 -0.486,0 -0.951,0.05 -1.437,0.057 -1.464,0.011 -2.886,0.115 -4.33,0.163 -2.76,0.102 -5.497,0.211 -8.182,0.448 -0.273,0.024 -0.547,0.07 -0.835,0.097 -25.509,2.4 -47.864,11.104 -65.012,25.47 -0.954,0.802 -1.974,1.53 -2.9,2.36 a 1.34,1.34 0 0 1 -0.168,0.146 c -23.96,21.8 -34.881,53.872 -30.726,90.316 4.62,40.737 26.94,81.156 62.841,113.823 35.908,32.67 80.335,52.977 125.113,57.186 35.118,3.36 66.547,-3.919 89.899,-20.461 a 97.255,97.255 0 0 0 9.365,-7.501 c 2.925,-2.661 5.569,-5.5 8.086,-8.416 0.3,-0.348 0.672,-0.673 0.975,-1.024 8.253,-9.864 14.222,-21.067 17.996,-33.148 0.639,-2.034 1.051,-4.148 1.564,-6.227 0.381,-1.563 0.81,-3.106 1.112,-4.693 0.555,-2.784 0.923,-5.632 1.253,-8.49 0.086,-0.709 0.183,-1.414 0.237,-2.128 0.492,-4.893 0.693,-9.858 0.55,-14.91 h 0.013 V 393.623 c -2.01,-22.626 -20.78,-40.434 -43.928,-40.434 h -57.23 a 8.071,8.071 0 0 1 -8.077,-8.073 V 212.564 a 7.132,7.132 0 0 1 7.136,-7.133 z" />
</svg>

After

Width:  |  Height:  |  Size: 2.7 KiB

109
Assets/SmallTile.svg Normal file
View File

@@ -0,0 +1,109 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
sodipodi:docname="disegno.svg"
inkscape:version="1.0rc1 (09960d6, 2020-04-09)"
id="svg8"
version="1.1"
viewBox="0 0 70 70"
height="70"
width="70">
<defs
id="defs2" />
<sodipodi:namedview
inkscape:window-maximized="0"
inkscape:window-y="25"
inkscape:window-x="0"
inkscape:window-height="775"
inkscape:window-width="1280"
inkscape:guide-bbox="true"
showguides="true"
inkscape:pagecheckerboard="true"
inkscape:showpageshadow="false"
showborder="true"
showgrid="false"
inkscape:document-rotation="0"
inkscape:current-layer="layer1"
inkscape:document-units="px"
inkscape:cy="39.253064"
inkscape:cx="25.246811"
inkscape:zoom="5.8562241"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
units="px">
<sodipodi:guide
inkscape:color="rgb(0,0,255)"
inkscape:locked="false"
inkscape:label=""
id="guide1932"
orientation="-1,0"
position="12,70" />
<sodipodi:guide
inkscape:color="rgb(0,0,255)"
inkscape:locked="false"
inkscape:label=""
id="guide1934"
orientation="-1,0"
position="58,70" />
<sodipodi:guide
inkscape:color="rgb(0,0,255)"
inkscape:locked="false"
inkscape:label=""
id="guide1936"
orientation="0,1"
position="0,58" />
<sodipodi:guide
inkscape:color="rgb(0,0,255)"
inkscape:locked="false"
inkscape:label=""
id="guide1938"
orientation="0,1"
position="0,12" />
<sodipodi:guide
inkscape:color="rgb(0,0,255)"
inkscape:locked="false"
inkscape:label=""
id="guide2021"
orientation="-1,0"
position="35,70" />
</sodipodi:namedview>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Livello 1">
<path
inkscape:transform-center-y="23.027731"
inkscape:transform-center-x="-17.510929"
id="path30"
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.133334;stop-opacity:1"
d="M 52.1731,12 H 35.107236 c -0.161294,0 -0.291666,0.130494 -0.291666,0.291543 v 5.419239 c 0,0.182381 0.147678,0.330176 0.330178,0.330176 h 2.339824 c 0.94638,0 1.713811,0.727936 1.795988,1.652976 v 3.715485 2.069989 19.715998 0.139708 h -6.44e-4 c 0.0058,0.206545 -0.0023,0.409658 -0.02244,0.609702 -0.0023,0.02918 -0.0062,0.05801 -0.0097,0.08697 -0.01349,0.116897 -0.02846,0.233161 -0.05114,0.346981 -0.01243,0.06489 -0.02993,0.128044 -0.0455,0.191949 -0.02097,0.08499 -0.0379,0.171342 -0.06401,0.254505 -0.1543,0.493916 -0.39825,0.95202 -0.735666,1.355297 -0.01243,0.01438 -0.02771,0.02761 -0.03998,0.04182 -0.102908,0.119222 -0.210962,0.235367 -0.330548,0.34416 -0.120695,0.109778 -0.248492,0.211819 -0.382795,0.306628 -0.954719,0.676302 -2.23974,0.973854 -3.6755,0.836485 -1.830697,-0.172088 -3.646921,-1.002309 -5.114939,-2.337984 -1.467772,-1.335554 -2.380422,-2.988039 -2.569305,-4.653525 -0.169868,-1.489971 0.276578,-2.801116 1.256197,-3.692426 0.0027,-0.0019 0.005,-0.0037 0.0069,-0.0058 0.0379,-0.03398 0.0796,-0.06379 0.1186,-0.09654 0.701076,-0.58738 1.614951,-0.943313 2.657858,-1.041435 0.01172,-0.0011 0.02306,-0.003 0.03423,-0.0039 0.109777,-0.0097 0.221631,-0.01402 0.334471,-0.01827 0.05899,-0.0019 0.117251,-0.0062 0.177111,-0.0065 0.01986,-2.76e-4 0.03875,-0.0023 0.05864,-0.0023 0.03557,0 0.07248,0.0046 0.108055,0.0051 0.164347,0.0027 0.329933,0.0094 0.498825,0.02379 0.02134,0.0017 0.0417,9.78e-4 0.06365,0.003 0.01562,0.0016 0.03103,0.005 0.04662,0.0065 0.956682,0.09592 1.90392,0.381568 2.802834,0.814406 0.01876,8.39e-4 0.04047,0.0065 0.06759,0.02159 0.274004,0.151353 0.326498,-0.01101 0.334593,-0.118351 v -4.688237 -3.46883 c 0,-0.233653 -0.162519,-0.440321 -0.3904,-0.490484 -4.841795,-1.065597 -9.592336,0.04355 -12.944402,3.09499 -2.928307,2.663747 -4.344811,6.507647 -3.885849,10.545461 0.409535,3.596512 2.255685,7.05173 5.198956,9.730318 2.868698,2.609903 6.521262,4.242028 10.288996,4.596993 0.519184,0.04805 1.040822,0.07283 1.549826,0.07283 3.598351,0 6.937296,-1.233851 9.401735,-3.475688 2.33455,-2.125552 3.732902,-5.044294 3.938097,-8.219619 l 0.01901,-20.825138 h 0.0021 V 19.91155 h 7.7e-4 v -0.09714 c 0.02109,-0.982682 0.822378,-1.773296 1.81046,-1.773296 h 2.339824 c 0.182259,0 0.330177,-0.147802 0.330177,-0.330177 v -5.419299 c -2.1e-5,-0.161046 -0.130406,-0.291543 -0.291686,-0.291543"
inkscape:connector-curvature="0" />
</g>
<inkscape:templateinfo>
<inkscape:name>SmallTile</inkscape:name>
<inkscape:shortdesc>Small tile</inkscape:shortdesc>
<inkscape:date>2020-04-15</inkscape:date>
</inkscape:templateinfo>
</svg>

After

Width:  |  Height:  |  Size: 5.4 KiB

View File

@@ -0,0 +1,109 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
sodipodi:docname="disegno-1.svg"
inkscape:version="1.0rc1 (09960d6, 2020-04-09)"
id="svg8"
version="1.1"
viewBox="0 0 150 150"
height="150"
width="150">
<defs
id="defs2" />
<sodipodi:namedview
inkscape:window-maximized="0"
inkscape:window-y="25"
inkscape:window-x="0"
inkscape:window-height="775"
inkscape:window-width="1280"
inkscape:guide-bbox="true"
showguides="true"
inkscape:pagecheckerboard="true"
inkscape:showpageshadow="false"
showborder="true"
showgrid="false"
inkscape:document-rotation="0"
inkscape:current-layer="layer1"
inkscape:document-units="px"
inkscape:cy="79.075594"
inkscape:cx="91.835957"
inkscape:zoom="3.1892627"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
units="px">
<sodipodi:guide
inkscape:color="rgb(0,0,255)"
inkscape:locked="false"
inkscape:label=""
id="guide1919"
orientation="0,1"
position="0,115" />
<sodipodi:guide
inkscape:color="rgb(0,0,255)"
inkscape:locked="false"
inkscape:label=""
id="guide1921"
orientation="-1,0"
position="25,150" />
<sodipodi:guide
inkscape:color="rgb(0,0,255)"
inkscape:locked="false"
inkscape:label=""
id="guide1923"
orientation="-1,0"
position="125,150" />
<sodipodi:guide
inkscape:color="rgb(0,0,255)"
inkscape:locked="false"
inkscape:label=""
id="guide1925"
orientation="0,1"
position="0,35" />
<sodipodi:guide
inkscape:color="rgb(0,0,255)"
inkscape:locked="false"
inkscape:label=""
id="guide2879"
orientation="-1,0"
position="75,150" />
</sodipodi:namedview>
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Livello 1">
<path
inkscape:connector-curvature="0"
d="M 105.30102,35.000001 H 75.621261 c -0.280511,0 -0.507245,0.226946 -0.507245,0.507031 v 9.424762 c 0,0.317185 0.256831,0.574219 0.574223,0.574219 h 4.069258 c 1.645878,0 2.980541,1.265976 3.123457,2.874741 v 6.461712 3.599981 34.288687 0.24297 h -0.0011 c 0.01009,0.359209 -0.004,0.712449 -0.03903,1.060352 -0.004,0.05075 -0.01078,0.100887 -0.01687,0.151252 -0.02346,0.203299 -0.0495,0.405497 -0.08894,0.603445 -0.02162,0.112852 -0.05205,0.222685 -0.07913,0.333824 -0.03647,0.147809 -0.06591,0.297986 -0.111322,0.442618 -0.268348,0.858984 -0.692608,1.655686 -1.279419,2.357038 -0.02162,0.02501 -0.04819,0.04802 -0.06953,0.07273 -0.178971,0.207343 -0.366891,0.409334 -0.574866,0.598539 -0.209904,0.190918 -0.43216,0.368381 -0.66573,0.533266 -1.660381,1.176182 -3.8952,1.693662 -6.392174,1.454752 -3.18382,-0.29928 -6.34247,-1.743142 -8.895544,-4.066054 -2.552647,-2.322703 -4.139864,-5.196589 -4.468356,-8.093086 -0.295423,-2.591254 0.481005,-4.871506 2.18469,-6.42161 0.0047,-0.0033 0.0087,-0.0064 0.012,-0.01009 0.06591,-0.05909 0.138435,-0.110939 0.206261,-0.167895 1.219262,-1.021531 2.80861,-1.640544 4.622361,-1.811191 0.02038,-0.0019 0.0401,-0.0052 0.05953,-0.0068 0.190917,-0.01687 0.385445,-0.02438 0.581689,-0.03177 0.102591,-0.0033 0.203915,-0.01078 0.308019,-0.0113 0.03454,-4.8e-4 0.06739,-0.004 0.101982,-0.004 0.06186,0 0.126053,0.008 0.187922,0.0089 0.285821,0.0047 0.573797,0.01635 0.867522,0.04137 0.03711,0.003 0.07252,0.0017 0.110695,0.0052 0.02717,0.0028 0.05397,0.0087 0.08108,0.0113 1.663794,0.166817 3.311164,0.663596 4.874493,1.416358 0.03263,0.0015 0.07038,0.0113 0.117548,0.03755 0.476528,0.263222 0.567822,-0.01915 0.581901,-0.205828 V 73.11952 67.086773 c 0,-0.406353 -0.282642,-0.765776 -0.678957,-0.853016 -8.420512,-1.853212 -16.682323,0.07574 -22.512002,5.382591 -5.092707,4.632602 -7.556192,11.317645 -6.757997,18.339929 0.712234,6.254803 3.92293,12.263883 9.041661,16.922293 4.989039,4.53896 11.341325,7.37744 17.893905,7.99477 0.902929,0.0836 1.810125,0.12666 2.69535,0.12666 6.258001,0 12.064861,-2.14583 16.350841,-6.04467 4.060086,-3.69661 6.492006,-8.77269 6.848866,-14.294994 l 0.0331,-36.217627 h 0.004 v -9.683497 h 10e-4 v -0.16894 c 0.0367,-1.709012 1.43023,-3.083992 3.148627,-3.083992 h 4.06926 c 0.31697,0 0.57422,-0.257047 0.57422,-0.574221 v -9.424867 c -4e-5,-0.28008 -0.22679,-0.507031 -0.50728,-0.507031"
style="opacity:1;fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:0.133334;stop-opacity:1"
id="path30"
inkscape:transform-center-x="-30.453831"
inkscape:transform-center-y="40.048222" />
</g>
<inkscape:templateinfo>
<inkscape:name>Square150x150Logo</inkscape:name>
<inkscape:shortdesc>Medium tile</inkscape:shortdesc>
<inkscape:date>2020-04-15</inkscape:date>
</inkscape:templateinfo>
</svg>

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 820 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

After

Width:  |  Height:  |  Size: 64 KiB

124
BUILD.md
View File

@@ -1,81 +1,87 @@
[![Travis Build Status](https://travis-ci.org/laurent22/joplin.svg?branch=master)](https://travis-ci.org/laurent22/joplin) [![Appveyor Build Status](https://ci.appveyor.com/api/projects/status/github/laurent22/joplin?branch=master&passingText=master%20-%20OK&svg=true)](https://ci.appveyor.com/project/laurent22/joplin)
# General information
# Building the applications
- All the applications share the same library, which, for historical reasons, is in ReactNativeClient/lib. This library is copied to the relevant directories when building each app.
- In general, most of the backend (anything to do with the database, synchronisation, data import or export, etc.) is shared across all the apps, so when making a change please consider how it will affect all the apps.
Note that all the applications share the same library, which, for historical reasons, is in `ReactNativeClient/lib`. This library is copied to the relevant directories when building each app.
## macOS dependencies
brew install yarn node
echo 'export PATH="/usr/local/opt/gettext/bin:$PATH"' >> ~/.bash_profile
source ~/.bash_profile
## Linux and Windows (WSL) dependencies
## Required dependencies
- Install yarn - https://yarnpkg.com/lang/en/docs/install/
- Install node v8.x (check with `node --version`) - https://nodejs.org/en/
- If you get a node-gyp related error you might need to manually install it: `npm install -g node-gyp`
- Install node - https://nodejs.org/en/
# Building the tools
## Building
Before building any of the applications, you need to build the tools and pre-commit hooks:
Before doing anything else, from the root of the project, run:
```
npm install && cd Tools && npm install
```
npm install
# Building the Electron application
Then you can test the various applications:
```
cd ElectronClient/app
rsync --delete -a ../../ReactNativeClient/lib/ lib/
npm install
yarn dist
```
## Testing the desktop application
If there's an error `while loading shared libraries: libgconf-2.so.4: cannot open shared object file: No such file or directory`, run `sudo apt-get install libgconf-2-4`
cd ElectronClient
npm start
If you get a node-gyp related error you might need to manually install it: `npm install -g node-gyp`.
## Testing the Terminal application
If you get the error `libtool: unrecognized option '-static'`, follow the instructions [in this post](https://stackoverflow.com/a/38552393/561309) to use the correct libtool version.
cd CliClient
npm start
That will create the executable file in the `dist` directory.
From `/ElectronClient` you can also run `run.sh` to run the app for testing.
## Building Electron application on Windows
```
cd Tools
npm install
cd ..\ElectronClient\app
xcopy /C /I /H /R /Y /S ..\..\ReactNativeClient\lib lib
npm install
yarn dist
```
If node-gyp does not works (MSBUILD: error MSB3428: Could not load the Visual C++ component "VCBuild.exe"), you might need to install the `windows-build-tools` using `npm install --global windows-build-tools`.
If `yarn dist` fails, it may need administrative rights.
If you get an `error MSB8020: The build tools for v140 cannot be found.` try to run with a different toolset version, eg `npm install --toolset=v141` (See [here](https://github.com/mapbox/node-sqlite3/issues/1124) for more info).
The [building\_win32\_tips on this page](./readme/building_win32_tips.md) might be helpful.
# Building the Mobile application
## Testing the Mobile application
First you need to setup React Native to build projects with native code. For this, follow the instructions on the [Get Started](https://facebook.github.io/react-native/docs/getting-started.html) tutorial, in the "React Native CLI Quickstart" tab.
Then, from `/ReactNativeClient`, run `npm install`, then `react-native run-ios` or `react-native run-android`.
Then:
# Building the Terminal application
cd ReactNativeClient
npm run start-android
# Or: npm run start-ios
```
cd CliClient
npm install
./build.sh
rsync --delete -aP ../ReactNativeClient/locales/ build/locales/
To run the iOS application, it might be easier to open the file `ios/Joplin.xcworkspace` on XCode and run the app from there.
Normally the bundler should start automatically with the application. If it doesn't, run `npm start`.
## Building the clipper
cd Clipper/popup
npm install
npm run watch # To watch for changes
To test the extension please refer to the relevant pages for each browser: [Firefox](https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Your_first_WebExtension#Trying_it_out) / [Chrome](https://developer.chrome.com/extensions/faq#faq-dev-01). Please note that the extension in dev mode will only connect to a dev instance of the desktop app (and vice-versa).
## Watching files
To make changes to the application, you'll need to rebuild any TypeScript file you've changed, and rebuild the lib. The simplest way to do all this is to watch for changes from the root of the project. Simply run this command, and it should take care of the rest:
npm run watch
Running `npm run build` would have the same effect, but without watching.
## Running an application with additional parameters
You can specify additional parameters when running the desktop or CLI application. To do so, add `--` to the `npm start` command, followed by your flags. For example:
npm start -- --profile ~/MyTestProfile
## TypeScript
Most of the application is written in JavaScript, however new classes and files should generally be written in [TypeScript](https://www.typescriptlang.org/). All TypeScript files are generated next to the .ts or .tsx file. So for example, if there's a file "lib/MyClass.ts", there will be a generated "lib/MyClass.js" next to it. It is implemented that way as it requires minimal changes to integrate TypeScript in the existing JavaScript code base.
## Hot reload
If you'd like to auto-reload the desktop app on changes rather than having to quit and restart it manually each time, you can use [watchman-make](https://facebook.github.io/watchman/docs/watchman-make.html):
```sh
cd ElectronClient
watchman-make -p '**/*.js' '**/*.jsx' --run "npm start"
```
Run `run.sh` to start the application for testing.
It still requires you to quit the application each time you want it to rebuild, but at least you don't have to re-run `"npm start"` each time. Here's what the workflow loop looks like in practice:
1. Edit and save files in your text editor.
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).
# 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

@@ -7,28 +7,27 @@ The [Joplin Forum](https://discourse.joplinapp.org/) is the community driven pla
File bugs in the [Github Issue Tracker](https://github.com/laurent22/joplin/issues?utf8=%E2%9C%93&q=is%3Aissue). Please follow these guidelines:
- Search existing issues first, make sure yours hasn't already been reported.
- Please follow the template.
- Consider [enabling debug mode](https://joplinapp.org/debugging/) so that you can provide as much details as possible when reporting the issue.
- Stay on topic, but describe the issue in detail so that others can reproduce it.
- Stay on topic, but describe the issue in detail so that others can **reproduce** it.
- **Provide a screenshot** if possible. A screenshot showing the problem is often more useful than a paragraph describing it.
- For web clipper bugs, **please provide the URL causing the issue**. Sometimes the clipper works in one page but not in another so it is important to know what URL has a problem.
# Feature requests
Please check that your request has not already been posted in the [Github Issue Tracker](https://github.com/laurent22/joplin/issues?utf8=%E2%9C%93&q=is%3Aissue). If it has, **up-voting the issue** increases the chances it'll be noticed and implemented in the future. "+1" comments are not tracked.
Feature requests **must be opened and discussed on the [forum](https://discourse.joplinapp.org/c/features)**. After they have been accepted, they can be added to the GitHub tracker.
As a general rule, suggestions to *improve Joplin* should be posted first in the [Joplin Forum](https://discourse.joplinapp.org/) for discussion.
Please check that your request has not already been posted on the forum or the [Github Issue Tracker](https://github.com/laurent22/joplin/issues?utf8=%E2%9C%93&q=is%3Aissue). If it has, **up-voting the issue or topic** increases the chances it'll be noticed and implemented in the future. "+1" comments are not tracked.
Avoid listing multiple requests in one report in the [Github Issue Tracker](https://github.com/laurent22/joplin/issues?utf8=%E2%9C%93&q=is%3Aissue). One issue per request makes it easier to track and discuss it.
Avoid listing multiple requests in one topic. One topic per request makes it easier to track and discuss it.
Finally, when submitting a pull request, don't forget to [test your code](#unit-tests).
# Contribute to the project
## Contributing to Joplin's translation
# Contributing to Joplin's translation
Joplin is available in multiple languages thanks to the help of its users. You can help translate Joplin to your language or keep it up to date. Please read the documentation about [Localisation](https://joplinapp.org/#localisation).
## Contributing to Joplin's code
# Contributing to Joplin's code
If you want to start contributing to the project's code, please follow these guidelines before creating a pull request:
@@ -36,6 +35,7 @@ If you want to start contributing to the project's code, please follow these gui
- A good way to easily start contributing is to pick and work on a [good first issue](https://github.com/laurent22/joplin/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22). We try to make these issues as clear as possible and provide basic info on how the code should be changed, and if something is unclear feel free to ask for more information on the issue.
- 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.
Building the apps is relatively easy - please [see the build instructions](https://github.com/laurent22/joplin/blob/master/BUILD.md) for more details.
@@ -43,32 +43,49 @@ Building the apps is relatively easy - please [see the build instructions](https
Coding style is enforced by a pre-commit hook that runs eslint. This hook is installed whenever running `npm install` on any of the application directory. If for some reason the pre-commit hook didn't get installed, you can manually install it by running `npm install` at the root of the repository.
## Unit tests
For new React components, please use [React Hooks](https://reactjs.org/docs/hooks-intro.html). For new code in general, please use TypeScript (unless you are modifying a file that was originally in JavaScript).
When submitting a pull request for a new feature or bug fix, please add unit tests for your code. Unit testing GUI changes is not always possible so it is not required, but any change in a file under /lib for example should be unit tested.
For changes made to the Desktop client that affect the user interface, refer to `ElectronClient/app/theme.js` for all styling information. The goal is to create a consistent user interface to allow for easy navigation of Joplin's various features and improve the overall user experience.
## Automated tests
When submitting a pull request for a new feature or bug fixes, please add automated tests for your code whenever possible. Tests in Joplin are divided in **unit tests** and **feature tests**.
* **Unit tests** are used to tests models, services or utility classes - they are relatively low level. Unit tests should be prefixed with the type of class that is being tested - for example "models_Folder" or "services_SearchEngine".
* **Feature tests** on the other hand are to test higher level functionalities such as interactions with the GUI and how they affect the underlying model. Often these tests would dispatch Redux actions, and inspect how the application state has been changed. The feature tests should be prefixed with "feature_", for example "feature_TagList". There's a good explanation on what qualifies as a feature test in [this post](https://github.com/laurent22/joplin/pull/2819#issuecomment-603502230).
The tests are under CliClient/tests. To get them running, you first need to build the CLI app:
cd CliClient
npm i
To run the test units, you must have an instance of the cli app running. In a first window navigate into `CliClient` and run:
```sh
./run.sh
npm install
cd CliClient
```
> If you get an error like `Error: Cannot find module '../locales/index.js'`, this means you must (a) rebuild translations or (b) take > them from one of the other apps. To do option b, you can run the following command to copy them from the `ReactNativeClient` directory:>
>
> ```sh
> cd .. # Return to the root of the project
> rsync -aP ./ReactNativeClient/locales/ ./CliClient/build/locales/
> ```
To run all the test units:
Then run the tests in a second window. To run all the test units:
./run_test.sh
```sh
npm test
```
To run just one particular file:
./run_test.sh markdownUtils # Don't add the .js extension
```sh
npm test -- --filter=markdownUtils # Don't add the .js extension
```
To filter tests. For example, to run all the test units that contain "should handle conflict" in their description:
```sh
npm test -- --filter="should handle conflict"
```
## About abandoned pull requests
It happens that a pull request is started but not finished and despite our attempts to contact the contributor, we don't hear from them again.
In that case we will not merge the pull request, even if only small changes are missing. Our policy is simply to close the pull request. Why? Because an unfinished pull request essentially means giving us work and moving on. We would rather not encourage this behaviour.
Also, please note that since we have spent time reviewing the pull request and proposing solutions, we reserve the right to re-use that knowledge to create a new pull request, potentially based on your changes.
We'd much prefer that you complete the pull request though, so we'll be sure to ping you a few times before that!

View File

@@ -1,4 +1,3 @@
build/
node_modules/
app/src
tests-build/
@@ -20,4 +19,5 @@ tests/sync
out.txt
linkToLocal.sh
yarn-error.log
tests/support/dropbox-auth.txt
tests/support/dropbox-auth.txt
build/

View File

@@ -5,6 +5,7 @@ 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 { splitCommandString } = require('lib/string-utils.js');
const { reg } = require('lib/registry.js');
@@ -134,7 +135,7 @@ class AppGui {
const item = folderList.currentItem;
if (item === '-') {
let newIndex = event.currentIndex + (event.previousIndex < event.currentIndex ? +1 : -1);
const newIndex = event.currentIndex + (event.previousIndex < event.currentIndex ? +1 : -1);
let nextItem = folderList.itemAt(newIndex);
if (!nextItem) nextItem = folderList.itemAt(event.previousIndex);
@@ -186,7 +187,7 @@ class AppGui {
borderRightWidth: 1,
};
noteList.on('currentItemChange', async () => {
let note = noteList.currentItem;
const note = noteList.currentItem;
this.store_.dispatch({
type: 'NOTE_SELECT',
id: note ? note.id : null,
@@ -243,9 +244,9 @@ class AppGui {
const hLayout = new HLayoutWidget();
hLayout.name = 'hLayout';
hLayout.addChild(folderList, { type: 'stretch', factor: 1 });
hLayout.addChild(noteList, { type: 'stretch', factor: 1 });
hLayout.addChild(noteLayout, { type: 'stretch', factor: 2 });
hLayout.addChild(folderList, { type: 'stretch', factor: Setting.value('layout.folderList.factor') });
hLayout.addChild(noteList, { type: 'stretch', factor: Setting.value('layout.noteList.factor') });
hLayout.addChild(noteLayout, { type: 'stretch', factor: Setting.value('layout.note.factor') });
const vLayout = new VLayoutWidget();
vLayout.name = 'vLayout';
@@ -338,7 +339,7 @@ class AppGui {
if (consoleWidget.isMaximized__ === doMaximize) return;
let constraints = {
const constraints = {
type: 'stretch',
factor: !doMaximize ? 1 : 4,
};
@@ -415,10 +416,10 @@ class AppGui {
async handleModelAction(action) {
this.logger().info('Action:', action);
let state = Object.assign({}, defaultState);
const state = Object.assign({}, defaultState);
state.notes = this.widget('noteList').items;
let newState = reducer(state, action);
const newState = reducer(state, action);
if (newState !== state) {
this.widget('noteList').items = newState.notes;
@@ -485,9 +486,9 @@ class AppGui {
// this.logger().debug('Got command: ' + cmd);
try {
let note = this.widget('noteList').currentItem;
let folder = this.widget('folderList').currentItem;
let args = splitCommandString(cmd);
const note = this.widget('noteList').currentItem;
const folder = this.widget('folderList').currentItem;
const args = splitCommandString(cmd);
for (let i = 0; i < args.length; i++) {
if (args[i] == '$n') {
@@ -548,7 +549,7 @@ class AppGui {
stdout(text) {
if (text === null || text === undefined) return;
let lines = text.split('\n');
const lines = text.split('\n');
for (let i = 0; i < lines.length; i++) {
const v = typeof lines[i] === 'object' ? JSON.stringify(lines[i]) : lines[i];
this.widget('console').addLine(v);
@@ -626,7 +627,7 @@ class AppGui {
if (link.type === 'item') {
const itemId = link.id;
let item = await BaseItem.loadItemById(itemId);
const item = await BaseItem.loadItemById(itemId);
if (!item) throw new Error(`No item with ID ${itemId}`); // Should be nearly impossible
if (item.type_ === BaseModel.TYPE_RESOURCE) {
@@ -750,7 +751,7 @@ class AppGui {
// -------------------------------------------------------------------------
const shortcutKey = this.currentShortcutKeys_.join('');
let keymapItem = this.keymapItemByKey(shortcutKey);
const keymapItem = this.keymapItemByKey(shortcutKey);
// If this command is an alias to another command, resolve to the actual command
@@ -766,7 +767,7 @@ class AppGui {
if (keymapItem.type === 'function') {
this.processFunctionCommand(keymapItem.command);
} else if (keymapItem.type === 'prompt') {
let promptOptions = {};
const promptOptions = {};
if ('cursorPosition' in keymapItem) promptOptions.cursorPosition = keymapItem.cursorPosition;
const commandString = await statusBar.prompt(keymapItem.command ? keymapItem.command : '', null, promptOptions);
this.addCommandToConsole(commandString);

View File

@@ -47,7 +47,7 @@ class Application extends BaseApplication {
}
async loadItem(type, pattern, options = null) {
let output = await this.loadItems(type, pattern, options);
const output = await this.loadItems(type, pattern, options);
if (output.length > 1) {
// output.sort((a, b) => { return a.user_updated_time < b.user_updated_time ? +1 : -1; });
@@ -144,7 +144,7 @@ class Application extends BaseApplication {
if (options.type === 'boolean') {
if (answer === null) return false; // Pressed ESCAPE
if (!answer) answer = options.answers[0];
let positiveIndex = options.booleanAnswerDefault == 'y' ? 0 : 1;
const positiveIndex = options.booleanAnswerDefault == 'y' ? 0 : 1;
return answer.toLowerCase() === options.answers[positiveIndex].toLowerCase();
} else {
return answer;
@@ -181,7 +181,7 @@ class Application extends BaseApplication {
const ext = fileExtension(path);
if (ext != 'js') return;
let CommandClass = require(`./${path}`);
const CommandClass = require(`./${path}`);
let cmd = new CommandClass();
if (!cmd.enabled()) return;
cmd = this.setupCommand(cmd);
@@ -192,8 +192,8 @@ class Application extends BaseApplication {
}
if (uiType !== null) {
let temp = [];
for (let n in this.commands_) {
const temp = [];
for (const n in this.commands_) {
if (!this.commands_.hasOwnProperty(n)) continue;
const c = this.commands_[n];
if (!c.supportsUi(uiType)) continue;
@@ -207,8 +207,8 @@ class Application extends BaseApplication {
async commandNames() {
const metadata = await this.commandMetadata();
let output = [];
for (let n in metadata) {
const output = [];
for (const n in metadata) {
if (!metadata.hasOwnProperty(n)) continue;
output.push(n);
}
@@ -227,7 +227,7 @@ class Application extends BaseApplication {
const commands = this.commands();
output = {};
for (let n in commands) {
for (const n in commands) {
if (!commands.hasOwnProperty(n)) continue;
const cmd = commands[n];
output[n] = cmd.metadata();
@@ -251,7 +251,7 @@ class Application extends BaseApplication {
CommandClass = require(`${__dirname}/command-${name}.js`);
} catch (error) {
if (error.message && error.message.indexOf('Cannot find module') >= 0) {
let e = new Error(_('No such command: %s', name));
const e = new Error(_('No such command: %s', name));
e.type = 'notFound';
throw e;
} else {
@@ -362,7 +362,7 @@ class Application extends BaseApplication {
}
const output = [];
for (let n in itemsByCommand) {
for (const n in itemsByCommand) {
if (!itemsByCommand.hasOwnProperty(n)) continue;
output.push(itemsByCommand[n]);
}

View File

@@ -1,20 +1,20 @@
var { app } = require('./app.js');
var Note = require('lib/models/Note.js');
var Folder = require('lib/models/Folder.js');
var Tag = require('lib/models/Tag.js');
var { cliUtils } = require('./cli-utils.js');
var yargParser = require('yargs-parser');
var fs = require('fs-extra');
const { app } = require('./app.js');
const Note = require('lib/models/Note.js');
const Folder = require('lib/models/Folder.js');
const Tag = require('lib/models/Tag.js');
const { cliUtils } = require('./cli-utils.js');
const yargParser = require('yargs-parser');
const fs = require('fs-extra');
async function handleAutocompletionPromise(line) {
// Auto-complete the command name
const names = await app().commandNames();
let words = getArguments(line);
const words = getArguments(line);
// If there is only one word and it is not already a command name then you
// should look for commands it could be
if (words.length == 1) {
if (names.indexOf(words[0]) === -1) {
let x = names.filter(n => n.indexOf(words[0]) === 0);
const x = names.filter(n => n.indexOf(words[0]) === 0);
if (x.length === 1) {
return `${x[0]} `;
}
@@ -36,8 +36,8 @@ async function handleAutocompletionPromise(line) {
}
// complete an option
let next = words.length > 1 ? words[words.length - 1] : '';
let l = [];
const next = words.length > 1 ? words[words.length - 1] : '';
const l = [];
if (next[0] === '-') {
for (let i = 0; i < metadata.options.length; i++) {
const options = metadata.options[i][0].split(' ');
@@ -60,7 +60,7 @@ async function handleAutocompletionPromise(line) {
if (l.length === 0) {
return line;
}
let ret = l.map(a => toCommandLine(a));
const ret = l.map(a => toCommandLine(a));
ret.prefix = `${toCommandLine(words.slice(0, -1))} `;
return ret;
}
@@ -69,7 +69,7 @@ async function handleAutocompletionPromise(line) {
// words that don't start with a - less one for the command name
const positionalArgs = words.filter(a => a.indexOf('-') !== 0).length - 1;
let cmdUsage = yargParser(metadata.usage)['_'];
const cmdUsage = yargParser(metadata.usage)['_'];
cmdUsage.splice(0, 1);
if (cmdUsage.length >= positionalArgs) {
@@ -95,29 +95,29 @@ async function handleAutocompletionPromise(line) {
}
if (argName == 'tag') {
let tags = await Tag.search({ titlePattern: `${next}*` });
const tags = await Tag.search({ titlePattern: `${next}*` });
l.push(...tags.map(n => n.title));
}
if (argName == 'file') {
let files = await fs.readdir('.');
const files = await fs.readdir('.');
l.push(...files);
}
if (argName == 'tag-command') {
let c = filterList(['add', 'remove', 'list', 'notetags'], next);
const c = filterList(['add', 'remove', 'list', 'notetags'], next);
l.push(...c);
}
if (argName == 'todo-command') {
let c = filterList(['toggle', 'clear'], next);
const c = filterList(['toggle', 'clear'], next);
l.push(...c);
}
}
if (l.length === 1) {
return toCommandLine([...words.slice(0, -1), l[0]]);
} else if (l.length > 1) {
let ret = l.map(a => toCommandLine(a));
const ret = l.map(a => toCommandLine(a));
ret.prefix = `${toCommandLine(words.slice(0, -1))} `;
return ret;
}
@@ -155,7 +155,7 @@ function getArguments(line) {
let inSingleQuotes = false;
let inDoubleQuotes = false;
let currentWord = '';
let parsed = [];
const parsed = [];
for (let i = 0; i < line.length; i++) {
if (line[i] === '"') {
if (inDoubleQuotes) {
@@ -192,7 +192,7 @@ function getArguments(line) {
return parsed;
}
function filterList(list, next) {
let output = [];
const output = [];
for (let i = 0; i < list.length; i++) {
if (list[i].indexOf(next) !== 0) continue;
output.push(list[i]);

View File

@@ -50,7 +50,7 @@ class BaseCommand {
async cancel() {}
name() {
let r = this.usage().split(' ');
const r = this.usage().split(' ');
return r[0];
}

View File

@@ -15,11 +15,11 @@ function wrap(text, indent) {
}
function renderOptions(options) {
let output = [];
const output = [];
const optionColWidth = getOptionColWidth(options);
for (let i = 0; i < options.length; i++) {
let option = options[i];
const option = options[i];
const flag = option[0];
const indent = INDENT + INDENT + ' '.repeat(optionColWidth + 2);
@@ -33,7 +33,7 @@ function renderOptions(options) {
}
function renderCommand(cmd) {
let output = [];
const output = [];
output.push(INDENT + cmd.usage());
output.push('');
output.push(wrap(cmd.description(), INDENT + INDENT));
@@ -48,14 +48,14 @@ function renderCommand(cmd) {
}
function getCommands() {
let output = [];
const output = [];
fs.readdirSync(__dirname).forEach(path => {
if (path.indexOf('command-') !== 0) return;
const ext = fileExtension(path);
if (ext != 'js') return;
let CommandClass = require(`./${path}`);
let cmd = new CommandClass();
const CommandClass = require(`./${path}`);
const cmd = new CommandClass();
if (!cmd.enabled()) return;
if (cmd.hidden()) return;
output.push(cmd);
@@ -73,7 +73,7 @@ function getOptionColWidth(options) {
}
function getHeader() {
let output = [];
const output = [];
output.push('NAME');
output.push('');
@@ -84,7 +84,7 @@ function getHeader() {
output.push('DESCRIPTION');
output.push('');
let description = [];
const description = [];
description.push('Joplin is a note taking and to-do application, which can handle a large number of notes organised into notebooks.');
description.push('The notes are searchable, can be copied, tagged and modified with your own text editor.');
description.push('\n\n');
@@ -98,7 +98,7 @@ function getHeader() {
}
function getFooter() {
let output = [];
const output = [];
output.push('WEBSITE');
output.push('');
@@ -120,10 +120,10 @@ async function main() {
// setLocale('fr_FR');
const commands = getCommands();
let commandBlocks = [];
const commandBlocks = [];
for (let i = 0; i < commands.length; i++) {
let cmd = commands[i];
const cmd = commands[i];
commandBlocks.push(renderCommand(cmd));
}

View File

@@ -40,8 +40,8 @@ function createClient(id) {
const client = createClient(1);
function execCommand(client, command) {
let exePath = `node ${joplinAppPath}`;
let cmd = `${exePath} --update-geolocation-disabled --env dev --profile ${client.profileDir} ${command}`;
const exePath = `node ${joplinAppPath}`;
const cmd = `${exePath} --update-geolocation-disabled --env dev --profile ${client.profileDir} ${command}`;
logger.info(`${client.id}: ${command}`);
return new Promise((resolve, reject) => {
@@ -129,8 +129,8 @@ testUnits.testCat = async () => {
await execCommand(client, 'mkbook nb1');
await execCommand(client, 'mknote mynote');
let folder = await Folder.loadByTitle('nb1');
let note = await Note.loadFolderNoteByField(folder.id, 'title', 'mynote');
const folder = await Folder.loadByTitle('nb1');
const note = await Note.loadFolderNoteByField(folder.id, 'title', 'mynote');
let r = await execCommand(client, 'cat mynote');
assertTrue(r.indexOf('mynote') >= 0);
@@ -149,7 +149,7 @@ testUnits.testConfig = async () => {
await Setting.load();
assertEquals('subl', Setting.value('editor'));
let r = await execCommand(client, 'config');
const r = await execCommand(client, 'config');
assertTrue(r.indexOf('editor') >= 0);
assertTrue(r.indexOf('subl') >= 0);
};
@@ -161,14 +161,14 @@ testUnits.testCp = async () => {
await execCommand(client, 'cp n1');
let f1 = await Folder.loadByTitle('nb1');
let f2 = await Folder.loadByTitle('nb2');
const f1 = await Folder.loadByTitle('nb1');
const f2 = await Folder.loadByTitle('nb2');
let notes = await Note.previews(f1.id);
assertEquals(2, notes.length);
await execCommand(client, 'cp n1 nb2');
let notesF1 = await Note.previews(f1.id);
const notesF1 = await Note.previews(f1.id);
assertEquals(2, notesF1.length);
notes = await Note.previews(f2.id);
assertEquals(1, notes.length);
@@ -179,7 +179,7 @@ testUnits.testLs = async () => {
await execCommand(client, 'mkbook nb1');
await execCommand(client, 'mknote note1');
await execCommand(client, 'mknote note2');
let r = await execCommand(client, 'ls');
const r = await execCommand(client, 'ls');
assertTrue(r.indexOf('note1') >= 0);
assertTrue(r.indexOf('note2') >= 0);
@@ -191,8 +191,8 @@ testUnits.testMv = async () => {
await execCommand(client, 'mknote n1');
await execCommand(client, 'mv n1 nb2');
let f1 = await Folder.loadByTitle('nb1');
let f2 = await Folder.loadByTitle('nb2');
const f1 = await Folder.loadByTitle('nb1');
const f2 = await Folder.loadByTitle('nb2');
let notes1 = await Note.previews(f1.id);
let notes2 = await Note.previews(f2.id);
@@ -218,18 +218,18 @@ async function main() {
logger.info(await execCommand(client, 'version'));
await db.open({ name: `${client.profileDir}/database.sqlite` });
BaseModel.db_ = db;
BaseModel.setDb(db);
await Setting.load();
let onlyThisTest = 'testMv';
onlyThisTest = '';
for (let n in testUnits) {
for (const n in testUnits) {
if (!testUnits.hasOwnProperty(n)) continue;
if (onlyThisTest && n != onlyThisTest) continue;
await clearDatabase();
let testName = n.substr(4).toLowerCase();
const testName = n.substr(4).toLowerCase();
process.stdout.write(`${testName}: `);
await testUnits[n]();
console.info('');

View File

@@ -11,27 +11,27 @@ cliUtils.printArray = function(logFunction, rows) {
const ALIGN_LEFT = 0;
const ALIGN_RIGHT = 1;
let colWidths = [];
let colAligns = [];
const colWidths = [];
const colAligns = [];
for (let i = 0; i < rows.length; i++) {
let row = rows[i];
const row = rows[i];
for (let j = 0; j < row.length; j++) {
let item = row[j];
let width = item ? item.toString().length : 0;
let align = typeof item == 'number' ? ALIGN_RIGHT : ALIGN_LEFT;
const item = row[j];
const width = item ? item.toString().length : 0;
const align = typeof item == 'number' ? ALIGN_RIGHT : ALIGN_LEFT;
if (!colWidths[j] || colWidths[j] < width) colWidths[j] = width;
if (colAligns.length <= j) colAligns[j] = align;
}
}
for (let row = 0; row < rows.length; row++) {
let line = [];
const line = [];
for (let col = 0; col < colWidths.length; col++) {
let item = rows[row][col];
let width = colWidths[col];
let dir = colAligns[col] == ALIGN_LEFT ? stringPadding.RIGHT : stringPadding.LEFT;
const item = rows[row][col];
const width = colWidths[col];
const dir = colAligns[col] == ALIGN_LEFT ? stringPadding.RIGHT : stringPadding.LEFT;
line.push(stringPadding(item, width, ' ', dir));
}
logFunction(line.join(' '));
@@ -39,7 +39,7 @@ cliUtils.printArray = function(logFunction, rows) {
};
cliUtils.parseFlags = function(flags) {
let output = {};
const output = {};
flags = flags.split(',');
for (let i = 0; i < flags.length; i++) {
let f = flags[i].trim();
@@ -76,11 +76,11 @@ cliUtils.parseCommandArg = function(arg) {
cliUtils.makeCommandArgs = function(cmd, argv) {
let cmdUsage = cmd.usage();
cmdUsage = yargParser(cmdUsage);
let output = {};
const output = {};
let options = cmd.options();
let booleanFlags = [];
let aliases = {};
const options = cmd.options();
const booleanFlags = [];
const aliases = {};
for (let i = 0; i < options.length; i++) {
if (options[i].length != 2) throw new Error(`Invalid options: ${options[i]}`);
let flags = options[i][0];
@@ -97,7 +97,7 @@ cliUtils.makeCommandArgs = function(cmd, argv) {
}
}
let args = yargParser(argv, {
const args = yargParser(argv, {
boolean: booleanFlags,
alias: aliases,
string: ['_'],
@@ -113,8 +113,8 @@ cliUtils.makeCommandArgs = function(cmd, argv) {
}
}
let argOptions = {};
for (let key in args) {
const argOptions = {};
for (const key in args) {
if (!args.hasOwnProperty(key)) continue;
if (key == '_') continue;
argOptions[key] = args[key];
@@ -134,7 +134,7 @@ cliUtils.promptMcq = function(message, answers) {
});
message += '\n\n';
for (let n in answers) {
for (const n in answers) {
if (!answers.hasOwnProperty(n)) continue;
message += `${_('%s: %s', n, answers[n])}\n`;
}

View File

@@ -15,6 +15,10 @@ class Command extends BaseCommand {
return 'Build the API doc';
}
enabled() {
return false;
}
createPropertiesTable(tableFields) {
const headers = [
{ name: 'name', label: 'Name' },
@@ -52,7 +56,6 @@ class Command extends BaseCommand {
lines.push('# Joplin API');
lines.push('');
lines.push('When the Web Clipper service is enabled, Joplin exposes a [REST API](https://en.wikipedia.org/wiki/Representational_state_transfer) which allows third-party applications to access Joplin\'s data and to create, modify or delete notes, notebooks, resources or tags.');
lines.push('');
lines.push('In order to use it, you\'ll first need to find on which port the service is running. To do so, open the Web Clipper Options in Joplin and if the service is running it should tell you on which port. Normally it runs on port **41184**. If you want to find it programmatically, you may follow this kind of algorithm:');
lines.push('');
@@ -131,6 +134,24 @@ class Command extends BaseCommand {
lines.push('');
lines.push('Call **GET /search?query=YOUR_QUERY** to search for notes. This end-point supports the `field` parameter which is recommended to use so that you only get the data that you need. The query syntax is as described in the main documentation: https://joplinapp.org/#searching');
lines.push('');
lines.push('To retrieve non-notes items, such as notebooks or tags, add a `type` parameter and set it to the required [item type name](#item-type-id). In that case, full text search will not be used - instead it will be a simple case-insensitive search. You can also use `*` as a wildcard. This is convenient for example to retrieve notebooks or tags by title.');
lines.push('');
lines.push('For example, to retrieve the notebook named `recipes`: **GET /search?query=recipes&type=folder**');
lines.push('');
lines.push('To retrieve all the tags that start with `project-`: **GET /search?query=project-*&type=tag**');
lines.push('');
lines.push('# Item type IDs');
lines.push('');
lines.push('Item type IDs might be refered to in certain object you will retrieve from the API. This is the correspondance between name and ID:');
lines.push('');
lines.push('Name | Value');
lines.push('---- | -----');
for (const t of BaseModel.typeEnum_) {
const value = t[1];
lines.push(`${BaseModel.modelTypeToName(value)} | ${value} `);
}
lines.push('');
for (let i = 0; i < models.length; i++) {
const model = models[i];
@@ -269,7 +290,7 @@ class Command extends BaseCommand {
lines.push('');
lines.push('### Creating a note with a specific ID');
lines.push('');
lines.push('When a new note is created, it is automatically assigned a new unique ID so **normally you do not need to set the ID**. However, if for some reason you want to set it, you can supply it as the `id` property. It needs to be a 32 characters long hexadecimal string. **Make sure it is unique**, for example by generating it using whatever GUID function is available in your programming language.');
lines.push('When a new note is created, it is automatically assigned a new unique ID so **normally you do not need to set the ID**. However, if for some reason you want to set it, you can supply it as the `id` property. It needs to be a **32 characters long string** in hexadecimal. **Make sure it is unique**, for example by generating it using whatever GUID function is available in your programming language.');
lines.push('');
lines.push(' curl --data \'{ "id": "00a87474082744c1a8515da6aa5792d2", "title": "My note with custom ID"}\' http://127.0.0.1:41184/notes');
lines.push('');

View File

@@ -14,9 +14,9 @@ class Command extends BaseCommand {
}
async action(args) {
let title = args['note'];
const title = args['note'];
let note = await app().loadItem(BaseModel.TYPE_NOTE, title, { parent: app().currentFolder() });
const note = await app().loadItem(BaseModel.TYPE_NOTE, title, { parent: app().currentFolder() });
this.encryptionCheck(note);
if (!note) throw new Error(_('Cannot find "%s".', title));

View File

@@ -2,6 +2,7 @@ const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('lib/locale.js');
const BaseModel = require('lib/BaseModel.js');
const BaseItem = require('lib/models/BaseItem.js');
const Note = require('lib/models/Note.js');
class Command extends BaseCommand {
@@ -18,20 +19,22 @@ class Command extends BaseCommand {
}
async action(args) {
let title = args['note'];
const title = args['note'];
let item = await app().loadItem(BaseModel.TYPE_NOTE, title, { parent: app().currentFolder() });
const item = await app().loadItem(BaseModel.TYPE_NOTE, title, { parent: app().currentFolder() });
if (!item) throw new Error(_('Cannot find "%s".', title));
const content = args.options.verbose ? await Note.serialize(item) : await Note.serializeForEdit(item);
this.stdout(content);
let content = '';
app()
.gui()
.showConsole();
app()
.gui()
.maximizeConsole();
if (item.encryption_applied) {
content = BaseItem.displayTitle(item);
} else {
content = args.options.verbose ? await Note.serialize(item) : await Note.serializeForEdit(item);
}
this.stdout(content);
app().gui().showConsole();
app().gui().maximizeConsole();
}
}

View File

@@ -1,6 +1,7 @@
const { BaseCommand } = require('./base-command.js');
const { _, setLocale } = require('lib/locale.js');
const { app } = require('./app.js');
const fs = require('fs-extra');
const Setting = require('lib/models/Setting.js');
class Command extends BaseCommand {
@@ -13,11 +14,60 @@ class Command extends BaseCommand {
}
options() {
return [['-v, --verbose', _('Also displays unset and hidden config variables.')]];
return [
['-v, --verbose', _('Also displays unset and hidden config variables.')],
['--export', 'Writes all settings to STDOUT as JSON including secure variables.'],
['--import', 'Reads in JSON formatted settings from STDIN.'],
['--import-file <file>', 'Reads in settings from <file>. <file> must contain valid JSON.'],
];
}
async __importSettings(inputStream) {
return new Promise((resolve, reject) => {
// being defensive and not attempting to settle twice
let isSettled = false;
const chunks = [];
inputStream.on('readable', () => {
let chunk;
while ((chunk = inputStream.read()) !== null) {
chunks.push(chunk);
}
});
inputStream.on('end', () => {
const json = chunks.join('');
let settingsObj;
try {
settingsObj = JSON.parse(json);
} catch (err) {
isSettled = true;
return reject(new Error(`Invalid JSON passed to config --import: \n${err.message}.`));
}
if (settingsObj) {
Object.entries(settingsObj)
.forEach(([key, value]) => {
Setting.setValue(key, value);
});
}
if (!isSettled) {
isSettled = true;
resolve();
}
});
inputStream.on('error', (error) => {
if (!isSettled) {
isSettled = true;
reject(error);
}
});
});
}
async action(args) {
const verbose = args.options.verbose;
const isExport = args.options.export;
const isImport = args.options.import || args.options.importFile;
const importFile = args.options.importFile;
const renderKeyValue = name => {
const md = Setting.settingMetadata(name);
@@ -32,35 +82,45 @@ class Command extends BaseCommand {
}
};
if (!args.name && !args.value) {
let keys = Setting.keys(!verbose, 'cli');
if (isExport || (!isImport && !args.value)) {
const keys = Setting.keys(!verbose, 'cli');
keys.sort();
for (let i = 0; i < keys.length; i++) {
const value = Setting.value(keys[i]);
if (!verbose && !value) continue;
this.stdout(renderKeyValue(keys[i]));
if (isExport) {
const resultObj = keys.reduce((acc, key) => {
const value = Setting.value(key);
if (!verbose && !value) return acc;
acc[key] = value;
return acc;
}, {});
// Printing the object in "pretty" format so it's easy to read/edit
this.stdout(JSON.stringify(resultObj, null, 2));
} else if (!args.name) {
for (let i = 0; i < keys.length; i++) {
const value = Setting.value(keys[i]);
if (!verbose && !value) continue;
this.stdout(renderKeyValue(keys[i]));
}
} else {
this.stdout(renderKeyValue(args.name));
}
app()
.gui()
.showConsole();
app()
.gui()
.maximizeConsole();
app().gui().showConsole();
app().gui().maximizeConsole();
return;
}
if (args.name && !args.value) {
this.stdout(renderKeyValue(args.name));
app()
.gui()
.showConsole();
app()
.gui()
.maximizeConsole();
return;
if (isImport) {
let fileStream = process.stdin;
if (importFile) {
fileStream = fs.createReadStream(importFile, { autoClose: true });
}
await this.__importSettings(fileStream);
} else {
Setting.setValue(args.name, args.value);
}
Setting.setValue(args.name, args.value);
if (args.name == 'locale') {
setLocale(Setting.value('locale'));

View File

@@ -18,15 +18,15 @@ class Command extends BaseCommand {
async action() {
let items = [];
let folders = await Folder.all();
const folders = await Folder.all();
for (let i = 0; i < folders.length; i++) {
let folder = folders[i];
let notes = await Note.previews(folder.id);
const folder = folders[i];
const notes = await Note.previews(folder.id);
items.push(folder);
items = items.concat(notes);
}
let tags = await Tag.all();
const tags = await Tag.all();
for (let i = 0; i < tags.length; i++) {
tags[i].notes_ = await Tag.noteIds(tags[i].id);
}

View File

@@ -24,12 +24,11 @@ class Command extends BaseCommand {
['-p, --password <password>', 'Use this password as master password (For security reasons, it is not recommended to use this option).'],
['-v, --verbose', 'More verbose output for the `target-status` command'],
['-o, --output <directory>', 'Output directory'],
['--retry-failed-items', 'Applies to `decrypt` command - retries decrypting items that previously could not be decrypted.'],
];
}
async action(args) {
// change-password
const options = args.options;
const askForMasterKey = async error => {
@@ -44,6 +43,31 @@ class Command extends BaseCommand {
return true;
};
const startDecryption = async () => {
this.stdout(_('Starting decryption... Please wait as it may take several minutes depending on how much there is to decrypt.'));
while (true) {
try {
const result = await DecryptionWorker.instance().start();
const line = [];
line.push(_('Decrypted items: %d', result.decryptedItemCount));
if (result.skippedItemCount) line.push(_('Skipped items: %d (use --retry-failed-items to retry decrypting them)', result.skippedItemCount));
this.stdout(line.join('\n'));
break;
} catch (error) {
if (error.code === 'masterKeyNotLoaded') {
const ok = await askForMasterKey(error);
if (!ok) return;
continue;
}
throw error;
}
}
this.stdout(_('Completed decryption.'));
};
if (args.command === 'enable') {
const password = options.password ? options.password.toString() : await this.prompt(_('Enter master password:'), { type: 'string', secure: true });
if (!password) {
@@ -73,24 +97,8 @@ class Command extends BaseCommand {
const plainText = await EncryptionService.instance().decryptString(args.path);
this.stdout(plainText);
} else {
this.stdout(_('Starting decryption... Please wait as it may take several minutes depending on how much there is to decrypt.'));
while (true) {
try {
await DecryptionWorker.instance().start();
break;
} catch (error) {
if (error.code === 'masterKeyNotLoaded') {
const ok = await askForMasterKey(error);
if (!ok) return;
continue;
}
throw error;
}
}
this.stdout(_('Completed decryption.'));
if (args.options['retry-failed-items']) await DecryptionWorker.instance().clearDisabledItems();
await startDecryption();
}
return;
@@ -138,7 +146,7 @@ class Command extends BaseCommand {
if (!targetPath) throw new Error('Please specify the sync target path.');
const dirPaths = function(targetPath) {
let paths = [];
const paths = [];
fs.readdirSync(targetPath).forEach(path => {
paths.push(path);
});
@@ -151,10 +159,10 @@ class Command extends BaseCommand {
let encryptedResourceCount = 0;
let otherItemCount = 0;
let encryptedPaths = [];
let decryptedPaths = [];
const encryptedPaths = [];
const decryptedPaths = [];
let paths = dirPaths(targetPath);
const paths = dirPaths(targetPath);
for (let i = 0; i < paths.length; i++) {
const path = paths[i];
@@ -164,7 +172,7 @@ class Command extends BaseCommand {
// this.stdout(fullPath);
if (path === '.resource') {
let resourcePaths = dirPaths(fullPath);
const resourcePaths = dirPaths(fullPath);
for (let j = 0; j < resourcePaths.length; j++) {
const resourcePath = resourcePaths[j];
resourceCount++;

View File

@@ -35,7 +35,7 @@ class Command extends BaseCommand {
// Load note or create it if it doesn't exist
// -------------------------------------------------------------------------
let title = args['note'];
const title = args['note'];
if (!app().currentFolder()) throw new Error(_('No active notebook.'));
let note = await app().loadItem(BaseModel.TYPE_NOTE, title);
@@ -91,7 +91,7 @@ class Command extends BaseCommand {
const updatedContent = await fs.readFile(tempFilePath, 'utf8');
if (updatedContent !== originalContent) {
let updatedNote = await Note.unserializeForEdit(updatedContent);
const updatedNote = await Note.unserializeForEdit(updatedContent);
updatedNote.id = note.id;
await Note.save(updatedNote);
this.stdout(_('Note has been saved.'));

View File

@@ -24,7 +24,7 @@ class Command extends BaseCommand {
}
async action(args) {
let exportOptions = {};
const exportOptions = {};
exportOptions.path = args.path;
exportOptions.format = args.options.format ? args.options.format : 'jex';

View File

@@ -14,9 +14,9 @@ class Command extends BaseCommand {
}
async action(args) {
let title = args['note'];
const title = args['note'];
let item = await app().loadItem(BaseModel.TYPE_NOTE, title, { parent: app().currentFolder() });
const item = await app().loadItem(BaseModel.TYPE_NOTE, title, { parent: app().currentFolder() });
if (!item) throw new Error(_('Cannot find "%s".', title));
const url = Note.geolocationUrl(item);
this.stdout(url);

View File

@@ -15,8 +15,8 @@ class Command extends BaseCommand {
allCommands() {
const commands = app().commands(app().uiType());
let output = [];
for (let n in commands) {
const output = [];
for (const n in commands) {
if (!commands.hasOwnProperty(n)) continue;
const command = commands[n];
if (command.hidden()) continue;
@@ -48,7 +48,7 @@ class Command extends BaseCommand {
.gui()
.keymap();
let rows = [];
const rows = [];
for (let i = 0; i < keymap.length; i++) {
const item = keymap[i];

View File

@@ -25,7 +25,7 @@ class Command extends BaseCommand {
}
async action(args) {
let folder = await app().loadItem(BaseModel.TYPE_FOLDER, args.notebook);
const folder = await app().loadItem(BaseModel.TYPE_FOLDER, args.notebook);
if (args.notebook && !folder) throw new Error(_('Cannot find "%s".', args.notebook));
@@ -39,7 +39,7 @@ class Command extends BaseCommand {
// onProgress/onError supported by Enex import only
importOptions.onProgress = progressState => {
let line = [];
const line = [];
line.push(_('Found: %d.', progressState.loaded));
line.push(_('Created: %d.', progressState.created));
if (progressState.updated) line.push(_('Updated: %d.', progressState.updated));
@@ -51,7 +51,7 @@ class Command extends BaseCommand {
};
importOptions.onError = error => {
let s = error.trace ? error.trace : error.toString();
const s = error.trace ? error.trace : error.toString();
this.stdout(s);
};

View File

@@ -19,19 +19,26 @@ class Command extends BaseCommand {
}
enabled() {
return false;
return true;
}
options() {
return [['-n, --limit <num>', _('Displays only the first top <num> notes.')], ['-s, --sort <field>', _('Sorts the item by <field> (eg. title, updated_time, created_time).')], ['-r, --reverse', _('Reverses the sorting order.')], ['-t, --type <type>', _('Displays only the items of the specific type(s). Can be `n` for notes, `t` for to-dos, or `nt` for notes and to-dos (eg. `-tt` would display only the to-dos, while `-ttd` would display notes and to-dos.')], ['-f, --format <format>', _('Either "text" or "json"')], ['-l, --long', _('Use long list format. Format is ID, NOTE_COUNT (for notebook), DATE, TODO_CHECKED (for to-dos), TITLE')]];
return [
['-n, --limit <num>', _('Displays only the first top <num> notes.')],
['-s, --sort <field>', _('Sorts the item by <field> (eg. title, updated_time, created_time).')],
['-r, --reverse', _('Reverses the sorting order.')],
['-t, --type <type>', _('Displays only the items of the specific type(s). Can be `n` for notes, `t` for to-dos, or `nt` for notes and to-dos (eg. `-tt` would display only the to-dos, while `-ttd` would display notes and to-dos.')],
['-f, --format <format>', _('Either "text" or "json"')],
['-l, --long', _('Use long list format. Format is ID, NOTE_COUNT (for notebook), DATE, TODO_CHECKED (for to-dos), TITLE')],
];
}
async action(args) {
let pattern = args['note-pattern'];
const pattern = args['note-pattern'];
let items = [];
let options = args.options;
const options = args.options;
let queryOptions = {};
const queryOptions = {};
if (options.limit) queryOptions.limit = options.limit;
if (options.sort) {
queryOptions.orderBy = options.sort;
@@ -63,19 +70,19 @@ class Command extends BaseCommand {
} else {
let hasTodos = false;
for (let i = 0; i < items.length; i++) {
let item = items[i];
const item = items[i];
if (item.is_todo) {
hasTodos = true;
break;
}
}
let seenTitles = [];
let rows = [];
const seenTitles = [];
const rows = [];
let shortIdShown = false;
for (let i = 0; i < items.length; i++) {
let item = items[i];
let row = [];
const item = items[i];
const row = [];
if (options.long) {
row.push(BaseModel.shortId(item.id));

View File

@@ -13,7 +13,7 @@ class Command extends BaseCommand {
}
async action(args) {
let folder = await Folder.save({ title: args['new-notebook'] }, { userSideValidation: true });
const folder = await Folder.save({ title: args['new-notebook'] }, { userSideValidation: true });
app().switchCurrentFolder(folder);
}
}

View File

@@ -26,7 +26,7 @@ class Command extends BaseCommand {
const ok = force ? true : await this.prompt(notes.length > 1 ? _('%d notes match this pattern. Delete them?', notes.length) : _('Delete note?'), { booleanAnswerDefault: 'n' });
if (!ok) return;
let ids = notes.map(n => n.id);
const ids = notes.map(n => n.id);
await Note.batchDelete(ids);
}
}

View File

@@ -18,8 +18,8 @@ class Command extends BaseCommand {
}
async action(args) {
let pattern = args['pattern'];
let folderTitle = args['notebook'];
const pattern = args['pattern'];
const folderTitle = args['notebook'];
let folder = null;
if (folderTitle) {

View File

@@ -25,7 +25,7 @@ class Command extends BaseCommand {
info: stdoutFn,
warn: stdoutFn,
error: stdoutFn,
}});
} });
ClipperServer.instance().setDispatch(() => {});
ClipperServer.instance().setLogger(clipperLogger);

View File

@@ -23,18 +23,18 @@ class Command extends BaseCommand {
}
async action(args) {
let title = args['note'];
let propName = args['name'];
const title = args['note'];
const propName = args['name'];
let propValue = args['value'];
if (!propValue) propValue = '';
let notes = await app().loadItems(BaseModel.TYPE_NOTE, title);
const notes = await app().loadItems(BaseModel.TYPE_NOTE, title);
if (!notes.length) throw new Error(_('Cannot find "%s".', title));
for (let i = 0; i < notes.length; i++) {
this.encryptionCheck(notes[i]);
let newNote = {
const newNote = {
id: notes[i].id,
type_: notes[i].type_,
};

View File

@@ -14,30 +14,39 @@ class Command extends BaseCommand {
}
async action() {
let service = new ReportService();
let report = await service.status(Setting.value('sync.target'));
const service = new ReportService();
const report = await service.status(Setting.value('sync.target'));
for (let i = 0; i < report.length; i++) {
let section = report[i];
const section = report[i];
if (i > 0) this.stdout('');
this.stdout(`# ${section.title}`);
this.stdout('');
for (let n in section.body) {
let canRetryType = '';
for (const n in section.body) {
if (!section.body.hasOwnProperty(n)) continue;
let line = section.body[n];
this.stdout(line);
const item = section.body[n];
if (typeof item === 'object') {
canRetryType = item.canRetryType;
this.stdout(item.text);
} else {
this.stdout(item);
}
}
if (canRetryType === 'e2ee') {
this.stdout('');
this.stdout(_('To retry decryption of these items. Run `e2ee decrypt --retry-failed-items`'));
}
}
app()
.gui()
.showConsole();
app()
.gui()
.maximizeConsole();
app().gui().showConsole();
app().gui().maximizeConsole();
}
}

View File

@@ -1,7 +1,7 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('lib/locale.js');
const { OneDriveApiNodeUtils } = require('./onedrive-api-node-utils.js');
const { OneDriveApiNodeUtils } = require('lib/onedrive-api-node-utils.js');
const Setting = require('lib/models/Setting.js');
const ResourceFetcher = require('lib/services/ResourceFetcher');
const { Synchronizer } = require('lib/synchronizer.js');
@@ -161,9 +161,9 @@ class Command extends BaseCommand {
const sync = await syncTarget.synchronizer();
let options = {
const options = {
onProgress: report => {
let lines = Synchronizer.reportToLines(report);
const lines = Synchronizer.reportToLines(report);
if (lines.length) cliUtils.redraw(lines.join(' '));
},
onMessage: msg => {
@@ -185,7 +185,7 @@ class Command extends BaseCommand {
options.context = context;
try {
let newContext = await sync.start(options);
const newContext = await sync.start(options);
Setting.setValue(contextKey, JSON.stringify(newContext));
} catch (error) {
if (error.code == 'alreadyStarted') {

View File

@@ -20,7 +20,7 @@ class Command extends BaseCommand {
async action(args) {
let tag = null;
let options = args.options;
const options = args.options;
if (args.tag) tag = await app().loadItem(BaseModel.TYPE_TAG, args.tag);
let notes = [];
@@ -46,7 +46,7 @@ class Command extends BaseCommand {
}
} else if (command == 'list') {
if (tag) {
let notes = await Tag.notes(tag.id);
const notes = await Tag.notes(tag.id);
notes.map(note => {
let line = '';
if (options.long) {
@@ -70,7 +70,7 @@ class Command extends BaseCommand {
this.stdout(line);
});
} else {
let tags = await Tag.all();
const tags = await Tag.all();
tags.map(tag => {
this.stdout(tag.title);
});

View File

@@ -17,7 +17,7 @@ class Command extends BaseCommand {
}
async action(args) {
let folder = await app().loadItem(BaseModel.TYPE_FOLDER, args['notebook']);
const folder = await app().loadItem(BaseModel.TYPE_FOLDER, args['notebook']);
if (!folder) throw new Error(_('Cannot find "%s".', args['notebook']));
app().switchCurrentFolder(folder);
}

View File

@@ -12,7 +12,7 @@ const fs = require('fs-extra');
const baseDir = `${dirname(__dirname)}/tests/fuzzing`;
const syncDir = `${baseDir}/sync`;
const joplinAppPath = `${__dirname}/main.js`;
let syncDurations = [];
const syncDurations = [];
const fsDriver = new FsDriverNode();
Logger.fsDriver_ = fsDriver;
@@ -34,10 +34,10 @@ function createClient(id) {
}
async function createClients() {
let output = [];
let promises = [];
const output = [];
const promises = [];
for (let clientId = 0; clientId < 2; clientId++) {
let client = createClient(clientId);
const client = createClient(clientId);
promises.push(fs.remove(client.profileDir));
promises.push(
execCommand(client, 'config sync.target 2').then(() => {
@@ -2064,8 +2064,8 @@ function randomWord() {
}
function execCommand(client, command, options = {}) {
let exePath = `node ${joplinAppPath}`;
let cmd = `${exePath} --update-geolocation-disabled --env dev --log-level debug --profile ${client.profileDir} ${command}`;
const exePath = `node ${joplinAppPath}`;
const cmd = `${exePath} --update-geolocation-disabled --env dev --log-level debug --profile ${client.profileDir} ${command}`;
logger.info(`${client.id}: ${command}`);
if (options.killAfter) {
@@ -2073,7 +2073,7 @@ function execCommand(client, command, options = {}) {
}
return new Promise((resolve, reject) => {
let childProcess = exec(cmd, (error, stdout, stderr) => {
const childProcess = exec(cmd, (error, stdout, stderr) => {
if (error) {
if (error.signal == 'SIGTERM') {
resolve('Process was killed');
@@ -2096,7 +2096,7 @@ function execCommand(client, command, options = {}) {
}
async function clientItems(client) {
let itemsJson = await execCommand(client, 'dump');
const itemsJson = await execCommand(client, 'dump');
try {
return JSON.parse(itemsJson);
} catch (error) {
@@ -2105,7 +2105,7 @@ async function clientItems(client) {
}
function randomTag(items) {
let tags = [];
const tags = [];
for (let i = 0; i < items.length; i++) {
if (items[i].type_ != 5) continue;
tags.push(items[i]);
@@ -2115,7 +2115,7 @@ function randomTag(items) {
}
function randomNote(items) {
let notes = [];
const notes = [];
for (let i = 0; i < items.length; i++) {
if (items[i].type_ != 1) continue;
notes.push(items[i]);
@@ -2125,14 +2125,14 @@ function randomNote(items) {
}
async function execRandomCommand(client) {
let possibleCommands = [
const possibleCommands = [
['mkbook {word}', 40], // CREATE FOLDER
['mknote {word}', 70], // CREATE NOTE
[
async () => {
// DELETE RANDOM ITEM
let items = await clientItems(client);
let item = randomElement(items);
const items = await clientItems(client);
const item = randomElement(items);
if (!item) return;
if (item.type_ == 1) {
@@ -2150,8 +2150,8 @@ async function execRandomCommand(client) {
[
async () => {
// SYNC
let avgSyncDuration = averageSyncDuration();
let options = {};
const avgSyncDuration = averageSyncDuration();
const options = {};
if (!isNaN(avgSyncDuration)) {
if (Math.random() >= 0.5) {
options.killAfter = avgSyncDuration * Math.random();
@@ -2164,8 +2164,8 @@ async function execRandomCommand(client) {
[
async () => {
// UPDATE RANDOM ITEM
let items = await clientItems(client);
let item = randomNote(items);
const items = await clientItems(client);
const item = randomNote(items);
if (!item) return;
return execCommand(client, `set ${item.id} title "${randomWord()}"`);
@@ -2175,12 +2175,12 @@ async function execRandomCommand(client) {
[
async () => {
// ADD TAG
let items = await clientItems(client);
let note = randomNote(items);
const items = await clientItems(client);
const note = randomNote(items);
if (!note) return;
let tag = randomTag(items);
let tagTitle = !tag || Math.random() >= 0.9 ? `tag-${randomWord()}` : tag.title;
const tag = randomTag(items);
const tagTitle = !tag || Math.random() >= 0.9 ? `tag-${randomWord()}` : tag.title;
return execCommand(client, `tag add ${tagTitle} ${note.id}`);
},
@@ -2191,7 +2191,7 @@ async function execRandomCommand(client) {
let cmd = null;
while (true) {
cmd = randomElement(possibleCommands);
let r = 1 + Math.floor(Math.random() * 100);
const r = 1 + Math.floor(Math.random() * 100);
if (r <= cmd[1]) break;
}
@@ -2210,7 +2210,7 @@ function averageSyncDuration() {
}
function randomNextCheckTime() {
let output = time.unixMs() + 1000 + Math.random() * 1000 * 120;
const output = time.unixMs() + 1000 + Math.random() * 1000 * 120;
logger.info(`Next sync check: ${time.unixMsToIso(output)} (${Math.round((output - time.unixMs()) / 1000)} sec.)`);
return output;
}
@@ -2223,11 +2223,11 @@ function findItem(items, itemId) {
}
function compareItems(item1, item2) {
let output = [];
for (let n in item1) {
const output = [];
for (const n in item1) {
if (!item1.hasOwnProperty(n)) continue;
let p1 = item1[n];
let p2 = item2[n];
const p1 = item1[n];
const p2 = item2[n];
if (n == 'notes_') {
p1.sort();
@@ -2243,13 +2243,13 @@ function compareItems(item1, item2) {
}
function findMissingItems_(items1, items2) {
let output = [];
const output = [];
for (let i = 0; i < items1.length; i++) {
let item1 = items1[i];
const item1 = items1[i];
let found = false;
for (let j = 0; j < items2.length; j++) {
let item2 = items2[j];
const item2 = items2[j];
if (item1.id == item2.id) {
found = true;
break;
@@ -2269,33 +2269,33 @@ function findMissingItems(items1, items2) {
}
async function compareClientItems(clientItems) {
let itemCounts = [];
const itemCounts = [];
for (let i = 0; i < clientItems.length; i++) {
let items = clientItems[i];
const items = clientItems[i];
itemCounts.push(items.length);
}
logger.info(`Item count: ${itemCounts.join(', ')}`);
let missingItems = findMissingItems(clientItems[0], clientItems[1]);
const missingItems = findMissingItems(clientItems[0], clientItems[1]);
if (missingItems[0].length || missingItems[1].length) {
logger.error('Items are different');
logger.error(missingItems);
process.exit(1);
}
let differences = [];
let items = clientItems[0];
const differences = [];
const items = clientItems[0];
for (let i = 0; i < items.length; i++) {
let item1 = items[i];
const item1 = items[i];
for (let clientId = 1; clientId < clientItems.length; clientId++) {
let item2 = findItem(clientItems[clientId], item1.id);
const item2 = findItem(clientItems[clientId], item1.id);
if (!item2) {
logger.error(`Item not found on client ${clientId}:`);
logger.error(item1);
process.exit(1);
}
let diff = compareItems(item1, item2);
const diff = compareItems(item1, item2);
if (diff.length) {
differences.push({
item1: JSON.stringify(item1),
@@ -2315,7 +2315,7 @@ async function compareClientItems(clientItems) {
async function main() {
await fs.remove(syncDir);
let clients = await createClients();
const clients = await createClients();
let clientId = 0;
for (let i = 0; i < clients.length; i++) {
@@ -2348,7 +2348,7 @@ async function main() {
if (state == 'syncCheck') {
state = 'waitForSyncCheck';
let clientItems = [];
const clientItems = [];
// Up to 3 sync operations must be performed by each clients in order for them
// to be perfectly in sync - in order for each items to send their changes
// and get those from the other clients, and to also get changes that are
@@ -2356,12 +2356,12 @@ async function main() {
// with another one).
for (let loopCount = 0; loopCount < 3; loopCount++) {
for (let i = 0; i < clients.length; i++) {
let beforeTime = time.unixMs();
const beforeTime = time.unixMs();
await execCommand(clients[i], 'sync');
syncDurations.push(time.unixMs() - beforeTime);
if (syncDurations.length > 20) syncDurations.splice(0, 1);
if (loopCount === 2) {
let dump = await execCommand(clients[i], 'dump');
const dump = await execCommand(clients[i], 'dump');
clientItems[i] = JSON.parse(dump);
}
}

View File

@@ -20,7 +20,7 @@ class FolderListWidget extends ListWidget {
this.trimItemTitle = false;
this.itemRenderer = item => {
let output = [];
const output = [];
if (item === '-') {
output.push('-'.repeat(this.innerWidth));
} else if (item.type_ === Folder.modelType()) {
@@ -40,7 +40,7 @@ class FolderListWidget extends ListWidget {
let output = 0;
while (true) {
const folder = BaseModel.byId(folders, folderId);
if (!folder.parent_id) return output;
if (!folder || !folder.parent_id) return output;
output++;
folderId = folder.parent_id;
}
@@ -121,7 +121,7 @@ class FolderListWidget extends ListWidget {
folderHasChildren_(folders, folderId) {
for (let i = 0; i < folders.length; i++) {
let folder = folders[i];
const folder = folders[i];
if (folder.parent_id === folderId) return true;
}
return false;

View File

@@ -46,6 +46,8 @@ class NoteWidget extends TextWidget {
if (this.note_ && this.note_.encryption_applied) {
this.text = _('One or more items are currently encrypted and you may need to supply a master password. To do so please type `e2ee decrypt`. If you have already supplied the password, the encrypted items are being decrypted in the background and will be available soon.');
this.text += '\n\n';
this.text += _('You may also type `status` for more information.');
} else {
this.text = this.note_ ? `${this.note_.title}\n\n${this.note_.body}` : '';
}

View File

@@ -106,7 +106,7 @@ class StatusBarWidget extends BaseWidget {
const isSecurePrompt = !!this.promptState_.secure;
let options = {
const options = {
cancelable: true,
history: this.history,
default: this.promptState_.initialText,

View File

@@ -6,11 +6,11 @@ const MAX_WIDTH = 78;
const INDENT = ' ';
function renderTwoColumnData(options, baseIndent, width) {
let output = [];
const output = [];
const optionColWidth = getOptionColWidth(options);
for (let i = 0; i < options.length; i++) {
let option = options[i];
const option = options[i];
const flag = option[0];
const indent = baseIndent + INDENT + ' '.repeat(optionColWidth + 2);
@@ -28,7 +28,7 @@ function renderCommandHelp(cmd, width = null) {
const baseIndent = '';
let output = [];
const output = [];
output.push(baseIndent + cmd.usage());
output.push('');
output.push(wrap(cmd.description(), baseIndent + INDENT, width));
@@ -42,7 +42,7 @@ function renderCommandHelp(cmd, width = null) {
if (cmd.name() === 'config') {
const renderMetadata = md => {
let desc = [];
const desc = [];
if (md.label) {
let label = md.label();
@@ -77,7 +77,7 @@ function renderCommandHelp(cmd, width = null) {
output.push(_('Possible keys/values:'));
output.push('');
let keysValues = [];
const keysValues = [];
const keys = Setting.keys(true, 'cli');
for (let i = 0; i < keys.length; i++) {
if (keysValues.length) keysValues.push(['', '']);

View File

@@ -8,8 +8,8 @@ require('app-module-path').addPath(__dirname);
const compareVersion = require('compare-version');
const nodeVersion = process && process.versions && process.versions.node ? process.versions.node : '0.0.0';
if (compareVersion(nodeVersion, '8.0.0') < 0) {
console.error(`Joplin requires Node 8+. Detected version ${nodeVersion}`);
if (compareVersion(nodeVersion, '10.0.0') < 0) {
console.error(`Joplin requires Node 10+. Detected version ${nodeVersion}`);
process.exit(1);
}
@@ -54,7 +54,7 @@ shimInit();
const application = app();
if (process.platform === 'win32') {
var rl = require('readline').createInterface({
const rl = require('readline').createInterface({
input: process.stdin,
output: process.stdout,
});

View File

@@ -1,3 +1,3 @@
#!/bin/bash
set -e
./build.sh && NODE_PATH=build node build/build-doc.js
npm run build && NODE_PATH=build node build/build-doc.js

View File

@@ -1,10 +0,0 @@
#!/bin/bash
ROOT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
BUILD_DIR="$ROOT_DIR/build"
rsync -a --exclude "node_modules/" "$ROOT_DIR/app/" "$BUILD_DIR/"
rsync -a --delete "$ROOT_DIR/../ReactNativeClient/lib/" "$BUILD_DIR/lib/"
rsync -a --delete "$ROOT_DIR/../ReactNativeClient/locales/" "$BUILD_DIR/locales/"
cp "$ROOT_DIR/package.json" "$BUILD_DIR"
chmod 755 "$BUILD_DIR/main.js"

View File

@@ -1,3 +1,3 @@
#!/bin/bash
set -e
./build.sh && NODE_PATH="build/" node build/cli-integration-tests.js
npm run build && NODE_PATH="build/" node build/cli-integration-tests.js

View File

@@ -1,3 +1,3 @@
#!/bin/bash
set -e
./build.sh && NODE_PATH="build/" node build/fuzzing.js
npm run build && NODE_PATH="build/" node build/fuzzing.js

49
CliClient/gulpfile.js Normal file
View File

@@ -0,0 +1,49 @@
const gulp = require('gulp');
const fs = require('fs-extra');
const utils = require('../Tools/gulp/utils');
const tasks = {
copyLib: require('../Tools/gulp/tasks/copyLib'),
};
tasks.build = {
fn: async () => {
const buildDir = `${__dirname}/build`;
await utils.copyDir(`${__dirname}/app`, buildDir, {
excluded: ['node_modules'],
});
await utils.copyDir(`${__dirname}/locales-build`, `${buildDir}/locales`);
await utils.copyDir(`${__dirname}/../patches`, `${buildDir}/patches`);
await tasks.copyLib.fn();
await utils.copyFile(`${__dirname}/package.json`, `${buildDir}/package.json`);
await utils.copyFile(`${__dirname}/package-lock.json`, `${buildDir}/package-lock.json`);
await utils.copyFile(`${__dirname}/gulpfile.js`, `${buildDir}/gulpfile.js`);
const packageRaw = await fs.readFile(`${buildDir}/package.json`);
const package = JSON.parse(packageRaw.toString());
package.scripts.postinstall = 'patch-package';
await fs.writeFile(`${buildDir}/package.json`, JSON.stringify(package, null, 2), 'utf8');
fs.chmodSync(`${buildDir}/main.js`, 0o755);
},
};
tasks.buildTests = {
fn: async () => {
const testBuildDir = `${__dirname}/tests-build`;
await utils.copyDir(`${__dirname}/tests`, testBuildDir, {
excluded: [
'lib/',
'locales/',
'node_modules/',
],
});
await utils.copyDir(`${__dirname}/../ReactNativeClient/lib`, `${testBuildDir}/lib`);
await utils.copyDir(`${__dirname}/../ReactNativeClient/locales`, `${testBuildDir}/locales`);
await fs.mkdirp(`${testBuildDir}/data`);
},
};
gulp.task('build', tasks.build.fn);
gulp.task('buildTests', tasks.buildTests.fn);

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

@@ -12,6 +12,7 @@ locales['el_GR'] = require('./el_GR.json');
locales['en_US'] = require('./en_US.json');
locales['eo'] = require('./eo.json');
locales['es_ES'] = require('./es_ES.json');
locales['et_EE'] = require('./et_EE.json');
locales['eu'] = require('./eu.json');
locales['fa'] = require('./fa.json');
locales['fr_FR'] = require('./fr_FR.json');
@@ -25,45 +26,52 @@ locales['nl_BE'] = require('./nl_BE.json');
locales['nl_NL'] = require('./nl_NL.json');
locales['pl_PL'] = require('./pl_PL.json');
locales['pt_BR'] = require('./pt_BR.json');
locales['pt_PT'] = require('./pt_PT.json');
locales['ro'] = require('./ro.json');
locales['ru_RU'] = require('./ru_RU.json');
locales['sl_SI'] = require('./sl_SI.json');
locales['sr_RS'] = require('./sr_RS.json');
locales['sv'] = require('./sv.json');
locales['th_TH'] = require('./th_TH.json');
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":78};
stats['eu'] = {"percentDone":44};
stats['bs_BA'] = {"percentDone":97};
stats['bg_BG'] = {"percentDone":86};
stats['ca'] = {"percentDone":68};
stats['hr_HR'] = {"percentDone":36};
stats['cs_CZ'] = {"percentDone":100};
stats['da_DK'] = {"percentDone":96};
stats['de_DE'] = {"percentDone":100};
stats['ar'] = {"percentDone":87};
stats['eu'] = {"percentDone":37};
stats['bs_BA'] = {"percentDone":81};
stats['bg_BG'] = {"percentDone":73};
stats['ca'] = {"percentDone":58};
stats['hr_HR'] = {"percentDone":31};
stats['cs_CZ'] = {"percentDone":90};
stats['da_DK'] = {"percentDone":81};
stats['de_DE'] = {"percentDone":97};
stats['et_EE'] = {"percentDone":72};
stats['en_GB'] = {"percentDone":100};
stats['en_US'] = {"percentDone":100};
stats['es_ES'] = {"percentDone":99};
stats['eo'] = {"percentDone":50};
stats['fr_FR'] = {"percentDone":100};
stats['gl_ES'] = {"percentDone":56};
stats['it_IT'] = {"percentDone":94};
stats['nl_BE'] = {"percentDone":44};
stats['nl_NL'] = {"percentDone":94};
stats['nb_NO'] = {"percentDone":94};
stats['fa'] = {"percentDone":42};
stats['pl_PL'] = {"percentDone":85};
stats['es_ES'] = {"percentDone":90};
stats['eo'] = {"percentDone":41};
stats['fr_FR'] = {"percentDone":91};
stats['gl_ES'] = {"percentDone":47};
stats['it_IT'] = {"percentDone":96};
stats['nl_NL'] = {"percentDone":92};
stats['nl_BE'] = {"percentDone":37};
stats['nb_NO'] = {"percentDone":97};
stats['fa'] = {"percentDone":36};
stats['pl_PL'] = {"percentDone":84};
stats['pt_PT'] = {"percentDone":98};
stats['pt_BR'] = {"percentDone":98};
stats['ro'] = {"percentDone":44};
stats['sl_SI'] = {"percentDone":55};
stats['sv'] = {"percentDone":76};
stats['tr_TR'] = {"percentDone":92};
stats['el_GR'] = {"percentDone":99};
stats['ru_RU'] = {"percentDone":92};
stats['sr_RS'] = {"percentDone":85};
stats['zh_CN'] = {"percentDone":93};
stats['zh_TW'] = {"percentDone":68};
stats['ro'] = {"percentDone":37};
stats['sl_SI'] = {"percentDone":47};
stats['sv'] = {"percentDone":78};
stats['th_TH'] = {"percentDone":58};
stats['vi'] = {"percentDone":94};
stats['tr_TR'] = {"percentDone":100};
stats['el_GR'] = {"percentDone":89};
stats['ru_RU'] = {"percentDone":97};
stats['sr_RS'] = {"percentDone":78};
stats['zh_CN'] = {"percentDone":97};
stats['zh_TW'] = {"percentDone":98};
stats['ja_JP'] = {"percentDone":100};
stats['ko'] = {"percentDone":97};
stats['ko'] = {"percentDone":95};
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

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