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

Compare commits

...

19 Commits

Author SHA1 Message Date
Laurent Cozic
666707ec67 All: Resolves #932: Trying to fix orphaned resource bug, but not working 2020-11-08 16:50:40 +00:00
Laurent Cozic
5269a4b7fa Chore: Convert ResourceService to TypeScript 2020-11-08 16:46:48 +00:00
Laurent Cozic
88a2f9c85c Desktop: Regression: Fix exporting to HTML and PDF 2020-11-08 02:20:56 +00:00
Laurent Cozic
f20b8c2dc6 Desktop: Fixed text editor button tooltips 2020-11-08 01:23:12 +00:00
Laurent Cozic
bd2081c3b6 Desktop: Added toolbar button to switch spell checker language 2020-11-08 01:08:33 +00:00
Laurent Cozic
6ac4131003 Tools: Move translation script to root 2020-11-07 18:44:32 +00:00
Laurent Cozic
4c5e0447a9 Electron release v1.4.7 2020-11-07 16:55:46 +00:00
Laurent Cozic
545a2206d7 Doc: updated API doc 2020-11-07 16:46:19 +00:00
Laurent Cozic
aa47ffb30f Api: Added way to get the notes associated with a resource 2020-11-07 16:45:02 +00:00
Laurent Cozic
83b175bb5b Api: Added ability to watch resource file 2020-11-07 16:32:08 +00:00
Laurent Cozic
04bfbec96b Tools: Renamed package namespace from @joplinapp to @joplin 2020-11-07 15:59:37 +00:00
Laurent Cozic
f950e9b03f Plugins: Force plugin devtool dialog to be detached 2020-11-07 15:50:22 +00:00
Laurent Cozic
a0f21796c2 Update website 2020-11-06 21:52:57 +00:00
Laurent Cozic
9af8720199 Tools: Fixed doc update scripts 2020-11-06 21:52:24 +00:00
Laurent Cozic
53c432ce12 Tools: Update Clipper release script 2020-11-06 21:41:12 +00:00
Laurent Cozic
553bbfc818 Tools: Restored CLI release script 2020-11-06 21:25:07 +00:00
Laurent Cozic
7b0122a8db Merge branch 'dev' of github.com:laurent22/joplin into dev 2020-11-06 20:41:37 +00:00
Laurent Cozic
7ea4f570cb Tools: Refactor Android release script 2020-11-06 18:45:45 +00:00
Laurent Cozic
1e1f2582c5 Tools: minor tweak 2020-11-06 12:31:30 +00:00
383 changed files with 3402 additions and 2150 deletions

View File

@@ -184,6 +184,9 @@ packages/app-cli/tests/services_InteropService.js.map
packages/app-cli/tests/services_PluginService.d.ts
packages/app-cli/tests/services_PluginService.js
packages/app-cli/tests/services_PluginService.js.map
packages/app-cli/tests/services_ResourceService.d.ts
packages/app-cli/tests/services_ResourceService.js
packages/app-cli/tests/services_ResourceService.js.map
packages/app-cli/tests/services_keychainService.d.ts
packages/app-cli/tests/services_keychainService.js
packages/app-cli/tests/services_keychainService.js.map
@@ -427,6 +430,9 @@ packages/app-desktop/gui/MainScreen/commands/showNoteProperties.js.map
packages/app-desktop/gui/MainScreen/commands/showShareNoteDialog.d.ts
packages/app-desktop/gui/MainScreen/commands/showShareNoteDialog.js
packages/app-desktop/gui/MainScreen/commands/showShareNoteDialog.js.map
packages/app-desktop/gui/MainScreen/commands/showSpellCheckerMenu.d.ts
packages/app-desktop/gui/MainScreen/commands/showSpellCheckerMenu.js
packages/app-desktop/gui/MainScreen/commands/showSpellCheckerMenu.js.map
packages/app-desktop/gui/MainScreen/commands/toggleEditors.d.ts
packages/app-desktop/gui/MainScreen/commands/toggleEditors.js
packages/app-desktop/gui/MainScreen/commands/toggleEditors.js.map
@@ -847,6 +853,9 @@ packages/lib/markupLanguageUtils.js.map
packages/lib/models/Alarm.d.ts
packages/lib/models/Alarm.js
packages/lib/models/Alarm.js.map
packages/lib/models/NoteResource.d.ts
packages/lib/models/NoteResource.js
packages/lib/models/NoteResource.js.map
packages/lib/models/Setting.d.ts
packages/lib/models/Setting.js
packages/lib/models/Setting.js.map
@@ -883,12 +892,18 @@ packages/lib/services/CommandService.js.map
packages/lib/services/KeymapService.d.ts
packages/lib/services/KeymapService.js
packages/lib/services/KeymapService.js.map
packages/lib/services/KvStore.d.ts
packages/lib/services/KvStore.js
packages/lib/services/KvStore.js.map
packages/lib/services/ResourceEditWatcher/index.d.ts
packages/lib/services/ResourceEditWatcher/index.js
packages/lib/services/ResourceEditWatcher/index.js.map
packages/lib/services/ResourceEditWatcher/reducer.d.ts
packages/lib/services/ResourceEditWatcher/reducer.js
packages/lib/services/ResourceEditWatcher/reducer.js.map
packages/lib/services/ResourceService.d.ts
packages/lib/services/ResourceService.js
packages/lib/services/ResourceService.js.map
packages/lib/services/SettingUtils.d.ts
packages/lib/services/SettingUtils.js
packages/lib/services/SettingUtils.js.map

15
.gitignore vendored
View File

@@ -176,6 +176,9 @@ packages/app-cli/tests/services_InteropService.js.map
packages/app-cli/tests/services_PluginService.d.ts
packages/app-cli/tests/services_PluginService.js
packages/app-cli/tests/services_PluginService.js.map
packages/app-cli/tests/services_ResourceService.d.ts
packages/app-cli/tests/services_ResourceService.js
packages/app-cli/tests/services_ResourceService.js.map
packages/app-cli/tests/services_keychainService.d.ts
packages/app-cli/tests/services_keychainService.js
packages/app-cli/tests/services_keychainService.js.map
@@ -419,6 +422,9 @@ packages/app-desktop/gui/MainScreen/commands/showNoteProperties.js.map
packages/app-desktop/gui/MainScreen/commands/showShareNoteDialog.d.ts
packages/app-desktop/gui/MainScreen/commands/showShareNoteDialog.js
packages/app-desktop/gui/MainScreen/commands/showShareNoteDialog.js.map
packages/app-desktop/gui/MainScreen/commands/showSpellCheckerMenu.d.ts
packages/app-desktop/gui/MainScreen/commands/showSpellCheckerMenu.js
packages/app-desktop/gui/MainScreen/commands/showSpellCheckerMenu.js.map
packages/app-desktop/gui/MainScreen/commands/toggleEditors.d.ts
packages/app-desktop/gui/MainScreen/commands/toggleEditors.js
packages/app-desktop/gui/MainScreen/commands/toggleEditors.js.map
@@ -839,6 +845,9 @@ packages/lib/markupLanguageUtils.js.map
packages/lib/models/Alarm.d.ts
packages/lib/models/Alarm.js
packages/lib/models/Alarm.js.map
packages/lib/models/NoteResource.d.ts
packages/lib/models/NoteResource.js
packages/lib/models/NoteResource.js.map
packages/lib/models/Setting.d.ts
packages/lib/models/Setting.js
packages/lib/models/Setting.js.map
@@ -875,12 +884,18 @@ packages/lib/services/CommandService.js.map
packages/lib/services/KeymapService.d.ts
packages/lib/services/KeymapService.js
packages/lib/services/KeymapService.js.map
packages/lib/services/KvStore.d.ts
packages/lib/services/KvStore.js
packages/lib/services/KvStore.js.map
packages/lib/services/ResourceEditWatcher/index.d.ts
packages/lib/services/ResourceEditWatcher/index.js
packages/lib/services/ResourceEditWatcher/index.js.map
packages/lib/services/ResourceEditWatcher/reducer.d.ts
packages/lib/services/ResourceEditWatcher/reducer.js
packages/lib/services/ResourceEditWatcher/reducer.js.map
packages/lib/services/ResourceService.d.ts
packages/lib/services/ResourceService.js
packages/lib/services/ResourceService.js.map
packages/lib/services/SettingUtils.d.ts
packages/lib/services/SettingUtils.js
packages/lib/services/SettingUtils.js.map

15
.ignore
View File

@@ -131,6 +131,9 @@ packages/app-cli/tests/services_InteropService.js.map
packages/app-cli/tests/services_PluginService.d.ts
packages/app-cli/tests/services_PluginService.js
packages/app-cli/tests/services_PluginService.js.map
packages/app-cli/tests/services_ResourceService.d.ts
packages/app-cli/tests/services_ResourceService.js
packages/app-cli/tests/services_ResourceService.js.map
packages/app-cli/tests/services_keychainService.d.ts
packages/app-cli/tests/services_keychainService.js
packages/app-cli/tests/services_keychainService.js.map
@@ -374,6 +377,9 @@ packages/app-desktop/gui/MainScreen/commands/showNoteProperties.js.map
packages/app-desktop/gui/MainScreen/commands/showShareNoteDialog.d.ts
packages/app-desktop/gui/MainScreen/commands/showShareNoteDialog.js
packages/app-desktop/gui/MainScreen/commands/showShareNoteDialog.js.map
packages/app-desktop/gui/MainScreen/commands/showSpellCheckerMenu.d.ts
packages/app-desktop/gui/MainScreen/commands/showSpellCheckerMenu.js
packages/app-desktop/gui/MainScreen/commands/showSpellCheckerMenu.js.map
packages/app-desktop/gui/MainScreen/commands/toggleEditors.d.ts
packages/app-desktop/gui/MainScreen/commands/toggleEditors.js
packages/app-desktop/gui/MainScreen/commands/toggleEditors.js.map
@@ -794,6 +800,9 @@ packages/lib/markupLanguageUtils.js.map
packages/lib/models/Alarm.d.ts
packages/lib/models/Alarm.js
packages/lib/models/Alarm.js.map
packages/lib/models/NoteResource.d.ts
packages/lib/models/NoteResource.js
packages/lib/models/NoteResource.js.map
packages/lib/models/Setting.d.ts
packages/lib/models/Setting.js
packages/lib/models/Setting.js.map
@@ -830,12 +839,18 @@ packages/lib/services/CommandService.js.map
packages/lib/services/KeymapService.d.ts
packages/lib/services/KeymapService.js
packages/lib/services/KeymapService.js.map
packages/lib/services/KvStore.d.ts
packages/lib/services/KvStore.js
packages/lib/services/KvStore.js.map
packages/lib/services/ResourceEditWatcher/index.d.ts
packages/lib/services/ResourceEditWatcher/index.js
packages/lib/services/ResourceEditWatcher/index.js.map
packages/lib/services/ResourceEditWatcher/reducer.d.ts
packages/lib/services/ResourceEditWatcher/reducer.js
packages/lib/services/ResourceEditWatcher/reducer.js.map
packages/lib/services/ResourceService.d.ts
packages/lib/services/ResourceService.js
packages/lib/services/ResourceService.js.map
packages/lib/services/SettingUtils.d.ts
packages/lib/services/SettingUtils.js
packages/lib/services/SettingUtils.js.map

View File

@@ -85,7 +85,7 @@ You can specify additional parameters when running the desktop or CLI applicatio
Since Joplin uses Lerna, adding a new dependency should not be done using `npm i -s ...`. Instead you should use the `lerna add` command, which will take care of adding the package while handling the linked packages correctly. For example, to add the package "leftpad" to the "app-desktop" sub-package, you would run:
npx lerna add leftpad --scope=@joplinapp/app-desktop
npx lerna add leftpad --scope=@joplin/app-desktop
Note that you should most likely always specify a scope because otherwise it will add the package to all the sub-packages.

View File

