1
0
mirror of https://github.com/laurent22/joplin.git synced 2025-12-29 23:48:19 +02:00

Compare commits

..

69 Commits

Author SHA1 Message Date
Laurent Cozic
b519d55abf Merge branch 'dev' into table_editor 2022-06-14 00:43:23 +01:00
Laurent Cozic
c7697b65ca Add resourceService for debugging 2022-06-13 18:08:20 +01:00
Laurent Cozic
3bb00956fe Desktop: Fixes #6506: App can crash with certain combinations of plugins 2022-06-13 18:08:20 +01:00
Arda Kılıçdağı
e3695c6a80 Turkish translations updated (#6573) 2022-06-10 09:45:37 +01:00
Kenichi Kobayashi
40bc63e7ea Suppress redundant NoteEditor re-rendering by removing non-changing updates of state.selectedNoteTags (#6470) 2022-06-08 10:34:08 +01:00
Kenichi Kobayashi
c320d2364e Performance: suppresses redundant SideBar re-rendering on state.tags (#6451) 2022-06-08 10:33:53 +01:00
Kenichi Kobayashi
fb9e78d6c1 Desktop: Fixes #5178: Allow styling note list items using custom CSS (#6542) 2022-06-08 10:33:06 +01:00
Laurent Cozic
5a862443d8 Merge branch 'dev' into table_editor 2022-06-07 18:30:40 +01:00
alexmo1997
27ef917350 Desktop: Update to Electron 18 (#6496) 2022-06-07 18:23:16 +01:00
Kenichi Kobayashi
2dedede5c3 Removes unnecessary trivial dependencies that causes re-rendering (#6471) 2022-06-07 18:21:55 +01:00
Kenichi Kobayashi
443e049022 Performance: fixes false dependencies in MainScreen (#6444) 2022-06-07 18:09:50 +01:00
Xavi Ivars
b4c3ba249d Update ca.po (#6563) 2022-06-07 17:32:43 +01:00
Perkolator
46f146309d Doc: Added links to mobile changelogs in the about section. (#6562) 2022-06-07 17:32:23 +01:00
ScriptInfra
541203f919 Update README.md (#6560) 2022-06-07 17:31:17 +01:00
ScriptInfra
8495045ada Update README.md (#6559) 2022-06-07 17:30:53 +01:00
ScriptInfra
64c3784a8b Update README.md (#6558)
Added a space between "word `office`".
2022-06-07 17:30:35 +01:00
Joplin Bot
ff897236f7 Doc: Auto-update documentation
Auto-updated using release-website.sh
2022-06-06 18:16:48 +00:00
Laurent Cozic
53206d5488 Clipper release v2.8.1 2022-06-06 16:13:54 +01:00
Laurent Cozic
1eeefb942d Fix clipper build 2022-06-06 16:13:03 +01:00
Laurent Cozic
87296a616a Fix clipper build 2022-06-06 16:10:21 +01:00
Laurent Cozic
6c0f3c3578 Tools: Better joplinbot message 2022-06-06 16:07:47 +01:00
Laurent Cozic
c1fb9fb3f5 iOS 12.8.1 2022-06-06 16:06:09 +01:00
Joplin Bot
466a534fcd Doc: Updated Markdown files
Auto-updated using release-website.sh
2022-06-06 12:23:06 +00:00
Laurent Cozic
9375fe1323 Doc: Release 2.8 announcement 2022-06-06 11:54:11 +01:00
Laurent Cozic
19b8191712 Doc: Fix RSS dates 2022-06-03 14:03:29 +01:00
Joplin Bot
7111d31813 Doc: Updated Markdown files
Auto-updated using release-website.sh
2022-06-03 12:21:36 +00:00
Joplin Bot
d97064979f Doc: Updated Markdown files
Auto-updated using release-website.sh
2022-06-03 11:42:42 +00:00
Laurent Cozic
232e0a3a72 Doc: Auto-generate RSS feed from news 2022-06-03 12:32:24 +01:00
Joscha Schmiedt
40d9ccf183 Doc: Fix broken link to Plugin API (#6545) 2022-05-31 11:22:04 +01:00
Laurent Cozic
f75a9d4a64 Chore: Fixed tests 2022-05-27 12:02:31 +01:00
Laurent Cozic
7168e0dc90 Chore: Optimize highlight.js package size 2022-05-26 16:46:56 +01:00
Laurent Cozic
91df23e959 Chore: Removed lodash package to save space 2022-05-26 15:57:44 +01:00
Laurent Cozic
63b3115d3b word list 2022-05-24 18:09:45 +01:00
Laurent Cozic
8f0763ed45 Doc: Add GTM tags 2022-05-23 11:34:55 +01:00
Joplin Bot
94ac82d7d9 Doc: Updated Markdown files
Auto-updated using release-website.sh
2022-05-22 13:08:41 +00:00
Laurent Cozic
7c2bb02f9e Doc: Add news item 2022-05-22 13:58:07 +01:00
Joplin Bot
832d1a560a Doc: Updated Markdown files
Auto-updated using release-website.sh
2022-05-19 12:21:15 +00:00
Joplin Bot
020fd4ad9a Doc: Updated Markdown files
Auto-updated using release-website.sh
2022-05-19 06:17:25 +00:00
Laurent Cozic
e4b150a4cd Android 2.8.1 2022-05-18 14:41:57 +01:00
Laurent Cozic
9ac3b353e7 lock file 2022-05-18 14:31:37 +01:00
Laurent Cozic
84d7f0fd60 Doc: Add yearly-monthly plan A-B testing 2022-05-18 14:16:54 +01:00
Laurent Cozic
d4c209e638 CLI v2.8.1 2022-05-18 14:03:43 +01:00
Laurent Cozic
2cbe7be16e Releasing sub-packages 2022-05-18 13:59:47 +01:00
Joplin Bot
d2bb2e9df4 Doc: Updated Markdown files
Auto-updated using release-website.sh
2022-05-17 18:18:25 +00:00
Laurent Cozic
c2a6a13eb4 Desktop release v2.8.8 2022-05-17 14:13:27 +01:00
Laurent Cozic
6ba5a896e8 Update translations 2022-05-17 14:12:42 +01:00
Daeraxa
6937066c60 Docs: Update plugin readmes (#6502) 2022-05-17 14:10:58 +01:00
Retrove
64ef5ebde4 Desktop: Fixes #6503: Dropbox login button is not visible in dark mode (#6513) 2022-05-17 14:10:31 +01:00
Laurent Cozic
7ec3a7be9f Desktop: Remove plugin backoff handler for now 2022-05-17 14:08:54 +01:00
Joplin Bot
81ea66f4ad Doc: Updated Markdown files
Auto-updated using release-website.sh
2022-05-17 12:23:02 +00:00
Laurent Cozic
075c4053a8 Doc: Added sponsor 2022-05-17 10:09:22 +01:00
Máté Molnár
17256873dc Updated translations (#6516) 2022-05-14 22:49:33 +01:00
Joplin Bot
6f1a806e5c Doc: Updated Markdown files
Auto-updated using release-website.sh
2022-05-12 00:40:30 +00:00
Joplin Bot
41e95e81de Doc: Updated Markdown files
Auto-updated using release-website.sh
2022-05-11 18:18:05 +00:00
Joplin Bot
f406d112bd Doc: Updated Markdown files
Auto-updated using release-website.sh
2022-05-11 12:23:05 +00:00
Laurent Cozic
2151a626cd Doc: Disable linkify to prevent text from being incorrectly converted to a link 2022-05-10 16:01:30 +01:00
kik0220
0fc65acfa2 Translation: Update ja_JP.po (#6504) 2022-05-10 14:41:30 +01:00
Tolulope Malomo
2eddd40667 Mobile: Fixes #6328: Error when pressing undo or redo button while editor is closed (#6426) 2022-05-10 10:23:36 +01:00
Mr-Kanister
a8723ea512 Update de_DE.po (#6501) 2022-05-10 09:59:57 +01:00
Laurent Cozic
a6c3fbb0ed Revert "Merge branch 'dev' into dev"
This reverts commit 5e0c171099, reversing
changes made to b8aa7d0735.

Was accidentally pushed to dev.
2022-05-09 12:41:55 +01:00
Daeraxa
5e0c171099 Merge branch 'dev' into dev 2022-05-09 11:25:35 +01:00
Joplin Bot
b8aa7d0735 Doc: Updated Markdown files
Auto-updated using release-website.sh
2022-05-06 12:20:41 +00:00
Daeraxa
7f3e8c5455 test 2022-05-01 16:16:04 +01:00
Laurent
30e191663d Merge branch 'dev' into table_editor 2022-04-17 12:42:46 +01:00
Laurent
70cd2395fb Merge branch 'dev' into table_editor 2022-04-12 23:31:35 +01:00
Laurent
2f1b6fbee1 Merge branch 'dev' into table_editor 2022-04-12 15:25:01 +01:00
Laurent
8c0d4a0f71 Merge branch 'dev' into table_editor 2022-04-11 20:04:24 +01:00
Laurent
bc08c6dcc3 Merge branch 'dev' into table_editor 2022-04-05 19:17:37 +01:00
Laurent Cozic
a06365039d table editor init 2022-03-07 17:17:41 +00:00
94 changed files with 2095 additions and 809 deletions

View File

@@ -421,6 +421,9 @@ packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/styles/index.js.map
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/index.d.ts
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/index.js
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/index.js.map
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/tables.d.ts
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/tables.js
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/tables.js.map
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/types.d.ts
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/types.js
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/types.js.map
@@ -688,6 +691,9 @@ packages/app-desktop/gui/StyleSheets/StyleSheetContainer.js.map
packages/app-desktop/gui/SyncWizard/Dialog.d.ts
packages/app-desktop/gui/SyncWizard/Dialog.js
packages/app-desktop/gui/SyncWizard/Dialog.js.map
packages/app-desktop/gui/TableEditorDialog/Dialog.d.ts
packages/app-desktop/gui/TableEditorDialog/Dialog.js
packages/app-desktop/gui/TableEditorDialog/Dialog.js.map
packages/app-desktop/gui/TagList.d.ts
packages/app-desktop/gui/TagList.js
packages/app-desktop/gui/TagList.js.map
@@ -967,6 +973,9 @@ packages/generator-joplin/generators/app/templates/src/index.js.map
packages/htmlpack/src/index.d.ts
packages/htmlpack/src/index.js
packages/htmlpack/src/index.js.map
packages/lib/ArrayUtils.d.ts
packages/lib/ArrayUtils.js
packages/lib/ArrayUtils.js.map
packages/lib/AsyncActionQueue.d.ts
packages/lib/AsyncActionQueue.js
packages/lib/AsyncActionQueue.js.map
@@ -1996,6 +2005,9 @@ packages/renderer/MdToHtml/validateLinks.js.map
packages/renderer/headerAnchor.d.ts
packages/renderer/headerAnchor.js
packages/renderer/headerAnchor.js.map
packages/renderer/highlight.d.ts
packages/renderer/highlight.js
packages/renderer/highlight.js.map
packages/renderer/htmlUtils.d.ts
packages/renderer/htmlUtils.js
packages/renderer/htmlUtils.js.map
@@ -2092,6 +2104,9 @@ packages/tools/website/updateNews.js.map
packages/tools/website/utils/frontMatter.d.ts
packages/tools/website/utils/frontMatter.js
packages/tools/website/utils/frontMatter.js.map
packages/tools/website/utils/news.d.ts
packages/tools/website/utils/news.js
packages/tools/website/utils/news.js.map
packages/tools/website/utils/openGraph.d.ts
packages/tools/website/utils/openGraph.js
packages/tools/website/utils/openGraph.js.map

15
.gitignore vendored
View File

@@ -411,6 +411,9 @@ packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/styles/index.js.map
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/index.d.ts
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/index.js
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/index.js.map
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/tables.d.ts
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/tables.js
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/tables.js.map
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/types.d.ts
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/types.js
packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/utils/types.js.map
@@ -678,6 +681,9 @@ packages/app-desktop/gui/StyleSheets/StyleSheetContainer.js.map
packages/app-desktop/gui/SyncWizard/Dialog.d.ts
packages/app-desktop/gui/SyncWizard/Dialog.js
packages/app-desktop/gui/SyncWizard/Dialog.js.map
packages/app-desktop/gui/TableEditorDialog/Dialog.d.ts
packages/app-desktop/gui/TableEditorDialog/Dialog.js
packages/app-desktop/gui/TableEditorDialog/Dialog.js.map
packages/app-desktop/gui/TagList.d.ts
packages/app-desktop/gui/TagList.js
packages/app-desktop/gui/TagList.js.map
@@ -957,6 +963,9 @@ packages/generator-joplin/generators/app/templates/src/index.js.map
packages/htmlpack/src/index.d.ts
packages/htmlpack/src/index.js
packages/htmlpack/src/index.js.map
packages/lib/ArrayUtils.d.ts
packages/lib/ArrayUtils.js
packages/lib/ArrayUtils.js.map
packages/lib/AsyncActionQueue.d.ts
packages/lib/AsyncActionQueue.js
packages/lib/AsyncActionQueue.js.map
@@ -1986,6 +1995,9 @@ packages/renderer/MdToHtml/validateLinks.js.map
packages/renderer/headerAnchor.d.ts
packages/renderer/headerAnchor.js
packages/renderer/headerAnchor.js.map
packages/renderer/highlight.d.ts
packages/renderer/highlight.js
packages/renderer/highlight.js.map
packages/renderer/htmlUtils.d.ts
packages/renderer/htmlUtils.js
packages/renderer/htmlUtils.js.map
@@ -2082,6 +2094,9 @@ packages/tools/website/updateNews.js.map
packages/tools/website/utils/frontMatter.d.ts
packages/tools/website/utils/frontMatter.js
packages/tools/website/utils/frontMatter.js.map
packages/tools/website/utils/news.d.ts
packages/tools/website/utils/news.js
packages/tools/website/utils/news.js.map
packages/tools/website/utils/openGraph.d.ts
packages/tools/website/utils/openGraph.js
packages/tools/website/utils/openGraph.js.map

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 62 KiB

View File

@@ -0,0 +1,261 @@
<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Joplin]]></title><description><![CDATA[Joplin, the open source note-taking application]]></description><link>https://joplinapp.org</link><generator>RSS for Node</generator><lastBuildDate>Mon, 06 Jun 2022 00:00:00 GMT</lastBuildDate><atom:link href="https://joplinapp.org/rss.xml" rel="self" type="application/rss+xml"/><pubDate>Mon, 06 Jun 2022 00:00:00 GMT</pubDate><item><title><![CDATA[Joplin 2.8 is available!]]></title><description><![CDATA[<p>As always a lot of changes and new features in this new version available on both desktop and mobile.</p>
<h1>Multiple profile support<a name="multiple-profile-support" href="#multiple-profile-support" class="heading-anchor">🔗</a></h1>
<p>Perhaps the most visible change in this version is the support for multiple profiles. You can now create as many application profile as you wish, each with their own settings, and easily switch from one to another. The main use case is to support for example a &quot;work&quot; profile and a &quot;personal&quot; profile, to allow you to keep things independent, and each profile can sync with a different sync target.</p>
<p>To create a new profile, open <strong>File &gt; Switch profile</strong> and select <strong>Create new profile</strong>, enter the profile name and press OK. The app will automatically switch to this new profile, which you can now configure.</p>
<p>To switch back to the previous profile, again open <strong>File &gt; Switch profile</strong> and select <strong>Default</strong>.</p>
<p>Note that profiles all share certain settings, such as language, font size, theme, etc. This is done so that you don't have reconfigure every details when switching profiles. Other settings such as sync configuration is per profile.</p>
<p>The feature is available on desktop only for now, and should be ported to mobile relatively soon.</p>
<h1>Save Mermaid graph as PNG/SVG<a name="save-mermaid-graph-as-png-svg" href="#save-mermaid-graph-as-png-svg" class="heading-anchor">🔗</a></h1>
<p>This convenient feature allows exporting a Mermaid graph as a PNG or SVG image, or allows copying the image as a DataUrl, which can then be pasted in any compatible text editor. Thanks Asrient for implementing this!</p>
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20220606-mermaid-as-png.png" alt=""></p>
<h1>Publish a mini-website using Joplin Cloud<a name="publish-a-mini-website-using-joplin-cloud" href="#publish-a-mini-website-using-joplin-cloud" class="heading-anchor">🔗</a></h1>
<p>Joplin Cloud now supports publishing a note &quot;recursively&quot;, which means the notes and all the notes it is linked to. This allows easily publishing a simple website made of multiples and images.</p>
<p>To make use of this feature, simply select <strong>Also publish linked notes</strong> when publishing a note.</p>
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20220606-publish-website.png" alt=""></p>
<h1>And more!<a name="and-more" href="#and-more" class="heading-anchor">🔗</a></h1>
<p>In total there are 38 changes to improve the app reliability, security and usability. Full changelog is at <a href="https://joplinapp.org/changelog/">https://joplinapp.org/changelog/</a></p>
]]></description><link>https://joplinapp.org/news/20220606-release-2-8/</link><guid isPermaLink="false">20220606-release-2-8</guid><pubDate>Mon, 06 Jun 2022 00:00:00 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[Joplin received 6 Contributor Projects for GSoC 2022!]]></title><description><![CDATA[<p>We are glad to announce that Google allocated us six projects this year for Google Summer of Code! So this is six contributors who will be working on various parts of the apps, both desktop and mobile, over the summer.</p>
<p>Over the next few weeks, till 13 June, will be the Community Bonding Period during which GSoC contributors get to know mentors, read documentation, and get up to speed to begin working on their projects.</p>
<p>Here's the full list of projects, contributors and mentors.</p>
<table class="table">
<thead>
<tr>
<th>Project Title</th>
<th>Contributor</th>
<th>Assigned Mentor(s)</th>
</tr>
</thead>
<tbody>
<tr>
<td>Improve PDF previewer of Joplin</td>
<td>asrient</td>
<td>Roman, JackGruber</td>
</tr>
<tr>
<td>Implement default plugins on desktop application</td>
<td>mak2002</td>
<td>CalebJohn, Laurent</td>
</tr>
<tr>
<td>Mobile — Easier Editing</td>
<td>Henry H</td>
<td>Daeraxa, CalebJohn</td>
</tr>
<tr>
<td>Improve plugin search and discoverability</td>
<td>Retr0ve</td>
<td>JackGruber, Stefan</td>
</tr>
<tr>
<td>Tablet Layout Project</td>
<td>Tolu-Mals</td>
<td>Laurent, Daeraxa</td>
</tr>
<tr>
<td>Email Plugin</td>
<td>Bishoy Magdy Adeeb</td>
<td>Stefan, Roman</td>
</tr>
</tbody>
</table>
]]></description><link>https://joplinapp.org/news/20220522-gsoc-contributors/</link><guid isPermaLink="false">20220522-gsoc-contributors</guid><pubDate>Sun, 22 May 2022 00:00:00 GMT</pubDate><twitter-text>Joplin received 6 Contributor Projects for GSoC 2022! Welcome to our new contributors who will be working on these projects over summer! #GSoC2022</twitter-text></item><item><title><![CDATA[GSoC "Contributor Proposals" phase is starting now!]]></title><description><![CDATA[<p>The &quot;Contributor Proposals&quot; phase of GSoC 2022 is starting today! If you would like to be a contributor, now is the time to choose your project idea, write your proposal, and upload it to <a href="https://summerofcode.withgoogle.com/">https://summerofcode.withgoogle.com/</a></p>
<p>When it's done, please also let us know by posting an update on your forum introduction post.</p>
<p>If you haven't created a pull request yet, it's still time to create one. Doing so will greatly increase your chances of being selected!</p>
]]></description><link>https://joplinapp.org/news/20220405-gsoc-contributor-proposals/</link><guid isPermaLink="false">20220405-gsoc-contributor-proposals</guid><pubDate>Tue, 05 Apr 2022 00:00:00 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[Joplin participates in Google Summer of Code 2022!]]></title><description><![CDATA[<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20220308-gsoc-banner.png" alt=""></p>
<p>For the third year, Joplin has been selected as a <strong>Google Summer of Code</strong> mentor organisation! We look forward to start working with the contributors on some great new projects. This year's main themes are:</p>
<ul>
<li><strong>Mobile and tablet development</strong> - we want to improve the mobile/tablet application on iOS and Android.</li>
<li><strong>Plugin and external apps</strong> - leverage the Joplin API to create plugins and external apps.</li>
<li>And of course contributors are welcome to suggest their own ideas.</li>
</ul>
<p>Our full idea list is available here: <a href="https://joplinapp.org/gsoc2022/ideas/">GSoC 2022 idea list</a></p>
<p>In the coming month (<strong>March 7 - April 3</strong>), contributors will start getting involved in the forum and start discussing project ideas with the mentors and community. It's also a good time to start looking at Joplin's source code, perhaps work on fixing bugs or implement small features to get familiar with the source code, and to show us your skills.</p>
<p>One difference with previous years is that anyone, not just students, are allowed to participate.</p>
<p>Additionally, last year Google only allowed smaller projects, while this year they allow again small and large projects, so we've indicated this in the idea list - the small ones are <strong>175 hours</strong>, and the large ones <strong>350 hours</strong>.</p>
]]></description><link>https://joplinapp.org/news/20220308-gsoc2022-start/</link><guid isPermaLink="false">20220308-gsoc2022-start</guid><pubDate>Tue, 08 Mar 2022 00:00:00 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[Joplin 2.7 is available!]]></title><description><![CDATA[<p>This new release is largely focused on bug fixing and optimising various parts of the apps. There's about 26 improvements and 25 bugs and security fixes included - as always many of these apply to both the mobile and desktop app (see the <a href="https://joplinapp.org/changelog/">desktop changelog</a> and <a href="https://joplinapp.org/changelog_android/">mobile changelog</a>).</p>
<p>Many thanks to all the contributors who helped create this release!</p>
<p>Below are some of the more noticeable changes:</p>
<h1>Notebook custom icons<a name="notebook-custom-icons" href="#notebook-custom-icons" class="heading-anchor">🔗</a></h1>
<p>Since version 2.6 it was possible to assign an emoji icon to a notebook, and with this new version it's now possible to assign any custom icon. The icon may be a PNG or JPG file of any size. The app will then import the file and resize it to the correct size. To use a custom icon, follow these steps:</p>
<p>Right-click on a notebook, and select &quot;Edit&quot;:</p>
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20220224-edit-notebook.png" alt=""></p>
<p>In the &quot;Edit notebook&quot; dialog, click &quot;Select file...&quot; and browse to your icon image:</p>
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20220224-edit-dialog.png" alt=""></p>
<p>Click &quot;OK&quot; and the icon will now appear next to the notebook:</p>
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20220224-notebook-icon.png" alt=""></p>
<p>The icon can be changed only from the desktop application at the moment, but it will sync and be displayed correctly on the mobile app too.</p>
<h1>Plugin API improvements<a name="plugin-api-improvements" href="#plugin-api-improvements" class="heading-anchor">🔗</a></h1>
<p>This version also includes a number of improvements to the plugin API, in particular it is now easier to customise the editor context menu from a plugin and dynamically add items to it depending on the context. For example, with the Rich Markdown plugin it will be possible to right-click on an image and open it, or copy it to the clipboard.</p>
<p>A few additional functions have also been added to make plugin development simpler - in particular a command to open any item, whether it's a notebook, note, tag or attachement; and functions to work with attachements, in particular to reveal an attachement in the system file explorer, and to track changes to an attachement.</p>
]]></description><link>https://joplinapp.org/news/20220224-release-2-7/</link><guid isPermaLink="false">20220224-release-2-7</guid><pubDate>Thu, 24 Feb 2022 00:00:00 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[Automatic deletion of disabled accounts on Joplin Cloud]]></title><description><![CDATA[<p>As of 15 Feb 2022, disabled accounts on Joplin Cloud will be automatically deleted after 90 days. A disabled account is one where the Stripe subscription has been cancelled either by the user or automatically (eg for unpaid invoices).</p>
<p>Although it is an automated system, I will manually verify each account that's queued for deletion over the next few days for additional safety (for now everything's working as expected).</p>
<p>When an account is queued for deletion, all notes, notebooks, tags, etc are removed from the system within 2 days, and permanently deleted within 7 days. User information, in particular email and full name will be removed from the system within 2 days, but archived for an additional 90 days for legal reasons, after which they will be deleted too.</p>
]]></description><link>https://joplinapp.org/news/20220215-142000/</link><guid isPermaLink="false">20220215-142000</guid><pubDate>Tue, 15 Feb 2022 00:00:00 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[Joplin 2.6 is available!]]></title><description><![CDATA[<p>Many changes in this new release, available on mobile, desktop and CLI:</p>
<p><strong>Per-notebook sort order and sort buttons</strong></p>
<p>This new feature adds a number of changes to the way notes are sorted. The most visible one is the addition of a sort button above the note list - it allows sorting by modification date, creation date, title or by custom order, in either ascending or descending order:</p>
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20211217-120324_0.png" alt=""></p>
<p>By default, this sort order is going to apply to all notebooks, however you can now also assign a per-notebook sort order. In this case, any sort order will be apply to that notebook only. To enable this behaviour, simply right-click on a notebook and select &quot;Toggle own sort order&quot;:</p>
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20211217-120324_1.png" alt=""></p>
<p>Thanks to Kenichi Kobayashi for developing this feature!</p>
<p><strong>Support for notebook icons</strong></p>
<p>It is now possible to associate icons with notebooks no both the desktop and mobile applications. To do so, right-click on a notebook and selected &quot;Edit&quot;.</p>
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20211217-120324_2.png" alt=""></p>
<p>This will open the new notebook dialog from which can change the title and assign an icon. For now the icons are emojis but perhaps custom icons could be supported later on.</p>
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20211217-120324_3.png" alt=""></p>
<p><strong>Allow collaborating on encrypted notebooks using Joplin Cloud</strong></p>
<p>Thanks to the encryption improvements in the previous Joplin versions it is now possible to share and collaborated on encrypted notebooks, when synchronising with Joplin Cloud (or Joplin Server).</p>
<p>To get this working, you and the recipient will need to have Joplin 2.6 and the person who shares will need to have encryption enabled. After that most of the process is handled automatically by the apps - in particular it will automatically generate and share the required encryption keys for each users.</p>
<p><strong>Improved synchronisation startup speed</strong></p>
<p>Synchronisation is also a bit faster in this release due to an optimisation on the startup process. When syncing, the app needs to acquire a lock, which may be time consuming since it requires making multiple requests. This has now been optimised so that less requests are necessary and also each request consumes less resources. This will have a postive impact on Joplin Cloud in particular, but you should also see improvements with Joplin Server and smaller improvements with the other sync targets.</p>
<p><strong>Improved Markdown editor split view scrolling</strong></p>
<p>Kenichi Kobayashi made some great improvements to the Markdown editor scrolling in this release. The issue before was that the editor on the left and the viewer on the right would often not be in sync, in particular if the note contains several images and other media.</p>
<p>With Kenichi's change the editor and viewer stay nicely in sync, regardless of the note content. In fact it looks a bit like magic when you scroll through large notes - notice in particular how each side appear to wait for the other or speed up in order to make sure both sides are aligned as well possible. Kenichi provides a nice technical documentation about the feature <a href="https://github.com/laurent22/joplin/pull/5512#issuecomment-931277022">here</a>.</p>
<p><a href="https://www.youtube.com/watch?v=Wbs5XZR0oeU">https://www.youtube.com/watch?v=Wbs5XZR0oeU</a></p>
<p><strong>Improved and optimised S3 synchronisation</strong></p>
<p>Thanks to the efforts of Lee Matos, synchronisation with S3 is now more reliable and errors are also better handled. The underlying S3 SDK has also been upgraded from v2 to v3 which results in a smaller executable size (about 3-5 MB depending on the operating system)</p>
<p><strong>Export notes as self-contained HTML files</strong></p>
<p>Exporting a single note as HTML is now more user friendly as all images, scripts, styles and other attachments are all packed into a single HTML file (Previously it would create multiples files and directories). This makes it easier to share the complete note with someone who doesn't have Joplin.</p>
<p><strong>Other changes and bug fixes</strong></p>
<p>This release includes a total of 19 new features and improvements and 16 bug fixes. See the 2.6.x changelogs for more details:</p>
<p><a href="https://joplinapp.org/changelog/">https://joplinapp.org/changelog/</a></p>
<p><a href="https://joplinapp.org/changelog_android/">https://joplinapp.org/changelog_android/</a></p>
<p><a href="https://joplinapp.org/changelog_ios/">https://joplinapp.org/changelog_ios/</a></p>
<p><a href="https://joplinapp.org/changelog_cli/">https://joplinapp.org/changelog_cli/</a></p>
]]></description><link>https://joplinapp.org/news/20211217-120324/</link><guid isPermaLink="false">20211217-120324</guid><pubDate>Fri, 17 Dec 2021 12:03:24 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[Potential breaking change in next Joplin Server update (2.5.10)]]></title><description><![CDATA[<p>Just a head up that the next Joplin Server update could potentially include a breaking change, depending on your data.</p>
<p>One of the database migration is going to add an &quot;owner_id&quot; column to the &quot;items&quot; table (where all notes, notebooks, etc. are stored), and automatically populate it. Normally that shouldn't take too long but you might want to make sure you won't need the server right away when you process this.</p>
<p>The second database migration will add a unique constraint on items.name and items.owner_id and that's where the breaking change might be. Normally this data is already unique because that's enforced by the application but in some rare cases, due a race condition, there could be duplicate data in there. If that happens the migration will fail and the server will not start.</p>
<p>If that happens, you'll need to decide what to do with the data, as it's not possible to automatically decide. You can find all duplicates using this query:</p>
<p><code><strong>select</strong> count(<em>), name, owner_id<br>
<strong>from</strong> items <strong>group</strong> <strong>by</strong> name, owner_id<br>
<strong>having</strong> count(</em>) &gt; 1;</code></p>
<p>Once you have the list of IDs you have a few options:</p>
<ul>
<li>Find the corresponding item in Joplin (it can unfortunately be anything - a note, resource, folder, etc.), then delete it and sync.</li>
<li>Or, just delete the data directly in the database. You'll want to delete the corresponding item_id from the user_items table too.</li>
</ul>
<p>But really in most cases you should be fine. Especially if you don't have that many notes it's unlikely you have duplicates.</p>
]]></description><link>https://joplinapp.org/news/20211102-150403/</link><guid isPermaLink="false">20211102-150403</guid><pubDate>Tue, 02 Nov 2021 15:04:03 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[Joplin v2.5 is available for desktop and mobile!]]></title><description><![CDATA[<p><a href="https://joplinapp.org/download/">Joplin v2.5</a> is now available for desktop, mobile and CLI! Here's an overview of the changes:</p>
<h3>Support for Markdown + Front Matter<a name="support-for-markdown-front-matter" href="#support-for-markdown-front-matter" class="heading-anchor">🔗</a></h3>
<p>Markdown + Front Matter is a format that allows attaching metadata, such as tags, creation date, or geolocation to a Markdown file. This is done by adding a block of YAML code (a &quot;front matter&quot;) at the top of the file.</p>
<p>Thansk to Caleb John's efforts the Joplin desktop and CLI applications now support importing and exporting these files. When exporting, we try to preserve as much metadata as possible, while still keeping it the formatting user friendly.</p>
<p>Here's an example, with the Front Matter at the top, delimited by &quot;---&quot;, and the text below.</p>
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20211031-115215_0.png" alt=""></p>
<p>Markdown + Front Matter is an excellent way to share notes with someone who doesn't have Joplin, to backup notes in a durable format (since no third-party application is needed to read it), and also to export notes to other applications, or to import them.</p>
<p>As with the regular Markdown exporter, the images and attachments are also exported.</p>
<h3>Add support for callback URLs<a name="add-support-for-callback-urls" href="#add-support-for-callback-urls" class="heading-anchor">🔗</a></h3>
<p>Callback URLs is a semi-standard that defines how certain resources in an application can be accessed via URLs. Either to view the resource, or to perform certain actions, such as deletion, creation, etc.</p>
<p>Joplin now support callback URLs to open notes, notebooks and folders. To do so, right click on a note and select &quot;Copy external link&quot;:</p>
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20211031-115215_1.png" alt=""></p>
<p>That would give you a URL such as this:</p>
<blockquote>
<p>joplin://x-callback-url/openNote?id=b7a7b93281f54d928612eea550f33a7f</p>
</blockquote>
<p>Then if you click it from outside the app, the app will open and select this particular note. In practice such a feature allows third-party application to interact with Joplin by creating links that can be opened from outside. For example, you may use a different application for project planning, then link to the individual notes for more details about each task.</p>
<p>Many thanks to Roman Musin for adding the feature!</p>
<h3>Improved end-to-end encryption support<a name="improved-end-to-end-encryption-support" href="#improved-end-to-end-encryption-support" class="heading-anchor">🔗</a></h3>
<p>The series of quiet but major changes to the end-to-end encryption support continue in this new verison. One goal is still to allow sharing notebooks while encryption is enabled.</p>
<p>To that end, v2.5 includes support for RSA public-private key pairs. If you have encryption enabled, they will be automatically generated when you synchronise by the mobile, desktop or CLI applications. Later on, these keys will be used to allow sharing encrypted notebooks.</p>
<p>The second goal of these E2EE changes is to simplify the system enough that it can be enabled by default. To that end, the master password dialog and encryption screen have been improved. An option to reset the master password is now also available.</p>
<h3>Various other improvements and bug fixes<a name="various-other-improvements-and-bug-fixes" href="#various-other-improvements-and-bug-fixes" class="heading-anchor">🔗</a></h3>
<p>In total this release includes about 11 other bug fixes and improvements. There was in particular several improvements to the share features. It is now also possible for a share recipient to leave the shared notebook.</p>
<h3>Mobile app update<a name="mobile-app-update" href="#mobile-app-update" class="heading-anchor">🔗</a></h3>
<p>As always the mobile apps (to be released soon) benefit from several of the above changes since they share the same codebase as the desktop app.</p>
<p>Specific to the mobile version 2.5 are some improvements to the beta editor - in particular the layout has been cleaned up, and the first word of sentences is now automatically capitalised, which makes typing notes easier. If you haven't tried the beta editor yet, you can enable it from the Configuration screen.</p>
<p>The full changelog is available there: <a href="https://joplinapp.org/changelog/">https://joplinapp.org/changelog/</a></p>
]]></description><link>https://joplinapp.org/news/20211031-115215/</link><guid isPermaLink="false">20211031-115215</guid><pubDate>Sun, 31 Oct 2021 11:52:15 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA["Certificate has expired" error with Joplin Cloud, and workaround]]></title><description><![CDATA[<p>Some of you might be experiencing an error &quot;Certificate has expired&quot; when synchronising with Joplin Cloud (and possibly other services) when using the desktop application.</p>
<p>This is due to Let's Encrypt root certificate that expired on 30 September, and the new method they are using is not compatible with the Joplin desktop application.</p>
<p>This actually affects thousands of applications, not just Joplin, so various solutions are being considered right now and hopefully a fix will be available relatively soon.</p>
<p>For now, as a workaround, you can simply check &quot;<strong>Ignore TLS certificate errors</strong>&quot; in <strong>Configuration &gt; Synchronisation &gt; Advanced Options</strong></p>
<p>I will let you know as soon as a fix is available so that you can clear that option.</p>
<p>More info:</p>
<p>- <a href="https://community.letsencrypt.org/t/issues-with-electron-and-expired-root/160991">Issue with Electron and expired root</a> on Let's Encrypt</p>
<p>- <a href="https://github.com/electron/electron/issues/31212">Let's Encrypt root CA isn't working properly</a> on Electron GitHub repository</p>
<p><strong>Update:</strong> I have implemented a temporary fix on Joplin Cloud which should solve the issue for now. If you're still having some issues please let me know. An updated desktop app will be available later on with a more permanent fix.</p>
]]></description><link>https://joplinapp.org/news/20210930-163458/</link><guid isPermaLink="false">20210930-163458</guid><pubDate>Thu, 30 Sep 2021 16:34:58 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[Joplin 2.4 is available!]]></title><description><![CDATA[<p>Joplin 2.4 is now available on desktop, mobile and CLI. Here's what's new in this release:</p>
<h3>Sync Wizard Dialog<a name="sync-wizard-dialog" href="#sync-wizard-dialog" class="heading-anchor">🔗</a></h3>
<p>A new Sync Wizard Dialog has been added to simplify setting up sync on new clients.</p>
<p>The dialog shows the main sync targets, their differences, and makes it easy to choose one and start synchronising. This is mostly aimed at new users or those perhaps less technical. Those who are self hosting or using complex setups will still easily find what they need from a link on that dialog (or in Config &gt; Synchronisation like before).</p>
<p>Sync setup on mobile has been slightly improved too - now on a new client, instead of asking you to sync with Dropbox directly (which may not be what you want), it jumps to the Config &gt; Synchronisation section where you can select the sync target</p>
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20210929-144036_0.png" alt=""></p>
<h3>Disable synchronisation<a name="disable-synchronisation" href="#disable-synchronisation" class="heading-anchor">🔗</a></h3>
<p>It's a small change but something that's been asked many time - it's now possible to disable synchronisation entirely by selecting &quot;None&quot; as a sync target. Previously that could be done in a hacky way, by selecting a non-configured sync target. Now it's clearer and easier to do.</p>
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20210929-144036_1.png" alt=""></p>
<h3>Add back support for deprecated plugins<a name="add-back-support-for-deprecated-plugins" href="#add-back-support-for-deprecated-plugins" class="heading-anchor">🔗</a></h3>
<p>Recently some plugins stopped working because deprecated plugin APIs had been removed. It had been planned for a long time but I suspect the warnings weren't visible enough so plugin developers didn't act on them, and as a result many plugins stopped working.</p>
<p>This is now fixed in the latest version. A selected number of plugins will have access to these old deprecated APIs, which means they will start working again. This was mainly affecting ambrt's plugins such as &quot;Convert Text To New Note&quot; or the popular &quot;Embed Search&quot; plugin.</p>
<h3>Add support for recommended plugins<a name="add-support-for-recommended-plugins" href="#add-support-for-recommended-plugins" class="heading-anchor">🔗</a></h3>
<p>As mentioned in an earlier post, we now support <a href="https://www.patreon.com/posts/introducing-in-55618802">recommended plugins</a>. These recommended plugins appear on top when searching and are identified by a small crown.</p>
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20210929-144036_2.png" alt=""></p>
<h3>End to End Encryption improvements<a name="end-to-end-encryption-improvements" href="#end-to-end-encryption-improvements" class="heading-anchor">🔗</a></h3>
<p>Like most recent releases, v2.4 includes a few improvement to the End to End Encryption (E2EE) system. The goal is to make it easier to use, to make it more reliable and to support the future use case of sharing encrypted notebooks or notes.</p>
<p>One important change is the support for a master password. This single password will be responsible to encrypt various keys, including some that will be automatically generated. Thanks to this, it won't be necessary to ask to enter a new password every time a key needs to be encrypted, since the master password can be used. It will also be easier to manage since you'll only have one password to remember instead of a different one for each notebook you might have shared.</p>
<p>Finally, it's now possible to disable a master key. What it means is that it will no longer show up in the list of master keys, and will also no longer generate a warning asking you to enter the password. In some case you might have forgotten it and no longer need it key, so you can now disable it.</p>
<h3>Custom CSS<a name="custom-css" href="#custom-css" class="heading-anchor">🔗</a></h3>
<p>This version also introduces a few internal change to better support custom CSS. In particular the colours now come from a CSS file, which could potentially be overridden, and new UI elements are styled using stylesheets, which likewise could be overridden.</p>
<p>Those are just first steps, but eventually these changes will make it easier to style the UI and create new themes.</p>
<h3>Bug fixes<a name="bug-fixes" href="#bug-fixes" class="heading-anchor">🔗</a></h3>
<p>This release also includes about 30 various bug fixes and improvements.</p>
<p>A notable one is a fix for GotoAnything, which recently wasn't working on first try.</p>
<p>The plugin screen has also been improved so that search works even when GitHub is down or blocked, as it is in China in particular.</p>
]]></description><link>https://joplinapp.org/news/20210929-144036/</link><guid isPermaLink="false">20210929-144036</guid><pubDate>Wed, 29 Sep 2021 14:40:36 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[Introducing recommended plugins in the next Joplin version]]></title><description><![CDATA[<p>A common request from new users is how to know which plugin is safe to install or not. In fact probably all of them are safe but as a new user that's not necessarily easy to know. So to help with this, the next version of Joplin will support recommended plugins - those will be plugins that meet our standards of quality and performance, and they will be indicated by a small crown tag inside the plugin box. Recommended plugins will also appear on top when searching.</p>
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20210901-113415_0.png" alt=""></p>
<p>For now, since we don't have a review process, the recommended plugins are those developed by the Joplin team and frequent contributors, because we know those are safe to use.</p>
<p>Later we might have a review process and add more recommended plugins. That being said, in the meantime even if a plugin is not marked as recommended, there's a good chance it is still safe and have good performance too. Often you can search for it on the forum and if it's active with many users commenting, you're most likely good to go.</p>
<p>But if there's any doubt, the recommended tag is a good way to be sure.</p>
]]></description><link>https://joplinapp.org/news/20210901-113415/</link><guid isPermaLink="false">20210901-113415</guid><pubDate>Wed, 01 Sep 2021 11:34:15 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[Joplin Cloud is officially production ready!]]></title><description><![CDATA[<p><a href="https://joplinapp.org/plans/">Joplin Cloud</a> has been out of beta for a few weeks now and since then it has been quietly running without any troubles. There is no known bugs and the service is running smoothly so it's now safe to say that it is production ready!</p>
<p>As a reminder, Joplin Cloud is meant to provide a more seamless Joplin experience - if you want to quickly get started, it's as easy as downloading the app and getting a Joplin Cloud account. Besides improved sync performance, that will give you the ability to collaborate on notebooks with others, as well as publishing and sharing notes.</p>
<p>Of course Joplin still supports other sync options such as Nextcloud, Dropbox and OneDrive or AWS S3. You can also self host using Joplin Server. The advantage of Joplin Cloud being that you don't need to maintain a server yourself - for a small fee you'll get that taken care of.</p>
<p>Additionally, subscribing to Joplin Cloud is a great way to support the project as a whole, including the open source applications. Such support is needed in the long term to provide bug and security fixes, add new features, and provide support.</p>
<p>At some level it is also an experiment, to see if such a service is financially viable and can allow me to work full time on the project. This is certainly something I would like, and perhaps Joplin Cloud combined with your donations will allow that.</p>
]]></description><link>https://joplinapp.org/news/20210831-154354/</link><guid isPermaLink="false">20210831-154354</guid><pubDate>Tue, 31 Aug 2021 15:43:54 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[How to start your subscription if you have a free Joplin Cloud Beta account]]></title><description><![CDATA[<p>For anyone with a beta account, if you would like to keep using it after the end of the trial period, there is now a button to do this from the Joplin Cloud home page:</p>
<img height="222" src="https://aws1.discourse-cdn.com/standard14/uploads/cozic/optimized/2X/e/e2b54352d0e401e692a75817f6faa0432322c405_2_517x222.png" width="517">
<p>If you click on it you will be sent to the Plans page via a special link. Then once you click on &quot;Buy now&quot; you will be sent to the Stripe page where you can start the subscription.</p>
<p>As mentioned in the message, the process takes into account your remaining beta trial days. So for example, if your beta account expires in 60 days, the subscription will have a free 60 days trial period. This is so you don't lose any of the beta trial days no matter when you start the subscription.</p>
<p>If you have any question about it, please let me know.</p>
]]></description><link>https://joplinapp.org/news/20210804-085003/</link><guid isPermaLink="false">20210804-085003</guid><pubDate>Wed, 04 Aug 2021 08:50:03 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[New beta editor for the mobile app]]></title><description><![CDATA[<p>The <a href="https://github.com/laurent22/joplin-android/releases">latest Android pre-release 24</a> features an improved beta editor, which I hope could become a replacement for the very basic editor we have at the moment.</p>
<p>It's still experimental because it's based on the equally experimental CodeMirror 6, however for simple editing tasks it seems to work fine. At the moment the improvements are:</p>
<p>- Syntax highlighting for various tags such as bold, italic and headings.</p>
<p>- List continuation for ordered and unordered lists (I didn't try checklists but I assume it doesn't work)</p>
<p>- Improved undo/redo</p>
<p>- Maybe better handling of large documents? CodeMirror 6 has a demo that loads a document with millions of lines, so maybe that will solve the performance issues that some users were having</p>
<p>If everything works well, later on we should be able to add things like a toolbar, spellchecking and other features that are impossible with the current editor.</p>
<p>If you find any bug, feel free to report here. Also make sure you backup your notes regularly in case there's an issue!</p>
]]></description><link>https://joplinapp.org/news/20210729-103234/</link><guid isPermaLink="false">20210729-103234</guid><pubDate>Thu, 29 Jul 2021 10:32:34 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[The Jopin Cloud beta is now closed]]></title><description><![CDATA[<p>The beta program helped narrow down a few issues and should make Joplin Cloud (and Joplin Server) more reliable. More precisely:</p>
<ul>
<li>
<p>About 7 bugs have been fixed, including two major ones regarding sharing, and one security issue.</p>
</li>
<li>
<p>About a dozen improvements, new features and optimisations have been added following your feedback.</p>
</li>
</ul>
<p>As promised if you have a beta account you can keep using it and it will remain free for the three months after the account was created. After that, you will receive a link to start the Stripe subscription if you wish to keep using the account.</p>
<p>If you have sent me an email before the end of the beta and I didn't reply yet, I will do so soon, and will send you the confirmation email.</p>
<p>Thanks everyone for participating!</p>
]]></description><link>https://joplinapp.org/news/20210718-103538/</link><guid isPermaLink="false">20210718-103538</guid><pubDate>Sun, 18 Jul 2021 10:35:38 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[New website is ready!]]></title><description><![CDATA[<p>The new website is finally ready at <a href="https://joplinapp.org">https://joplinapp.org</a></p>
<p><img src="https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20210711-095626_0.png" alt=""></p>
<p>The previous website had been built organically over the past few years. It had a lot of useful content but finding your way was tricky and, for new users, it wasn't clear what Joplin was about. Finding out how to install the app wasn't obvious since the download buttons were lost in the clutter of information.</p>
<p>So the new website includes a front page with clear goals:</p>
<ul>
<li>
<p>Allows people to easily download the app - for that there's a large Download button at the top and bottom of the page. It redirects to a page that automatically picks the version based on your operating system.</p>
</li>
<li>
<p>Showcase the application key features. The <a href="https://discourse.joplinapp.org/t/what-are-the-key-features-of-joplin/5837">key features post</a> on the forum helped narrow down what Joplin is about, so there are sections about the web clipper, the open source nature of the app, encryption, synchronisation, customisation and the ability to create multimedia notes.</p>
</li>
<li>
<p>The top screenshots have also been updated (the previous one was showing a dev version from 2016, before the app was even released). As a nod to Scott Joplin, the screenshot shows an imaginary plan to open a vintage piano store, with various tasks, tables, documents and images attached, to showcase Joplin features.</p>
</li>
<li>
<p>Finally there's a Press section, which includes extracts from some cool articles that have been written about the app.</p>
</li>
</ul>
<p>Also many thanks to everyone who voted and contributed to the tagline discussion! It helped narrow down what the tagline should be, along with the equally important description below. If you have any question or notice any issue with the website let me know!</p>
]]></description><link>https://joplinapp.org/news/20210711-095626/</link><guid isPermaLink="false">20210711-095626</guid><pubDate>Sun, 11 Jul 2021 09:56:26 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[Poll: What should Joplin tagline be?]]></title><description><![CDATA[<p>Thanks everyone for your tagline suggestions - there were lots of good ideas in there. I've compiled a few of them and create a poll in the forum, so please cast your vote! And if you have any other suggestions on what would make a good tagline, feel free to post over there or here.</p>
<p><a href="https://discourse.joplinapp.org/t/poll-what-should-joplin-tagline-be/18487">https://discourse.joplinapp.org/t/poll-what-should-joplin-tagline-be/18487</a></p>
]]></description><link>https://joplinapp.org/news/20210706-140228/</link><guid isPermaLink="false">20210706-140228</guid><pubDate>Tue, 06 Jul 2021 14:02:28 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[Any ideas for a Joplin tagline?]]></title><description><![CDATA[<p>I'm going to update the website front page to better showcase the application. I have most of the sections right, but the part I'm still not sure about is the top tagline, so I'm wondering if anyone had any suggestion about it?</p>
<p>From what I can see on Google Keep or Evernote for example it should be something like &quot;Use our app to get X or Y benefit&quot;, it should be a sentence that directly speaks to the user essentially.</p>
<p>So far I have &quot;Your notes, anywhere you are&quot; but I'm not certain that's particularly inspiring. Any other idea about what tagline could be used?</p>
]]></description><link>https://joplinapp.org/news/20210705-094247/</link><guid isPermaLink="false">20210705-094247</guid><pubDate>Mon, 05 Jul 2021 09:42:47 GMT</pubDate><twitter-text></twitter-text></item><item><title><![CDATA[Poll: What's the size of your note collection?]]></title><description><![CDATA[<p>Poll is on the forum:</p>
<p><a href="https://discourse.joplinapp.org/t/poll-whats-the-size-of-your-note-collection/18191">https://discourse.joplinapp.org/t/poll-whats-the-size-of-your-note-collection/18191</a></p>
]]></description><link>https://joplinapp.org/news/20210624-171844/</link><guid isPermaLink="false">20210624-171844</guid><pubDate>Thu, 24 Jun 2021 17:18:44 GMT</pubDate><twitter-text></twitter-text></item></channel></rss>

View File

@@ -1,6 +1,7 @@
<!DOCTYPE html>
<html lang="en">
<head>
{{> gtmHead}}
{{> gaOptimize}}
<meta
charset="utf-8"
@@ -12,6 +13,7 @@
<meta name="theme-color" content="#000000" />
<link rel="stylesheet" href="{{{assetUrls.css.fontawesome}}}">
{{> openGraphTags}}
{{> rssFeedLink}}
<link
rel="stylesheet"
href="{{cssBaseUrl}}/bootstrap5.0.2.min.css"
@@ -33,6 +35,8 @@
<title>Joplin</title>
</head>
<body class="front-page website-env-{{env}}">
{{> gtmBody}}
<div class="container-fluid" id="main-container">
{{#navbar}}

View File

@@ -14,6 +14,7 @@ https://github.com/laurent22/joplin/blob/dev/{{{sourceMarkdownFile}}}
-->
<head>
{{> gtmHead}}
{{> gaOptimize}}
<meta
charset="utf-8"
@@ -24,6 +25,7 @@ https://github.com/laurent22/joplin/blob/dev/{{{sourceMarkdownFile}}}
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="theme-color" content="#000000" />
{{> openGraphTags}}
{{> rssFeedLink}}
<link
rel="stylesheet"
href="{{cssBaseUrl}}/bootstrap5.0.2.min.css"
@@ -47,6 +49,8 @@ https://github.com/laurent22/joplin/blob/dev/{{{sourceMarkdownFile}}}
></script>
</head>
<body class="website-env-{{env}}">
{{> gtmBody}}
<div class="container-fluid generic-template {{pageName}}-page" id="main-container">
{{#navbar}}

View File

@@ -1,5 +1,7 @@
<!-- Donate button A/B testing -->
<!-- Monthly/Yearly plan A/B testing -->
<script src="https://www.googleoptimize.com/optimize.js?id=OPT-PW3ZPK3"></script>
<!-- Donate button A/B testing -->
<!--
<script async src="https://www.googleoptimize.com/optimize.js?id=OPT-PW3ZPK3"></script>
-->

View File

@@ -0,0 +1,4 @@
<!-- Google Tag Manager (noscript) -->
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-579DTGX"
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
<!-- End Google Tag Manager (noscript) -->

View File

@@ -0,0 +1,7 @@
<!-- Google Tag Manager -->
<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
})(window,document,'script','dataLayer','GTM-579DTGX');</script>
<!-- End Google Tag Manager -->

View File

@@ -0,0 +1 @@
<link rel="alternate" type="application/rss+xml" title="Joplin RSS feed" href="https://joplinapp.org/rss.xml" />

View File

@@ -28,11 +28,11 @@ Three types of applications are available: for **desktop** (Windows, macOS and L
Operating System | Download
---|---
Windows (32 and 64-bit) | <a href='https://github.com/laurent22/joplin/releases/download/v2.7.15/Joplin-Setup-2.7.15.exe'><img alt='Get it on Windows' width="134px" src='https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/BadgeWindows.png'/></a>
macOS | <a href='https://github.com/laurent22/joplin/releases/download/v2.7.15/Joplin-2.7.15.dmg'><img alt='Get it on macOS' width="134px" src='https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/BadgeMacOS.png'/></a>
Linux | <a href='https://github.com/laurent22/joplin/releases/download/v2.7.15/Joplin-2.7.15.AppImage'><img alt='Get it on Linux' width="134px" src='https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/BadgeLinux.png'/></a>
Windows (32 and 64-bit) | <a href='https://github.com/laurent22/joplin/releases/download/v2.8.8/Joplin-Setup-2.8.8.exe'><img alt='Get it on Windows' width="134px" src='https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/BadgeWindows.png'/></a>
macOS | <a href='https://github.com/laurent22/joplin/releases/download/v2.8.8/Joplin-2.8.8.dmg'><img alt='Get it on macOS' width="134px" src='https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/BadgeMacOS.png'/></a>
Linux | <a href='https://github.com/laurent22/joplin/releases/download/v2.8.8/Joplin-2.8.8.AppImage'><img alt='Get it on Linux' width="134px" src='https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/BadgeLinux.png'/></a>
**On Windows**, you may also use the <a href='https://github.com/laurent22/joplin/releases/download/v2.7.15/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 Windows**, you may also use the <a href='https://github.com/laurent22/joplin/releases/download/v2.8.8/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:
@@ -42,7 +42,7 @@ Linux | <a href='https://github.com/laurent22/joplin/releases/download/v2.7.15/J
Operating System | Download | Alt. Download
---|---|---
Android | <a href='https://play.google.com/store/apps/details?id=net.cozic.joplin&utm_source=GitHub&utm_campaign=README&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1'><img alt='Get it on Google Play' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/BadgeAndroid.png'/></a> | or download the APK file: [64-bit](https://github.com/laurent22/joplin-android/releases/download/android-v2.7.2/joplin-v2.7.2.apk) [32-bit](https://github.com/laurent22/joplin-android/releases/download/android-v2.7.2/joplin-v2.7.2-32bit.apk)
Android | <a href='https://play.google.com/store/apps/details?id=net.cozic.joplin&utm_source=GitHub&utm_campaign=README&pcampaignid=MKT-Other-global-all-co-prtnr-py-PartBadge-Mar2515-1'><img alt='Get it on Google Play' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/BadgeAndroid.png'/></a> | or download the APK file: [64-bit](https://github.com/laurent22/joplin-android/releases/download/android-v2.8.1/joplin-v2.8.1.apk) [32-bit](https://github.com/laurent22/joplin-android/releases/download/android-v2.8.1/joplin-v2.8.1-32bit.apk)
iOS | <a href='https://itunes.apple.com/us/app/joplin/id1315599797'><img alt='Get it on the App Store' height="40px" src='https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/BadgeIOS.png'/></a> | -
## Terminal application
@@ -83,8 +83,8 @@ A community maintained list of these distributions can be found here: [Unofficia
| <img width="50" src="https://avatars2.githubusercontent.com/u/1439535?s=96&v=4"/></br>[fbloise](https://github.com/fbloise) | <img width="50" src="https://avatars2.githubusercontent.com/u/49439044?s=96&v=4"/></br>[fourstepper](https://github.com/fourstepper) | <img width="50" src="https://avatars2.githubusercontent.com/u/38898566?s=96&v=4"/></br>[h4sh5](https://github.com/h4sh5) | <img width="50" src="https://avatars2.githubusercontent.com/u/3266447?s=96&v=4"/></br>[iamwillbar](https://github.com/iamwillbar) |
| <img width="50" src="https://avatars2.githubusercontent.com/u/37297218?s=96&v=4"/></br>[Jesssullivan](https://github.com/Jesssullivan) | <img width="50" src="https://avatars2.githubusercontent.com/u/1248504?s=96&v=4"/></br>[joesfer](https://github.com/joesfer) | <img width="50" src="https://avatars2.githubusercontent.com/u/5588131?s=96&v=4"/></br>[kianenigma](https://github.com/kianenigma) | <img width="50" src="https://avatars2.githubusercontent.com/u/24908652?s=96&v=4"/></br>[konishi-t](https://github.com/konishi-t) |
| <img width="50" src="https://avatars2.githubusercontent.com/u/42319182?s=96&v=4"/></br>[marcdw1289](https://github.com/marcdw1289) | <img width="50" src="https://avatars2.githubusercontent.com/u/1788010?s=96&v=4"/></br>[maxtruxa](https://github.com/maxtruxa) | <img width="50" src="https://avatars2.githubusercontent.com/u/29300939?s=96&v=4"/></br>[mcejp](https://github.com/mcejp) | <img width="50" src="https://avatars2.githubusercontent.com/u/1168659?s=96&v=4"/></br>[nicholashead](https://github.com/nicholashead) |
| <img width="50" src="https://avatars2.githubusercontent.com/u/5782817?s=96&v=4"/></br>[piccobit](https://github.com/piccobit) | <img width="50" src="https://avatars2.githubusercontent.com/u/47742?s=96&v=4"/></br>[ravenscroftj](https://github.com/ravenscroftj) | <img width="50" src="https://avatars2.githubusercontent.com/u/765564?s=96&v=4"/></br>[taskcruncher](https://github.com/taskcruncher) | <img width="50" src="https://avatars2.githubusercontent.com/u/73081837?s=96&v=4"/></br>[thismarty](https://github.com/thismarty) |
| <img width="50" src="https://avatars2.githubusercontent.com/u/15859362?s=96&v=4"/></br>[thomasbroussard](https://github.com/thomasbroussard) | | | |
| <img width="50" src="https://avatars2.githubusercontent.com/u/5782817?s=96&v=4"/></br>[piccobit](https://github.com/piccobit) | <img width="50" src="https://avatars2.githubusercontent.com/u/77214738?s=96&v=4"/></br>[Polymathic-Company](https://github.com/Polymathic-Company) | <img width="50" src="https://avatars2.githubusercontent.com/u/47742?s=96&v=4"/></br>[ravenscroftj](https://github.com/ravenscroftj) | <img width="50" src="https://avatars2.githubusercontent.com/u/765564?s=96&v=4"/></br>[taskcruncher](https://github.com/taskcruncher) |
| <img width="50" src="https://avatars2.githubusercontent.com/u/73081837?s=96&v=4"/></br>[thismarty](https://github.com/thismarty) | <img width="50" src="https://avatars2.githubusercontent.com/u/15859362?s=96&v=4"/></br>[thomasbroussard](https://github.com/thomasbroussard) | | |
<!-- SPONSORS-GITHUB -->
<!-- TOC -->
@@ -153,6 +153,8 @@ A community maintained list of these distributions can be found here: [Unofficia
- About
- [Changelog (Desktop App)](https://github.com/laurent22/joplin/blob/dev/readme/changelog.md)
- [Changelog (Android)](https://github.com/laurent22/joplin/blob/dev/readme/changelog_android.md)
- [Changelog (iOS)](https://github.com/laurent22/joplin/blob/dev/readme/changelog_ios.md)
- [Changelog (CLI App)](https://github.com/laurent22/joplin/blob/dev/readme/changelog_cli.md)
- [Changelog (Server)](https://github.com/laurent22/joplin/blob/dev/readme/changelog_server.md)
- [Stats](https://github.com/laurent22/joplin/blob/dev/readme/stats.md)
@@ -185,6 +187,7 @@ A community maintained list of these distributions can be found here: [Unofficia
- Custom CSS support for customisation of both the rendered markdown and overall user interface.
- Customisable layout allows toggling, movement and sizing of various elements.
- Keyboard shortcuts are editable and allow binding of most Joplin commands with export/import functionality.
- Multiple profile support.
# Importing
@@ -417,9 +420,10 @@ Important: userstyle.css and userchrome.css are provided for your convenience, b
# Plugins
The **desktop app** has the ability to extend beyond its standard functionality by the way of plugins. These plugins adhere to the Joplin plugin API and can be installed & configured within the application via the `Plugins` page in the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/config_screen.md). This menu allows the manual installation of the plugin using the single 'Joplin Plugin Archive' (*.jpl) file. Once the application is reloaded the plugins will appear within the plugins menu where they can be toggled on/off or removed entirely.
The **desktop app** has the ability to extend beyond its standard functionality by the way of plugins. These plugins adhere to the Joplin [plugin API](https://joplinapp.org/api/references/plugin_api/classes/joplin.html) and can be installed & configured within the application via the `Plugins` page of the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/config_screen.md).
Plugins are currently maintained by the community in the [Joplin Discourse 'plugins' category](https://discourse.joplinapp.org/c/plugins/18).
From this menu you can search for plugins uploaded to the [Joplin plugins](https://github.com/joplin/plugins) repository as well as manual installation of plugins using a 'Joplin Plugin Archive' (*.jpl) file.
Once the application is reloaded the plugins will appear within the plugins menu where they can be toggled on/off or removed entirely.
For more information see [Plugins](https://github.com/laurent22/joplin/blob/dev/readme/plugins.md)
@@ -449,7 +453,7 @@ You can also use search filters to further restrict the search.
| Operator | Description | Example |
| --- | --- | --- |
|**-**|If placed before a text term, it excludes the notes that contain that term. You can also place it before a filter to negate it. |`-spam` searches for all notes without the word `spam`.<br>`office -trash` searches for all notes with the word`office` and without the word `trash`.|
|**-**|If placed before a text term, it excludes the notes that contain that term. You can also place it before a filter to negate it. |`-spam` searches for all notes without the word `spam`.<br>`office -trash` searches for all notes with the word `office` and without the word `trash`.|
|**any:**|Return notes that satisfy any/all of the required conditions. `any:0` is the default, which means all conditions must be satisfied.|`any:1 cat dog` will return notes that have the word `cat` or `dog`.<br>`any:0 cat dog` will return notes with both the words `cat` and `dog`. |
| **title:** <br> **body:**|Restrict your search to just the title or the body field.|`title:"hello world"` searches for notes whose title contains `hello` and `world`.<br>`title:hello -body:world` searches for notes whose title contains `hello` and body does not contain `world`.
| **tag:** |Restrict the search to the notes with the specified tags.|`tag:office` searches for all notes having tag office.<br>`tag:office tag:important` searches for all notes having both office and important tags.<br>`tag:office -tag:spam` searches for notes having tag `office` which do not have tag `spam`.<br>`any:1 tag:office tag:spam` searches for notes having tag `office` or tag `spam`.<br>`tag:be*ful` does a search with wildcards.<br>`tag:*` returns all notes with tags.<br>`-tag:*` returns all notes without tags.|
@@ -481,6 +485,16 @@ Notes are sorted by "relevance". Currently it means the notes that contain the r
In the desktop application, press <kbd>Ctrl+P</kbd> or <kbd>Cmd+P</kbd> and type a note title or part of its content to jump to it. Or type <kbd>#</kbd> followed by a tag name, or <kbd>@</kbd> followed by a notebook name.
# Multiple profile support
To create a new profile, open File > Switch profile and select Create new profile, enter the profile name and press OK. The app will automatically switch to this new profile, which you can now configure.
To switch back to the previous profile, again open File > Switch profile and select Default.
Note that profiles all share certain settings, such as language, font size, theme, etc. This is done so that you don't have reconfigure every details when switching profiles. Other settings such as sync configuration is per profile.
The feature is available on desktop only for now, and should be ported to mobile relatively soon.
# Donations
Donations to Joplin support the development of the project. Developing quality applications mostly takes time, but there are also some expenses, such as digital certificates to sign the applications, app store fees, hosting, etc. Most of all, your donation will make it possible to keep up the current development standard.
@@ -529,7 +543,7 @@ Current translations:
<img src="https://joplinapp.org/images/flags/country-4x3/hr.png" width="16px"/> | Croatian (Hrvatska) | [hr_HR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/hr_HR.po) | [Milo Ivir](mailto:mail@milotype.de) | 100%
<img src="https://joplinapp.org/images/flags/country-4x3/cz.png" width="16px"/> | Czech (Česká republika) | [cs_CZ](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/cs_CZ.po) | [Michal Stanke](mailto:michal@stanke.cz) | 86%
<img src="https://joplinapp.org/images/flags/country-4x3/dk.png" width="16px"/> | Dansk (Danmark) | [da_DK](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/da_DK.po) | ERYpTION | 98%
<img src="https://joplinapp.org/images/flags/country-4x3/de.png" width="16px"/> | Deutsch (Deutschland) | [de_DE](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/de_DE.po) | [MrKanister](mailto:pueblos_spatulas@aleeas.com) | 98%
<img src="https://joplinapp.org/images/flags/country-4x3/de.png" width="16px"/> | Deutsch (Deutschland) | [de_DE](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/de_DE.po) | [MrKanister](mailto:pueblos_spatulas@aleeas.com) | 100%
<img src="https://joplinapp.org/images/flags/country-4x3/ee.png" width="16px"/> | Eesti Keel (Eesti) | [et_EE](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/et_EE.po) | | 49%
<img src="https://joplinapp.org/images/flags/country-4x3/gb.png" width="16px"/> | English (United Kingdom) | [en_GB](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/en_GB.po) | | 100%
<img src="https://joplinapp.org/images/flags/country-4x3/us.png" width="16px"/> | English (United States of America) | [en_US](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/en_US.po) | | 100%
@@ -540,7 +554,7 @@ Current translations:
<img src="https://joplinapp.org/images/flags/es/galicia.png" width="16px"/> | Galician (España) | [gl_ES](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/gl_ES.po) | [Marcos Lans](mailto:marcoslansgarza@gmail.com) | 32%
<img src="https://joplinapp.org/images/flags/country-4x3/id.png" width="16px"/> | Indonesian (Indonesia) | [id_ID](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/id_ID.po) | [eresytter](mailto:42007357+eresytter@users.noreply.github.com) | 88%
<img src="https://joplinapp.org/images/flags/country-4x3/it.png" width="16px"/> | Italiano (Italia) | [it_IT](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/it_IT.po) | [Albano Battistella](mailto:albano_battistella@hotmail.com) | 86%
<img src="https://joplinapp.org/images/flags/country-4x3/hu.png" width="16px"/> | Magyar (Magyarország) | [hu_HU](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/hu_HU.po) | [Magyari Balázs](mailto:balmag@gmail.com) | 75%
<img src="https://joplinapp.org/images/flags/country-4x3/hu.png" width="16px"/> | Magyar (Magyarország) | [hu_HU](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/hu_HU.po) | [Magyari Balázs](mailto:balmag@gmail.com) | 86%
<img src="https://joplinapp.org/images/flags/country-4x3/be.png" width="16px"/> | Nederlands (België, Belgique, Belgien) | [nl_BE](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/nl_BE.po) | | 88%
<img src="https://joplinapp.org/images/flags/country-4x3/nl.png" width="16px"/> | Nederlands (Nederland) | [nl_NL](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/nl_NL.po) | [MHolkamp](mailto:mholkamp@users.noreply.github.com) | 98%
<img src="https://joplinapp.org/images/flags/country-4x3/no.png" width="16px"/> | Norwegian (Norge, Noreg) | [nb_NO](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/nb_NO.po) | [Mats Estensen](mailto:code@mxe.no) | 98%
@@ -560,7 +574,7 @@ Current translations:
<img src="https://joplinapp.org/images/flags/country-4x3/rs.png" width="16px"/> | српски језик (Србија) | [sr_RS](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/sr_RS.po) | | 72%
<img src="https://joplinapp.org/images/flags/country-4x3/cn.png" width="16px"/> | 中文 (简体) | [zh_CN](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/zh_CN.po) | [horaceyoung](mailto:paventyang@gmail.com) | 98%
<img src="https://joplinapp.org/images/flags/country-4x3/tw.png" width="16px"/> | 中文 (繁體) | [zh_TW](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/zh_TW.po) | [SiderealArt](mailto:nelson22768384@gmail.com) | 87%
<img src="https://joplinapp.org/images/flags/country-4x3/jp.png" width="16px"/> | 日本語 (日本) | [ja_JP](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ja_JP.po) | [genneko](mailto:genneko217@gmail.com) | 98%
<img src="https://joplinapp.org/images/flags/country-4x3/jp.png" width="16px"/> | 日本語 (日本) | [ja_JP](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ja_JP.po) | [genneko](mailto:genneko217@gmail.com) | 100%
<img src="https://joplinapp.org/images/flags/country-4x3/kr.png" width="16px"/> | 한국어 | [ko](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ko.po) | [Ji-Hyeon Gim](mailto:potatogim@potatogim.net) | 86%
<!-- LOCALE-TABLE-AUTO-GENERATED -->

View File

@@ -48,7 +48,6 @@
"Abhishek",
"Abkhazian",
"accel",
"accomodate",
"accum",
"actualkeyword",
"adata",
@@ -210,7 +209,6 @@
"dialogs",
"Dialogs",
"DIALOGS",
"Dicourse",
"Distill",
"dists",
"docid",
@@ -351,7 +349,6 @@
"infint",
"inflim",
"infty",
"innaccurate",
"inputi",
"inserttable",
"Interlingue",
@@ -727,8 +724,6 @@
"Stringifiable",
"subdir",
"subl",
"sublty",
"sucessful",
"Suomi",
"Sūriyya",
"Svenska",

View File

@@ -13,7 +13,7 @@ module.exports = {
'*.{js,jsx,ts,tsx}': [
'yarn run linter-precommit',
'yarn run checkLibPaths',
'yarn run spellcheck',
// 'yarn run spellcheck',
'git add',
],
};

View File

@@ -33,7 +33,7 @@
],
"owner": "Laurent Cozic"
},
"version": "2.8.0",
"version": "2.8.1",
"bin": "./main.js",
"engines": {
"node": ">=10.0.0"

View File

@@ -1,7 +1,7 @@
{
"manifest_version": 2,
"name": "Joplin Web Clipper [DEV]",
"version": "2.8.0",
"version": "2.8.1",
"description": "Capture and save web pages and screenshots from your browser to Joplin.",
"homepage_url": "https://joplinapp.org",
"content_security_policy": "script-src 'self'; object-src 'self'",

View File

@@ -538,6 +538,7 @@ class Application extends BaseApplication {
pluginService: PluginService.instance(),
bridge: bridge(),
debug: new DebugService(reg.db()),
resourceService: ResourceService.instance(),
};
}

View File

@@ -4,7 +4,7 @@ import { _ } from '@joplin/lib/locale';
import bridge from './services/bridge';
import KvStore from '@joplin/lib/services/KvStore';
const { fileExtension } = require('@joplin/lib/path-utils');
const ArrayUtils = require('@joplin/lib/ArrayUtils');
import * as ArrayUtils from '@joplin/lib/ArrayUtils';
const packageInfo = require('./packageInfo.js');
const compareVersions = require('compare-versions');

View File

@@ -37,6 +37,8 @@ class DropboxLoginScreenComponent extends React.Component<any, any> {
const inputStyle = Object.assign({}, theme.inputStyle, { width: 500 });
const buttonStyle = Object.assign({}, theme.buttonStyle, { marginRight: 10 });
return (
<div style={{ display: 'flex', flexDirection: 'column', height: '100%' }}>
<div style={containerStyle}>
@@ -49,7 +51,7 @@ class DropboxLoginScreenComponent extends React.Component<any, any> {
<p>
<input type="text" value={this.state.authCode} onChange={this.shared_.authCodeInput_change} style={inputStyle} />
</p>
<button disabled={this.state.checkingAuthToken} onClick={this.shared_.submit_click}>
<button disabled={this.state.checkingAuthToken} style={buttonStyle} onClick={this.shared_.submit_click}>
{_('Submit')}
</button>
</div>

View File

@@ -70,7 +70,6 @@ interface Props {
showNeedUpgradingMasterKeyMessage: boolean;
showShouldReencryptMessage: boolean;
showInstallTemplatesPlugin: boolean;
focusedField: string;
themeId: number;
settingEditorCodeView: boolean;
pluginsLegacy: any;
@@ -698,7 +697,6 @@ class MainScreenComponent extends React.Component<Props, State> {
key={key}
resizableLayoutEventEmitter={eventEmitter}
visible={event.visible}
focusedField={this.props.focusedField}
size={event.size}
themeId={this.props.themeId}
/>;
@@ -861,23 +859,18 @@ const mapStateToProps = (state: AppState) => {
return {
themeId: state.settings.theme,
settingEditorCodeView: state.settings['editor.codeView'],
folders: state.folders,
notes: state.notes,
hasDisabledSyncItems: state.hasDisabledSyncItems,
hasDisabledEncryptionItems: state.hasDisabledEncryptionItems,
showMissingMasterKeyMessage: showMissingMasterKeyMessage(syncInfo, state.notLoadedMasterKeys),
showNeedUpgradingMasterKeyMessage: !!EncryptionService.instance().masterKeysThatNeedUpgrading(syncInfo.masterKeys).length,
showShouldReencryptMessage: state.settings['encryption.shouldReencrypt'] >= Setting.SHOULD_REENCRYPT_YES,
shouldUpgradeSyncTarget: state.settings['sync.upgradeState'] === Setting.SYNC_UPGRADE_STATE_SHOULD_DO,
selectedFolderId: state.selectedFolderId,
selectedNoteId: state.selectedNoteIds.length === 1 ? state.selectedNoteIds[0] : null,
pluginsLegacy: state.pluginsLegacy,
plugins: state.pluginService.plugins,
pluginHtmlContents: state.pluginService.pluginHtmlContents,
customCss: state.customCss,
editorNoteStatuses: state.editorNoteStatuses,
hasNotesBeingSaved: stateUtils.hasNotesBeingSaved(state),
focusedField: state.focusedField,
layoutMoveMode: state.layoutMoveMode,
mainLayout: state.mainLayout,
startupPluginsLoaded: state.startupPluginsLoaded,

View File

@@ -38,6 +38,7 @@ import ErrorBoundary from '../../../ErrorBoundary';
import { MarkupToHtmlOptions } from '../../utils/useMarkupToHtml';
import eventManager from '@joplin/lib/eventManager';
import { EditContextMenuFilterObject } from '@joplin/lib/services/plugins/api/JoplinWorkspace';
import { checkTableIsUnderCursor, readTableAroundCursor } from './utils/tables';
const menuUtils = new MenuUtils(CommandService.instance());
@@ -259,7 +260,7 @@ function CodeMirror(props: NoteBodyEditorProps, ref: any) {
return commandOutput;
},
};
}, [props.content, props.visiblePanes, addListItem, wrapSelectionWithStrings, setEditorPercentScroll, setViewerPercentScroll, resetScroll, renderedBody]);
}, [props.content, props.visiblePanes, addListItem, wrapSelectionWithStrings, setEditorPercentScroll, setViewerPercentScroll, resetScroll]);
const onEditorPaste = useCallback(async (event: any = null) => {
const resourceMds = await handlePasteEvent(event);
@@ -672,7 +673,7 @@ function CodeMirror(props: NoteBodyEditorProps, ref: any) {
// props.content has been updated).
const textChanged = props.searchMarkers.keywords.length > 0 && (props.content !== previousContent || renderedBody !== previousRenderedBody);
if (props.searchMarkers !== previousSearchMarkers || textChanged) {
if (webviewRef.current?.wrappedInstance && (props.searchMarkers !== previousSearchMarkers || textChanged)) {
webviewRef.current.wrappedInstance.send('setMarkers', props.searchMarkers.keywords, props.searchMarkers.options);
if (editorRef.current) {
@@ -753,7 +754,14 @@ function CodeMirror(props: NoteBodyEditorProps, ref: any) {
const menu = new Menu();
const hasSelectedText = editorRef.current && !!editorRef.current.getSelection() ;
const cm = editorRef.current;
const hasSelectedText = cm && !!cm.getSelection() ;
const tableIsUnderCursor = checkTableIsUnderCursor(cm);
let tableUnderCursor: string = null;
if (tableIsUnderCursor) tableUnderCursor = readTableAroundCursor(cm);
menu.append(
new MenuItem({
@@ -785,6 +793,27 @@ function CodeMirror(props: NoteBodyEditorProps, ref: any) {
})
);
if (tableUnderCursor) {
menu.append(
new MenuItem({ type: 'separator' })
);
menu.append(
new MenuItem({
label: _('Edit table...'),
click: async () => {
props.dispatch({
type: 'DIALOG_OPEN',
name: 'tableEditor',
props: {
markdownTable: tableUnderCursor,
},
});
},
})
);
}
const spellCheckerMenuItems = SpellCheckerService.instance().contextMenuItems(params.misspelledWord, params.dictionarySuggestions);
for (const item of spellCheckerMenuItems) {

View File

@@ -0,0 +1,48 @@
function findElementWithClass(element: any, className: string): any {
if (element.classList && element.classList.contains(className)) return element;
for (const child of element.childNodes) {
const hasClass = findElementWithClass(child, className);
if (hasClass) return hasClass;
}
return null;
}
export const checkTableIsUnderCursor = (cm: any) => {
if (!cm) return false;
const coords = cm.cursorCoords(cm.getCursor());
const element = document.elementFromPoint(coords.left, coords.top);
if (!element) return false;
return !!findElementWithClass(element, 'cm-jn-table-item');
};
export const readTableAroundCursor = (cm: any) => {
const idxAtCursor = cm.doc.getCursor().line;
const lineCount = cm.lineCount();
const lines: string[] = [];
for (let i = idxAtCursor - 1; i >= 0; i--) {
const line: string = cm.doc.getLine(i);
if (line.startsWith('|')) {
lines.splice(0, 0, line);
} else {
break;
}
}
lines.push(cm.doc.getLine(idxAtCursor));
for (let i = idxAtCursor + 1; i < lineCount; i++) {
const line: string = cm.doc.getLine(i);
if (line.startsWith('|')) {
lines.push(line);
} else {
break;
}
}
return lines.join('\n');
};

View File

@@ -165,6 +165,7 @@ export default function useJoplinMode(CodeMirror: any) {
}
if (isMonospace) { token = `${token} jn-monospace`; }
if (state.inTable) { token = `${token} jn-table-item`; }
// //////// End Monospace //////////
return token;

View File

@@ -585,7 +585,6 @@ const mapStateToProps = (state: AppState) => {
return {
noteId: noteId,
notes: state.notes,
folders: state.folders,
selectedNoteIds: state.selectedNoteIds,
selectedFolderId: state.selectedFolderId,
isProvisional: state.provisionalNoteIds.includes(noteId),

View File

@@ -27,7 +27,6 @@ export interface NoteEditorProps {
editorNoteStatuses: any;
syncStarted: boolean;
bodyEditor: string;
folders: any[];
notesParentType: string;
selectedNoteTags: any[];
lastEditorScrollPercents: any;

View File

@@ -55,7 +55,7 @@ const NoteListComponent = (props: Props) => {
};
}, []);
const itemHeight = 34;
const [itemHeight, setItemHeight] = useState(34);
const focusItemIID_ = useRef<any>(null);
const noteListRef = useRef(null);
@@ -453,6 +453,16 @@ const NoteListComponent = (props: Props) => {
};
}, []);
useEffect(() => {
// When a note list item is styled by userchrome.css, its height is reflected.
// Ref. https://github.com/laurent22/joplin/pull/6542
const noteItem = Object.values<any>(itemAnchorRefs_.current)[0]?.current;
const actualItemHeight = noteItem?.getHeight() ?? 0;
if (actualItemHeight >= 8) { // To avoid generating too many narrow items
setItemHeight(actualItemHeight);
}
});
const renderEmptyList = () => {
if (props.notes.length) return null;

View File

@@ -167,6 +167,7 @@ function NoteListControls(props: Props) {
const mapStateToProps = (state: AppState) => {
return {
showNewNoteButtons: state.focusedField !== 'globalSearch',
sortOrderButtonsVisible: state.settings['notes.sortOrder.buttonsVisible'],
sortOrderField: state.settings['notes.sortOrder.field'],
sortOrderReverse: state.settings['notes.sortOrder.reverse'],

View File

@@ -73,6 +73,7 @@ function NoteListItem(props: NoteListItemProps, ref: any) {
focus: function() {
if (anchorRef.current) anchorRef.current.focus();
},
getHeight: () => anchorRef.current?.clientHeight,
};
});

View File

@@ -10,7 +10,6 @@ interface Props {
resizableLayoutEventEmitter: any;
size: Size;
visible: boolean;
focusedField: string;
themeId: number;
}
@@ -34,7 +33,7 @@ export default function NoteListWrapper(props: Props) {
return (
<StyledRoot>
<NoteListControls showNewNoteButtons={props.focusedField !== 'globalSearch'} height={controlHeight} />
<NoteListControls height={controlHeight} />
<NoteList resizableLayoutEventEmitter={props.resizableLayoutEventEmitter} size={noteListSize} visible={props.visible}/>
</StyledRoot>
);

View File

@@ -22,6 +22,7 @@ import Dialog from './Dialog';
import SyncWizardDialog from './SyncWizard/Dialog';
import MasterPasswordDialog from './MasterPasswordDialog/Dialog';
import EditFolderDialog from './EditFolderDialog/Dialog';
import TableEditorDialog from './TableEditorDialog/Dialog';
import StyleSheetContainer from './StyleSheets/StyleSheetContainer';
const { ImportScreen } = require('./ImportScreen.min.js');
const { ResourceScreen } = require('./ResourceScreen.js');
@@ -38,6 +39,7 @@ interface Props {
zoomFactor: number;
needApiAuth: boolean;
dialogs: AppStateDialog[];
dialogContentMaxSize: Size;
}
interface ModalDialogProps {
@@ -51,6 +53,7 @@ interface RegisteredDialogProps {
themeId: number;
key: string;
dispatch: Function;
dialogContentMaxSize: Size;
}
interface RegisteredDialog {
@@ -60,19 +63,25 @@ interface RegisteredDialog {
const registeredDialogs: Record<string, RegisteredDialog> = {
syncWizard: {
render: (props: RegisteredDialogProps, customProps: any) => {
return <SyncWizardDialog key={props.key} dispatch={props.dispatch} themeId={props.themeId} {...customProps}/>;
return <SyncWizardDialog key={props.key} dispatch={props.dispatch} dialogContentMaxSize={props.dialogContentMaxSize} themeId={props.themeId} {...customProps}/>;
},
},
masterPassword: {
render: (props: RegisteredDialogProps, customProps: any) => {
return <MasterPasswordDialog key={props.key} dispatch={props.dispatch} themeId={props.themeId} {...customProps}/>;
return <MasterPasswordDialog key={props.key} dispatch={props.dispatch} dialogContentMaxSize={props.dialogContentMaxSize} themeId={props.themeId} {...customProps}/>;
},
},
editFolder: {
render: (props: RegisteredDialogProps, customProps: any) => {
return <EditFolderDialog key={props.key} dispatch={props.dispatch} themeId={props.themeId} {...customProps}/>;
return <EditFolderDialog key={props.key} dispatch={props.dispatch} dialogContentMaxSize={props.dialogContentMaxSize} themeId={props.themeId} {...customProps}/>;
},
},
tableEditor: {
render: (props: RegisteredDialogProps, customProps: any) => {
return <TableEditorDialog key={props.key} dispatch={props.dispatch} dialogContentMaxSize={props.dialogContentMaxSize} themeId={props.themeId} {...customProps}/>;
},
},
};
@@ -195,10 +204,12 @@ class RootComponent extends React.Component<Props, any> {
for (const dialog of props.dialogs) {
const md = registeredDialogs[dialog.name];
if (!md) throw new Error(`Unknown dialog: ${dialog.name}`);
output.push(md.render({
key: dialog.name,
themeId: props.themeId,
dispatch: props.dispatch,
dialogContentMaxSize: props.dialogContentMaxSize,
}, dialog.props));
}
return output;
@@ -245,6 +256,11 @@ const mapStateToProps = (state: AppState) => {
themeId: state.settings.theme,
needApiAuth: state.needApiAuth,
dialogs: state.dialogs,
dialogContentMaxSize: {
// Minus padding, margins and dialog header and button bar.
width: state.windowContentSize.width - 36 * 2,
height: state.windowContentSize.height - 36 * 2 - 28 - 30 - 20,
},
profileConfigCurrentProfileId: state.profileConfig.currentProfileId,
};
};

View File

@@ -0,0 +1,101 @@
import * as React from 'react';
import { useCallback, useEffect } from 'react';
import { _ } from '@joplin/lib/locale';
import DialogButtonRow, { ClickEvent } from '../DialogButtonRow';
import Dialog from '../Dialog';
import DialogTitle from '../DialogTitle';
import { parseMarkdownTable } from '../../../lib/markdownUtils';
import { Size } from '../ResizableLayout/utils/types';
interface Props {
themeId: number;
dispatch: Function;
markdownTable: string;
dialogContentMaxSize: Size;
}
const markdownTableToObject = (markdownTable: string): any => {
const table = parseMarkdownTable(markdownTable);
return {
columns: table.headers.map(h => {
return {
title: h.label,
field: h.name,
hozAlign: h.justify,
editor: 'input',
};
}),
data: table.rows.map(row => {
return {
...row,
};
}),
};
};
export default function(props: Props) {
const elementId = `tabulator_${Math.floor(Math.random() * 1000000)}`;
const onClose = useCallback(() => {
props.dispatch({
type: 'DIALOG_CLOSE',
name: 'tableEditor',
});
}, [props.dispatch]);
const onButtonRowClick = useCallback(async (event: ClickEvent) => {
if (event.buttonName === 'cancel') {
onClose();
return;
}
if (event.buttonName === 'ok') {
return;
}
}, [onClose]);
useEffect(() => {
const table = markdownTableToObject(props.markdownTable);
const Tabulator = (window as any).Tabulator;
// TODO: probably doesn't need to be called every time
// TODO: Load CSS/JS dynamically?
// TODO: Clean up on exit
Tabulator.extendModule('edit', 'editors', {});
new Tabulator(`#${elementId}`, {
...table,
height: props.dialogContentMaxSize.height,
});
}, []);
function renderContent() {
return (
<div className="dialog-content">
<div id={elementId}></div>
</div>
);
}
function renderDialogWrapper() {
return (
<div className="dialog-root">
<DialogTitle title={_('Edit table')}/>
{renderContent()}
<DialogButtonRow
themeId={props.themeId}
onClick={onButtonRowClick}
okButtonLabel={_('Save')}
/>
</div>
);
}
return (
<Dialog onClose={onClose} renderContent={renderDialogWrapper}/>
);
}

View File

@@ -7,6 +7,10 @@
uses 'eval'.
<meta http-equiv="Content-Security-Policy" content="default-src 'self' 'unsafe-inline' 'unsafe-eval'">
-->
<!--
To add files below, then need to be in the "vendor" directory. To make this happen, use copyApplicationAssets.js
-->
<title>Joplin</title>
<link rel="stylesheet" href="style.min.css">
<link rel="stylesheet" href="style/icons/style.css">
@@ -15,6 +19,9 @@
<link rel="stylesheet" href="vendor/lib/smalltalk/css/smalltalk.css">
<link rel="stylesheet" href="vendor/lib/roboto-fontface/css/roboto/roboto-fontface.css">
<link rel="stylesheet" href="vendor/lib/codemirror/lib/codemirror.css">
<link rel="stylesheet" href="vendor/lib/tabulator-tables/dist/css/tabulator.min.css">
<script type="text/javascript" src="vendor/lib/tabulator-tables/dist/js/tabulator.min.js"></script>
<style>
.smalltalk {

View File

@@ -1,6 +1,6 @@
{
"name": "@joplin/app-desktop",
"version": "2.8.7",
"version": "2.8.8",
"description": "Joplin for Desktop",
"main": "main.js",
"private": true,
@@ -116,10 +116,10 @@
"app-builder-bin": "^1.9.11",
"babel-cli": "^6.26.0",
"babel-preset-react": "^6.24.1",
"electron": "14.1.0",
"electron-builder": "^22.11.7",
"electron-notarize": "^1.0.0",
"electron-rebuild": "^3.2.3",
"electron": "18.2.0",
"electron-builder": "^23.0.3",
"electron-notarize": "^1.2.1",
"electron-rebuild": "^3.2.7",
"glob": "^7.1.6",
"gulp": "^4.0.2",
"jest": "^26.6.3",
@@ -174,6 +174,7 @@
"styled-components": "5.1.1",
"styled-system": "5.1.5",
"taboverride": "^4.0.3",
"tabulator-tables": "^5.1.4",
"tinymce": "^5.2.0"
}
}

View File

@@ -15,7 +15,7 @@ import Note from '@joplin/lib/models/Note';
const { ItemList } = require('../gui/ItemList.min');
const HelpButton = require('../gui/HelpButton.min');
const { surroundKeywords, nextWhitespaceIndex, removeDiacritics } = require('@joplin/lib/string-utils.js');
const { mergeOverlappingIntervals } = require('@joplin/lib/ArrayUtils.js');
import { mergeOverlappingIntervals } from '@joplin/lib/ArrayUtils';
import markupLanguageUtils from '../utils/markupLanguageUtils';
import focusEditorIfEditorCommand from '@joplin/lib/services/commands/focusEditorIfEditorCommand';
import Logger from '@joplin/lib/Logger';

View File

@@ -97,6 +97,7 @@ export default class PluginRunner extends BasePluginRunner {
return cb(...args);
}
// @ts-ignore
private backOffHandler(pluginId: string): BackOffHandler {
if (!this.backOffHandlers_[pluginId]) {
this.backOffHandlers_[pluginId] = new BackOffHandler(pluginId);
@@ -159,12 +160,12 @@ export default class PluginRunner extends BasePluginRunner {
this.recordCallStat(plugin.id);
try {
await this.backOffHandler(plugin.id).wait(fullPath, debugMappedArgs);
} catch (error) {
logger.error(error);
return;
}
// try {
// await this.backOffHandler(plugin.id).wait(fullPath, debugMappedArgs);
// } catch (error) {
// logger.error(error);
// return;
// }
let result: any = null;
let error: any = null;

View File

@@ -83,6 +83,8 @@ async function main() {
'codemirror/addon/dialog/dialog.css',
'@joeattardi/emoji-button/dist/index.js',
'mark.js/dist/mark.min.js',
'tabulator-tables/dist/css/tabulator.min.css',
'tabulator-tables/dist/js/tabulator.min.js',
{
src: resolve(__dirname, '../../lib/services/plugins/sandboxProxy.js'),
dest: `${buildLibDir}/@joplin/lib/services/plugins/sandboxProxy.js`,

View File

@@ -146,8 +146,8 @@ android {
applicationId "net.cozic.joplin"
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
versionCode 2097667
versionName "2.8.0"
versionCode 2097668
versionName "2.8.1"
ndk {
abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64"
}

View File

@@ -1201,8 +1201,8 @@ class NoteScreenComponent extends BaseScreenComponent {
onSaveButtonPress={this.saveNoteButton_press}
showSideMenuButton={false}
showSearchButton={false}
showUndoButton={this.state.undoRedoButtonState.canUndo || this.state.undoRedoButtonState.canRedo}
showRedoButton={this.state.undoRedoButtonState.canRedo}
showUndoButton={(this.state.undoRedoButtonState.canUndo || this.state.undoRedoButtonState.canRedo) && this.state.mode === 'edit'}
showRedoButton={this.state.undoRedoButtonState.canRedo && this.state.mode === 'edit'}
undoButtonDisabled={!this.state.undoRedoButtonState.canUndo && this.state.undoRedoButtonState.canRedo}
onUndoButtonPress={this.screenHeader_undoButtonPress}
onRedoButtonPress={this.screenHeader_redoButtonPress}

View File

@@ -492,13 +492,13 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Joplin/Joplin.entitlements;
CURRENT_PROJECT_VERSION = 81;
CURRENT_PROJECT_VERSION = 82;
DEVELOPMENT_TEAM = A9BXAFS6CT;
ENABLE_BITCODE = NO;
INFOPLIST_FILE = Joplin/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MARKETING_VERSION = 12.8.0;
MARKETING_VERSION = 12.8.1;
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
@@ -521,12 +521,12 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CLANG_ENABLE_MODULES = YES;
CODE_SIGN_ENTITLEMENTS = Joplin/Joplin.entitlements;
CURRENT_PROJECT_VERSION = 81;
CURRENT_PROJECT_VERSION = 82;
DEVELOPMENT_TEAM = A9BXAFS6CT;
INFOPLIST_FILE = Joplin/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
MARKETING_VERSION = 12.8.0;
MARKETING_VERSION = 12.8.1;
OTHER_LDFLAGS = (
"$(inherited)",
"-ObjC",
@@ -667,14 +667,14 @@
CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
CODE_SIGN_ENTITLEMENTS = ShareExtension/ShareExtension.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 81;
CURRENT_PROJECT_VERSION = 82;
DEBUG_INFORMATION_FORMAT = dwarf;
DEVELOPMENT_TEAM = A9BXAFS6CT;
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = ShareExtension/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
MARKETING_VERSION = 12.8.0;
MARKETING_VERSION = 12.8.1;
MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = net.cozic.joplin.ShareExtension;
@@ -698,14 +698,14 @@
CODE_SIGN_ENTITLEMENTS = ShareExtension/ShareExtension.entitlements;
CODE_SIGN_STYLE = Automatic;
COPY_PHASE_STRIP = NO;
CURRENT_PROJECT_VERSION = 81;
CURRENT_PROJECT_VERSION = 82;
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
DEVELOPMENT_TEAM = A9BXAFS6CT;
GCC_C_LANGUAGE_STANDARD = gnu11;
INFOPLIST_FILE = ShareExtension/Info.plist;
IPHONEOS_DEPLOYMENT_TARGET = 11.0;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @executable_path/../../Frameworks";
MARKETING_VERSION = 12.8.0;
MARKETING_VERSION = 12.8.1;
MTL_FAST_MATH = YES;
PRODUCT_BUNDLE_IDENTIFIER = net.cozic.joplin.ShareExtension;
PRODUCT_NAME = "$(TARGET_NAME)";

View File

@@ -567,4 +567,4 @@ SPEC CHECKSUMS:
PODFILE CHECKSUM: 3503e0565874e79261edc56dcddb35b3a49a2984
COCOAPODS: 1.10.2
COCOAPODS: 1.11.3

View File

@@ -1,7 +1,7 @@
{
"name": "@joplin/fork-htmlparser2",
"description": "Fast & forgiving HTML/XML/RSS parser",
"version": "4.1.39",
"version": "4.1.40",
"author": "Felix Boehm <me@feedic.com>",
"publishConfig": {
"access": "public"

View File

@@ -2,7 +2,7 @@
"name": "@joplin/fork-sax",
"description": "An evented streaming XML parser in JavaScript",
"author": "Isaac Z. Schlueter <i@izs.me> (http://blog.izs.me/)",
"version": "1.2.43",
"version": "1.2.44",
"main": "lib/sax.js",
"publishConfig": {
"access": "public"

View File

@@ -1,6 +1,6 @@
{
"name": "@joplin/fork-uslug",
"version": "1.0.4",
"version": "1.0.5",
"description": "A permissive slug generator that works with unicode.",
"author": "Jeremy Selier <jerem.selier@gmail.com>",
"publishConfig": {

View File

@@ -1,6 +1,6 @@
{
"name": "@joplin/htmlpack",
"version": "2.8.0",
"version": "2.8.1",
"description": "Pack an HTML file and all its linked resources into a single HTML file",
"main": "dist/index.js",
"types": "src/index.ts",
@@ -14,7 +14,7 @@
"author": "Laurent Cozic",
"license": "MIT",
"dependencies": {
"@joplin/fork-htmlparser2": "^4.1.39",
"@joplin/fork-htmlparser2": "^4.1.40",
"css": "^3.0.0",
"datauri": "^4.1.0",
"fs-extra": "^10.0.0",

View File

@@ -19,6 +19,13 @@ describe('ArrayUtils', function() {
expect(a.length).toBe(3);
}));
it('should pull array elements', (async () => {
expect(ArrayUtils.pull(['a', 'b', 'c', 'a', 'b', 'c'], 'a')).toEqual(['b', 'c', 'b', 'c']);
expect(ArrayUtils.pull(['b', 'c', 'b', 'c'], 'a')).toEqual(['b', 'c', 'b', 'c']);
expect(ArrayUtils.pull(['a', 'b', 'c', 'a', 'b', 'c'], 'a', 'c')).toEqual(['b', 'b']);
expect(ArrayUtils.pull([], 'a')).toEqual([]);
}));
it('should find items using binary search', (async () => {
let items = ['aaa', 'ccc', 'bbb'];
expect(ArrayUtils.binarySearch(items, 'bbb')).toBe(-1); // Array not sorted!

View File

@@ -1,12 +1,10 @@
const ArrayUtils = {};
ArrayUtils.unique = function(array) {
export const unique = function(array: any[]) {
return array.filter(function(elem, index, self) {
return index === self.indexOf(elem);
});
};
ArrayUtils.removeElement = function(array, element) {
export const removeElement = function(array: any[], element: any) {
const index = array.indexOf(element);
if (index < 0) return array;
const newArray = array.slice();
@@ -15,7 +13,7 @@ ArrayUtils.removeElement = function(array, element) {
};
// https://stackoverflow.com/a/10264318/561309
ArrayUtils.binarySearch = function(items, value) {
export const binarySearch = function(items: any[], value: any) {
let startIndex = 0,
stopIndex = items.length - 1,
middle = Math.floor((stopIndex + startIndex) / 2);
@@ -36,7 +34,7 @@ ArrayUtils.binarySearch = function(items, value) {
return items[middle] != value ? -1 : middle;
};
ArrayUtils.findByKey = function(array, key, value) {
export const findByKey = function(array: any[], key: any, value: any) {
for (let i = 0; i < array.length; i++) {
const o = array[i];
if (typeof o !== 'object') continue;
@@ -45,7 +43,7 @@ ArrayUtils.findByKey = function(array, key, value) {
return null;
};
ArrayUtils.contentEquals = function(array1, array2) {
export const contentEquals = function(array1: any[], array2: any[]) {
if (array1 === array2) return true;
if (!array1.length && !array2.length) return true;
if (array1.length !== array2.length) return false;
@@ -60,10 +58,10 @@ ArrayUtils.contentEquals = function(array1, array2) {
// Merges multiple overlapping intervals into a single interval
// e.g. [0, 25], [20, 50], [75, 100] --> [0, 50], [75, 100]
ArrayUtils.mergeOverlappingIntervals = function(intervals, limit) {
export const mergeOverlappingIntervals = function(intervals: any[], limit: number) {
intervals.sort((a, b) => a[0] - b[0]);
const stack = [];
const stack: any[] = [];
if (intervals.length) {
stack.push(intervals[0]);
for (let i = 1; i < intervals.length && stack.length < limit; i++) {
@@ -80,7 +78,7 @@ ArrayUtils.mergeOverlappingIntervals = function(intervals, limit) {
return stack;
};
ArrayUtils.shuffle = function(array) {
export const shuffle = function(array: any[]) {
array = array.slice();
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
@@ -91,4 +89,13 @@ ArrayUtils.shuffle = function(array) {
return array;
};
module.exports = ArrayUtils;
// Used to replace lodash.pull, so that we don't need to import the whole
// package. Not optimised.
export const pull = (array: any[], ...elements: any[]) => {
const output: any[] = [];
for (const e of array) {
if (elements.includes(e)) continue;
output.push(e);
}
return output;
};

View File

@@ -6,7 +6,7 @@ import time from './time';
const { isHidden } = require('./path-utils');
import JoplinError from './JoplinError';
import { Lock, LockClientType, LockType } from './services/synchronizer/LockHandler';
const ArrayUtils = require('./ArrayUtils');
import * as ArrayUtils from './ArrayUtils';
const { sprintf } = require('sprintf-js');
const Mutex = require('async-mutex').Mutex;

View File

@@ -58,6 +58,7 @@
"All notes": "Alle Notizen",
"All potential ports are in use - please report the issue at %s": "Alle potentielle Port-Nummern sind in Verwendung - bitte melde dieses Problem auf %s",
"Also displays unset and hidden config variables.": "Zeigt auch nicht gesetzte und versteckte Konfigurationsvariablen an.",
"Also publish linked notes": "Auch verlinkte Notizen veröffentlichen",
"Always": "Immer",
"An update is available, do you want to download it now?": "Es ist eine Aktualisierung verfügbar. Soll sie jetzt heruntergeladen werden?",
"Appearance": "Erscheinungsbild",
@@ -102,8 +103,8 @@
"Cannot move note to \"%s\" notebook": "Kann Notiz nicht in das Notizbuch „%s“ verschieben",
"Cannot move notebook to this location": "Kann Notizbuch nicht an diesen Ort verschieben",
"Cannot refresh token: authentication data is missing. Starting the synchronisation again may fix the problem.": "Kann Token nicht erneuern: Authentifikationsdaten nicht vorhanden. Ein Neustart der Synchronisation könnte das Problem beheben.",
"Cannot save %s \"%s\" because it is larger than the allowed limit (%s)": "Kann %s \"%s\" nicht speichern, da es größer ist als das erlaubte Limit (%s)",
"Cannot save %s \"%s\" because it would go over the total allowed size (%s) for this account": "Kann %s \"%s\" nicht speichern, da es die zulässige Gesamtgröße (%s) für dieses Konto überschreiten würde",
"Cannot save %s \"%s\" because it is larger than the allowed limit (%s)": "Kann %s „%s“ nicht speichern, da es größer ist als das erlaubte Limit (%s)",
"Cannot save %s \"%s\" because it would go over the total allowed size (%s) for this account": "Kann %s „%s“ nicht speichern, da es die zulässige Gesamtgröße (%s) für dieses Konto überschreiten würde",
"Cannot share encrypted notebook with recipient %s because they have not enabled end-to-end encryption. They may do so from the screen Configuration > Encryption.": "Das verschlüsselte Notizbuch kann nicht mit %s geteilt werden, da die Person die Ende-zu-Ende Verschlüsselung nicht aktiviert hat. Dies ist unter Optionen > Verschlüsselung möglich.",
"Change application layout": "Anwendungs-Layout ändern",
"Change language": "Sprache ändern",
@@ -161,10 +162,12 @@
"Could not connect to plugin repository.": "Konnte keine Verbindung zum Plugin-Repository herstellen.",
"Could not export notes: %s": "Konnte Notizen nicht exportieren: %s",
"Could not install plugin: %s": "Erweiterung konnte nicht installiert werden: %s",
"Could not respond to the invitation. Please try again, or check with the notebook owner if they are still sharing it.\n\nThe error was: \"%s\"": "Die Einladung konnte nicht beantwortet werden. Bitte versuche es erneut, oder prüfe, ob der Notizbuch-Besitzer dieses noch freigibt.\n\nDer Fehler war: \"%s\"",
"Could not respond to the invitation. Please try again, or check with the notebook owner if they are still sharing it.\n\nThe error was: \"%s\"": "Die Einladung konnte nicht beantwortet werden. Bitte versuche es erneut, oder prüfe, ob der Notizbuch-Besitzer dieses noch freigibt.\n\nDer Fehler war: „%s“",
"Could not upgrade master key: %s": "Konnte Hauptschlüssel nicht aktualisieren: %s",
"Could not verify the share status of this notebook - aborting. Please try again when you are connected to the internet.": "Der Freigabestatus dieses Notizbuchs konnte nicht überprüft werden - Vorgang wird abgebrochen. Bitte versuche es erneut, wenn eine Internetverbindung besteht.",
"Create": "Erstellen",
"Create a notebook": "Notizbuch erstellen",
"Create new profile...": "Neues Profil erstellen...",
"Create notebook": "Notizbuch erstellen",
"Create user": "Benutzer erstellen",
"Created": "Erstellt",
@@ -258,12 +261,14 @@
"Edit in external editor": "Im externen Editor bearbeiten",
"Edit note.": "Notiz bearbeiten.",
"Edit notebook": "Notizbuch bearbeiten",
"Edit profile configuration...": "Profilkonfiguration bearbeiten...",
"Editor": "Editor",
"Editor font": "Schriftart im Editor",
"Editor font family": "Schriftfamilie im Editor",
"Editor font size": "Schriftgröße im Editor",
"Editor maximum width": "Maximale Breite des Editors",
"Editor monospace font family": "Nichtproportionale Schriftfamilie im Editor",
"Editor: %s": "Editor: %s",
"Either \"text\" or \"json\"": "Entweder „text“ oder „json“",
"Emacs": "Emacs",
"Email": "E-Mail",
@@ -333,6 +338,7 @@
"Fetching resources: %d/%d": "Anhänge abrufen: %d/%d",
"File": "Datei",
"File system": "Dateisystem",
"Filter tags": "Tags filtern",
"Firefox Extension": "Firefox-Erweiterung",
"Fix search index": "Suchindex reparieren",
"Fixing search index...": "Suchindex wird repariert ...",
@@ -567,6 +573,7 @@
"PDF File": "PDF-Datei",
"Permission needed": "Berechtigung benötigt",
"Permission to use camera": "Berechtigung zur Verwendung der Kamera",
"Please click on \"%s\" to proceed, or set the passwords in the \"%s\" list below.": "Bitte klicke auf „%s“, um fortzufahren, oder trage die Passwörter in die Liste „%s“ unten ein.",
"Please confirm that you would like to re-encrypt your complete database.": "Bitte bestätige, dass du deine gesamte Datenbank neu verschlüsseln möchtest.",
"Please enter your password in the master key list below before upgrading the key.": "Bitte gib zuerst dein Passwort in der unten stehenden Liste der Hauptschlüssel ein, bevor du den Schlüssel aktualisierst.",
"Please note that if it is a large notebook, it may take a few minutes for all the notes to show up on the recipient's device.": "Wenn das Notizbuch sehr groß ist, kann es ein paar Minuten dauern, bis alle Notizen auf dem Empfängergerät erscheinen.",
@@ -599,6 +606,7 @@
"Process oversized accounts": "Verarbeite zu große Konten",
"Process user deletions": "Verarbeite Benutzerlöschungen",
"Profile": "Profil",
"Profile name:": "Profilname:",
"Profile Version: %s": "Profil-Version: %s",
"Properties": "Eigenschaften",
"Public-private key pair:": "Öffentlich-Privates Schlüsselpaar:",
@@ -648,6 +656,7 @@
"Safe mode is currently active. Note rendering and all plugins are temporarily disabled.": "Sicherer Modus aktiv. Notizdarstellung und alle Plugins werden vorübergehend deaktiviert.",
"Save": "Speichern",
"Save alarm": "Alarm speichern",
"Save as %s": "Speichern unter %s",
"Save as...": "Speichern unter ...",
"Save changes": "Änderungen speichern",
"Save geo-location with notes": "Momentanen Standort zusammen mit Notizen speichern",
@@ -727,7 +736,9 @@
"Swap line down": "Zeile nach unten verschieben",
"Swap line up": "Zeile nach oben verschieben",
"Switch between note and to-do type": "Zwischen Notiz- und Aufgaben-Typ wechseln",
"Switch profile": "Profil wechseln",
"Switch to note type": "Zu Notiz-Typ wechseln",
"Switch to profile %d": "Wechsle zu Profil %d",
"Switch to to-do type": "Zu Aufgaben-Typ wechseln",
"Switches to [notebook] - all further operations will happen within this notebook.": "Wechselt zu [notebook] - alle weiteren Aktionen werden in diesem Notizbuch ausgeführt.",
"Sync Status": "Synchronisationsstatus",
@@ -749,6 +760,7 @@
"Synchronising...": "Wird synchronisiert ...",
"Synchronizing...": "Wird synchronisiert ...",
"Tabloid": "Tabloid",
"tag1, tag2, ...": "tag1, tag2, ...",
"Tagged: %d.": "Verschlagwortet: %d.",
"Tags": "Schlagwörter",
"Take photo": "Foto aufnehmen",
@@ -756,6 +768,7 @@
"Text editor command": "Texteditor-Befehl",
"Thank you! Your Joplin Cloud account is now setup and ready to use.": "Vielen Dank! Das Joplin Cloud-Konto ist nun eingerichtet und einsatzbereit.",
"The app is now going to close. Please relaunch it to complete the process.": "Die App wird nun geschlossen. Bitte starte sie erneut, um den Vorgang abzuschließen.",
"The application did not close properly. Would you like to start in safe mode?": "Die Anwendung wurde nicht ordnungsgemäß geschlossen. Im abgesicherten Modus starten?",
"The application has been authorised - you may now close this browser tab.": "Die Anwendung wurde autorisiert - du kannst diesen Browsertab nun schließen.",
"The application has been authorised!": "Die Anwendung wurde erfolgreich autorisiert!",
"The application has been successfully authorised.": "Die Anwendung wurde erfolgreich autorisiert.",
@@ -778,7 +791,7 @@
"The notebook could not be saved: %s": "Dieses Notizbuch konnte nicht gespeichert werden: %s",
"The notes have been imported: %s": "Die Notizen wurden importiert: %s",
"The possible commands are:": "Die möglichen Befehle sind:",
"The recipient could not be removed from the list. Please try again.\n\nThe error was: \"%s\"": "Der Empfänger konnte nicht von der Liste entfernt werden. Bitte versuche es erneut.\n\nDer Fehler war: \"%s\"",
"The recipient could not be removed from the list. Please try again.\n\nThe error was: \"%s\"": "Der Empfänger konnte nicht von der Liste entfernt werden. Bitte versuche es erneut.\n\nDer Fehler war: „%s“",
"The sync target needs to be upgraded before Joplin can sync. The operation may take a few minutes to complete and the app needs to be restarted. To proceed please click on the link.": "Das Synchronisationsziel muss aktualisiert werden, bevor Joplin synchronisiert werden kann. Der Vorgang kann einige Minuten dauern, und die App muss neu gestartet werden. Um fortzufahren, klicke bitte auf den Link.",
"The sync target needs to be upgraded. Press this banner to proceed.": "Das Synchronisationsziel muss aktualisiert werden! Klicke auf diesen Banner, um fortzufahren.",
"The tag \"%s\" already exists. Please choose a different name.": "Das Schlagwort „%s“ existiert bereits. Bitte wähle einen anderen Namen.",
@@ -905,6 +918,7 @@
"You may use the tool below to re-encrypt your data, for example if you know that some of your notes are encrypted with an obsolete encryption method.": "Du kannst das folgende Werkzeug verwenden, um deine Daten erneut zu verschlüsseln, falls einige deiner Notizen mit einer veralteten Verschlüsselungsmethode verschlüsselt sein sollten.",
"Your choice: ": "Deine Auswahl: ",
"Your data is going to be re-encrypted and synced again.": "Deine Daten werden neu verschlüsselt und erneut synchronisiert.",
"Your password is needed to decrypt some of your data.": "Dein Passwort ist nötig, um einige deiner Daten zu entschlüsseln.",
"Your password is needed to decrypt some of your data. Type `:e2ee decrypt` to set it.": "Dein Passwort ist nötig um einige deiner Daten zu entschlüsseln. Tippe „:e2ee decrypt“ um es zu setzen.",
"Your permission to use your camera is required.": "Deine Zustimmung zur Verwendung deiner Kamera ist erforderlich.",
"Your version: %s": "Deine Version: %s",

View File

@@ -7,6 +7,7 @@
"%d notes match this pattern. Delete them?": "%d jegyzetek egyeznek ezen mintával. Töröljem őket?",
"%s %s (%s, %s)": "%s %s (%s, %s)",
"%s (%s) could not be uploaded: %s": "%s (%s) nem tölthető fel: %s",
"%s (%s) would like to share a notebook with you.": "%s (%s) szeretne egy jegyzetfüzetet megosztani önnel.",
"%s (%s): %s": "%s (%s): %s",
"%s (pre-release)": "%s (pre-release)",
"%s - Copy": "%s - Másolás",
@@ -37,12 +38,15 @@
"accelerator": "gyorsbillentyű",
"Accelerator \"%s\" is not valid.": "Gyorsbillentyű \"%s\" nem érvényes.",
"Accelerator \"%s\" is used for \"%s\" and \"%s\" commands. This may lead to unexpected behaviour.": "Gyorsbillentyű \"%s\" használva van a \"%s\" és \"%s\" parancsoknál. Ez váratlan viselkedéshez vezethet.",
"Accept": "Elfogadás",
"Active": "Aktív",
"Actual Size": "Aktív Méret",
"Add body": "Törzsszöveg hozzáadása",
"Add or remove tags:": "Tagek hozzáadása vagy törlése:",
"Add title": "Cím hozzáadása",
"Add to dictionary": "Hozzáadás szótárhoz",
"Admin": "Adminisztrátor",
"Admin dashboard": "Adminisztrátori felület",
"Advanced options": "Haladó beállítások",
"Advanced tools": "Haladó beállítások",
"All notes": "Minden jegyzet",
@@ -59,6 +63,7 @@
"Attach photo": "Fotó csatolása",
"Attach...": "Csatol...",
"Attaches the given file to the note.": "Csatolja az adott fájlt a jegyzethez.",
"attachment": "csatolmány",
"Attachment conflict: \"%s\"": "Csatolmány ütközés: \"%s\"",
"Attachment download behaviour": "Csatolmányok letöltésének működése",
"Attachments": "Csatolmányok",
@@ -68,6 +73,7 @@
"Authorisation token:": "Hitelesítő token:",
"Auto": "Auto",
"Auto-pair braces, parenthesis, quotations, etc.": "Auto-párosítása az idézőjeleknek, zárójeleknek, stb.",
"Automatically check for updates": "Automatikus frissítés keresés",
"Automatically switch theme to match system theme": "Automatikusan kapcsoljon olyan témára, ami egyezik a rendszer témával",
"Back": "Vissza",
"Bold": "Félkövér",
@@ -114,32 +120,46 @@
"command": "parancs",
"Command": "Parancs",
"Command palette": "Parancs paletta",
"Command palette...": "Parancs paletta…",
"Completed": "Befejeződött",
"Completed decryption.": "Visszafejtés befejeződött.",
"Completed: %s (%s)": "Befejeződött: %s (%s)",
"Configuration": "Beállítások",
"Confirm password cannot be empty": "Jelszó ismétlése nem lehet üres",
"Confirm password:": "Jelszó ismétlése:",
"Confirmation": "Megerősítés",
"Conflicted: %d": "Ütközik: %d",
"Conflicts": "Ütközés",
"Conflicts (attachments)": "Ütközés (jegyzet csatolmányok)",
"Content provided by %s": "Tartalom %s által biztosítva",
"Convert to note": "Átalakítás jegyzetté",
"Convert to todo": "Átalakítás todo-ra",
"Copy": "Másolás",
"Copy dev mode command to clipboard": "Dev mód parancs másolása vágólapra",
"Copy external link": "Külső link másolása",
"Copy image": "Kép másolása",
"Copy Link Address": "Link címének másolása",
"Copy Markdown link": "Markdown hivatkozás másolása",
"Copy path to clipboard": "Útvonal másolása vágólapra",
"Copy Shareable Link": "Megosztható hivatkozás másolása",
"Copy token": "Token másolása",
"Could not authorise application:\n\n%s\n\nPlease try again.": "Alkalmazás nem hitelesíthető:\n\n%s\n\nKérem próbálja újra.",
"Could not connect to Joplin Server. Please check the Synchronisation options in the config screen. Full error was:\n\n%s": "Sikertelen kapcsolódás a Joplin szerverhez. Kérem ellenőrizze a Szinkronizáció beállításokat a beállításoknál. Ez volt a teljes hiba:\n\n%s",
"Could not connect to plugin repository.": "Sikertelen kapcsolódás a plugin adattárhoz.",
"Could not export notes: %s": "Jegyzetek nem exportálhatóak: %s",
"Could not install plugin: %s": "Bővítmény nem telepíthető: %s",
"Could not upgrade master key: %s": "Mesterkulcs nem frissíthető: %s",
"Create": "Létrehozás",
"Create a notebook": "Jegyzetfüzet létrehozása",
"Create new profile...": "Új profil létrehozása.",
"Create notebook": "Jegyzetfüzet létrehozása",
"Create user": "Új felhasználó létrehozása",
"Created": "Létrehozva",
"created date": "létrehozás dátuma",
"Created local items: %d.": "Created local items: %d.",
"Created locally": "Helyben létrehozva",
"Created remote items: %d.": "Helyben létrehozott elemek: %d.",
"Created: ": "Létrehozva: ",
"Created: %d.": "Létrehozva: %d.",
"Created: %s": "Létrehozva: %s",
"Creates a new note.": "Új jegyzet létrehozása.",
@@ -155,6 +175,8 @@
"Custom TLS certificates": "Egyedi TLS bizonyítvány",
"Cut": "Kivágás",
"Dark": "Sötét",
"Database v%s": "Adatbázis v%s",
"Date": "Dátum",
"Date format": "Dátumforma",
"days": "napok",
"Decrypted items: %d": "Dekódolt elemek: %d",
@@ -164,6 +186,8 @@
"Default: %s": "Alapérték: %s",
"Delete": "Törlés",
"Delete attachment \"%s\"?": "\"%s\" csatolmány törlése ?",
"Delete expired sessions": "Lejárt munkamenetek törlése",
"Delete expired tokens": "Lejárt tokenek törlése",
"Delete line": "Sor törlése",
"Delete note \"%s\"?": "\"%s\" jegyzet törlése?",
"Delete note?": "Jegyzet törlése?",
@@ -180,6 +204,7 @@
"Destination format: %s": "Cél formátum: %s",
"Directory": "Könyvtár",
"Directory to synchronise with (absolute path)": "Könyvtár amivel szinkronizálunk (abszolút útvonal)",
"Disable": "Letiltás",
"Disable encryption": "Titkosítás letiltása",
"Disable Web Clipper Service": "Web Vágó szolgáltatás letiltása",
"Disabled": "Letiltva",
@@ -209,6 +234,7 @@
"Dropbox": "Dropbox",
"Dropbox Login": "Dropbox Login",
"Duplicate": "Duplikált",
"Duplicate line": "Duplikált sor",
"Edit": "Szerkesztés",
"Edit in external editor": "Szerkesztés külső szerkesztőben",
"Edit note.": "Jegyzet szerkesztése.",
@@ -217,8 +243,11 @@
"Editor font": "Szerkesztő betűkészlet",
"Editor font family": "Szerkesztő betű család",
"Editor font size": "Szerkesztő betű méret",
"Editor: %s": "Szerkesztő: %s",
"Either \"text\" or \"json\"": "\"szöveg\" vagy \"json\"",
"Emacs": "Emacs",
"Email": "Email",
"Emails": "Emailek",
"emphasised text": "kiemelt szöveg",
"Enable": "Engedélyez",
"Enable ++insert++ syntax": "++insert++ szintaxis engedélyezése",
@@ -250,6 +279,9 @@
"Encryption": "Titkosítás",
"Encryption Config": "Titkosítás beállítás",
"Encryption is: %s": "Titkosítás: %s",
"Encryption keys": "Titkosítási kulcsok",
"Encryption:": "Titkosítás:",
"End-to-end encryption": "End-to-end titkosítás",
"Enter code here": "A kódot írja ide",
"Enter master password:": "Adja meg a mester jelszót:",
"Enter notebook title": "Adja meg a jegyzetfüzet címét",
@@ -258,6 +290,7 @@
"Error opening note in editor: %s": "Hiba szerkesztőben a jegyzet megnyitáskor: %s",
"Error. Please check that URL, username, password, etc. are correct and that the sync target is accessible. The reported error was:": "Hiba. Kérem ellenőrizze az URL-t, a felhasználónevet, jelszót, stb. hogy megfelelőek-e és a szinkronizációs cél elérhető. A hiba a következő:",
"Error: %s": "Hibák: %s",
"Errors only": "Csak hibák",
"Evernote Export File (as HTML)": "Evernote fájl export (HTML-ként)",
"Evernote Export File (as Markdown)": "Evernote fájl export (Markdown-ként)",
"Exits the application.": "Kilép a programból.",
@@ -273,7 +306,8 @@
"Fail-safe": "Hibatűrő",
"Fail-safe: Do not wipe out local data when sync target is empty (often the result of a misconfiguration or bug)": "Hibatűrő: Ne törölje a helyi adatot, ha a távoli adat üres (gyakran rossz beállítás vagy hiba eredménye)",
"Fatal error:": "Végzetes hiba:",
"Fetching resources: %d/%d": "Erőforrások lekérése: %d/%d.",
"Fetched items: %d/%d.": "Letöltött elemek: %d/%d.",
"Fetching resources: %d/%d": "Erőforrások lekérése: %d/%d",
"File": "Fájl",
"File system": "Fájl-rendszer",
"Firefox Extension": "Firefox Bővítmény",
@@ -285,24 +319,31 @@
"Folders": "Mappák",
"Forward": "Tovább",
"Found: %d.": "Találtam: %d.",
"FTS enabled: %d": "FTS engedélyezve: %d",
"Full changelog": "Teljes változási napló",
"General": "Általános",
"Generated": "Generált",
"Generating link...": "Link létrehozása...",
"Get it now:": "Szerezze be most:",
"Get pre-releases when checking for updates": "Előzetes kiadások beszerzése amikor frissítéseket keresek",
"Go to source URL": "Ugrás forrás URL-re",
"Goto Anything...": "Ugrás bárhova...",
"Grant authorisation": "Engedély megadása",
"Heading": "Címsor",
"Help": "Segítség",
"Hide %s": "%s elrejtése",
"Hide Joplin": "Joplin elrejtése",
"Highlight": "Kiemelés",
"Horizontal Rule": "Vízszintes vonal",
"HTML Directory": "HTML Könyvtár",
"HTML File": "HTML fájl",
"Hyperlink": "Hiperlink",
"Icon": "Ikon",
"ID": "ID",
"Idle": "Tétlen",
"Ignore": "Mellőz",
"Ignore TLS certificate errors": "TLS bizonyítvány hibák figyelmen kívül hagyása",
"Images": "Képek",
"Import": "Importálás",
"Importing from \"%s\" as \"%s\" format. Please wait...": "\"%s\" importálása,\"%s\" formátumban. Kérem várjon...",
"Importing notes...": "Jegyzetek importálása...",
@@ -314,6 +355,7 @@
"Indent more": "Behúzás növelése",
"Information": "Információ",
"Inline Code": "Beágyazott kód",
"Insert": "Beszúrás",
"Insert Date Time": "Dátum-idő beszúrása",
"Insert Hyperlink": "Hiperhivatkozás beszúrása",
"Install": "Telepítés",
@@ -325,14 +367,20 @@
"Invalid answer: %s": "Érvénytelen válasz: %s",
"Invalid command: \"%s\"": "Érvénytelen parancs: \"%s\"",
"Invalid option value: \"%s\". Possible values are: %s.": "Érvénytelen opció érték: \"%s\". Lehetséges értékek: %s.",
"Invalid password": "Érvénytelen jelszó: %s",
"Italic": "Dőlt",
"Item \"%s\" could not be downloaded: %s": "Elem \"%s\" nem tölthető le: %s",
"Items": "Elemek",
"Items that cannot be decrypted": "Elemeket nem lehet dekódolni",
"Items that cannot be synchronised": "Elemeket nem lehet szinkronizálni",
"Joplin Cloud": "Joplin Cloud",
"Joplin Cloud email": "Joplin Cloud email",
"Joplin Cloud password": "Joplin Cloud jelszó",
"Joplin Export Directory": "Joplin Export Könyvtár",
"Joplin Export File": "Joplin Export fájl",
"Joplin Forum": "Joplin Forum",
"Joplin Server": "Joplin Szerver",
"Joplin Server email": "Joplin Server email",
"Joplin Server password": "Joplin Szerver jelszó",
"Joplin Server URL": "Joplin Szerver URL",
"Joplin Web Clipper allows saving web pages and screenshots from your browser to Joplin.": "Joplin Web Vágó segítségével lementhetünk web oldalakat és képernyőképeket a böngészőből Joplin-ba.",
@@ -347,6 +395,7 @@
"Later": "Később",
"Layout": "Elrendezés",
"Layout button sequence": "Elrendezés gomb sorrend",
"Leave notebook...": "Jegyzet elhagyása…",
"Legal": "US Legal",
"Letter": "US Levél",
"Light": "Világos",
@@ -356,25 +405,36 @@
"List item": "Felsorolás elem",
"Location": "Hely",
"Log": "Napló",
"Login": "Belépés",
"Login below.": "Belépés.",
"Login with Dropbox": "Belép Dropbox-al",
"Login with OneDrive": "Belép OneDrive-al",
"Logout": "Kilépés",
"Logs": "Log-ok",
"Make a donation": "Adakozzon",
"Manage master password": "Mester jelszó kezelése",
"Manage master password...": "Mester jelszó kezelése…",
"Manage your plugins": "Pluginok kezelése",
"Manual": "Kézi",
"Markdown": "Markdown",
"Markdown + Front Matter": "Markdown + Front Matter",
"Marks a to-do as done.": "Egy to-do készként jelölése.",
"Marks a to-do as non-completed.": "Egy to-do befejezetlenkén jelölése.",
"Markup": "Formátum",
"Master Key %s": "Mester Kulcs %s",
"Master password": "Mester jelszó",
"Master password:": "Mester jelszó:",
"Max concurrent connections": "Maximális konkurrens kapcsolat",
"Missing keys": "Hiányzó kulcsok",
"Missing Master Keys": "Hiányzó Mester Kulcsok",
"Missing required argument: %s": "Szükséges paraméter hiányzik: %s",
"Mobile data - auto-sync disabled": "Mobil adat - auto-szinkronizáció letiltva",
"More info": "Több info",
"More information": "Több információ",
"More than one item match \"%s\". Please narrow down your query.": "Több mint egy elem egyezik ezzel \"%s\". Kérem szűkítse a lekérdezést.",
"Move to notebook": "Jegyzetfüzetbe mozgatás",
"Move to notebook:": "Jegyzetfüzetbe mozgatás:",
"Moves the notes matching <note> to [notebook].": "Egyező jegyzetek <note> mozgása [notebook]-ba.",
"Move to notebook": "Jegyzetfüzetbe áthelyezés",
"Move to notebook...": "Jegyzetfüzetbe áthelyezés…",
"Move to notebook:": "Jegyzetfüzetbe áthelyezés:",
"n": "n",
"N": "N",
"New note": "Új jegyzet",
@@ -404,6 +464,7 @@
"Nord": "Nord",
"Not authentified with %s. Please provide any missing credentials.": "Nincs hitelesítve a %s-val. Kérem adja meg a hiányzó hitelesítő adatokat.",
"Not downloaded": "Nincs letöltve",
"Not generated": "Nem generált",
"note": "megjegyzés",
"Note": "Megjegyzés",
"Note area growth factor": "Jegyzet terület növekedési faktor",
@@ -419,10 +480,12 @@
"Note properties": "Jegyzet tulajdonságai",
"Note title": "Jegyzet címe",
"Note: Does not work in all desktop environments.": "Megjegyzés: Nem működik minden asztali környezetben.",
"Notebook": "Jegyzetfüzet",
"Notebook list growth factor": "Jegyzetfüzet lista növekedési faktor",
"Notebook: %s": "Jegyzetfüzet: %s",
"Notebooks": "Jegyzetfüzetek",
"Notebooks cannot be named \"%s\", which is a reserved title.": "Jegyzetfüzet nem nevezhető \"%s\"-nak, az egy fenntartott cím.",
"Notes": "Jegyzetek",
"Notes and settings are stored in: %s": "Jegyzetek és beállítások tárolása itt: %s",
"Notes can only be created within a notebook.": "Jegyzetek csak jegyezetfüzetben hozhatóak létre.",
"Numbered List": "Számozott lista",
@@ -437,9 +500,12 @@
"Open": "Megnyitás",
"Open %s": "Megnyitás %s",
"Open profile directory": "Adatmappa megnyitása",
"Open Sync Wizard...": "Sync-varázsló megnyitása…",
"Open...": "Megnyitás...",
"Operation cancelled": "Művelet megszakítva",
"Options": "Beállítások",
"Or create an account.": "Vagy hozzon létre új felhasználót.",
"Other applications...": "Más applikációk…",
"Output format: %s": "Kimeneti formátum: %s",
"Page orientation for PDF export": "Oldal tájolás PDF export-hoz",
"Page size for PDF export": "Oldal méret PDF export-hoz",
@@ -476,8 +542,14 @@
"Previous versions of this note": "Jegyzet előző verziói",
"Print": "Nyomtatás",
"Privacy Policy": "Adatvédelmi Irányelvek",
"Profile": "Profil",
"Profile name:": "Profil név:",
"Profile Version: %s": "Profil verzió: %s",
"Properties": "Tulajdonságok",
"Public-private key pair:": "Nyilvános-titkos kulcs pár:",
"Publish note...": "Jegyzet publikálálása…",
"Publish Notes": "Jegyzetek Publikálálása",
"Publish notes to the internet": "Jegyzetek publikálálása az internetre",
"Quit": "Kilépés",
"Re-encrypt data": "Adat újratitkosítása",
"Re-encryption": "Újratitkosítás",
@@ -485,6 +557,7 @@
"Read time: %s min": "Olvasási idő: %s perc",
"Redo": "Mégis",
"Refresh": "Frissítés",
"Reject": "Elutasít",
"Remove": "Eltávolítás",
"Remove tag \"%s\" from all notes?": "Tag \"%s\" eltávolítása minden jegyzetből?",
"Remove this search from the sidebar?": "Eltávolítsam ezt a keresést az oldalsávról?",
@@ -492,6 +565,8 @@
"Rename notebook:": "Jegyzetfüzet átnevezéses:",
"Rename tag:": "Tag átnevezése:",
"Renames the given <item> (note or notebook) to <name>.": "Átnevezi az adott <item> (jegyzet vagy jegyzetfüzet) erre <name>.",
"Renew token": "Token megújítása",
"Reset master password": "Mester jelszó visszaállítása",
"Resources: %d.": "Erőforrások: %d.",
"Restart and upgrade": "Újraindítás és frissítés",
"Restart now": "Újraindítás most",
@@ -503,6 +578,12 @@
"Reverse sort order": "Fordított sorrend",
"Reverses the sorting order.": "Rendezés sorrendjének megfordítása.",
"Revision: %s (%s)": "Revízió: %s (%s)",
"S3": "S3",
"S3 access key": "S3 hozzáférési kulcs",
"S3 bucket": "S3 bucket",
"S3 region": "S3 régió",
"S3 secret key": "S3 titkos kulcs",
"S3 URL": "S3 URL",
"Save": "Mentés",
"Save alarm": "Riasztás mentése",
"Save as...": "Mentés másként...",
@@ -516,7 +597,10 @@
"Search:": "Keresés:",
"Searches for the given <pattern> in all the notes.": "Keres egy adott <pattern> minden jegyetben.",
"See the pre-release page for more details: %s": "Nézze meg a előzetes kiadás oldalát a részletekért: %s",
"Select": "Kiválasztás",
"Select all": "Minden kiválasztása",
"Select emoji...": "Emoji kiválasztása…",
"Select file...": "Fájl kiválasztása…",
"Server is already running on port %d": "Szerver már fut a %d porton",
"Server is not running.": "Szerver nem működik.",
"Server is running on port %d": "Szerver fut a %d porton",
@@ -524,24 +608,31 @@
"Set alarm:": "Riasztás beállítása:",
"Set the password": "Jelszó beállítása",
"Share": "Megosztás",
"Share Notebook": "Jegyzetfüzet megosztása",
"Share notebook...": "Jegyzetfüzet megosztása…",
"Shortcuts are not available in CLI mode.": "Gyorsbillentyűk nem érhetőek el CLI módban.",
"Show Advanced Settings": "Speciális beállítások megjelenítése",
"Show all": "Összes megjelenítése",
"Show completed to-dos": "Mutassa a befejezett to-do-kat",
"Show note counts": "Mutassa a jegyzet számot",
"Show tray icon": "Mutassa a tálca ikon-t",
"Show note counts": "Jegyzet számok megjelenítése",
"Show sort order buttons": "Rendszerezési sorrend gombok megjelenítése",
"Show tray icon": "Tálca ikon megjelenítése",
"Sidebar": "Oldalsáv",
"Size": "Méret",
"Skip this version": "Verzió átugrása",
"Skipped items: %d (use --retry-failed-items to retry decrypting them)": "Kihagyott elemek: %d (használja a --retry-failed-items hogy megismételje a dekódolást)",
"Skipped: %d.": "Kihagyva: %d.",
"Solarised Dark": "Solarised Dark",
"Solarised Light": "Solarised Light",
"Some items cannot be decrypted.": "Néhány elemet nem lehet visszafejteni.",
"Some items cannot be synchronised.": "Néhány elemet nem lehet szinkronizálnii.",
"Some items cannot be synchronised.": "Néhány elemet nem lehet szinkronizálni.",
"Some items cannot be synchronised. Press for more info.": "Néhány elemet nem lehet szinkronizálni. Kattintson több információért.",
"Sort notebooks by": "Jegyzetfüzetek rendezése",
"Sort notes by": "Jegyzetek rendezése",
"Sort selected lines": "Kiválasztott sorok rendezése",
"Sorts the item by <field> (eg. title, updated_time, created_time).": "Elem rendezése <field> szerint (pl. title, updated_time, created_time)",
"Source format: %s": "Forrás formátum: %s",
"Source: ": "Forrás: ",
"Spell checker": "Helyesírás-ellenőrző",
"Split View": "Nézet megosztása",
"Start application minimised in the tray icon": "Alkalmazás indításakor kicsinyítse azt a tálcára",
@@ -558,13 +649,18 @@
"Step 2: Install the extension": "2. lépés: telepítse a bővítményt",
"Stop": "Stop",
"Stop external editing": "Külső szerkesztés leállítása",
"Strikethrough": "Áthúzott",
"strong text": "félkövér szöveg",
"Submit": "Elküld",
"Subscript": "Alsó index",
"Success! Synchronisation configuration appears to be correct.": "Siker! Szinkronizációs beállítás jónak tűnik.",
"Superscript": "Felső index",
"Swap line down": "Sor csere le",
"Swap line up": "Sor csere fel",
"Switch between note and to-do type": "Váltás jegyzet és todo típus között",
"Switch profile": "Profil váltása",
"Switch to note type": "Váltás jegyzet típusra",
"Switch to profile %d": "Váltás a %d profilra",
"Switch to to-do type": "Váltás to-do típusra",
"Switches to [notebook] - all further operations will happen within this notebook.": "Átváltás a [notebook]-ra - minden további művelet, ezen jegyzetfüzetben fog megtörténni.",
"Sync Status": "Szinkronizációs státusz",
@@ -573,6 +669,7 @@
"Sync Target Upgrade": "Szinkronizációs Eszköz Frissítése",
"Sync to provided target (defaults to sync.target config value)": "Szinkronizáció a megadott helyre (alapérték a sync.target beállítás értéke)",
"Sync Version: %s": "Szinkronizáció verzió: %s",
"Sync your notes": "Jegyzetek szinkronizálása",
"Synchronisation": "Szinkronizáció",
"Synchronisation interval": "Szinkronizációs időköz",
"Synchronisation is already in progress.": "Szinkronizáció már folyamatban van.",
@@ -582,10 +679,13 @@
"Synchronise": "Szinkronizálás",
"Synchronises with remote storage.": "Szinkronizáció távoli tárolóra.",
"Synchronising...": "Szinkronizálás...",
"Synchronizing...": "Szinkronizálás...",
"Tabloid": "Tabloid",
"tag1, tag2, ...": "tag1, tag2, …",
"Tagged: %d.": "Taggelve: %d.",
"Tags": "Tagek",
"Take photo": "Fotó készítése",
"Tasks": "Feladatok",
"Text editor command": "Szövegszerkesztő parancs",
"The app is now going to close. Please relaunch it to complete the process.": "Az alkalmazás bezárul. kérem indítsa újra a folyamat befejezéséhez.",
"The application has been authorised - you may now close this browser tab.": "Az alkalmazás hitelesítve - már becsukhatja a böngésző ablakot.",
@@ -603,6 +703,7 @@
"The notes have been imported: %s": "A jegyeztek importálva: %s",
"The possible commands are:": "Az elérhető parancsok:",
"The sync target needs to be upgraded before Joplin can sync. The operation may take a few minutes to complete and the app needs to be restarted. To proceed please click on the link.": "A szinkronizációs célt frissíteni kell a Joplin szinkronizációhoz. Ez a művelet, igénybe vehet pár percet és az alkalmazást újra kell indítani. A folytatáshoz kattintson a lenti linkre.",
"The tag \"%s\" already exists. Please choose a different name.": "A tag “%s” már létezik. Kérem válasszon másik nevet.",
"The web clipper service is enabled and set to auto-start.": "A Web Vágó szolgáltatás engedélyezve van és automatikusan indul.",
"The web clipper service is not enabled.": "A Web Vágó szolgáltatás nincs engedélyezve.",
"Theme": "Téma",
@@ -624,6 +725,7 @@
"title": "cím",
"Title": "Cím",
"To allow Joplin to synchronise with Dropbox, please follow the steps below:": "Hogy a Joplin tudjon szinkronizálni Dropbox-al, kérem kövesse a következő lépéseket:",
"To continue, please enter your master password below.": "A folytatáshoz adja meg a mester jelszót.",
"To delete a tag, untag the associated notes.": "Tag törléséhez, törölje a taget a hivatkozott jegyzetekből.",
"To delete: %d": "Törölni: %d",
"To enter command line mode, press \":\"": "Parancssor módba lépéshez nyomja meg a \":\"",
@@ -642,6 +744,7 @@
"Token has been copied to the clipboard!": "Token vágólapra másolva!",
"Tools": "Eszközök",
"Total: %d/%d": "Összes: %d/%d",
"Try again": "Próbálja újra",
"Type `joplin help` for usage information.": "Írja be `joplin help` a használati információkért.",
"Type a note title or part of its content to jump to it. Or type # followed by a tag name, or @ followed by a notebook name. Or type : to search for commands.": "Írja be a jegyzet címét vagy a tartalmának egy részletét, ahova ugrani szeretne. Esetleg írja be a #-et a tag nevével, vagy @ a jegyzetfüzet nevével. Beírhatja :-ot parancsok kereséséhez.",
"Type new tags or select from list": "Írjon be egy új tag-et vagy válasszon a listáról",
@@ -654,10 +757,12 @@
"Unsupported link or message: %s": "Nem támogatott hivatkozás vagy üzenet: %s",
"Untitled": "Névtelen",
"Update": "Frissítés",
"Update profile": "Profil frissítése",
"Updated": "Frissítve",
"updated date": "frissítési dátum",
"Updated local items: %d.": "Frissített helyi elemek: %d.",
"Updated remote items: %d.": "Frissített távoli elemek: %d.",
"Updated: ": "Frissített: ",
"Updated: %d.": "Frissített: %d.",
"Updated: %s": "Frissített: %s",
"Updating...": "Frissítés...",
@@ -667,6 +772,8 @@
"Usage: %s": "Használat: %s",
"Use spell checker": "Használja a helyesírás-ellenőrzőt",
"Use the arrows to move the layout items. Press \"Escape\" to exit.": "Használja a nyilakat az elrendezés elemek mozgatásához. Majd nyomja le az \"Escape\"-et a kilépéshez.",
"Users": "Felhasználók",
"Valid": "Érvényes",
"View": "Nézet",
"View on map": "Mutasd a térképen",
"View them now": "Mutasd ezeket most",

View File

@@ -49,7 +49,7 @@ stats['ca'] = {"percentDone":98};
stats['hr_HR'] = {"percentDone":100};
stats['cs_CZ'] = {"percentDone":86};
stats['da_DK'] = {"percentDone":98};
stats['de_DE'] = {"percentDone":98};
stats['de_DE'] = {"percentDone":100};
stats['et_EE'] = {"percentDone":49};
stats['en_GB'] = {"percentDone":100};
stats['en_US'] = {"percentDone":100};
@@ -60,7 +60,7 @@ stats['fr_FR'] = {"percentDone":100};
stats['gl_ES'] = {"percentDone":32};
stats['id_ID'] = {"percentDone":88};
stats['it_IT'] = {"percentDone":86};
stats['hu_HU'] = {"percentDone":75};
stats['hu_HU'] = {"percentDone":86};
stats['nl_BE'] = {"percentDone":88};
stats['nl_NL'] = {"percentDone":98};
stats['nb_NO'] = {"percentDone":98};
@@ -80,6 +80,6 @@ stats['ru_RU'] = {"percentDone":89};
stats['sr_RS'] = {"percentDone":72};
stats['zh_CN'] = {"percentDone":98};
stats['zh_TW'] = {"percentDone":87};
stats['ja_JP'] = {"percentDone":98};
stats['ja_JP'] = {"percentDone":100};
stats['ko'] = {"percentDone":86};
module.exports = { locales: locales, stats: stats };

View File

@@ -58,6 +58,7 @@
"All notes": "すべてのノート",
"All potential ports are in use - please report the issue at %s": "使用候補のポートはすべて利用中です - 問題を %s に報告してください",
"Also displays unset and hidden config variables.": "未設定または非表示の設定項目も表示します。",
"Also publish linked notes": "リンクされたノートも公開する",
"Always": "いつも",
"An update is available, do you want to download it now?": "アップデートがあります。すぐにダウンロードしますか?",
"Appearance": "スタイル",
@@ -75,7 +76,7 @@
"Attachment download behaviour": "添付ファイルのダウンロードの動作",
"Attachments": "添付ファイル",
"Attachments that could not be downloaded": "ダウンロードできなかった添付ファイル",
"Attention: If you change this location, make sure you copy all your content to it before syncing, otherwise all files will be removed! See the FAQ for more details: %s": "注意: この場所を変更する際は、同期する前に新しい場所にすべての内容をコピーしておきましょう。そうしないとすべてのファイルが削除されてまいます! 詳しくは次のFAQをご覧ください: %s",
"Attention: If you change this location, make sure you copy all your content to it before syncing, otherwise all files will be removed! See the FAQ for more details: %s": "注意: この場所を変更する際は、同期する前に新しい場所にすべての内容をコピーしておきましょう。そうしないとすべてのファイルが削除されてまいます! 詳しくは次のFAQをご覧ください: %s",
"Authentication was not completed (did not receive an authentication token).": "認証は完了していません(認証トークンが得られませんでした)",
"Authorisation token:": "認証トークン:",
"Auto": "自動",
@@ -92,15 +93,15 @@
"Cancelling background synchronisation... Please wait.": "バックグラウンド同期を中止中… しばらくお待ちください。",
"Cancelling...": "中止中...",
"Cancelling... Please wait.": "中止中...お待ちください。",
"Cannot access %s": "%sにアクセスできません",
"Cannot access %s": "%s にアクセスできません",
"Cannot change encrypted item": "暗号化したアイテムは変更できません",
"Cannot copy note to \"%s\" notebook": "ノートをノートブック \"%s\" にコピーできません",
"Cannot find \"%s\".": "\"%s\"は見つかりませんでした。",
"Cannot find \"%s\".": "\"%s\" は見つかりませんでした。",
"Cannot initialise synchroniser.": "同期プロセスを初期化できませんでした。",
"Cannot load \"%s\" module for format \"%s\" and output \"%s\"": "\"%s\" モジュール (\"%s / %s\" フォーマット用) を読み込めません",
"Cannot load \"%s\" module for format \"%s\" and target \"%s\"": "\"%s\" モジュール (\"%s / %s\" フォーマット用) を読み込めません",
"Cannot load \"%s\" module for format \"%s\" and output \"%s\"": "\"%s\" フォーマットと \"%s\" 出力用の \"%s\" モジュールを読み込めません",
"Cannot load \"%s\" module for format \"%s\" and target \"%s\"": "\"%s\" フォーマットと\" %s\" ターゲット用の \"%s\" モジュールを読み込めません",
"Cannot move note to \"%s\" notebook": "ノートをノートブック \"%s\" に移動できません",
"Cannot move notebook to this location": "ノートをノートブック \"%s\" に移動できません",
"Cannot move notebook to this location": "ノートブックをこの場所に移動できません",
"Cannot refresh token: authentication data is missing. Starting the synchronisation again may fix the problem.": "トークンの更新ができませんでした。認証データがありません。同期を再度行うことで解決することがあります。",
"Cannot save %s \"%s\" because it is larger than the allowed limit (%s)": "%s \"%s\" を保存できません。サイズが上限 (%s) を超えるためです",
"Cannot save %s \"%s\" because it would go over the total allowed size (%s) for this account": "%s \"%s\" を保存できません。このアカウントに許可された合計サイズの上限 (%s) を超えるためです",
@@ -164,7 +165,9 @@
"Could not respond to the invitation. Please try again, or check with the notebook owner if they are still sharing it.\n\nThe error was: \"%s\"": "招待に応じることができませんでした。もう一度お試しいただくか、ノートブックの所有者に今でも共有を続けているかご確認ください。\n\nエラーの内容: \"%s\"",
"Could not upgrade master key: %s": "マスターキーをアップグレードできませんでした: %s",
"Could not verify the share status of this notebook - aborting. Please try again when you are connected to the internet.": "このノートブックの共有状態を確認できなかったため処理を中断します。インターネット接続を確認してから再度お試しください。",
"Create": "作成",
"Create a notebook": "ノートブックを作成します",
"Create new profile...": "あたらしいプロファイルを作成...",
"Create notebook": "ノートブックの作成",
"Create user": "ユーザーを作成",
"Created": "作成日時",
@@ -209,7 +212,7 @@
"Delete notebook \"%s\"?\n\nAll notes and sub-notebooks within this notebook will also be deleted.": "ノートブック \"%s\" を削除しますか?\n\nこのノートブックにあるノートとサブノートはすべて消えてしまいます。",
"Delete notebook? All notes and sub-notebooks within this notebook will also be deleted.": "ノートブックを削除しますか? このノートブックにあるノートとサブノートはすべて消えてしまいます。",
"Delete plugin \"%s\"?": "プラグイン \"%s\" を削除しますか?",
"Delete these %d notes?": "ノート \"%d\" を削除しますか?",
"Delete these %d notes?": "これら %d のノートを削除しますか?",
"Delete this invitation? The recipient will no longer have access to this shared notebook.": "この招待を削除しますか? 削除後は招待の受信者がこの共有ノートブックにアクセスできなくなります。",
"Deleted local items: %d.": "ローカルアイテムの削除: %d.",
"Deleted remote items: %d.": "リモートアイテムの削除: %d.",
@@ -258,12 +261,14 @@
"Edit in external editor": "外部エディターで編集",
"Edit note.": "ノートを編集する。",
"Edit notebook": "ノートブックの編集",
"Edit profile configuration...": "プロファイル設定を編集...",
"Editor": "エディター",
"Editor font": "エディターのフォント",
"Editor font family": "エディターのフォントファミリー",
"Editor font size": "エディターのフォントサイズ",
"Editor maximum width": "エディター内での最大表示幅",
"Editor monospace font family": "エディターの等幅フォントファミリー",
"Editor: %s": "エディター: %s",
"Either \"text\" or \"json\"": "\"text\"または\"json\"",
"Emacs": "Emacs",
"Email": "Eメール",
@@ -333,6 +338,7 @@
"Fetching resources: %d/%d": "取得中のリソース: %d/%d",
"File": "ファイル",
"File system": "ファイルシステム",
"Filter tags": "フィルタータグ",
"Firefox Extension": "Firefox 拡張機能",
"Fix search index": "検索インデックスの修正",
"Fixing search index...": "検索インデックスの修正中...",
@@ -471,16 +477,16 @@
"Max concurrent connections": "最大同時接続数",
"Missing keys": "キーがありません",
"Missing Master Keys": "マスターキーがありません",
"Missing required argument: %s": "引数が足りません%s",
"Missing required argument: %s": "引数が足りません: %s",
"Mobile data - auto-sync disabled": "モバイルデータ通信 - 自動同期無効",
"More info": "詳細情報",
"More information": "詳細情報",
"More than one item match \"%s\". Please narrow down your query.": "一つ以上のアイテムが\"%s\"に一致しました。クエリを絞るようにしてください。",
"Move %d notes to notebook \"%s\"?": "%d個のノートを\"%s\"に移動しますか?",
"Move %d notes to notebook \"%s\"?": "%d 個のノートを \"%s\" ノートブックに移動しますか?",
"Move to notebook": "ノートブックへ移動",
"Move to notebook...": "ノートブックへ移動...",
"Move to notebook:": "ノートブックへ移動:",
"Moves the notes matching <note> to [notebook].": "<note>に一致するアイテムを、[notebook]に移動します。",
"Moves the notes matching <note> to [notebook].": "<note>に一致するノートを、[notebook]に移動します。",
"n": "n",
"N": "N",
"New note": "新しいノート",
@@ -517,7 +523,7 @@
"Note attachments": "添付ファイル一覧",
"Note attachments...": "添付ファイル一覧...",
"Note body": "ノートの本文",
"Note does not exist: \"%s\". Create it?": "\"%s\"というノートはありません。作成しますか?",
"Note does not exist: \"%s\". Create it?": "\"%s\" というノートはありません。作成しますか?",
"Note has been saved.": "ノートは保存されました。",
"Note History": "ノートの履歴",
"Note is not a to-do: \"%s\"": "ノートはToDoリストではありません:\"%s\"",
@@ -567,6 +573,7 @@
"PDF File": "PDF ファイル",
"Permission needed": "許可が必要",
"Permission to use camera": "カメラ使用の許可",
"Please click on \"%s\" to proceed, or set the passwords in the \"%s\" list below.": "\"%s\"をクリックして続行するか、以下の\"%s\"リストでパスワードを設定してください。",
"Please confirm that you would like to re-encrypt your complete database.": "データベース全体を暗号化しなおしてもよろしいですか。",
"Please enter your password in the master key list below before upgrading the key.": "下記マスターキーをアップグレードするには、マスターキーのパスワードを入力してください。",
"Please note that if it is a large notebook, it may take a few minutes for all the notes to show up on the recipient's device.": "ノートブックに大量のノートが含まれる場合、受信者側にすべてのノートが見えるようになるまで数分かかることがあります。",
@@ -599,6 +606,7 @@
"Process oversized accounts": "容量オーバーのアカウントを処理する",
"Process user deletions": "ユーザー削除を実施する",
"Profile": "プロファイル",
"Profile name:": "プロファイル名:",
"Profile Version: %s": "プロファイルバージョン: %s",
"Properties": "プロパティ",
"Public-private key pair:": "公開鍵・秘密鍵ペア:",
@@ -648,6 +656,7 @@
"Safe mode is currently active. Note rendering and all plugins are temporarily disabled.": "セーフモードで実行中。ノートのレンダリングとすべてのプラグインを一時的に無効化しています。",
"Save": "保存",
"Save alarm": "アラームの保存",
"Save as %s": "%sで保存",
"Save as...": "名前を付けて保存...",
"Save changes": "変更を保存",
"Save geo-location with notes": "ノートに位置情報を保存",
@@ -667,9 +676,9 @@
"Server is not running.": "サーバーは実行されていません。",
"Server is running on port %d": "サーバーはポート %d で実行中です",
"Set alarm": "アラームをセット",
"Set alarm:": "アラームをセット",
"Set alarm:": "アラームをセット:",
"Set it to 0 to make it take the complete available space. Recommended width is 600.": "幅いっぱいに表示させたいときは 0 に設定してください。推奨設定は 600 です。",
"Set the password": "パスワード設定",
"Set the password": "パスワード設定",
"Sets the property <name> of the given <note> to the given [value]. Possible properties are:\n\n%s": "<note>のプロパティ<name> を、指示された[value]に設定します。有効なプロパティは:\n\n%s",
"Share": "共有",
"Share Notebook": "ノートブックを共有",
@@ -690,9 +699,9 @@
"Skipped: %d.": "スキップ: %d.",
"Solarised Dark": "Solarised (暗)",
"Solarised Light": "Solarised (明)",
"Some items cannot be decrypted.": "いくつかの項目は復号されませんでした。",
"Some items cannot be synchronised.": "いくつかの項目は同期されませんでした。",
"Some items cannot be synchronised. Press for more info.": "いくつかの項目は同期されませんでした。詳細はクリック。",
"Some items cannot be decrypted.": "いくつかのアイテムは復号されませんでした。",
"Some items cannot be synchronised.": "いくつかのアイテムは同期されませんでした。",
"Some items cannot be synchronised. Press for more info.": "いくつかのアイテムは同期されませんでした。詳細はクリック。",
"Sort notebooks by": "ノートブックのソート方法",
"Sort notes by": "ノートのソート方法",
"Sort selected lines": "選択行の並び替え",
@@ -727,7 +736,9 @@
"Swap line down": "次の行と入れ替え",
"Swap line up": "前の行と入れ替え",
"Switch between note and to-do type": "ノートとToDoを切り替え",
"Switch profile": "プロファイルを切り替え",
"Switch to note type": "ノートに切り替え",
"Switch to profile %d": "%d プロファイルに切り替え",
"Switch to to-do type": "ToDoに切り替え",
"Switches to [notebook] - all further operations will happen within this notebook.": "ノートブック [notebook]に切り替え - これ以降の作業は、指定のノートブック内で行われます。",
"Sync Status": "同期の状態",
@@ -749,6 +760,7 @@
"Synchronising...": "同期中...",
"Synchronizing...": "同期中...",
"Tabloid": "Tabloid",
"tag1, tag2, ...": "タグ1, タグ2, ...",
"Tagged: %d.": "タグ付き: %d.",
"Tags": "タグ",
"Take photo": "写真を撮影する",
@@ -756,6 +768,7 @@
"Text editor command": "テキストエディターのコマンド",
"Thank you! Your Joplin Cloud account is now setup and ready to use.": "ありがとうございます! Joplin Cloudアカウントのセットアップが完了し、利用できる状態になりました。",
"The app is now going to close. Please relaunch it to complete the process.": "まもなくアプリケーションは終了します。もう一度起動して処理を完了させてください。",
"The application did not close properly. Would you like to start in safe mode?": "アプリケーションが正しく閉じませんでした。セーフモードで開始しますか?",
"The application has been authorised - you may now close this browser tab.": "アプリケーションは認証されました - ブラウザを閉じてもかまいません。",
"The application has been authorised!": "アプリケーションは問題なく認証されました!",
"The application has been successfully authorised.": "アプリケーションは問題なく認証されました。",
@@ -886,7 +899,7 @@
"Warning: not all resources shown for performance reasons (limit: %s).": "注意: 性能上の理由により、リソースは最大 %s 件までしか表示されません。",
"Web Clipper": "Webクリッパー",
"WebDAV": "WebDAV",
"WebDAV password": "WevDAV パスワード",
"WebDAV password": "WebDAV パスワード",
"WebDAV URL": "WebDAV URL",
"WebDAV username": "WebDAV ユーザー名",
"Website and documentation": "Webサイトとドキュメント",
@@ -903,8 +916,9 @@
"You do not have any installed plugin.": "インストールされているプラグインはありません。",
"You may also type `status` for more information.": "`status`でさらに情報を確認できます。",
"You may use the tool below to re-encrypt your data, for example if you know that some of your notes are encrypted with an obsolete encryption method.": "ここでは既存データの再暗号化を行えます。たとえば、旧式のアルゴリズムで暗号化されたノートがあるとわかっているような場合に新しいアルゴリズムで暗号化しなおすことが可能です。",
"Your choice: ": "選択 ",
"Your choice: ": "選択: ",
"Your data is going to be re-encrypted and synced again.": "既存データを暗号化しなおし、再同期します。",
"Your password is needed to decrypt some of your data.": "一部のデータを復号化するためにあなたのパスワードが必要です。",
"Your password is needed to decrypt some of your data. Type `:e2ee decrypt` to set it.": "一部のデータを復号化するためにあなたのパスワードが必要です。`:e2ee decrypt`と入力し設定してください。",
"Your permission to use your camera is required.": "カメラを使用するには権限が必要です。",
"Your version: %s": "あなたのバージョン: %s",

View File

@@ -1,4 +1,4 @@
import markdownUtils from './markdownUtils';
import markdownUtils, { parseMarkdownTable } from './markdownUtils';
describe('Should detect list items', () => {
test('should detect `- lorem ipsum` as list item ', () => {
@@ -91,4 +91,51 @@ describe('Should detect list items', () => {
expect(markdownUtils.isEmptyListItem('+ [x]')).toBe(false);
});
test('should parse a Markdown table', () => {
const table = parseMarkdownTable(`
| Name | Town | Comment |
|----------:|:-------:|----|
| John | London | None |
| Paul | Liverpool | **test bold** |
| Ringo | Sheffield | <a href="#">link</a> ![](https://image.com/img.png) |
`.trim().split('\n').map(l => l.trim()).join('\n'));
expect(table).toEqual({
'headers': [
{
'label': 'Name',
'name': 'c0',
'justify': 'right',
},
{
'label': 'Town',
'name': 'c1',
'justify': 'center',
},
{
'label': 'Comment',
'name': 'c2',
'justify': 'left',
},
],
'rows': [
{
'c0': 'John',
'c1': 'London',
'c2': 'None',
},
{
'c0': 'Paul',
'c1': 'Liverpool',
'c2': '**test bold**',
},
{
'c0': 'Ringo',
'c1': 'Sheffield',
'c2': '<a href="#">link</a> ![](https://image.com/img.png)',
},
],
});
});
});

View File

@@ -10,7 +10,7 @@ const emptyListRegex = /^(\s*)([*+-] \[[x ]\]|[*+-]|(\d+)[.)])(\s+)$/;
export enum MarkdownTableJustify {
Left = 'left',
Center = 'center',
Right = 'right,',
Right = 'right',
}
export interface MarkdownTableHeader {
@@ -25,6 +25,11 @@ export interface MarkdownTableRow {
[key: string]: string;
}
export interface MarkdownTable {
headers: MarkdownTableHeader[];
rows: MarkdownTableRow[];
}
const markdownUtils = {
// Titles for markdown links only need escaping for [ and ]
escapeTitleText(text: string) {
@@ -206,4 +211,95 @@ const markdownUtils = {
},
};
export const parseMarkdownTable = (tableMarkdown: string): MarkdownTable => {
interface Token {
type: string;
content: string;
attrGet: (name: string)=> string;
}
const getJustifyFromStyle = (token: Token): MarkdownTableJustify => {
const style = token.attrGet('style');
if (!style) return MarkdownTableJustify.Left;
if (style.includes('text-align:right')) return MarkdownTableJustify.Right;
if (style.includes('text-align:left')) return MarkdownTableJustify.Left;
if (style.includes('text-align:center')) return MarkdownTableJustify.Center;
return MarkdownTableJustify.Left;
};
const env = {};
const markdownIt = new MarkdownIt();
const tokens: Token[] = markdownIt.parse(tableMarkdown, env);
const headers: MarkdownTableHeader[] = [];
const rows: MarkdownTableRow[] = [];
let state = 'start';
let headerIndex = 0;
let rowIndex = -1;
for (const token of tokens) {
if (state === 'start') {
if (token.type !== 'table_open') {
throw new Error('Expected table_open token');
} else {
state = 'open';
}
continue;
}
if (token.type === 'thead_open') {
state = 'header';
continue;
}
if (state === 'header') {
if (token.type === 'th_open') {
headers.push({
label: '',
name: `c${headerIndex}`,
justify: getJustifyFromStyle(token),
});
}
if (token.type === 'inline') {
headers[headerIndex].label += token.content;
}
if (token.type === 'th_close') {
headerIndex++;
}
if (token.type === 'thead_close') {
state = 'content';
}
continue;
}
if (state === 'content') {
if (token.type === 'tr_open') {
state = 'row';
rows.push({});
rowIndex++;
headerIndex = 0;
}
continue;
}
if (state === 'row') {
if (token.type === 'inline') {
rows[rowIndex][`c${headerIndex}`] = token.content;
headerIndex++;
}
if (token.type === 'tr_close') {
state = 'content';
}
continue;
}
}
return { headers, rows };
};
export default markdownUtils;

View File

@@ -10,7 +10,7 @@ import ItemChange from './ItemChange';
import Resource from './Resource';
import { ResourceEntity } from '../services/database/types';
import { toForwardSlashes } from '../path-utils';
const ArrayUtils = require('../ArrayUtils.js');
import * as ArrayUtils from '../ArrayUtils';
async function allItems() {
const folders = await Folder.all();
@@ -61,8 +61,8 @@ describe('models/Note', function() {
const t = testCases[i];
const input = t[0] as string;
const expected = t[1];
const actual = Note.linkedItemIds(input);
const expected = t[1] as string[];
const actual = Note.linkedItemIds(input) as string[];
const contentEquals = ArrayUtils.contentEquals(actual, expected);
// console.info(contentEquals, input, expected, actual);

View File

@@ -7,15 +7,13 @@ import time from '../time';
import markdownUtils from '../markdownUtils';
import { NoteEntity } from '../services/database/types';
import Tag from './Tag';
const { sprintf } = require('sprintf-js');
import Resource from './Resource';
import syncDebugLog from '../services/synchronizer/syncDebugLog';
import { toFileProtocolPath, toForwardSlashes } from '../path-utils';
const { pregQuote, substrWithEllipsis } = require('../string-utils.js');
const { _ } = require('../locale');
const ArrayUtils = require('../ArrayUtils.js');
const lodash = require('lodash');
import { pull, unique } from '../ArrayUtils';
const urlUtils = require('../urlUtils.js');
const { isImageMimeType } = require('../resourceUtils');
const { MarkupToHtml } = require('@joplin/renderer');
@@ -59,7 +57,7 @@ export default class Note extends BaseItem {
static async serializeAllProps(note: NoteEntity) {
const fieldNames = this.fieldNames();
fieldNames.push('type_');
lodash.pull(fieldNames, 'title', 'body');
pull(fieldNames, 'title', 'body');
return super.serialize(note, fieldNames);
}
@@ -68,25 +66,25 @@ export default class Note extends BaseItem {
const fieldNames = this.fieldNames();
if (!n.is_conflict) lodash.pull(fieldNames, 'is_conflict');
if (!Number(n.latitude)) lodash.pull(fieldNames, 'latitude');
if (!Number(n.longitude)) lodash.pull(fieldNames, 'longitude');
if (!Number(n.altitude)) lodash.pull(fieldNames, 'altitude');
if (!n.author) lodash.pull(fieldNames, 'author');
if (!n.source_url) lodash.pull(fieldNames, 'source_url');
if (!n.is_conflict) pull(fieldNames, 'is_conflict');
if (!Number(n.latitude)) pull(fieldNames, 'latitude');
if (!Number(n.longitude)) pull(fieldNames, 'longitude');
if (!Number(n.altitude)) pull(fieldNames, 'altitude');
if (!n.author) pull(fieldNames, 'author');
if (!n.source_url) pull(fieldNames, 'source_url');
if (!n.is_todo) {
lodash.pull(fieldNames, 'is_todo');
lodash.pull(fieldNames, 'todo_due');
lodash.pull(fieldNames, 'todo_completed');
pull(fieldNames, 'is_todo');
pull(fieldNames, 'todo_due');
pull(fieldNames, 'todo_completed');
}
if (!n.application_data) lodash.pull(fieldNames, 'application_data');
if (!n.application_data) pull(fieldNames, 'application_data');
lodash.pull(fieldNames, 'type_');
lodash.pull(fieldNames, 'title');
lodash.pull(fieldNames, 'body');
lodash.pull(fieldNames, 'created_time');
lodash.pull(fieldNames, 'updated_time');
lodash.pull(fieldNames, 'order');
pull(fieldNames, 'type_');
pull(fieldNames, 'title');
pull(fieldNames, 'body');
pull(fieldNames, 'created_time');
pull(fieldNames, 'updated_time');
pull(fieldNames, 'order');
return super.serialize(n, fieldNames);
}
@@ -118,7 +116,7 @@ export default class Note extends BaseItem {
const links = urlUtils.extractResourceUrls(body);
const itemIds = links.map((l: any) => l.itemId);
return ArrayUtils.unique(itemIds);
return unique(itemIds);
}
static async linkedItems(body: string) {

View File

@@ -2,7 +2,7 @@ import BaseModel, { ModelType } from '../BaseModel';
import { RevisionEntity } from '../services/database/types';
import BaseItem from './BaseItem';
const DiffMatchPatch = require('diff-match-patch');
const ArrayUtils = require('../ArrayUtils.js');
import * as ArrayUtils from '../ArrayUtils';
import JoplinError from '../JoplinError';
const { sprintf } = require('sprintf-js');

View File

@@ -1,6 +1,6 @@
{
"name": "@joplin/lib",
"version": "2.8.0",
"version": "2.8.1",
"description": "Joplin Core library",
"author": "Laurent Cozic",
"homepage": "",
@@ -30,13 +30,13 @@
"dependencies": {
"@aws-sdk/client-s3": "^3.34.0",
"@aws-sdk/s3-request-presigner": "^3.34.0",
"@joplin/fork-htmlparser2": "^4.1.39",
"@joplin/fork-sax": "^1.2.43",
"@joplin/fork-uslug": "^1.0.4",
"@joplin/htmlpack": "~2.8",
"@joplin/renderer": "~2.8",
"@joplin/turndown": "^4.0.61",
"@joplin/turndown-plugin-gfm": "^1.0.43",
"@joplin/fork-htmlparser2": "^4.1.40",
"@joplin/fork-sax": "^1.2.44",
"@joplin/fork-uslug": "^1.0.5",
"@joplin/htmlpack": "^2.8.1",
"@joplin/renderer": "^2.8.1",
"@joplin/turndown": "^4.0.62",
"@joplin/turndown-plugin-gfm": "^1.0.44",
"@types/nanoid": "^3.0.0",
"async-mutex": "^0.1.3",
"base-64": "^0.1.0",
@@ -60,7 +60,6 @@
"immer": "^7.0.14",
"js-yaml": "^4.1.0",
"levenshtein": "^1.0.5",
"lodash": "^4.17.20",
"markdown-it": "^10.0.0",
"md5": "^2.2.1",
"md5-file": "^4.0.0",

View File

@@ -610,4 +610,26 @@ describe('reducer', function() {
expect(state.selectedNoteIds).toBe(expected);
}
});
// tests for TAG_UPDATE_ALL about PR #6451
it('should not change tags when a new value is deep equal to the old value', async () => {
const tags = await createNTestTags(6);
const oldTags = tags.slice(0, 5);
{
// Case 1. The input which is deep equal to the current state.tags doesn't change state.tags.
const oldState = initTestState(null, null, null, null, oldTags, [2]);
const newTags = oldTags.slice();
// test action
const newState = reducer(oldState, { type: 'TAG_UPDATE_ALL', items: newTags });
expect(newState.tags).toBe(oldState.tags);
}
{
// Case 2. A different input changes state.tags.
const oldState = initTestState(null, null, null, null, oldTags, [2]);
const newTags = oldTags.slice().splice(3, 1, tags[5]);
// test action
const newState = reducer(oldState, { type: 'TAG_UPDATE_ALL', items: newTags });
expect(newState.tags).not.toBe(oldState.tags);
}
});
});

View File

@@ -1,4 +1,4 @@
import produce, { Draft } from 'immer';
import produce, { Draft, original } from 'immer';
import pluginServiceReducer, { stateRootKey as pluginServiceStateRootKey, defaultState as pluginServiceDefaultState, State as PluginServiceState } from './services/plugins/reducer';
import shareServiceReducer, { stateRootKey as shareServiceStateRootKey, defaultState as shareServiceDefaultState, State as ShareServiceState } from './services/share/reducer';
import Note from './models/Note';
@@ -6,7 +6,8 @@ import Folder from './models/Folder';
import BaseModel from './BaseModel';
import { Store } from 'redux';
import { ProfileConfig } from './services/profileConfig/types';
const ArrayUtils = require('./ArrayUtils.js');
import * as ArrayUtils from './ArrayUtils';
const fastDeepEqual = require('fast-deep-equal');
const { ALL_NOTES_FILTER_ID } = require('./reserved-ids');
const { createSelectorCreator, defaultMemoize } = require('reselect');
const { createCachedSelector } = require('re-reselect');
@@ -924,7 +925,9 @@ const reducer = produce((draft: Draft<State> = defaultState, action: any) => {
break;
case 'TAG_UPDATE_ALL':
draft.tags = action.items;
if (!fastDeepEqual(original(draft.tags), action.items)) {
draft.tags = action.items;
}
break;
case 'TAG_SELECT':
@@ -1122,7 +1125,9 @@ const reducer = produce((draft: Draft<State> = defaultState, action: any) => {
break;
case 'SET_NOTE_TAGS':
draft.selectedNoteTags = action.items;
if (!fastDeepEqual(original(draft.selectedNoteTags), action.items)) {
draft.selectedNoteTags = action.items;
}
break;
case 'PLUGINLEGACY_DIALOG_SET':

View File

@@ -9,7 +9,7 @@ import Resource from '../../models/Resource';
import * as fs from 'fs-extra';
import { FolderEntity, NoteEntity, ResourceEntity } from '../database/types';
import { ModelType } from '../../BaseModel';
const ArrayUtils = require('../../ArrayUtils');
import * as ArrayUtils from '../../ArrayUtils';
async function recreateExportDir() {
const dir = exportDir();

View File

@@ -9,7 +9,7 @@ import Resource from '../../models/Resource';
import Folder from '../../models/Folder';
import NoteTag from '../../models/NoteTag';
import Note from '../../models/Note';
const ArrayUtils = require('../../ArrayUtils');
import * as ArrayUtils from '../../ArrayUtils';
const { sprintf } = require('sprintf-js');
const { fileExtension } = require('../../path-utils');
const { toTitleCase } = require('../../string-utils');

View File

@@ -9,7 +9,7 @@ import { basename, filename, rtrimSlashes, fileExtension, dirname } from '../../
import shim from '../../shim';
import markdownUtils from '../../markdownUtils';
import htmlUtils from '../../htmlUtils';
const { unique } = require('../../ArrayUtils');
import { unique } from '../../ArrayUtils';
const { pregQuote } = require('../../string-utils-common');
import { MarkupToHtml } from '@joplin/renderer';

View File

@@ -22,7 +22,7 @@ const mimeUtils = require('../../../mime-utils.js').mime;
const md5 = require('md5');
import HtmlToMd from '../../../HtmlToMd';
const urlUtils = require('../../../urlUtils.js');
const ArrayUtils = require('../../../ArrayUtils.js');
import * as ArrayUtils from '../../../ArrayUtils';
const { mimeTypeFromHeaders } = require('../../../net-utils');
const { fileExtension, safeFileExtension, safeFilename, filename } = require('../../../path-utils');
const { fileUriToPath } = require('../../../urlUtils');

View File

@@ -1,6 +1,6 @@
{
"name": "@joplin/plugin-repo-cli",
"version": "2.8.0",
"version": "2.8.1",
"description": "",
"main": "index.js",
"bin": "./dist/index.js",
@@ -18,8 +18,8 @@
"author": "",
"license": "MIT",
"dependencies": {
"@joplin/lib": "~2.8",
"@joplin/tools": "~2.8",
"@joplin/lib": "^2.8.1",
"@joplin/tools": "^2.8.1",
"fs-extra": "^9.0.1",
"gh-release-assets": "^2.0.0",
"node-fetch": "^2.6.1",

View File

@@ -6,7 +6,7 @@ import validateLinks from './MdToHtml/validateLinks';
import { ItemIdToUrlHandler } from './utils';
import { RenderResult, RenderResultPluginAsset } from './MarkupToHtml';
import { Options as NoteStyleOptions } from './noteStyle';
const hljs = require('highlight.js');
import hljs from './highlight';
const MarkdownIt = require('markdown-it');
const md5 = require('md5');

View File

@@ -0,0 +1,201 @@
// Here we replicate what's being done in highlight.js/index.js by default,
// except that we exclude a number of very large, but not very useful languages
// (those commented out).
//
// https://github.com/highlightjs/highlight.js/issues/1257#issuecomment-254502834
const hljs = require('highlight.js/lib/core');
// hljs.registerLanguage('1c', require('highlight.js/lib/languages/1c'));
hljs.registerLanguage('abnf', require('highlight.js/lib/languages/abnf'));
hljs.registerLanguage('accesslog', require('highlight.js/lib/languages/accesslog'));
hljs.registerLanguage('actionscript', require('highlight.js/lib/languages/actionscript'));
hljs.registerLanguage('ada', require('highlight.js/lib/languages/ada'));
hljs.registerLanguage('angelscript', require('highlight.js/lib/languages/angelscript'));
hljs.registerLanguage('apache', require('highlight.js/lib/languages/apache'));
hljs.registerLanguage('applescript', require('highlight.js/lib/languages/applescript'));
hljs.registerLanguage('arcade', require('highlight.js/lib/languages/arcade'));
hljs.registerLanguage('arduino', require('highlight.js/lib/languages/arduino'));
hljs.registerLanguage('armasm', require('highlight.js/lib/languages/armasm'));
hljs.registerLanguage('xml', require('highlight.js/lib/languages/xml'));
hljs.registerLanguage('asciidoc', require('highlight.js/lib/languages/asciidoc'));
hljs.registerLanguage('aspectj', require('highlight.js/lib/languages/aspectj'));
hljs.registerLanguage('autohotkey', require('highlight.js/lib/languages/autohotkey'));
hljs.registerLanguage('autoit', require('highlight.js/lib/languages/autoit'));
hljs.registerLanguage('avrasm', require('highlight.js/lib/languages/avrasm'));
hljs.registerLanguage('awk', require('highlight.js/lib/languages/awk'));
hljs.registerLanguage('axapta', require('highlight.js/lib/languages/axapta'));
hljs.registerLanguage('bash', require('highlight.js/lib/languages/bash'));
hljs.registerLanguage('basic', require('highlight.js/lib/languages/basic'));
hljs.registerLanguage('bnf', require('highlight.js/lib/languages/bnf'));
hljs.registerLanguage('brainfuck', require('highlight.js/lib/languages/brainfuck'));
hljs.registerLanguage('c', require('highlight.js/lib/languages/c'));
hljs.registerLanguage('cal', require('highlight.js/lib/languages/cal'));
hljs.registerLanguage('capnproto', require('highlight.js/lib/languages/capnproto'));
hljs.registerLanguage('ceylon', require('highlight.js/lib/languages/ceylon'));
hljs.registerLanguage('clean', require('highlight.js/lib/languages/clean'));
hljs.registerLanguage('clojure', require('highlight.js/lib/languages/clojure'));
hljs.registerLanguage('clojure-repl', require('highlight.js/lib/languages/clojure-repl'));
hljs.registerLanguage('cmake', require('highlight.js/lib/languages/cmake'));
hljs.registerLanguage('coffeescript', require('highlight.js/lib/languages/coffeescript'));
hljs.registerLanguage('coq', require('highlight.js/lib/languages/coq'));
hljs.registerLanguage('cos', require('highlight.js/lib/languages/cos'));
hljs.registerLanguage('cpp', require('highlight.js/lib/languages/cpp'));
hljs.registerLanguage('crmsh', require('highlight.js/lib/languages/crmsh'));
hljs.registerLanguage('crystal', require('highlight.js/lib/languages/crystal'));
hljs.registerLanguage('csharp', require('highlight.js/lib/languages/csharp'));
hljs.registerLanguage('csp', require('highlight.js/lib/languages/csp'));
hljs.registerLanguage('css', require('highlight.js/lib/languages/css'));
hljs.registerLanguage('d', require('highlight.js/lib/languages/d'));
hljs.registerLanguage('markdown', require('highlight.js/lib/languages/markdown'));
hljs.registerLanguage('dart', require('highlight.js/lib/languages/dart'));
hljs.registerLanguage('delphi', require('highlight.js/lib/languages/delphi'));
hljs.registerLanguage('diff', require('highlight.js/lib/languages/diff'));
hljs.registerLanguage('django', require('highlight.js/lib/languages/django'));
hljs.registerLanguage('dns', require('highlight.js/lib/languages/dns'));
hljs.registerLanguage('dockerfile', require('highlight.js/lib/languages/dockerfile'));
hljs.registerLanguage('dos', require('highlight.js/lib/languages/dos'));
hljs.registerLanguage('dsconfig', require('highlight.js/lib/languages/dsconfig'));
hljs.registerLanguage('dts', require('highlight.js/lib/languages/dts'));
hljs.registerLanguage('dust', require('highlight.js/lib/languages/dust'));
hljs.registerLanguage('ebnf', require('highlight.js/lib/languages/ebnf'));
hljs.registerLanguage('elixir', require('highlight.js/lib/languages/elixir'));
hljs.registerLanguage('elm', require('highlight.js/lib/languages/elm'));
hljs.registerLanguage('ruby', require('highlight.js/lib/languages/ruby'));
hljs.registerLanguage('erb', require('highlight.js/lib/languages/erb'));
hljs.registerLanguage('erlang-repl', require('highlight.js/lib/languages/erlang-repl'));
hljs.registerLanguage('erlang', require('highlight.js/lib/languages/erlang'));
hljs.registerLanguage('excel', require('highlight.js/lib/languages/excel'));
hljs.registerLanguage('fix', require('highlight.js/lib/languages/fix'));
hljs.registerLanguage('flix', require('highlight.js/lib/languages/flix'));
hljs.registerLanguage('fortran', require('highlight.js/lib/languages/fortran'));
hljs.registerLanguage('fsharp', require('highlight.js/lib/languages/fsharp'));
hljs.registerLanguage('gams', require('highlight.js/lib/languages/gams'));
hljs.registerLanguage('gauss', require('highlight.js/lib/languages/gauss'));
hljs.registerLanguage('gcode', require('highlight.js/lib/languages/gcode'));
hljs.registerLanguage('gherkin', require('highlight.js/lib/languages/gherkin'));
hljs.registerLanguage('glsl', require('highlight.js/lib/languages/glsl'));
// hljs.registerLanguage('gml', require('highlight.js/lib/languages/gml'));
hljs.registerLanguage('go', require('highlight.js/lib/languages/go'));
hljs.registerLanguage('golo', require('highlight.js/lib/languages/golo'));
hljs.registerLanguage('gradle', require('highlight.js/lib/languages/gradle'));
hljs.registerLanguage('groovy', require('highlight.js/lib/languages/groovy'));
hljs.registerLanguage('haml', require('highlight.js/lib/languages/haml'));
hljs.registerLanguage('handlebars', require('highlight.js/lib/languages/handlebars'));
hljs.registerLanguage('haskell', require('highlight.js/lib/languages/haskell'));
hljs.registerLanguage('haxe', require('highlight.js/lib/languages/haxe'));
hljs.registerLanguage('hsp', require('highlight.js/lib/languages/hsp'));
hljs.registerLanguage('http', require('highlight.js/lib/languages/http'));
hljs.registerLanguage('hy', require('highlight.js/lib/languages/hy'));
hljs.registerLanguage('inform7', require('highlight.js/lib/languages/inform7'));
hljs.registerLanguage('ini', require('highlight.js/lib/languages/ini'));
hljs.registerLanguage('irpf90', require('highlight.js/lib/languages/irpf90'));
// hljs.registerLanguage('isbl', require('highlight.js/lib/languages/isbl'));
hljs.registerLanguage('java', require('highlight.js/lib/languages/java'));
hljs.registerLanguage('javascript', require('highlight.js/lib/languages/javascript'));
hljs.registerLanguage('jboss-cli', require('highlight.js/lib/languages/jboss-cli'));
hljs.registerLanguage('json', require('highlight.js/lib/languages/json'));
hljs.registerLanguage('julia', require('highlight.js/lib/languages/julia'));
hljs.registerLanguage('julia-repl', require('highlight.js/lib/languages/julia-repl'));
hljs.registerLanguage('kotlin', require('highlight.js/lib/languages/kotlin'));
hljs.registerLanguage('lasso', require('highlight.js/lib/languages/lasso'));
hljs.registerLanguage('latex', require('highlight.js/lib/languages/latex'));
hljs.registerLanguage('ldif', require('highlight.js/lib/languages/ldif'));
hljs.registerLanguage('leaf', require('highlight.js/lib/languages/leaf'));
// hljs.registerLanguage('less', require('highlight.js/lib/languages/less'));
hljs.registerLanguage('lisp', require('highlight.js/lib/languages/lisp'));
hljs.registerLanguage('livecodeserver', require('highlight.js/lib/languages/livecodeserver'));
hljs.registerLanguage('livescript', require('highlight.js/lib/languages/livescript'));
hljs.registerLanguage('llvm', require('highlight.js/lib/languages/llvm'));
// hljs.registerLanguage('lsl', require('highlight.js/lib/languages/lsl'));
hljs.registerLanguage('lua', require('highlight.js/lib/languages/lua'));
hljs.registerLanguage('makefile', require('highlight.js/lib/languages/makefile'));
// hljs.registerLanguage('mathematica', require('highlight.js/lib/languages/mathematica'));
hljs.registerLanguage('matlab', require('highlight.js/lib/languages/matlab'));
// hljs.registerLanguage('maxima', require('highlight.js/lib/languages/maxima'));
hljs.registerLanguage('mel', require('highlight.js/lib/languages/mel'));
hljs.registerLanguage('mercury', require('highlight.js/lib/languages/mercury'));
hljs.registerLanguage('mipsasm', require('highlight.js/lib/languages/mipsasm'));
hljs.registerLanguage('mizar', require('highlight.js/lib/languages/mizar'));
hljs.registerLanguage('perl', require('highlight.js/lib/languages/perl'));
hljs.registerLanguage('mojolicious', require('highlight.js/lib/languages/mojolicious'));
hljs.registerLanguage('monkey', require('highlight.js/lib/languages/monkey'));
hljs.registerLanguage('moonscript', require('highlight.js/lib/languages/moonscript'));
hljs.registerLanguage('n1ql', require('highlight.js/lib/languages/n1ql'));
hljs.registerLanguage('nestedtext', require('highlight.js/lib/languages/nestedtext'));
hljs.registerLanguage('nginx', require('highlight.js/lib/languages/nginx'));
hljs.registerLanguage('nim', require('highlight.js/lib/languages/nim'));
hljs.registerLanguage('nix', require('highlight.js/lib/languages/nix'));
hljs.registerLanguage('node-repl', require('highlight.js/lib/languages/node-repl'));
hljs.registerLanguage('nsis', require('highlight.js/lib/languages/nsis'));
hljs.registerLanguage('objectivec', require('highlight.js/lib/languages/objectivec'));
hljs.registerLanguage('ocaml', require('highlight.js/lib/languages/ocaml'));
hljs.registerLanguage('openscad', require('highlight.js/lib/languages/openscad'));
hljs.registerLanguage('oxygene', require('highlight.js/lib/languages/oxygene'));
hljs.registerLanguage('parser3', require('highlight.js/lib/languages/parser3'));
hljs.registerLanguage('pf', require('highlight.js/lib/languages/pf'));
// hljs.registerLanguage('pgsql', require('highlight.js/lib/languages/pgsql'));
hljs.registerLanguage('php', require('highlight.js/lib/languages/php'));
hljs.registerLanguage('php-template', require('highlight.js/lib/languages/php-template'));
hljs.registerLanguage('plaintext', require('highlight.js/lib/languages/plaintext'));
hljs.registerLanguage('pony', require('highlight.js/lib/languages/pony'));
hljs.registerLanguage('powershell', require('highlight.js/lib/languages/powershell'));
hljs.registerLanguage('processing', require('highlight.js/lib/languages/processing'));
hljs.registerLanguage('profile', require('highlight.js/lib/languages/profile'));
hljs.registerLanguage('prolog', require('highlight.js/lib/languages/prolog'));
hljs.registerLanguage('properties', require('highlight.js/lib/languages/properties'));
hljs.registerLanguage('protobuf', require('highlight.js/lib/languages/protobuf'));
hljs.registerLanguage('puppet', require('highlight.js/lib/languages/puppet'));
hljs.registerLanguage('purebasic', require('highlight.js/lib/languages/purebasic'));
hljs.registerLanguage('python', require('highlight.js/lib/languages/python'));
hljs.registerLanguage('python-repl', require('highlight.js/lib/languages/python-repl'));
hljs.registerLanguage('q', require('highlight.js/lib/languages/q'));
hljs.registerLanguage('qml', require('highlight.js/lib/languages/qml'));
hljs.registerLanguage('r', require('highlight.js/lib/languages/r'));
hljs.registerLanguage('reasonml', require('highlight.js/lib/languages/reasonml'));
hljs.registerLanguage('rib', require('highlight.js/lib/languages/rib'));
hljs.registerLanguage('roboconf', require('highlight.js/lib/languages/roboconf'));
hljs.registerLanguage('routeros', require('highlight.js/lib/languages/routeros'));
hljs.registerLanguage('rsl', require('highlight.js/lib/languages/rsl'));
hljs.registerLanguage('ruleslanguage', require('highlight.js/lib/languages/ruleslanguage'));
hljs.registerLanguage('rust', require('highlight.js/lib/languages/rust'));
hljs.registerLanguage('sas', require('highlight.js/lib/languages/sas'));
hljs.registerLanguage('scala', require('highlight.js/lib/languages/scala'));
hljs.registerLanguage('scheme', require('highlight.js/lib/languages/scheme'));
hljs.registerLanguage('scilab', require('highlight.js/lib/languages/scilab'));
hljs.registerLanguage('scss', require('highlight.js/lib/languages/scss'));
hljs.registerLanguage('shell', require('highlight.js/lib/languages/shell'));
hljs.registerLanguage('smali', require('highlight.js/lib/languages/smali'));
hljs.registerLanguage('smalltalk', require('highlight.js/lib/languages/smalltalk'));
hljs.registerLanguage('sml', require('highlight.js/lib/languages/sml'));
// hljs.registerLanguage('sqf', require('highlight.js/lib/languages/sqf'));
hljs.registerLanguage('sql', require('highlight.js/lib/languages/sql'));
hljs.registerLanguage('stan', require('highlight.js/lib/languages/stan'));
// hljs.registerLanguage('stata', require('highlight.js/lib/languages/stata'));
hljs.registerLanguage('step21', require('highlight.js/lib/languages/step21'));
hljs.registerLanguage('stylus', require('highlight.js/lib/languages/stylus'));
hljs.registerLanguage('subunit', require('highlight.js/lib/languages/subunit'));
hljs.registerLanguage('swift', require('highlight.js/lib/languages/swift'));
hljs.registerLanguage('taggerscript', require('highlight.js/lib/languages/taggerscript'));
hljs.registerLanguage('yaml', require('highlight.js/lib/languages/yaml'));
hljs.registerLanguage('tap', require('highlight.js/lib/languages/tap'));
hljs.registerLanguage('tcl', require('highlight.js/lib/languages/tcl'));
hljs.registerLanguage('thrift', require('highlight.js/lib/languages/thrift'));
hljs.registerLanguage('tp', require('highlight.js/lib/languages/tp'));
hljs.registerLanguage('twig', require('highlight.js/lib/languages/twig'));
hljs.registerLanguage('typescript', require('highlight.js/lib/languages/typescript'));
hljs.registerLanguage('vala', require('highlight.js/lib/languages/vala'));
hljs.registerLanguage('vbnet', require('highlight.js/lib/languages/vbnet'));
hljs.registerLanguage('vbscript', require('highlight.js/lib/languages/vbscript'));
hljs.registerLanguage('vbscript-html', require('highlight.js/lib/languages/vbscript-html'));
hljs.registerLanguage('verilog', require('highlight.js/lib/languages/verilog'));
hljs.registerLanguage('vhdl', require('highlight.js/lib/languages/vhdl'));
hljs.registerLanguage('vim', require('highlight.js/lib/languages/vim'));
hljs.registerLanguage('wasm', require('highlight.js/lib/languages/wasm'));
hljs.registerLanguage('wren', require('highlight.js/lib/languages/wren'));
hljs.registerLanguage('x86asm', require('highlight.js/lib/languages/x86asm'));
hljs.registerLanguage('xl', require('highlight.js/lib/languages/xl'));
hljs.registerLanguage('xquery', require('highlight.js/lib/languages/xquery'));
hljs.registerLanguage('zephir', require('highlight.js/lib/languages/zephir'));
export default hljs;

View File

@@ -1,6 +1,6 @@
{
"name": "@joplin/renderer",
"version": "2.8.0",
"version": "2.8.1",
"description": "The Joplin note renderer, used the mobile and desktop application",
"repository": "https://github.com/laurent22/joplin/tree/dev/packages/renderer",
"main": "index.js",
@@ -24,8 +24,8 @@
"typescript": "^4.0.5"
},
"dependencies": {
"@joplin/fork-htmlparser2": "^4.1.39",
"@joplin/fork-uslug": "^1.0.4",
"@joplin/fork-htmlparser2": "^4.1.40",
"@joplin/fork-uslug": "^1.0.5",
"font-awesome-filetypes": "^2.1.0",
"fs-extra": "^8.1.0",
"highlight.js": "11.1.0",

View File

@@ -5,7 +5,7 @@
# Translators:
# Josep Maria Planell <planell.josep@gmail.com>, 2019
# Joan Montané <jmontane@softcatala.org>, 2019
# Xavi Ivars <xavi.ivars@gmail.com>, 2021
# Xavi Ivars <xavi.ivars@gmail.com>, 2021-2022
#
msgid ""
msgstr ""
@@ -302,9 +302,8 @@ msgid "Also displays unset and hidden config variables."
msgstr "També mostra variables de configuració ocultes o sense definir."
#: packages/app-desktop/gui/ShareNoteDialog.tsx:203
#, fuzzy
msgid "Also publish linked notes"
msgstr "Deixa de publicar la nota"
msgstr "Publica també les notes enllaçades"
#: packages/lib/models/Setting.ts:713
msgid "Always"
@@ -870,18 +869,16 @@ msgstr ""
"s'està avortant. Torneu a provar quan tingueu connexió a Internet."
#: packages/app-desktop/gui/PromptDialog.min.js:235
#, fuzzy
msgid "Create"
msgstr "Creació"
msgstr "Crea"
#: packages/app-mobile/components/note-list.js:101
msgid "Create a notebook"
msgstr "Crea un bloc de notes nou"
#: packages/app-desktop/gui/MainScreen/commands/addProfile.ts:9
#, fuzzy
msgid "Create new profile..."
msgstr "Crea una nota nova."
msgstr "Crea un perfil nou..."
#: packages/app-desktop/gui/EditFolderDialog/Dialog.tsx:161
msgid "Create notebook"
@@ -1330,7 +1327,7 @@ msgstr "Edita el bloc de notes"
#: packages/app-desktop/commands/editProfileConfig.ts:9
msgid "Edit profile configuration..."
msgstr ""
msgstr "Edita la configuració del perfil"
#: packages/app-desktop/gui/NoteContentPropertiesDialog.tsx:138
#: packages/lib/models/Setting.ts:876 packages/lib/models/Setting.ts:877
@@ -1360,9 +1357,8 @@ msgstr "Lletra d'amplada fixa de l'editor"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:100
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:96
#, fuzzy
msgid "Editor: %s"
msgstr "Editor"
msgstr "Editor: %s"
#: packages/app-cli/app/command-ls.js:31
msgid "Either \"text\" or \"json\""
@@ -1677,9 +1673,8 @@ msgid "File system"
msgstr "Sistema de fitxers"
#: packages/app-mobile/components/screens/NoteTagsDialog.js:190
#, fuzzy
msgid "Filter tags"
msgstr "Etiquetes noves:"
msgstr "Filtra les etiquetes"
#: packages/app-desktop/gui/ExtensionBadge.min.js:10
msgid "Firefox Extension"
@@ -2806,6 +2801,8 @@ msgid ""
"Please click on \"%s\" to proceed, or set the passwords in the \"%s\" list "
"below."
msgstr ""
"Feu clic a \"%s\" per a continuar, o definiu les contrasenyes a la llista "
"\"%s\" inferior."
#: packages/lib/components/EncryptionConfigScreen/utils.ts:65
msgid ""
@@ -2965,9 +2962,8 @@ msgid "Profile"
msgstr "Perfil"
#: packages/app-desktop/gui/MainScreen/commands/addProfile.ts:17
#, fuzzy
msgid "Profile name:"
msgstr "Perfil"
msgstr "Nom del perfil:"
#: packages/lib/versionInfo.ts:26
msgid "Profile Version: %s"
@@ -3195,9 +3191,8 @@ msgstr "Desa l'alarma"
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:100
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:93
#, fuzzy
msgid "Save as %s"
msgstr "Anomena i desa..."
msgstr "Desa-ho com a %s"
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:80
msgid "Save as..."
@@ -3565,9 +3560,8 @@ msgid "Switch between note and to-do type"
msgstr "Alterna entre el tipus nota i tasques pendents"
#: packages/app-desktop/gui/MenuBar.tsx:437
#, fuzzy
msgid "Switch profile"
msgstr "Exporta el perfil"
msgstr "Canvia el perfil"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:105
msgid "Switch to note type"
@@ -3576,9 +3570,8 @@ msgstr "Canvia el tipus a nota"
#: packages/app-desktop/commands/switchProfile1.ts:7
#: packages/app-desktop/commands/switchProfile2.ts:7
#: packages/app-desktop/commands/switchProfile3.ts:7
#, fuzzy
msgid "Switch to profile %d"
msgstr "Canvia el tipus a nota"
msgstr "Canvia al perfil %d"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:114
msgid "Switch to to-do type"
@@ -3677,7 +3670,7 @@ msgstr "Tabloide"
#: packages/app-mobile/components/screens/NoteTagsDialog.js:179
msgid "tag1, tag2, ..."
msgstr ""
msgstr "etiqueta1, etiqueta2, ..."
#: packages/app-cli/app/command-import.js:52
#: packages/app-desktop/gui/ImportScreen.min.js:73
@@ -3719,8 +3712,9 @@ msgstr ""
#: packages/app-desktop/app.ts:332
msgid ""
"The application did not close properly. Would you like to start in safe mode?"
msgstr ""
"The application did not close properly. Would you like to start in safe "
"mode?"
msgstr "L'aplicació no s'ha tancat correctament. Voleu iniciar en mode segur?"
#: packages/lib/onedrive-api-node-utils.js:86
msgid ""
@@ -4576,9 +4570,8 @@ msgid "Your data is going to be re-encrypted and synced again."
msgstr "Les vostres dades es tornaran a xifrar i sincronitzar."
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:271
#, fuzzy
msgid "Your password is needed to decrypt some of your data."
msgstr "La contrasenya mestra és necessària per a desxifrar algunes dades."
msgstr "Fa falta la contrasenya per a desxifrar part de les dades."
#: packages/app-cli/app/command-sync.ts:242
msgid ""

View File

@@ -299,9 +299,8 @@ msgid "Also displays unset and hidden config variables."
msgstr "Zeigt auch nicht gesetzte und versteckte Konfigurationsvariablen an."
#: packages/app-desktop/gui/ShareNoteDialog.tsx:203
#, fuzzy
msgid "Also publish linked notes"
msgstr "Veröffentlichung der Notiz aufheben"
msgstr "Auch verlinkte Notizen veröffentlichen"
#: packages/lib/models/Setting.ts:713
msgid "Always"
@@ -424,6 +423,8 @@ msgstr "Automatisch auf Aktualisierungen prüfen"
# Not sure what other applications use. I don't have any German apps thus I can't say.
# Both words don't strike me as a proper translation in this context.
# I think "design" is a translation that I've seen before and that also everybody would understand.
# ---
# Gimp z. B. verwendet "Thema", ich denke aber, dass "Design" genauso allgemein verständlich ist.
#: packages/lib/models/Setting.ts:824
msgid "Automatically switch theme to match system theme"
msgstr "Automatisch das Design ändern, um es dem System-Design anzupassen"
@@ -565,14 +566,14 @@ msgstr ""
#: packages/server/src/models/UserModel.ts:214
msgid "Cannot save %s \"%s\" because it is larger than the allowed limit (%s)"
msgstr ""
"Kann %s \"%s\" nicht speichern, da es größer ist als das erlaubte Limit (%s)"
"Kann %s „%s“ nicht speichern, da es größer ist als das erlaubte Limit (%s)"
#: packages/server/src/models/UserModel.ts:231
msgid ""
"Cannot save %s \"%s\" because it would go over the total allowed size (%s) "
"for this account"
msgstr ""
"Kann %s \"%s\" nicht speichern, da es die zulässige Gesamtgröße (%s) für "
"Kann %s „%s“ nicht speichern, da es die zulässige Gesamtgröße (%s) für "
"dieses Konto überschreiten würde"
#: packages/lib/services/share/ShareService.ts:318
@@ -871,7 +872,7 @@ msgstr ""
"Die Einladung konnte nicht beantwortet werden. Bitte versuche es erneut, "
"oder prüfe, ob der Notizbuch-Besitzer dieses noch freigibt.\n"
"\n"
"Der Fehler war: \"%s\""
"Der Fehler war: „%s“"
#: packages/lib/components/EncryptionConfigScreen/utils.ts:219
msgid "Could not upgrade master key: %s"
@@ -887,18 +888,16 @@ msgstr ""
"besteht."
#: packages/app-desktop/gui/PromptDialog.min.js:235
#, fuzzy
msgid "Create"
msgstr "Erstellt"
msgstr "Erstellen"
#: packages/app-mobile/components/note-list.js:101
msgid "Create a notebook"
msgstr "Notizbuch erstellen"
#: packages/app-desktop/gui/MainScreen/commands/addProfile.ts:9
#, fuzzy
msgid "Create new profile..."
msgstr "Erstellt eine neue Notiz."
msgstr "Neues Profil erstellen..."
#: packages/app-desktop/gui/EditFolderDialog/Dialog.tsx:161
msgid "Create notebook"
@@ -1351,7 +1350,7 @@ msgstr "Notizbuch bearbeiten"
#: packages/app-desktop/commands/editProfileConfig.ts:9
msgid "Edit profile configuration..."
msgstr ""
msgstr "Profilkonfiguration bearbeiten..."
#: packages/app-desktop/gui/NoteContentPropertiesDialog.tsx:138
#: packages/lib/models/Setting.ts:876 packages/lib/models/Setting.ts:877
@@ -1379,11 +1378,11 @@ msgstr "Maximale Breite des Editors"
msgid "Editor monospace font family"
msgstr "Nichtproportionale Schriftfamilie im Editor"
# Je nach Kontext wäre auch "Herausgeber" möglich.
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:100
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:96
#, fuzzy
msgid "Editor: %s"
msgstr "Editor"
msgstr "Editor: %s"
#: packages/app-cli/app/command-ls.js:31
msgid "Either \"text\" or \"json\""
@@ -1697,9 +1696,8 @@ msgid "File system"
msgstr "Dateisystem"
#: packages/app-mobile/components/screens/NoteTagsDialog.js:190
#, fuzzy
msgid "Filter tags"
msgstr "Neue Schlagwörter:"
msgstr "Tags filtern"
#: packages/app-desktop/gui/ExtensionBadge.min.js:10
msgid "Firefox Extension"
@@ -2837,6 +2835,8 @@ msgid ""
"Please click on \"%s\" to proceed, or set the passwords in the \"%s\" list "
"below."
msgstr ""
"Bitte klicke auf „%s“, um fortzufahren, oder trage die Passwörter in die "
"Liste „%s“ unten ein."
#: packages/lib/components/EncryptionConfigScreen/utils.ts:65
msgid ""
@@ -3008,9 +3008,8 @@ msgid "Profile"
msgstr "Profil"
#: packages/app-desktop/gui/MainScreen/commands/addProfile.ts:17
#, fuzzy
msgid "Profile name:"
msgstr "Profil"
msgstr "Profilname:"
#: packages/lib/versionInfo.ts:26
msgid "Profile Version: %s"
@@ -3238,9 +3237,8 @@ msgstr "Alarm speichern"
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:100
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:93
#, fuzzy
msgid "Save as %s"
msgstr "Speichern unter ..."
msgstr "Speichern unter %s"
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:80
msgid "Save as..."
@@ -3615,9 +3613,8 @@ msgid "Switch between note and to-do type"
msgstr "Zwischen Notiz- und Aufgaben-Typ wechseln"
#: packages/app-desktop/gui/MenuBar.tsx:437
#, fuzzy
msgid "Switch profile"
msgstr "Profil exportieren"
msgstr "Profil wechseln"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:105
msgid "Switch to note type"
@@ -3626,9 +3623,8 @@ msgstr "Zu Notiz-Typ wechseln"
#: packages/app-desktop/commands/switchProfile1.ts:7
#: packages/app-desktop/commands/switchProfile2.ts:7
#: packages/app-desktop/commands/switchProfile3.ts:7
#, fuzzy
msgid "Switch to profile %d"
msgstr "Zu Notiz-Typ wechseln"
msgstr "Wechsle zu Profil %d"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:114
msgid "Switch to to-do type"
@@ -3727,7 +3723,7 @@ msgstr "Tabloid"
#: packages/app-mobile/components/screens/NoteTagsDialog.js:179
msgid "tag1, tag2, ..."
msgstr ""
msgstr "tag1, tag2, ..."
#: packages/app-cli/app/command-import.js:52
#: packages/app-desktop/gui/ImportScreen.min.js:73
@@ -3771,6 +3767,8 @@ msgstr ""
msgid ""
"The application did not close properly. Would you like to start in safe mode?"
msgstr ""
"Die Anwendung wurde nicht ordnungsgemäß geschlossen. Im abgesicherten Modus "
"starten?"
#: packages/lib/onedrive-api-node-utils.js:86
msgid ""
@@ -3930,7 +3928,7 @@ msgstr ""
"Der Empfänger konnte nicht von der Liste entfernt werden. Bitte versuche es "
"erneut.\n"
"\n"
"Der Fehler war: \"%s\""
"Der Fehler war: „%s“"
#: packages/app-desktop/gui/MainScreen/MainScreen.tsx:591
msgid ""
@@ -4643,10 +4641,8 @@ msgid "Your data is going to be re-encrypted and synced again."
msgstr "Deine Daten werden neu verschlüsselt und erneut synchronisiert."
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:271
#, fuzzy
msgid "Your password is needed to decrypt some of your data."
msgstr ""
"Dein Master-Passwort ist nötig um einige deiner Daten zu entschlüsseln."
msgstr "Dein Passwort ist nötig, um einige deiner Daten zu entschlüsseln."
#: packages/app-cli/app/command-sync.ts:242
msgid ""

View File

@@ -14,7 +14,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.0\n"
"X-Generator: Poedit 3.0.1\n"
#: packages/app-mobile/components/screens/ConfigScreen.tsx:560
msgid "- Camera: to allow taking a picture and attaching it to a note."
@@ -111,7 +111,7 @@ msgstr "%s (%s) nem tölthető fel: %s"
#: packages/app-desktop/gui/MainScreen/MainScreen.tsx:618
msgid "%s (%s) would like to share a notebook with you."
msgstr ""
msgstr "%s (%s) szeretne egy jegyzetfüzetet megosztani önnel."
#: packages/lib/services/ReportService.ts:262
msgid "%s (%s): %s"
@@ -214,16 +214,17 @@ msgstr ""
#: packages/app-desktop/gui/MainScreen/MainScreen.tsx:619
msgid "Accept"
msgstr ""
msgstr "Elfogadás"
#: packages/app-desktop/gui/ResourceScreen.tsx:95
#, fuzzy
msgid "Action"
msgstr ""
msgstr "Akció"
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:183
#, fuzzy
msgid "Actions"
msgstr "Beállítások"
msgstr "Akciók"
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:178
msgid "Active"
@@ -257,11 +258,11 @@ msgstr "Hozzáadás szótárhoz"
#: packages/server/src/services/MustacheService.ts:156
#: packages/server/src/services/MustacheService.ts:278
msgid "Admin"
msgstr ""
msgstr "Adminisztrátor"
#: packages/server/src/routes/admin/dashboard.ts:10
msgid "Admin dashboard"
msgstr ""
msgstr "Adminisztrátori felület"
#: packages/app-desktop/gui/ClipperConfigScreen.min.js:189
#: packages/app-desktop/gui/ClipperConfigScreen.tsx:147
@@ -289,7 +290,7 @@ msgstr "Megjeleníti a beállítatlan és rejtett config változókat."
#: packages/app-desktop/gui/ShareNoteDialog.tsx:203
#, fuzzy
msgid "Also publish linked notes"
msgstr "Megosztás"
msgstr "Linkelt jegyzetek megosztása"
#: packages/lib/models/Setting.ts:713
msgid "Always"
@@ -344,9 +345,8 @@ msgstr "Csatolja az adott fájlt a jegyzethez."
#: packages/server/src/models/UserModel.ts:215
#: packages/server/src/models/UserModel.ts:232
#, fuzzy
msgid "attachment"
msgstr "Csatolmányok"
msgstr "csatolmány"
#: packages/lib/models/Resource.ts:423
msgid "Attachment conflict: \"%s\""
@@ -399,9 +399,8 @@ msgid "Auto-pair braces, parenthesis, quotations, etc."
msgstr "Auto-párosítása az idézőjeleknek, zárójeleknek, stb."
#: packages/lib/models/Setting.ts:1262
#, fuzzy
msgid "Automatically check for updates"
msgstr "Frissítés keresése..."
msgstr "Automatikus frissítés keresés"
#: packages/lib/models/Setting.ts:824
msgid "Automatically switch theme to match system theme"
@@ -688,9 +687,8 @@ msgid "Command palette"
msgstr "Parancs paletta"
#: packages/app-desktop/gui/MainScreen/commands/commandPalette.ts:7
#, fuzzy
msgid "Command palette..."
msgstr "Parancs paletta"
msgstr "Parancs paletta"
#: packages/app-desktop/gui/NotePropertiesDialog.min.js:31
msgid "Completed"
@@ -701,9 +699,8 @@ msgid "Completed decryption."
msgstr "Visszafejtés befejeződött."
#: packages/lib/Synchronizer.ts:190
#, fuzzy
msgid "Completed: %s (%s)"
msgstr "Befejeződött: %s"
msgstr "Befejeződött: %s (%s)"
#: packages/server/src/services/TaskService.ts:37
msgid "Compress old changes"
@@ -724,9 +721,8 @@ msgid "Confirm password:"
msgstr "Jelszó ismétlése:"
#: packages/app-desktop/gui/Root.tsx:147
#, fuzzy
msgid "Confirmation"
msgstr "Beállítások"
msgstr "Megerősítés"
#: packages/lib/services/ReportService.ts:284
msgid "Conflicted: %d"
@@ -737,13 +733,12 @@ msgid "Conflicts"
msgstr "Ütközés"
#: packages/lib/models/Resource.ts:407
#, fuzzy
msgid "Conflicts (attachments)"
msgstr "Jegyzet csatolmányok"
msgstr "Ütközés (jegyzet csatolmányok)"
#: packages/app-desktop/gui/ConfigScreen/controls/plugins/SearchPlugins.tsx:108
msgid "Content provided by %s"
msgstr ""
msgstr "Tartalom %s által biztosítva"
#: packages/app-mobile/components/screens/Note.tsx:940
msgid "Convert to note"
@@ -767,14 +762,12 @@ msgstr "Dev mód parancs másolása vágólapra"
#: packages/app-desktop/gui/Sidebar/Sidebar.tsx:355
#: packages/app-desktop/gui/Sidebar/Sidebar.tsx:369
#: packages/app-desktop/gui/utils/NoteListUtils.ts:139
#, fuzzy
msgid "Copy external link"
msgstr "Külső szerkesztés leállítása"
msgstr "Külső link másolása"
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:140
#, fuzzy
msgid "Copy image"
msgstr "Token másolása"
msgstr "Kép másolása"
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:178
msgid "Copy Link Address"
@@ -815,22 +808,20 @@ msgstr ""
"Kérem próbálja újra."
#: packages/lib/JoplinServerApi.ts:92
#, fuzzy
msgid ""
"Could not connect to Joplin Server. Please check the Synchronisation options "
"in the config screen. Full error was:\n"
"\n"
"%s"
msgstr ""
"Nem lehet kapcsolódni a Joplin Nextcloud applikációhoz. Kérem ellenőrizze a "
"beállításokat a Szinkronizáció beállításoknál. Ez volt a tejles hiba:\n"
"Sikertelen kapcsolódás a Joplin szerverhez. Kérem ellenőrizze a "
"Szinkronizáció beállításokat a beállításoknál. Ez volt a teljes hiba:\n"
"\n"
"%s"
#: packages/app-desktop/gui/ConfigScreen/controls/plugins/PluginsStates.tsx:302
#, fuzzy
msgid "Could not connect to plugin repository."
msgstr "Bővítmény nem telepíthető: %s"
msgstr "Sikertelen kapcsolódás a plugin adattárhoz."
#: packages/app-desktop/InteropServiceHelper.ts:190
msgid "Could not export notes: %s"
@@ -859,28 +850,24 @@ msgid ""
msgstr ""
#: packages/app-desktop/gui/PromptDialog.min.js:235
#, fuzzy
msgid "Create"
msgstr "Létrehozva"
msgstr "Létrehozás"
#: packages/app-mobile/components/note-list.js:101
msgid "Create a notebook"
msgstr "Jegyzetfüzet létrehozása"
#: packages/app-desktop/gui/MainScreen/commands/addProfile.ts:9
#, fuzzy
msgid "Create new profile..."
msgstr "Új jegyzet létrehozása."
msgstr "Új profil létrehozása."
#: packages/app-desktop/gui/EditFolderDialog/Dialog.tsx:161
#, fuzzy
msgid "Create notebook"
msgstr "Jegyzetfüzet létrehozása"
#: packages/server/src/routes/admin/users.ts:171
#, fuzzy
msgid "Create user"
msgstr "Létrehozva: %s"
msgstr "Új felhasználó létrehozása"
#: packages/app-desktop/gui/NotePropertiesDialog.min.js:29
msgid "Created"
@@ -903,9 +890,8 @@ msgid "Created remote items: %d."
msgstr "Helyben létrehozott elemek: %d."
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:152
#, fuzzy
msgid "Created: "
msgstr "Létrehozva: %s"
msgstr "Létrehozva: "
#: packages/app-cli/app/command-import.js:48
#: packages/app-desktop/gui/ImportScreen.min.js:69
@@ -977,11 +963,11 @@ msgstr ""
#: packages/app-mobile/components/screens/ConfigScreen.tsx:620
msgid "Database v%s"
msgstr ""
msgstr "Adatbázis v%s"
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:180
msgid "Date"
msgstr ""
msgstr "Dátum"
#: packages/lib/models/Setting.ts:766
msgid "Date format"
@@ -1030,14 +1016,12 @@ msgid "Delete attachment \"%s\"?"
msgstr "\"%s\" csatolmány törlése ?"
#: packages/server/src/services/TaskService.ts:36
#, fuzzy
msgid "Delete expired sessions"
msgstr "Képletek engedélyezése"
msgstr "Lejárt munkamenetek törlése"
#: packages/server/src/services/TaskService.ts:31
#, fuzzy
msgid "Delete expired tokens"
msgstr "%d jegyzetek törlése?"
msgstr "Lejárt tokenek törlése"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:88
msgid "Delete line"
@@ -1127,9 +1111,8 @@ msgid "Directory to synchronise with (absolute path)"
msgstr "Könyvtár amivel szinkronizálunk (abszolút útvonal)"
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:156
#, fuzzy
msgid "Disable"
msgstr "Letiltva"
msgstr "Letiltás"
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:237
#: packages/app-mobile/components/screens/encryption-config.tsx:281
@@ -1291,9 +1274,8 @@ msgid "Duplicate"
msgstr "Duplikált"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:92
#, fuzzy
msgid "Duplicate line"
msgstr "Duplikált"
msgstr "Duplikált sor"
#: packages/app-cli/app/command-cp.js:13
msgid ""
@@ -1353,9 +1335,8 @@ msgstr "Szerkesztő betű család"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:100
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:96
#, fuzzy
msgid "Editor: %s"
msgstr "Szerkesztő"
msgstr "Szerkesztő: %s"
#: packages/app-cli/app/command-ls.js:31
msgid "Either \"text\" or \"json\""
@@ -1368,12 +1349,12 @@ msgstr "Emacs"
#: packages/app-desktop/gui/SyncWizard/Dialog.tsx:236
#: packages/server/src/routes/admin/emails.ts:128
msgid "Email"
msgstr ""
msgstr "Email"
#: packages/server/src/routes/admin/emails.ts:112
#: packages/server/src/services/MustacheService.ts:127
msgid "Emails"
msgstr ""
msgstr "Emailek"
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:194
msgid "emphasised text"
@@ -1518,19 +1499,16 @@ msgstr "Titkosítás: %s"
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:172
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:271
#, fuzzy
msgid "Encryption keys"
msgstr "Titkosítás:"
msgstr "Titkosítási kulcsok"
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:249
#, fuzzy
msgid "Encryption:"
msgstr "Titkosítás"
msgstr "Titkosítás:"
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:247
#, fuzzy
msgid "End-to-end encryption"
msgstr "Titkosítás engedélyezése"
msgstr "End-to-end titkosítás"
#: packages/app-mobile/components/screens/dropbox-login.js:66
msgid "Enter code here"
@@ -1573,9 +1551,8 @@ msgstr ""
"megfelelőek-e és a szinkronizációs cél elérhető. A hiba a következő:"
#: packages/app-mobile/components/screens/log.js:117
#, fuzzy
msgid "Errors only"
msgstr "Hiba"
msgstr "Csak hibák"
#: packages/lib/services/interop/InteropService.ts:88
msgid "Evernote Export File (as HTML)"
@@ -1655,14 +1632,13 @@ msgid "Feature flags"
msgstr ""
#: packages/lib/Synchronizer.ts:188
#, fuzzy
msgid "Fetched items: %d/%d."
msgstr "Fetched elemek: %d/%d."
msgstr "Letöltött elemek: %d/%d."
#: packages/app-desktop/gui/Sidebar/Sidebar.tsx:749
#: packages/app-mobile/components/side-menu-content.js:346
msgid "Fetching resources: %d/%d"
msgstr "Erőforrások lekérése: %d/%d."
msgstr "Erőforrások lekérése: %d/%d"
#: packages/lib/services/interop/types.ts:126
msgid "File"
@@ -1675,7 +1651,7 @@ msgstr "Fájl-rendszer"
#: packages/app-mobile/components/screens/NoteTagsDialog.js:190
#, fuzzy
msgid "Filter tags"
msgstr "Új tag-ek:"
msgstr "Tag-ek filterezése"
#: packages/app-desktop/gui/ExtensionBadge.min.js:10
msgid "Firefox Extension"
@@ -1742,13 +1718,12 @@ msgid "Found: %d."
msgstr "Találtam: %d."
#: packages/app-mobile/components/screens/ConfigScreen.tsx:626
#, fuzzy
msgid "FTS enabled: %d"
msgstr "Törölni: %d"
msgstr "FTS engedélyezve: %d"
#: packages/app-desktop/checkForUpdates.ts:199
msgid "Full changelog"
msgstr ""
msgstr "Teljes változási napló"
#: packages/lib/models/Setting.ts:2295
#: packages/server/src/services/MustacheService.ts:108
@@ -1756,9 +1731,8 @@ msgid "General"
msgstr "Általános"
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:252
#, fuzzy
msgid "Generated"
msgstr "Általános"
msgstr "Generált"
#: packages/app-desktop/gui/ShareNoteDialog.tsx:184
msgid "Generating link..."
@@ -1791,9 +1765,8 @@ msgid "Goto Anything..."
msgstr "Ugrás bárhova..."
#: packages/app-desktop/gui/Root.tsx:172
#, fuzzy
msgid "Grant authorisation"
msgstr "Hitelesítő token:"
msgstr "Engedély megadása"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:73
msgid "Heading"
@@ -1808,8 +1781,9 @@ msgid "Hide %s"
msgstr "%s elrejtése"
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:172
#, fuzzy
msgid "Hide disabled keys"
msgstr ""
msgstr "Letiltott karakterek elrejtése"
#: packages/app-desktop/gui/KeymapConfig/utils/getLabel.ts:22
msgid "Hide Joplin"
@@ -1817,7 +1791,7 @@ msgstr "Joplin elrejtése"
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/utils/setupToolbarButtons.ts:14
msgid "Highlight"
msgstr ""
msgstr "Kiemelés"
#: packages/server/src/services/MustacheService.ts:140
#: packages/server/src/services/MustacheService.ts:271
@@ -1842,7 +1816,7 @@ msgstr "Hiperlink"
#: packages/app-desktop/gui/EditFolderDialog/Dialog.tsx:136
msgid "Icon"
msgstr ""
msgstr "Ikon"
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:179
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:329
@@ -1866,7 +1840,7 @@ msgstr "TLS bizonyítvány hibák figyelmen kívül hagyása"
#: packages/app-desktop/gui/EditFolderDialog/Dialog.tsx:102
msgid "Images"
msgstr ""
msgstr "Képek"
#: packages/app-desktop/gui/KeymapConfig/KeymapConfigScreen.tsx:170
#: packages/app-desktop/gui/MenuBar.tsx:536
@@ -1978,7 +1952,7 @@ msgstr "Beágyazott kód"
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/utils/setupToolbarButtons.ts:24
msgid "Insert"
msgstr ""
msgstr "Beszúrás"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:83
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/TinyMCE.tsx:623
@@ -2026,9 +2000,8 @@ msgid "Invalid option value: \"%s\". Possible values are: %s."
msgstr "Érvénytelen opció érték: \"%s\". Lehetséges értékek: %s."
#: packages/app-cli/app/command-e2ee.ts:46
#, fuzzy
msgid "Invalid password"
msgstr "Érvénytelen válasz: %s"
msgstr "Érvénytelen jelszó: %s"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:38
msgid "Italic"
@@ -2041,7 +2014,7 @@ msgstr "Elem \"%s\" nem tölthető le: %s"
#: packages/server/src/services/MustacheService.ts:148
#: packages/server/src/services/MustacheService.ts:273
msgid "Items"
msgstr ""
msgstr "Elemek"
#: packages/lib/services/ReportService.ts:208
msgid "Items that cannot be decrypted"
@@ -2058,19 +2031,16 @@ msgid ""
msgstr ""
#: packages/lib/SyncTargetJoplinCloud.ts:30
#, fuzzy
msgid "Joplin Cloud"
msgstr "Joplin Forum"
msgstr "Joplin Cloud"
#: packages/lib/models/Setting.ts:684
#, fuzzy
msgid "Joplin Cloud email"
msgstr "Joplin Szerver"
msgstr "Joplin Cloud email"
#: packages/lib/models/Setting.ts:695
#, fuzzy
msgid "Joplin Cloud password"
msgstr "Joplin Szerver jelszó"
msgstr "Joplin Cloud jelszó"
#: packages/lib/services/interop/InteropService.ts:107
#: packages/lib/services/interop/InteropService.ts:72
@@ -2098,9 +2068,8 @@ msgid "Joplin Server"
msgstr "Joplin Szerver"
#: packages/lib/models/Setting.ts:645
#, fuzzy
msgid "Joplin Server email"
msgstr "Joplin Szerver"
msgstr "Joplin Server email"
#: packages/lib/models/Setting.ts:656
msgid "Joplin Server password"
@@ -2180,9 +2149,8 @@ msgid "Layout button sequence"
msgstr "Elrendezés gomb sorrend"
#: packages/app-desktop/gui/MainScreen/commands/leaveSharedFolder.ts:10
#, fuzzy
msgid "Leave notebook..."
msgstr "Jegyzet megosztása..."
msgstr "Jegyzet elhagyása…"
#: packages/lib/models/Setting.ts:1307
msgid "Legal"
@@ -2240,11 +2208,11 @@ msgstr "Napló"
#: packages/app-desktop/gui/SyncWizard/Dialog.tsx:240
msgid "Login"
msgstr ""
msgstr "Belépés"
#: packages/app-desktop/gui/SyncWizard/Dialog.tsx:235
msgid "Login below."
msgstr ""
msgstr "Belépés."
#: packages/app-mobile/components/screens/dropbox-login.js:55
msgid "Login with Dropbox"
@@ -2256,11 +2224,11 @@ msgstr "Belép OneDrive-al"
#: packages/server/src/services/MustacheService.ts:277
msgid "Logout"
msgstr ""
msgstr "Kilépés"
#: packages/server/src/services/MustacheService.ts:152
msgid "Logs"
msgstr ""
msgstr "Log-ok"
#: packages/app-desktop/gui/MenuBar.tsx:780
#: packages/app-mobile/components/screens/ConfigScreen.tsx:578
@@ -2268,14 +2236,12 @@ msgid "Make a donation"
msgstr "Adakozzon"
#: packages/app-desktop/gui/MasterPasswordDialog/Dialog.tsx:217
#, fuzzy
msgid "Manage master password"
msgstr "Adja meg a mester jelszót:"
msgstr "Mester jelszó kezelése"
#: packages/lib/commands/openMasterPasswordDialog.ts:6
#, fuzzy
msgid "Manage master password..."
msgstr "Adja meg a mester jelszót:"
msgstr "Mester jelszó kezelése…"
#: packages/app-desktop/gui/ConfigScreen/controls/plugins/PluginsStates.tsx:314
msgid "Manage your plugins"
@@ -2304,7 +2270,7 @@ msgstr "Markdown"
#: packages/lib/services/interop/InteropService.ts:119
#: packages/lib/services/interop/InteropService.ts:66
msgid "Markdown + Front Matter"
msgstr ""
msgstr "Markdown + Front Matter"
#: packages/app-cli/app/command-done.js:14
msgid "Marks a to-do as done."
@@ -2325,24 +2291,21 @@ msgstr "Mester Kulcs %s"
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:133
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:277
#: packages/app-mobile/components/screens/encryption-config.tsx:102
#, fuzzy
msgid "Master password"
msgstr "Adja meg a mester jelszót:"
msgstr "Mester jelszó"
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:278
#: packages/app-mobile/components/screens/encryption-config.tsx:211
#, fuzzy
msgid "Master password:"
msgstr "Adja meg a mester jelszót:"
msgstr "Mester jelszó:"
#: packages/lib/models/Setting.ts:738
msgid "Max concurrent connections"
msgstr "Maximális konkurrens kapcsolat"
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:324
#, fuzzy
msgid "Missing keys"
msgstr "Hiányzó Mester Kulcsok"
msgstr "Hiányzó kulcsok"
#: packages/app-mobile/components/screens/encryption-config.tsx:271
msgid "Missing Master Keys"
@@ -2354,7 +2317,7 @@ msgstr "Szükséges paraméter hiányzik: %s"
#: packages/app-mobile/components/side-menu-content.js:367
msgid "Mobile data - auto-sync disabled"
msgstr ""
msgstr "Mobil adat - auto-szinkronizáció letiltva"
#: packages/app-desktop/gui/MainScreen/MainScreen.tsx:610
msgid "More info"
@@ -2369,26 +2332,25 @@ msgid "More than one item match \"%s\". Please narrow down your query."
msgstr "Több mint egy elem egyezik ezzel \"%s\". Kérem szűkítse a lekérdezést."
#: packages/app-mobile/components/screen-header.js:453
#, fuzzy
msgid "Move %d notes to notebook \"%s\"?"
msgstr "Jegyzetfüzetbe mozgatás"
msgstr ""
#: packages/app-desktop/gui/MainScreen/commands/moveToFolder.ts:8
msgid "Move to notebook"
msgstr "Jegyzetfüzetbe mozgatás"
msgstr "Jegyzetfüzetbe áthelyezés"
#: packages/app-desktop/gui/MainScreen/commands/moveToFolder.ts:32
msgid "Move to notebook:"
msgstr "Jegyzetfüzetbe mozgatás:"
msgstr "Jegyzetfüzetbe áthelyezés:"
#: packages/app-mobile/components/screen-header.js:402
#, fuzzy
msgid "Move to notebook..."
msgstr "Jegyzetfüzetbe mozgatás"
msgstr "Jegyzetfüzetbe áthelyezés…"
#: packages/app-cli/app/command-mv.js:14
#, fuzzy
msgid "Moves the notes matching <note> to [notebook]."
msgstr "Egyező jegyzetek <note> mozgása [notebook]-ba."
msgstr "Egyező jegyzetek <note> áthelyezése [notebook]-ba."
#: packages/app-cli/app/app.js:138 packages/app-cli/app/cli-utils.js:161
msgid "n"
@@ -2520,7 +2482,7 @@ msgstr "Nincs letöltve"
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:252
msgid "Not generated"
msgstr ""
msgstr "Nem generált"
#: packages/app-desktop/gui/NoteEditor/NoteTitle/NoteTitleBar.tsx:110
#: packages/server/src/models/UserModel.ts:215
@@ -2592,14 +2554,12 @@ msgid ""
msgstr ""
#: packages/app-desktop/gui/MenuBar.tsx:750
#, fuzzy
msgid "Note&book"
msgstr "Jegyzetfüzetek"
msgstr ""
#: packages/lib/models/Setting.ts:2299
#, fuzzy
msgid "Notebook"
msgstr "Jegyzetfüzetek"
msgstr "Jegyzetfüzet"
#: packages/lib/models/Setting.ts:1453
msgid "Notebook list growth factor"
@@ -2620,9 +2580,8 @@ msgstr "Jegyzetfüzet nem nevezhető \"%s\"-nak, az egy fenntartott cím."
#: packages/app-desktop/gui/MainScreen/commands/toggleNotesSortOrderField.ts:8
#: packages/app-desktop/gui/MainScreen/commands/toggleNotesSortOrderReverse.ts:9
#, fuzzy
msgid "Notes"
msgstr "Megjegyzés"
msgstr "Jegyzetek"
#: packages/lib/models/Setting.ts:2315
msgid "Notes and settings are stored in: %s"
@@ -2702,7 +2661,7 @@ msgstr "Adatmappa megnyitása"
#: packages/lib/models/Setting.ts:413
msgid "Open Sync Wizard..."
msgstr ""
msgstr "Sync-varázsló megnyitása…"
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:73
msgid "Open..."
@@ -2721,14 +2680,12 @@ msgid "Options"
msgstr "Beállítások"
#: packages/app-desktop/gui/SyncWizard/Dialog.tsx:235
#, fuzzy
msgid "Or create an account."
msgstr "Új jegyzet létrehozása."
msgstr "Vagy hozzon létre új felhasználót."
#: packages/app-desktop/gui/MenuBar.tsx:400
#, fuzzy
msgid "Other applications..."
msgstr "Kilép a programból."
msgstr "Más applikációk…"
#: packages/app-cli/app/command-import.js:27
msgid "Output format: %s"
@@ -2939,12 +2896,11 @@ msgstr ""
#: packages/server/src/routes/admin/users.ts:168
msgid "Profile"
msgstr ""
msgstr "Profil"
#: packages/app-desktop/gui/MainScreen/commands/addProfile.ts:17
#, fuzzy
msgid "Profile name:"
msgstr "Profil verzió: %s"
msgstr "Profil név:"
#: packages/lib/versionInfo.ts:26
msgid "Profile Version: %s"
@@ -2956,20 +2912,19 @@ msgstr "Tulajdonságok"
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:252
msgid "Public-private key pair:"
msgstr ""
msgstr "Nyilvános-titkos kulcs pár:"
#: packages/app-desktop/gui/MainScreen/commands/showShareNoteDialog.ts:6
#, fuzzy
msgid "Publish note..."
msgstr "Jegyzet megosztása..."
msgstr "Jegyzet publikálálása…"
#: packages/app-desktop/gui/ShareNoteDialog.tsx:211
msgid "Publish Notes"
msgstr ""
msgstr "Jegyzetek Publikálálása"
#: packages/app-desktop/gui/SyncWizard/Dialog.tsx:178
msgid "Publish notes to the internet"
msgstr ""
msgstr "Jegyzetek publikálálása az internetre"
#: packages/app-desktop/app.ts:177
#: packages/app-desktop/gui/KeymapConfig/utils/getLabel.ts:16
@@ -3027,7 +2982,7 @@ msgstr "Frissítés"
#: packages/app-desktop/gui/MainScreen/MainScreen.tsx:621
#: packages/app-desktop/gui/Root.tsx:173
msgid "Reject"
msgstr ""
msgstr "Elutasít"
#: packages/app-desktop/gui/Sidebar/Sidebar.tsx:252
msgid "Remove"
@@ -3062,13 +3017,12 @@ msgstr "Átnevezi az adott <item> (jegyzet vagy jegyzetfüzet) erre <name>."
#: packages/app-desktop/gui/ClipperConfigScreen.min.js:222
#: packages/app-desktop/gui/ClipperConfigScreen.tsx:158
msgid "Renew token"
msgstr ""
msgstr "Token megújítása"
#: packages/app-desktop/gui/MasterPasswordDialog/Dialog.tsx:217
#: packages/app-desktop/gui/MasterPasswordDialog/Dialog.tsx:218
#, fuzzy
msgid "Reset master password"
msgstr "Adja meg a mester jelszót:"
msgstr "Mester jelszó visszaállítása"
#: packages/app-cli/app/command-import.js:51
#: packages/app-desktop/gui/ImportScreen.min.js:72
@@ -3128,31 +3082,27 @@ msgstr ""
#: packages/lib/SyncTargetAmazonS3.js:28
msgid "S3"
msgstr ""
msgstr "S3"
#: packages/lib/models/Setting.ts:594
#, fuzzy
msgid "S3 access key"
msgstr "AWS key"
msgstr "S3 hozzáférési kulcs"
#: packages/lib/models/Setting.ts:554
#, fuzzy
msgid "S3 bucket"
msgstr "AWS S3 bucket"
msgstr "S3 bucket"
#: packages/lib/models/Setting.ts:583
msgid "S3 region"
msgstr ""
msgstr "S3 régió"
#: packages/lib/models/Setting.ts:605
#, fuzzy
msgid "S3 secret key"
msgstr "AWS secret"
msgstr "S3 titkos kulcs"
#: packages/lib/models/Setting.ts:569
#, fuzzy
msgid "S3 URL"
msgstr "AWS S3 URL"
msgstr "S3 URL"
#: packages/app-desktop/gui/MainScreen/MainScreen.tsx:585
msgid ""
@@ -3176,7 +3126,7 @@ msgstr "Riasztás mentése"
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:93
#, fuzzy
msgid "Save as %s"
msgstr "Mentés másként..."
msgstr "Mentés mint %s"
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:80
msgid "Save as..."
@@ -3225,9 +3175,8 @@ msgid "See the pre-release page for more details: %s"
msgstr "Nézze meg a előzetes kiadás oldalát a részletekért: %s"
#: packages/app-desktop/gui/SyncWizard/Dialog.tsx:266
#, fuzzy
msgid "Select"
msgstr "Minden kiválasztása"
msgstr "Kiválasztás"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:28
msgid "Select all"
@@ -3235,12 +3184,11 @@ msgstr "Minden kiválasztása"
#: packages/app-desktop/gui/EditFolderDialog/Dialog.tsx:140
msgid "Select emoji..."
msgstr ""
msgstr "Emoji kiválasztása…"
#: packages/app-desktop/gui/EditFolderDialog/Dialog.tsx:144
#, fuzzy
msgid "Select file..."
msgstr "Minden kiválasztása"
msgstr "Fájl kiválasztása"
#: packages/app-cli/app/command-server.js:38
msgid "Server is already running on port %d"
@@ -3290,14 +3238,12 @@ msgid "Share"
msgstr "Megosztás"
#: packages/app-desktop/gui/ShareFolderDialog/ShareFolderDialog.tsx:338
#, fuzzy
msgid "Share Notebook"
msgstr "Jegyzetek megosztása"
msgstr "Jegyzetfüzet megosztása"
#: packages/app-desktop/gui/MainScreen/commands/showShareFolderDialog.ts:6
#, fuzzy
msgid "Share notebook..."
msgstr "Jegyzet megosztása..."
msgstr "Jegyzetfüzet megosztása"
#: packages/app-desktop/gui/ShareFolderDialog/ShareFolderDialog.tsx:304
#, fuzzy
@@ -3313,9 +3259,8 @@ msgid "Show Advanced Settings"
msgstr "Speciális beállítások megjelenítése"
#: packages/app-mobile/components/screens/log.js:117
#, fuzzy
msgid "Show all"
msgstr "Napló mutatása"
msgstr "Összes megjelenítése"
#: packages/lib/models/Setting.ts:885
msgid "Show completed to-dos"
@@ -3324,20 +3269,19 @@ msgstr "Mutassa a befejezett to-do-kat"
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:172
#, fuzzy
msgid "Show disabled keys"
msgstr "Speciális beállítások megjelenítése"
msgstr "Tiltott karakterek megjelenítése"
#: packages/lib/models/Setting.ts:867
msgid "Show note counts"
msgstr "Mutassa a jegyzet számot"
msgstr "Jegyzet számok megjelenítése"
#: packages/lib/models/Setting.ts:926
#, fuzzy
msgid "Show sort order buttons"
msgstr "Mutassa a jegyzet számot"
msgstr "Rendszerezési sorrend gombok megjelenítése"
#: packages/lib/models/Setting.ts:1107
msgid "Show tray icon"
msgstr "Mutassa a tálca ikon-t"
msgstr "Tálca ikon megjelenítése"
#: packages/app-desktop/gui/Sidebar/commands/focusElementSideBar.ts:8
msgid "Sidebar"
@@ -3349,7 +3293,7 @@ msgstr "Méret"
#: packages/app-desktop/checkForUpdates.ts:199
msgid "Skip this version"
msgstr ""
msgstr "Verzió átugrása"
#: packages/app-cli/app/command-e2ee.ts:65
msgid "Skipped items: %d (use --retry-failed-items to retry decrypting them)"
@@ -3376,12 +3320,11 @@ msgstr "Néhány elemet nem lehet visszafejteni."
#: packages/app-desktop/gui/MainScreen/MainScreen.tsx:626
msgid "Some items cannot be synchronised."
msgstr "Néhány elemet nem lehet szinkronizálnii."
msgstr "Néhány elemet nem lehet szinkronizálni."
#: packages/app-mobile/components/screen-header.js:472
#, fuzzy
msgid "Some items cannot be synchronised. Press for more info."
msgstr "Néhány elemet nem lehet szinkronizálnii."
msgstr "Néhány elemet nem lehet szinkronizálni. Kattintson több információért."
#: packages/lib/models/Setting.ts:981
msgid "Sort notebooks by"
@@ -3405,9 +3348,8 @@ msgid "Source format: %s"
msgstr "Forrás formátum: %s"
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:151
#, fuzzy
msgid "Source: "
msgstr "Forrás"
msgstr "Forrás: "
#: packages/lib/models/Setting.ts:1400
msgid ""
@@ -3508,7 +3450,7 @@ msgstr "Külső szerkesztés leállítása"
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/utils/setupToolbarButtons.ts:19
msgid "Strikethrough"
msgstr ""
msgstr "Áthúzott"
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:193
msgid "strong text"
@@ -3521,7 +3463,7 @@ msgstr "Elküld"
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/utils/setupToolbarButtons.ts:36
msgid "Subscript"
msgstr ""
msgstr "Alsó index"
#: packages/lib/components/shared/config-shared.js:69
msgid "Success! Synchronisation configuration appears to be correct."
@@ -3529,7 +3471,7 @@ msgstr "Siker! Szinkronizációs beállítás jónak tűnik."
#: packages/app-desktop/gui/NoteEditor/NoteBody/TinyMCE/utils/setupToolbarButtons.ts:30
msgid "Superscript"
msgstr ""
msgstr "Felső index"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:124
msgid "Swap line down"
@@ -3544,9 +3486,8 @@ msgid "Switch between note and to-do type"
msgstr "Váltás jegyzet és todo típus között"
#: packages/app-desktop/gui/MenuBar.tsx:437
#, fuzzy
msgid "Switch profile"
msgstr "Profil exportálása"
msgstr "Profil váltása"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:105
msgid "Switch to note type"
@@ -3555,9 +3496,8 @@ msgstr "Váltás jegyzet típusra"
#: packages/app-desktop/commands/switchProfile1.ts:7
#: packages/app-desktop/commands/switchProfile2.ts:7
#: packages/app-desktop/commands/switchProfile3.ts:7
#, fuzzy
msgid "Switch to profile %d"
msgstr "Váltás jegyzet típusra"
msgstr "Váltás a %d profilra"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:114
msgid "Switch to to-do type"
@@ -3598,9 +3538,8 @@ msgid "Sync Version: %s"
msgstr "Szinkronizáció verzió: %s"
#: packages/app-desktop/gui/SyncWizard/Dialog.tsx:177
#, fuzzy
msgid "Sync your notes"
msgstr "Jegyzetek rendezése"
msgstr "Jegyzetek szinkronizálása"
#: packages/lib/models/Setting.ts:2296
msgid "Synchronisation"
@@ -3646,7 +3585,6 @@ msgid "Synchronising..."
msgstr "Szinkronizálás..."
#: packages/app-desktop/gui/ShareFolderDialog/ShareFolderDialog.tsx:303
#, fuzzy
msgid "Synchronizing..."
msgstr "Szinkronizálás..."
@@ -3656,7 +3594,7 @@ msgstr "Tabloid"
#: packages/app-mobile/components/screens/NoteTagsDialog.js:179
msgid "tag1, tag2, ..."
msgstr ""
msgstr "tag1, tag2, …"
#: packages/app-cli/app/command-import.js:52
#: packages/app-desktop/gui/ImportScreen.min.js:73
@@ -3678,7 +3616,7 @@ msgstr "Fotó készítése"
#: packages/server/src/services/MustacheService.ts:123
#: packages/server/src/services/MustacheService.ts:275
msgid "Tasks"
msgstr ""
msgstr "Feladatok"
#: packages/lib/models/Setting.ts:1299
msgid "Text editor command"
@@ -3847,7 +3785,7 @@ msgstr ""
#: packages/lib/models/Tag.ts:204
msgid "The tag \"%s\" already exists. Please choose a different name."
msgstr ""
msgstr "A tag “%s” már létezik. Kérem válasszon másik nevet."
#: packages/lib/models/Setting.ts:426
msgid ""
@@ -4032,9 +3970,8 @@ msgstr ""
"lépéseket:"
#: packages/lib/components/EncryptionConfigScreen/utils.ts:54
#, fuzzy
msgid "To continue, please enter your master password below."
msgstr "Adja meg a mester jelszót:"
msgstr "A folytatáshoz adja meg a mester jelszót."
#: packages/app-cli/app/app-gui.js:452
msgid "To delete a tag, untag the associated notes."
@@ -4141,7 +4078,7 @@ msgstr "Összes: %d/%d"
#: packages/app-desktop/gui/ConfigScreen/controls/plugins/PluginsStates.tsx:302
msgid "Try again"
msgstr ""
msgstr "Próbálja újra"
#: packages/app-cli/app/command-help.js:71
msgid ""
@@ -4228,9 +4165,8 @@ msgstr "Frissítés"
#: packages/server/src/routes/admin/users.ts:171
#: packages/server/src/routes/index/users.ts:89
#, fuzzy
msgid "Update profile"
msgstr "Profil exportálása"
msgstr "Profil frissítése"
#: packages/server/src/services/TaskService.ts:32
#, fuzzy
@@ -4256,9 +4192,8 @@ msgid "Updated remote items: %d."
msgstr "Frissített távoli elemek: %d."
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:152
#, fuzzy
msgid "Updated: "
msgstr "Frissített: %s"
msgstr "Frissített: "
#: packages/app-cli/app/command-import.js:49
#: packages/app-desktop/gui/ImportScreen.min.js:70
@@ -4339,12 +4274,11 @@ msgstr ""
#: packages/server/src/services/MustacheService.ts:115
#: packages/server/src/services/MustacheService.ts:272
msgid "Users"
msgstr ""
msgstr "Felhasználók"
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:182
#, fuzzy
msgid "Valid"
msgstr "Érvénytelen"
msgstr "Érvényes"
#: packages/app-desktop/gui/NoteList/NoteList.tsx:167
msgid "View"

View File

@@ -294,9 +294,8 @@ msgid "Also displays unset and hidden config variables."
msgstr "未設定または非表示の設定項目も表示します。"
#: packages/app-desktop/gui/ShareNoteDialog.tsx:203
#, fuzzy
msgid "Also publish linked notes"
msgstr "ノート公開を停止"
msgstr "リンクされたノート公開する"
#: packages/lib/models/Setting.ts:713
msgid "Always"
@@ -377,7 +376,7 @@ msgid ""
"more details: %s"
msgstr ""
"注意: この場所を変更する際は、同期する前に新しい場所にすべての内容をコピーし"
"ておきましょう。そうしないとすべてのファイルが削除されてまいます! 詳しくは"
"ておきましょう。そうしないとすべてのファイルが削除されてまいます! 詳しくは"
"次のFAQをご覧ください: %s"
#: packages/app-cli/app/command-sync.ts:82
@@ -476,7 +475,7 @@ msgstr "中止中...お待ちください。"
#: packages/lib/shim-init-node.js:242
msgid "Cannot access %s"
msgstr "%sにアクセスできません"
msgstr "%s にアクセスできません"
#: packages/app-cli/app/base-command.js:15
msgid "Cannot change encrypted item"
@@ -512,7 +511,7 @@ msgstr "ノートをノートブック \"%s\" にコピーできません"
#: packages/lib/services/interop/InteropService.ts:266
#: packages/lib/services/interop/InteropService.ts:284
msgid "Cannot find \"%s\"."
msgstr "\"%s\"は見つかりませんでした。"
msgstr "\"%s\" は見つかりませんでした。"
#: packages/app-cli/app/command-sync.ts:182
msgid "Cannot initialise synchroniser."
@@ -520,11 +519,13 @@ msgstr "同期プロセスを初期化できませんでした。"
#: packages/lib/services/interop/InteropService.ts:208
msgid "Cannot load \"%s\" module for format \"%s\" and output \"%s\""
msgstr "\"%s\" モジュール (\"%s / %s\" フォーマット用) を読み込めません"
msgstr ""
"\"%s\" フォーマットと \"%s\" 出力用の \"%s\" モジュールを読み込めません"
#: packages/lib/services/interop/InteropService.ts:234
msgid "Cannot load \"%s\" module for format \"%s\" and target \"%s\""
msgstr "\"%s\" モジュール (\"%s / %s\" フォーマット用) を読み込めません"
msgstr ""
"\"%s\" フォーマットと\" %s\" ターゲット用の \"%s\" モジュールを読み込めません"
#: packages/lib/models/Note.ts:538
msgid "Cannot move note to \"%s\" notebook"
@@ -532,7 +533,7 @@ msgstr "ノートをノートブック \"%s\" に移動できません"
#: packages/lib/models/Folder.ts:699
msgid "Cannot move notebook to this location"
msgstr "ノートをノートブック \"%s\" に移動できません"
msgstr "ノートブックをこの場所に移動できません"
#: packages/lib/onedrive-api.ts:408
msgid ""
@@ -860,18 +861,16 @@ msgstr ""
"ネット接続を確認してから再度お試しください。"
#: packages/app-desktop/gui/PromptDialog.min.js:235
#, fuzzy
msgid "Create"
msgstr "作成日時"
msgstr "作成"
#: packages/app-mobile/components/note-list.js:101
msgid "Create a notebook"
msgstr "ノートブックを作成します"
#: packages/app-desktop/gui/MainScreen/commands/addProfile.ts:9
#, fuzzy
msgid "Create new profile..."
msgstr "あたらしいノートを作成します。"
msgstr "あたらしいプロファイルを作成..."
#: packages/app-desktop/gui/EditFolderDialog/Dialog.tsx:161
msgid "Create notebook"
@@ -1078,7 +1077,7 @@ msgstr "プラグイン \"%s\" を削除しますか?"
#: packages/lib/models/Note.ts:767
msgid "Delete these %d notes?"
msgstr "ノート \"%d\" を削除しますか?"
msgstr "これら %d のノートを削除しますか?"
#: packages/app-desktop/gui/ShareFolderDialog/ShareFolderDialog.tsx:221
msgid ""
@@ -1316,7 +1315,7 @@ msgstr "ノートブックの編集"
#: packages/app-desktop/commands/editProfileConfig.ts:9
msgid "Edit profile configuration..."
msgstr ""
msgstr "プロファイル設定を編集..."
#: packages/app-desktop/gui/NoteContentPropertiesDialog.tsx:138
#: packages/lib/models/Setting.ts:876 packages/lib/models/Setting.ts:877
@@ -1346,9 +1345,8 @@ msgstr "エディターの等幅フォントファミリー"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:100
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:96
#, fuzzy
msgid "Editor: %s"
msgstr "エディター"
msgstr "エディター: %s"
#: packages/app-cli/app/command-ls.js:31
msgid "Either \"text\" or \"json\""
@@ -1662,9 +1660,8 @@ msgid "File system"
msgstr "ファイルシステム"
#: packages/app-mobile/components/screens/NoteTagsDialog.js:190
#, fuzzy
msgid "Filter tags"
msgstr "新しいタグ:"
msgstr "フィルタータグ"
#: packages/app-desktop/gui/ExtensionBadge.min.js:10
msgid "Firefox Extension"
@@ -2343,7 +2340,7 @@ msgstr "マスターキーがありません"
#: packages/app-cli/app/cli-utils.js:109
msgid "Missing required argument: %s"
msgstr "引数が足りません%s"
msgstr "引数が足りません: %s"
#: packages/app-mobile/components/side-menu-content.js:367
msgid "Mobile data - auto-sync disabled"
@@ -2364,7 +2361,7 @@ msgstr ""
#: packages/app-mobile/components/screen-header.js:453
msgid "Move %d notes to notebook \"%s\"?"
msgstr "%d個のノートを\"%s\"に移動しますか?"
msgstr "%d 個のノートを \"%s\" ノートブックに移動しますか?"
#: packages/app-desktop/gui/MainScreen/commands/moveToFolder.ts:8
msgid "Move to notebook"
@@ -2380,7 +2377,7 @@ msgstr "ノートブックへ移動..."
#: packages/app-cli/app/command-mv.js:14
msgid "Moves the notes matching <note> to [notebook]."
msgstr "<note>に一致するアイテムを、[notebook]に移動します。"
msgstr "<note>に一致するノートを、[notebook]に移動します。"
#: packages/app-cli/app/app.js:138 packages/app-cli/app/cli-utils.js:161
msgid "n"
@@ -2542,7 +2539,7 @@ msgstr "ノートの本文"
#: packages/app-cli/app/command-edit.js:46
msgid "Note does not exist: \"%s\". Create it?"
msgstr "\"%s\"というノートはありません。作成しますか?"
msgstr "\"%s\" というノートはありません。作成しますか?"
#: packages/app-cli/app/command-edit.js:97
msgid "Note has been saved."
@@ -2783,6 +2780,8 @@ msgid ""
"Please click on \"%s\" to proceed, or set the passwords in the \"%s\" list "
"below."
msgstr ""
"\"%s\"をクリックして続行するか、以下の\"%s\"リストでパスワードを設定してくだ"
"さい。"
#: packages/lib/components/EncryptionConfigScreen/utils.ts:65
msgid ""
@@ -2941,9 +2940,8 @@ msgid "Profile"
msgstr "プロファイル"
#: packages/app-desktop/gui/MainScreen/commands/addProfile.ts:17
#, fuzzy
msgid "Profile name:"
msgstr "プロファイル"
msgstr "プロファイル名:"
#: packages/lib/versionInfo.ts:26
msgid "Profile Version: %s"
@@ -3171,9 +3169,8 @@ msgstr "アラームの保存"
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:100
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:93
#, fuzzy
msgid "Save as %s"
msgstr "名前を付けて保存..."
msgstr "%sで保存"
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:80
msgid "Save as..."
@@ -3258,7 +3255,7 @@ msgstr "アラームをセット"
#: packages/app-desktop/gui/MainScreen/commands/editAlarm.ts:27
msgid "Set alarm:"
msgstr "アラームをセット"
msgstr "アラームをセット:"
#: packages/lib/models/Setting.ts:1194
msgid ""
@@ -3269,7 +3266,7 @@ msgstr ""
#: packages/app-desktop/gui/MainScreen/MainScreen.tsx:633
msgid "Set the password"
msgstr "パスワード設定"
msgstr "パスワード設定"
#: packages/app-cli/app/command-set.js:22
msgid ""
@@ -3366,15 +3363,15 @@ msgstr "Solarised (明)"
#: packages/app-desktop/gui/MainScreen/MainScreen.tsx:597
msgid "Some items cannot be decrypted."
msgstr "いくつかの項目は復号されませんでした。"
msgstr "いくつかのアイテムは復号されませんでした。"
#: packages/app-desktop/gui/MainScreen/MainScreen.tsx:626
msgid "Some items cannot be synchronised."
msgstr "いくつかの項目は同期されませんでした。"
msgstr "いくつかのアイテムは同期されませんでした。"
#: packages/app-mobile/components/screen-header.js:472
msgid "Some items cannot be synchronised. Press for more info."
msgstr "いくつかの項目は同期されませんでした。詳細はクリック。"
msgstr "いくつかのアイテムは同期されませんでした。詳細はクリック。"
#: packages/lib/models/Setting.ts:981
msgid "Sort notebooks by"
@@ -3540,9 +3537,8 @@ msgid "Switch between note and to-do type"
msgstr "ノートとToDoを切り替え"
#: packages/app-desktop/gui/MenuBar.tsx:437
#, fuzzy
msgid "Switch profile"
msgstr "プロファイルをエクスポート"
msgstr "プロファイルを切り替え"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:105
msgid "Switch to note type"
@@ -3551,9 +3547,8 @@ msgstr "ノートに切り替え"
#: packages/app-desktop/commands/switchProfile1.ts:7
#: packages/app-desktop/commands/switchProfile2.ts:7
#: packages/app-desktop/commands/switchProfile3.ts:7
#, fuzzy
msgid "Switch to profile %d"
msgstr "ノートに切り替え"
msgstr "%d プロファイルに切り替え"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:114
msgid "Switch to to-do type"
@@ -3649,7 +3644,7 @@ msgstr "Tabloid"
#: packages/app-mobile/components/screens/NoteTagsDialog.js:179
msgid "tag1, tag2, ..."
msgstr ""
msgstr "タグ1, タグ2, ..."
#: packages/app-cli/app/command-import.js:52
#: packages/app-desktop/gui/ImportScreen.min.js:73
@@ -3693,7 +3688,7 @@ msgstr ""
#: packages/app-desktop/app.ts:332
msgid ""
"The application did not close properly. Would you like to start in safe mode?"
msgstr ""
msgstr "アプリケーションが正しく閉じませんでした。セーフモードで開始しますか?"
#: packages/lib/onedrive-api-node-utils.js:86
msgid ""
@@ -4425,7 +4420,7 @@ msgstr "WebDAV"
#: packages/lib/models/Setting.ts:535
msgid "WebDAV password"
msgstr "WevDAV パスワード"
msgstr "WebDAV パスワード"
#: packages/lib/models/Setting.ts:512
msgid "WebDAV URL"
@@ -4518,16 +4513,15 @@ msgstr ""
#: packages/app-cli/app/cli-utils.js:144
msgid "Your choice: "
msgstr "選択 "
msgstr "選択: "
#: packages/lib/components/EncryptionConfigScreen/utils.ts:71
msgid "Your data is going to be re-encrypted and synced again."
msgstr "既存データを暗号化しなおし、再同期します。"
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:271
#, fuzzy
msgid "Your password is needed to decrypt some of your data."
msgstr "一部のデータを復号化するためにあなたのマスターパスワードが必要です。"
msgstr "一部のデータを復号化するためにあなたのパスワードが必要です。"
#: packages/app-cli/app/command-sync.ts:242
msgid ""

View File

@@ -7,6 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: Türkçe\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: \n"
"PO-Revision-Date: \n"
"Last-Translator: Arda Kılıçdağı <arda@kilicdagi.com>\n"
"Language-Team: Turkish (Turkey)\n"
"Language: tr_TR\n"
@@ -14,7 +16,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 3.0.1\n"
"X-Generator: Poedit 3.1\n"
#: packages/app-mobile/components/screens/ConfigScreen.tsx:560
msgid "- Camera: to allow taking a picture and attaching it to a note."
@@ -298,9 +300,8 @@ msgstr ""
"Ayrıca ayarlanmamış ve gizlenmiş yapılandırma değişkenlerini de görüntüler."
#: packages/app-desktop/gui/ShareNoteDialog.tsx:203
#, fuzzy
msgid "Also publish linked notes"
msgstr "Notu paylaşmayı bırak"
msgstr "Ayrıca linklenmiş notları paylaş"
#: packages/lib/models/Setting.ts:713
msgid "Always"
@@ -402,7 +403,7 @@ msgstr "Otomatik"
#: packages/server/src/services/TaskService.ts:39
msgid "Auto-add disabled accounts for deletion"
msgstr ""
msgstr "Silmek için devre dışı bırakılmış hesapları otomatik olarak ekle"
#: packages/lib/models/Setting.ts:912
msgid "Auto-pair braces, parenthesis, quotations, etc."
@@ -715,7 +716,7 @@ msgstr "Tamamlandı: %s (%s)"
#: packages/server/src/services/TaskService.ts:37
msgid "Compress old changes"
msgstr ""
msgstr "Eski değişiklikleri sıkıştır"
#: packages/app-mobile/components/screens/ConfigScreen.tsx:632
#: packages/app-mobile/components/side-menu-content.js:332
@@ -867,18 +868,16 @@ msgstr ""
"ediliyor. Lütfen internet bağlantınız varken bu işlemi yeniden deneyin."
#: packages/app-desktop/gui/PromptDialog.min.js:235
#, fuzzy
msgid "Create"
msgstr "Oluşturuldu"
msgstr "Oluştur"
#: packages/app-mobile/components/note-list.js:101
msgid "Create a notebook"
msgstr "Yeni bir not defteri oluşturur"
#: packages/app-desktop/gui/MainScreen/commands/addProfile.ts:9
#, fuzzy
msgid "Create new profile..."
msgstr "Yeni bir not oluşturur."
msgstr "Yeni bir profil oluşturur..."
#: packages/app-desktop/gui/EditFolderDialog/Dialog.tsx:161
msgid "Create notebook"
@@ -1035,14 +1034,12 @@ msgid "Delete attachment \"%s\"?"
msgstr "\"%s\" eki silinsin mi?"
#: packages/server/src/services/TaskService.ts:36
#, fuzzy
msgid "Delete expired sessions"
msgstr "Matematik ifadelerini etkinleştir"
msgstr "Süresi geçmiş oturumları sil"
#: packages/server/src/services/TaskService.ts:31
#, fuzzy
msgid "Delete expired tokens"
msgstr "Bu %d not silinsin mi?"
msgstr "Süresi geçmiş jetonları sil"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:88
msgid "Delete line"
@@ -1325,7 +1322,7 @@ msgstr "Not defterini düzenle"
#: packages/app-desktop/commands/editProfileConfig.ts:9
msgid "Edit profile configuration..."
msgstr ""
msgstr "Profil ayarlarını düzenle…"
#: packages/app-desktop/gui/NoteContentPropertiesDialog.tsx:138
#: packages/lib/models/Setting.ts:876 packages/lib/models/Setting.ts:877
@@ -1355,9 +1352,8 @@ msgstr "Metin düzenleyici monospace (sabit genişlikteki) yazı tipi"
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:100
#: packages/app-desktop/gui/NoteEditor/editorCommandDeclarations.ts:96
#, fuzzy
msgid "Editor: %s"
msgstr "Düzenleyici"
msgstr "Düzenleyici: %s"
#: packages/app-cli/app/command-ls.js:31
msgid "Either \"text\" or \"json\""
@@ -1370,12 +1366,12 @@ msgstr "Emacs"
#: packages/app-desktop/gui/SyncWizard/Dialog.tsx:236
#: packages/server/src/routes/admin/emails.ts:128
msgid "Email"
msgstr ""
msgstr "E-posta"
#: packages/server/src/routes/admin/emails.ts:112
#: packages/server/src/services/MustacheService.ts:127
msgid "Emails"
msgstr ""
msgstr "E-posta"
#: packages/app-desktop/gui/NoteEditor/NoteBody/CodeMirror/CodeMirror.tsx:194
msgid "emphasised text"
@@ -1672,9 +1668,8 @@ msgid "File system"
msgstr "Dosya sistemi"
#: packages/app-mobile/components/screens/NoteTagsDialog.js:190
#, fuzzy
msgid "Filter tags"
msgstr "Yeni etiketler:"
msgstr "Etikerleri filtrele"
#: packages/app-desktop/gui/ExtensionBadge.min.js:10
msgid "Firefox Extension"
@@ -1872,7 +1867,7 @@ msgstr "TLS sertifikası hatalarını yoksay"
#: packages/app-desktop/gui/EditFolderDialog/Dialog.tsx:102
msgid "Images"
msgstr ""
msgstr "Resim"
#: packages/app-desktop/gui/KeymapConfig/KeymapConfigScreen.tsx:170
#: packages/app-desktop/gui/MenuBar.tsx:536
@@ -2201,7 +2196,7 @@ msgstr "Düzen butonu sıralaması"
#: packages/app-desktop/gui/MainScreen/commands/leaveSharedFolder.ts:10
msgid "Leave notebook..."
msgstr "Not defterinden ayrıl"
msgstr "Not defterinden ayrıl..."
#: packages/lib/models/Setting.ts:1307
msgid "Legal"
@@ -2739,9 +2734,8 @@ msgid "Or create an account."
msgstr "Ya da yeni bir hesap oluştur."
#: packages/app-desktop/gui/MenuBar.tsx:400
#, fuzzy
msgid "Other applications..."
msgstr "Uygulamadan çıkar."
msgstr "Diğer uygulamalar..."
#: packages/app-cli/app/command-import.js:27
msgid "Output format: %s"
@@ -2802,6 +2796,8 @@ msgid ""
"Please click on \"%s\" to proceed, or set the passwords in the \"%s\" list "
"below."
msgstr ""
"Devam etmek için lütfen \"%s\" butonuna basın, ya da aşağıdaki \"%s\" "
"listesinden parola belirleyin."
#: packages/lib/components/EncryptionConfigScreen/utils.ts:65
msgid ""
@@ -2945,25 +2941,23 @@ msgstr "Gizlilik Politikası"
#: packages/server/src/services/TaskService.ts:35
msgid "Process failed payment subscriptions"
msgstr ""
msgstr "Ödeme hatası almış abonelikleri işle"
#: packages/server/src/services/TaskService.ts:33
msgid "Process oversized accounts"
msgstr ""
msgstr "Fazla büyük, şişmiş hesapları işle"
#: packages/server/src/services/TaskService.ts:38
#, fuzzy
msgid "Process user deletions"
msgstr "Kullancı silmeleri"
msgstr "Kullancı silmelerini yönet"
#: packages/server/src/routes/admin/users.ts:168
msgid "Profile"
msgstr "Profil"
#: packages/app-desktop/gui/MainScreen/commands/addProfile.ts:17
#, fuzzy
msgid "Profile name:"
msgstr "Profil"
msgstr "Profil adı:"
#: packages/lib/versionInfo.ts:26
msgid "Profile Version: %s"
@@ -3191,9 +3185,8 @@ msgstr "Alarm kurun"
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:100
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:93
#, fuzzy
msgid "Save as %s"
msgstr "Farklı kaydet..."
msgstr "\"%s\" olarak farklı kaydet"
#: packages/app-desktop/gui/NoteEditor/utils/contextMenu.ts:80
msgid "Save as..."
@@ -3250,14 +3243,12 @@ msgid "Select all"
msgstr "Tümünü seç"
#: packages/app-desktop/gui/EditFolderDialog/Dialog.tsx:140
#, fuzzy
msgid "Select emoji..."
msgstr "Tarih seç"
msgstr "Emoji seç..."
#: packages/app-desktop/gui/EditFolderDialog/Dialog.tsx:144
#, fuzzy
msgid "Select file..."
msgstr "Tümünü seç"
msgstr "Dosya seç..."
#: packages/app-cli/app/command-server.js:38
msgid "Server is already running on port %d"
@@ -3565,9 +3556,8 @@ msgid "Switch between note and to-do type"
msgstr "Not ve yapılacaklar tipi arasında değişim yap"
#: packages/app-desktop/gui/MenuBar.tsx:437
#, fuzzy
msgid "Switch profile"
msgstr "Profili dışarı aktar"
msgstr "Profili değiştir"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:105
msgid "Switch to note type"
@@ -3576,9 +3566,8 @@ msgstr "Not tipine dönüştür"
#: packages/app-desktop/commands/switchProfile1.ts:7
#: packages/app-desktop/commands/switchProfile2.ts:7
#: packages/app-desktop/commands/switchProfile3.ts:7
#, fuzzy
msgid "Switch to profile %d"
msgstr "Not tipine dönüştür"
msgstr "%d profiline geç"
#: packages/app-desktop/gui/utils/NoteListUtils.ts:114
msgid "Switch to to-do type"
@@ -3677,7 +3666,7 @@ msgstr "Tablo"
#: packages/app-mobile/components/screens/NoteTagsDialog.js:179
msgid "tag1, tag2, ..."
msgstr ""
msgstr "etiket1, etiket2, ..."
#: packages/app-cli/app/command-import.js:52
#: packages/app-desktop/gui/ImportScreen.min.js:73
@@ -3721,7 +3710,7 @@ msgstr ""
#: packages/app-desktop/app.ts:332
msgid ""
"The application did not close properly. Would you like to start in safe mode?"
msgstr ""
msgstr "Uygulama düzgün kapanmadı. Güvenli modda başlatmak ister misiniz?"
#: packages/lib/onedrive-api-node-utils.js:86
msgid ""
@@ -3889,7 +3878,7 @@ msgstr ""
msgid "The sync target needs to be upgraded. Press this banner to proceed."
msgstr ""
"Senkronizasyon hedefinin güncellenmesi gerekmekte. Devam etmek için bu "
"butona basın"
"butona basın."
#: packages/lib/models/Tag.ts:204
msgid "The tag \"%s\" already exists. Please choose a different name."
@@ -4105,7 +4094,7 @@ msgstr ""
#: packages/lib/components/EncryptionConfigScreen/utils.ts:54
msgid "To continue, please enter your master password below."
msgstr "Devam etmek için lütfen aşağıya ana parolanızı girin"
msgstr "Devam etmek için lütfen aşağıya ana parolanızı girin."
#: packages/app-cli/app/app-gui.js:452
msgid "To delete a tag, untag the associated notes."
@@ -4305,9 +4294,8 @@ msgid "Update profile"
msgstr "Profili güncelle"
#: packages/server/src/services/TaskService.ts:32
#, fuzzy
msgid "Update total sizes"
msgstr "Güncellenen yerel öğeler: %d."
msgstr "Toplam ebatı güncelle"
#: packages/app-desktop/gui/ConfigScreen/controls/plugins/PluginBox.tsx:208
#: packages/app-desktop/gui/ConfigScreen/controls/plugins/PluginBox.tsx:209
@@ -4571,10 +4559,9 @@ msgid "Your data is going to be re-encrypted and synced again."
msgstr "Veriniz yeniden şifrelenecek ve senkron edilecek."
#: packages/app-desktop/gui/EncryptionConfigScreen/EncryptionConfigScreen.tsx:271
#, fuzzy
msgid "Your password is needed to decrypt some of your data."
msgstr ""
"Verilerinizin bir kısmının şifrelemesinin çözülmesi için ana parolanız "
"Verilerinizin bir kısmının şifrelemesinin çözülmesi için parolanız "
"gerekmektedir."
#: packages/app-cli/app/command-sync.ts:242

View File

@@ -1,6 +1,6 @@
{
"name": "@joplin/tools",
"version": "2.8.0",
"version": "2.8.1",
"description": "Various tools for Joplin",
"main": "index.js",
"author": "Laurent Cozic",
@@ -20,8 +20,8 @@
},
"license": "MIT",
"dependencies": {
"@joplin/lib": "~2.8",
"@joplin/renderer": "~2.8",
"@joplin/lib": "^2.8.1",
"@joplin/renderer": "^2.8.1",
"@types/node-fetch": "1.6.9",
"@types/yargs": "16.0.3",
"dayjs": "^1.10.7",
@@ -50,6 +50,7 @@
"gettext-extractor": "^3.5.3",
"gulp": "^4.0.2",
"jest": "^26.6.3",
"rss": "^1.2.2",
"sass": "^1.39.2",
"sqlite3": "^5.0.0",
"typescript": "^4.1.3"

View File

@@ -118,7 +118,7 @@ async function checkSourceZip(sourceZip, compiledZip) {
console.info(await execCommand(`cp "${sourceZip}" .`));
console.info(await execCommand(`unzip "${sourceZip}"`));
process.chdir(`${sourceDir}/Clipper-source/popup`);
console.info(await execCommand('yarn install'));
console.info(await execCommand('npm install'));
process.chdir(compiledDir);
console.info(await execCommand(`cp "${compiledZip}" .`));
@@ -143,7 +143,7 @@ async function main() {
// installed by CRA and 6.1.0 by us. It doesn't affect anything though, and the behaviour of the preflight
// check is buggy so we can ignore it.
console.info(await execCommand(`rm -rf ${clipperDir}/popup/build`));
console.info(await execCommand('yarn run build'));
console.info(await execCommand('npm run build'));
const dists = {
chrome: {

View File

@@ -1,6 +1,6 @@
import * as fs from 'fs-extra';
import { rootDir, gitPullTry, completeReleaseWithChangelog } from './tool-utils';
const { unique } = require('@joplin/lib/ArrayUtils');
import { unique } from '@joplin/lib/ArrayUtils';
const mobileDir = `${rootDir}/packages/app-mobile`;

View File

@@ -48,7 +48,7 @@ yarn run updateNews $DISCOURSE_API_KEY $DISCOURSE_USERNAME
git add -A
git commit -m "Doc: Updated Markdown files
git commit -m "Doc: Auto-update documentation
Auto-updated using $SCRIPT_NAME" || true

View File

@@ -99,6 +99,10 @@
{
"name": "fourstepper",
"id": "49439044"
},
{
"name": "Polymathic-Company",
"id": "77214738"
}
],
"orgs": [

View File

@@ -4,13 +4,12 @@ import { pressCarouselItems } from './utils/pressCarousel';
import { getMarkdownIt, loadMustachePartials, markdownToPageHtml, renderMustache } from './utils/render';
import { AssetUrls, Env, PlanPageParams, Sponsors, TemplateParams } from './utils/types';
import { createFeatureTableMd, getPlans, loadStripeConfig } from '@joplin/lib/utils/joplinCloud';
import { MarkdownAndFrontMatter, stripOffFrontMatter } from './utils/frontMatter';
import { stripOffFrontMatter } from './utils/frontMatter';
import { dirname, basename } from 'path';
import { readmeFileTitle, replaceGitHubByWebsiteLinks } from './utils/parser';
import { extractOpenGraphTags } from './utils/openGraph';
import { readCredentialFileJson } from '@joplin/lib/utils/credentialFiles';
const moment = require('moment');
import { getNewsDateString } from './utils/news';
interface BuildConfig {
env: Env;
@@ -178,19 +177,6 @@ async function loadSponsors(): Promise<Sponsors> {
return output;
}
const getNewsDateString = (info: MarkdownAndFrontMatter, mdFilePath: string): string => {
// If the date is set in the metadata, we get it from there. Otherwise we
// derive it from the filename (eg. 20220224-release-2-7.md)
if (info.created) {
return moment(info.created).format('D MMM YYYY');
} else {
const filenameNoExt = basename(mdFilePath, '.md');
const s = filenameNoExt.split('-');
return moment(s[0], 'YYYYMMDD').format('D MMM YYYY');
}
};
const processNewsMarkdown = (md: string, mdFilePath: string): string => {
const info = stripOffFrontMatter(md);
md = info.doc.trim();

View File

@@ -7,6 +7,9 @@ import { basename } from 'path';
import { rootDir } from '../tool-utils';
import fetch from 'node-fetch';
import { compileWithFrontMatter, MarkdownAndFrontMatter, stripOffFrontMatter } from './utils/frontMatter';
import { markdownToHtml } from './utils/render';
import { getNewsDate } from './utils/news';
const RSS = require('rss');
interface ApiConfig {
baseUrl: string;
@@ -61,6 +64,11 @@ const getPosts = async (newsDir: string): Promise<Post[]> => {
});
}
output.sort((a: Post, b: Post) => {
if (a.id < b.id) return -1;
return +1;
});
return output;
};
@@ -124,6 +132,51 @@ const getForumTopPostByExternalId = async (externalId: string): Promise<ForumTop
}
};
const generateRssFeed = async (posts: Post[]) => {
let pubDate = null;
let postCount = 0;
const feedItems: any[] = [];
for (const post of posts.reverse()) {
const content = await getPostContent(post);
const postDate = getNewsDate(content.parsed, post.path);
const html = markdownToHtml(content.body);
if (pubDate === null) pubDate = postDate;
feedItems.push({
title: content.title,
description: html,
url: `https://joplinapp.org/news/${post.id}/`,
guid: post.id,
date: postDate,
custom_elements: [
{ 'twitter-text': content.parsed.tweet },
],
});
postCount++;
if (postCount >= 20) break;
}
const feed = new RSS({
title: 'Joplin',
description: 'Joplin, the open source note-taking application',
feed_url: 'https://joplinapp.org/rss.xml',
site_url: 'https://joplinapp.org',
pubDate,
});
for (const feedItem of feedItems) feed.item(feedItem);
let xml = feed.xml() as string;
// Change the build date otherwise it changes even when nothing has changed.
// https://github.com/dylang/node-rss/pull/52
xml = xml.replace(/<lastBuildDate>(.*?)<\/lastBuildDate>/, `<lastBuildDate>${pubDate.toUTCString()}</lastBuildDate>`);
return xml;
};
const main = async () => {
const argv = require('yargs').argv;
config.key = argv._[0];
@@ -133,6 +186,9 @@ const main = async () => {
const posts = await getPosts(`${rootDir}/readme/news`);
const rssFeed = await generateRssFeed(posts);
await writeFile(`${rootDir}/Assets/WebsiteAssets/rss.xml`, rssFeed, 'utf8');
for (const post of posts) {
if (ignoredPostIds.includes(post.id)) continue;

View File

@@ -6,6 +6,7 @@ export interface MarkdownAndFrontMatter {
updated?: Date;
source_url?: string;
forum_url?: string;
tweet?: string;
}
const readProp = (line: string): string[] => {

View File

@@ -0,0 +1,22 @@
/* eslint-disable import/prefer-default-export */
import { MarkdownAndFrontMatter } from './frontMatter';
import { basename } from 'path';
const moment = require('moment');
export const getNewsDateString = (info: MarkdownAndFrontMatter, mdFilePath: string): string => {
return moment(getNewsDate(info, mdFilePath)).format('D MMM YYYY');
};
export const getNewsDate = (info: MarkdownAndFrontMatter, mdFilePath: string): Date => {
// If the date is set in the metadata, we get it from there. Otherwise we
// derive it from the filename (eg. 20220224-release-2-7.md)
if (info.created) {
return info.created;
} else {
const filenameNoExt = basename(mdFilePath, '.md');
const s = filenameNoExt.split('-');
return moment.utc(s[0], 'YYYYMMDD').toDate();
}
};

View File

@@ -47,7 +47,17 @@ export function getMarkdownIt() {
}
export function markdownToPageHtml(md: string, templateParams: TemplateParams): string {
const html = markdownToHtml(md);
return renderMustache(html, templateParams);
}
export const markdownToHtml = (md: string): string => {
const markdownIt = getMarkdownIt();
markdownIt.use(headerAnchor);
return renderMustache(markdownIt.render(md), templateParams);
}
markdownIt.linkify.set({
'fuzzyLink': false,
'fuzzyIP': false,
'fuzzyEmail': false,
});
return markdownIt.render(md);
};

View File

@@ -4,7 +4,7 @@
"publishConfig": {
"access": "public"
},
"version": "1.0.43",
"version": "1.0.44",
"author": "Dom Christie",
"main": "lib/turndown-plugin-gfm.cjs.js",
"devDependencies": {

View File

@@ -1,7 +1,7 @@
{
"name": "@joplin/turndown",
"description": "A library that converts HTML to Markdown",
"version": "4.0.61",
"version": "4.0.62",
"author": "Dom Christie",
"main": "lib/turndown.cjs.js",
"publishConfig": {

View File

@@ -1,5 +1,16 @@
# Joplin changelog
## [v2.8.8](https://github.com/laurent22/joplin/releases/tag/v2.8.8) - 2022-05-17T14:48:06Z
- Improved: Remove plugin backoff handler for now ([7ec3a7b](https://github.com/laurent22/joplin/commit/7ec3a7b))
- Fixed: Dropbox login button is not visible in dark mode ([#6513](https://github.com/laurent22/joplin/issues/6513)) ([#6503](https://github.com/laurent22/joplin/issues/6503) by [@Retrove](https://github.com/Retrove))
## [v2.8.7](https://github.com/laurent22/joplin/releases/tag/v2.8.7) (Pre-release) - 2022-05-06T11:34:27Z
- Improved: Sort sync target options ([814a5a0](https://github.com/laurent22/joplin/commit/814a5a0))
- Fixed: Make undo/redo menu items translatable ([#6435](https://github.com/laurent22/joplin/issues/6435))
- Fixed: Sync config was lost when switching profiles ([#6459](https://github.com/laurent22/joplin/issues/6459))
## [v2.8.6](https://github.com/laurent22/joplin/releases/tag/v2.8.6) (Pre-release) - 2022-05-03T10:08:25Z
- Improved: Disable crash detection handler for now ([47c3ee0](https://github.com/laurent22/joplin/commit/47c3ee0))

View File

@@ -1,5 +1,23 @@
# Joplin Android app changelog
## [android-v2.8.1](https://github.com/laurent22/joplin/releases/tag/android-v2.8.1) (Pre-release) - 2022-05-18T13:35:01Z
- Improved: Allow filtering tags in tag dialog (#6221 by [@shinglyu](https://github.com/shinglyu))
- Improved: Automatically start sync after setting the sync parameters (ff066ba)
- Improved: Color of Date-Time text changed to match theme (#6279 by Ayush Srivastava)
- Improved: Handle invalid revision patches (#6209)
- Improved: Improve error message when revision metadata cannot be decoded, to improve debugging (a325bf6)
- Improved: Make search engine filter keywords case insensitive (#6267) (#6266 by [@JackGruber](https://github.com/JackGruber))
- Improved: Sort sync target options (814a5a0)
- Fixed: "Move Note" dropdown menu can be very narrow (#6306) (#3564 by Ayush Srivastava)
- Fixed: Cursor hard to see in dark mode (#6307) (#5987 by Henry Heino)
- Fixed: Ensure that note revision markup type is set correctly (#6261)
- Fixed: Error when pressing undo or redo button while editor is closed (#6426) (#6328 by Tolulope Malomo)
- Fixed: Long path in "Export profile" prevents tapping OK button (#6359) (#6026 by Tolulope Malomo)
- Fixed: Prevent multiline note titles (#6144) (#5482 by [@Daeraxa](https://github.com/Daeraxa))
- Fixed: Support inserting attachments from Beta Editor (#6325) (#6324 by Henry Heino)
- Fixed: The camera button remains clickable after taking a photo bug (#6222 by [@shinglyu](https://github.com/shinglyu))
## [android-v2.7.2](https://github.com/laurent22/joplin/releases/tag/android-v2.7.2) (Pre-release) - 2022-02-12T12:51:29Z
- New: Add additional time format HH.mm (#6086 by [@vincentjocodes](https://github.com/vincentjocodes))

View File

@@ -1,5 +1,19 @@
# Joplin terminal app changelog
## [cli-v2.8.1](https://github.com/laurent22/joplin/releases/tag/cli-v2.8.1) - 2022-05-18T13:02:48Z
- New: Add additional time format HH.mm (#6086 by [@vincentjocodes](https://github.com/vincentjocodes))
- Improved: Do no duplicate resources when duplicating a note (721d008)
- Improved: Handle invalid revision patches (#6209)
- Improved: Improve error message when revision metadata cannot be decoded, to improve debugging (a325bf6)
- Improved: Make search engine filter keywords case insensitive (#6267) (#6266 by [@JackGruber](https://github.com/JackGruber))
- Improved: Show login prompt for OneDrive (#5933 by Jonathan Heard)
- Fixed: Ensure that note revision markup type is set correctly (#6261)
- Fixed: Fixed creation of empty notebooks when importing directory of files (#6274) (#6197 by [@Retrove](https://github.com/Retrove))
- Fixed: Fixed issue where synchroniser would try to update a shared folder that is not longer accessible (667d642)
- Fixed: Note export could fail in some cases (regression) (#6203)
- Fixed: Shared resource was not encrypted with correct encryption key (#6092)
## [cli-v2.6.2](https://github.com/laurent22/joplin/releases/tag/cli-v2.6.2) - 2021-12-17T11:19:45Z
- New: Add date format YYYY/MM/DD (#5759 by Helmut K. C. Tessarek)

View File

@@ -1,5 +1,17 @@
# Joplin iOS app changelog
## [ios-v12.8.1](https://github.com/laurent22/joplin/releases/tag/ios-v12.8.1) - 2022-06-06T10:56:27Z
- Improved: Automatically start sync after setting the sync parameters (ff066ba)
- Improved: Color of Date-Time text changed to match theme (#6279 by Ayush Srivastava)
- Improved: Make search engine filter keywords case insensitive (#6267) (#6266 by [@JackGruber](https://github.com/JackGruber))
- Improved: Sort sync target options (814a5a0)
- Fixed: "Move Note" dropdown menu can be very narrow (#6306) (#3564 by Ayush Srivastava)
- Fixed: Error when pressing undo or redo button while editor is closed (#6426) (#6328 by Tolulope Malomo)
- Fixed: IOS and Dropbox synchronisation not working on iOS 15 (#6375)
- Fixed: Remove white border around Beta Editor (#6326) (#6318 by Henry Heino)
- Fixed: Support inserting attachments from Beta Editor (#6325) (#6324 by Henry Heino)
## [ios-v12.7.2](https://github.com/laurent22/joplin/releases/tag/ios-v12.7.2) - 2022-04-15T11:07:27Z
- Improved: Allow filtering tags in tag dialog (#6221 by [@shinglyu](https://github.com/shinglyu))

View File

@@ -10,7 +10,7 @@ Your download of <span class="downloaded-filename">Joplin</span> is in progress.
Access your notes on Windows, macOS or Linux.
<!-- DESKTOP-DOWNLOAD-LINKS --><a href='https://github.com/laurent22/joplin/releases/download/v2.7.15/Joplin-Setup-2.7.15.exe'><img alt='Get it on Windows' width="134px" src='https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/BadgeWindows.png'/></a> <a href='https://github.com/laurent22/joplin/releases/download/v2.7.15/Joplin-2.7.15.dmg'><img alt='Get it on macOS' width="134px" src='https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/BadgeMacOS.png'/></a> <a href='https://github.com/laurent22/joplin/releases/download/v2.7.15/Joplin-2.7.15.AppImage'><img alt='Get it on Linux' width="134px" src='https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/BadgeLinux.png'/></a><!-- DESKTOP-DOWNLOAD-LINKS -->
<!-- DESKTOP-DOWNLOAD-LINKS --><a href='https://github.com/laurent22/joplin/releases/download/v2.8.8/Joplin-Setup-2.8.8.exe'><img alt='Get it on Windows' width="134px" src='https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/BadgeWindows.png'/></a> <a href='https://github.com/laurent22/joplin/releases/download/v2.8.8/Joplin-2.8.8.dmg'><img alt='Get it on macOS' width="134px" src='https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/BadgeMacOS.png'/></a> <a href='https://github.com/laurent22/joplin/releases/download/v2.8.8/Joplin-2.8.8.AppImage'><img alt='Get it on Linux' width="134px" src='https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/BadgeLinux.png'/></a><!-- DESKTOP-DOWNLOAD-LINKS -->
</div>

View File

@@ -0,0 +1,21 @@
---
forum_url: https://discourse.joplinapp.org/t/25726
tweet: Joplin received 6 Contributor Projects for GSoC 2022! Welcome to our new contributors who will be working on these projects over summer! #GSoC2022
---
# Joplin received 6 Contributor Projects for GSoC 2022!
We are glad to announce that Google allocated us six projects this year for Google Summer of Code! So this is six contributors who will be working on various parts of the apps, both desktop and mobile, over the summer.
Over the next few weeks, till 13 June, will be the Community Bonding Period during which GSoC contributors get to know mentors, read documentation, and get up to speed to begin working on their projects.
Here's the full list of projects, contributors and mentors.
| Project Title | Contributor | Assigned Mentor(s) |
| ------------------------------------------------ | ------------------ | ------------------ |
| Improve PDF previewer of Joplin | asrient | Roman, JackGruber |
| Implement default plugins on desktop application | mak2002 | CalebJohn, Laurent |
| Mobile — Easier Editing | Henry H | Daeraxa, CalebJohn |
| Improve plugin search and discoverability | Retr0ve | JackGruber, Stefan |
| Tablet Layout Project | Tolu-Mals | Laurent, Daeraxa |
| Email Plugin | Bishoy Magdy Adeeb | Stefan, Roman |

View File

@@ -0,0 +1,37 @@
---
forum_url: https://discourse.joplinapp.org/t/25943
---
# Joplin 2.8 is available!
As always a lot of changes and new features in this new version available on both desktop and mobile.
# Multiple profile support
Perhaps the most visible change in this version is the support for multiple profiles. You can now create as many application profile as you wish, each with their own settings, and easily switch from one to another. The main use case is to support for example a "work" profile and a "personal" profile, to allow you to keep things independent, and each profile can sync with a different sync target.
To create a new profile, open **File > Switch profile** and select **Create new profile**, enter the profile name and press OK. The app will automatically switch to this new profile, which you can now configure.
To switch back to the previous profile, again open **File > Switch profile** and select **Default**.
Note that profiles all share certain settings, such as language, font size, theme, etc. This is done so that you don't have reconfigure every details when switching profiles. Other settings such as sync configuration is per profile.
The feature is available on desktop only for now, and should be ported to mobile relatively soon.
# Save Mermaid graph as PNG/SVG
This convenient feature allows exporting a Mermaid graph as a PNG or SVG image, or allows copying the image as a DataUrl, which can then be pasted in any compatible text editor. Thanks Asrient for implementing this!
![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20220606-mermaid-as-png.png)
# Publish a mini-website using Joplin Cloud
Joplin Cloud now supports publishing a note "recursively", which means the notes and all the notes it is linked to. This allows easily publishing a simple website made of multiples and images.
To make use of this feature, simply select **Also publish linked notes** when publishing a note.
![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20220606-publish-website.png)
# And more!
In total there are 38 changes to improve the app reliability, security and usability. Full changelog is at https://joplinapp.org/changelog/

View File

@@ -1,14 +1,22 @@
# Plugins
The **desktop app** has the ability to extend beyond its standard functionality by the way of plugins. These plugins adhere to the Joplin plugin API and can be installed & configured within the application via the `Plugins` page of the Settings menu (*Windows/Linux*: Tools > Options > Plugins; *macOS*: Joplin > Preferences). This menu allows the manual installation of the plugin using the single 'Joplin Plugin Archive' (*.jpl) file. Once the application is reloaded the plugins will appear within the plugins menu where they can be toggled on/off or removed entirely.
The **desktop app** has the ability to extend beyond its standard functionality by the way of plugins. These plugins adhere to the Joplin [plugin API](https://joplinapp.org/api/references/plugin_api/classes/joplin.html) and can be installed & configured within the application via the `Plugins` page of the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/config_screen.md).
From this menu you can search for plugins uploaded to the plugin repository as well as manual installation of plugins using a 'Joplin Plugin Archive' (*.jpl) file.
Once the application is reloaded the plugins will appear within the plugins menu where they can be toggled on/off or removed entirely.
## Plugin Repository
Plugins are currently maintained by the community in the [Joplin Discourse 'plugins' category](https://discourse.joplinapp.org/c/plugins/18).
Plugins are hosted within the [Joplin plugins](https://github.com/joplin/plugins) repository. The application searches and installs plugins from this location but manual download and install of the .jpl files is also supported.
See the [Joplin Discourse 'plugins' category](https://discourse.joplinapp.org/c/plugins/18) for plugin readmes, beta/in-development plugins and community discussion.
## Installing a plugin
To install a plugin press the Install Plugin button within the `Plugins` page of the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/config_screen.md) and select the *.jpl file. Alternatively you can copy the *.jpl to your profile's `plugins` directory directory `~/.config/joplin-desktop/plugins` (This path might be different on your device - check at the top of the `Options` page in the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/config_screen.md)). The plugin will be automatically loaded and executed when you restart the application. You may need to check Joplin is not minimising to the system tray/notification area rather than fully closing.
To install a plugin just search for the name of the plugin within the search box within the `Plugins` page of the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/config_screen.md). Typing a <kbd>space</kbd> will display all plugins or you can browse the repository by pressing the `Plugin tools` "gear" button and selecting `Browse all plugins`.
[Recommended plugins](https://github.com/joplin/plugins/blob/master/readme/recommended.md#recommended-plugins) are marked by a gold crown icon and have been vetted and recommended by the Joplin team.
To install a plugin just press its `Install` button, the application will then require restarting to finish the installation and will prompt you to do so.
Alternatively to install a plugin manually pressing the `Plugin tools` "gear" button and select `Install from file` then select the downloaded *.jpl file. Alternatively you can copy the *.jpl to your profile's `plugins` directory directory `~/.config/joplin-desktop/plugins` (This path might be different on your device - check at the top of the `Options` page in the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/config_screen.md)). The plugin will be automatically loaded and executed when you restart the application. You may need to check Joplin is not minimising to the system tray/notification area rather than fully closing.
## Managing Plugins
@@ -16,6 +24,10 @@ Within the Joplin Plugins page you have the option to turn individual plugins on
As the plugins integrate into the application itself, each plugin may have its own configuration options within Joplin and may be executed in a number of different ways. Ensure that you read the author's documentation fully to understand how each plugin is designed to be configured and used.
## Updating Plugins
Plugins can be automatically updated from within the Joplin application. When an update is available an orange `Update` button will show on the `Plugins` page of the settings menu. Press this button to update and once it has finished it will prompt you to restart the application.
## Uninstalling plugins
Within the Joplin Plugins page you can hit the 'Delete' button on a plugin and it will be removed from the list. Joplin must be restarted for this to complete. You may need to check Joplin is not minimising to the system tray/notification area rather than fully closing.
@@ -25,3 +37,5 @@ Alternatively you can simply remove *.jpl from the plugin directory (see Install
## Development
There is documentation of the plugin API along with documentation on plugin development. Check the [Joplin API Overview](https://github.com/laurent22/joplin/blob/dev/readme/api/overview.md) page for these items.
For community discussion and assistance on plugin development please also see the [Joplin Discourse `plugins development` category](https://discourse.joplinapp.org/c/development/plugins/19).
Other resources can be found in the `Joplin API - Get Started` and `Joplin API - Reference` categories on the [Joplin Help page](https://joplinapp.org/help/)

View File

@@ -1,15 +1,15 @@
---
updated: 2022-04-19T06:17:11Z
updated: 2022-05-19T06:17:18Z
---
# Joplin statistics
| Name | Value |
| ----- | ----- |
| Total Windows downloads | 2,315,940 |
| Total macOs downloads | 914,149 |
| Total Linux downloads | 728,950 |
| Windows % | 58% |
| Total Windows downloads | 2,431,848 |
| Total macOs downloads | 955,091 |
| Total Linux downloads | 764,024 |
| Windows % | 59% |
| macOS % | 23% |
| Linux % | 18% |
@@ -17,254 +17,259 @@ updated: 2022-04-19T06:17:11Z
| Version | Date | Windows | macOS | Linux | Total |
| ----- | ----- | ----- | ----- | ----- | ----- |
| [v2.8.2](https://github.com/laurent22/joplin/releases/tag/v2.8.2) (p) | 2022-04-14T11:35:45Z | 765 | 215 | 211 | 1,191 |
| [v2.7.15](https://github.com/laurent22/joplin/releases/tag/v2.7.15) | 2022-03-17T13:03:23Z | 80,140 | 33,355 | 22,481 | 135,976 |
| [v2.7.14](https://github.com/laurent22/joplin/releases/tag/v2.7.14) | 2022-02-27T11:30:53Z | 30,805 | 16,708 | 4,728 | 52,241 |
| [v2.7.13](https://github.com/laurent22/joplin/releases/tag/v2.7.13) | 2022-02-24T17:42:12Z | 51,508 | 25,658 | 11,657 | 88,823 |
| [v2.7.12](https://github.com/laurent22/joplin/releases/tag/v2.7.12) (p) | 2022-02-14T15:06:14Z | 1,837 | 439 | 432 | 2,708 |
| [v2.7.11](https://github.com/laurent22/joplin/releases/tag/v2.7.11) (p) | 2022-02-12T13:00:02Z | 1,043 | 176 | 137 | 1,356 |
| [v2.7.10](https://github.com/laurent22/joplin/releases/tag/v2.7.10) (p) | 2022-02-11T18:19:09Z | 711 | 101 | 58 | 870 |
| [v2.7.8](https://github.com/laurent22/joplin/releases/tag/v2.7.8) (p) | 2022-01-19T09:35:27Z | 3,005 | 747 | 796 | 4,548 |
| [v2.7.7](https://github.com/laurent22/joplin/releases/tag/v2.7.7) (p) | 2022-01-18T14:05:07Z | 962 | 135 | 110 | 1,207 |
| [v2.7.6](https://github.com/laurent22/joplin/releases/tag/v2.7.6) (p) | 2022-01-17T17:08:28Z | 1,064 | 160 | 90 | 1,314 |
| [v2.6.10](https://github.com/laurent22/joplin/releases/tag/v2.6.10) | 2021-12-19T11:31:16Z | 131,057 | 51,082 | 48,789 | 230,928 |
| [v2.6.9](https://github.com/laurent22/joplin/releases/tag/v2.6.9) | 2021-12-17T11:57:32Z | 16,038 | 9,452 | 3,138 | 28,628 |
| [v2.6.7](https://github.com/laurent22/joplin/releases/tag/v2.6.7) (p) | 2021-12-16T10:47:23Z | 1,189 | 141 | 77 | 1,407 |
| [v2.6.6](https://github.com/laurent22/joplin/releases/tag/v2.6.6) (p) | 2021-12-13T12:31:43Z | 1,250 | 231 | 143 | 1,624 |
| [v2.6.5](https://github.com/laurent22/joplin/releases/tag/v2.6.5) (p) | 2021-12-13T10:07:04Z | 551 | 31 | 12 | 594 |
| [v2.6.4](https://github.com/laurent22/joplin/releases/tag/v2.6.4) (p) | 2021-12-09T19:53:43Z | 1,326 | 266 | 174 | 1,766 |
| [v2.6.2](https://github.com/laurent22/joplin/releases/tag/v2.6.2) (p) | 2021-11-18T12:19:12Z | 2,993 | 773 | 671 | 4,437 |
| [v2.5.12](https://github.com/laurent22/joplin/releases/tag/v2.5.12) | 2021-11-08T11:07:11Z | 78,786 | 32,413 | 25,155 | 136,354 |
| [v2.5.10](https://github.com/laurent22/joplin/releases/tag/v2.5.10) | 2021-11-01T08:22:42Z | 43,910 | 18,971 | 10,022 | 72,903 |
| [v2.5.8](https://github.com/laurent22/joplin/releases/tag/v2.5.8) | 2021-10-31T11:38:03Z | 12,961 | 6,533 | 2,283 | 21,777 |
| [v2.5.7](https://github.com/laurent22/joplin/releases/tag/v2.5.7) (p) | 2021-10-29T14:47:33Z | 918 | 187 | 135 | 1,240 |
| [v2.5.6](https://github.com/laurent22/joplin/releases/tag/v2.5.6) (p) | 2021-10-28T22:03:09Z | 874 | 155 | 87 | 1,116 |
| [v2.5.4](https://github.com/laurent22/joplin/releases/tag/v2.5.4) (p) | 2021-10-19T10:10:54Z | 2,159 | 551 | 550 | 3,260 |
| [v2.4.12](https://github.com/laurent22/joplin/releases/tag/v2.4.12) | 2021-10-13T17:24:34Z | 43,471 | 19,928 | 9,744 | 73,143 |
| [v2.5.1](https://github.com/laurent22/joplin/releases/tag/v2.5.1) (p) | 2021-10-02T09:51:58Z | 3,289 | 880 | 921 | 5,090 |
| [v2.4.9](https://github.com/laurent22/joplin/releases/tag/v2.4.9) | 2021-09-29T19:08:58Z | 55,933 | 23,185 | 15,803 | 94,921 |
| [v2.4.8](https://github.com/laurent22/joplin/releases/tag/v2.4.8) (p) | 2021-09-22T19:01:46Z | 7,212 | 1,752 | 510 | 9,474 |
| [v2.4.7](https://github.com/laurent22/joplin/releases/tag/v2.4.7) (p) | 2021-09-19T12:53:22Z | 1,266 | 234 | 184 | 1,684 |
| [v2.4.6](https://github.com/laurent22/joplin/releases/tag/v2.4.6) (p) | 2021-09-09T18:57:17Z | 1,932 | 441 | 497 | 2,870 |
| [v2.4.5](https://github.com/laurent22/joplin/releases/tag/v2.4.5) (p) | 2021-09-06T18:03:28Z | 1,333 | 250 | 206 | 1,789 |
| [v2.4.4](https://github.com/laurent22/joplin/releases/tag/v2.4.4) (p) | 2021-08-30T16:02:51Z | 1,608 | 359 | 340 | 2,307 |
| [v2.4.3](https://github.com/laurent22/joplin/releases/tag/v2.4.3) (p) | 2021-08-28T15:27:32Z | 1,125 | 185 | 152 | 1,462 |
| [v2.4.2](https://github.com/laurent22/joplin/releases/tag/v2.4.2) (p) | 2021-08-27T17:13:21Z | 830 | 130 | 74 | 1,034 |
| [v2.4.1](https://github.com/laurent22/joplin/releases/tag/v2.4.1) (p) | 2021-08-21T11:52:30Z | 1,718 | 354 | 317 | 2,389 |
| [v2.3.5](https://github.com/laurent22/joplin/releases/tag/v2.3.5) | 2021-08-17T06:43:30Z | 81,160 | 31,353 | 33,057 | 145,570 |
| [v2.3.3](https://github.com/laurent22/joplin/releases/tag/v2.3.3) | 2021-08-14T09:19:40Z | 14,616 | 6,854 | 4,034 | 25,504 |
| [v2.2.7](https://github.com/laurent22/joplin/releases/tag/v2.2.7) | 2021-08-11T11:03:26Z | 15,029 | 7,488 | 2,569 | 25,086 |
| [v2.2.6](https://github.com/laurent22/joplin/releases/tag/v2.2.6) (p) | 2021-08-09T19:29:20Z | 7,792 | 4,602 | 939 | 13,333 |
| [v2.2.5](https://github.com/laurent22/joplin/releases/tag/v2.2.5) (p) | 2021-08-07T10:35:24Z | 1,429 | 258 | 188 | 1,875 |
| [v2.2.4](https://github.com/laurent22/joplin/releases/tag/v2.2.4) (p) | 2021-08-05T16:42:48Z | 1,144 | 188 | 114 | 1,446 |
| [v2.2.2](https://github.com/laurent22/joplin/releases/tag/v2.2.2) (p) | 2021-07-19T10:28:35Z | 3,046 | 718 | 628 | 4,392 |
| [v2.1.9](https://github.com/laurent22/joplin/releases/tag/v2.1.9) | 2021-07-19T10:28:43Z | 46,099 | 18,764 | 16,683 | 81,546 |
| [v2.2.1](https://github.com/laurent22/joplin/releases/tag/v2.2.1) (p) | 2021-07-09T17:38:25Z | 2,468 | 398 | 374 | 3,240 |
| [v2.1.8](https://github.com/laurent22/joplin/releases/tag/v2.1.8) | 2021-07-03T08:25:16Z | 30,011 | 12,164 | 12,701 | 54,876 |
| [v2.1.7](https://github.com/laurent22/joplin/releases/tag/v2.1.7) | 2021-06-26T19:48:55Z | 13,863 | 6,380 | 3,605 | 23,848 |
| [v2.1.5](https://github.com/laurent22/joplin/releases/tag/v2.1.5) (p) | 2021-06-23T15:08:52Z | 1,465 | 228 | 178 | 1,871 |
| [v2.1.3](https://github.com/laurent22/joplin/releases/tag/v2.1.3) (p) | 2021-06-19T16:32:51Z | 1,614 | 290 | 196 | 2,100 |
| [v2.0.11](https://github.com/laurent22/joplin/releases/tag/v2.0.11) | 2021-06-16T17:55:49Z | 23,162 | 9,226 | 9,799 | 42,187 |
| [v2.0.10](https://github.com/laurent22/joplin/releases/tag/v2.0.10) | 2021-06-16T07:58:29Z | 2,443 | 913 | 367 | 3,723 |
| [v2.0.9](https://github.com/laurent22/joplin/releases/tag/v2.0.9) (p) | 2021-06-12T09:30:30Z | 1,519 | 288 | 874 | 2,681 |
| [v2.0.8](https://github.com/laurent22/joplin/releases/tag/v2.0.8) (p) | 2021-06-10T16:15:08Z | 1,119 | 224 | 571 | 1,914 |
| [v2.0.4](https://github.com/laurent22/joplin/releases/tag/v2.0.4) (p) | 2021-06-02T12:54:17Z | 1,458 | 384 | 371 | 2,213 |
| [v2.0.2](https://github.com/laurent22/joplin/releases/tag/v2.0.2) (p) | 2021-05-21T18:07:48Z | 2,648 | 485 | 1,662 | 4,795 |
| [v2.0.1](https://github.com/laurent22/joplin/releases/tag/v2.0.1) (p) | 2021-05-15T13:22:58Z | 855 | 266 | 1,017 | 2,138 |
| [v1.8.5](https://github.com/laurent22/joplin/releases/tag/v1.8.5) | 2021-05-10T11:58:14Z | 37,857 | 16,250 | 19,385 | 73,492 |
| [v1.8.4](https://github.com/laurent22/joplin/releases/tag/v1.8.4) (p) | 2021-05-09T18:05:05Z | 1,161 | 132 | 452 | 1,745 |
| [v1.8.3](https://github.com/laurent22/joplin/releases/tag/v1.8.3) (p) | 2021-05-04T10:38:16Z | 1,914 | 303 | 934 | 3,151 |
| [v1.8.2](https://github.com/laurent22/joplin/releases/tag/v1.8.2) (p) | 2021-04-25T10:50:51Z | 2,244 | 433 | 1,282 | 3,959 |
| [v1.8.1](https://github.com/laurent22/joplin/releases/tag/v1.8.1) (p) | 2021-03-29T10:46:41Z | 3,464 | 823 | 2,447 | 6,734 |
| [v1.7.11](https://github.com/laurent22/joplin/releases/tag/v1.7.11) | 2021-02-03T12:50:01Z | 116,163 | 42,763 | 64,267 | 223,193 |
| [v1.7.10](https://github.com/laurent22/joplin/releases/tag/v1.7.10) | 2021-01-30T13:25:29Z | 14,057 | 4,853 | 4,475 | 23,385 |
| [v2.8.8](https://github.com/laurent22/joplin/releases/tag/v2.8.8) (p) | 2022-05-17T14:48:06Z | 608 | 152 | 85 | 845 |
| [v2.8.7](https://github.com/laurent22/joplin/releases/tag/v2.8.7) (p) | 2022-05-06T11:34:27Z | 1,349 | 313 | 345 | 2,007 |
| [v2.8.4](https://github.com/laurent22/joplin/releases/tag/v2.8.4) (p) | 2022-04-19T18:00:09Z | 1,456 | 520 | 298 | 2,274 |
| [v2.8.2](https://github.com/laurent22/joplin/releases/tag/v2.8.2) (p) | 2022-04-14T11:35:45Z | 1,017 | 244 | 236 | 1,497 |
| [v2.7.15](https://github.com/laurent22/joplin/releases/tag/v2.7.15) | 2022-03-17T13:03:23Z | 125,891 | 48,546 | 40,404 | 214,841 |
| [v2.7.14](https://github.com/laurent22/joplin/releases/tag/v2.7.14) | 2022-02-27T11:30:53Z | 31,007 | 16,719 | 4,748 | 52,474 |
| [v2.7.13](https://github.com/laurent22/joplin/releases/tag/v2.7.13) | 2022-02-24T17:42:12Z | 51,702 | 25,668 | 11,663 | 89,033 |
| [v2.7.12](https://github.com/laurent22/joplin/releases/tag/v2.7.12) (p) | 2022-02-14T15:06:14Z | 1,989 | 441 | 434 | 2,864 |
| [v2.7.11](https://github.com/laurent22/joplin/releases/tag/v2.7.11) (p) | 2022-02-12T13:00:02Z | 1,173 | 177 | 140 | 1,490 |
| [v2.7.10](https://github.com/laurent22/joplin/releases/tag/v2.7.10) (p) | 2022-02-11T18:19:09Z | 799 | 103 | 61 | 963 |
| [v2.7.8](https://github.com/laurent22/joplin/releases/tag/v2.7.8) (p) | 2022-01-19T09:35:27Z | 3,089 | 749 | 797 | 4,635 |
| [v2.7.7](https://github.com/laurent22/joplin/releases/tag/v2.7.7) (p) | 2022-01-18T14:05:07Z | 1,026 | 136 | 111 | 1,273 |
| [v2.7.6](https://github.com/laurent22/joplin/releases/tag/v2.7.6) (p) | 2022-01-17T17:08:28Z | 1,094 | 161 | 91 | 1,346 |
| [v2.6.10](https://github.com/laurent22/joplin/releases/tag/v2.6.10) | 2021-12-19T11:31:16Z | 131,179 | 51,100 | 49,043 | 231,322 |
| [v2.6.9](https://github.com/laurent22/joplin/releases/tag/v2.6.9) | 2021-12-17T11:57:32Z | 16,076 | 9,454 | 3,145 | 28,675 |
| [v2.6.7](https://github.com/laurent22/joplin/releases/tag/v2.6.7) (p) | 2021-12-16T10:47:23Z | 1,218 | 142 | 78 | 1,438 |
| [v2.6.6](https://github.com/laurent22/joplin/releases/tag/v2.6.6) (p) | 2021-12-13T12:31:43Z | 1,279 | 232 | 144 | 1,655 |
| [v2.6.5](https://github.com/laurent22/joplin/releases/tag/v2.6.5) (p) | 2021-12-13T10:07:04Z | 580 | 32 | 13 | 625 |
| [v2.6.4](https://github.com/laurent22/joplin/releases/tag/v2.6.4) (p) | 2021-12-09T19:53:43Z | 1,355 | 267 | 177 | 1,799 |
| [v2.6.2](https://github.com/laurent22/joplin/releases/tag/v2.6.2) (p) | 2021-11-18T12:19:12Z | 3,023 | 774 | 673 | 4,470 |
| [v2.5.12](https://github.com/laurent22/joplin/releases/tag/v2.5.12) | 2021-11-08T11:07:11Z | 78,868 | 32,421 | 25,160 | 136,449 |
| [v2.5.10](https://github.com/laurent22/joplin/releases/tag/v2.5.10) | 2021-11-01T08:22:42Z | 43,970 | 18,975 | 10,029 | 72,974 |
| [v2.5.8](https://github.com/laurent22/joplin/releases/tag/v2.5.8) | 2021-10-31T11:38:03Z | 13,005 | 6,535 | 2,286 | 21,826 |
| [v2.5.7](https://github.com/laurent22/joplin/releases/tag/v2.5.7) (p) | 2021-10-29T14:47:33Z | 947 | 188 | 138 | 1,273 |
| [v2.5.6](https://github.com/laurent22/joplin/releases/tag/v2.5.6) (p) | 2021-10-28T22:03:09Z | 903 | 156 | 88 | 1,147 |
| [v2.5.4](https://github.com/laurent22/joplin/releases/tag/v2.5.4) (p) | 2021-10-19T10:10:54Z | 2,204 | 552 | 551 | 3,307 |
| [v2.4.12](https://github.com/laurent22/joplin/releases/tag/v2.4.12) | 2021-10-13T17:24:34Z | 43,545 | 19,934 | 9,749 | 73,228 |
| [v2.4.9](https://github.com/laurent22/joplin/releases/tag/v2.4.9) | 2021-09-29T19:08:58Z | 56,000 | 23,190 | 15,807 | 94,997 |
| [v2.4.8](https://github.com/laurent22/joplin/releases/tag/v2.4.8) (p) | 2021-09-22T19:01:46Z | 7,249 | 1,753 | 511 | 9,513 |
| [v2.4.6](https://github.com/laurent22/joplin/releases/tag/v2.4.6) (p) | 2021-09-09T18:57:17Z | 1,977 | 442 | 498 | 2,917 |
| [v2.4.9](https://github.com/laurent22/joplin/releases/tag/v2.4.9) | 2021-09-29T19:08:58Z | 56,000 | 23,190 | 15,807 | 94,997 |
| [v2.4.8](https://github.com/laurent22/joplin/releases/tag/v2.4.8) (p) | 2021-09-22T19:01:46Z | 7,249 | 1,753 | 511 | 9,513 |
| [v2.4.7](https://github.com/laurent22/joplin/releases/tag/v2.4.7) (p) | 2021-09-19T12:53:22Z | 1,296 | 235 | 185 | 1,716 |
| [v2.4.6](https://github.com/laurent22/joplin/releases/tag/v2.4.6) (p) | 2021-09-09T18:57:17Z | 1,977 | 442 | 498 | 2,917 |
| [v2.4.5](https://github.com/laurent22/joplin/releases/tag/v2.4.5) (p) | 2021-09-06T18:03:28Z | 1,363 | 251 | 207 | 1,821 |
| [v2.4.4](https://github.com/laurent22/joplin/releases/tag/v2.4.4) (p) | 2021-08-30T16:02:51Z | 1,637 | 360 | 341 | 2,338 |
| [v2.4.3](https://github.com/laurent22/joplin/releases/tag/v2.4.3) (p) | 2021-08-28T15:27:32Z | 1,154 | 186 | 153 | 1,493 |
| [v2.4.2](https://github.com/laurent22/joplin/releases/tag/v2.4.2) (p) | 2021-08-27T17:13:21Z | 859 | 131 | 75 | 1,065 |
| [v2.4.1](https://github.com/laurent22/joplin/releases/tag/v2.4.1) (p) | 2021-08-21T11:52:30Z | 1,747 | 355 | 318 | 2,420 |
| [v2.3.5](https://github.com/laurent22/joplin/releases/tag/v2.3.5) | 2021-08-17T06:43:30Z | 81,236 | 31,355 | 33,063 | 145,654 |
| [v2.3.3](https://github.com/laurent22/joplin/releases/tag/v2.3.3) | 2021-08-14T09:19:40Z | 14,684 | 6,856 | 4,036 | 25,576 |
| [v2.2.7](https://github.com/laurent22/joplin/releases/tag/v2.2.7) | 2021-08-11T11:03:26Z | 15,093 | 7,489 | 2,572 | 25,154 |
| [v2.2.6](https://github.com/laurent22/joplin/releases/tag/v2.2.6) (p) | 2021-08-09T19:29:20Z | 7,850 | 4,603 | 940 | 13,393 |
| [v2.2.5](https://github.com/laurent22/joplin/releases/tag/v2.2.5) (p) | 2021-08-07T10:35:24Z | 1,458 | 259 | 189 | 1,906 |
| [v2.2.4](https://github.com/laurent22/joplin/releases/tag/v2.2.4) (p) | 2021-08-05T16:42:48Z | 1,173 | 191 | 116 | 1,480 |
| [v2.2.2](https://github.com/laurent22/joplin/releases/tag/v2.2.2) (p) | 2021-07-19T10:28:35Z | 3,075 | 719 | 629 | 4,423 |
| [v2.1.9](https://github.com/laurent22/joplin/releases/tag/v2.1.9) | 2021-07-19T10:28:43Z | 46,166 | 18,767 | 16,686 | 81,619 |
| [v2.2.1](https://github.com/laurent22/joplin/releases/tag/v2.2.1) (p) | 2021-07-09T17:38:25Z | 2,512 | 399 | 375 | 3,286 |
| [v2.1.8](https://github.com/laurent22/joplin/releases/tag/v2.1.8) | 2021-07-03T08:25:16Z | 30,077 | 12,166 | 12,704 | 54,947 |
| [v2.1.7](https://github.com/laurent22/joplin/releases/tag/v2.1.7) | 2021-06-26T19:48:55Z | 13,910 | 6,382 | 3,607 | 23,899 |
| [v2.1.5](https://github.com/laurent22/joplin/releases/tag/v2.1.5) (p) | 2021-06-23T15:08:52Z | 1,494 | 229 | 179 | 1,902 |
| [v2.1.3](https://github.com/laurent22/joplin/releases/tag/v2.1.3) (p) | 2021-06-19T16:32:51Z | 1,644 | 290 | 196 | 2,130 |
| [v2.0.11](https://github.com/laurent22/joplin/releases/tag/v2.0.11) | 2021-06-16T17:55:49Z | 23,232 | 9,226 | 9,802 | 42,260 |
| [v2.0.10](https://github.com/laurent22/joplin/releases/tag/v2.0.10) | 2021-06-16T07:58:29Z | 2,484 | 913 | 368 | 3,765 |
| [v2.0.9](https://github.com/laurent22/joplin/releases/tag/v2.0.9) (p) | 2021-06-12T09:30:30Z | 1,551 | 288 | 874 | 2,713 |
| [v2.0.8](https://github.com/laurent22/joplin/releases/tag/v2.0.8) (p) | 2021-06-10T16:15:08Z | 1,150 | 224 | 571 | 1,945 |
| [v2.0.4](https://github.com/laurent22/joplin/releases/tag/v2.0.4) (p) | 2021-06-02T12:54:17Z | 1,479 | 387 | 371 | 2,237 |
| [v2.0.2](https://github.com/laurent22/joplin/releases/tag/v2.0.2) (p) | 2021-05-21T18:07:48Z | 2,686 | 485 | 1,662 | 4,833 |
| [v2.0.1](https://github.com/laurent22/joplin/releases/tag/v2.0.1) (p) | 2021-05-15T13:22:58Z | 856 | 266 | 1,017 | 2,139 |
| [v1.8.5](https://github.com/laurent22/joplin/releases/tag/v1.8.5) | 2021-05-10T11:58:14Z | 37,921 | 16,255 | 19,387 | 73,563 |
| [v1.8.4](https://github.com/laurent22/joplin/releases/tag/v1.8.4) (p) | 2021-05-09T18:05:05Z | 1,190 | 132 | 452 | 1,774 |
| [v1.8.3](https://github.com/laurent22/joplin/releases/tag/v1.8.3) (p) | 2021-05-04T10:38:16Z | 1,957 | 303 | 934 | 3,194 |
| [v1.8.2](https://github.com/laurent22/joplin/releases/tag/v1.8.2) (p) | 2021-04-25T10:50:51Z | 2,281 | 433 | 1,282 | 3,996 |
| [v1.8.1](https://github.com/laurent22/joplin/releases/tag/v1.8.1) (p) | 2021-03-29T10:46:41Z | 3,493 | 823 | 2,447 | 6,763 |
| [v1.7.11](https://github.com/laurent22/joplin/releases/tag/v1.7.11) | 2021-02-03T12:50:01Z | 116,306 | 42,769 | 64,279 | 223,354 |
| [v1.7.10](https://github.com/laurent22/joplin/releases/tag/v1.7.10) | 2021-01-30T13:25:29Z | 14,089 | 4,853 | 4,480 | 23,422 |
| [v1.7.9](https://github.com/laurent22/joplin/releases/tag/v1.7.9) (p) | 2021-01-28T09:50:21Z | 502 | 133 | 498 | 1,133 |
| [v1.7.6](https://github.com/laurent22/joplin/releases/tag/v1.7.6) (p) | 2021-01-27T10:36:05Z | 310 | 93 | 287 | 690 |
| [v1.7.5](https://github.com/laurent22/joplin/releases/tag/v1.7.5) (p) | 2021-01-26T09:53:05Z | 388 | 204 | 454 | 1,046 |
| [v1.7.4](https://github.com/laurent22/joplin/releases/tag/v1.7.4) (p) | 2021-01-22T17:58:38Z | 693 | 204 | 625 | 1,522 |
| [v1.6.8](https://github.com/laurent22/joplin/releases/tag/v1.6.8) | 2021-01-20T18:11:34Z | 19,454 | 7,690 | 7,598 | 34,742 |
| [v1.6.8](https://github.com/laurent22/joplin/releases/tag/v1.6.8) | 2021-01-20T18:11:34Z | 19,542 | 7,691 | 7,599 | 34,832 |
| [v1.7.3](https://github.com/laurent22/joplin/releases/tag/v1.7.3) (p) | 2021-01-20T11:23:50Z | 345 | 76 | 442 | 863 |
| [v1.6.7](https://github.com/laurent22/joplin/releases/tag/v1.6.7) | 2021-01-11T23:20:33Z | 11,369 | 4,634 | 4,542 | 20,545 |
| [v1.6.6](https://github.com/laurent22/joplin/releases/tag/v1.6.6) | 2021-01-09T16:15:31Z | 12,555 | 3,417 | 4,793 | 20,765 |
| [v1.6.5](https://github.com/laurent22/joplin/releases/tag/v1.6.5) (p) | 2021-01-09T01:24:32Z | 1,312 | 72 | 308 | 1,692 |
| [v1.6.7](https://github.com/laurent22/joplin/releases/tag/v1.6.7) | 2021-01-11T23:20:33Z | 11,428 | 4,634 | 4,542 | 20,604 |
| [v1.6.6](https://github.com/laurent22/joplin/releases/tag/v1.6.6) | 2021-01-09T16:15:31Z | 12,577 | 3,417 | 4,793 | 20,787 |
| [v1.6.5](https://github.com/laurent22/joplin/releases/tag/v1.6.5) (p) | 2021-01-09T01:24:32Z | 1,349 | 72 | 308 | 1,729 |
| [v1.6.4](https://github.com/laurent22/joplin/releases/tag/v1.6.4) (p) | 2021-01-07T19:11:32Z | 391 | 78 | 203 | 672 |
| [v1.6.2](https://github.com/laurent22/joplin/releases/tag/v1.6.2) (p) | 2021-01-04T22:34:55Z | 673 | 228 | 590 | 1,491 |
| [v1.5.14](https://github.com/laurent22/joplin/releases/tag/v1.5.14) | 2020-12-30T01:48:46Z | 11,834 | 5,203 | 5,526 | 22,563 |
| [v1.5.14](https://github.com/laurent22/joplin/releases/tag/v1.5.14) | 2020-12-30T01:48:46Z | 11,897 | 5,203 | 5,526 | 22,626 |
| [v1.6.1](https://github.com/laurent22/joplin/releases/tag/v1.6.1) (p) | 2020-12-29T19:37:45Z | 171 | 36 | 168 | 375 |
| [v1.5.13](https://github.com/laurent22/joplin/releases/tag/v1.5.13) | 2020-12-29T18:29:15Z | 629 | 218 | 200 | 1,047 |
| [v1.5.12](https://github.com/laurent22/joplin/releases/tag/v1.5.12) | 2020-12-28T15:14:08Z | 2,409 | 1,769 | 923 | 5,101 |
| [v1.5.11](https://github.com/laurent22/joplin/releases/tag/v1.5.11) | 2020-12-27T19:54:07Z | 14,166 | 4,624 | 4,274 | 23,064 |
| [v1.5.11](https://github.com/laurent22/joplin/releases/tag/v1.5.11) | 2020-12-27T19:54:07Z | 14,166 | 4,625 | 4,275 | 23,066 |
| [v1.5.10](https://github.com/laurent22/joplin/releases/tag/v1.5.10) (p) | 2020-12-26T12:35:36Z | 294 | 107 | 269 | 670 |
| [v1.5.9](https://github.com/laurent22/joplin/releases/tag/v1.5.9) (p) | 2020-12-23T18:01:08Z | 327 | 372 | 410 | 1,109 |
| [v1.5.8](https://github.com/laurent22/joplin/releases/tag/v1.5.8) (p) | 2020-12-20T09:45:19Z | 566 | 165 | 642 | 1,373 |
| [v1.5.7](https://github.com/laurent22/joplin/releases/tag/v1.5.7) (p) | 2020-12-10T12:58:33Z | 889 | 254 | 993 | 2,136 |
| [v1.5.4](https://github.com/laurent22/joplin/releases/tag/v1.5.4) (p) | 2020-12-05T12:07:49Z | 692 | 166 | 634 | 1,492 |
| [v1.4.19](https://github.com/laurent22/joplin/releases/tag/v1.4.19) | 2020-12-01T11:11:16Z | 26,597 | 13,456 | 11,679 | 51,732 |
| [v1.4.18](https://github.com/laurent22/joplin/releases/tag/v1.4.18) | 2020-11-28T12:21:41Z | 11,377 | 3,879 | 3,138 | 18,394 |
| [v1.4.19](https://github.com/laurent22/joplin/releases/tag/v1.4.19) | 2020-12-01T11:11:16Z | 26,660 | 13,465 | 11,679 | 51,804 |
| [v1.4.18](https://github.com/laurent22/joplin/releases/tag/v1.4.18) | 2020-11-28T12:21:41Z | 11,398 | 3,879 | 3,138 | 18,415 |
| [v1.4.16](https://github.com/laurent22/joplin/releases/tag/v1.4.16) | 2020-11-27T19:40:16Z | 1,481 | 829 | 597 | 2,907 |
| [v1.4.15](https://github.com/laurent22/joplin/releases/tag/v1.4.15) | 2020-11-27T13:25:43Z | 897 | 486 | 274 | 1,657 |
| [v1.4.12](https://github.com/laurent22/joplin/releases/tag/v1.4.12) | 2020-11-23T18:58:07Z | 3,029 | 1,327 | 1,303 | 5,659 |
| [v1.4.11](https://github.com/laurent22/joplin/releases/tag/v1.4.11) (p) | 2020-11-19T23:06:51Z | 1,857 | 159 | 593 | 2,609 |
| [v1.4.15](https://github.com/laurent22/joplin/releases/tag/v1.4.15) | 2020-11-27T13:25:43Z | 898 | 486 | 274 | 1,658 |
| [v1.4.12](https://github.com/laurent22/joplin/releases/tag/v1.4.12) | 2020-11-23T18:58:07Z | 3,032 | 1,327 | 1,304 | 5,663 |
| [v1.4.11](https://github.com/laurent22/joplin/releases/tag/v1.4.11) (p) | 2020-11-19T23:06:51Z | 1,908 | 160 | 593 | 2,661 |
| [v1.4.10](https://github.com/laurent22/joplin/releases/tag/v1.4.10) (p) | 2020-11-14T09:53:15Z | 631 | 198 | 686 | 1,515 |
| [v1.4.9](https://github.com/laurent22/joplin/releases/tag/v1.4.9) (p) | 2020-11-11T14:23:17Z | 707 | 143 | 404 | 1,254 |
| [v1.4.9](https://github.com/laurent22/joplin/releases/tag/v1.4.9) (p) | 2020-11-11T14:23:17Z | 722 | 144 | 404 | 1,270 |
| [v1.4.7](https://github.com/laurent22/joplin/releases/tag/v1.4.7) (p) | 2020-11-07T18:23:29Z | 520 | 175 | 516 | 1,211 |
| [v1.3.18](https://github.com/laurent22/joplin/releases/tag/v1.3.18) | 2020-11-06T12:07:02Z | 31,861 | 11,337 | 10,515 | 53,713 |
| [v1.3.18](https://github.com/laurent22/joplin/releases/tag/v1.3.18) | 2020-11-06T12:07:02Z | 31,926 | 11,337 | 10,516 | 53,779 |
| [v1.3.17](https://github.com/laurent22/joplin/releases/tag/v1.3.17) (p) | 2020-11-06T11:35:15Z | 50 | 27 | 25 | 102 |
| [v1.4.6](https://github.com/laurent22/joplin/releases/tag/v1.4.6) (p) | 2020-11-05T22:44:12Z | 532 | 95 | 55 | 682 |
| [v1.3.15](https://github.com/laurent22/joplin/releases/tag/v1.3.15) | 2020-11-04T12:22:50Z | 2,438 | 1,301 | 848 | 4,587 |
| [v1.4.6](https://github.com/laurent22/joplin/releases/tag/v1.4.6) (p) | 2020-11-05T22:44:12Z | 551 | 95 | 55 | 701 |
| [v1.3.15](https://github.com/laurent22/joplin/releases/tag/v1.3.15) | 2020-11-04T12:22:50Z | 2,456 | 1,301 | 848 | 4,605 |
| [v1.3.11](https://github.com/laurent22/joplin/releases/tag/v1.3.11) (p) | 2020-10-31T13:22:20Z | 699 | 189 | 484 | 1,372 |
| [v1.3.10](https://github.com/laurent22/joplin/releases/tag/v1.3.10) (p) | 2020-10-29T13:27:14Z | 378 | 118 | 319 | 815 |
| [v1.3.9](https://github.com/laurent22/joplin/releases/tag/v1.3.9) (p) | 2020-10-23T16:04:26Z | 839 | 245 | 636 | 1,720 |
| [v1.3.9](https://github.com/laurent22/joplin/releases/tag/v1.3.9) (p) | 2020-10-23T16:04:26Z | 840 | 246 | 636 | 1,722 |
| [v1.3.8](https://github.com/laurent22/joplin/releases/tag/v1.3.8) (p) | 2020-10-21T18:46:29Z | 519 | 120 | 333 | 972 |
| [v1.3.7](https://github.com/laurent22/joplin/releases/tag/v1.3.7) (p) | 2020-10-20T11:35:55Z | 297 | 88 | 345 | 730 |
| [v1.3.5](https://github.com/laurent22/joplin/releases/tag/v1.3.5) (p) | 2020-10-17T14:26:35Z | 473 | 137 | 409 | 1,019 |
| [v1.3.3](https://github.com/laurent22/joplin/releases/tag/v1.3.3) (p) | 2020-10-17T10:56:57Z | 121 | 49 | 36 | 206 |
| [v1.3.2](https://github.com/laurent22/joplin/releases/tag/v1.3.2) (p) | 2020-10-11T20:39:49Z | 667 | 184 | 568 | 1,419 |
| [v1.3.2](https://github.com/laurent22/joplin/releases/tag/v1.3.2) (p) | 2020-10-11T20:39:49Z | 667 | 185 | 568 | 1,420 |
| [v1.3.1](https://github.com/laurent22/joplin/releases/tag/v1.3.1) (p) | 2020-10-11T15:10:18Z | 85 | 54 | 46 | 185 |
| [v1.2.6](https://github.com/laurent22/joplin/releases/tag/v1.2.6) | 2020-10-09T13:56:59Z | 45,498 | 17,740 | 14,047 | 77,285 |
| [v1.2.6](https://github.com/laurent22/joplin/releases/tag/v1.2.6) | 2020-10-09T13:56:59Z | 45,576 | 17,741 | 14,047 | 77,364 |
| [v1.2.4](https://github.com/laurent22/joplin/releases/tag/v1.2.4) (p) | 2020-09-30T07:34:29Z | 816 | 250 | 800 | 1,866 |
| [v1.2.3](https://github.com/laurent22/joplin/releases/tag/v1.2.3) (p) | 2020-09-29T15:13:02Z | 220 | 68 | 82 | 370 |
| [v1.2.2](https://github.com/laurent22/joplin/releases/tag/v1.2.2) (p) | 2020-09-22T20:31:55Z | 979 | 210 | 642 | 1,831 |
| [v1.1.4](https://github.com/laurent22/joplin/releases/tag/v1.1.4) | 2020-09-21T11:20:09Z | 27,839 | 13,510 | 7,756 | 49,105 |
| [v1.2.2](https://github.com/laurent22/joplin/releases/tag/v1.2.2) (p) | 2020-09-22T20:31:55Z | 997 | 210 | 642 | 1,849 |
| [v1.1.4](https://github.com/laurent22/joplin/releases/tag/v1.1.4) | 2020-09-21T11:20:09Z | 27,854 | 13,511 | 7,756 | 49,121 |
| [v1.1.3](https://github.com/laurent22/joplin/releases/tag/v1.1.3) (p) | 2020-09-17T10:30:37Z | 568 | 155 | 467 | 1,190 |
| [v1.1.2](https://github.com/laurent22/joplin/releases/tag/v1.1.2) (p) | 2020-09-15T12:58:38Z | 380 | 121 | 254 | 755 |
| [v1.1.1](https://github.com/laurent22/joplin/releases/tag/v1.1.1) (p) | 2020-09-11T23:32:47Z | 536 | 202 | 353 | 1,091 |
| [v1.0.245](https://github.com/laurent22/joplin/releases/tag/v1.0.245) | 2020-09-09T12:56:10Z | 21,807 | 10,012 | 5,645 | 37,464 |
| [v1.0.242](https://github.com/laurent22/joplin/releases/tag/v1.0.242) | 2020-09-04T22:00:34Z | 12,672 | 6,426 | 3,021 | 22,119 |
| [v1.0.241](https://github.com/laurent22/joplin/releases/tag/v1.0.241) | 2020-09-04T18:06:00Z | 25,262 | 5,861 | 5,081 | 36,204 |
| [v1.0.239](https://github.com/laurent22/joplin/releases/tag/v1.0.239) (p) | 2020-09-01T21:56:36Z | 790 | 234 | 407 | 1,431 |
| [v1.0.237](https://github.com/laurent22/joplin/releases/tag/v1.0.237) (p) | 2020-08-29T15:38:04Z | 596 | 932 | 344 | 1,872 |
| [v1.0.245](https://github.com/laurent22/joplin/releases/tag/v1.0.245) | 2020-09-09T12:56:10Z | 21,865 | 10,013 | 5,647 | 37,525 |
| [v1.0.242](https://github.com/laurent22/joplin/releases/tag/v1.0.242) | 2020-09-04T22:00:34Z | 12,695 | 6,426 | 3,022 | 22,143 |
| [v1.0.241](https://github.com/laurent22/joplin/releases/tag/v1.0.241) | 2020-09-04T18:06:00Z | 25,419 | 5,888 | 5,088 | 36,395 |
| [v1.0.239](https://github.com/laurent22/joplin/releases/tag/v1.0.239) (p) | 2020-09-01T21:56:36Z | 807 | 234 | 407 | 1,448 |
| [v1.0.237](https://github.com/laurent22/joplin/releases/tag/v1.0.237) (p) | 2020-08-29T15:38:04Z | 596 | 932 | 345 | 1,873 |
| [v1.0.236](https://github.com/laurent22/joplin/releases/tag/v1.0.236) (p) | 2020-08-28T09:16:54Z | 321 | 119 | 110 | 550 |
| [v1.0.235](https://github.com/laurent22/joplin/releases/tag/v1.0.235) (p) | 2020-08-18T22:08:01Z | 1,869 | 498 | 928 | 3,295 |
| [v1.0.234](https://github.com/laurent22/joplin/releases/tag/v1.0.234) (p) | 2020-08-17T23:13:02Z | 579 | 133 | 107 | 819 |
| [v1.0.233](https://github.com/laurent22/joplin/releases/tag/v1.0.233) | 2020-08-01T14:51:15Z | 44,384 | 18,202 | 12,367 | 74,953 |
| [v1.0.235](https://github.com/laurent22/joplin/releases/tag/v1.0.235) (p) | 2020-08-18T22:08:01Z | 1,880 | 498 | 928 | 3,306 |
| [v1.0.234](https://github.com/laurent22/joplin/releases/tag/v1.0.234) (p) | 2020-08-17T23:13:02Z | 585 | 133 | 107 | 825 |
| [v1.0.233](https://github.com/laurent22/joplin/releases/tag/v1.0.233) | 2020-08-01T14:51:15Z | 44,456 | 18,202 | 12,367 | 75,025 |
| [v1.0.232](https://github.com/laurent22/joplin/releases/tag/v1.0.232) (p) | 2020-07-28T22:34:40Z | 660 | 231 | 186 | 1,077 |
| [v1.0.227](https://github.com/laurent22/joplin/releases/tag/v1.0.227) | 2020-07-07T20:44:54Z | 40,936 | 15,288 | 9,641 | 65,865 |
| [v1.0.227](https://github.com/laurent22/joplin/releases/tag/v1.0.227) | 2020-07-07T20:44:54Z | 40,976 | 15,289 | 9,643 | 65,908 |
| [v1.0.226](https://github.com/laurent22/joplin/releases/tag/v1.0.226) (p) | 2020-07-04T10:21:26Z | 4,922 | 2,261 | 694 | 7,877 |
| [v1.0.224](https://github.com/laurent22/joplin/releases/tag/v1.0.224) | 2020-06-20T22:26:08Z | 24,817 | 11,015 | 6,013 | 41,845 |
| [v1.0.224](https://github.com/laurent22/joplin/releases/tag/v1.0.224) | 2020-06-20T22:26:08Z | 24,826 | 11,015 | 6,013 | 41,854 |
| [v1.0.223](https://github.com/laurent22/joplin/releases/tag/v1.0.223) (p) | 2020-06-20T11:51:27Z | 194 | 120 | 84 | 398 |
| [v1.0.221](https://github.com/laurent22/joplin/releases/tag/v1.0.221) (p) | 2020-06-20T01:44:20Z | 862 | 214 | 216 | 1,292 |
| [v1.0.220](https://github.com/laurent22/joplin/releases/tag/v1.0.220) | 2020-06-13T18:26:22Z | 32,206 | 9,929 | 6,421 | 48,556 |
| [v1.0.220](https://github.com/laurent22/joplin/releases/tag/v1.0.220) | 2020-06-13T18:26:22Z | 32,241 | 9,930 | 6,421 | 48,592 |
| [v1.0.218](https://github.com/laurent22/joplin/releases/tag/v1.0.218) | 2020-06-07T10:43:34Z | 14,552 | 6,977 | 2,962 | 24,491 |
| [v1.0.217](https://github.com/laurent22/joplin/releases/tag/v1.0.217) (p) | 2020-06-06T15:17:27Z | 232 | 101 | 60 | 393 |
| [v1.0.216](https://github.com/laurent22/joplin/releases/tag/v1.0.216) | 2020-05-24T14:21:01Z | 38,204 | 14,299 | 10,188 | 62,691 |
| [v1.0.214](https://github.com/laurent22/joplin/releases/tag/v1.0.214) (p) | 2020-05-21T17:15:15Z | 6,573 | 3,476 | 768 | 10,817 |
| [v1.0.217](https://github.com/laurent22/joplin/releases/tag/v1.0.217) (p) | 2020-06-06T15:17:27Z | 232 | 102 | 60 | 394 |
| [v1.0.216](https://github.com/laurent22/joplin/releases/tag/v1.0.216) | 2020-05-24T14:21:01Z | 38,264 | 14,299 | 10,188 | 62,751 |
| [v1.0.214](https://github.com/laurent22/joplin/releases/tag/v1.0.214) (p) | 2020-05-21T17:15:15Z | 6,579 | 3,476 | 768 | 10,823 |
| [v1.0.212](https://github.com/laurent22/joplin/releases/tag/v1.0.212) (p) | 2020-05-21T07:48:39Z | 218 | 76 | 53 | 347 |
| [v1.0.211](https://github.com/laurent22/joplin/releases/tag/v1.0.211) (p) | 2020-05-20T08:59:16Z | 307 | 140 | 93 | 540 |
| [v1.0.209](https://github.com/laurent22/joplin/releases/tag/v1.0.209) (p) | 2020-05-17T18:32:51Z | 1,399 | 860 | 153 | 2,412 |
| [v1.0.207](https://github.com/laurent22/joplin/releases/tag/v1.0.207) (p) | 2020-05-10T16:37:35Z | 1,201 | 271 | 1,022 | 2,494 |
| [v1.0.201](https://github.com/laurent22/joplin/releases/tag/v1.0.201) | 2020-04-15T22:55:13Z | 54,178 | 20,056 | 18,184 | 92,418 |
| [v1.0.201](https://github.com/laurent22/joplin/releases/tag/v1.0.201) | 2020-04-15T22:55:13Z | 54,191 | 20,056 | 18,184 | 92,431 |
| [v1.0.200](https://github.com/laurent22/joplin/releases/tag/v1.0.200) | 2020-04-12T12:17:46Z | 9,566 | 4,897 | 1,908 | 16,371 |
| [v1.0.199](https://github.com/laurent22/joplin/releases/tag/v1.0.199) | 2020-04-10T18:41:58Z | 19,517 | 5,894 | 3,794 | 29,205 |
| [v1.0.197](https://github.com/laurent22/joplin/releases/tag/v1.0.197) | 2020-03-30T17:21:22Z | 22,630 | 9,608 | 5,979 | 38,217 |
| [v1.0.199](https://github.com/laurent22/joplin/releases/tag/v1.0.199) | 2020-04-10T18:41:58Z | 19,527 | 5,894 | 3,794 | 29,215 |
| [v1.0.197](https://github.com/laurent22/joplin/releases/tag/v1.0.197) | 2020-03-30T17:21:22Z | 22,677 | 9,620 | 6,008 | 38,305 |
| [v1.0.195](https://github.com/laurent22/joplin/releases/tag/v1.0.195) | 2020-03-22T19:56:12Z | 19,087 | 7,954 | 4,510 | 31,551 |
| [v1.0.194](https://github.com/laurent22/joplin/releases/tag/v1.0.194) (p) | 2020-03-14T00:00:32Z | 1,290 | 1,389 | 522 | 3,201 |
| [v1.0.193](https://github.com/laurent22/joplin/releases/tag/v1.0.193) | 2020-03-08T08:58:53Z | 28,697 | 10,916 | 7,403 | 47,016 |
| [v1.0.192](https://github.com/laurent22/joplin/releases/tag/v1.0.192) (p) | 2020-03-06T23:27:52Z | 484 | 127 | 93 | 704 |
| [v1.0.193](https://github.com/laurent22/joplin/releases/tag/v1.0.193) | 2020-03-08T08:58:53Z | 28,700 | 10,916 | 7,404 | 47,020 |
| [v1.0.192](https://github.com/laurent22/joplin/releases/tag/v1.0.192) (p) | 2020-03-06T23:27:52Z | 484 | 127 | 94 | 705 |
| [v1.0.190](https://github.com/laurent22/joplin/releases/tag/v1.0.190) (p) | 2020-03-06T01:22:22Z | 383 | 96 | 89 | 568 |
| [v1.0.189](https://github.com/laurent22/joplin/releases/tag/v1.0.189) (p) | 2020-03-04T17:27:15Z | 356 | 101 | 99 | 556 |
| [v1.0.187](https://github.com/laurent22/joplin/releases/tag/v1.0.187) (p) | 2020-03-01T12:31:06Z | 926 | 235 | 272 | 1,433 |
| [v1.0.179](https://github.com/laurent22/joplin/releases/tag/v1.0.179) | 2020-01-24T22:42:41Z | 71,337 | 28,668 | 22,560 | 122,565 |
| [v1.0.187](https://github.com/laurent22/joplin/releases/tag/v1.0.187) (p) | 2020-03-01T12:31:06Z | 926 | 235 | 273 | 1,434 |
| [v1.0.179](https://github.com/laurent22/joplin/releases/tag/v1.0.179) | 2020-01-24T22:42:41Z | 71,349 | 28,679 | 22,562 | 122,590 |
| [v1.0.178](https://github.com/laurent22/joplin/releases/tag/v1.0.178) | 2020-01-20T19:06:45Z | 17,595 | 5,968 | 2,592 | 26,155 |
| [v1.0.177](https://github.com/laurent22/joplin/releases/tag/v1.0.177) (p) | 2019-12-30T14:40:40Z | 1,954 | 443 | 707 | 3,104 |
| [v1.0.176](https://github.com/laurent22/joplin/releases/tag/v1.0.176) (p) | 2019-12-14T10:36:44Z | 3,128 | 2,539 | 471 | 6,138 |
| [v1.0.175](https://github.com/laurent22/joplin/releases/tag/v1.0.175) | 2019-12-08T11:48:47Z | 73,312 | 16,963 | 16,558 | 106,833 |
| [v1.0.174](https://github.com/laurent22/joplin/releases/tag/v1.0.174) | 2019-11-12T18:20:58Z | 30,514 | 11,741 | 8,226 | 50,481 |
| [v1.0.177](https://github.com/laurent22/joplin/releases/tag/v1.0.177) (p) | 2019-12-30T14:40:40Z | 1,954 | 443 | 709 | 3,106 |
| [v1.0.176](https://github.com/laurent22/joplin/releases/tag/v1.0.176) (p) | 2019-12-14T10:36:44Z | 3,128 | 2,539 | 472 | 6,139 |
| [v1.0.175](https://github.com/laurent22/joplin/releases/tag/v1.0.175) | 2019-12-08T11:48:47Z | 73,341 | 16,963 | 16,566 | 106,870 |
| [v1.0.174](https://github.com/laurent22/joplin/releases/tag/v1.0.174) | 2019-11-12T18:20:58Z | 30,522 | 11,743 | 8,227 | 50,492 |
| [v1.0.173](https://github.com/laurent22/joplin/releases/tag/v1.0.173) | 2019-11-11T08:33:35Z | 5,103 | 2,084 | 750 | 7,937 |
| [v1.0.170](https://github.com/laurent22/joplin/releases/tag/v1.0.170) | 2019-10-13T22:13:04Z | 27,613 | 8,771 | 7,681 | 44,065 |
| [v1.0.170](https://github.com/laurent22/joplin/releases/tag/v1.0.170) | 2019-10-13T22:13:04Z | 27,620 | 8,772 | 7,682 | 44,074 |
| [v1.0.169](https://github.com/laurent22/joplin/releases/tag/v1.0.169) | 2019-09-27T18:35:13Z | 17,167 | 5,926 | 3,758 | 26,851 |
| [v1.0.168](https://github.com/laurent22/joplin/releases/tag/v1.0.168) | 2019-09-25T21:21:38Z | 5,336 | 2,278 | 722 | 8,336 |
| [v1.0.167](https://github.com/laurent22/joplin/releases/tag/v1.0.167) | 2019-09-10T08:48:37Z | 16,824 | 5,709 | 3,707 | 26,240 |
| [v1.0.166](https://github.com/laurent22/joplin/releases/tag/v1.0.166) | 2019-09-09T17:35:54Z | 1,961 | 566 | 240 | 2,767 |
| [v1.0.165](https://github.com/laurent22/joplin/releases/tag/v1.0.165) | 2019-08-14T21:46:29Z | 19,005 | 6,980 | 5,468 | 31,453 |
| [v1.0.161](https://github.com/laurent22/joplin/releases/tag/v1.0.161) | 2019-07-13T18:30:00Z | 19,306 | 6,357 | 4,140 | 29,803 |
| [v1.0.160](https://github.com/laurent22/joplin/releases/tag/v1.0.160) | 2019-06-15T00:21:40Z | 30,632 | 7,753 | 8,108 | 46,493 |
| [v1.0.159](https://github.com/laurent22/joplin/releases/tag/v1.0.159) | 2019-06-08T00:00:19Z | 5,200 | 2,183 | 1,120 | 8,503 |
| [v1.0.167](https://github.com/laurent22/joplin/releases/tag/v1.0.167) | 2019-09-10T08:48:37Z | 16,825 | 5,709 | 3,707 | 26,241 |
| [v1.0.166](https://github.com/laurent22/joplin/releases/tag/v1.0.166) | 2019-09-09T17:35:54Z | 1,962 | 566 | 240 | 2,768 |
| [v1.0.165](https://github.com/laurent22/joplin/releases/tag/v1.0.165) | 2019-08-14T21:46:29Z | 19,007 | 6,980 | 5,468 | 31,455 |
| [v1.0.161](https://github.com/laurent22/joplin/releases/tag/v1.0.161) | 2019-07-13T18:30:00Z | 19,308 | 6,357 | 4,140 | 29,805 |
| [v1.0.160](https://github.com/laurent22/joplin/releases/tag/v1.0.160) | 2019-06-15T00:21:40Z | 30,637 | 7,753 | 8,108 | 46,498 |
| [v1.0.159](https://github.com/laurent22/joplin/releases/tag/v1.0.159) | 2019-06-08T00:00:19Z | 5,200 | 2,183 | 1,122 | 8,505 |
| [v1.0.158](https://github.com/laurent22/joplin/releases/tag/v1.0.158) | 2019-05-27T19:01:18Z | 9,820 | 3,548 | 1,940 | 15,308 |
| [v1.0.157](https://github.com/laurent22/joplin/releases/tag/v1.0.157) | 2019-05-26T17:55:53Z | 2,183 | 849 | 295 | 3,327 |
| [v1.0.153](https://github.com/laurent22/joplin/releases/tag/v1.0.153) (p) | 2019-05-15T06:27:29Z | 854 | 107 | 110 | 1,071 |
| [v1.0.153](https://github.com/laurent22/joplin/releases/tag/v1.0.153) (p) | 2019-05-15T06:27:29Z | 855 | 107 | 110 | 1,072 |
| [v1.0.152](https://github.com/laurent22/joplin/releases/tag/v1.0.152) | 2019-05-13T09:08:07Z | 13,880 | 4,435 | 4,065 | 22,380 |
| [v1.0.151](https://github.com/laurent22/joplin/releases/tag/v1.0.151) | 2019-05-12T15:14:32Z | 1,958 | 538 | 961 | 3,457 |
| [v1.0.150](https://github.com/laurent22/joplin/releases/tag/v1.0.150) | 2019-05-12T11:27:48Z | 427 | 141 | 72 | 640 |
| [v1.0.150](https://github.com/laurent22/joplin/releases/tag/v1.0.150) | 2019-05-12T11:27:48Z | 428 | 141 | 72 | 641 |
| [v1.0.148](https://github.com/laurent22/joplin/releases/tag/v1.0.148) (p) | 2019-05-08T19:12:24Z | 135 | 61 | 99 | 295 |
| [v1.0.145](https://github.com/laurent22/joplin/releases/tag/v1.0.145) | 2019-05-03T09:16:53Z | 7,012 | 2,866 | 1,441 | 11,319 |
| [v1.0.143](https://github.com/laurent22/joplin/releases/tag/v1.0.143) | 2019-04-22T10:51:38Z | 11,923 | 3,555 | 2,784 | 18,262 |
| [v1.0.142](https://github.com/laurent22/joplin/releases/tag/v1.0.142) | 2019-04-02T16:44:51Z | 14,722 | 4,570 | 4,731 | 24,023 |
| [v1.0.140](https://github.com/laurent22/joplin/releases/tag/v1.0.140) | 2019-03-10T20:59:58Z | 13,636 | 4,176 | 3,327 | 21,139 |
| [v1.0.142](https://github.com/laurent22/joplin/releases/tag/v1.0.142) | 2019-04-02T16:44:51Z | 14,727 | 4,570 | 4,731 | 24,028 |
| [v1.0.140](https://github.com/laurent22/joplin/releases/tag/v1.0.140) | 2019-03-10T20:59:58Z | 13,636 | 4,176 | 3,336 | 21,148 |
| [v1.0.139](https://github.com/laurent22/joplin/releases/tag/v1.0.139) (p) | 2019-03-09T10:06:48Z | 128 | 68 | 50 | 246 |
| [v1.0.138](https://github.com/laurent22/joplin/releases/tag/v1.0.138) (p) | 2019-03-03T17:23:00Z | 156 | 94 | 88 | 338 |
| [v1.0.137](https://github.com/laurent22/joplin/releases/tag/v1.0.137) (p) | 2019-03-03T01:12:51Z | 596 | 63 | 87 | 746 |
| [v1.0.135](https://github.com/laurent22/joplin/releases/tag/v1.0.135) | 2019-02-27T23:36:57Z | 12,577 | 3,964 | 4,082 | 20,623 |
| [v1.0.135](https://github.com/laurent22/joplin/releases/tag/v1.0.135) | 2019-02-27T23:36:57Z | 12,581 | 3,964 | 4,082 | 20,627 |
| [v1.0.134](https://github.com/laurent22/joplin/releases/tag/v1.0.134) | 2019-02-27T10:21:44Z | 1,472 | 574 | 223 | 2,269 |
| [v1.0.132](https://github.com/laurent22/joplin/releases/tag/v1.0.132) | 2019-02-26T23:02:05Z | 1,092 | 457 | 100 | 1,649 |
| [v1.0.127](https://github.com/laurent22/joplin/releases/tag/v1.0.127) | 2019-02-14T23:12:48Z | 9,841 | 3,177 | 2,934 | 15,952 |
| [v1.0.127](https://github.com/laurent22/joplin/releases/tag/v1.0.127) | 2019-02-14T23:12:48Z | 9,846 | 3,177 | 2,934 | 15,957 |
| [v1.0.126](https://github.com/laurent22/joplin/releases/tag/v1.0.126) (p) | 2019-02-09T19:46:16Z | 938 | 79 | 121 | 1,138 |
| [v1.0.125](https://github.com/laurent22/joplin/releases/tag/v1.0.125) | 2019-01-26T18:14:33Z | 10,274 | 3,564 | 1,707 | 15,545 |
| [v1.0.125](https://github.com/laurent22/joplin/releases/tag/v1.0.125) | 2019-01-26T18:14:33Z | 10,278 | 3,564 | 1,707 | 15,549 |
| [v1.0.120](https://github.com/laurent22/joplin/releases/tag/v1.0.120) | 2019-01-10T21:42:53Z | 15,610 | 5,208 | 6,522 | 27,340 |
| [v1.0.119](https://github.com/laurent22/joplin/releases/tag/v1.0.119) | 2018-12-18T12:40:22Z | 8,911 | 3,267 | 2,018 | 14,196 |
| [v1.0.118](https://github.com/laurent22/joplin/releases/tag/v1.0.118) | 2019-01-11T08:34:13Z | 722 | 253 | 93 | 1,068 |
| [v1.0.117](https://github.com/laurent22/joplin/releases/tag/v1.0.117) | 2018-11-24T12:05:24Z | 16,266 | 4,902 | 6,385 | 27,553 |
| [v1.0.116](https://github.com/laurent22/joplin/releases/tag/v1.0.116) | 2018-11-20T19:09:24Z | 3,543 | 1,128 | 718 | 5,389 |
| [v1.0.116](https://github.com/laurent22/joplin/releases/tag/v1.0.116) | 2018-11-20T19:09:24Z | 3,564 | 1,129 | 718 | 5,411 |
| [v1.0.115](https://github.com/laurent22/joplin/releases/tag/v1.0.115) | 2018-11-16T16:52:02Z | 3,662 | 1,308 | 805 | 5,775 |
| [v1.0.114](https://github.com/laurent22/joplin/releases/tag/v1.0.114) | 2018-10-24T20:14:10Z | 11,401 | 3,507 | 3,834 | 18,742 |
| [v1.0.111](https://github.com/laurent22/joplin/releases/tag/v1.0.111) | 2018-09-30T20:15:09Z | 12,102 | 3,318 | 3,687 | 19,107 |
| [v1.0.111](https://github.com/laurent22/joplin/releases/tag/v1.0.111) | 2018-09-30T20:15:09Z | 12,109 | 3,320 | 3,687 | 19,116 |
| [v1.0.110](https://github.com/laurent22/joplin/releases/tag/v1.0.110) | 2018-09-29T12:29:21Z | 966 | 414 | 122 | 1,502 |
| [v1.0.109](https://github.com/laurent22/joplin/releases/tag/v1.0.109) | 2018-09-27T18:01:41Z | 2,107 | 710 | 332 | 3,149 |
| [v1.0.109](https://github.com/laurent22/joplin/releases/tag/v1.0.109) | 2018-09-27T18:01:41Z | 2,108 | 710 | 332 | 3,150 |
| [v1.0.108](https://github.com/laurent22/joplin/releases/tag/v1.0.108) (p) | 2018-09-29T18:49:29Z | 35 | 27 | 18 | 80 |
| [v1.0.107](https://github.com/laurent22/joplin/releases/tag/v1.0.107) | 2018-09-16T19:51:07Z | 7,155 | 2,142 | 1,713 | 11,010 |
| [v1.0.106](https://github.com/laurent22/joplin/releases/tag/v1.0.106) | 2018-09-08T15:23:40Z | 4,563 | 1,463 | 322 | 6,348 |
| [v1.0.105](https://github.com/laurent22/joplin/releases/tag/v1.0.105) | 2018-09-05T11:29:36Z | 4,661 | 1,595 | 1,461 | 7,717 |
| [v1.0.104](https://github.com/laurent22/joplin/releases/tag/v1.0.104) | 2018-06-28T20:25:36Z | 15,063 | 4,706 | 7,363 | 27,132 |
| [v1.0.104](https://github.com/laurent22/joplin/releases/tag/v1.0.104) | 2018-06-28T20:25:36Z | 15,064 | 4,706 | 7,366 | 27,136 |
| [v1.0.103](https://github.com/laurent22/joplin/releases/tag/v1.0.103) | 2018-06-21T19:38:13Z | 2,059 | 893 | 684 | 3,636 |
| [v1.0.101](https://github.com/laurent22/joplin/releases/tag/v1.0.101) | 2018-06-17T18:35:11Z | 1,315 | 613 | 413 | 2,341 |
| [v1.0.100](https://github.com/laurent22/joplin/releases/tag/v1.0.100) | 2018-06-14T17:41:43Z | 890 | 440 | 250 | 1,580 |
| [v1.0.99](https://github.com/laurent22/joplin/releases/tag/v1.0.99) | 2018-06-10T13:18:23Z | 1,260 | 603 | 385 | 2,248 |
| [v1.0.97](https://github.com/laurent22/joplin/releases/tag/v1.0.97) | 2018-06-09T19:23:34Z | 317 | 162 | 65 | 544 |
| [v1.0.96](https://github.com/laurent22/joplin/releases/tag/v1.0.96) | 2018-05-26T16:36:39Z | 2,726 | 1,230 | 1,707 | 5,663 |
| [v1.0.96](https://github.com/laurent22/joplin/releases/tag/v1.0.96) | 2018-05-26T16:36:39Z | 2,726 | 1,231 | 1,707 | 5,664 |
| [v1.0.95](https://github.com/laurent22/joplin/releases/tag/v1.0.95) | 2018-05-25T13:04:30Z | 424 | 225 | 129 | 778 |
| [v1.0.94](https://github.com/laurent22/joplin/releases/tag/v1.0.94) | 2018-05-21T20:52:59Z | 1,138 | 591 | 404 | 2,133 |
| [v1.0.93](https://github.com/laurent22/joplin/releases/tag/v1.0.93) | 2018-05-14T11:36:01Z | 1,796 | 1,214 | 766 | 3,776 |
| [v1.0.93](https://github.com/laurent22/joplin/releases/tag/v1.0.93) | 2018-05-14T11:36:01Z | 1,796 | 1,219 | 766 | 3,781 |
| [v1.0.91](https://github.com/laurent22/joplin/releases/tag/v1.0.91) | 2018-05-10T14:48:04Z | 832 | 558 | 317 | 1,707 |
| [v1.0.89](https://github.com/laurent22/joplin/releases/tag/v1.0.89) | 2018-05-09T13:05:05Z | 500 | 238 | 118 | 856 |
| [v1.0.85](https://github.com/laurent22/joplin/releases/tag/v1.0.85) | 2018-05-01T21:08:24Z | 1,657 | 957 | 641 | 3,255 |
| [v1.0.83](https://github.com/laurent22/joplin/releases/tag/v1.0.83) | 2018-04-04T19:43:58Z | 5,230 | 2,538 | 2,665 | 10,433 |
| [v1.0.83](https://github.com/laurent22/joplin/releases/tag/v1.0.83) | 2018-04-04T19:43:58Z | 5,263 | 2,538 | 2,665 | 10,466 |
| [v1.0.82](https://github.com/laurent22/joplin/releases/tag/v1.0.82) | 2018-03-31T19:16:31Z | 696 | 412 | 129 | 1,237 |
| [v1.0.81](https://github.com/laurent22/joplin/releases/tag/v1.0.81) | 2018-03-28T08:13:58Z | 1,003 | 603 | 790 | 2,396 |
| [v1.0.79](https://github.com/laurent22/joplin/releases/tag/v1.0.79) | 2018-03-23T18:00:11Z | 934 | 545 | 388 | 1,867 |
| [v1.0.79](https://github.com/laurent22/joplin/releases/tag/v1.0.79) | 2018-03-23T18:00:11Z | 934 | 545 | 389 | 1,868 |
| [v1.0.78](https://github.com/laurent22/joplin/releases/tag/v1.0.78) | 2018-03-17T15:27:18Z | 1,315 | 900 | 879 | 3,094 |
| [v1.0.77](https://github.com/laurent22/joplin/releases/tag/v1.0.77) | 2018-03-16T15:12:35Z | 182 | 111 | 53 | 346 |
| [v1.0.72](https://github.com/laurent22/joplin/releases/tag/v1.0.72) | 2018-03-14T09:44:35Z | 411 | 263 | 65 | 739 |
| [v1.0.70](https://github.com/laurent22/joplin/releases/tag/v1.0.70) | 2018-02-28T20:04:30Z | 1,858 | 1,057 | 1,262 | 4,177 |
| [v1.0.67](https://github.com/laurent22/joplin/releases/tag/v1.0.67) | 2018-02-19T22:51:08Z | 1,818 | 610 | 0 | 2,428 |
| [v1.0.67](https://github.com/laurent22/joplin/releases/tag/v1.0.67) | 2018-02-19T22:51:08Z | 1,818 | 611 | 0 | 2,429 |
| [v1.0.66](https://github.com/laurent22/joplin/releases/tag/v1.0.66) | 2018-02-18T23:09:09Z | 331 | 141 | 90 | 562 |
| [v1.0.65](https://github.com/laurent22/joplin/releases/tag/v1.0.65) | 2018-02-17T20:02:25Z | 197 | 135 | 138 | 470 |
| [v1.0.64](https://github.com/laurent22/joplin/releases/tag/v1.0.64) | 2018-02-16T00:58:20Z | 1,088 | 550 | 1,128 | 2,766 |
| [v1.0.63](https://github.com/laurent22/joplin/releases/tag/v1.0.63) | 2018-02-14T19:40:36Z | 305 | 167 | 98 | 570 |
| [v1.0.62](https://github.com/laurent22/joplin/releases/tag/v1.0.62) | 2018-02-12T20:19:58Z | 563 | 307 | 373 | 1,243 |
| [v1.0.62](https://github.com/laurent22/joplin/releases/tag/v1.0.62) | 2018-02-12T20:19:58Z | 566 | 307 | 373 | 1,246 |
| [v0.10.61](https://github.com/laurent22/joplin/releases/tag/v0.10.61) | 2018-02-08T18:27:39Z | 975 | 641 | 969 | 2,585 |
| [v0.10.60](https://github.com/laurent22/joplin/releases/tag/v0.10.60) | 2018-02-06T13:09:56Z | 725 | 527 | 557 | 1,809 |
| [v0.10.54](https://github.com/laurent22/joplin/releases/tag/v0.10.54) | 2018-01-31T20:21:30Z | 1,823 | 1,466 | 328 | 3,617 |
| [v0.10.54](https://github.com/laurent22/joplin/releases/tag/v0.10.54) | 2018-01-31T20:21:30Z | 1,824 | 1,466 | 328 | 3,618 |
| [v0.10.52](https://github.com/laurent22/joplin/releases/tag/v0.10.52) | 2018-01-31T19:25:18Z | 50 | 640 | 21 | 711 |
| [v0.10.51](https://github.com/laurent22/joplin/releases/tag/v0.10.51) | 2018-01-28T18:47:02Z | 1,332 | 1,605 | 332 | 3,269 |
| [v0.10.48](https://github.com/laurent22/joplin/releases/tag/v0.10.48) | 2018-01-23T11:19:51Z | 1,968 | 1,758 | 36 | 3,762 |
| [v0.10.47](https://github.com/laurent22/joplin/releases/tag/v0.10.47) | 2018-01-16T17:27:17Z | 1,233 | 1,277 | 72 | 2,582 |
| [v0.10.47](https://github.com/laurent22/joplin/releases/tag/v0.10.47) | 2018-01-16T17:27:17Z | 1,233 | 1,278 | 72 | 2,583 |
| [v0.10.43](https://github.com/laurent22/joplin/releases/tag/v0.10.43) | 2018-01-08T10:12:10Z | 3,445 | 2,362 | 1,213 | 7,020 |
| [v0.10.41](https://github.com/laurent22/joplin/releases/tag/v0.10.41) | 2018-01-05T20:38:12Z | 1,040 | 1,555 | 247 | 2,842 |
| [v0.10.40](https://github.com/laurent22/joplin/releases/tag/v0.10.40) | 2018-01-02T23:16:57Z | 1,599 | 1,795 | 344 | 3,738 |
| [v0.10.39](https://github.com/laurent22/joplin/releases/tag/v0.10.39) | 2017-12-11T21:19:44Z | 5,837 | 4,309 | 3,208 | 13,354 |
| [v0.10.39](https://github.com/laurent22/joplin/releases/tag/v0.10.39) | 2017-12-11T21:19:44Z | 5,847 | 4,320 | 3,218 | 13,385 |
| [v0.10.38](https://github.com/laurent22/joplin/releases/tag/v0.10.38) | 2017-12-08T10:12:06Z | 1,054 | 1,240 | 313 | 2,607 |
| [v0.10.37](https://github.com/laurent22/joplin/releases/tag/v0.10.37) | 2017-12-07T19:38:05Z | 270 | 855 | 90 | 1,215 |
| [v0.10.36](https://github.com/laurent22/joplin/releases/tag/v0.10.36) | 2017-12-05T09:34:40Z | 1,020 | 1,367 | 446 | 2,833 |
| [v0.10.35](https://github.com/laurent22/joplin/releases/tag/v0.10.35) | 2017-12-02T15:56:08Z | 1,583 | 1,558 | 752 | 3,893 |
| [v0.10.34](https://github.com/laurent22/joplin/releases/tag/v0.10.34) | 2017-12-02T14:50:28Z | 95 | 681 | 67 | 843 |
| [v0.10.33](https://github.com/laurent22/joplin/releases/tag/v0.10.33) | 2017-12-02T13:20:39Z | 67 | 669 | 30 | 766 |
| [v0.10.31](https://github.com/laurent22/joplin/releases/tag/v0.10.31) | 2017-12-01T09:56:44Z | 898 | 1,461 | 414 | 2,773 |
| [v0.10.30](https://github.com/laurent22/joplin/releases/tag/v0.10.30) | 2017-11-30T20:28:16Z | 728 | 1,379 | 427 | 2,534 |
| [v0.10.28](https://github.com/laurent22/joplin/releases/tag/v0.10.28) | 2017-11-30T01:07:46Z | 1,354 | 1,712 | 883 | 3,949 |
| [v0.10.26](https://github.com/laurent22/joplin/releases/tag/v0.10.26) | 2017-11-29T16:02:17Z | 195 | 711 | 268 | 1,174 |
| [v0.10.25](https://github.com/laurent22/joplin/releases/tag/v0.10.25) | 2017-11-24T14:27:49Z | 154 | 707 | 6,565 | 7,426 |
| [v0.10.23](https://github.com/laurent22/joplin/releases/tag/v0.10.23) | 2017-11-21T19:38:41Z | 142 | 671 | 43 | 856 |
| [v0.10.22](https://github.com/laurent22/joplin/releases/tag/v0.10.22) | 2017-11-20T21:45:57Z | 92 | 657 | 29 | 778 |
| [v0.10.21](https://github.com/laurent22/joplin/releases/tag/v0.10.21) | 2017-11-18T00:53:15Z | 59 | 650 | 23 | 732 |
| [v0.10.20](https://github.com/laurent22/joplin/releases/tag/v0.10.20) | 2017-11-17T17:18:25Z | 42 | 661 | 31 | 734 |
| [v0.10.19](https://github.com/laurent22/joplin/releases/tag/v0.10.19) | 2017-11-20T18:59:48Z | 31 | 660 | 28 | 719 |
| [v0.10.33](https://github.com/laurent22/joplin/releases/tag/v0.10.33) | 2017-12-02T13:20:39Z | 67 | 670 | 31 | 768 |
| [v0.10.31](https://github.com/laurent22/joplin/releases/tag/v0.10.31) | 2017-12-01T09:56:44Z | 898 | 1,462 | 415 | 2,775 |
| [v0.10.30](https://github.com/laurent22/joplin/releases/tag/v0.10.30) | 2017-11-30T20:28:16Z | 728 | 1,380 | 428 | 2,536 |
| [v0.10.28](https://github.com/laurent22/joplin/releases/tag/v0.10.28) | 2017-11-30T01:07:46Z | 1,356 | 1,713 | 884 | 3,953 |
| [v0.10.26](https://github.com/laurent22/joplin/releases/tag/v0.10.26) | 2017-11-29T16:02:17Z | 195 | 712 | 269 | 1,176 |
| [v0.10.25](https://github.com/laurent22/joplin/releases/tag/v0.10.25) | 2017-11-24T14:27:49Z | 154 | 708 | 6,578 | 7,440 |
| [v0.10.23](https://github.com/laurent22/joplin/releases/tag/v0.10.23) | 2017-11-21T19:38:41Z | 142 | 672 | 44 | 858 |
| [v0.10.22](https://github.com/laurent22/joplin/releases/tag/v0.10.22) | 2017-11-20T21:45:57Z | 92 | 658 | 30 | 780 |
| [v0.10.21](https://github.com/laurent22/joplin/releases/tag/v0.10.21) | 2017-11-18T00:53:15Z | 59 | 651 | 24 | 734 |
| [v0.10.20](https://github.com/laurent22/joplin/releases/tag/v0.10.20) | 2017-11-17T17:18:25Z | 42 | 662 | 32 | 736 |
| [v0.10.19](https://github.com/laurent22/joplin/releases/tag/v0.10.19) | 2017-11-20T18:59:48Z | 31 | 661 | 28 | 720 |

376
yarn.lock
View File

@@ -2638,9 +2638,9 @@ __metadata:
languageName: node
linkType: hard
"@electron/get@npm:^1.0.1":
version: 1.13.1
resolution: "@electron/get@npm:1.13.1"
"@electron/get@npm:^1.13.0":
version: 1.14.1
resolution: "@electron/get@npm:1.14.1"
dependencies:
debug: ^4.1.1
env-paths: ^2.2.0
@@ -2656,7 +2656,7 @@ __metadata:
optional: true
global-tunnel-ng:
optional: true
checksum: ea9863b73e8aedefb19cfe9b849c585b8bda29e11b90189b115680da4e9ab0167405efe63e5d141da2d13cde24eacacfde62f730f2730d047e58819fe69352f8
checksum: 21fec5e82bbee8f9fa183b46e05675b137c3130c7999d3b2b34a0047d1a06ec3c76347b9bbdb9911ba9b2123697804e360a15dda9db614c0226d5d4dcc4d6d15
languageName: node
linkType: hard
@@ -2669,16 +2669,18 @@ __metadata:
languageName: node
linkType: hard
"@electron/universal@npm:1.0.5":
version: 1.0.5
resolution: "@electron/universal@npm:1.0.5"
"@electron/universal@npm:1.2.1":
version: 1.2.1
resolution: "@electron/universal@npm:1.2.1"
dependencies:
"@malept/cross-spawn-promise": ^1.1.0
asar: ^3.0.3
asar: ^3.1.0
debug: ^4.3.1
dir-compare: ^2.4.0
fs-extra: ^9.0.1
checksum: 64eae3bbbfa422f28dbc1e92d12d954059cec7dac9ecc3ecad2c7895bb6cd10d30e8b3848092bfba8815bc71b60393a42f792751e50b9b5f643d6f1d03826b86
minimatch: ^3.0.4
plist: ^3.0.4
checksum: 9a7d98cf2b8414ff0274384fef1b72b5a545a0feb7ce03163d2e2ee1b13e4f7064dfe7147cdd652708a1314d1b5e68acdd907847a1747866ec8d2d3e757ec1f7
languageName: node
linkType: hard
@@ -3257,10 +3259,10 @@ __metadata:
compare-versions: ^3.2.1
countable: ^3.0.1
debounce: ^1.2.0
electron: 14.1.0
electron-builder: ^22.11.7
electron-notarize: ^1.0.0
electron-rebuild: ^3.2.3
electron: 18.2.0
electron-builder: ^23.0.3
electron-notarize: ^1.2.1
electron-rebuild: ^3.2.7
electron-window-state: ^4.1.1
formatcoords: ^1.1.3
fs-extra: 10.0.0
@@ -3296,6 +3298,7 @@ __metadata:
styled-components: 5.1.1
styled-system: 5.1.5
taboverride: ^4.0.3
tabulator-tables: ^5.1.4
tinymce: ^5.2.0
typescript: 4.0.5
dependenciesMeta:
@@ -3389,7 +3392,7 @@ __metadata:
languageName: unknown
linkType: soft
"@joplin/fork-htmlparser2@^4.1.39, @joplin/fork-htmlparser2@workspace:packages/fork-htmlparser2":
"@joplin/fork-htmlparser2@^4.1.40, @joplin/fork-htmlparser2@workspace:packages/fork-htmlparser2":
version: 0.0.0-use.local
resolution: "@joplin/fork-htmlparser2@workspace:packages/fork-htmlparser2"
dependencies:
@@ -3411,7 +3414,7 @@ __metadata:
languageName: unknown
linkType: soft
"@joplin/fork-sax@^1.2.43, @joplin/fork-sax@workspace:packages/fork-sax":
"@joplin/fork-sax@^1.2.44, @joplin/fork-sax@workspace:packages/fork-sax":
version: 0.0.0-use.local
resolution: "@joplin/fork-sax@workspace:packages/fork-sax"
dependencies:
@@ -3420,7 +3423,7 @@ __metadata:
languageName: unknown
linkType: soft
"@joplin/fork-uslug@^1.0.4, @joplin/fork-uslug@workspace:packages/fork-uslug":
"@joplin/fork-uslug@^1.0.5, @joplin/fork-uslug@workspace:packages/fork-uslug":
version: 0.0.0-use.local
resolution: "@joplin/fork-uslug@workspace:packages/fork-uslug"
dependencies:
@@ -3430,11 +3433,11 @@ __metadata:
languageName: unknown
linkType: soft
"@joplin/htmlpack@workspace:packages/htmlpack, @joplin/htmlpack@~2.8":
"@joplin/htmlpack@^2.8.1, @joplin/htmlpack@workspace:packages/htmlpack":
version: 0.0.0-use.local
resolution: "@joplin/htmlpack@workspace:packages/htmlpack"
dependencies:
"@joplin/fork-htmlparser2": ^4.1.39
"@joplin/fork-htmlparser2": ^4.1.40
"@types/fs-extra": ^9.0.6
css: ^3.0.0
datauri: ^4.1.0
@@ -3443,19 +3446,19 @@ __metadata:
languageName: unknown
linkType: soft
"@joplin/lib@workspace:packages/lib, @joplin/lib@~2.8":
"@joplin/lib@^2.8.1, @joplin/lib@workspace:packages/lib, @joplin/lib@~2.8":
version: 0.0.0-use.local
resolution: "@joplin/lib@workspace:packages/lib"
dependencies:
"@aws-sdk/client-s3": ^3.34.0
"@aws-sdk/s3-request-presigner": ^3.34.0
"@joplin/fork-htmlparser2": ^4.1.39
"@joplin/fork-sax": ^1.2.43
"@joplin/fork-uslug": ^1.0.4
"@joplin/htmlpack": ~2.8
"@joplin/renderer": ~2.8
"@joplin/turndown": ^4.0.61
"@joplin/turndown-plugin-gfm": ^1.0.43
"@joplin/fork-htmlparser2": ^4.1.40
"@joplin/fork-sax": ^1.2.44
"@joplin/fork-uslug": ^1.0.5
"@joplin/htmlpack": ^2.8.1
"@joplin/renderer": ^2.8.1
"@joplin/turndown": ^4.0.62
"@joplin/turndown-plugin-gfm": ^1.0.44
"@types/fs-extra": ^9.0.6
"@types/jest": ^26.0.15
"@types/js-yaml": ^4.0.2
@@ -3487,7 +3490,6 @@ __metadata:
jest: 26.6.3
js-yaml: ^4.1.0
levenshtein: ^1.0.5
lodash: ^4.17.20
markdown-it: ^10.0.0
md5: ^2.2.1
md5-file: ^4.0.0
@@ -3528,8 +3530,8 @@ __metadata:
version: 0.0.0-use.local
resolution: "@joplin/plugin-repo-cli@workspace:packages/plugin-repo-cli"
dependencies:
"@joplin/lib": ~2.8
"@joplin/tools": ~2.8
"@joplin/lib": ^2.8.1
"@joplin/tools": ^2.8.1
"@types/fs-extra": ^9.0.6
"@types/jest": ^26.0.15
"@types/node": ^14.14.6
@@ -3554,12 +3556,12 @@ __metadata:
languageName: unknown
linkType: soft
"@joplin/renderer@workspace:packages/renderer, @joplin/renderer@~2.8":
"@joplin/renderer@^2.8.1, @joplin/renderer@workspace:packages/renderer, @joplin/renderer@~2.8":
version: 0.0.0-use.local
resolution: "@joplin/renderer@workspace:packages/renderer"
dependencies:
"@joplin/fork-htmlparser2": ^4.1.39
"@joplin/fork-uslug": ^1.0.4
"@joplin/fork-htmlparser2": ^4.1.40
"@joplin/fork-uslug": ^1.0.5
"@types/jest": ^26.0.15
"@types/node": ^14.14.6
font-awesome-filetypes: ^2.1.0
@@ -3649,12 +3651,12 @@ __metadata:
languageName: unknown
linkType: soft
"@joplin/tools@workspace:packages/tools, @joplin/tools@~2.8":
"@joplin/tools@^2.8.1, @joplin/tools@workspace:packages/tools, @joplin/tools@~2.8":
version: 0.0.0-use.local
resolution: "@joplin/tools@workspace:packages/tools"
dependencies:
"@joplin/lib": ~2.8
"@joplin/renderer": ~2.8
"@joplin/lib": ^2.8.1
"@joplin/renderer": ^2.8.1
"@rmp135/sql-ts": ^1.6.0
"@types/fs-extra": ^9.0.6
"@types/jest": ^26.0.15
@@ -3677,6 +3679,7 @@ __metadata:
node-fetch: 1.7.3
relative: ^3.0.2
request: ^2.88.0
rss: ^1.2.2
sass: ^1.39.2
sharp: ^0.25.2
source-map-support: ^0.5.19
@@ -3687,7 +3690,7 @@ __metadata:
languageName: unknown
linkType: soft
"@joplin/turndown-plugin-gfm@^1.0.43, @joplin/turndown-plugin-gfm@workspace:packages/turndown-plugin-gfm":
"@joplin/turndown-plugin-gfm@^1.0.44, @joplin/turndown-plugin-gfm@workspace:packages/turndown-plugin-gfm":
version: 0.0.0-use.local
resolution: "@joplin/turndown-plugin-gfm@workspace:packages/turndown-plugin-gfm"
dependencies:
@@ -3699,7 +3702,7 @@ __metadata:
languageName: unknown
linkType: soft
"@joplin/turndown@^4.0.61, @joplin/turndown@workspace:packages/turndown":
"@joplin/turndown@^4.0.62, @joplin/turndown@workspace:packages/turndown":
version: 0.0.0-use.local
resolution: "@joplin/turndown@workspace:packages/turndown"
dependencies:
@@ -5815,13 +5818,20 @@ __metadata:
languageName: node
linkType: hard
"@types/node@npm:^14.14.6, @types/node@npm:^14.6.2":
"@types/node@npm:^14.14.6":
version: 14.18.0
resolution: "@types/node@npm:14.18.0"
checksum: b120c26fe5f30bc358e861db8d7e401e419d14bd9dd25c022f3c2ea8b0b429d4c9efd77ad5d6d2a8bde61702a6786fb74d409f1b2cbb61c79133e2a65aab4fb1
languageName: node
linkType: hard
"@types/node@npm:^16.11.26":
version: 16.11.33
resolution: "@types/node@npm:16.11.33"
checksum: 5c86d3f1e3b996607b41405d368d2e19d410eee0054595cef73d230368a609a2863926e75ad19f5091f0fd742cd018b667d54c51292018dd8020a202a5b29fa9
languageName: node
linkType: hard
"@types/nodemailer@npm:^6.4.1":
version: 6.4.4
resolution: "@types/nodemailer@npm:6.4.4"
@@ -6944,10 +6954,10 @@ __metadata:
languageName: node
linkType: hard
"app-builder-bin@npm:3.7.1":
version: 3.7.1
resolution: "app-builder-bin@npm:3.7.1"
checksum: aae6152d7e7e6eabe35e5430f8b4733cc713bd3f80fdb861c5b675ebc8951aa26b520821d27c5ee31f05e850cdfd9b923b58064307f1ae583fb4e7434d380209
"app-builder-bin@npm:4.0.0":
version: 4.0.0
resolution: "app-builder-bin@npm:4.0.0"
checksum: c3c8fd85c371b7a396c1bb1160ab2e3231ba4309abea5b36a5b366e42511e347c65a33ff50d56f4960b337833d539c263137b0ba131e2fa268c32edeb6c9f683
languageName: node
linkType: hard
@@ -6958,36 +6968,37 @@ __metadata:
languageName: node
linkType: hard
"app-builder-lib@npm:22.14.10":
version: 22.14.10
resolution: "app-builder-lib@npm:22.14.10"
"app-builder-lib@npm:23.0.8":
version: 23.0.8
resolution: "app-builder-lib@npm:23.0.8"
dependencies:
7zip-bin: ~5.1.1
"@develar/schema-utils": ~2.6.5
"@electron/universal": 1.0.5
"@electron/universal": 1.2.1
"@malept/flatpak-bundler": ^0.4.0
async-exit-hook: ^2.0.1
bluebird-lst: ^1.0.9
builder-util: 22.14.7
builder-util-runtime: 8.9.2
builder-util: 23.0.8
builder-util-runtime: 9.0.2
chromium-pickle-js: ^0.2.0
debug: ^4.3.2
ejs: ^3.1.6
electron-osx-sign: ^0.5.0
electron-publish: 22.14.7
debug: ^4.3.4
ejs: ^3.1.7
electron-osx-sign: ^0.6.0
electron-publish: 23.0.8
form-data: ^4.0.0
fs-extra: ^10.0.0
hosted-git-info: ^4.0.2
fs-extra: ^10.1.0
hosted-git-info: ^4.1.0
is-ci: ^3.0.0
isbinaryfile: ^4.0.8
isbinaryfile: ^4.0.10
js-yaml: ^4.1.0
lazy-val: ^1.0.5
minimatch: ^3.0.4
minimatch: ^3.1.2
read-config-file: 6.2.0
sanitize-filename: ^1.6.3
semver: ^7.3.5
semver: ^7.3.7
tar: ^6.1.11
temp-file: ^3.4.0
checksum: 8e5021dab87b78cc52188cba15cb19bb28abf39e4d80c6c8f2fc0df69938d1a379b4c27d7229921d83a9c87f136115b7e8d8cd91676ed9711704c68533c85153
checksum: c1f72f86ffa0f69ef91e43ba9792e0b3f90d844ac620dbc64a320e067a172b8b55b276fe3d2174e177ee347fe4cba9bfc12e830792be91893f414bea7fead6a7
languageName: node
linkType: hard
@@ -7369,7 +7380,7 @@ __metadata:
languageName: node
linkType: hard
"asar@npm:^3.0.3":
"asar@npm:^3.1.0":
version: 3.1.0
resolution: "asar@npm:3.1.0"
dependencies:
@@ -7553,6 +7564,13 @@ __metadata:
languageName: node
linkType: hard
"async@npm:^3.2.3":
version: 3.2.3
resolution: "async@npm:3.2.3"
checksum: c4bee57ab2249af3dc83ca3ef9acfa8e822c0d5e5aa41bae3eaf7f673648343cd64ecd7d26091ffd357f3f044428b17b5f00098494b6cf8b6b3e9681f0636ca1
languageName: node
linkType: hard
"asynckit@npm:^0.4.0":
version: 0.4.0
resolution: "asynckit@npm:0.4.0"
@@ -8761,29 +8779,29 @@ __metadata:
languageName: node
linkType: hard
"builder-util-runtime@npm:8.9.2":
version: 8.9.2
resolution: "builder-util-runtime@npm:8.9.2"
"builder-util-runtime@npm:9.0.2":
version: 9.0.2
resolution: "builder-util-runtime@npm:9.0.2"
dependencies:
debug: ^4.3.2
debug: ^4.3.4
sax: ^1.2.4
checksum: 35adcd6162e2ed16635ff7b7ecc353e400dcbbb3e7cd01823bfefc7256cefca8c820f62d15a0f7dbee1c7495a5f1fba4e0e238857a79b48d5f6bd35064f27208
checksum: 867768865f55ed0f326f542fd0cfb10bb3619a952ef691bf9896b5dc84271639d177cf8c1ec28aba36d467743ba77886573c6c8bb7af90740e7ea18f81ef5daf
languageName: node
linkType: hard
"builder-util@npm:22.14.7":
version: 22.14.7
resolution: "builder-util@npm:22.14.7"
"builder-util@npm:23.0.8":
version: 23.0.8
resolution: "builder-util@npm:23.0.8"
dependencies:
7zip-bin: ~5.1.1
"@types/debug": ^4.1.6
"@types/fs-extra": ^9.0.11
app-builder-bin: 3.7.1
app-builder-bin: 4.0.0
bluebird-lst: ^1.0.9
builder-util-runtime: 8.9.2
builder-util-runtime: 9.0.2
chalk: ^4.1.1
cross-spawn: ^7.0.3
debug: ^4.3.2
debug: ^4.3.4
fs-extra: ^10.0.0
http-proxy-agent: ^5.0.0
https-proxy-agent: ^5.0.0
@@ -8792,7 +8810,7 @@ __metadata:
source-map-support: ^0.5.19
stat-mode: ^1.0.0
temp-file: ^3.4.0
checksum: 4f850a8d1bbf12823b6ca712aeaf99474a4799107b92f3aad64910935fe5b01ca1c6cc29e0c2344a03249ba88f654be3bd6775c2ef634977de44510dd36bb37d
checksum: 926c09a3962f56aad5483be1258c49ed4935c90ec4ea7c342e5998fbb5652cbee0e18a047e0c644786a63c9b4cecfa6de1e64b1c49fb2961109c892c11941b0e
languageName: node
linkType: hard
@@ -9252,7 +9270,7 @@ __metadata:
languageName: node
linkType: hard
"chalk@npm:^4.0.0, chalk@npm:^4.1.0, chalk@npm:^4.1.1, chalk@npm:^4.1.2":
"chalk@npm:^4.0.0, chalk@npm:^4.0.2, chalk@npm:^4.1.0, chalk@npm:^4.1.1, chalk@npm:^4.1.2":
version: 4.1.2
resolution: "chalk@npm:4.1.2"
dependencies:
@@ -9873,7 +9891,7 @@ __metadata:
languageName: node
linkType: hard
"colors@npm:^1.1.2, colors@npm:^1.3.3, colors@npm:^1.4.0":
"colors@npm:^1.1.2, colors@npm:^1.4.0":
version: 1.4.0
resolution: "colors@npm:1.4.0"
checksum: 98aa2c2418ad87dedf25d781be69dc5fc5908e279d9d30c34d8b702e586a0474605b3a189511482b9d5ed0d20c867515d22749537f7bc546256c6014f3ebdcec
@@ -11695,7 +11713,7 @@ __metadata:
languageName: node
linkType: hard
"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.0.1, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1, debug@npm:^4.3.2":
"debug@npm:4, debug@npm:^4.0.0, debug@npm:^4.0.1, debug@npm:^4.1.0, debug@npm:^4.1.1, debug@npm:^4.3.1":
version: 4.3.3
resolution: "debug@npm:4.3.3"
dependencies:
@@ -11740,6 +11758,18 @@ __metadata:
languageName: node
linkType: hard
"debug@npm:^4.3.4":
version: 4.3.4
resolution: "debug@npm:4.3.4"
dependencies:
ms: 2.1.2
peerDependenciesMeta:
supports-color:
optional: true
checksum: 3dbad3f94ea64f34431a9cbf0bafb61853eda57bff2880036153438f50fb5a84f27683ba0d8e5426bf41a8c6ff03879488120cf5b3a761e77953169c0600a708
languageName: node
linkType: hard
"debuglog@npm:^1.0.1":
version: 1.0.1
resolution: "debuglog@npm:1.0.1"
@@ -12380,27 +12410,27 @@ __metadata:
languageName: node
linkType: hard
"dmg-builder@npm:22.14.10":
version: 22.14.10
resolution: "dmg-builder@npm:22.14.10"
"dmg-builder@npm:23.0.8":
version: 23.0.8
resolution: "dmg-builder@npm:23.0.8"
dependencies:
app-builder-lib: 22.14.10
builder-util: 22.14.7
builder-util-runtime: 8.9.2
dmg-license: ^1.0.9
app-builder-lib: 23.0.8
builder-util: 23.0.8
builder-util-runtime: 9.0.2
dmg-license: ^1.0.11
fs-extra: ^10.0.0
iconv-lite: ^0.6.2
js-yaml: ^4.1.0
dependenciesMeta:
dmg-license:
optional: true
checksum: f48280f7a14791d94378f8d9b00f19705cafb3d26d1a86a6c2fd698f2ad25cb887b4f437f883f5df62406754bdcdf1203e7199baaf8ae606d7b570c285fbfb2d
checksum: 8a36e199e1739cc9b3a242136e6ffb6cd7971417c2a14866097b4b348fab0ae5b96509ca946bb5e22e1359590d7c7b93b7cbff0997cbd1c3a6c8cc5bec1d17a6
languageName: node
linkType: hard
"dmg-license@npm:^1.0.9":
version: 1.0.10
resolution: "dmg-license@npm:1.0.10"
"dmg-license@npm:^1.0.11":
version: 1.0.11
resolution: "dmg-license@npm:1.0.11"
dependencies:
"@types/plist": ^3.0.1
"@types/verror": ^1.10.3
@@ -12737,7 +12767,7 @@ __metadata:
languageName: node
linkType: hard
"ejs@npm:^3.1.5, ejs@npm:^3.1.6":
"ejs@npm:^3.1.5":
version: 3.1.6
resolution: "ejs@npm:3.1.6"
dependencies:
@@ -12748,16 +12778,27 @@ __metadata:
languageName: node
linkType: hard
"electron-builder@npm:^22.11.7":
version: 22.14.10
resolution: "electron-builder@npm:22.14.10"
"ejs@npm:^3.1.7":
version: 3.1.7
resolution: "ejs@npm:3.1.7"
dependencies:
jake: ^10.8.5
bin:
ejs: bin/cli.js
checksum: fe40764af39955ce8f8b116716fc8b911959946698edb49ecab85df597746c07aa65d5b74ead28a1e2ffa75b0f92d9bedd752f1c29437da6137b3518271e988c
languageName: node
linkType: hard
"electron-builder@npm:^23.0.3":
version: 23.0.8
resolution: "electron-builder@npm:23.0.8"
dependencies:
"@types/yargs": ^17.0.1
app-builder-lib: 22.14.10
builder-util: 22.14.7
builder-util-runtime: 8.9.2
app-builder-lib: 23.0.8
builder-util: 23.0.8
builder-util-runtime: 9.0.2
chalk: ^4.1.1
dmg-builder: 22.14.10
dmg-builder: 23.0.8
fs-extra: ^10.0.0
is-ci: ^3.0.0
lazy-val: ^1.0.5
@@ -12767,23 +12808,23 @@ __metadata:
bin:
electron-builder: cli.js
install-app-deps: install-app-deps.js
checksum: 353cbeb2e5f1d670d7315b2ba4b1ada5c03b553641fb4ce0c06c3e7443ca037536bdbf07c18951b8a899ff7c59b5ebcc6cbdad9e9789f6eddef2703b8b1d83ad
checksum: 56da948ce639b3a24b7a746bb9598bcabffb948d0494cc410b927d5e623a6b16e3ea1a9ef567b4c8a3f121b44e90200defde2289e8ef7f5942e0946a43e9ffae
languageName: node
linkType: hard
"electron-notarize@npm:^1.0.0":
version: 1.1.1
resolution: "electron-notarize@npm:1.1.1"
"electron-notarize@npm:^1.2.1":
version: 1.2.1
resolution: "electron-notarize@npm:1.2.1"
dependencies:
debug: ^4.1.1
fs-extra: ^9.0.1
checksum: c1f822761277c817c3b7b5ed1ef2a2aabf70733f79e670b2f0b5bac31b9d63fb9ef4d9fae2051192727d811c6b6007de846e39844ab51d13986c1771d5d04d28
checksum: d109136a855b31020cb833a51dcf5a3aa6c0ee5b95ca8f6aa5d6296a299aa8fe46bb15cc2fa9189ab97da8c4402c675af7c592c46d7940f0e2662c59a9e499fd
languageName: node
linkType: hard
"electron-osx-sign@npm:^0.5.0":
version: 0.5.0
resolution: "electron-osx-sign@npm:0.5.0"
"electron-osx-sign@npm:^0.6.0":
version: 0.6.0
resolution: "electron-osx-sign@npm:0.6.0"
dependencies:
bluebird: ^3.5.0
compare-version: ^0.1.2
@@ -12794,36 +12835,36 @@ __metadata:
bin:
electron-osx-flat: bin/electron-osx-flat.js
electron-osx-sign: bin/electron-osx-sign.js
checksum: ca1e55d8cb0987b78bfaf197860e73f7e6266cb219f3d6fd32f25665a8393efb284115db9e2246b42f75cdf6163c148060aff8a02960f4f810c6502d6f7d447c
checksum: b688f9efb013670b4226cff7c38101e7b1384ea44e1ab203259995f1eefc019c63aa18e936217a76d33b5a5a452b987ab3d86a56a961294582ce42acbb950de6
languageName: node
linkType: hard
"electron-publish@npm:22.14.7":
version: 22.14.7
resolution: "electron-publish@npm:22.14.7"
"electron-publish@npm:23.0.8":
version: 23.0.8
resolution: "electron-publish@npm:23.0.8"
dependencies:
"@types/fs-extra": ^9.0.11
builder-util: 22.14.7
builder-util-runtime: 8.9.2
builder-util: 23.0.8
builder-util-runtime: 9.0.2
chalk: ^4.1.1
fs-extra: ^10.0.0
lazy-val: ^1.0.5
mime: ^2.5.2
checksum: a1584c23dc34e4c19f0a7418706715b0e39caf6516195cd6426bdbf432164a4af5993851b7c0a4eda72883ba0b24ab711483772fa85fc97b88de93d817c90f0c
checksum: 511ea2a71aa48e6990c2fb8b38684c31e7026f6dd82eebeacf9822e13160474382a91233a280e92e160717f250ebcc81be92f61b92bb231d815d99e52300ba16
languageName: node
linkType: hard
"electron-rebuild@npm:^3.2.3":
version: 3.2.5
resolution: "electron-rebuild@npm:3.2.5"
"electron-rebuild@npm:^3.2.7":
version: 3.2.7
resolution: "electron-rebuild@npm:3.2.7"
dependencies:
"@malept/cross-spawn-promise": ^2.0.0
colors: ^1.3.3
chalk: ^4.0.0
debug: ^4.1.1
detect-libc: ^1.0.3
fs-extra: ^10.0.0
got: ^11.7.0
lzma-native: ^8.0.1
lzma-native: ^8.0.5
node-abi: ^3.0.0
node-api-version: ^0.1.4
node-gyp: ^8.4.0
@@ -12833,7 +12874,7 @@ __metadata:
yargs: ^17.0.1
bin:
electron-rebuild: lib/src/cli.js
checksum: 544ec1f1297c88166a1bcb34173f8144f7de147c10be62cbb3e4503cfe67cd562870c0d8713257a5b6433e0ac5f97d465621c85c92dce3378d597db0dff244ed
checksum: cb466366910d020c4e6d36a42f87dfd616e5dbf4c2636244575873400be2ec2b76ab916c73f441fdcf90baa17afec8cb45a4ff42c7e0291aa0b7a7fca91d5ad2
languageName: node
linkType: hard
@@ -12862,16 +12903,16 @@ __metadata:
languageName: node
linkType: hard
"electron@npm:14.1.0":
version: 14.1.0
resolution: "electron@npm:14.1.0"
"electron@npm:18.2.0":
version: 18.2.0
resolution: "electron@npm:18.2.0"
dependencies:
"@electron/get": ^1.0.1
"@types/node": ^14.6.2
"@electron/get": ^1.13.0
"@types/node": ^16.11.26
extract-zip: ^1.0.3
bin:
electron: cli.js
checksum: 8b17f8cabba2b6842e71e11a8889f366712f32219d35c49f093d69939ff78c22b0e0870ec1a4ab851270015e43f00f9d759b0283998fd2d3065c8c20eca8b597
checksum: 242169d6e22854248e427326a03910b96311333d5dd57aa0e4cd9cef733aa8c2e893b16269c32514ad325468cdc08c41736d6f1f6791770cad236652fe06662c
languageName: node
linkType: hard
@@ -16601,7 +16642,7 @@ __metadata:
languageName: node
linkType: hard
"hosted-git-info@npm:^4.0.1, hosted-git-info@npm:^4.0.2":
"hosted-git-info@npm:^4.0.1":
version: 4.0.2
resolution: "hosted-git-info@npm:4.0.2"
dependencies:
@@ -16610,6 +16651,15 @@ __metadata:
languageName: node
linkType: hard
"hosted-git-info@npm:^4.1.0":
version: 4.1.0
resolution: "hosted-git-info@npm:4.1.0"
dependencies:
lru-cache: ^6.0.0
checksum: c3f87b3c2f7eb8c2748c8f49c0c2517c9a95f35d26f4bf54b2a8cba05d2e668f3753548b6ea366b18ec8dadb4e12066e19fa382a01496b0ffa0497eb23cbe461
languageName: node
linkType: hard
"html-encoding-sniffer@npm:^1.0.2":
version: 1.0.2
resolution: "html-encoding-sniffer@npm:1.0.2"
@@ -18280,13 +18330,20 @@ __metadata:
languageName: node
linkType: hard
"isbinaryfile@npm:^4.0.0, isbinaryfile@npm:^4.0.8":
"isbinaryfile@npm:^4.0.0":
version: 4.0.8
resolution: "isbinaryfile@npm:4.0.8"
checksum: 606e3bb648d1a0dee23459d1d937bb2560e66a5281ec7c9ff50e585402d73321ac268d0f34cb7393125b3ebc4c7962d39e50a01cdb8904b52fce08b7ccd2bf9f
languageName: node
linkType: hard
"isbinaryfile@npm:^4.0.10":
version: 4.0.10
resolution: "isbinaryfile@npm:4.0.10"
checksum: a6b28db7e23ac7a77d3707567cac81356ea18bd602a4f21f424f862a31d0e7ab4f250759c98a559ece35ffe4d99f0d339f1ab884ffa9795172f632ab8f88e686
languageName: node
linkType: hard
"isexe@npm:^2.0.0":
version: 2.0.0
resolution: "isexe@npm:2.0.0"
@@ -18491,6 +18548,20 @@ __metadata:
languageName: node
linkType: hard
"jake@npm:^10.8.5":
version: 10.8.5
resolution: "jake@npm:10.8.5"
dependencies:
async: ^3.2.3
chalk: ^4.0.2
filelist: ^1.0.1
minimatch: ^3.0.4
bin:
jake: ./bin/cli.js
checksum: 56c913ecf5a8d74325d0af9bc17a233bad50977438d44864d925bb6c45c946e0fee8c4c1f5fe2225471ef40df5222e943047982717ebff0d624770564d3c46ba
languageName: node
linkType: hard
"jest-changed-files@npm:^26.6.2":
version: 26.6.2
resolution: "jest-changed-files@npm:26.6.2"
@@ -20408,7 +20479,7 @@ __metadata:
languageName: node
linkType: hard
"lodash@npm:^4.0.0, lodash@npm:^4.17.10, lodash@npm:^4.17.11, lodash@npm:^4.17.12, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.20, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.17.5, lodash@npm:^4.2.1, lodash@npm:^4.3.0, lodash@npm:^4.7.0":
"lodash@npm:^4.0.0, lodash@npm:^4.17.10, lodash@npm:^4.17.11, lodash@npm:^4.17.12, lodash@npm:^4.17.14, lodash@npm:^4.17.15, lodash@npm:^4.17.19, lodash@npm:^4.17.21, lodash@npm:^4.17.4, lodash@npm:^4.17.5, lodash@npm:^4.2.1, lodash@npm:^4.3.0, lodash@npm:^4.7.0":
version: 4.17.21
resolution: "lodash@npm:4.17.21"
checksum: eb835a2e51d381e561e508ce932ea50a8e5a68f4ebdd771ea240d3048244a8d13658acbd502cd4829768c56f2e16bdd4340b9ea141297d472517b83868e677f7
@@ -20586,9 +20657,9 @@ __metadata:
languageName: node
linkType: hard
"lzma-native@npm:^8.0.1":
version: 8.0.1
resolution: "lzma-native@npm:8.0.1"
"lzma-native@npm:^8.0.5":
version: 8.0.6
resolution: "lzma-native@npm:8.0.6"
dependencies:
node-addon-api: ^3.1.0
node-gyp: latest
@@ -20596,7 +20667,7 @@ __metadata:
readable-stream: ^3.6.0
bin:
lzmajs: bin/lzmajs
checksum: abf2c527101060ab450d49c28693226ab175aeb2b56d976fb4ce49985ddba1e8251bd0e5af13fa225dac80faa805b71f0bba984c0ac1f7db5fbbc65e9f8d7b62
checksum: cbe782fd53309163a9362d0b5a960051936268a891779d26fdfe42085ce7fa309dc96e91414fe64ddd2bde2e2c25fc18e1d89aa6a2691557dd89b6582840a979
languageName: node
linkType: hard
@@ -21654,6 +21725,22 @@ __metadata:
languageName: node
linkType: hard
"mime-db@npm:~1.25.0":
version: 1.25.0
resolution: "mime-db@npm:1.25.0"
checksum: bf1c56d50cb5752c5495ddf2a1dd938015c58b3bc0c8d19c4cacb198322267d6fc1b944e70efec0d5215584cf1c57d58e2d4f609094ebe3e88bdf34028ca102d
languageName: node
linkType: hard
"mime-types@npm:2.1.13":
version: 2.1.13
resolution: "mime-types@npm:2.1.13"
dependencies:
mime-db: ~1.25.0
checksum: 661db5db5900dcf8bc345d2aea9cc2bd38d53374c000e0d8d7b592230ff37ea173b9514f15bfd89efe46476f57f1785866d13060c71d12ca98c5b5a8f662ae04
languageName: node
linkType: hard
"mime-types@npm:^2.1.12, mime-types@npm:^2.1.18, mime-types@npm:^2.1.27, mime-types@npm:~2.1.19, mime-types@npm:~2.1.24, mime-types@npm:~2.1.7":
version: 2.1.34
resolution: "mime-types@npm:2.1.34"
@@ -21755,6 +21842,15 @@ __metadata:
languageName: node
linkType: hard
"minimatch@npm:^3.1.2":
version: 3.1.2
resolution: "minimatch@npm:3.1.2"
dependencies:
brace-expansion: ^1.1.7
checksum: c154e566406683e7bcb746e000b84d74465b3a832c45d59912b9b55cd50dee66e5c4b1e5566dba26154040e51672f9aa450a9aef0c97cfc7336b78b7afb9540a
languageName: node
linkType: hard
"minimatch@npm:^5.0.1":
version: 5.0.1
resolution: "minimatch@npm:5.0.1"
@@ -26830,6 +26926,16 @@ __metadata:
languageName: unknown
linkType: soft
"rss@npm:^1.2.2":
version: 1.2.2
resolution: "rss@npm:1.2.2"
dependencies:
mime-types: 2.1.13
xml: 1.0.1
checksum: 9f823a6c1c807b4d9a800f74063d03eb188751c2e7fab36a50d5bdc33577a03562d5a610d8c809729f5a3721805a5495119c105237a87a6bb5a8a146df8b887a
languageName: node
linkType: hard
"rsvp@npm:^4.8.4":
version: 4.8.5
resolution: "rsvp@npm:4.8.5"
@@ -28991,6 +29097,13 @@ __metadata:
languageName: node
linkType: hard
"tabulator-tables@npm:^5.1.4":
version: 5.1.4
resolution: "tabulator-tables@npm:5.1.4"
checksum: f77f9e975502253ec945d66d5d2f1fb615743824a05c6e8b67013c8f53976edb3c734ef1286c24253d85dd3990e596e3f04ecc1fbd0682541b5ed1a5a6c0d762
languageName: node
linkType: hard
"taketalk@npm:^1.0.0":
version: 1.0.0
resolution: "taketalk@npm:1.0.0"
@@ -29158,7 +29271,7 @@ __metadata:
languageName: node
linkType: hard
"tar@npm:^6.0.2, tar@npm:^6.0.5, tar@npm:^6.1.2":
"tar@npm:^6.0.2, tar@npm:^6.0.5, tar@npm:^6.1.11, tar@npm:^6.1.2":
version: 6.1.11
resolution: "tar@npm:6.1.11"
dependencies:
@@ -31689,6 +31802,13 @@ __metadata:
languageName: node
linkType: hard
"xml@npm:1.0.1":
version: 1.0.1
resolution: "xml@npm:1.0.1"
checksum: 11b5545ef3f8fec3fa29ce251f50ad7b6c97c103ed4d851306ec23366f5fa4699dd6a942262df52313a0cd1840ab26256da253c023bad3309d8ce46fe6020ca0
languageName: node
linkType: hard
"xmlbuilder@npm:>=11.0.1":
version: 15.1.1
resolution: "xmlbuilder@npm:15.1.1"