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

Compare commits

..

4 Commits

Author SHA1 Message Date
Laurent Cozic
ca7392a704 release serfver 2021-01-04 14:59:12 +00:00
Laurent Cozic
1dbeff1908 Tests: Fixed potential timing issue in tests
Might fix this: https://travis-ci.org/github/laurent22/joplin/jobs/752585346#L1352
2021-01-03 16:27:51 +00:00
Laurent Cozic
4f2d316db4 Doc: Fixed code block issue and cleaned up Download table 2021-01-03 15:55:47 +00:00
Laurent Cozic
4851fd1ab3 Doc: Added limitation for Rich Text editor 2021-01-03 15:35:26 +00:00
89 changed files with 1585 additions and 217 deletions

View File

@@ -1646,4 +1646,7 @@ packages/server/src/utils/urlUtils.js.map
packages/server/src/utils/uuidgen.d.ts
packages/server/src/utils/uuidgen.js
packages/server/src/utils/uuidgen.js.map
packages/tools/release-server.d.ts
packages/tools/release-server.js
packages/tools/release-server.js.map
# AUTO-GENERATED - EXCLUDED TYPESCRIPT BUILD

3
.gitignore vendored
View File

@@ -1635,4 +1635,7 @@ packages/server/src/utils/urlUtils.js.map
packages/server/src/utils/uuidgen.d.ts
packages/server/src/utils/uuidgen.js
packages/server/src/utils/uuidgen.js.map
packages/tools/release-server.d.ts
packages/tools/release-server.js
packages/tools/release-server.js.map
# AUTO-GENERATED - EXCLUDED TYPESCRIPT BUILD

View File