@@ -20,9 +20,9 @@ Three types of applications are available: for the **desktop** (Windows, macOS a
Operating System | Download | Alternative
-----------------|--------|-------------------
Windows (32 and 64-bit) | <a href='https://github.com/laurent22/joplin/releases/download/v1.2.6/Joplin-Setup-1.2.6.exe'><img alt='Get it on Windows' width="134px" src='https://joplinapp.org/images/BadgeWindows.png'/></a> | Or get the <a href='https://github.com/laurent22/joplin/releases/download/v1.2.6/JoplinPortable.exe'>Portable version</a><br><br>The [portable application](https://en.wikipedia.org/wiki/Portable_application) allows installing the software on a portable device such as a USB key. Simply copy the file JoplinPortable.exe in any directory on that USB key ; the application will then create a directory called "JoplinProfile" next to the executable file.
macOS | <a href='https://github.com/laurent22/joplin/releases/download/v1.2.6/Joplin-1.2.6.dmg'><img alt='Get it on macOS' width="134px" src='https://joplinapp.org/images/BadgeMacOS.png'/></a> | You can also use Homebrew (unsupported): `brew cask install joplin`
Linux | <a href='https://github.com/laurent22/joplin/releases/download/v1.2.6/Joplin-1.2.6.AppImage'><img alt='Get it on Linux' width="134px" src='https://joplinapp.org/images/BadgeLinux.png'/></a> | An Arch Linux package (unsupported) [is also available](#terminal-application).<br><br>If it works with your distribution (it has been tested on Ubuntu, Fedora, and Mint; the desktop environments supported are GNOME, KDE, Xfce, MATE, LXQT, LXDE, Unity, Cinnamon, Deepin and Pantheon), the recommended way is to use this script as it will handle the desktop icon too:<br><br> `wget -O - https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh \| bash`
Windows (32 and 64-bit) | <a href='https://github.com/laurent22/joplin/releases/download/v1.3.18/Joplin-Setup-1.3.18.exe'><img alt='Get it on Windows' width="134px" src='https://joplinapp.org/images/BadgeWindows.png'/></a> | Or get the <a href='https://github.com/laurent22/joplin/releases/download/v1.3.18/JoplinPortable.exe'>Portable version</a><br><br>The [portable application](https://en.wikipedia.org/wiki/Portable_application) allows installing the software on a portable device such as a USB key. Simply copy the file JoplinPortable.exe in any directory on that USB key ; the application will then create a directory called "JoplinProfile" next to the executable file.
macOS | <a href='https://github.com/laurent22/joplin/releases/download/v1.3.18/Joplin-1.3.18.dmg'><img alt='Get it on macOS' width="134px" src='https://joplinapp.org/images/BadgeMacOS.png'/></a> | You can also use Homebrew (unsupported): `brew cask install joplin`
Linux | <a href='https://github.com/laurent22/joplin/releases/download/v1.3.18/Joplin-1.3.18.AppImage'><img alt='Get it on Linux' width="134px" src='https://joplinapp.org/images/BadgeLinux.png'/></a> | An Arch Linux package (unsupported) [is also available](#terminal-application).<br><br>If it works with your distribution (it has been tested on Ubuntu, Fedora, and Mint; the desktop environments supported are GNOME, KDE, Xfce, MATE, LXQT, LXDE, Unity, Cinnamon, Deepin and Pantheon), the recommended way is to use this script as it will handle the desktop icon too:<br><br> `wget -O - https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh \| bash`
## Mobile applications

View File

@@ -67,21 +67,25 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>This class allows executing or registering new Joplin commands. Commands can be executed or associated with
<a href="joplinviewstoolbarbuttons.html">toolbar buttons</a> or <a href="joplinviewsmenuitems.html">menu items</a>.</p>
<p>This class allows executing or registering new Joplin commands. Commands
can be executed or associated with
<a href="joplinviewstoolbarbuttons.html">toolbar buttons</a> or
<a href="joplinviewsmenuitems.html">menu items</a>.</p>
</div>
<p><a href="https://github.com/laurent22/joplin/tree/dev/CliClient/tests/support/plugins/register_command">View the demo plugin</a></p>
<p><a href="https://github.com/laurent22/joplin/tree/dev/packages/app-cli/tests/support/plugins/register_command">View the demo plugin</a></p>
<a href="#executing-joplin39s-internal-commands" id="executing-joplin39s-internal-commands" style="color: inherit; text-decoration: none;">
<h2>Executing Joplin&#39;s internal commands</h2>
</a>
<p>It is also possible to execute internal Joplin&#39;s commands which, as of now, are not well documented.
You can find the list directly on GitHub though at the following locations:</p>
<p>It is also possible to execute internal Joplin&#39;s commands which, as of
now, are not well documented. You can find the list directly on GitHub
though at the following locations:</p>
<ul>
<li><a href="https://github.com/laurent22/joplin/tree/dev/ElectronClient/gui/MainScreen/commands">Main screen commands</a></li>
<li><a href="https://github.com/laurent22/joplin/tree/dev/ElectronClient/commands">Global commands</a></li>
<li><a href="https://github.com/laurent22/joplin/tree/dev/ElectronClient/gui/NoteEditor/commands/editorCommandDeclarations.ts">Editor commands</a></li>
<li><a href="https://github.com/laurent22/joplin/tree/dev/packages/app-desktop/gui/MainScreen/commands">Main screen commands</a></li>
<li><a href="https://github.com/laurent22/joplin/tree/dev/packages/app-desktop/commands">Global commands</a></li>
<li><a href="https://github.com/laurent22/joplin/tree/dev/packages/app-desktop/gui/NoteEditor/commands/editorCommandDeclarations.ts">Editor commands</a></li>
</ul>
<p>To view what arguments are supported, you can open any of these files and look at the <code>execute()</code> command.</p>
<p>To view what arguments are supported, you can open any of these files
and look at the <code>execute()</code> command.</p>
</div>
</section>
<!--
@@ -124,9 +128,14 @@
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p><span class="platform-desktop">desktop</span> Executes the given command.
The <code>props</code> are the arguments passed to the command, and they vary based on the command</p>
<p><span class="platform-desktop">desktop</span> Executes the given
command.</p>
</div>
<p>The command can take any number of arguments, and the supported
arguments will vary based on the command. For custom commands, this
is the <code>args</code> passed to the <code>execute()</code> function. For built-in
commands, you can find the supported arguments by checking the links
above.</p>
<pre><code class="language-typescript"><span class="hljs-comment">// Create a new note in the current notebook:</span>
<span class="hljs-keyword">await</span> joplin.commands.execute(<span class="hljs-string">&#x27;newNote&#x27;</span>);

View File

@@ -72,7 +72,7 @@
or to update them or delete them.</p>
</div>
<p>This is also what you would use to search notes, via the <code>search</code> endpoint.</p>
<p><a href="https://github.com/laurent22/joplin/tree/dev/CliClient/tests/support/plugins/simple">View the demo plugin</a></p>
<p><a href="https://github.com/laurent22/joplin/tree/dev/packages/app-cli/tests/support/plugins/simple">View the demo plugin</a></p>
<p>In general you would use the methods in this class as if you were using a REST API. There are four methods that map to GET, POST, PUT and DELETE calls.
And each method takes these parameters:</p>
<ul>

View File

@@ -69,7 +69,7 @@
<div class="lead">
<p>Provides a way to create modules to import external data into Joplin or to export notes into any arbitrary format.</p>
</div>
<p><a href="https://github.com/laurent22/joplin/tree/dev/CliClient/tests/support/plugins/json_export">View the demo plugin</a></p>
<p><a href="https://github.com/laurent22/joplin/tree/dev/packages/app-cli/tests/support/plugins/json_export">View the demo plugin</a></p>
<p>To implement an import or export module, you would simply define an object with various event handlers that are called
by the application during the import/export process.</p>
<p>See the documentation of the <a href="../interfaces/exportmodule.html">ExportModule</a> and <a href="../interfaces/importmodule.html">ImportModule</a> for more information.</p>

View File

@@ -155,7 +155,7 @@
</div>
<p>Note that registering a content script in itself will do nothing - it will only be loaded in specific cases by the relevant app modules
(eg. the Markdown renderer or the code editor). So it is not a way to inject and run arbitrary code in the app, which for safety and performance reasons is not supported.</p>
<p><a href="https://github.com/laurent22/joplin/tree/dev/CliClient/tests/support/plugins/content_script">View the demo plugin</a></p>
<p><a href="https://github.com/laurent22/joplin/tree/dev/packages/app-cli/tests/support/plugins/content_script">View the demo plugin</a></p>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">

View File

@@ -71,7 +71,7 @@
</div>
<p>Settings are essentially key/value pairs.</p>
<p>Note: Currently this API does <strong>not</strong> provide access to Joplin&#39;s built-in settings. This is by design as plugins that modify user settings could give unexpected results</p>
<p><a href="https://github.com/laurent22/joplin/tree/dev/CliClient/tests/support/plugins/settings">View the demo plugin</a></p>
<p><a href="https://github.com/laurent22/joplin/tree/dev/packages/app-cli/tests/support/plugins/settings">View the demo plugin</a></p>
</div>
</section>
<!--
@@ -124,7 +124,7 @@
<p>Gets a global setting value, including app-specific settings and those set by other plugins.</p>
</div>
<p>The list of available settings is not documented yet, but can be found by looking at the source code:</p>
<p><a href="https://github.com/laurent22/joplin/blob/3539a452a359162c461d2849829d2d42973eab50/ReactNativeClient/lib/models/Setting.ts#L142">https://github.com/laurent22/joplin/blob/3539a452a359162c461d2849829d2d42973eab50/ReactNativeClient/lib/models/Setting.ts#L142</a></p>
<p><a href="https://github.com/laurent22/joplin/blob/3539a452a359162c461d2849829d2d42973eab50/packages/app-mobile/lib/models/Setting.ts#L142">https://github.com/laurent22/joplin/blob/3539a452a359162c461d2849829d2d42973eab50/packages/app-mobile/lib/models/Setting.ts#L142</a></p>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">

View File

@@ -71,7 +71,7 @@
Dialogs are hidden by default and you need to call <code>open()</code> to open them. Once the user clicks on a button, the <code>open</code> call will return and provide the button ID that was
clicked on. There is currently no &quot;close&quot; method since the dialog should be thought as a modal one and thus can only be closed by clicking on one of the buttons.</p>
</div>
<p><a href="https://github.com/laurent22/joplin/tree/dev/CliClient/tests/support/plugins/dialog">View the demo plugin</a></p>
<p><a href="https://github.com/laurent22/joplin/tree/dev/packages/app-cli/tests/support/plugins/dialog">View the demo plugin</a></p>
</div>
</section>
<!--

View File

@@ -69,7 +69,7 @@
<div class="lead">
<p>Allows creating and managing menu items.</p>
</div>
<p><a href="https://github.com/laurent22/joplin/tree/dev/CliClient/tests/support/plugins/register_command">View the demo plugin</a></p>
<p><a href="https://github.com/laurent22/joplin/tree/dev/packages/app-cli/tests/support/plugins/register_command">View the demo plugin</a></p>
</div>
</section>
<!--

View File

@@ -69,7 +69,7 @@
<div class="lead">
<p>Allows creating menus.</p>
</div>
<p><a href="https://github.com/laurent22/joplin/tree/dev/CliClient/tests/support/plugins/menu">View the demo plugin</a></p>
<p><a href="https://github.com/laurent22/joplin/tree/dev/packages/app-cli/tests/support/plugins/menu">View the demo plugin</a></p>
</div>
</section>
<!--

View File

@@ -70,7 +70,7 @@
<p>Allows creating and managing view panels. View panels currently are displayed at the right of the sidebar and allows displaying any HTML content (within a webview) and update it in real-time. For example
it could be used to display a table of content for the active note, or display various metadata or graph.</p>
</div>
<p><a href="https://github.com/laurent22/joplin/tree/dev/CliClient/tests/support/plugins/toc">View the demo plugin</a></p>
<p><a href="https://github.com/laurent22/joplin/tree/dev/packages/app-cli/tests/support/plugins/toc">View the demo plugin</a></p>
</div>
</section>
<!--

View File

@@ -69,7 +69,7 @@
<div class="lead">
<p>Allows creating and managing toolbar buttons.</p>
</div>
<p><a href="https://github.com/laurent22/joplin/tree/dev/CliClient/tests/support/plugins/register_command">View the demo plugin</a></p>
<p><a href="https://github.com/laurent22/joplin/tree/dev/packages/app-cli/tests/support/plugins/register_command">View the demo plugin</a></p>
</div>
</section>
<!--

View File

@@ -70,7 +70,7 @@
<p>The workspace service provides access to all the parts of Joplin that are being worked on - i.e. the currently selected notes or notebooks as well
as various related events, such as when a new note is selected, or when the note content changes.</p>
</div>
<p><a href="https://github.com/laurent22/joplin/tree/dev/CliClient/tests/support/plugins">View the demo plugin</a></p>
<p><a href="https://github.com/laurent22/joplin/tree/dev/packages/app-cli/tests/support/plugins">View the demo plugin</a></p>
</div>
</section>
<!--

View File

@@ -112,9 +112,9 @@
<ul>
<li><p>The <code>context</code> argument is currently unused but could be used later on to provide access to your own plugin so that the content script and plugin can communicate.</p>
</li>
<li><p>The <strong>required</strong> <code>plugin</code> key is the actual Markdown-It plugin - check the <a href="https://github.com/markdown-it/markdown-it">official doc</a> for more information. The <code>options</code> parameter is of type <a href="https://github.com/laurent22/joplin/blob/dev/ReactNativeClient/lib/joplin-renderer/MdToHtml.ts">RuleOptions</a>, which contains a number of options, mostly useful for Joplin&#39;s internal code.</p>
<li><p>The <strong>required</strong> <code>plugin</code> key is the actual Markdown-It plugin - check the <a href="https://github.com/markdown-it/markdown-it">official doc</a> for more information. The <code>options</code> parameter is of type <a href="https://github.com/laurent22/joplin/blob/dev/packages/app-mobile/lib/joplin-renderer/MdToHtml.ts">RuleOptions</a>, which contains a number of options, mostly useful for Joplin&#39;s internal code.</p>
</li>
<li><p>Using the <strong>optional</strong> <code>assets</code> key you may specify assets such as JS or CSS that should be loaded in the rendered HTML document. Check for example the Joplin <a href="https://github.com/laurent22/joplin/blob/dev/ReactNativeClient/lib/joplin-renderer/MdToHtml/rules/mermaid.ts">Mermaid plugin</a> to see how the data should be structured.</p>
<li><p>Using the <strong>optional</strong> <code>assets</code> key you may specify assets such as JS or CSS that should be loaded in the rendered HTML document. Check for example the Joplin <a href="https://github.com/laurent22/joplin/blob/dev/packages/app-mobile/lib/joplin-renderer/MdToHtml/rules/mermaid.ts">Mermaid plugin</a> to see how the data should be structured.</p>
</li>
</ul>
<p>To include a regular Markdown-It plugin, that doesn&#39;t make use of any Joplin-specific features, you would simply create a file such as this:</p>

View File

@@ -142,7 +142,7 @@
<td>&quot;oneNoteSelected &amp;&amp; !inConflictFolder&quot;</td>
</tr>
</tbody></table>
<p>Currently the supported context variables aren&#39;t documented, but you can <a href="https://github.com/laurent22/joplin/blob/dev/ReactNativeClient/lib/services/commands/stateToWhenClauseContext.ts">find the list here</a>.</p>
<p>Currently the supported context variables aren&#39;t documented, but you can <a href="https://github.com/laurent22/joplin/blob/dev/packages/app-mobile/lib/services/commands/stateToWhenClauseContext.ts">find the list here</a>.</p>
<p>Note: Commands are enabled by default unless you use this property.</p>
</div>
</section>

View File

@@ -67,7 +67,7 @@
<section class="tsd-panel tsd-comment">
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Used to implement a module to export data from Joplin. <a href="https://github.com/laurent22/joplin/tree/dev/CliClient/tests/support/plugins/json_export">View the demo plugin</a> for an example.</p>
<p>Used to implement a module to export data from Joplin. <a href="https://github.com/laurent22/joplin/tree/dev/packages/app-cli/tests/support/plugins/json_export">View the demo plugin</a> for an example.</p>
</div>
<p>In general, all the event handlers you&#39;ll need to implement take a <code>context</code> object as a first argument. This object will contain the export or import path as well as various optional properties, such as which notes or notebooks need to be exported.</p>
<p>To get a better sense of what it will contain it can be useful to print it using <code>console.info(context)</code>.</p>

View File

@@ -663,7 +663,7 @@ document.addEventListener('click', event =&gt; {
// ...
</code></pre>
<p>And that's it! If you run this code you should now have a fully functional TOC. The full source code is available there:</p>
<p><a href="https://github.com/laurent22/joplin/tree/dev/CliClient/tests/support/plugins/toc/">https://github.com/laurent22/joplin/tree/dev/CliClient/tests/support/plugins/toc/</a></p>
<p><a href="https://github.com/laurent22/joplin/tree/dev/packages/app-cli/tests/support/plugins/toc/">https://github.com/laurent22/joplin/tree/dev/packages/app-cli/tests/support/plugins/toc/</a></p>
<p>Various improvements can be made such as improving the styling, making the header collapsible, etc. but that tutorial should provide the basic building blocks to do so. You might also want to check the <a href="https://joplinapp.org/api/references/plugin_api/classes/joplin.html">plugin API</a> for further information or head to the <a href="https://discourse.joplinapp.org/c/development/6">development forum</a> for support.</p>
<div class="bottom-links">

View File

@@ -421,7 +421,7 @@ set &quot;PATH=C:\Program Files\nodejs;%PATH%&quot;
<p>So everything should be done from a Windows Command prompt or Windows PowerShell running as Administrator. All build and start commands are designed to work cross-platform, including on Windows.</p>
<h1>Mobile application<a name="mobile-application" href="#mobile-application" class="heading-anchor">🔗</a></h1>
<h2>iOS<a name="ios" href="#ios" class="heading-anchor">🔗</a></h2>
<p>If there is an error <code>/joplin/ReactNativeClient/ios/Pods/Target Support Files/Pods-Joplin/Pods-Joplin.debug.xcconfig: unable to open file (in target &quot;Joplin&quot; in project &quot;Joplin&quot;) (in target 'Joplin' from project 'Joplin')</code> run the following commands:</p>
<p>If there is an error <code>/joplin/packages/app-mobile/ios/Pods/Target Support Files/Pods-Joplin/Pods-Joplin.debug.xcconfig: unable to open file (in target &quot;Joplin&quot; in project &quot;Joplin&quot;) (in target 'Joplin' from project 'Joplin')</code> run the following commands:</p>
<pre><code>cd ios
pod deintegrate
pod install

View File

@@ -392,6 +392,424 @@ https://github.com/laurent22/joplin/blob/dev/readme/changelog.md
<div class="main">
<h1>Joplin changelog<a name="joplin-changelog" href="#joplin-changelog" class="heading-anchor">🔗</a></h1>
<h2><a href="https://github.com/laurent22/joplin/releases/tag/v1.3.18">v1.3.18</a> - 2020-11-06T12:07:02Z<a name="v1-3-18-https-github-com-laurent22-joplin-releases-tag-v1-3-18-2020-11-06t12-07-02z" href="#v1-3-18-https-github-com-laurent22-joplin-releases-tag-v1-3-18-2020-11-06t12-07-02z" class="heading-anchor">🔗</a></h2>
<ul>
<li>Regression: Random crash when syncing due to undefined tags (<a href="https://github.com/laurent22/joplin/issues/4051">#4051</a>)</li>
<li>Fixed: Keymap editor crash when an invalid command is used (<a href="https://github.com/laurent22/joplin/issues/4049">#4049</a>)</li>
</ul>
<hr>
<ul>
<li>New: Add support for application plugins (<a href="https://github.com/laurent22/joplin/issues/3257">#3257</a>)</li>
<li>New: Added Thunderbird count for desktop client (<a href="https://github.com/laurent22/joplin/issues/3880">#3880</a> by <a href="https://github.com/Technik-J">@Technik-J</a>)</li>
<li>New: Added support for Menu API for plugins</li>
<li>New: Added support for plugins packaged as JS bundles</li>
<li>New: Added <code>openProfileDirectory</code> command and menu item</li>
<li>New: Api: Added service to access resource external editing</li>
<li>New: Plugins: Add the openNote, openFolder and openTag commands</li>
<li>Security: Remove &quot;link&quot; and &quot;meta&quot; tags from notes to prevent XSS (Discovered by <a href="https://twitter.com/fhlipZero">Phil Holbrook</a>)</li>
<li>Improved: Make “update is available” dialog box easier to use (<a href="https://github.com/laurent22/joplin/issues/3877">#3877</a> by <a href="https://github.com/roryokane">@roryokane</a>)</li>
<li>Improved: Sort tags in a case-insensitive way</li>
<li>Improved: Display more info while an ENEX file is being imported</li>
<li>Improved: Made toolbar buttons bigger and swap order of bullet and number lists</li>
<li>Improved: Api: Allow preserving timestamps when updating a note</li>
<li>Improved: Added support for a custom S3 URL (<a href="https://github.com/laurent22/joplin/issues/3921">#3921</a>) (<a href="https://github.com/laurent22/joplin/issues/3691">#3691</a> by <a href="https://github.com/aaron">@aaron</a>)</li>
<li>Improved: Actually enter insert mode after pressing o/O in CodeMirror vim mode (<a href="https://github.com/laurent22/joplin/issues/3897">#3897</a> by Caleb John)</li>
<li>Improved: Simplified and improve command service, and added command palette</li>
<li>Improved: Tray: Exit -&gt; Quit (<a href="https://github.com/laurent22/joplin/issues/3945">#3945</a> by Helmut K. C. Tessarek)</li>
<li>Improved: Import <code>&lt;strike&gt;</code>, <code>&lt;s&gt;</code> tags (strikethrough) from Evernote (<a href="https://github.com/laurent22/joplin/issues/3936">#3936</a> by Ian Slinger)</li>
<li>Improved: Make sidebar item font weight normal (not bold)</li>
<li>Improved: Plugin API - added support for settings.globalValue method</li>
<li>Improved: Remove Hide Joplin menu item on Linux and Windows</li>
<li>Improved: Removed OneDrive Dev sync target which was not really useful</li>
<li>Improved: Allow setting note geolocation attributes via API (<a href="https://github.com/laurent22/joplin/issues/3884">#3884</a>)</li>
<li>Improved: Disabled emoji highlighting in editor when emoji plugin is disabled (<a href="https://github.com/laurent22/joplin/issues/3852">#3852</a> by Rahil Sarvaiya)</li>
<li>Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting (<a href="https://github.com/laurent22/joplin/issues/3777">#3777</a> by <a href="https://github.com/shawnaxsom">@shawnaxsom</a>)</li>
<li>Improved: Make sure all commands appear in keymap editor</li>
<li>Fixed: Add history backward and forward commands to keymap and menus (<a href="https://github.com/laurent22/joplin/issues/4010">#4010</a>)</li>
<li>Fixed: Fixed handling of Option key for shortcuts in macOS</li>
<li>Fixed: Fix slow Katex rendering when there are many global definitions (<a href="https://github.com/laurent22/joplin/issues/3993">#3993</a>)</li>
<li>Fixed: Fix syntax of imported resources when importing ENEX as HTML</li>
<li>Fixed: Fixed OneDrive authentication</li>
<li>Fixed: Fixed sync issue when importing ENEX files that contain new line characters in the source URL attribute (<a href="https://github.com/laurent22/joplin/issues/3955">#3955</a>)</li>
<li>Fixed: Handle gzipped CSS files when importing from clipper (<a href="https://github.com/laurent22/joplin/issues/3986">#3986</a>)</li>
<li>Fixed: Update highlight.js to fix freeze for certain code blocks (<a href="https://github.com/laurent22/joplin/issues/3992">#3992</a>)</li>
<li>Fixed: Fix search filters when language is in Korean or with accents (<a href="https://github.com/laurent22/joplin/issues/3947">#3947</a> by Naveen M V)</li>
<li>Fixed: Fixed freeze when importing ENEX as HTML, and fixed potential error when importing resources (<a href="https://github.com/laurent22/joplin/issues/3958">#3958</a>)</li>
<li>Fixed: Fixed setting issue that would cause a password to be saved in plain text in the database, even when the keychain is working</li>
<li>Fixed: Fixed sidebar performance issue when there are many notebooks or tags (<a href="https://github.com/laurent22/joplin/issues/3893">#3893</a>)</li>
<li>Fixed: Allows toggling external editing off and on again (<a href="https://github.com/laurent22/joplin/issues/3886">#3886</a>)</li>
<li>Fixed: Fixed toggleNoteList and toggleSidebar commands</li>
<li>Fixed: Fixed Toggle Editor button tooltip and icon</li>
</ul>
<h2><a href="https://github.com/laurent22/joplin/releases/tag/v1.3.17">v1.3.17</a> - 2020-11-06T11:35:15Z<a name="v1-3-17-https-github-com-laurent22-joplin-releases-tag-v1-3-17-2020-11-06t11-35-15z" href="#v1-3-17-https-github-com-laurent22-joplin-releases-tag-v1-3-17-2020-11-06t11-35-15z" class="heading-anchor">🔗</a></h2>
<ul>
<li>Regression: Random crash when syncing due to undefined tags (<a href="https://github.com/laurent22/joplin/issues/4051">#4051</a>)</li>
</ul>
<hr>
<ul>
<li>New: Add support for application plugins (<a href="https://github.com/laurent22/joplin/issues/3257">#3257</a>)</li>
<li>New: Added Thunderbird count for desktop client (<a href="https://github.com/laurent22/joplin/issues/3880">#3880</a> by <a href="https://github.com/Technik-J">@Technik-J</a>)</li>
<li>New: Added support for Menu API for plugins</li>
<li>New: Added support for plugins packaged as JS bundles</li>
<li>New: Added <code>openProfileDirectory</code> command and menu item</li>
<li>New: Api: Added service to access resource external editing</li>
<li>New: Plugins: Add the openNote, openFolder and openTag commands</li>
<li>Security: Remove &quot;link&quot; and &quot;meta&quot; tags from notes to prevent XSS (Discovered by <a href="https://twitter.com/fhlipZero">Phil Holbrook</a>)</li>
<li>Improved: Make “update is available” dialog box easier to use (<a href="https://github.com/laurent22/joplin/issues/3877">#3877</a> by <a href="https://github.com/roryokane">@roryokane</a>)</li>
<li>Improved: Sort tags in a case-insensitive way</li>
<li>Improved: Display more info while an ENEX file is being imported</li>
<li>Improved: Made toolbar buttons bigger and swap order of bullet and number lists</li>
<li>Improved: Api: Allow preserving timestamps when updating a note</li>
<li>Improved: Added support for a custom S3 URL (<a href="https://github.com/laurent22/joplin/issues/3921">#3921</a>) (<a href="https://github.com/laurent22/joplin/issues/3691">#3691</a> by <a href="https://github.com/aaron">@aaron</a>)</li>
<li>Improved: Actually enter insert mode after pressing o/O in CodeMirror vim mode (<a href="https://github.com/laurent22/joplin/issues/3897">#3897</a> by Caleb John)</li>
<li>Improved: Simplified and improve command service, and added command palette</li>
<li>Improved: Tray: Exit -&gt; Quit (<a href="https://github.com/laurent22/joplin/issues/3945">#3945</a> by Helmut K. C. Tessarek)</li>
<li>Improved: Import <code>&lt;strike&gt;</code>, <code>&lt;s&gt;</code> tags (strikethrough) from Evernote (<a href="https://github.com/laurent22/joplin/issues/3936">#3936</a> by Ian Slinger)</li>
<li>Improved: Make sidebar item font weight normal (not bold)</li>
<li>Improved: Plugin API - added support for settings.globalValue method</li>
<li>Improved: Remove Hide Joplin menu item on Linux and Windows</li>
<li>Improved: Removed OneDrive Dev sync target which was not really useful</li>
<li>Improved: Allow setting note geolocation attributes via API (<a href="https://github.com/laurent22/joplin/issues/3884">#3884</a>)</li>
<li>Improved: Disabled emoji highlighting in editor when emoji plugin is disabled (<a href="https://github.com/laurent22/joplin/issues/3852">#3852</a> by Rahil Sarvaiya)</li>
<li>Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting (<a href="https://github.com/laurent22/joplin/issues/3777">#3777</a> by <a href="https://github.com/shawnaxsom">@shawnaxsom</a>)</li>
<li>Improved: Make sure all commands appear in keymap editor</li>
<li>Fixed: Add history backward and forward commands to keymap and menus (<a href="https://github.com/laurent22/joplin/issues/4010">#4010</a>)</li>
<li>Fixed: Fixed handling of Option key for shortcuts in macOS</li>
<li>Fixed: Fix slow Katex rendering when there are many global definitions (<a href="https://github.com/laurent22/joplin/issues/3993">#3993</a>)</li>
<li>Fixed: Fix syntax of imported resources when importing ENEX as HTML</li>
<li>Fixed: Fixed OneDrive authentication</li>
<li>Fixed: Fixed sync issue when importing ENEX files that contain new line characters in the source URL attribute (<a href="https://github.com/laurent22/joplin/issues/3955">#3955</a>)</li>
<li>Fixed: Handle gzipped CSS files when importing from clipper (<a href="https://github.com/laurent22/joplin/issues/3986">#3986</a>)</li>
<li>Fixed: Update highlight.js to fix freeze for certain code blocks (<a href="https://github.com/laurent22/joplin/issues/3992">#3992</a>)</li>
<li>Fixed: Fix search filters when language is in Korean or with accents (<a href="https://github.com/laurent22/joplin/issues/3947">#3947</a> by Naveen M V)</li>
<li>Fixed: Fixed freeze when importing ENEX as HTML, and fixed potential error when importing resources (<a href="https://github.com/laurent22/joplin/issues/3958">#3958</a>)</li>
<li>Fixed: Fixed setting issue that would cause a password to be saved in plain text in the database, even when the keychain is working</li>
<li>Fixed: Fixed sidebar performance issue when there are many notebooks or tags (<a href="https://github.com/laurent22/joplin/issues/3893">#3893</a>)</li>
<li>Fixed: Allows toggling external editing off and on again (<a href="https://github.com/laurent22/joplin/issues/3886">#3886</a>)</li>
<li>Fixed: Fixed toggleNoteList and toggleSidebar commands</li>
<li>Fixed: Fixed Toggle Editor button tooltip and icon</li>
</ul>
<h2><a href="https://github.com/laurent22/joplin/releases/tag/v1.4.6">v1.4.6</a> - 2020-11-05T22:44:12Z<a name="v1-4-6-https-github-com-laurent22-joplin-releases-tag-v1-4-6-2020-11-05t22-44-12z" href="#v1-4-6-https-github-com-laurent22-joplin-releases-tag-v1-4-6-2020-11-05t22-44-12z" class="heading-anchor">🔗</a></h2>
<p>IMPORTANT: If you use the Clipper API, please note that there are a few breaking changes in this version. See this link for more information: <a href="https://github.com/laurent22/joplin/pull/3983">https://github.com/laurent22/joplin/pull/3983</a></p>
<ul>
<li>New: API: Adds ability to paginate data (<a href="https://github.com/laurent22/joplin/issues/3983">#3983</a>)</li>
<li>New: Adds spell checker support for Rich Text editor (<a href="https://github.com/laurent22/joplin/issues/3974">#3974</a>)</li>
<li>Improved: Change Markdown rendering to align with CommonMark spec (<a href="https://github.com/laurent22/joplin/issues/3839">#3839</a>)</li>
</ul>
<h2><a href="https://github.com/laurent22/joplin/releases/tag/v1.3.15">v1.3.15</a> - 2020-11-04T12:22:50Z<a name="v1-3-15-https-github-com-laurent22-joplin-releases-tag-v1-3-15-2020-11-04t12-22-50z" href="#v1-3-15-https-github-com-laurent22-joplin-releases-tag-v1-3-15-2020-11-04t12-22-50z" class="heading-anchor">🔗</a></h2>
<ul>
<li>New: Add support for application plugins (<a href="https://github.com/laurent22/joplin/issues/3257">#3257</a>)</li>
<li>New: Added Thunderbird count for desktop client (<a href="https://github.com/laurent22/joplin/issues/3880">#3880</a> by <a href="https://github.com/Technik-J">@Technik-J</a>)</li>
<li>New: Added support for Menu API for plugins</li>
<li>New: Added support for plugins packaged as JS bundles</li>
<li>New: Added <code>openProfileDirectory</code> command and menu item</li>
<li>New: Api: Added service to access resource external editing</li>
<li>New: Plugins: Add the openNote, openFolder and openTag commands</li>
<li>Security: Remove &quot;link&quot; and &quot;meta&quot; tags from notes to prevent XSS (Discovered by <a href="https://twitter.com/fhlipZero">Phil Holbrook</a>)</li>
<li>Improved: Make “update is available” dialog box easier to use (<a href="https://github.com/laurent22/joplin/issues/3877">#3877</a> by <a href="https://github.com/roryokane">@roryokane</a>)</li>
<li>Improved: Sort tags in a case-insensitive way</li>
<li>Improved: Display more info while an ENEX file is being imported</li>
<li>Improved: Made toolbar buttons bigger and swap order of bullet and number lists</li>
<li>Improved: Api: Allow preserving timestamps when updating a note</li>
<li>Improved: Added support for a custom S3 URL (<a href="https://github.com/laurent22/joplin/issues/3921">#3921</a>) (<a href="https://github.com/laurent22/joplin/issues/3691">#3691</a> by <a href="https://github.com/aaron">@aaron</a>)</li>
<li>Improved: Actually enter insert mode after pressing o/O in CodeMirror vim mode (<a href="https://github.com/laurent22/joplin/issues/3897">#3897</a> by Caleb John)</li>
<li>Improved: Simplified and improve command service, and added command palette</li>
<li>Improved: Tray: Exit -&gt; Quit (<a href="https://github.com/laurent22/joplin/issues/3945">#3945</a> by Helmut K. C. Tessarek)</li>
<li>Improved: Import <code>&lt;strike&gt;</code>, <code>&lt;s&gt;</code> tags (strikethrough) from Evernote (<a href="https://github.com/laurent22/joplin/issues/3936">#3936</a> by Ian Slinger)</li>
<li>Improved: Make sidebar item font weight normal (not bold)</li>
<li>Improved: Plugin API - added support for settings.globalValue method</li>
<li>Improved: Remove Hide Joplin menu item on Linux and Windows</li>
<li>Improved: Removed OneDrive Dev sync target which was not really useful</li>
<li>Improved: Allow setting note geolocation attributes via API (<a href="https://github.com/laurent22/joplin/issues/3884">#3884</a>)</li>
<li>Improved: Disabled emoji highlighting in editor when emoji plugin is disabled (<a href="https://github.com/laurent22/joplin/issues/3852">#3852</a> by Rahil Sarvaiya)</li>
<li>Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting (<a href="https://github.com/laurent22/joplin/issues/3777">#3777</a> by <a href="https://github.com/shawnaxsom">@shawnaxsom</a>)</li>
<li>Improved: Make sure all commands appear in keymap editor</li>
<li>Fixed: Add history backward and forward commands to keymap and menus (<a href="https://github.com/laurent22/joplin/issues/4010">#4010</a>)</li>
<li>Fixed: Fixed handling of Option key for shortcuts in macOS</li>
<li>Fixed: Fix slow Katex rendering when there are many global definitions (<a href="https://github.com/laurent22/joplin/issues/3993">#3993</a>)</li>
<li>Fixed: Fix syntax of imported resources when importing ENEX as HTML</li>
<li>Fixed: Fixed OneDrive authentication</li>
<li>Fixed: Fixed sync issue when importing ENEX files that contain new line characters in the source URL attribute (<a href="https://github.com/laurent22/joplin/issues/3955">#3955</a>)</li>
<li>Fixed: Handle gzipped CSS files when importing from clipper (<a href="https://github.com/laurent22/joplin/issues/3986">#3986</a>)</li>
<li>Fixed: Update highlight.js to fix freeze for certain code blocks (<a href="https://github.com/laurent22/joplin/issues/3992">#3992</a>)</li>
<li>Fixed: Fix search filters when language is in Korean or with accents (<a href="https://github.com/laurent22/joplin/issues/3947">#3947</a> by Naveen M V)</li>
<li>Fixed: Fixed freeze when importing ENEX as HTML, and fixed potential error when importing resources (<a href="https://github.com/laurent22/joplin/issues/3958">#3958</a>)</li>
<li>Fixed: Fixed setting issue that would cause a password to be saved in plain text in the database, even when the keychain is working</li>
<li>Fixed: Fixed sidebar performance issue when there are many notebooks or tags (<a href="https://github.com/laurent22/joplin/issues/3893">#3893</a>)</li>
<li>Fixed: Allows toggling external editing off and on again (<a href="https://github.com/laurent22/joplin/issues/3886">#3886</a>)</li>
<li>Fixed: Fixed toggleNoteList and toggleSidebar commands</li>
<li>Fixed: Fixed Toggle Editor button tooltip and icon</li>
</ul>
<h2><a href="https://github.com/laurent22/joplin/releases/tag/v1.3.11">v1.3.11</a> - 2020-10-31T13:22:20Z<a name="v1-3-11-https-github-com-laurent22-joplin-releases-tag-v1-3-11-2020-10-31t13-22-20z" href="#v1-3-11-https-github-com-laurent22-joplin-releases-tag-v1-3-11-2020-10-31t13-22-20z" class="heading-anchor">🔗</a></h2>
<ul>
<li>Improved: Make sure all commands appear in keymap editor</li>
<li>Fixed: Add history backward and forward commands to keymap and menus (<a href="https://github.com/laurent22/joplin/issues/4010">#4010</a>)</li>
<li>Fixed: Fixed handling of Option key for shortcuts in macOS</li>
<li>Security: Remove &quot;link&quot; and &quot;meta&quot; tags from notes to prevent XSS</li>
</ul>
<hr>
<ul>
<li>New: Add support for application plugins (<a href="https://github.com/laurent22/joplin/issues/3257">#3257</a>)</li>
<li>New: Added Thunderbird count for desktop client (<a href="https://github.com/laurent22/joplin/issues/3880">#3880</a> by <a href="https://github.com/Technik-J">@Technik-J</a>)</li>
<li>New: Added support for Menu API for plugins</li>
<li>New: Added support for plugins packaged as JS bundles</li>
<li>New: Added <code>openProfileDirectory</code> command and menu item</li>
<li>New: Api: Added service to access resource external editing</li>
<li>New: Plugins: Add the openNote, openFolder and openTag commands</li>
<li>Improved: Make “update is available” dialog box easier to use (<a href="https://github.com/laurent22/joplin/issues/3877">#3877</a> by <a href="https://github.com/roryokane">@roryokane</a>)</li>
<li>Improved: Sort tags in a case-insensitive way</li>
<li>Improved: Display more info while an ENEX file is being imported</li>
<li>Improved: Made toolbar buttons bigger and swap order of bullet and number lists</li>
<li>Improved: Api: Allow preserving timestamps when updating a note</li>
<li>Improved: Added support for a custom S3 URL (<a href="https://github.com/laurent22/joplin/issues/3921">#3921</a>) (<a href="https://github.com/laurent22/joplin/issues/3691">#3691</a> by <a href="https://github.com/aaron">@aaron</a>)</li>
<li>Improved: Actually enter insert mode after pressing o/O in CodeMirror vim mode (<a href="https://github.com/laurent22/joplin/issues/3897">#3897</a> by Caleb John)</li>
<li>Improved: Simplified and improve command service, and added command palette</li>
<li>Improved: Tray: Exit -&gt; Quit (<a href="https://github.com/laurent22/joplin/issues/3945">#3945</a> by Helmut K. C. Tessarek)</li>
<li>Improved: Import <code>&lt;strike&gt;</code>, <code>&lt;s&gt;</code> tags (strikethrough) from Evernote (<a href="https://github.com/laurent22/joplin/issues/3936">#3936</a> by Ian Slinger)</li>
<li>Improved: Make sidebar item font weight normal (not bold)</li>
<li>Improved: Plugin API - added support for settings.globalValue method</li>
<li>Improved: Remove Hide Joplin menu item on Linux and Windows</li>
<li>Improved: Removed OneDrive Dev sync target which was not really useful</li>
<li>Improved: Allow setting note geolocation attributes via API (<a href="https://github.com/laurent22/joplin/issues/3884">#3884</a>)</li>
<li>Improved: Disabled emoji highlighting in editor when emoji plugin is disabled (<a href="https://github.com/laurent22/joplin/issues/3852">#3852</a> by Rahil Sarvaiya)</li>
<li>Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting (<a href="https://github.com/laurent22/joplin/issues/3777">#3777</a> by <a href="https://github.com/shawnaxsom">@shawnaxsom</a>)</li>
<li>Fixed: Fix slow Katex rendering when there are many global definitions (<a href="https://github.com/laurent22/joplin/issues/3993">#3993</a>)</li>
<li>Fixed: Fix syntax of imported resources when importing ENEX as HTML</li>
<li>Fixed: Fixed OneDrive authentication</li>
<li>Fixed: Fixed sync issue when importing ENEX files that contain new line characters in the source URL attribute (<a href="https://github.com/laurent22/joplin/issues/3955">#3955</a>)</li>
<li>Fixed: Handle gzipped CSS files when importing from clipper (<a href="https://github.com/laurent22/joplin/issues/3986">#3986</a>)</li>
<li>Fixed: Update highlight.js to fix freeze for certain code blocks (<a href="https://github.com/laurent22/joplin/issues/3992">#3992</a>)</li>
<li>Fixed: Fix search filters when language is in Korean or with accents (<a href="https://github.com/laurent22/joplin/issues/3947">#3947</a> by Naveen M V)</li>
<li>Fixed: Fixed freeze when importing ENEX as HTML, and fixed potential error when importing resources (<a href="https://github.com/laurent22/joplin/issues/3958">#3958</a>)</li>
<li>Fixed: Fixed setting issue that would cause a password to be saved in plain text in the database, even when the keychain is working</li>
<li>Fixed: Fixed sidebar performance issue when there are many notebooks or tags (<a href="https://github.com/laurent22/joplin/issues/3893">#3893</a>)</li>
<li>Fixed: Allows toggling external editing off and on again (<a href="https://github.com/laurent22/joplin/issues/3886">#3886</a>)</li>
<li>Fixed: Fixed toggleNoteList and toggleSidebar commands</li>
<li>Fixed: Fixed Toggle Editor button toolip and icon</li>
</ul>
<h2><a href="https://github.com/laurent22/joplin/releases/tag/v1.3.10">v1.3.10</a> - 2020-10-29T13:27:14Z<a name="v1-3-10-https-github-com-laurent22-joplin-releases-tag-v1-3-10-2020-10-29t13-27-14z" href="#v1-3-10-https-github-com-laurent22-joplin-releases-tag-v1-3-10-2020-10-29t13-27-14z" class="heading-anchor">🔗</a></h2>
<ul>
<li>New: Api: Added service to access resource external editing</li>
<li>New: Plugins: Add the openNote, openFolder and openTag commands</li>
<li>Fixed: Regression: Keyboard shortcut would not save in some cases</li>
<li>Fixed: Regression: Restore &quot;New sub-notebook&quot; command</li>
<li>Fixed: Command Palette click did not work</li>
<li>Fixed: Fix slow Katex rendering when there are many global definitions (<a href="https://github.com/laurent22/joplin/issues/3993">#3993</a>)</li>
<li>Fixed: Fix syntax of imported resources when importing ENEX as HTML</li>
<li>Fixed: Fixed OneDrive authentication</li>
<li>Fixed: Fixed sync issue when importing ENEX files that contain new line characters in the source URL attribute (<a href="https://github.com/laurent22/joplin/issues/3955">#3955</a>)</li>
<li>Fixed: Handle gzipped CSS files when importing from clipper (<a href="https://github.com/laurent22/joplin/issues/3986">#3986</a>)</li>
<li>Fixed: Update highlight.js to fix freeze for certain code blocks (<a href="https://github.com/laurent22/joplin/issues/3992">#3992</a>)</li>
</ul>
<hr>
<ul>
<li>New: Add support for application plugins (<a href="https://github.com/laurent22/joplin/issues/3257">#3257</a>)</li>
<li>New: Added Thunderbird count for desktop client (<a href="https://github.com/laurent22/joplin/issues/3880">#3880</a> by <a href="https://github.com/Technik-J">@Technik-J</a>)</li>
<li>New: Added support for Menu API for plugins</li>
<li>New: Added support for plugins packaged as JS bundles</li>
<li>New: Added <code>openProfileDirectory</code> command and menu item</li>
<li>Improved: Make “update is available” dialog box easier to use (<a href="https://github.com/laurent22/joplin/issues/3877">#3877</a> by <a href="https://github.com/roryokane">@roryokane</a>)</li>
<li>Improved: Sort tags in a case-insensitive way</li>
<li>Improved: Display more info while an ENEX file is being imported</li>
<li>Improved: Made toolbar buttons bigger and swap order of bullet and number lists</li>
<li>Improved: Api: Allow preserving timestamps when updating a note</li>
<li>Improved: Added support for a custom S3 URL (<a href="https://github.com/laurent22/joplin/issues/3921">#3921</a>) (<a href="https://github.com/laurent22/joplin/issues/3691">#3691</a> by <a href="https://github.com/aaron">@aaron</a>)</li>
<li>Improved: Actually enter insert mode after pressing o/O in CodeMirror vim mode (<a href="https://github.com/laurent22/joplin/issues/3897">#3897</a> by Caleb John)</li>
<li>Improved: Simplified and improve command service, and added command palette</li>
<li>Improved: Tray: Exit -&gt; Quit (<a href="https://github.com/laurent22/joplin/issues/3945">#3945</a> by Helmut K. C. Tessarek)</li>
<li>Improved: Import <code>&lt;strike&gt;</code>, <code>&lt;s&gt;</code> tags (strikethrough) from Evernote (<a href="https://github.com/laurent22/joplin/issues/3936">#3936</a> by Ian Slinger)</li>
<li>Improved: Make sidebar item font weight normal (not bold)</li>
<li>Improved: Plugin API - added support for settings.globalValue method</li>
<li>Improved: Remove Hide Joplin menu item on Linux and Windows</li>
<li>Improved: Removed OneDrive Dev sync target which was not really useful</li>
<li>Improved: Allow setting note geolocation attributes via API (<a href="https://github.com/laurent22/joplin/issues/3884">#3884</a>)</li>
<li>Improved: Disabled emoji highlighting in editor when emoji plugin is disabled (<a href="https://github.com/laurent22/joplin/issues/3852">#3852</a> by Rahil Sarvaiya)</li>
<li>Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting (<a href="https://github.com/laurent22/joplin/issues/3777">#3777</a> by <a href="https://github.com/shawnaxsom">@shawnaxsom</a>)</li>
<li>Fixed: Fix search filters when language is in Korean or with accents (<a href="https://github.com/laurent22/joplin/issues/3947">#3947</a> by Naveen M V)</li>
<li>Fixed: Fixed freeze when importing ENEX as HTML, and fixed potential error when importing resources (<a href="https://github.com/laurent22/joplin/issues/3958">#3958</a>)</li>
<li>Fixed: Fixed setting issue that would cause a password to be saved in plain text in the database, even when the keychain is working</li>
<li>Fixed: Fixed sidebar performance issue when there are many notebooks or tags (<a href="https://github.com/laurent22/joplin/issues/3893">#3893</a>)</li>
<li>Fixed: Allows toggling external editing off and on again (<a href="https://github.com/laurent22/joplin/issues/3886">#3886</a>)</li>
<li>Fixed: Fixed toggleNoteList and toggleSidebar commands</li>
<li>Fixed: Fixed Toggle Editor button toolip and icon</li>
</ul>
<h2><a href="https://github.com/laurent22/joplin/releases/tag/v1.3.9">v1.3.9</a> - 2020-10-23T16:04:26Z<a name="v1-3-9-https-github-com-laurent22-joplin-releases-tag-v1-3-9-2020-10-23t16-04-26z" href="#v1-3-9-https-github-com-laurent22-joplin-releases-tag-v1-3-9-2020-10-23t16-04-26z" class="heading-anchor">🔗</a></h2>
<ul>
<li>New: Added <code>openProfileDirectory</code> command and menu item</li>
<li>Improved: Make “update is available” dialog box easier to use (<a href="https://github.com/laurent22/joplin/issues/3877">#3877</a> by <a href="https://github.com/roryokane">@roryokane</a>)</li>
<li>Improved: Sort tags in a case-insensitive way</li>
<li>Fixed: Fix invalid tag state issue when importing notes or syncing</li>
<li>Fixed: Fix search filters when language is in Korean or with accents (<a href="https://github.com/laurent22/joplin/issues/3947">#3947</a> by Naveen M V)</li>
<li>Fixed: Fixed Cut menu item</li>
</ul>
<hr>
<ul>
<li>New: Add support for application plugins (<a href="https://github.com/laurent22/joplin/issues/3257">#3257</a>)</li>
<li>New: Added Thunderbird count for desktop client (<a href="https://github.com/laurent22/joplin/issues/3880">#3880</a> by <a href="https://github.com/Technik-J">@Technik-J</a>)</li>
<li>New: Added support for Menu API for plugins</li>
<li>New: Added support for plugins packaged as JS bundles</li>
<li>Improved: Display more info while an ENEX file is being imported</li>
<li>Improved: Made toolbar buttons bigger and swap order of bullet and number lists</li>
<li>Improved: Api: Allow preserving timestamps when updating a note</li>
<li>Improved: Added support for a custom S3 URL (<a href="https://github.com/laurent22/joplin/issues/3921">#3921</a>) (<a href="https://github.com/laurent22/joplin/issues/3691">#3691</a> by <a href="https://github.com/aaron">@aaron</a>)</li>
<li>Improved: Actually enter insert mode after pressing o/O in CodeMirror vim mode (<a href="https://github.com/laurent22/joplin/issues/3897">#3897</a> by Caleb John)</li>
<li>Improved: Simplified and improve command service, and added command palette</li>
<li>Improved: Tray: Exit -&gt; Quit (<a href="https://github.com/laurent22/joplin/issues/3945">#3945</a> by Helmut K. C. Tessarek)</li>
<li>Improved: Import <code>&lt;strike&gt;</code>, <code>&lt;s&gt;</code> tags (strikethrough) from Evernote (<a href="https://github.com/laurent22/joplin/issues/3936">#3936</a> by Ian Slinger)</li>
<li>Improved: Make sidebar item font weight normal (not bold)</li>
<li>Improved: Plugin API - added support for settings.globalValue method</li>
<li>Improved: Remove Hide Joplin menu item on Linux and Windows</li>
<li>Improved: Removed OneDrive Dev sync target which was not really useful</li>
<li>Improved: Allow setting note geolocation attributes via API (<a href="https://github.com/laurent22/joplin/issues/3884">#3884</a>)</li>
<li>Improved: Disabled emoji highlighting in editor when emoji plugin is disabled (<a href="https://github.com/laurent22/joplin/issues/3852">#3852</a> by Rahil Sarvaiya)</li>
<li>Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting (<a href="https://github.com/laurent22/joplin/issues/3777">#3777</a> by <a href="https://github.com/shawnaxsom">@shawnaxsom</a>)</li>
<li>Fixed: Fixed freeze when importing ENEX as HTML, and fixed potential error when importing resources (<a href="https://github.com/laurent22/joplin/issues/3958">#3958</a>)</li>
<li>Fixed: Fixed setting issue that would cause a password to be saved in plain text in the database, even when the keychain is working</li>
<li>Fixed: Fixed sidebar performance issue when there are many notebooks or tags (<a href="https://github.com/laurent22/joplin/issues/3893">#3893</a>)</li>
<li>Fixed: Allows toggling external editing off and on again (<a href="https://github.com/laurent22/joplin/issues/3886">#3886</a>)</li>
<li>Fixed: Fixed toggleNoteList and toggleSidebar commands</li>
<li>Fixed: Fixed Toggle Editor button toolip and icon</li>
</ul>
<h2><a href="https://github.com/laurent22/joplin/releases/tag/v1.3.8">v1.3.8</a> - 2020-10-21T18:46:29Z<a name="v1-3-8-https-github-com-laurent22-joplin-releases-tag-v1-3-8-2020-10-21t18-46-29z" href="#v1-3-8-https-github-com-laurent22-joplin-releases-tag-v1-3-8-2020-10-21t18-46-29z" class="heading-anchor">🔗</a></h2>
<ul>
<li>New: Plugins: Added support for content scripts</li>
<li>Improved: Api: Allow preserving timestamps when updating a note</li>
<li>Improved: Display more info while an ENEX file is being imported</li>
<li>Improved: Made toolbar buttons bigger and swap order of bullet and number lists</li>
<li>Improved: Plugins: Allow custom commands to return a result</li>
<li>Fixed: Certain commands no longer worked. (<a href="https://github.com/laurent22/joplin/issues/3962">#3962</a>)</li>
<li>Fixed: Fixed freeze when importing ENEX as HTML, and fixed potential error when importing resources (<a href="https://github.com/laurent22/joplin/issues/3958">#3958</a>)</li>
<li>Fixed: Fixed setting issue that would cause a password to be saved in plain text in the database, even when the keychain is working</li>
<li>Fixed: Regression: Fixed format of copied version info</li>
</ul>
<hr>
<ul>
<li>New: Add support for application plugins (<a href="https://github.com/laurent22/joplin/issues/3257">#3257</a>)</li>
<li>New: Added Thunderbird count for desktop client (<a href="https://github.com/laurent22/joplin/issues/3880">#3880</a> by <a href="https://github.com/Technik-J">@Technik-J</a>)</li>
<li>New: Added support for Menu API for plugins</li>
<li>New: Added support for plugins packaged as JS bundles</li>
<li>Improved: Added support for a custom S3 URL (<a href="https://github.com/laurent22/joplin/issues/3921">#3921</a>) (<a href="https://github.com/laurent22/joplin/issues/3691">#3691</a> by <a href="https://github.com/aaron">@aaron</a>)</li>
<li>Improved: Actually enter insert mode after pressing o/O in CodeMirror vim mode (<a href="https://github.com/laurent22/joplin/issues/3897">#3897</a> by Caleb John)</li>
<li>Improved: Simplified and improve command service, and added command palette</li>
<li>Improved: Tray: Exit -&gt; Quit (<a href="https://github.com/laurent22/joplin/issues/3945">#3945</a> by Helmut K. C. Tessarek)</li>
<li>Improved: Import <code>&lt;strike&gt;</code>, <code>&lt;s&gt;</code> tags (strikethrough) from Evernote (<a href="https://github.com/laurent22/joplin/issues/3936">#3936</a> by Ian Slinger)</li>
<li>Improved: Make sidebar item font weight normal (not bold)</li>
<li>Improved: Plugin API - added support for settings.globalValue method</li>
<li>Improved: Remove Hide Joplin menu item on Linux and Windows</li>
<li>Improved: Removed OneDrive Dev sync target which was not really useful</li>
<li>Improved: Allow setting note geolocation attributes via API (<a href="https://github.com/laurent22/joplin/issues/3884">#3884</a>)</li>
<li>Improved: Disabled emoji highlighting in editor when emoji plugin is disabled (<a href="https://github.com/laurent22/joplin/issues/3852">#3852</a> by Rahil Sarvaiya)</li>
<li>Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting (<a href="https://github.com/laurent22/joplin/issues/3777">#3777</a> by <a href="https://github.com/shawnaxsom">@shawnaxsom</a>)</li>
<li>Fixed: Fixed sidebar performance issue when there are many notebooks or tags (<a href="https://github.com/laurent22/joplin/issues/3893">#3893</a>)</li>
<li>Fixed: Allows toggling external editing off and on again (<a href="https://github.com/laurent22/joplin/issues/3886">#3886</a>)</li>
<li>Fixed: Fixed toggleNoteList and toggleSidebar commands</li>
<li>Fixed: Fixed Toggle Editor button toolip and icon</li>
</ul>
<h2><a href="https://github.com/laurent22/joplin/releases/tag/v1.3.7">v1.3.7</a> - 2020-10-20T11:35:55Z<a name="v1-3-7-https-github-com-laurent22-joplin-releases-tag-v1-3-7-2020-10-20t11-35-55z" href="#v1-3-7-https-github-com-laurent22-joplin-releases-tag-v1-3-7-2020-10-20t11-35-55z" class="heading-anchor">🔗</a></h2>
<ul>
<li>Improved: Added support for a custom S3 URL (<a href="https://github.com/laurent22/joplin/issues/3921">#3921</a>) (<a href="https://github.com/laurent22/joplin/issues/3691">#3691</a> by <a href="https://github.com/aaron">@aaron</a>)</li>
<li>Improved: Import <code>&lt;strike&gt;</code>, <code>&lt;s&gt;</code> tags (strikethrough) from Evernote (<a href="https://github.com/laurent22/joplin/issues/3936">#3936</a> by Ian Slinger)</li>
<li>Improved: Simplified and improve command service, and added command palette</li>
<li>Improved: Tray: Exit -&gt; Quit (<a href="https://github.com/laurent22/joplin/issues/3945">#3945</a> by Helmut K. C. Tessarek)</li>
<li>Fixed: Trying to fix sidebar performance issue when there are many notebooks or tags (<a href="https://github.com/laurent22/joplin/issues/3893">#3893</a>)</li>
</ul>
<hr>
<ul>
<li>New: Add support for application plugins (<a href="https://github.com/laurent22/joplin/issues/3257">#3257</a>)</li>
<li>New: Added Thunderbird count for desktop client (<a href="https://github.com/laurent22/joplin/issues/3880">#3880</a> by <a href="https://github.com/Technik-J">@Technik-J</a>)</li>
<li>New: Added support for Menu API for plugins</li>
<li>New: Added support for plugins packaged as JS bundles</li>
<li>Improved: Actually enter insert mode after pressing o/O in CodeMirror vim mode (<a href="https://github.com/laurent22/joplin/issues/3897">#3897</a> by Caleb John)</li>
<li>Improved: Make sidebar item font weight normal (not bold)</li>
<li>Improved: Plugin API - added support for settings.globalValue method</li>
<li>Improved: Remove Hide Joplin menu item on Linux and Windows</li>
<li>Improved: Removed OneDrive Dev sync target which was not really useful</li>
<li>Improved: Allow setting note geolocation attributes via API (<a href="https://github.com/laurent22/joplin/issues/3884">#3884</a>)</li>
<li>Improved: Disabled emoji highlighting in editor when emoji plugin is disabled (<a href="https://github.com/laurent22/joplin/issues/3852">#3852</a> by Rahil Sarvaiya)</li>
<li>Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting (<a href="https://github.com/laurent22/joplin/issues/3777">#3777</a> by <a href="https://github.com/shawnaxsom">@shawnaxsom</a>)</li>
<li>Fixed: Allows toggling external editing off and on again (<a href="https://github.com/laurent22/joplin/issues/3886">#3886</a>)</li>
<li>Fixed: Fixed toggleNoteList and toggleSidebar commands</li>
<li>Fixed: Fixed Toggle Editor button toolip and icon</li>
</ul>
<h2><a href="https://github.com/laurent22/joplin/releases/tag/v1.3.5">v1.3.5</a> - 2020-10-17T14:26:35Z<a name="v1-3-5-https-github-com-laurent22-joplin-releases-tag-v1-3-5-2020-10-17t14-26-35z" href="#v1-3-5-https-github-com-laurent22-joplin-releases-tag-v1-3-5-2020-10-17t14-26-35z" class="heading-anchor">🔗</a></h2>
<ul>
<li>Fixed: Regression: Remove Hide Joplin menu item on Linux too</li>
<li>Fixed: Regression: Editor toolbar was disabled when importing note from MD file (<a href="https://github.com/laurent22/joplin/issues/3915">#3915</a>)</li>
<li>Fixed: Regression: Header links with special characters were no longer working (<a href="https://github.com/laurent22/joplin/issues/3903">#3903</a>)</li>
<li>Fixed: Regression: Importing ENEX as HTML was importing as Markdown (<a href="https://github.com/laurent22/joplin/issues/3923">#3923</a>)</li>
<li>Fixed: Regression - Layout Button Sequence menu items were disabled (<a href="https://github.com/laurent22/joplin/issues/3899">#3899</a>)</li>
<li>Fixed: Regression: Fix export of pluginAssets when exporting to html/pdf (<a href="https://github.com/laurent22/joplin/issues/3927">#3927</a> by Caleb John)</li>
<li>Fixed: Regression: Fixed check for update</li>
<li>Fixed: Regression: Fixed move to notebook from context menu</li>
<li>Fixed: Regression: Fixed opening links</li>
</ul>
<hr>
<ul>
<li>New: Add support for application plugins (<a href="https://github.com/laurent22/joplin/issues/3257">#3257</a>)</li>
<li>New: Added Thunderbird count for desktop client (<a href="https://github.com/laurent22/joplin/issues/3880">#3880</a> by <a href="https://github.com/Technik-J">@Technik-J</a>)</li>
<li>New: Added support for Menu API for plugins</li>
<li>New: Added support for plugins packaged as JS bundles</li>
<li>Improved: Actually enter insert mode after pressing o/O in CodeMirror vim mode (<a href="https://github.com/laurent22/joplin/issues/3897">#3897</a> by Caleb John)</li>
<li>Improved: Make sidebar item font weight normal (not bold)</li>
<li>Improved: Plugin API - added support for settings.globalValue method</li>
<li>Improved: Remove Hide Joplin menu item on Linux and Windows</li>
<li>Improved: Removed OneDrive Dev sync target which was not really useful</li>
<li>Improved: Allow setting note geolocation attributes via API (<a href="https://github.com/laurent22/joplin/issues/3884">#3884</a>)</li>
<li>Improved: Disabled emoji highlighting in editor when emoji plugin is disabled (<a href="https://github.com/laurent22/joplin/issues/3852">#3852</a> by Rahil Sarvaiya)</li>
<li>Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting (<a href="https://github.com/laurent22/joplin/issues/3777">#3777</a> by <a href="https://github.com/shawnaxsom">@shawnaxsom</a>)</li>
<li>Fixed: Allows toggling external editing off and on again (<a href="https://github.com/laurent22/joplin/issues/3886">#3886</a>)</li>
<li>Fixed: Fixed toggleNoteList and toggleSidebar commands</li>
<li>Fixed: Fixed Toggle Editor button toolip and icon</li>
</ul>
<h2><a href="https://github.com/laurent22/joplin/releases/tag/v1.3.3">v1.3.3</a> - 2020-10-17T10:56:57Z<a name="v1-3-3-https-github-com-laurent22-joplin-releases-tag-v1-3-3-2020-10-17t10-56-57z" href="#v1-3-3-https-github-com-laurent22-joplin-releases-tag-v1-3-3-2020-10-17t10-56-57z" class="heading-anchor">🔗</a></h2>
<ul>
<li>Fixed: Regression: Remove Hide Joplin menu item on Linux too</li>
<li>Fixed: Regression: Editor toolbar was disabled when importing note from MD file (<a href="https://github.com/laurent22/joplin/issues/3915">#3915</a>)</li>
<li>Fixed: Regression: Header links with special characters were no longer working (<a href="https://github.com/laurent22/joplin/issues/3903">#3903</a>)</li>
<li>Fixed: Regression: Importing ENEX as HTML was importing as Markdown (<a href="https://github.com/laurent22/joplin/issues/3923">#3923</a>)</li>
<li>Fixed: Regression - Layout Button Sequence menu items were disabled (<a href="https://github.com/laurent22/joplin/issues/3899">#3899</a>)</li>
<li>Fixed: Regression: Fix export of pluginAssets when exporting to html/pdf (<a href="https://github.com/laurent22/joplin/issues/3927">#3927</a> by Caleb John)</li>
<li>Fixed: Regression: Fixed check for update</li>
<li>Fixed: Regression: Fixed move to notebook from context menu</li>
</ul>
<hr>
<ul>
<li>New: Add support for application plugins (<a href="https://github.com/laurent22/joplin/issues/3257">#3257</a>)</li>
<li>New: Added Thunderbird count for desktop client (<a href="https://github.com/laurent22/joplin/issues/3880">#3880</a> by <a href="https://github.com/Technik-J">@Technik-J</a>)</li>
<li>New: Added support for Menu API for plugins</li>
<li>New: Added support for plugins packaged as JS bundles</li>
<li>Improved: Actually enter insert mode after pressing o/O in CodeMirror vim mode (<a href="https://github.com/laurent22/joplin/issues/3897">#3897</a> by Caleb John)</li>
<li>Improved: Make sidebar item font weight normal (not bold)</li>
<li>Improved: Plugin API - added support for settings.globalValue method</li>
<li>Improved: Remove Hide Joplin menu item on Linux and Windows</li>
<li>Improved: Removed OneDrive Dev sync target which was not really useful</li>
<li>Improved: Allow setting note geolocation attributes via API (<a href="https://github.com/laurent22/joplin/issues/3884">#3884</a>)</li>
<li>Improved: Disabled emoji highlighting in editor when emoji plugin is disabled (<a href="https://github.com/laurent22/joplin/issues/3852">#3852</a> by Rahil Sarvaiya)</li>
<li>Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting (<a href="https://github.com/laurent22/joplin/issues/3777">#3777</a> by <a href="https://github.com/shawnaxsom">@shawnaxsom</a>)</li>
<li>Fixed: Allows toggling external editing off and on again (<a href="https://github.com/laurent22/joplin/issues/3886">#3886</a>)</li>
<li>Fixed: Fixed toggleNoteList and toggleSidebar commands</li>
<li>Fixed: Fixed Toggle Editor button toolip and icon</li>
</ul>
<h2><a href="https://github.com/laurent22/joplin/releases/tag/v1.3.2">v1.3.2</a> - 2020-10-11T20:39:49Z<a name="v1-3-2-https-github-com-laurent22-joplin-releases-tag-v1-3-2-2020-10-11t20-39-49z" href="#v1-3-2-https-github-com-laurent22-joplin-releases-tag-v1-3-2-2020-10-11t20-39-49z" class="heading-anchor">🔗</a></h2>
<ul>
<li>Fixed: Regression: Context menu in sidebar could point to wrong item</li>
</ul>
<hr>
<ul>
<li>New: Add support for application plugins (<a href="https://github.com/laurent22/joplin/issues/3257">#3257</a>)</li>
<li>Improved: Allow setting note geolocation attributes via API (<a href="https://github.com/laurent22/joplin/issues/3884">#3884</a>)</li>
<li>Improved: Disabled emoji highlighting in editor when emoji plugin is disabled (<a href="https://github.com/laurent22/joplin/issues/3852">#3852</a> by Rahil Sarvaiya)</li>
<li>Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting (<a href="https://github.com/laurent22/joplin/issues/3777">#3777</a> by <a href="https://github.com/shawnaxsom">@shawnaxsom</a>)</li>
<li>Fixed: Allows toggling external editing off and on again (<a href="https://github.com/laurent22/joplin/issues/3886">#3886</a>)</li>
</ul>
<h2><a href="https://github.com/laurent22/joplin/releases/tag/v1.3.1">v1.3.1</a> - 2020-10-11T15:10:18Z<a name="v1-3-1-https-github-com-laurent22-joplin-releases-tag-v1-3-1-2020-10-11t15-10-18z" href="#v1-3-1-https-github-com-laurent22-joplin-releases-tag-v1-3-1-2020-10-11t15-10-18z" class="heading-anchor">🔗</a></h2>
<ul>
<li>New: Add support for application plugins (<a href="https://github.com/laurent22/joplin/issues/3257">#3257</a>)</li>
<li>Improved: Allow setting note geolocation attributes via API (<a href="https://github.com/laurent22/joplin/issues/3884">#3884</a>)</li>
<li>Improved: Disabled emoji highlighting in editor when emoji plugin is disabled (<a href="https://github.com/laurent22/joplin/issues/3852">#3852</a> by Rahil Sarvaiya)</li>
<li>Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting (<a href="https://github.com/laurent22/joplin/issues/3777">#3777</a> by <a href="https://github.com/shawnaxsom">@shawnaxsom</a>)</li>
<li>Fixed: Allows toggling external editing off and on again (<a href="https://github.com/laurent22/joplin/issues/3886">#3886</a>)</li>
</ul>
<h2><a href="https://github.com/laurent22/joplin/releases/tag/v1.2.6">v1.2.6</a> - 2020-10-09T13:56:59Z<a name="v1-2-6-https-github-com-laurent22-joplin-releases-tag-v1-2-6-2020-10-09t13-56-59z" href="#v1-2-6-https-github-com-laurent22-joplin-releases-tag-v1-2-6-2020-10-09t13-56-59z" class="heading-anchor">🔗</a></h2>
<ul>
<li>New: Updated UI (<a href="https://github.com/laurent22/joplin/issues/3586">#3586</a>)</li>

View File

@@ -392,6 +392,14 @@ https://github.com/laurent22/joplin/blob/dev/readme/changelog_cli.md
<div class="main">
<h1>Joplin terminal app changelog<a name="joplin-terminal-app-changelog" href="#joplin-terminal-app-changelog" class="heading-anchor">🔗</a></h1>
<h2><a href="https://github.com/laurent22/joplin/releases/tag/cli-v1.4.3">cli-v1.4.3</a> - 2020-11-06T21:19:29Z<a name="cli-v1-4-3-https-github-com-laurent22-joplin-releases-tag-cli-v1-4-3-2020-11-06t21-19-29z" href="#cli-v1-4-3-https-github-com-laurent22-joplin-releases-tag-cli-v1-4-3-2020-11-06t21-19-29z" class="heading-anchor">🔗</a></h2>
<p>IMPORTANT: If you use the web API, please note that there are a few breaking changes in this release. See here for more information: <a href="https://github.com/laurent22/joplin/pull/3983#issue-509624899">https://github.com/laurent22/joplin/pull/3983#issue-509624899</a></p>
<ul>
<li>New: API: Adds ability to paginate data (#3983)</li>
<li>Fixed: Display proper error message when decryption worker cannot be started (#4000)</li>
<li>Fixed: Fixed OneDrive authentication</li>
<li>Fixed: Fixed sync issue when importing ENEX files that contain new line characters in the source URL attribute (#3955)</li>
</ul>
<h2><a href="https://github.com/laurent22/joplin/releases/tag/cli-v1.3.3">cli-v1.3.3</a> - 2020-10-23T16:00:38Z<a name="cli-v1-3-3-https-github-com-laurent22-joplin-releases-tag-cli-v1-3-3-2020-10-23t16-00-38z" href="#cli-v1-3-3-https-github-com-laurent22-joplin-releases-tag-cli-v1-3-3-2020-10-23t16-00-38z" class="heading-anchor">🔗</a></h2>
<ul>
<li>Improved: Added support for a custom S3 URL (#3921) (#3691 by <a href="https://github.com/aaron">@aaron</a>)</li>
@@ -517,7 +525,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/changelog_cli.md
<li>Improved: Upgrade sqlite (#2248 by Devon Zuegel)</li>
<li>Improved: Extract note renderer to separate package (WIP) (#2206 by Laurent Cozic)</li>
<li>Improved: Better handling of resource download errors, and added resource info to sync status screen</li>
<li>Improved: Update CliClient node dependency to 10+ (#2177 by <a href="https://github.com/joeltaylor">@joeltaylor</a>)</li>
<li>Improved: Update Node dependency to 10+ (#2177 by <a href="https://github.com/joeltaylor">@joeltaylor</a>)</li>
<li>Improved: Allow exporting a note as HTML</li>
<li>Improved: Improved logging during sync to allow finding bugs more easily</li>
<li>Fixed: Handle WebDAV servers that do not return a last modified date (fixes <a href="http://mail.ru">mail.ru</a>) (#2091)</li>

View File

@@ -412,17 +412,17 @@ https://github.com/laurent22/joplin/blob/dev/README.md
<tbody>
<tr>
<td>Windows (32 and 64-bit)</td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v1.2.6/Joplin-Setup-1.2.6.exe'><img alt='Get it on Windows' width="134px" src='https://joplinapp.org/images/BadgeWindows.png'/></a></td>
<td>Or get the <a href='https://github.com/laurent22/joplin/releases/download/v1.2.6/JoplinPortable.exe'>Portable version</a><br><br>The <a href="https://en.wikipedia.org/wiki/Portable_application">portable application</a> allows installing the software on a portable device such as a USB key. Simply copy the file JoplinPortable.exe in any directory on that USB key ; the application will then create a directory called &quot;JoplinProfile&quot; next to the executable file.</td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v1.3.18/Joplin-Setup-1.3.18.exe'><img alt='Get it on Windows' width="134px" src='https://joplinapp.org/images/BadgeWindows.png'/></a></td>
<td>Or get the <a href='https://github.com/laurent22/joplin/releases/download/v1.3.18/JoplinPortable.exe'>Portable version</a><br><br>The <a href="https://en.wikipedia.org/wiki/Portable_application">portable application</a> allows installing the software on a portable device such as a USB key. Simply copy the file JoplinPortable.exe in any directory on that USB key ; the application will then create a directory called &quot;JoplinProfile&quot; next to the executable file.</td>
</tr>
<tr>
<td>macOS</td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v1.2.6/Joplin-1.2.6.dmg'><img alt='Get it on macOS' width="134px" src='https://joplinapp.org/images/BadgeMacOS.png'/></a></td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v1.3.18/Joplin-1.3.18.dmg'><img alt='Get it on macOS' width="134px" src='https://joplinapp.org/images/BadgeMacOS.png'/></a></td>
<td>You can also use Homebrew (unsupported): <code>brew cask install joplin</code></td>
</tr>
<tr>
<td>Linux</td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v1.2.6/Joplin-1.2.6.AppImage'><img alt='Get it on Linux' width="134px" src='https://joplinapp.org/images/BadgeLinux.png'/></a></td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v1.3.18/Joplin-1.3.18.AppImage'><img alt='Get it on Linux' width="134px" src='https://joplinapp.org/images/BadgeLinux.png'/></a></td>
<td>An Arch Linux package (unsupported) <a href="#terminal-application">is also available</a>.<br><br>If it works with your distribution (it has been tested on Ubuntu, Fedora, and Mint; the desktop environments supported are GNOME, KDE, Xfce, MATE, LXQT, LXDE, Unity, Cinnamon, Deepin and Pantheon), the recommended way is to use this script as it will handle the desktop icon too:<br><br> <code>wget -O - https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh | bash</code></td>
</tr>
</tbody>
@@ -440,7 +440,7 @@ https://github.com/laurent22/joplin/blob/dev/README.md
<tr>
<td>Android</td>
<td><a href='https://play.google.com/store/apps/details?id=net.cozic.joplin&utm_source=GitHub&utm_campaign=README&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1'><img alt='Get it on Google Play' height="40px" src='https://joplinapp.org/images/BadgeAndroid.png'/></a></td>
<td>or download the APK file: <a href="https://github.com/laurent22/joplin-android/releases/download/android-v1.3.10/joplin-v1.3.10.apk">64-bit</a> <a href="https://github.com/laurent22/joplin-android/releases/download/android-v1.3.10/joplin-v1.3.10-32bit.apk">32-bit</a></td>
<td>or download the APK file: <a href="https://github.com/laurent22/joplin-android/releases/download/android-v1.3.13/joplin-v1.3.13.apk">64-bit</a> <a href="https://github.com/laurent22/joplin-android/releases/download/android-v1.3.13/joplin-v1.3.13-32bit.apk">32-bit</a></td>
</tr>
<tr>
<td>iOS</td>
@@ -849,12 +849,12 @@ Eg. <code>:search -- &quot;-tag:tag1&quot;</code>.</p>
<li>You can join the live community on <a href="https://discordapp.com/invite/d2HMPwE">the JoplinApp discord server</a> to get help with Joplin or to discuss anything Joplin related.</li>
</ul>
<h1>Contributing<a name="contributing" href="#contributing" class="heading-anchor">🔗</a></h1>
<p>Please see the guide for information on how to contribute to the development of Joplin: <a href="https://github.com/laurent22/joplin/blob/master/CONTRIBUTING.md">https://github.com/laurent22/joplin/blob/master/CONTRIBUTING.md</a></p>
<p>Please see the guide for information on how to contribute to the development of Joplin: <a href="https://github.com/laurent22/joplin/blob/dev/CONTRIBUTING.md">https://github.com/laurent22/joplin/blob/dev/CONTRIBUTING.md</a></p>
<h1>Localisation<a name="localisation" href="#localisation" class="heading-anchor">🔗</a></h1>
<p>Joplin is currently available in the languages below. If you would like to contribute a <strong>new translation</strong>, it is quite straightforward, please follow these steps:</p>
<ul>
<li><a href="https://poedit.net/">Download Poedit</a>, the translation editor, and install it.</li>
<li><a href="https://raw.githubusercontent.com/laurent22/joplin/dev/CliClient/locales/joplin.pot">Download the file to be translated</a>.</li>
<li><a href="https://raw.githubusercontent.com/laurent22/joplin/dev/packages/app-cli/locales/joplin.pot">Download the file to be translated</a>.</li>
<li>In Poedit, open this .pot file, go into the Catalog menu and click Configuration. Change &quot;Country&quot; and &quot;Language&quot; to your own country and language.</li>
<li>From then you can translate the file.</li>
<li>Once it is done, please <a href="https://github.com/laurent22/joplin/pulls">open a pull request</a> and add the file to it.</li>
@@ -877,266 +877,266 @@ Eg. <code>:search -- &quot;-tag:tag1&quot;</code>.</p>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/arableague.png" alt=""></td>
<td>Arabic</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/ar.po">ar</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/ar.po">ar</a></td>
<td><a href="mailto:fi_ahmed_bacha@esi.dz">أحمد باشا إبراهيم</a></td>
<td>78%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/es/basque_country.png" alt=""></td>
<td>Basque</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/eu.po">eu</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/eu.po">eu</a></td>
<td>juan.abasolo@ehu.eus</td>
<td>33%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/ba.png" alt=""></td>
<td>Bosnian</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/bs_BA.po">bs_BA</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/bs_BA.po">bs_BA</a></td>
<td><a href="mailto:dervis.t@pm.me">Derviš T.</a></td>
<td>82%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/bg.png" alt=""></td>
<td>Bulgarian</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/bg_BG.po">bg_BG</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/bg_BG.po">bg_BG</a></td>
<td></td>
<td>65%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/es/catalonia.png" alt=""></td>
<td>Catalan</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/ca.po">ca</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/ca.po">ca</a></td>
<td>jmontane, 2019</td>
<td>95%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/hr.png" alt=""></td>
<td>Croatian</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/hr_HR.po">hr_HR</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/hr_HR.po">hr_HR</a></td>
<td><a href="mailto:trbuhom@net.hr">Hrvoje Mandić</a></td>
<td>27%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/cz.png" alt=""></td>
<td>Czech</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/cs_CZ.po">cs_CZ</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/cs_CZ.po">cs_CZ</a></td>
<td><a href="mailto:lukas@aiya.cz">Lukas Helebrandt</a></td>
<td>98%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/dk.png" alt=""></td>
<td>Dansk</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/da_DK.po">da_DK</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/da_DK.po">da_DK</a></td>
<td><a href="mailto:mjjzf@syntaktisk.">Morten Juhl-Johansen Zölde-Fejér</a></td>
<td>72%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/de.png" alt=""></td>
<td>Deutsch</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/de_DE.po">de_DE</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/de_DE.po">de_DE</a></td>
<td><a href="mailto:atalanttore@users.noreply.github.com">Ettore Atalan</a></td>
<td>97%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/ee.png" alt=""></td>
<td>Eesti Keel</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/et_EE.po">et_EE</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/et_EE.po">et_EE</a></td>
<td></td>
<td>65%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/gb.png" alt=""></td>
<td>English (UK)</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/en_GB.po">en_GB</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/en_GB.po">en_GB</a></td>
<td></td>
<td>100%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/us.png" alt=""></td>
<td>English (US)</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/en_US.po">en_US</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/en_US.po">en_US</a></td>
<td></td>
<td>100%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/es.png" alt=""></td>
<td>Español</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/es_ES.po">es_ES</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/es_ES.po">es_ES</a></td>
<td><a href="mailto:mario.campo@gmail.com">Mario Campo</a></td>
<td>98%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/esperanto.png" alt=""></td>
<td>Esperanto</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/eo.po">eo</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/eo.po">eo</a></td>
<td>Marton Paulo</td>
<td>37%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/fr.png" alt=""></td>
<td>Français</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/fr_FR.po">fr_FR</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/fr_FR.po">fr_FR</a></td>
<td>Laurent Cozic</td>
<td>98%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/es/galicia.png" alt=""></td>
<td>Galician</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/gl_ES.po">gl_ES</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/gl_ES.po">gl_ES</a></td>
<td><a href="mailto:marcoslansgarza@gmail.com">Marcos Lans</a></td>
<td>42%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/id.png" alt=""></td>
<td>Indonesian</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/id_ID.po">id_ID</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/id_ID.po">id_ID</a></td>
<td><a href="mailto:16875937+fathyar@users.noreply.github.com">Fathy AR</a></td>
<td>92%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/it.png" alt=""></td>
<td>Italiano</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/it_IT.po">it_IT</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/it_IT.po">it_IT</a></td>
<td><a href="mailto:mailfilledwithspam@gmail.com">Alessandro Bernardello</a></td>
<td>98%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/nl.png" alt=""></td>
<td>Nederlands</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/nl_NL.po">nl_NL</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/nl_NL.po">nl_NL</a></td>
<td><a href="mailto:metbril@users.noreply.github.com">MetBril</a></td>
<td>94%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/be.png" alt=""></td>
<td>Nederlands</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/nl_BE.po">nl_BE</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/nl_BE.po">nl_BE</a></td>
<td></td>
<td>33%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/no.png" alt=""></td>
<td>Norwegian</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/nb_NO.po">nb_NO</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/nb_NO.po">nb_NO</a></td>
<td><a href="mailto:code@mxe.no">Mats Estensen</a></td>
<td>87%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/ir.png" alt=""></td>
<td>Persian</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/fa.po">fa</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/fa.po">fa</a></td>
<td><a href="mailto:kourox@protonmail.com">Kourosh Firoozbakht</a></td>
<td>82%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/pl.png" alt=""></td>
<td>Polski</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/pl_PL.po">pl_PL</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/pl_PL.po">pl_PL</a></td>
<td></td>
<td>97%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/pt.png" alt=""></td>
<td>Português</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/pt_PT.po">pt_PT</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/pt_PT.po">pt_PT</a></td>
<td><a href="mailto:jduar@protonmail.com">João Duarte</a></td>
<td>98%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/br.png" alt=""></td>
<td>Português (Brasil)</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/pt_BR.po">pt_BR</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/pt_BR.po">pt_BR</a></td>
<td><a href="mailto:rnbastos@gmail.com">Renato Nunes Bastos</a></td>
<td>96%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/ro.png" alt=""></td>
<td>Română</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/ro.po">ro</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/ro.po">ro</a></td>
<td><a href="mailto:cristi.duluta@gmail.com">Cristi Duluta</a></td>
<td>77%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/si.png" alt=""></td>
<td>Slovenian</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/sl_SI.po">sl_SI</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/sl_SI.po">sl_SI</a></td>
<td></td>
<td>41%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/se.png" alt=""></td>
<td>Svenska</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/sv.po">sv</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/sv.po">sv</a></td>
<td><a href="mailto:jonatan@autistici.org">Jonatan Nyberg</a></td>
<td>70%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/th.png" alt=""></td>
<td>Thai</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/th_TH.po">th_TH</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/th_TH.po">th_TH</a></td>
<td></td>
<td>52%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/vi.png" alt=""></td>
<td>Tiếng Việt</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/vi.po">vi</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/vi.po">vi</a></td>
<td></td>
<td>84%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/tr.png" alt=""></td>
<td>Türkçe</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/tr_TR.po">tr_TR</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/tr_TR.po">tr_TR</a></td>
<td><a href="mailto:arda@kilicdagi.com">Arda Kılıçdağı</a></td>
<td>97%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/gr.png" alt=""></td>
<td>Ελληνικά</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/el_GR.po">el_GR</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/el_GR.po">el_GR</a></td>
<td><a href="mailto:xaris@tuta.io">Harris Arvanitis</a></td>
<td>95%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/ru.png" alt=""></td>
<td>Русский</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/ru_RU.po">ru_RU</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/ru_RU.po">ru_RU</a></td>
<td><a href="mailto:thesermanarm@gmail.com">Sergey Segeda</a></td>
<td>94%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/rs.png" alt=""></td>
<td>српски језик</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/sr_RS.po">sr_RS</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/sr_RS.po">sr_RS</a></td>
<td></td>
<td>70%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/cn.png" alt=""></td>
<td>中文 (简体)</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/zh_CN.po">zh_CN</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/zh_CN.po">zh_CN</a></td>
<td><a href="mailto:fungdaat31@outlook.com">WhiredPlanck</a></td>
<td>95%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/tw.png" alt=""></td>
<td>中文 (繁體)</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/zh_TW.po">zh_TW</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/zh_TW.po">zh_TW</a></td>
<td><a href="mailto:yaozeye@yahoo.co.jp">Yaoze Ye</a></td>
<td>94%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/jp.png" alt=""></td>
<td>日本語</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/ja_JP.po">ja_JP</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/ja_JP.po">ja_JP</a></td>
<td><a href="mailto:genneko217@gmail.com">genneko</a></td>
<td>99%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/kr.png" alt=""></td>
<td>한국어</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/CliClient/locales/ko.po">ko</a></td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/app-cli/locales/ko.po">ko</a></td>
<td><a href="mailto:potatogim@potatogim.net">Ji-Hyeon Gim</a></td>
<td>99%</td>
</tr>

View File

@@ -458,7 +458,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/e2ee.md
</tbody>
</table>
<h2>Master Keys<a name="master-keys" href="#master-keys" class="heading-anchor">🔗</a></h2>
<p>The master keys are used to encrypt and decrypt data. They can be generated from the Encryption Service and are saved to the database. They are themselves encrypted via a user password using a <a href="https://github.com/laurent22/joplin/blob/fb6dee32ac035b00153106273135fb16be4b4fa5/ReactNativeClient/lib/services/EncryptionService.js#L263">strong encryption method</a>.</p>
<p>The master keys are used to encrypt and decrypt data. They can be generated from the Encryption Service and are saved to the database. They are themselves encrypted via a user password using a <a href="https://github.com/laurent22/joplin/blob/fb6dee32ac035b00153106273135fb16be4b4fa5/packages/app-mobile/lib/services/EncryptionService.js#L263">strong encryption method</a>.</p>
<p>These encrypted master keys are transmitted with the sync data so that they can be available to each client. Each client will need to supply the user password to decrypt each key.</p>
<p>The application supports multiple master keys in order to handle cases where one offline client starts encrypting notes, then another offline client starts encrypting notes too, and later both sync. Both master keys will have to be decrypted separately with the user password.</p>
<p>Only one master key can be active for encryption purposes. For decryption, the algorithm will check the Master Key ID in the header, then check if it's available to the current app and, if so, use this for decryption.</p>

File diff suppressed because it is too large Load Diff

View File

@@ -7,22 +7,27 @@
},
"license": "MIT",
"scripts": {
"linter": "./node_modules/.bin/eslint --resolve-plugins-relative-to . --fix --quiet --ext .js --ext .jsx --ext .ts --ext .tsx",
"linter-precommit": "./node_modules/.bin/eslint --resolve-plugins-relative-to . --fix --ext .js --ext .jsx --ext .ts --ext .tsx",
"linter-ci": "./node_modules/.bin/eslint --resolve-plugins-relative-to . --quiet --ext .js --ext .jsx --ext .ts --ext .tsx",
"postinstall": "lerna bootstrap --no-ci && npm run tsc",
"tsc": "lerna run tsc --stream --parallel",
"watch": "lerna run watch --stream --parallel",
"updateIgnored": "gulp updateIgnoredTypeScriptBuild",
"buildPluginDoc": "typedoc --name 'Joplin Plugin API Documentation' --mode file -theme './Assets/PluginDocTheme/' --readme './Assets/PluginDocTheme/index.md' --excludeNotExported --excludeExternals --excludePrivate --excludeProtected --out docs/api/references/plugin_api packages/lib/services/plugins/api/",
"buildApiDoc": "npm start --prefix=packages/app-cli -- apidoc ../../readme/api/references/rest_api.md",
"buildDoc": "./packages/tools/build-all.sh",
"buildPluginDoc": "typedoc --name 'Joplin Plugin API Documentation' --mode file -theme './Assets/PluginDocTheme/' --readme './Assets/PluginDocTheme/index.md' --excludeNotExported --excludeExternals --excludePrivate --excludeProtected --out docs/api/references/plugin_api packages/lib/services/plugins/api/",
"buildTranslations": "node packages/tools/build-translation.js",
"buildWebsite": "npm run buildApiDoc && node ./packages/tools/build-website.js && npm run buildPluginDoc",
"generatePluginTypes": "rm -rf ./plugin_types && node node_modules/typescript/bin/tsc --declaration --declarationDir ./plugin_types --project tsconfig.json",
"setupNewRelease": "node ./packages/tools/setupNewRelease",
"clean": "lerna clean -y && lerna run clean",
"generatePluginTypes": "rm -rf ./plugin_types && node node_modules/typescript/bin/tsc --declaration --declarationDir ./plugin_types --project tsconfig.json",
"linkChecker": "linkchecker https://joplinapp.org",
"linter-ci": "./node_modules/.bin/eslint --resolve-plugins-relative-to . --quiet --ext .js --ext .jsx --ext .ts --ext .tsx",
"linter-precommit": "./node_modules/.bin/eslint --resolve-plugins-relative-to . --fix --ext .js --ext .jsx --ext .ts --ext .tsx",
"linter": "./node_modules/.bin/eslint --resolve-plugins-relative-to . --fix --quiet --ext .js --ext .jsx --ext .ts --ext .tsx",
"postinstall": "lerna bootstrap --no-ci && npm run tsc",
"publishAll": "git pull && lerna version --no-git-tag-version && gulp completePublishAll",
"releaseAndroid": "node packages/tools/release-android.js",
"releaseCli": "node packages/tools/release-cli.js",
"releaseClipper": "node packages/tools/release-clipper.js",
"releaseDesktop": "node packages/tools/release-electron.js",
"publishAll": "git pull && lerna version --no-git-tag-version && gulp completePublishAll"
"setupNewRelease": "node ./packages/tools/setupNewRelease",
"tsc": "lerna run tsc --stream --parallel",
"updateIgnored": "gulp updateIgnoredTypeScriptBuild",
"watch": "lerna run watch --stream --parallel"
},
"husky": {
"hooks": {

View File

@@ -1,11 +1,11 @@
# `@joplinapp/cli`
# `@joplin/cli`
> TODO: description
## Usage
```
const cli = require('@joplinapp/cli');
const cli = require('@joplin/cli');
// TODO: DEMONSTRATE API
```

View File

@@ -1,5 +1,5 @@
const Logger = require('@joplinapp/lib/Logger').default;
const { netUtils } = require('@joplinapp/lib/net-utils.js');
const Logger = require('@joplin/lib/Logger').default;
const { netUtils } = require('@joplin/lib/net-utils.js');
const http = require('http');
const urlParser = require('url');

View File

@@ -1,17 +1,17 @@
const Logger = require('@joplinapp/lib/Logger').default;
const Folder = require('@joplinapp/lib/models/Folder.js');
const BaseItem = require('@joplinapp/lib/models/BaseItem.js');
const Tag = require('@joplinapp/lib/models/Tag.js');
const BaseModel = require('@joplinapp/lib/BaseModel').default;
const Note = require('@joplinapp/lib/models/Note.js');
const Resource = require('@joplinapp/lib/models/Resource.js');
const Setting = require('@joplinapp/lib/models/Setting').default;
const reducer = require('@joplinapp/lib/reducer').default;
const { defaultState } = require('@joplinapp/lib/reducer');
const { splitCommandString } = require('@joplinapp/lib/string-utils.js');
const { reg } = require('@joplinapp/lib/registry.js');
const { _ } = require('@joplinapp/lib/locale');
const shim = require('@joplinapp/lib/shim').default;
const Logger = require('@joplin/lib/Logger').default;
const Folder = require('@joplin/lib/models/Folder.js');
const BaseItem = require('@joplin/lib/models/BaseItem.js');
const Tag = require('@joplin/lib/models/Tag.js');
const BaseModel = require('@joplin/lib/BaseModel').default;
const Note = require('@joplin/lib/models/Note.js');
const Resource = require('@joplin/lib/models/Resource.js');
const Setting = require('@joplin/lib/models/Setting').default;
const reducer = require('@joplin/lib/reducer').default;
const { defaultState } = require('@joplin/lib/reducer');
const { splitCommandString } = require('@joplin/lib/string-utils.js');
const { reg } = require('@joplin/lib/registry.js');
const { _ } = require('@joplin/lib/locale');
const shim = require('@joplin/lib/shim').default;
const Entities = require('html-entities').AllHtmlEntities;
const htmlentities = new Entities().encode;
@@ -19,7 +19,7 @@ const chalk = require('chalk');
const tk = require('terminal-kit');
const TermWrapper = require('tkwidgets/framework/TermWrapper.js');
const Renderer = require('tkwidgets/framework/Renderer.js');
const DecryptionWorker = require('@joplinapp/lib/services/DecryptionWorker');
const DecryptionWorker = require('@joplin/lib/services/DecryptionWorker');
const BaseWidget = require('tkwidgets/BaseWidget.js');
const TextWidget = require('tkwidgets/TextWidget.js');

View File

@@ -1,20 +1,20 @@
const BaseApplication = require('@joplinapp/lib/BaseApplication').default;
const { FoldersScreenUtils } = require('@joplinapp/lib/folders-screen-utils.js');
const ResourceService = require('@joplinapp/lib/services/ResourceService');
const BaseModel = require('@joplinapp/lib/BaseModel').default;
const Folder = require('@joplinapp/lib/models/Folder.js');
const BaseItem = require('@joplinapp/lib/models/BaseItem.js');
const Note = require('@joplinapp/lib/models/Note.js');
const Tag = require('@joplinapp/lib/models/Tag.js');
const Setting = require('@joplinapp/lib/models/Setting').default;
const { reg } = require('@joplinapp/lib/registry.js');
const { fileExtension } = require('@joplinapp/lib/path-utils');
const { _ } = require('@joplinapp/lib/locale');
const BaseApplication = require('@joplin/lib/BaseApplication').default;
const { FoldersScreenUtils } = require('@joplin/lib/folders-screen-utils.js');
const ResourceService = require('@joplin/lib/services/ResourceService').default;
const BaseModel = require('@joplin/lib/BaseModel').default;
const Folder = require('@joplin/lib/models/Folder.js');
const BaseItem = require('@joplin/lib/models/BaseItem.js');
const Note = require('@joplin/lib/models/Note.js');
const Tag = require('@joplin/lib/models/Tag.js');
const Setting = require('@joplin/lib/models/Setting').default;
const { reg } = require('@joplin/lib/registry.js');
const { fileExtension } = require('@joplin/lib/path-utils');
const { _ } = require('@joplin/lib/locale');
const fs = require('fs-extra');
const { cliUtils } = require('./cli-utils.js');
const Cache = require('@joplinapp/lib/Cache');
const RevisionService = require('@joplinapp/lib/services/RevisionService');
const shim = require('@joplinapp/lib/shim').default;
const Cache = require('@joplin/lib/Cache');
const RevisionService = require('@joplin/lib/services/RevisionService');
const shim = require('@joplin/lib/shim').default;
class Application extends BaseApplication {
constructor() {

View File

@@ -1,7 +1,7 @@
const { app } = require('./app.js');
const Note = require('@joplinapp/lib/models/Note.js');
const Folder = require('@joplinapp/lib/models/Folder.js');
const Tag = require('@joplinapp/lib/models/Tag.js');
const Note = require('@joplin/lib/models/Note.js');
const Folder = require('@joplin/lib/models/Folder.js');
const Tag = require('@joplin/lib/models/Tag.js');
const { cliUtils } = require('./cli-utils.js');
const yargParser = require('yargs-parser');
const fs = require('fs-extra');

View File

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

View File

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

View File

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

View File

@@ -1,8 +1,8 @@
const yargParser = require('yargs-parser');
const { _ } = require('@joplinapp/lib/locale');
const time = require('@joplinapp/lib/time').default;
const { _ } = require('@joplin/lib/locale');
const time = require('@joplin/lib/time').default;
const stringPadding = require('string-padding');
const Logger = require('@joplinapp/lib/Logger').default;
const Logger = require('@joplin/lib/Logger').default;
const cliUtils = {};

View File

@@ -1,11 +1,11 @@
const { BaseCommand } = require('./base-command.js');
const BaseItem = require('@joplinapp/lib/models/BaseItem');
const BaseModel = require('@joplinapp/lib/BaseModel').default;
const { toTitleCase } = require('@joplinapp/lib/string-utils.js');
const { reg } = require('@joplinapp/lib/registry.js');
const markdownUtils = require('@joplinapp/lib/markdownUtils').default;
const { Database } = require('@joplinapp/lib/database.js');
const shim = require('@joplinapp/lib/shim').default;
const BaseItem = require('@joplin/lib/models/BaseItem');
const BaseModel = require('@joplin/lib/BaseModel').default;
const { toTitleCase } = require('@joplin/lib/string-utils.js');
const { reg } = require('@joplin/lib/registry.js');
const markdownUtils = require('@joplin/lib/markdownUtils').default;
const { Database } = require('@joplin/lib/database.js');
const shim = require('@joplin/lib/shim').default;
class Command extends BaseCommand {
usage() {
@@ -294,6 +294,11 @@ async function fetchAllNotes() {
lines.push('');
lines.push('Gets the actual file associated with this resource.');
lines.push('');
lines.push('## GET /resources/:id/notes');
lines.push('');
lines.push('Gets the notes (IDs) associated with a resource.');
lines.push('');
}
lines.push(`## POST /${tableName}`);

View File

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

View File

@@ -1,9 +1,9 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('@joplinapp/lib/locale');
const BaseModel = require('@joplinapp/lib/BaseModel').default;
const BaseItem = require('@joplinapp/lib/models/BaseItem.js');
const Note = require('@joplinapp/lib/models/Note.js');
const { _ } = require('@joplin/lib/locale');
const BaseModel = require('@joplin/lib/BaseModel').default;
const BaseItem = require('@joplin/lib/models/BaseItem.js');
const Note = require('@joplin/lib/models/Note.js');
class Command extends BaseCommand {
usage() {

View File

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

View File

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

View File

@@ -1,9 +1,9 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('@joplinapp/lib/locale');
const BaseModel = require('@joplinapp/lib/BaseModel').default;
const Note = require('@joplinapp/lib/models/Note.js');
const time = require('@joplinapp/lib/time').default;
const { _ } = require('@joplin/lib/locale');
const BaseModel = require('@joplin/lib/BaseModel').default;
const Note = require('@joplin/lib/models/Note.js');
const time = require('@joplin/lib/time').default;
class Command extends BaseCommand {
usage() {

View File

@@ -1,7 +1,7 @@
const { BaseCommand } = require('./base-command.js');
const Folder = require('@joplinapp/lib/models/Folder.js');
const Note = require('@joplinapp/lib/models/Note.js');
const Tag = require('@joplinapp/lib/models/Tag.js');
const Folder = require('@joplin/lib/models/Folder.js');
const Note = require('@joplin/lib/models/Note.js');
const Tag = require('@joplin/lib/models/Tag.js');
class Command extends BaseCommand {
usage() {

View File

@@ -1,11 +1,11 @@
const { BaseCommand } = require('./base-command.js');
const { _ } = require('@joplinapp/lib/locale');
const EncryptionService = require('@joplinapp/lib/services/EncryptionService');
const DecryptionWorker = require('@joplinapp/lib/services/DecryptionWorker');
const BaseItem = require('@joplinapp/lib/models/BaseItem');
const Setting = require('@joplinapp/lib/models/Setting').default;
const shim = require('@joplinapp/lib/shim').default;
const pathUtils = require('@joplinapp/lib/path-utils');
const { _ } = require('@joplin/lib/locale');
const EncryptionService = require('@joplin/lib/services/EncryptionService');
const DecryptionWorker = require('@joplin/lib/services/DecryptionWorker');
const BaseItem = require('@joplin/lib/models/BaseItem');
const Setting = require('@joplin/lib/models/Setting').default;
const shim = require('@joplin/lib/shim').default;
const pathUtils = require('@joplin/lib/path-utils');
const imageType = require('image-type');
const readChunk = require('read-chunk');

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,9 +1,9 @@
const { BaseCommand } = require('./base-command.js');
const InteropService = require('@joplinapp/lib/services/interop/InteropService').default;
const BaseModel = require('@joplinapp/lib/BaseModel').default;
const InteropService = require('@joplin/lib/services/interop/InteropService').default;
const BaseModel = require('@joplin/lib/BaseModel').default;
const { cliUtils } = require('./cli-utils.js');
const { app } = require('./app.js');
const { _ } = require('@joplinapp/lib/locale');
const { _ } = require('@joplin/lib/locale');
class Command extends BaseCommand {
usage() {

View File

@@ -1,12 +1,12 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('@joplinapp/lib/locale');
const BaseModel = require('@joplinapp/lib/BaseModel').default;
const Folder = require('@joplinapp/lib/models/Folder.js');
const Setting = require('@joplinapp/lib/models/Setting').default;
const Note = require('@joplinapp/lib/models/Note.js');
const { _ } = require('@joplin/lib/locale');
const BaseModel = require('@joplin/lib/BaseModel').default;
const Folder = require('@joplin/lib/models/Folder.js');
const Setting = require('@joplin/lib/models/Setting').default;
const Note = require('@joplin/lib/models/Note.js');
const { sprintf } = require('sprintf-js');
const time = require('@joplinapp/lib/time').default;
const time = require('@joplin/lib/time').default;
const { cliUtils } = require('./cli-utils.js');
class Command extends BaseCommand {

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,8 +1,8 @@
const { BaseCommand } = require('./base-command.js');
const { _ } = require('@joplinapp/lib/locale');
const Setting = require('@joplinapp/lib/models/Setting').default;
const Logger = require('@joplinapp/lib/Logger').default;
const shim = require('@joplinapp/lib/shim').default;
const { _ } = require('@joplin/lib/locale');
const Setting = require('@joplin/lib/models/Setting').default;
const Logger = require('@joplin/lib/Logger').default;
const shim = require('@joplin/lib/shim').default;
class Command extends BaseCommand {
@@ -17,7 +17,7 @@ class Command extends BaseCommand {
async action(args) {
const command = args.command;
const ClipperServer = require('@joplinapp/lib/ClipperServer');
const ClipperServer = require('@joplin/lib/ClipperServer');
ClipperServer.instance().initialize();
const stdoutFn = (...s) => this.stdout(s.join(' '));
const clipperLogger = new Logger();

View File

@@ -1,9 +1,9 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('@joplinapp/lib/locale');
const BaseModel = require('@joplinapp/lib/BaseModel').default;
const { Database } = require('@joplinapp/lib/database.js');
const Note = require('@joplinapp/lib/models/Note.js');
const { _ } = require('@joplin/lib/locale');
const BaseModel = require('@joplin/lib/BaseModel').default;
const { Database } = require('@joplin/lib/database.js');
const Note = require('@joplin/lib/models/Note.js');
class Command extends BaseCommand {
usage() {

View File

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

View File

@@ -1,17 +1,17 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('@joplinapp/lib/locale');
const { OneDriveApiNodeUtils } = require('@joplinapp/lib/onedrive-api-node-utils.js');
const Setting = require('@joplinapp/lib/models/Setting').default;
const ResourceFetcher = require('@joplinapp/lib/services/ResourceFetcher');
const Synchronizer = require('@joplinapp/lib/Synchronizer').default;
const { reg } = require('@joplinapp/lib/registry.js');
const { _ } = require('@joplin/lib/locale');
const { OneDriveApiNodeUtils } = require('@joplin/lib/onedrive-api-node-utils.js');
const Setting = require('@joplin/lib/models/Setting').default;
const ResourceFetcher = require('@joplin/lib/services/ResourceFetcher');
const Synchronizer = require('@joplin/lib/Synchronizer').default;
const { reg } = require('@joplin/lib/registry.js');
const { cliUtils } = require('./cli-utils.js');
const md5 = require('md5');
const locker = require('proper-lockfile');
const fs = require('fs-extra');
const SyncTargetRegistry = require('@joplinapp/lib/SyncTargetRegistry');
const MigrationHandler = require('@joplinapp/lib/services/synchronizer/MigrationHandler').default;
const SyncTargetRegistry = require('@joplin/lib/SyncTargetRegistry');
const MigrationHandler = require('@joplin/lib/services/synchronizer/MigrationHandler').default;
class Command extends BaseCommand {
constructor() {

View File

@@ -1,9 +1,9 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('@joplinapp/lib/locale');
const Tag = require('@joplinapp/lib/models/Tag.js');
const BaseModel = require('@joplinapp/lib/BaseModel').default;
const time = require('@joplinapp/lib/time').default;
const { _ } = require('@joplin/lib/locale');
const Tag = require('@joplin/lib/models/Tag.js');
const BaseModel = require('@joplin/lib/BaseModel').default;
const time = require('@joplin/lib/time').default;
class Command extends BaseCommand {
usage() {

View File

@@ -1,9 +1,9 @@
const { BaseCommand } = require('./base-command.js');
const { app } = require('./app.js');
const { _ } = require('@joplinapp/lib/locale');
const BaseModel = require('@joplinapp/lib/BaseModel').default;
const Note = require('@joplinapp/lib/models/Note.js');
const time = require('@joplinapp/lib/time').default;
const { _ } = require('@joplin/lib/locale');
const BaseModel = require('@joplin/lib/BaseModel').default;
const Note = require('@joplin/lib/models/Note.js');
const time = require('@joplin/lib/time').default;
class Command extends BaseCommand {
usage() {

View File

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

View File

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

View File

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

View File

@@ -1,10 +1,10 @@
'use strict';
const time = require('@joplinapp/lib/time').default;
const Logger = require('@joplinapp/lib/Logger').default;
const Resource = require('@joplinapp/lib/models/Resource.js');
const { dirname } = require('@joplinapp/lib/path-utils');
const FsDriverNode = require('@joplinapp/lib/fs-driver-node').default;
const time = require('@joplin/lib/time').default;
const Logger = require('@joplin/lib/Logger').default;
const Resource = require('@joplin/lib/models/Resource.js');
const { dirname } = require('@joplin/lib/path-utils');
const FsDriverNode = require('@joplin/lib/fs-driver-node').default;
const lodash = require('lodash');
const exec = require('child_process').exec;
const fs = require('fs-extra');

View File

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

View File

@@ -1,4 +1,4 @@
const Note = require('@joplinapp/lib/models/Note.js');
const Note = require('@joplin/lib/models/Note.js');
const ListWidget = require('tkwidgets/ListWidget.js');
class NoteListWidget extends ListWidget {

View File

@@ -1,4 +1,4 @@
const Note = require('@joplinapp/lib/models/Note.js');
const Note = require('@joplin/lib/models/Note.js');
const TextWidget = require('tkwidgets/TextWidget.js');
class NoteMetadataWidget extends TextWidget {

View File

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

View File

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

View File

@@ -11,24 +11,24 @@ if (compareVersion(nodeVersion, '10.0.0') < 0) {
}
const { app } = require('./app.js');
const Folder = require('@joplinapp/lib/models/Folder.js');
const Resource = require('@joplinapp/lib/models/Resource.js');
const BaseItem = require('@joplinapp/lib/models/BaseItem.js');
const Note = require('@joplinapp/lib/models/Note.js');
const Tag = require('@joplinapp/lib/models/Tag.js');
const NoteTag = require('@joplinapp/lib/models/NoteTag.js');
const MasterKey = require('@joplinapp/lib/models/MasterKey');
const Setting = require('@joplinapp/lib/models/Setting').default;
const Revision = require('@joplinapp/lib/models/Revision.js');
const Logger = require('@joplinapp/lib/Logger').default;
const FsDriverNode = require('@joplinapp/lib/fs-driver-node').default;
const Folder = require('@joplin/lib/models/Folder.js');
const Resource = require('@joplin/lib/models/Resource.js');
const BaseItem = require('@joplin/lib/models/BaseItem.js');
const Note = require('@joplin/lib/models/Note.js');
const Tag = require('@joplin/lib/models/Tag.js');
const NoteTag = require('@joplin/lib/models/NoteTag.js');
const MasterKey = require('@joplin/lib/models/MasterKey');
const Setting = require('@joplin/lib/models/Setting').default;
const Revision = require('@joplin/lib/models/Revision.js');
const Logger = require('@joplin/lib/Logger').default;
const FsDriverNode = require('@joplin/lib/fs-driver-node').default;
const sharp = require('sharp');
const { shimInit } = require('@joplinapp/lib/shim-init-node.js');
const shim = require('@joplinapp/lib/shim').default;
const { _ } = require('@joplinapp/lib/locale');
const { FileApiDriverLocal } = require('@joplinapp/lib/file-api-driver-local.js');
const EncryptionService = require('@joplinapp/lib/services/EncryptionService');
const envFromArgs = require('@joplinapp/lib/envFromArgs');
const { shimInit } = require('@joplin/lib/shim-init-node.js');
const shim = require('@joplin/lib/shim').default;
const { _ } = require('@joplin/lib/locale');
const { FileApiDriverLocal } = require('@joplin/lib/file-api-driver-local.js');
const EncryptionService = require('@joplin/lib/services/EncryptionService');
const envFromArgs = require('@joplin/lib/envFromArgs');
const env = envFromArgs(process.argv);

View File

@@ -1,10 +1,10 @@
import * as vm from 'vm';
import Plugin from '@joplinapp/lib/services/plugins/Plugin';
import sandboxProxy from '@joplinapp/lib/services/plugins/sandboxProxy';
import BasePluginRunner from '@joplinapp/lib/services/plugins/BasePluginRunner';
import executeSandboxCall from '@joplinapp/lib/services/plugins/utils/executeSandboxCall';
import Global from '@joplinapp/lib/services/plugins/api/Global';
import mapEventHandlersToIds, { EventHandlers } from '@joplinapp/lib/services/plugins/utils/mapEventHandlersToIds';
import Plugin from '@joplin/lib/services/plugins/Plugin';
import sandboxProxy from '@joplin/lib/services/plugins/sandboxProxy';
import BasePluginRunner from '@joplin/lib/services/plugins/BasePluginRunner';
import executeSandboxCall from '@joplin/lib/services/plugins/utils/executeSandboxCall';
import Global from '@joplin/lib/services/plugins/api/Global';
import mapEventHandlersToIds, { EventHandlers } from '@joplin/lib/services/plugins/utils/mapEventHandlersToIds';
function createConsoleWrapper(pluginId:string) {
const wrapper:any = {};

View File

@@ -1,6 +1,6 @@
const gulp = require('gulp');
const fs = require('fs-extra');
const utils = require('@joplinapp/tools/gulp/utils');
const utils = require('@joplin/tools/gulp/utils');
const tasks = {
// compileExtensions: {
// fn: require('../Tools/gulp/tasks/compileExtensions.js'),
@@ -10,15 +10,23 @@ const tasks = {
// updateIgnoredTypeScriptBuild: require('../Tools/gulp/tasks/updateIgnoredTypeScriptBuild'),
};
async function makePackagePublic(filePath) {
const text = await fs.readFile(filePath, 'utf8');
const obj = JSON.parse(text);
delete obj.private;
await fs.writeFile(filePath, JSON.stringify(obj), 'utf8');
}
tasks.prepareBuild = {
fn: async () => {
const buildDir = `${__dirname}/build`;
await utils.copyDir(`${__dirname}/app`, buildDir, {
excluded: ['node_modules'],
});
// await utils.copyDir(`${__dirname}/locales-build`, `${buildDir}/locales`);
// await tasks.copyLib.fn();
await utils.copyFile(`${__dirname}/package.json`, `${buildDir}/package.json`);
await makePackagePublic(`${buildDir}/package.json`);
await utils.copyFile(`${__dirname}/package-lock.json`, `${buildDir}/package-lock.json`);
await utils.copyFile(`${__dirname}/gulpfile.js`, `${buildDir}/gulpfile.js`);

View File

@@ -1,6 +1,6 @@
{
"name": "@joplinapp/app-cli",
"version": "1.3.13",
"name": "joplin",
"version": "1.4.3",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@@ -1,5 +1,5 @@
{
"name": "@joplinapp/app-cli",
"name": "joplin",
"description": "Joplin CLI Client",
"license": "MIT",
"author": "Laurent Cozic",
@@ -7,7 +7,6 @@
"scripts": {
"test": "node node_modules/jasmine/bin/jasmine.js --fail-fast=true --config=tests/support/jasmine.json",
"test-ci": "node node_modules/jasmine/bin/jasmine.js --config=tests/support/jasmine.json",
"postinstall": "npm run build",
"build": "gulp build",
"start": "gulp build -L && node \"build/main.js\" --stack-trace-enabled --log-level debug --env dev",
"tsc": "node node_modules/typescript/bin/tsc --project tsconfig.json",
@@ -31,7 +30,7 @@
],
"owner": "Laurent Cozic"
},
"version": "1.4.0",
"version": "1.4.3",
"bin": {
"joplin": "./main.js"
},
@@ -39,8 +38,8 @@
"node": ">=10.0.0"
},
"dependencies": {
"@joplinapp/lib": "^1.0.9",
"@joplinapp/renderer": "^1.0.17",
"@joplin/lib": "^1.0.9",
"@joplin/renderer": "^1.0.17",
"aws-sdk": "^2.588.0",
"chalk": "^4.1.0",
"clean-html": "^1.5.0",
@@ -65,7 +64,7 @@
"yargs-parser": "^7.0.0"
},
"devDependencies": {
"@joplinapp/tools": "^1.0.9",
"@joplin/tools": "^1.0.9",
"@types/jasmine": "^3.6.0",
"@types/node": "^14.14.6",
"gulp": "^4.0.2",

View File

@@ -1,9 +1,9 @@
/* eslint-disable no-unused-vars */
const time = require('@joplinapp/lib/time').default;
const time = require('@joplin/lib/time').default;
const { asyncTest, fileContentEqual, setupDatabase, setupDatabaseAndSynchronizer, db, synchronizer, fileApi, sleep, clearDatabase, switchClient, syncTargetId, objectsEqual, checkThrowAsync } = require('./test-utils.js');
const ArrayUtils = require('@joplinapp/lib/ArrayUtils');
const ArrayUtils = require('@joplin/lib/ArrayUtils');
process.on('unhandledRejection', (reason, p) => {
console.log('Unhandled Rejection at: Promise', p, 'reason:', reason);

View File

@@ -1,7 +1,7 @@
const { asyncTest, setupDatabaseAndSynchronizer, switchClient } = require('./test-utils.js');
const shim = require('@joplinapp/lib/shim').default;
const { enexXmlToHtml } = require('@joplinapp/lib/import-enex-html-gen.js');
const shim = require('@joplin/lib/shim').default;
const { enexXmlToHtml } = require('@joplin/lib/import-enex-html-gen.js');
const cleanHtml = require('clean-html');
process.on('unhandledRejection', (reason, p) => {

View File

@@ -2,14 +2,14 @@
const os = require('os');
const time = require('@joplinapp/lib/time').default;
const { filename } = require('@joplinapp/lib/path-utils');
const time = require('@joplin/lib/time').default;
const { filename } = require('@joplin/lib/path-utils');
const { asyncTest, fileContentEqual, setupDatabase, setupDatabaseAndSynchronizer, db, synchronizer, fileApi, sleep, clearDatabase, switchClient, syncTargetId, objectsEqual, checkThrowAsync } = require('./test-utils.js');
const Folder = require('@joplinapp/lib/models/Folder.js');
const Note = require('@joplinapp/lib/models/Note.js');
const BaseModel = require('@joplinapp/lib/BaseModel').default;
const shim = require('@joplinapp/lib/shim').default;
const { enexXmlToMd } = require('@joplinapp/lib/import-enex-md-gen.js');
const Folder = require('@joplin/lib/models/Folder.js');
const Note = require('@joplin/lib/models/Note.js');
const BaseModel = require('@joplin/lib/BaseModel').default;
const shim = require('@joplin/lib/shim').default;
const { enexXmlToMd } = require('@joplin/lib/import-enex-md-gen.js');
process.on('unhandledRejection', (reason, p) => {
console.log('Unhandled Rejection at: Promise', p, 'reason:', reason);

View File

@@ -2,15 +2,15 @@
const os = require('os');
const time = require('@joplinapp/lib/time').default;
const { filename } = require('@joplinapp/lib/path-utils');
const time = require('@joplin/lib/time').default;
const { filename } = require('@joplin/lib/path-utils');
const { asyncTest, fileContentEqual, setupDatabase, setupDatabaseAndSynchronizer, db, synchronizer, fileApi, sleep, clearDatabase, switchClient, syncTargetId, objectsEqual, checkThrowAsync } = require('./test-utils.js');
const Folder = require('@joplinapp/lib/models/Folder.js');
const Note = require('@joplinapp/lib/models/Note.js');
const BaseModel = require('@joplinapp/lib/BaseModel').default;
const shim = require('@joplinapp/lib/shim').default;
const HtmlToHtml = require('@joplinapp/renderer/HtmlToHtml');
const { enexXmlToMd } = require('@joplinapp/lib/import-enex-md-gen.js');
const Folder = require('@joplin/lib/models/Folder.js');
const Note = require('@joplin/lib/models/Note.js');
const BaseModel = require('@joplin/lib/BaseModel').default;
const shim = require('@joplin/lib/shim').default;
const HtmlToHtml = require('@joplin/renderer/HtmlToHtml');
const { enexXmlToMd } = require('@joplin/lib/import-enex-md-gen.js');
process.on('unhandledRejection', (reason, p) => {
console.log('Unhandled Rejection at: Promise', p, 'reason:', reason);

View File

@@ -2,15 +2,15 @@
const os = require('os');
const time = require('@joplinapp/lib/time').default;
const { filename } = require('@joplinapp/lib/path-utils');
const time = require('@joplin/lib/time').default;
const { filename } = require('@joplin/lib/path-utils');
const { asyncTest, fileContentEqual, setupDatabase, setupDatabaseAndSynchronizer, db, synchronizer, fileApi, sleep, clearDatabase, switchClient, syncTargetId, objectsEqual, checkThrowAsync } = require('./test-utils.js');
const Folder = require('@joplinapp/lib/models/Folder.js');
const Note = require('@joplinapp/lib/models/Note.js');
const BaseModel = require('@joplinapp/lib/BaseModel').default;
const shim = require('@joplinapp/lib/shim').default;
const HtmlToMd = require('@joplinapp/lib/HtmlToMd');
const { enexXmlToMd } = require('@joplinapp/lib/import-enex-md-gen.js');
const Folder = require('@joplin/lib/models/Folder.js');
const Note = require('@joplin/lib/models/Note.js');
const BaseModel = require('@joplin/lib/BaseModel').default;
const shim = require('@joplin/lib/shim').default;
const HtmlToMd = require('@joplin/lib/HtmlToMd');
const { enexXmlToMd } = require('@joplin/lib/import-enex-md-gen.js');
process.on('unhandledRejection', (reason, p) => {
console.log('Unhandled Rejection at: Promise', p, 'reason:', reason);

View File

@@ -1,5 +1,5 @@
import InMemoryCache from '@joplinapp/lib/InMemoryCache';
const time = require('@joplinapp/lib/time').default;
import InMemoryCache from '@joplin/lib/InMemoryCache';
const time = require('@joplin/lib/time').default;
describe('InMemoryCache', function() {

View File

@@ -1,6 +1,6 @@
const { asyncTest } = require('./test-utils.js');
const MarkupToHtml = require('@joplinapp/renderer/MarkupToHtml').default;
const MarkupToHtml = require('@joplin/renderer/MarkupToHtml').default;
describe('MarkupToHtml', function() {

View File

@@ -1,9 +1,9 @@
import MdToHtml from '@joplinapp/renderer/MdToHtml';
import MdToHtml from '@joplin/renderer/MdToHtml';
const os = require('os');
const { filename } = require('@joplinapp/lib/path-utils');
const { filename } = require('@joplin/lib/path-utils');
const { asyncTest, setupDatabaseAndSynchronizer, switchClient } = require('./test-utils.js');
const shim = require('@joplinapp/lib/shim').default;
const { themeStyle } = require('@joplinapp/lib/theme');
const shim = require('@joplin/lib/shim').default;
const { themeStyle } = require('@joplin/lib/theme');
function newTestMdToHtml(options:any = null) {
options = {

View File

@@ -1,5 +1,5 @@
const mdImporterService = require('@joplinapp/lib/services/interop/InteropService_Importer_Md').default;
const Note = require('@joplinapp/lib/models/Note.js');
const mdImporterService = require('@joplin/lib/services/interop/InteropService_Importer_Md').default;
const Note = require('@joplin/lib/models/Note.js');
const { setupDatabaseAndSynchronizer, switchClient } = require('./test-utils.js');
const importer = new mdImporterService();

View File

@@ -2,7 +2,7 @@
const { asyncTest } = require('./test-utils.js');
const StringUtils = require('@joplinapp/lib/string-utils');
const StringUtils = require('@joplin/lib/string-utils');
process.on('unhandledRejection', (reason, p) => {
console.log('Unhandled Rejection at: Promise', p, 'reason:', reason);

View File

@@ -2,7 +2,7 @@
const { asyncTest, fileContentEqual, setupDatabase, revisionService, setupDatabaseAndSynchronizer, db, synchronizer, fileApi, sleep, clearDatabase, switchClient, syncTargetId, objectsEqual, checkThrowAsync } = require('./test-utils.js');
const TaskQueue = require('@joplinapp/lib/TaskQueue.js');
const TaskQueue = require('@joplin/lib/TaskQueue.js');
process.on('unhandledRejection', (reason, p) => {
console.log('Unhandled Rejection at: Promise', p, 'reason:', reason);

View File

@@ -1,14 +1,14 @@
/* eslint-disable no-unused-vars */
const time = require('@joplinapp/lib/time').default;
const time = require('@joplin/lib/time').default;
const { sortedIds, createNTestNotes, asyncTest, fileContentEqual, setupDatabase, setupDatabaseAndSynchronizer, db, synchronizer, fileApi, sleep, clearDatabase, switchClient, syncTargetId, objectsEqual, checkThrowAsync } = require('./test-utils.js');
const Folder = require('@joplinapp/lib/models/Folder.js');
const Note = require('@joplinapp/lib/models/Note.js');
const Setting = require('@joplinapp/lib/models/Setting').default;
const BaseModel = require('@joplinapp/lib/BaseModel').default;
const ArrayUtils = require('@joplinapp/lib/ArrayUtils.js');
const shim = require('@joplinapp/lib/shim').default;
const Folder = require('@joplin/lib/models/Folder.js');
const Note = require('@joplin/lib/models/Note.js');
const Setting = require('@joplin/lib/models/Setting').default;
const BaseModel = require('@joplin/lib/BaseModel').default;
const ArrayUtils = require('@joplin/lib/ArrayUtils.js');
const shim = require('@joplin/lib/shim').default;
process.on('unhandledRejection', (reason, p) => {
console.log('Unhandled Rejection at: Promise', p, 'reason:', reason);

View File

@@ -2,7 +2,7 @@
const { asyncTest,checkThrow } = require('./test-utils.js');
const eventManager = require('@joplinapp/lib/eventManager').default;
const eventManager = require('@joplin/lib/eventManager').default;
process.on('unhandledRejection', (reason, p) => {
console.log('Unhandled Rejection at: Promise', p, 'reason:', reason);

View File

@@ -1,10 +1,10 @@
const { asyncTest, id, ids, createNTestFolders, sortedIds, createNTestNotes, TestApp } = require('./test-utils.js');
const BaseModel = require('@joplinapp/lib/BaseModel').default;
const uuid = require('@joplinapp/lib/uuid').default;
const Note = require('@joplinapp/lib/models/Note.js');
const Folder = require('@joplinapp/lib/models/Folder.js');
const BaseModel = require('@joplin/lib/BaseModel').default;
const uuid = require('@joplin/lib/uuid').default;
const Note = require('@joplin/lib/models/Note.js');
const Folder = require('@joplin/lib/models/Folder.js');
const { ALL_NOTES_FILTER_ID } = require('@joplinapp/lib/reserved-ids.js');
const { ALL_NOTES_FILTER_ID } = require('@joplin/lib/reserved-ids.js');
let testApp = null;

View File

@@ -1,10 +1,10 @@
/* eslint-disable no-unused-vars */
const { setupDatabaseAndSynchronizer, switchClient, asyncTest, createNTestFolders, createNTestNotes, createNTestTags, TestApp } = require('./test-utils.js');
const Setting = require('@joplinapp/lib/models/Setting').default;
const Folder = require('@joplinapp/lib/models/Folder.js');
const Note = require('@joplinapp/lib/models/Note.js');
const Tag = require('@joplinapp/lib/models/Tag.js');
const time = require('@joplinapp/lib/time').default;
const Setting = require('@joplin/lib/models/Setting').default;
const Folder = require('@joplin/lib/models/Folder.js');
const Note = require('@joplin/lib/models/Note.js');
const Tag = require('@joplin/lib/models/Tag.js');
const time = require('@joplin/lib/time').default;
let testApp = null;

View File

@@ -1,11 +1,11 @@
/* eslint-disable no-unused-vars */
const { setupDatabaseAndSynchronizer, switchClient, asyncTest, id, ids, sortedIds, at, createNTestFolders, createNTestNotes, createNTestTags, TestApp } = require('./test-utils.js');
const Setting = require('@joplinapp/lib/models/Setting').default;
const Folder = require('@joplinapp/lib/models/Folder.js');
const Note = require('@joplinapp/lib/models/Note.js');
const Tag = require('@joplinapp/lib/models/Tag.js');
const time = require('@joplinapp/lib/time').default;
const { ALL_NOTES_FILTER_ID } = require('@joplinapp/lib/reserved-ids.js');
const Setting = require('@joplin/lib/models/Setting').default;
const Folder = require('@joplin/lib/models/Folder.js');
const Note = require('@joplin/lib/models/Note.js');
const Tag = require('@joplin/lib/models/Tag.js');
const time = require('@joplin/lib/time').default;
const { ALL_NOTES_FILTER_ID } = require('@joplin/lib/reserved-ids.js');
//
// The integration tests are to test the integration of the core system, comprising the

View File

@@ -1,10 +1,10 @@
/* eslint-disable no-unused-vars */
const { setupDatabaseAndSynchronizer, switchClient, asyncTest, createNTestFolders, createNTestNotes, createNTestTags, TestApp } = require('./test-utils.js');
const Setting = require('@joplinapp/lib/models/Setting').default;
const Folder = require('@joplinapp/lib/models/Folder.js');
const Note = require('@joplinapp/lib/models/Note.js');
const Tag = require('@joplinapp/lib/models/Tag.js');
const time = require('@joplinapp/lib/time').default;
const Setting = require('@joplin/lib/models/Setting').default;
const Folder = require('@joplin/lib/models/Folder.js');
const Note = require('@joplin/lib/models/Note.js');
const Tag = require('@joplin/lib/models/Tag.js');
const time = require('@joplin/lib/time').default;
let testApp = null;

View File

@@ -1,12 +1,12 @@
/* eslint-disable no-unused-vars */
const uuid = require('@joplinapp/lib/uuid').default;
const time = require('@joplinapp/lib/time').default;
const uuid = require('@joplin/lib/uuid').default;
const time = require('@joplin/lib/time').default;
const { asyncTest, sleep, fileApi, fileContentEqual, checkThrowAsync } = require('./test-utils.js');
const shim = require('@joplinapp/lib/shim').default;
const shim = require('@joplin/lib/shim').default;
const fs = require('fs-extra');
const Setting = require('@joplinapp/lib/models/Setting').default;
const Setting = require('@joplin/lib/models/Setting').default;
process.on('unhandledRejection', (reason, p) => {
console.log('Unhandled Rejection at: Promise', p, 'reason:', reason);

View File

@@ -1,7 +1,7 @@
/* eslint-disable no-unused-vars */
const filterParser = require('@joplinapp/lib/services/searchengine/filterParser.js').default;
// import filterParser from '@joplinapp/lib/services/searchengine/filterParser.js';
const filterParser = require('@joplin/lib/services/searchengine/filterParser.js').default;
// import filterParser from '@joplin/lib/services/searchengine/filterParser.js';
const makeTerm = (name, value, negated, quoted = false, wildcard = false) => {
if (name === 'text') { return { name, value, negated, quoted, wildcard }; }

View File

@@ -1,5 +1,5 @@
import FsDriverNode from '@joplinapp/lib/fs-driver-node';
import shim from '@joplinapp/lib/shim';
import FsDriverNode from '@joplin/lib/fs-driver-node';
import shim from '@joplin/lib/shim';
const { expectThrow } = require('./test-utils.js');
// On Windows, path.resolve is going to convert a path such as

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