@@ -18,11 +18,17 @@ Three types of applications are available: for the **desktop** (Windows, macOS a
## Desktop applications
Operating System | Download | Alternative
---|---|---
Windows (32 and 64-bit) | <a href='https://github.com/laurent22/joplin/releases/download/v1.5.11/Joplin-Setup-1.5.11.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.5.11/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.5.11/Joplin-1.5.11.dmg'><img alt='Get it on macOS' width="134px" src='https://joplinapp.org/images/BadgeMacOS.png'/></a> | -
Linux | <a href='https://github.com/laurent22/joplin/releases/download/v1.5.11/Joplin-1.5.11.AppImage'><img alt='Get it on Linux' width="134px" src='https://joplinapp.org/images/BadgeLinux.png'/></a> | The recommended way is to use the following installation 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`
Operating System | Download
---|---
Windows (32 and 64-bit) | <a href='https://github.com/laurent22/joplin/releases/download/v1.5.11/Joplin-Setup-1.5.11.exe'><img alt='Get it on Windows' width="134px" src='https://joplinapp.org/images/BadgeWindows.png'/></a>
macOS | <a href='https://github.com/laurent22/joplin/releases/download/v1.5.11/Joplin-1.5.11.dmg'><img alt='Get it on macOS' width="134px" src='https://joplinapp.org/images/BadgeMacOS.png'/></a>
Linux | <a href='https://github.com/laurent22/joplin/releases/download/v1.5.11/Joplin-1.5.11.AppImage'><img alt='Get it on Linux' width="134px" src='https://joplinapp.org/images/BadgeLinux.png'/></a>
**On Windows**, you may also use the <a href='https://github.com/laurent22/joplin/releases/download/v1.5.11/JoplinPortable.exe'>Portable version</a>. 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.
**On Linux**, the recommended way is to use the following installation script as it will handle the desktop icon too:
<pre><code style="word-break: break-all">wget -O - https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh | bash</code></pre>
## Mobile applications

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/get_started/plugins.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/get_started/plugins.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -470,7 +472,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/get_started/plugins.md
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/overview.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/overview.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -462,7 +464,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/overview.md
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/references/development_m
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/references/development_m
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -441,7 +443,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/references/development_m
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

File diff suppressed because one or more lines are too long

View File

@@ -150,17 +150,20 @@
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Registers a new content script. Unlike regular plugin code, which
runs in a separate process, content scripts run within the main
process code and thus allow improved performances and more
customisations in specific cases. It can be used for example to load
a Markdown or editor plugin.</p>
<p>Registers a new content script. Unlike regular plugin code, which runs in
a separate process, content scripts run within the main process code and
thus allow improved performances and more customisations in specific
cases. It can be used for example to load a Markdown or editor plugin.</p>
</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>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>The plugin generator provides a way to build any content script you might
want to package as well as its dependencies. See the <a href="https://github.com/laurent22/joplin/blob/dev/packages/generator-joplin/README.md">Plugin Generator
doc</a>
for more information.</p>
<ul>
<li><a href="https://github.com/laurent22/joplin/tree/dev/packages/app-cli/tests/support/plugins/content_script">View the renderer demo plugin</a></li>
<li><a href="https://github.com/laurent22/joplin/tree/dev/packages/app-cli/tests/support/plugins/codemirror_content_script">View the editor demo plugin</a></li>

View File

@@ -117,6 +117,7 @@
<section class="tsd-index-section ">
<h3>Methods</h3>
<ul class="tsd-index-list">
<li class="tsd-kind-method tsd-parent-kind-class"><a href="joplinviewsdialogs.html#addscript" class="tsd-kind-icon">add<wbr>Script</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="joplinviewsdialogs.html#create" class="tsd-kind-icon">create</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="joplinviewsdialogs.html#open" class="tsd-kind-icon">open</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="joplinviewsdialogs.html#setbuttons" class="tsd-kind-icon">set<wbr>Buttons</a></li>
@@ -131,6 +132,38 @@
</section>
<section class="tsd-panel-group tsd-member-group ">
<h2>Methods</h2>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="addscript" class="tsd-anchor"></a>
<h3>add<wbr>Script</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">add<wbr>Script<span class="tsd-signature-symbol">(</span>handle<span class="tsd-signature-symbol">: </span><a href="../globals.html#viewhandle" class="tsd-signature-type">ViewHandle</a>, scriptPath<span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Adds and loads a new JS or CSS files into the dialog.</p>
</div>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>handle: <a href="../globals.html#viewhandle" class="tsd-signature-type">ViewHandle</a></h5>
</li>
<li>
<h5>scriptPath: <span class="tsd-signature-type">string</span></h5>
</li>
</ul>
<!-- JOPLINCHANGE
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4>
-->
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="create" class="tsd-anchor"></a>
<h3>create</h3>
@@ -304,6 +337,9 @@
<li class=" tsd-kind-constructor tsd-parent-kind-class">
<a href="joplinviewsdialogs.html#constructor" class="tsd-kind-icon">constructor</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="joplinviewsdialogs.html#addscript" class="tsd-kind-icon">add<wbr>Script</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="joplinviewsdialogs.html#create" class="tsd-kind-icon">create</a>
</li>

View File

@@ -99,8 +99,11 @@
<ul class="tsd-index-list">
<li class="tsd-kind-method tsd-parent-kind-class"><a href="joplinviewspanels.html#addscript" class="tsd-kind-icon">add<wbr>Script</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="joplinviewspanels.html#create" class="tsd-kind-icon">create</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="joplinviewspanels.html#hide" class="tsd-kind-icon">hide</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="joplinviewspanels.html#onmessage" class="tsd-kind-icon">on<wbr>Message</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="joplinviewspanels.html#sethtml" class="tsd-kind-icon">set<wbr>Html</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="joplinviewspanels.html#show" class="tsd-kind-icon">show</a></li>
<li class="tsd-kind-method tsd-parent-kind-class"><a href="joplinviewspanels.html#visible" class="tsd-kind-icon">visible</a></li>
</ul>
</section>
</div>
@@ -167,6 +170,35 @@
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><a href="../globals.html#viewhandle" class="tsd-signature-type">ViewHandle</a><span class="tsd-signature-symbol">&gt;</span></h4>
-->
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="hide" class="tsd-anchor"></a>
<h3>hide</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">hide<span class="tsd-signature-symbol">(</span>handle<span class="tsd-signature-symbol">: </span><a href="../globals.html#viewhandle" class="tsd-signature-type">ViewHandle</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Hides the panel</p>
</div>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>handle: <a href="../globals.html#viewhandle" class="tsd-signature-type">ViewHandle</a></h5>
</li>
</ul>
<!-- JOPLINCHANGE
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4>
-->
</li>
</ul>
@@ -231,6 +263,67 @@
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">&gt;</span></h4>
-->
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="show" class="tsd-anchor"></a>
<h3>show</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">show<span class="tsd-signature-symbol">(</span>handle<span class="tsd-signature-symbol">: </span><a href="../globals.html#viewhandle" class="tsd-signature-type">ViewHandle</a>, show<span class="tsd-signature-symbol">?: </span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Shows the panel</p>
</div>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>handle: <a href="../globals.html#viewhandle" class="tsd-signature-type">ViewHandle</a></h5>
</li>
<li>
<h5><span class="tsd-flag ts-flagDefault value">Default value</span> show: <span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol"> = true</span></h5>
</li>
</ul>
<!-- JOPLINCHANGE
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">void</span><span class="tsd-signature-symbol">&gt;</span></h4>
-->
</li>
</ul>
</section>
<section class="tsd-panel tsd-member tsd-kind-method tsd-parent-kind-class">
<a name="visible" class="tsd-anchor"></a>
<h3>visible</h3>
<ul class="tsd-signatures tsd-kind-method tsd-parent-kind-class">
<li class="tsd-signature tsd-kind-icon">visible<span class="tsd-signature-symbol">(</span>handle<span class="tsd-signature-symbol">: </span><a href="../globals.html#viewhandle" class="tsd-signature-type">ViewHandle</a><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">: </span><span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">&gt;</span></li>
</ul>
<ul class="tsd-descriptions">
<li class="tsd-description">
<aside class="tsd-sources">
</aside>
<div class="tsd-comment tsd-typography">
<div class="lead">
<p>Tells whether the panel is visible or not</p>
</div>
</div>
<h4 class="tsd-parameters-title">Parameters</h4>
<ul class="tsd-parameters">
<li>
<h5>handle: <a href="../globals.html#viewhandle" class="tsd-signature-type">ViewHandle</a></h5>
</li>
</ul>
<!-- JOPLINCHANGE
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol">&lt;</span><span class="tsd-signature-type">boolean</span><span class="tsd-signature-symbol">&gt;</span></h4>
-->
</li>
</ul>
@@ -263,12 +356,21 @@
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="joplinviewspanels.html#create" class="tsd-kind-icon">create</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="joplinviewspanels.html#hide" class="tsd-kind-icon">hide</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="joplinviewspanels.html#onmessage" class="tsd-kind-icon">on<wbr>Message</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="joplinviewspanels.html#sethtml" class="tsd-kind-icon">set<wbr>Html</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="joplinviewspanels.html#show" class="tsd-kind-icon">show</a>
</li>
<li class=" tsd-kind-method tsd-parent-kind-class">
<a href="joplinviewspanels.html#visible" class="tsd-kind-icon">visible</a>
</li>
</ul>
</li>
</ul>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/references/plugin_loadin
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/references/plugin_loadin
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -447,7 +449,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/references/plugin_loadin
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/references/plugin_manife
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/references/plugin_manife
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -405,6 +407,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/references/plugin_manife
<thead>
<tr>
<th>Name</th>
<th>Type</th>
<th>Required?</th>
<th>Description</th>
</tr>
@@ -412,42 +415,55 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/references/plugin_manife
<tbody>
<tr>
<td><code>manifest_version</code></td>
<td>number</td>
<td><strong>Yes</strong></td>
<td>For now should always be &quot;1&quot;.</td>
</tr>
<tr>
<td><code>name</code></td>
<td>string</td>
<td><strong>Yes</strong></td>
<td>Name of the plugin. Should be a user-friendly string, as it will be displayed in the UI.</td>
</tr>
<tr>
<td><code>version</code></td>
<td>string</td>
<td><strong>Yes</strong></td>
<td>Version number such as &quot;1.0.0&quot;.</td>
</tr>
<tr>
<td><code>app_min_version</code></td>
<td>string</td>
<td><strong>Yes</strong></td>
<td>Minimum version of Joplin that the plugin is compatible with. In general it should be whatever version you are using to develop the plugin.</td>
</tr>
<tr>
<td><code>description</code></td>
<td>string</td>
<td>No</td>
<td>Detailed description of the plugin.</td>
</tr>
<tr>
<td><code>author</code></td>
<td>string</td>
<td>No</td>
<td>Plugin author name.</td>
</tr>
<tr>
<td><code>homepage_url</code></td>
<td>string</td>
<td>No</td>
<td>Homepage URL of the plugin. It can also be, for example, a link to a GitHub repository.</td>
</tr>
<tr>
<td><code>content_scripts</code></td>
<td>string[]</td>
<td>No</td>
<td>List of <a href="https://github.com/laurent22/joplin/blob/dev/packages/generator-joplin/README.md#content-scripts">content scripts</a> used by the plugin.</td>
</tr>
</tbody>
</table>
<p>Here's a complete example:</p>
<h2>Manifest example<a name="manifest-example" href="#manifest-example" class="heading-anchor">🔗</a></h2>
<pre><code class="language-json">{
&quot;manifest_version&quot;: 1,
&quot;name&quot;: &quot;Joplin Simple Plugin&quot;,
@@ -497,7 +513,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/references/plugin_manife
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/references/rest_api.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/references/rest_api.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -1070,7 +1072,7 @@ async function fetchAllNotes() {
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/tutorials/toc_plugin.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/api/tutorials/toc_plugin.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -712,7 +714,7 @@ document.addEventListener('click', event =&gt; {
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20180621-182112.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20180621-182112.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -445,7 +447,7 @@ published_at: 2018-06-21T17:21:12.000+00:00</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20180906-111039.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20180906-111039.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -446,7 +448,7 @@ published_at: 2018-09-06T10:10:39.000+00:00</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20180916-210431.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20180916-210431.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -445,7 +447,7 @@ published_at: 2018-09-16T20:04:31.000+00:00</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20180929-121053.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20180929-121053.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -445,7 +447,7 @@ published_at: 2018-09-29T11:10:53.000+00:00</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20181004-091123.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20181004-091123.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -447,7 +449,7 @@ published_at: 2018-10-04T08:11:23.000+00:00</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20181101-174335.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20181101-174335.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -450,7 +452,7 @@ published_at: 2018-11-01T17:43:35.000+00:00</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20181213-173459.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20181213-173459.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -448,7 +450,7 @@ published_at: 2018-12-13T17:34:59.000+00:00</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190130-230218.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190130-230218.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -448,7 +450,7 @@ published_at: 2019-01-30T23:02:18.000+00:00</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190404-074157.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190404-074157.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -447,7 +449,7 @@ published_at: 2019-04-04T06:41:57.000+00:00</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190424-112410.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190424-112410.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -447,7 +449,7 @@ published_at: 2019-04-24T10:24:10.000+00:00</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190523-231026.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190523-231026.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -457,7 +459,7 @@ published_at: 2019-05-23T22:10:26.000+00:00</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190611-000711.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190611-000711.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -447,7 +449,7 @@ published_at: 2019-06-10T23:07:11.000+00:00</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190613-202613.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190613-202613.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -447,7 +449,7 @@ published_at: 2019-06-13T19:26:13.000+00:00</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190814-225957.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190814-225957.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -456,7 +458,7 @@ published_at: 2019-08-14T21:59:57.000+00:00</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190925-000254.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190925-000254.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -461,7 +463,7 @@ published_at: 2019-09-24T23:02:54.000+00:00</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190929-152834.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190929-152834.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -454,7 +456,7 @@ published_at: 2019-09-29T14:28:34.000+00:00</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20191012-233121.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20191012-233121.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -454,7 +456,7 @@ published_at: 2019-10-12T22:31:21.000+00:00</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20191014-165136.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20191014-165136.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -446,7 +448,7 @@ published_at: 2019-10-14T15:51:36.000+00:00</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20191101-131852.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20191101-131852.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -450,7 +452,7 @@ published_at: 2019-11-01T13:18:52.000+00:00</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20191117-183855.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20191117-183855.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -455,7 +457,7 @@ published_at: 2019-11-17T18:38:55.000+00:00</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20191118-072700.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20191118-072700.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -453,7 +455,7 @@ published_at: 2019-11-18T07:27:00.000+00:00</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20200220-190804.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20200220-190804.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -445,7 +447,7 @@ published_at: 2020-02-20T19:08:04.000+00:00</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20200301-125055.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20200301-125055.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -461,7 +463,7 @@ published_at: 2020-03-01T12:50:55.000+00:00</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20200314-001555.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20200314-001555.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -455,7 +457,7 @@ published_at: 2020-03-14T00:15:55.000+00:00</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20200406-224254.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20200406-224254.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -473,7 +475,7 @@ published_at: 2020-04-06T21:42:54.000+00:00</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/build_troubleshooting.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/build_troubleshooting.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -473,7 +475,7 @@ pod install
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/changelog.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/changelog.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -1955,7 +1957,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/changelog.md
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/changelog_cli.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/changelog_cli.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -687,7 +689,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/changelog_cli.md
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/clipper.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/clipper.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -471,7 +473,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/clipper.md
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/conflict.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/conflict.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -447,7 +449,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/conflict.md
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/debugging.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/debugging.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -493,7 +495,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/debugging.md
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/desktop.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/desktop.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -441,7 +443,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/desktop.md
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/donate.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/donate.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -474,7 +476,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/donate.md
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/e2ee.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/e2ee.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -459,7 +461,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/e2ee.md
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/faq.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/faq.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -413,7 +415,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/faq.md
<p>More info there: <a href="https://github.com/electron-userland/electron-builder/issues/4057">https://github.com/electron-userland/electron-builder/issues/4057</a></p>
<h2>How can I pass arguments to the Linux installation script?<a name="how-can-i-pass-arguments-to-the-linux-installation-script" href="#how-can-i-pass-arguments-to-the-linux-installation-script" class="heading-anchor">🔗</a></h2>
<p>You can pass <a href="https://github.com/laurent22/joplin/blob/dev/Joplin_install_and_update.sh#L37">arguments</a> to the installation script by using this command.</p>
<p><code>wget -O - https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh \| bash -s -- --argument1 --argument2</code></p>
<pre><code style="word-break: break-all">wget -O - https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh | bash -s -- --argument1 --argument2</code></pre>
<h2>How can I edit my note in an external text editor?<a name="how-can-i-edit-my-note-in-an-external-text-editor" href="#how-can-i-edit-my-note-in-an-external-text-editor" class="heading-anchor">🔗</a></h2>
<p>The editor command (may include arguments) defines which editor will be used to open a note. If none is provided it will try to auto-detect the default editor. If this does nothing or you want to change it for Joplin, you need to configure it in the Preferences -&gt; Text editor command.</p>
<p>Some example configurations are: (comments after #)</p>
@@ -526,7 +528,7 @@ on this server.&lt;/p&gt;
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/gsoc2020/ideas.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/gsoc2020/ideas.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -544,7 +546,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/gsoc2020/ideas.md
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/gsoc2020/index.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/gsoc2020/index.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -543,7 +545,7 @@ There could be exceptional reason to accept proposal what cannot be finished ove
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/gsod2020/ideas.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/gsod2020/ideas.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -469,7 +471,7 @@ Task is to find a toolset to structure them and make the knowledge buried in the
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/gsod2020/index.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/gsod2020/index.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -529,7 +531,7 @@ The procedure reflects some of the lessons learnt in the GSOC 2020 campaign, so
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/README.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/README.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -414,27 +416,26 @@ https://github.com/laurent22/joplin/blob/dev/README.md
<tr>
<th>Operating System</th>
<th>Download</th>
<th>Alternative</th>
</tr>
</thead>
<tbody>
<tr>
<td>Windows (32 and 64-bit)</td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v1.5.11/Joplin-Setup-1.5.11.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.5.11/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.5.11/Joplin-1.5.11.dmg'><img alt='Get it on macOS' width="134px" src='https://joplinapp.org/images/BadgeMacOS.png'/></a></td>
<td>-</td>
</tr>
<tr>
<td>Linux</td>
<td><a href='https://github.com/laurent22/joplin/releases/download/v1.5.11/Joplin-1.5.11.AppImage'><img alt='Get it on Linux' width="134px" src='https://joplinapp.org/images/BadgeLinux.png'/></a></td>
<td>The recommended way is to use the following installation 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>
</table>
<p><strong>On Windows</strong>, you may also use the <a href='https://github.com/laurent22/joplin/releases/download/v1.5.11/JoplinPortable.exe'>Portable version</a>. 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.</p>
<p><strong>On Linux</strong>, the recommended way is to use the following installation script as it will handle the desktop icon too:</p>
<pre><code style="word-break: break-all">wget -O - https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh | bash</code></pre>
<h2>Mobile applications<a name="mobile-applications" href="#mobile-applications" class="heading-anchor">🔗</a></h2>
<table>
<thead>
@@ -927,35 +928,35 @@ Eg. <code>:search -- &quot;-tag:tag1&quot;</code>.</p>
<td>Arabic</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ar.po">ar</a></td>
<td><a href="mailto:fi_ahmed_bacha@esi.dz">أحمد باشا إبراهيم</a></td>
<td>77%</td>
<td>75%</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/packages/tools/locales/eu.po">eu</a></td>
<td>juan.abasolo@ehu.eus</td>
<td>33%</td>
<td>32%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/ba.png" alt=""></td>
<td>Bosnian (Bosna i Hercegovina)</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/bs_BA.po">bs_BA</a></td>
<td><a href="mailto:dervis.t@pm.me">Derviš T.</a></td>
<td>79%</td>
<td>77%</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/packages/tools/locales/bg_BG.po">bg_BG</a></td>
<td></td>
<td>64%</td>
<td>62%</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/packages/tools/locales/ca.po">ca</a></td>
<td>jmontane, 2019</td>
<td>92%</td>
<td>89%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/hr.png" alt=""></td>
@@ -969,28 +970,28 @@ Eg. <code>:search -- &quot;-tag:tag1&quot;</code>.</p>
<td>Czech (Česká republika)</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/cs_CZ.po">cs_CZ</a></td>
<td><a href="mailto:lukas@aiya.cz">Lukas Helebrandt</a></td>
<td>96%</td>
<td>93%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/dk.png" alt=""></td>
<td>Dansk (Danmark)</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/da_DK.po">da_DK</a></td>
<td>Mustafa Al-Dailemi (<a href="mailto:dailemi@hotmail.com">dailemi@hotmail.com</a>)Language-Team:</td>
<td>79%</td>
<td>77%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/de.png" alt=""></td>
<td>Deutsch (Deutschland)</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/de_DE.po">de_DE</a></td>
<td><a href="mailto:atalanttore@users.noreply.github.com">Ettore Atalan</a></td>
<td>96%</td>
<td>95%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/ee.png" alt=""></td>
<td>Eesti Keel (Eesti)</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/et_EE.po">et_EE</a></td>
<td></td>
<td>63%</td>
<td>61%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/gb.png" alt=""></td>
@@ -1011,189 +1012,189 @@ Eg. <code>:search -- &quot;-tag:tag1&quot;</code>.</p>
<td>Español (España)</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/es_ES.po">es_ES</a></td>
<td><a href="mailto:mario.campo@gmail.com">Mario Campo</a></td>
<td>96%</td>
<td>99%</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/packages/tools/locales/eo.po">eo</a></td>
<td>Marton Paulo</td>
<td>36%</td>
<td>35%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/fi.png" alt=""></td>
<td>Finnish (Suomi)</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/fi_FI.po">fi_FI</a></td>
<td></td>
<td>97%</td>
<td>94%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/fr.png" alt=""></td>
<td>Français (France)</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/fr_FR.po">fr_FR</a></td>
<td>Laurent Cozic</td>
<td>96%</td>
<td>99%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/es/galicia.png" alt=""></td>
<td>Galician (España)</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/gl_ES.po">gl_ES</a></td>
<td><a href="mailto:marcoslansgarza@gmail.com">Marcos Lans</a></td>
<td>42%</td>
<td>40%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/id.png" alt=""></td>
<td>Indonesian (Indonesia)</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/id_ID.po">id_ID</a></td>
<td><a href="mailto:16875937+fathyar@users.noreply.github.com">Fathy AR</a></td>
<td>88%</td>
<td>85%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/it.png" alt=""></td>
<td>Italiano (Italia)</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/it_IT.po">it_IT</a></td>
<td><a href="mailto:mailfilledwithspam@gmail.com">Alessandro Bernardello</a></td>
<td>97%</td>
<td>96%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/be.png" alt=""></td>
<td>Nederlands (België, Belgique, Belgien)</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/nl_BE.po">nl_BE</a></td>
<td></td>
<td>33%</td>
<td>32%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/nl.png" alt=""></td>
<td>Nederlands (Nederland)</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/nl_NL.po">nl_NL</a></td>
<td><a href="mailto:metbril@users.noreply.github.com">MetBril</a></td>
<td>96%</td>
<td>93%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/no.png" alt=""></td>
<td>Norwegian (Norge, Noreg)</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/nb_NO.po">nb_NO</a></td>
<td><a href="mailto:code@mxe.no">Mats Estensen</a></td>
<td>85%</td>
<td>82%</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/packages/tools/locales/fa.po">fa</a></td>
<td><a href="mailto:kourox@protonmail.com">Kourosh Firoozbakht</a></td>
<td>79%</td>
<td>77%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/pl.png" alt=""></td>
<td>Polski (Polska)</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/pl_PL.po">pl_PL</a></td>
<td></td>
<td>95%</td>
<td>92%</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/packages/tools/locales/pt_BR.po">pt_BR</a></td>
<td><a href="mailto:rnbastos@gmail.com">Renato Nunes Bastos</a></td>
<td>93%</td>
<td>91%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/pt.png" alt=""></td>
<td>Português (Portugal)</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/pt_PT.po">pt_PT</a></td>
<td><a href="mailto:jduar@protonmail.com">João Duarte</a></td>
<td>95%</td>
<td>92%</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/packages/tools/locales/ro.po">ro</a></td>
<td><a href="mailto:cristi.duluta@gmail.com">Cristi Duluta</a></td>
<td>74%</td>
<td>72%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/si.png" alt=""></td>
<td>Slovenian (Slovenija)</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/sl_SI.po">sl_SI</a></td>
<td></td>
<td>41%</td>
<td>40%</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/packages/tools/locales/sv.po">sv</a></td>
<td><a href="mailto:jonatan@autistici.org">Jonatan Nyberg</a></td>
<td>68%</td>
<td>66%</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/packages/tools/locales/th_TH.po">th_TH</a></td>
<td></td>
<td>50%</td>
<td>49%</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/packages/tools/locales/vi.po">vi</a></td>
<td></td>
<td>82%</td>
<td>79%</td>
</tr>
<tr>
<td><img src="https://joplinapp.org/images/flags/country-4x3/tr.png" alt=""></td>
<td>Türkçe (Türkiye)</td>
<td><a href="https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/tr_TR.po">tr_TR</a></td>
<td><a href="mailto:arda@kilicdagi.com">Arda Kılıçdağı</a></td>
<td>94%</td>
<td>99%</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/packages/tools/locales/el_GR.po">el_GR</a></td>
<td><a href="mailto:xaris@tuta.io">Harris Arvanitis</a></td>
<td>92%</td>
<td>89%</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/packages/tools/locales/ru_RU.po">ru_RU</a></td>
<td><a href="mailto:thesermanarm@gmail.com">Sergey Segeda</a></td>
<td>92%</td>
<td>96%</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/packages/tools/locales/sr_RS.po">sr_RS</a></td>
<td></td>
<td>69%</td>
<td>67%</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/packages/tools/locales/zh_CN.po">zh_CN</a></td>
<td><a href="mailto:fungdaat31@outlook.com">WhiredPlanck</a></td>
<td>97%</td>
<td>99%</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/packages/tools/locales/zh_TW.po">zh_TW</a></td>
<td><a href="mailto:yaozeye@yahoo.co.jp">Yaoze Ye</a></td>
<td>91%</td>
<td>95%</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/packages/tools/locales/ja_JP.po">ja_JP</a></td>
<td><a href="mailto:genneko217@gmail.com">genneko</a></td>
<td>97%</td>
<td>96%</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/packages/tools/locales/ko.po">ko</a></td>
<td><a href="mailto:potatogim@potatogim.net">Ji-Hyeon Gim</a></td>
<td>97%</td>
<td>96%</td>
</tr>
</tbody>
</table>
@@ -1587,7 +1588,7 @@ Eg. <code>:search -- &quot;-tag:tag1&quot;</code>.</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/markdown.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/markdown.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -764,7 +766,7 @@ graph TD;
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/mobile.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/mobile.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -440,7 +442,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/mobile.md
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/nextcloud_app.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/nextcloud_app.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -479,7 +481,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/nextcloud_app.md
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/plugins.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/plugins.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -442,7 +444,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/plugins.md
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/prereleases.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/prereleases.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -443,7 +445,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/prereleases.md
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/privacy.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/privacy.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -442,7 +444,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/privacy.md
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/rich_text_editor.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/rich_text_editor.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -414,6 +416,9 @@ https://github.com/laurent22/joplin/blob/dev/readme/rich_text_editor.md
<li>
<p>Tables must have a header, because this is a requirement in Markdown. When you create a table, it will let you create it without a header, but under the hood it will add an empty one. And next time you open the note, this empty header will be present.</p>
</li>
<li>
<p>All items in a list must be of the same type, so for example all checkboxes, or all bullet points. If you require two different types, you should create two different lists separated by an horizontal rule or similar.</p>
</li>
</ul>
<p>Those are the known limitations but if you notice any other issue not listed here, please let us know <a href="https://discourse.joplinapp.org/">in the forum</a>.</p>
@@ -455,7 +460,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/rich_text_editor.md
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/e2ee.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/e2ee.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -534,7 +536,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/e2ee.md
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/history.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/history.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -466,7 +468,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/history.md
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/plugins.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/plugins.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -504,7 +506,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/plugins.md
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/search_sorting.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/search_sorting.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -461,7 +463,7 @@ This time-based weight decays logarithmically, becoming less of a factor than BM
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -0,0 +1,523 @@
<!doctype html>
<html>
<!--
!!! WARNING !!!
This file was auto-generated from readme/spec/server_delta_sync.md and any manual change
made to it will be overwritten. To make a change to this file please modify
the source Markdown file:
https://github.com/laurent22/joplin/blob/dev/readme/spec/server_delta_sync.md
-->
<head>
<title>Joplin Server delta sync | Joplin</title>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://joplinapp.org/css/bootstrap.min.css">
<link rel="shortcut icon" type="image/x-icon" href="https://joplinapp.org/favicon.ico">
<!-- <link rel="stylesheet" href="https://joplinapp.org/css/fontawesome-all.min.css"> -->
<link rel="stylesheet" href="https://joplinapp.org/css/fork-awesome.min.css">
<script src="https://joplinapp.org/js/jquery-3.2.1.slim.min.js"></script>
<style>
body {
background-color: #F1F1F1;
color: #333333;
}
.root {
overflow: hidden;
}
a[href^="mailto:"] {
word-break: break-all;
}
table {
margin-bottom: 1em;
}
td, th {
padding: .8em;
border: 1px solid #ccc;
}
.page-markdown table pre,
.page-markdown table blockquote {
margin-bottom: 0;
}
.page-markdown table pre,
.page-markdown table blockquote {
margin-bottom: 0;
}
.page-markdown table pre {
background-color: rgba(0,0,0,0);
border: none;
margin: 0;
padding: 0;
}
h1, h2 {
border-bottom: 1px solid #eaecef;
padding-bottom: 0.3em;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-weight: 600;
font-size: 2em;
margin-bottom: 16px;
}
h2 {
font-size: 1.6em;
}
h3 {
font-size: 1.3em;
}
code {
color: black;
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
/* word-break: break-all; */
}
pre code {
border: none;
}
pre {
font-size: .85em;
}
blockquote {
font-size: 1em;
color: #555;
};
#toc ul {
margin-bottom: 10px;
}
#toc > ul > li {
margin-bottom: 10px;
}
#toc {
padding-bottom: 1em;
}
.title {
display: flex;
align-items: center;
}
.title-icon {
display: flex;
height: 1em;
}
.title-text {
display: flex;
font-weight: normal;
margin-bottom: .2em;
margin-left: .5em;
}
.sub-title {
font-weight: normal;
}
.container {
background-color: white;
padding: 0;
box-shadow: 0 10px 20px #888888;
}
table.screenshots {
margin-top: 2em;
margin-bottom: 2em;
}
table.screenshots th {
height: 3em;
text-align: center;
}
table.screenshots th,
table.screenshots td {
border: 1px solid #C2C2C2;
}
img[align="left"] {
margin-right: 10px;
margin-bottom: 10px;
}
.mobile-screenshot {
height: 40em;
padding: 1em;
}
.cli-screenshot-wrapper {
background-color: black;
vertical-align: top;
padding: 1em 2em 1em 1em;
}
.cli-screenshot {
font-family: "Monaco", "Inconsolata", "CONSOLAS", "Deja Vu Sans Mono", "Droid Sans Mono", "Andale Mono", monospace;
background-color: black;
color: white;
border: none;
}
.cli-screenshot .prompt {
color: #48C2F0;
}
.top-screenshot {
margin-top: 2em;
text-align: center;
}
.header {
position: relative;
padding-left: 2em;
padding-right: 2em;
padding-top: 1em;
padding-bottom: 1em;
color: white;
background-color: #2B2B3D;
}
.header a h1 {
color: white;
}
.header a:hover {
text-decoration: none;
}
.content {
padding-left: 2em;
padding-right: 2em;
padding-bottom: 2em;
padding-top: 2em;
}
.forkme {
position: absolute;
right: 0;
top:0;
}
.nav-wrapper {
position: relative;
width: inherit;
}
.nav {
background-color: black;
display: flex;
flex-direction: row;
align-items: center;
}
.nav.sticky {
position:fixed;
top: 0;
width: inherit;
box-shadow: 0 0 10px #000000;
}
.nav a {
color: white;
display: inline-block;
padding: .6em .9em .6em .9em;
}
.nav ul {
padding-left: 2em;
margin-bottom: 0;
display: table-cell;
display: flex;
width: 100%;
}
.nav ul li {
display: inline-block;
padding: 0;
}
.nav li.selected {
background-color: #222;
font-weight: bold;
}
.nav-right {
display: flex;
text-align: right;
vertical-align: middle;
line-height: 0;
margin-right: 10px;
}
.nav-right .share-btn {
display: none;
}
.nav-right .small-share-btn {
display: none;
}
.footer {
padding: 2em;
border-top: 1px solid #d4d4d4;
margin-top: 2em;
color: gray;
font-size: .9em;
}
a.heading-anchor {
display: inline-block;
opacity: 0;
width: 1.3em;
font-size: 0.7em;
margin-left: 0.4em;
line-height: 1em;
text-decoration: none;
transition: opacity 0.3s;
}
a.heading-anchor:hover,
h1:hover a.heading-anchor,
h2:hover a.heading-anchor,
h3:hover a.heading-anchor,
h4:hover a.heading-anchor,
h5:hover a.heading-anchor,
h6:hover a.heading-anchor {
opacity: 1;
}
@media (min-width: 992px) {
.content{
display: flex;
}
#toc{
display: block!important;
align-self: flex-start;
width: 300px;
position: sticky; top: 20px; left: 0;
}
.main{
width: calc(100% - 300px);
}
}
.bottom-links {
display: flex;
justify-content: center;
border-top: 1px solid #d4d4d4;
margin-top: 30px;
padding-top: 25px;
}
@media all and (min-width: 400px) {
.nav-right .share-btn {
display: inline-block;
}
.nav-right .small-share-btn {
display: none;
}
}
</style>
</head>
<body>
<div class="container root page-server_delta_sync">
<div class="header">
<a class="forkme" href="https://github.com/laurent22/joplin"><img src="https://joplinapp.org/images/ForkMe.png"/></a>
<a href="https://joplinapp.org"><h1 class="title"><img class="title-icon" src="https://joplinapp.org/images/Icon512.png"><span class="title-text">Joplin</span></h1></a>
<p class="sub-title">An open source note taking and to-do application with synchronisation capabilities</p>
</div>
<div class="nav-wrapper">
<div class="nav">
<ul>
<li class=""><a href="https:&#x2F;&#x2F;joplinapp.org/" title="Home"><i class="fa fa-home"></i></a></li>
<li><a href="https://discourse.joplinapp.org" title="Forum">Forum</a></li>
<li><a class="help" href="#" title="Menu">Menu</a></li>
<!-- <li><a class="gsod" href="https://joplinapp.org/gsod2020/" title="Google Season of Docs 2020">GSoD 2020</a></li> -->
</ul>
<div class="nav-right">
<!--
<iframe class="share-btn" src="https://www.facebook.com/plugins/share_button.php?href=http%3A%2F%2Fjoplinapp.org&layout=button&size=small&mobile_iframe=true&width=60&height=20&appId" width="60" height="20" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowTransparency="true"></iframe>
<iframe class="share-btn" src="https://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fjoplinapp.org" width="62" height="20" title="Tweet" style="border: 0; overflow: hidden;"></iframe>
-->
<iframe class="share-btn share-btn-github" src="https://ghbtns.com/github-btn.html?user=laurent22&repo=joplin&type=star&count=true" frameborder="0" scrolling="0" width="100px" height="20px"></iframe>
</div>
</div>
</div>
<div class="content">
<div id="toc"><ul>
<li>
<p>Applications</p>
<ul>
<li><a href="https://joplinapp.org/desktop/">Desktop application</a></li>
<li><a href="https://joplinapp.org/mobile/">Mobile applications</a></li>
<li><a href="https://joplinapp.org/terminal/">Terminal application</a></li>
<li><a href="https://joplinapp.org/clipper/">Web Clipper</a></li>
</ul>
</li>
<li>
<p>Support</p>
<ul>
<li><a href="https://discourse.joplinapp.org">Joplin Forum</a></li>
<li><a href="https://joplinapp.org/markdown/">Markdown Guide</a></li>
<li><a href="https://joplinapp.org/e2ee/">How to enable end-to-end encryption</a></li>
<li><a href="https://joplinapp.org/conflict/">What is a conflict?</a></li>
<li><a href="https://joplinapp.org/debugging/">How to enable debug mode</a></li>
<li><a href="https://joplinapp.org/rich_text_editor/">About the Rich Text editor limitations</a></li>
<li><a href="https://joplinapp.org/faq/">FAQ</a></li>
</ul>
</li>
<li>
<p>Joplin API - Get Started</p>
<ul>
<li><a href="https://joplinapp.org/api/overview/">Joplin API Overview</a></li>
<li><a href="https://joplinapp.org/api/get_started/plugins/">Plugin development</a></li>
<li><a href="https://joplinapp.org/api/tutorials/toc_plugin/">Plugin tutorial</a></li>
</ul>
</li>
<li>
<p>Joplin API - References</p>
<ul>
<li><a href="https://joplinapp.org/api/references/plugin_api/classes/joplin.html">Plugin API</a></li>
<li><a href="https://joplinapp.org/api/references/rest_api/">Data API</a></li>
<li><a href="https://joplinapp.org/api/references/plugin_manifest/">Plugin manifest</a></li>
<li><a href="https://joplinapp.org/api/references/plugin_loading_rules/">Plugin loading rules</a></li>
</ul>
</li>
<li>
<p>Development</p>
<ul>
<li><a href="https://github.com/laurent22/joplin/blob/dev/BUILD.md">How to build the apps</a></li>
<li><a href="https://joplinapp.org/spec/e2ee/">End-to-end encryption spec</a></li>
<li><a href="https://joplinapp.org/spec/history/">Note History spec</a></li>
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
<p>Google Summer of Code 2020</p>
<ul>
<li><a href="https://joplinapp.org/gsoc2020/index/">Google Summer of Code 2020</a></li>
<li><a href="https://joplinapp.org/gsoc2020/ideas/">Project Ideas</a></li>
</ul>
</li>
<li>
<p>About</p>
<ul>
<li><a href="https://joplinapp.org/changelog/">Changelog (Desktop App)</a></li>
<li><a href="https://joplinapp.org/changelog_cli/">Changelog (CLI App)</a></li>
<li><a href="https://joplinapp.org/stats/">Stats</a></li>
<li><a href="https://joplinapp.org/donate/">Donate</a></li>
</ul>
</li>
</ul>
</div>
<div class="main">
<h1>Joplin Server delta sync<a name="joplin-server-delta-sync" href="#joplin-server-delta-sync" class="heading-anchor">🔗</a></h1>
<p>This documentation is meant to provide a high level overview of delta sync API. Exact technical details might change over time and would be documented separately in an API doc.</p>
<p>Delta sync provides an API end point that gives a list of the latest change events since a particular point. At a high level, it works like so:</p>
<ul>
<li>
<p>User calls <code>/api/files/delta</code> and get a list of the latest changes on the sync target. They also get a <code>cursor</code> object that can be used to check for the latest changes at a later time. A <code>cursor</code> essentially represents a point in time.</p>
</li>
<li>
<p>Later on, they call <code>/api/file/delta?cursor=CURSOR</code>, with the cursor they previously got, and they will get the latest events since that cursor. They will also get a new cursor, which they would use again to get the following events, and so on.</p>
</li>
</ul>
<p>The events are tied to a particular parent ID - in other words it's only possible to list the changes associated with a particular directory (non-recursive). For now, this is sufficient for the purpose of Joplin synchronisation, but later on it might be possible to get the changes in a recursive way.</p>
<h2>What is a change event<a name="what-is-a-change-event" href="#what-is-a-change-event" class="heading-anchor">🔗</a></h2>
<p>An event can be &quot;create&quot;, &quot;update&quot; or &quot;detete&quot; and is associated with a given file. The client uses this info to apply the change locally - creating, updating or deleting the file as needed.</p>
<p>Attached to the event, is also a copy of the file metadata, so the client doesn't need to a do a second request to fetch it.</p>
<p>Internally, the event also stores the file name and parent ID. This is used when an item is deleted since in that case the item ID only would not be sufficient to know where the item was initally stored.</p>
<h2>Event compression<a name="event-compression" href="#event-compression" class="heading-anchor">🔗</a></h2>
<p>To reduce the data being transferred, the API compresses the events by removing redundant ones. For example, multiple updates are compressed into one, since the client only need to know that the item has been updated at least once. The following rules are currently applied to compress the events:</p>
<table>
<thead>
<tr>
<th>Event sequence</th>
<th>Result</th>
<th>Description</th>
</tr>
</thead>
<tbody>
<tr>
<td>update - update</td>
<td>update</td>
<td>If an item is updated twice or more, we only send one update event back</td>
</tr>
<tr>
<td>create - update</td>
<td>create</td>
<td>If an item has been created then modified, we only send one create event, with the latest version of the file</td>
</tr>
<tr>
<td>create - delete</td>
<td>NOOP</td>
<td>If an item has been created, then deleted, we don't send anything back. For the client, this file has never existed.</td>
</tr>
<tr>
<td>update - delete</td>
<td>delete</td>
<td>If an item is updated multiple times, then deleted, we only send a &quot;delete&quot; event back.</td>
</tr>
</tbody>
</table>
<p>Compression works at a page-level so depending on how many items are requested via the <code>limit</code> parameters, different compression will apply.</p>
<p>Due to this compression, the <code>limit</code> query parameter is only advisory. There's no guarantee that exactly <code>limit</code> items will be returned as some items might have been removed after compression. There's however a guarantee that no more than <code>limit</code> items will be returned.</p>
<h2>Delete event limitation<a name="delete-event-limitation" href="#delete-event-limitation" class="heading-anchor">🔗</a></h2>
<p>There's currently a known limitation regarding delete events. When looking at a particular event page, the server might find that a &quot;create&quot; or &quot;update&quot; event is associated with a non-existing file, which would have been deleted. In that case, the server will send back a &quot;delete&quot; event. When looking at following pages, the server will eventually process the actual &quot;delete&quot; event for that item - and send again a &quot;delete&quot; event for it.</p>
<p>This is a known issue and to solve it would require looking ahead in event pages, which would slow down the process. It means it's expected that a client might receive a &quot;delete&quot; event for a file, even though it has no such file or has already deleted it. In that case, the processing for that &quot;delete&quot; event should be a noop, not an error.</p>
<h2>ResyncRequired error<a name="resyncrequired-error" href="#resyncrequired-error" class="heading-anchor">🔗</a></h2>
<p>In some cases, in particular when a delta cursor has expired or is invalid, the server might throw an error with a &quot;resyncRequired&quot; error code. In that case, the client should discard their cursor and sync the complete data again from the beginning.</p>
<p>This error should be rare - currently it would only happen if the cursor is invalid. Later on, it will also happen when old events have been deleted after x months. So a client that has not synced in a long time might see this error. The error code could also be used to solve server-side errors in some rare cases.</p>
<p>When syncing from the start, there will be many &quot;create&quot; events for files that are already there locally. In that case, they should just be skipped.</p>
<h2>Regarding the deletion of old change events<a name="regarding-the-deletion-of-old-change-events" href="#regarding-the-deletion-of-old-change-events" class="heading-anchor">🔗</a></h2>
<p>Keeping all change events permanently would represent a lot of data, however it might be necessary. Without it, it won't be possible for a client to know what file has been deleted and thus a client that has not synced for a long time will keep its files permanently.</p>
<p>So most likely we'll always keep the change events. However, we could compress the old ones to just &quot;create&quot; and &quot;delete&quot; events. All &quot;update&quot; events are not needed. And for a file that has been deleted, we don't need to keep the &quot;create&quot; event.</p>
<p>The client would then follow this logic:</p>
<ul>
<li>For &quot;create&quot; events:
<ul>
<li>If the file is present locally, update it with the version from the server.</li>
<li>If the file is not present, create it using the version from the server.</li>
</ul>
</li>
<li>For &quot;delete&quot; events:
<ul>
<li>If the file is present, delete it.</li>
<li>If it is not, skip the event (not an error).</li>
</ul>
</li>
</ul>
<p>It might seem we could derive the &quot;create&quot; events simply by looking at the files in the directory - all files that are there would implicitely have a &quot;create&quot; event. The issue however is that it's not possible to reliably iterate over the files in a folder, because they might change in the meantime. The change events on the other hand provide an ID that can be used reliably to iterate over changes, and to resume at any time.</p>
<div class="bottom-links">
<a href="https://github.com/laurent22/joplin/blob/dev/readme/spec/server_delta_sync.md">
<i class="fa fa-github"></i> Improve this doc
</a>
</div>
<script>
function stickyHeader() {
return; // Disabled
if ($(window).scrollTop() > 179) {
$('.nav').addClass('sticky');
} else {
$('.nav').removeClass('sticky');
}
}
$('#toc').hide();
$('.help').click(function(event) {
event.preventDefault();
$('#toc').show();
});
$(window).scroll(function() {
stickyHeader();
});
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-103586105-1', 'auto');
ga('send', 'pageview');
</script>
</div></div>
<div class="footer">
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -0,0 +1,469 @@
<!doctype html>
<html>
<!--
!!! WARNING !!!
This file was auto-generated from readme/spec/server_file_url_format.md and any manual change
made to it will be overwritten. To make a change to this file please modify
the source Markdown file:
https://github.com/laurent22/joplin/blob/dev/readme/spec/server_file_url_format.md
-->
<head>
<title>Structure of file URLs in Joplin Server | Joplin</title>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://joplinapp.org/css/bootstrap.min.css">
<link rel="shortcut icon" type="image/x-icon" href="https://joplinapp.org/favicon.ico">
<!-- <link rel="stylesheet" href="https://joplinapp.org/css/fontawesome-all.min.css"> -->
<link rel="stylesheet" href="https://joplinapp.org/css/fork-awesome.min.css">
<script src="https://joplinapp.org/js/jquery-3.2.1.slim.min.js"></script>
<style>
body {
background-color: #F1F1F1;
color: #333333;
}
.root {
overflow: hidden;
}
a[href^="mailto:"] {
word-break: break-all;
}
table {
margin-bottom: 1em;
}
td, th {
padding: .8em;
border: 1px solid #ccc;
}
.page-markdown table pre,
.page-markdown table blockquote {
margin-bottom: 0;
}
.page-markdown table pre,
.page-markdown table blockquote {
margin-bottom: 0;
}
.page-markdown table pre {
background-color: rgba(0,0,0,0);
border: none;
margin: 0;
padding: 0;
}
h1, h2 {
border-bottom: 1px solid #eaecef;
padding-bottom: 0.3em;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
font-weight: 600;
font-size: 2em;
margin-bottom: 16px;
}
h2 {
font-size: 1.6em;
}
h3 {
font-size: 1.3em;
}
code {
color: black;
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
/* word-break: break-all; */
}
pre code {
border: none;
}
pre {
font-size: .85em;
}
blockquote {
font-size: 1em;
color: #555;
};
#toc ul {
margin-bottom: 10px;
}
#toc > ul > li {
margin-bottom: 10px;
}
#toc {
padding-bottom: 1em;
}
.title {
display: flex;
align-items: center;
}
.title-icon {
display: flex;
height: 1em;
}
.title-text {
display: flex;
font-weight: normal;
margin-bottom: .2em;
margin-left: .5em;
}
.sub-title {
font-weight: normal;
}
.container {
background-color: white;
padding: 0;
box-shadow: 0 10px 20px #888888;
}
table.screenshots {
margin-top: 2em;
margin-bottom: 2em;
}
table.screenshots th {
height: 3em;
text-align: center;
}
table.screenshots th,
table.screenshots td {
border: 1px solid #C2C2C2;
}
img[align="left"] {
margin-right: 10px;
margin-bottom: 10px;
}
.mobile-screenshot {
height: 40em;
padding: 1em;
}
.cli-screenshot-wrapper {
background-color: black;
vertical-align: top;
padding: 1em 2em 1em 1em;
}
.cli-screenshot {
font-family: "Monaco", "Inconsolata", "CONSOLAS", "Deja Vu Sans Mono", "Droid Sans Mono", "Andale Mono", monospace;
background-color: black;
color: white;
border: none;
}
.cli-screenshot .prompt {
color: #48C2F0;
}
.top-screenshot {
margin-top: 2em;
text-align: center;
}
.header {
position: relative;
padding-left: 2em;
padding-right: 2em;
padding-top: 1em;
padding-bottom: 1em;
color: white;
background-color: #2B2B3D;
}
.header a h1 {
color: white;
}
.header a:hover {
text-decoration: none;
}
.content {
padding-left: 2em;
padding-right: 2em;
padding-bottom: 2em;
padding-top: 2em;
}
.forkme {
position: absolute;
right: 0;
top:0;
}
.nav-wrapper {
position: relative;
width: inherit;
}
.nav {
background-color: black;
display: flex;
flex-direction: row;
align-items: center;
}
.nav.sticky {
position:fixed;
top: 0;
width: inherit;
box-shadow: 0 0 10px #000000;
}
.nav a {
color: white;
display: inline-block;
padding: .6em .9em .6em .9em;
}
.nav ul {
padding-left: 2em;
margin-bottom: 0;
display: table-cell;
display: flex;
width: 100%;
}
.nav ul li {
display: inline-block;
padding: 0;
}
.nav li.selected {
background-color: #222;
font-weight: bold;
}
.nav-right {
display: flex;
text-align: right;
vertical-align: middle;
line-height: 0;
margin-right: 10px;
}
.nav-right .share-btn {
display: none;
}
.nav-right .small-share-btn {
display: none;
}
.footer {
padding: 2em;
border-top: 1px solid #d4d4d4;
margin-top: 2em;
color: gray;
font-size: .9em;
}
a.heading-anchor {
display: inline-block;
opacity: 0;
width: 1.3em;
font-size: 0.7em;
margin-left: 0.4em;
line-height: 1em;
text-decoration: none;
transition: opacity 0.3s;
}
a.heading-anchor:hover,
h1:hover a.heading-anchor,
h2:hover a.heading-anchor,
h3:hover a.heading-anchor,
h4:hover a.heading-anchor,
h5:hover a.heading-anchor,
h6:hover a.heading-anchor {
opacity: 1;
}
@media (min-width: 992px) {
.content{
display: flex;
}
#toc{
display: block!important;
align-self: flex-start;
width: 300px;
position: sticky; top: 20px; left: 0;
}
.main{
width: calc(100% - 300px);
}
}
.bottom-links {
display: flex;
justify-content: center;
border-top: 1px solid #d4d4d4;
margin-top: 30px;
padding-top: 25px;
}
@media all and (min-width: 400px) {
.nav-right .share-btn {
display: inline-block;
}
.nav-right .small-share-btn {
display: none;
}
}
</style>
</head>
<body>
<div class="container root page-server_file_url_format">
<div class="header">
<a class="forkme" href="https://github.com/laurent22/joplin"><img src="https://joplinapp.org/images/ForkMe.png"/></a>
<a href="https://joplinapp.org"><h1 class="title"><img class="title-icon" src="https://joplinapp.org/images/Icon512.png"><span class="title-text">Joplin</span></h1></a>
<p class="sub-title">An open source note taking and to-do application with synchronisation capabilities</p>
</div>
<div class="nav-wrapper">
<div class="nav">
<ul>
<li class=""><a href="https:&#x2F;&#x2F;joplinapp.org/" title="Home"><i class="fa fa-home"></i></a></li>
<li><a href="https://discourse.joplinapp.org" title="Forum">Forum</a></li>
<li><a class="help" href="#" title="Menu">Menu</a></li>
<!-- <li><a class="gsod" href="https://joplinapp.org/gsod2020/" title="Google Season of Docs 2020">GSoD 2020</a></li> -->
</ul>
<div class="nav-right">
<!--
<iframe class="share-btn" src="https://www.facebook.com/plugins/share_button.php?href=http%3A%2F%2Fjoplinapp.org&layout=button&size=small&mobile_iframe=true&width=60&height=20&appId" width="60" height="20" style="border:none;overflow:hidden" scrolling="no" frameborder="0" allowTransparency="true"></iframe>
<iframe class="share-btn" src="https://platform.twitter.com/widgets/tweet_button.html?url=http%3A%2F%2Fjoplinapp.org" width="62" height="20" title="Tweet" style="border: 0; overflow: hidden;"></iframe>
-->
<iframe class="share-btn share-btn-github" src="https://ghbtns.com/github-btn.html?user=laurent22&repo=joplin&type=star&count=true" frameborder="0" scrolling="0" width="100px" height="20px"></iframe>
</div>
</div>
</div>
<div class="content">
<div id="toc"><ul>
<li>
<p>Applications</p>
<ul>
<li><a href="https://joplinapp.org/desktop/">Desktop application</a></li>
<li><a href="https://joplinapp.org/mobile/">Mobile applications</a></li>
<li><a href="https://joplinapp.org/terminal/">Terminal application</a></li>
<li><a href="https://joplinapp.org/clipper/">Web Clipper</a></li>
</ul>
</li>
<li>
<p>Support</p>
<ul>
<li><a href="https://discourse.joplinapp.org">Joplin Forum</a></li>
<li><a href="https://joplinapp.org/markdown/">Markdown Guide</a></li>
<li><a href="https://joplinapp.org/e2ee/">How to enable end-to-end encryption</a></li>
<li><a href="https://joplinapp.org/conflict/">What is a conflict?</a></li>
<li><a href="https://joplinapp.org/debugging/">How to enable debug mode</a></li>
<li><a href="https://joplinapp.org/rich_text_editor/">About the Rich Text editor limitations</a></li>
<li><a href="https://joplinapp.org/faq/">FAQ</a></li>
</ul>
</li>
<li>
<p>Joplin API - Get Started</p>
<ul>
<li><a href="https://joplinapp.org/api/overview/">Joplin API Overview</a></li>
<li><a href="https://joplinapp.org/api/get_started/plugins/">Plugin development</a></li>
<li><a href="https://joplinapp.org/api/tutorials/toc_plugin/">Plugin tutorial</a></li>
</ul>
</li>
<li>
<p>Joplin API - References</p>
<ul>
<li><a href="https://joplinapp.org/api/references/plugin_api/classes/joplin.html">Plugin API</a></li>
<li><a href="https://joplinapp.org/api/references/rest_api/">Data API</a></li>
<li><a href="https://joplinapp.org/api/references/plugin_manifest/">Plugin manifest</a></li>
<li><a href="https://joplinapp.org/api/references/plugin_loading_rules/">Plugin loading rules</a></li>
</ul>
</li>
<li>
<p>Development</p>
<ul>
<li><a href="https://github.com/laurent22/joplin/blob/dev/BUILD.md">How to build the apps</a></li>
<li><a href="https://joplinapp.org/spec/e2ee/">End-to-end encryption spec</a></li>
<li><a href="https://joplinapp.org/spec/history/">Note History spec</a></li>
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
<p>Google Summer of Code 2020</p>
<ul>
<li><a href="https://joplinapp.org/gsoc2020/index/">Google Summer of Code 2020</a></li>
<li><a href="https://joplinapp.org/gsoc2020/ideas/">Project Ideas</a></li>
</ul>
</li>
<li>
<p>About</p>
<ul>
<li><a href="https://joplinapp.org/changelog/">Changelog (Desktop App)</a></li>
<li><a href="https://joplinapp.org/changelog_cli/">Changelog (CLI App)</a></li>
<li><a href="https://joplinapp.org/stats/">Stats</a></li>
<li><a href="https://joplinapp.org/donate/">Donate</a></li>
</ul>
</li>
</ul>
</div>
<div class="main">
<h1>Structure of file URLs in Joplin Server<a name="structure-of-file-urls-in-joplin-server" href="#structure-of-file-urls-in-joplin-server" class="heading-anchor">🔗</a></h1>
<p>To identify a file, Joplin Server supports two types of URLs:</p>
<h2>Access by ID<a name="access-by-id" href="#access-by-id" class="heading-anchor">🔗</a></h2>
<p><strong>Format:</strong> <code>BASE_URL/files/FILE_ID</code></p>
<p>This is the simplest way and it matches how other API items are accessed by ID.</p>
<p>For example: <code>https://example.com/api/files/5c7e0f3f54434ba</code></p>
<h2>Access by full path<a name="access-by-full-path" href="#access-by-full-path" class="heading-anchor">🔗</a></h2>
<p><strong>Format:</strong> <code>BASE_URL/files/SPECIAL_DIR:/path/to/file/:</code></p>
<p>This is to access a file by its full path. In this case, the path must be prefixed by <code>SPECIAL_DIR</code>, which can only be <code>root</code> at the moment. Then to differentiate the path from URL segments, it needs to be wrapped in colons <code>:</code>.</p>
<p>For example, to access the metadata of file <code>/my/file.txt</code></p>
<p><code>https://example.com/api/files/root:/my/file.txt:</code></p>
<p>To access its content:</p>
<p><code>https://example.com/api/files/root:/my/file.txt:/content</code></p>
<p>To access the root only (for example to list its content):</p>
<p><code>https://example.com/api/files/root:/:</code></p>
<p>Which can also be written as:</p>
<p><code>https://example.com/api/files/root</code></p>
<h2>Difference between API and web app end points<a name="difference-between-api-and-web-app-end-points" href="#difference-between-api-and-web-app-end-points" class="heading-anchor">🔗</a></h2>
<p>The API and web app end points are consistent in the way they access files, except that in one case the URLs will start with <code>/api</code> and the other with just <code>/</code>. For example, this would access the same file:</p>
<ul>
<li>API: <code>https://example.com/api/files/root:/my/file.txt:</code></li>
<li>Web: <code>https://example.com/files/root:/my/file.txt:</code></li>
</ul>
<div class="bottom-links">
<a href="https://github.com/laurent22/joplin/blob/dev/readme/spec/server_file_url_format.md">
<i class="fa fa-github"></i> Improve this doc
</a>
</div>
<script>
function stickyHeader() {
return; // Disabled
if ($(window).scrollTop() > 179) {
$('.nav').addClass('sticky');
} else {
$('.nav').removeClass('sticky');
}
}
$('#toc').hide();
$('.help').click(function(event) {
event.preventDefault();
$('#toc').show();
});
$(window).scroll(function() {
stickyHeader();
});
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-103586105-1', 'auto');
ga('send', 'pageview');
</script>
</div></div>
<div class="footer">
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/sync_lock.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/sync_lock.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -498,7 +500,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/spec/sync_lock.md
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/stats.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/stats.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -1447,7 +1449,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/stats.md
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/terminal.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/terminal.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -1117,7 +1119,7 @@ version
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/1_welcome_to_joplin.
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/1_welcome_to_joplin.
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -486,7 +488,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/1_welcome_to_joplin.
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/2_importing_and_expo
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/2_importing_and_expo
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -446,7 +448,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/2_importing_and_expo
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/3_synchronising_your
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/3_synchronising_your
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -450,7 +452,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/3_synchronising_your
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/4_tips.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/4_tips.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -503,7 +505,7 @@ $$</p>
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -81,7 +81,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/5_privacy.md
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;
@@ -377,6 +377,8 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/5_privacy.md
<li><a href="https://joplinapp.org/spec/sync_lock/">Sync Lock spec</a></li>
<li><a href="https://joplinapp.org/spec/plugins/">Plugin Architecture spec</a></li>
<li><a href="https://joplinapp.org/spec/search_sorting/">Search Sorting spec</a></li>
<li><a href="https://joplinapp.org/spec/server_file_url_format/">Server: File URL Format</a></li>
<li><a href="https://joplinapp.org/spec/server_delta_sync/">Server: Delta Sync</a></li>
</ul>
</li>
<li>
@@ -470,7 +472,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/welcome/5_privacy.md
</div></div>
<div class="footer">
Copyright (C) 2016-2020 Laurent Cozic
Copyright (C) 2016-2021 Laurent Cozic
</div>
</body>
</html>

View File

@@ -7,12 +7,6 @@
},
"license": "MIT",
"scripts": {
"addPackageCli": "lerna add --scope joplin",
"addPackageCliD": "lerna add --scope joplin -D",
"addPackageDesktop": "lerna add --scope @joplin/app-desktop",
"addPackageDesktopD": "lerna add --scope @joplin/app-desktop -D",
"addPackageMobile": "lerna add --scope @joplin/app-mobile",
"addPackageMobileD": "lerna add --scope @joplin/app-mobile -D",
"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/",
@@ -43,8 +37,7 @@
"updateIgnored": "gulp updateIgnoredTypeScriptBuild",
"updatePluginTypes": "./packages/generator-joplin/updateTypes.sh",
"watch": "lerna run watch --stream --parallel",
"i": "lerna add --no-bootstrap --scope",
"server-start-dev": "docker-compose --file docker-compose.server-dev.yml up"
"i": "lerna add --no-bootstrap --scope"
},
"husky": {
"hooks": {

View File

@@ -2,7 +2,7 @@ import { PaginationOrderDir } from '@joplin/lib/models/utils/types';
import Api, { RequestMethod } from '@joplin/lib/services/rest/Api';
import shim from '@joplin/lib/shim';
const { setupDatabaseAndSynchronizer, switchClient, checkThrowAsync, db } = require('./test-utils.js');
const { setupDatabaseAndSynchronizer, switchClient, checkThrowAsync, db, msleep } = require('./test-utils.js');
const Folder = require('@joplin/lib/models/Folder');
const Resource = require('@joplin/lib/models/Resource');
const Note = require('@joplin/lib/models/Note');
@@ -11,14 +11,6 @@ const NoteTag = require('@joplin/lib/models/NoteTag');
const ResourceService = require('@joplin/lib/services/ResourceService').default;
const SearchEngine = require('@joplin/lib/services/searchengine/SearchEngine');
async function msleep(ms: number) {
return new Promise((resolve) => {
shim.setTimeout(() => {
resolve();
}, ms);
});
}
const createFolderForPagination = async (num: number, time: number) => {
await Folder.save({
title: `folder${num}`,

View File

@@ -203,9 +203,28 @@ function sleep(n: number) {
}
function msleep(ms: number) {
// It seems setTimeout can sometimes last less time than the provided
// interval:
//
// https://stackoverflow.com/a/50912029/561309
//
// This can cause issues in tests where we expect the actual duration to be
// the same as the provided interval or more, but not less. So the code
// below check that the elapsed time is no less than the provided interval,
// and if it is, it waits a bit longer.
const startTime = Date.now();
return new Promise((resolve) => {
shim.setTimeout(() => {
resolve(null);
if (Date.now() - startTime < ms) {
const iid = setInterval(() => {
if (Date.now() - startTime >= ms) {
clearInterval(iid);
resolve(null);
}
}, 2);
} else {
resolve(null);
}
}, ms);
});
}

View File

@@ -10,9 +10,9 @@ First copy `.env-sample` to `.env` and edit the values in there:
## Install application
```shell
git clone https://github.com/laurent22/joplin
cd joplin
npm install
mkdir joplin && cd joplin
wget https://github.com/laurent22/joplin/archive/server-v1.6.3.tar.gz
tar xzvf server-v1.6.3.tar.gz
docker-compose --file docker-compose.server.yml up --detach
```

View File

@@ -1,6 +1,6 @@
{
"name": "@joplin/server",
"version": "0.0.0",
"version": "1.6.3",
"lockfileVersion": 1,
"requires": true,
"dependencies": {

View File

@@ -1,6 +1,6 @@
{
"name": "@joplin/server",
"version": "0.0.0",
"version": "1.6.3",
"private": true,
"scripts": {
"start-dev": "nodemon --config nodemon.json dist/app.js --env dev",

View File

@@ -86,7 +86,7 @@ https://github.com/laurent22/joplin/blob/dev/{{{sourceMarkdownFile}}}
background-color: #eee;
border: 1px solid #ccc;
font-size: .85em;
word-break: break-all;
/* word-break: break-all; */
}
pre code {
border: none;

View File

@@ -145,6 +145,15 @@
"resolved": "https://registry.npmjs.org/@types/color-name/-/color-name-1.1.1.tgz",
"integrity": "sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ=="
},
"@types/fs-extra": {
"version": "9.0.6",
"resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-9.0.6.tgz",
"integrity": "sha512-ecNRHw4clCkowNOBJH1e77nvbPxHYnWIXMv1IAoG/9+MYGkgoyr3Ppxr7XYFNL41V422EDhyV4/4SSK8L2mlig==",
"dev": true,
"requires": {
"@types/node": "*"
}
},
"@types/node": {
"version": "14.14.6",
"resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.6.tgz",
@@ -4412,6 +4421,12 @@
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
"dev": true
},
"typescript": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/typescript/-/typescript-4.1.3.tgz",
"integrity": "sha512-B3ZIOf1IKeH2ixgHhj6la6xdwR9QrLC5d1VKeCSY4tvkqhF2eqd9O7txNlS0PO3GrBAFIdr3L1ndNwteUbZLYg==",
"dev": true
},
"uc.micro": {
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.5.tgz",

View File

@@ -5,7 +5,9 @@
"main": "index.js",
"author": "Laurent Cozic",
"scripts": {
"updateIgnored": "gulp updateIgnoredTypeScriptBuild"
"updateIgnored": "gulp updateIgnoredTypeScriptBuild",
"tsc": "tsc --project tsconfig.json",
"watch": "tsc --watch --project tsconfig.json"
},
"publishConfig": {
"access": "public"
@@ -34,9 +36,11 @@
},
"devDependencies": {
"@rmp135/sql-ts": "^1.6.0",
"@types/fs-extra": "^9.0.6",
"@types/node": "^14.14.6",
"gulp": "^4.0.2",
"sqlite3": "^5.0.0"
"sqlite3": "^5.0.0",
"typescript": "^4.1.3"
},
"gitHead": "80c0089d2c52aff608b2bea74389de5a7f12f2e2"
}

View File

@@ -0,0 +1,39 @@
import * as fs from 'fs-extra';
const { execCommand, execCommandVerbose, rootDir, gitPullTry } = require('./tool-utils.js');
const serverDir = `${rootDir}/packages/server`;
const readmePath = `${serverDir}/README.md`;
async function updateReadmeLinkVersion(version: string) {
const content = await fs.readFile(readmePath, 'utf8');
const newContent = content.replace(/server-v(.*?).tar.gz/g, `server-${version}.tar.gz`);
if (content === newContent) throw new Error(`Could not change version number in ${readmePath}`);
await fs.writeFile(readmePath, newContent, 'utf8');
}
async function main() {
process.chdir(serverDir);
console.info(`Running from: ${process.cwd()}`);
await gitPullTry();
const version = (await execCommand('npm version patch')).trim();
const tagName = `server-${version}`;
console.info(`New version number: ${version}`);
await updateReadmeLinkVersion(version);
await execCommandVerbose('git', ['add', '-A']);
await execCommandVerbose('git', ['commit', '-m', `Server release ${version}`]);
await execCommandVerbose('git', ['tag', tagName]);
await execCommandVerbose('git', ['push']);
await execCommandVerbose('git', ['push', '--tags']);
}
main().catch((error) => {
console.error('Fatal error');
console.error(error);
process.exit(1);
});

View File

@@ -79,6 +79,7 @@ async function main() {
await updatePackageVersion(`${rootDir}/packages/app-desktop/package.json`, majorMinorVersion);
await updatePackageVersion(`${rootDir}/packages/app-cli/package.json`, majorMinorVersion);
await updatePackageVersion(`${rootDir}/packages/generator-joplin/package.json`, majorMinorVersion);
await updatePackageVersion(`${rootDir}/packages/server/package.json`, majorMinorVersion);
await updateGradleVersion(`${rootDir}/packages/app-mobile/android/app/build.gradle`, majorMinorVersion);
await updateCodeProjVersion(`${rootDir}/packages/app-mobile/ios/Joplin.xcodeproj/project.pbxproj`, iosVersionHack(majorMinorVersion));
await updateClipperManifestVersion(`${rootDir}/packages/app-clipper/manifest.json`, majorMinorVersion);

View File

@@ -0,0 +1,10 @@
{
"extends": "../../tsconfig.json",
"include": [
"**/*.ts",
"**/*.tsx",
],
"exclude": [
"**/node_modules"
],
}

View File

@@ -18,7 +18,7 @@ More info there: https://github.com/electron-userland/electron-builder/issues/40
You can pass [arguments](https://github.com/laurent22/joplin/blob/dev/Joplin_install_and_update.sh#L37) to the installation script by using this command.
`wget -O - https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh \| bash -s -- --argument1 --argument2`
<pre><code style="word-break: break-all">wget -O - https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh | bash -s -- --argument1 --argument2</code></pre>
## How can I edit my note in an external text editor?

View File

@@ -14,4 +14,6 @@ However **there is a catch**: in Joplin, notes, even when edited with this Rich
- Tables must have a header, because this is a requirement in Markdown. When you create a table, it will let you create it without a header, but under the hood it will add an empty one. And next time you open the note, this empty header will be present.
- All items in a list must be of the same type, so for example all checkboxes, or all bullet points. If you require two different types, you should create two different lists separated by an horizontal rule or similar.
Those are the known limitations but if you notice any other issue not listed here, please let us know [in the forum](https://discourse.joplinapp.org/).