diff --git a/.eslintignore b/.eslintignore index 70ce88dd40..114143630f 100644 --- a/.eslintignore +++ b/.eslintignore @@ -14,6 +14,7 @@ Modules/TinyMCE/IconPack/postinstall.js Modules/TinyMCE/JoplinLists/ Modules/TinyMCE/langs/ node_modules/ +packages/doc-builder/ packages/app-cli/build packages/app-cli/build/ packages/app-cli/locales @@ -976,6 +977,7 @@ packages/renderer/index.js packages/renderer/noteStyle.js packages/renderer/pathUtils.js packages/renderer/utils.js +packages/tools/build-release-stats.test.js packages/tools/build-release-stats.js packages/tools/build-translation.js packages/tools/build-welcome.js @@ -1014,12 +1016,15 @@ packages/tools/utils/loadSponsors.js packages/tools/utils/translation.js packages/tools/website/build.js packages/tools/website/buildTranslations.js +packages/tools/website/processDocs.test.js +packages/tools/website/processDocs.js packages/tools/website/updateDownloadPage.js packages/tools/website/updateNews.js packages/tools/website/utils/applyTranslations.test.js packages/tools/website/utils/applyTranslations.js packages/tools/website/utils/convertLinksToLocale.test.js packages/tools/website/utils/convertLinksToLocale.js +packages/tools/website/utils/frontMatter.test.js packages/tools/website/utils/frontMatter.js packages/tools/website/utils/news.js packages/tools/website/utils/openGraph.test.js diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 86bd79a0e9..45450bcea3 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -48,5 +48,5 @@ OS specifics: diff --git a/.github/scripts/run_ci.sh b/.github/scripts/run_ci.sh index d8796e6aa5..eb250c80b7 100755 --- a/.github/scripts/run_ci.sh +++ b/.github/scripts/run_ci.sh @@ -94,6 +94,17 @@ if [ "$IS_PULL_REQUEST" == "1" ] || [ "$IS_DEV_BRANCH" = "1" ]; then fi fi +# ============================================================================= +# Check that the website builder can run without errors +# ============================================================================= + +if [ "$IS_PULL_REQUEST" == "1" ] || [ "$IS_DEV_BRANCH" = "1" ]; then + if [ "$IS_LINUX" == "1" ]; then + echo "Step: Running website builder..." + node packages/tools/website/processDocs.js --env dev + fi +fi + # ============================================================================= # Run linter for pull requests only. We also don't want this to make the desktop # release randomly fail. diff --git a/.gitignore b/.gitignore index ac3ee421df..ec9ede1864 100644 --- a/.gitignore +++ b/.gitignore @@ -958,6 +958,7 @@ packages/renderer/index.js packages/renderer/noteStyle.js packages/renderer/pathUtils.js packages/renderer/utils.js +packages/tools/build-release-stats.test.js packages/tools/build-release-stats.js packages/tools/build-translation.js packages/tools/build-welcome.js @@ -996,12 +997,15 @@ packages/tools/utils/loadSponsors.js packages/tools/utils/translation.js packages/tools/website/build.js packages/tools/website/buildTranslations.js +packages/tools/website/processDocs.test.js +packages/tools/website/processDocs.js packages/tools/website/updateDownloadPage.js packages/tools/website/updateNews.js packages/tools/website/utils/applyTranslations.test.js packages/tools/website/utils/applyTranslations.js packages/tools/website/utils/convertLinksToLocale.test.js packages/tools/website/utils/convertLinksToLocale.js +packages/tools/website/utils/frontMatter.test.js packages/tools/website/utils/frontMatter.js packages/tools/website/utils/news.js packages/tools/website/utils/openGraph.test.js diff --git a/.npmpackagejsonlintignore b/.npmpackagejsonlintignore index 9950560bf5..cfed56947f 100644 --- a/.npmpackagejsonlintignore +++ b/.npmpackagejsonlintignore @@ -1,2 +1,3 @@ packages/app-clipper/popup/ -packages/app-cli/tests/support/plugins/ \ No newline at end of file +packages/app-cli/tests/support/plugins/ +packages/doc-builder/ \ No newline at end of file diff --git a/Assets/WebsiteAssets/js/script.js b/Assets/WebsiteAssets/js/script.js index b386719a5b..902ca83584 100644 --- a/Assets/WebsiteAssets/js/script.js +++ b/Assets/WebsiteAssets/js/script.js @@ -77,7 +77,7 @@ function setupDownloadPage() { } else if (os === 'linux') { // If it's Linux, the user should probably install it using the // install script so we redirect to the install section - window.location = 'https://joplinapp.org/help/#desktop-applications'; + window.location = 'https://joplinapp.org/help/install'; } else { // Otherwise, start the download const downloadLink = downloadLinks[os]; diff --git a/Assets/WebsiteAssets/rss.xml b/Assets/WebsiteAssets/rss.xml index c3d1f0e42e..7b138803f8 100644 --- a/Assets/WebsiteAssets/rss.xml +++ b/Assets/WebsiteAssets/rss.xml @@ -42,8 +42,8 @@

This is just an overview of the main features. The full changelog is available there:

]]>https://joplinapp.org/news/20230508-release-2-12/20230508-release-2-12Wed, 06 Sep 2023 12:00:00 GMTWhat's new in Joplin 2.12<![CDATA[What's new in Joplin 2.11]]>Desktop🔗

Add support for plugin user data🔗

@@ -72,8 +72,8 @@

This is just an overview of the main features. The full changelog is available there:

]]>
https://joplinapp.org/news/20230508-release-2-11/20230508-release-2-11Fri, 14 Jul 2023 12:00:00 GMTWhat's new in Joplin 2.11
<![CDATA[What's new in Joplin 2.10]]>Great news! Joplin 2.10 is here and we've made some amazing improvements and bug fixes, with a focus on the mobile app.

New design for "New note" and "New to-do" buttons🔗

@@ -181,8 +181,8 @@

As always, a lot of work went into the Android and iOS app too, which include 37 improvements, bug fixes, and security fixes.

See here for the changelogs:

About the Android version🔗

Unfortunately we cannot publish the Android version because it is based on a framework version that Google does not accept. To upgrade the app a lot of changes are needed and another round of pre-releases, and therefore there will not be a 2.9 version for Google Play. You may however download the official APK directly from there: Android 2.9 Official Release

@@ -232,7 +232,7 @@

To make use of this feature, simply select Also publish linked notes when publishing a note.

And more!🔗

-

In total there are 38 changes to improve the app reliability, security and usability. Full changelog is at https://joplinapp.org/changelog/

+

In total there are 38 changes to improve the app reliability, security and usability. Full changelog is at https://joplinapp.org/help/about/changelog

]]>
https://joplinapp.org/news/20220606-release-2-8/20220606-release-2-8Mon, 06 Jun 2022 00:00:00 GMT
<![CDATA[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.

@@ -291,7 +291,7 @@

In the coming month (March 7 - April 3), 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.

One difference with previous years is that anyone, not just students, are allowed to participate.

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 175 hours, and the large ones 350 hours.

-]]>
https://joplinapp.org/news/20220308-gsoc2022-start/20220308-gsoc2022-startTue, 08 Mar 2022 00:00:00 GMT
<![CDATA[Joplin 2.7 is available!]]>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 desktop changelog and mobile changelog).

+]]>
https://joplinapp.org/news/20220308-gsoc2022-start/20220308-gsoc2022-startTue, 08 Mar 2022 00:00:00 GMT
<![CDATA[Joplin 2.7 is available!]]>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 desktop changelog and mobile changelog).

Many thanks to all the contributors who helped create this release!

Below are some of the more noticeable changes:

Notebook custom icons🔗

@@ -336,8 +336,8 @@

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.

Other changes and bug fixes

This release includes a total of 19 new features and improvements and 16 bug fixes. See the 2.6.x changelogs for more details:

-

https://joplinapp.org/changelog/

-

https://joplinapp.org/changelog_android/

-

https://joplinapp.org/changelog_ios/

-

https://joplinapp.org/changelog_cli/

+

https://joplinapp.org/help/about/changelog

+

https://joplinapp.org/help/about/changelog/android/

+

https://joplinapp.org/help/about/changelog/ios/

+

https://joplinapp.org/help/about/changelog/cli/

]]>
https://joplinapp.org/news/20211217-120324/20211217-120324Fri, 17 Dec 2021 12:03:24 GMT
\ No newline at end of file diff --git a/Assets/WebsiteAssets/templates/partials/navbar.mustache b/Assets/WebsiteAssets/templates/partials/navbar.mustache index a2bb34d7ea..00155aabd9 100644 --- a/Assets/WebsiteAssets/templates/partials/navbar.mustache +++ b/Assets/WebsiteAssets/templates/partials/navbar.mustache @@ -16,7 +16,7 @@ News Help Forum - 中文 + {{> joplinCloudButton}} {{> supportButton}} diff --git a/README.md b/README.md index 1dd989da4b..c927fc5834 100644 --- a/README.md +++ b/README.md @@ -2,66 +2,23 @@ [![Donate using PayPal](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/badges/Donate-PayPal-green.svg)](https://www.paypal.com/donate/?business=E8JMYD2LQ8MMA&no_recurring=0&item_name=I+rely+on+donations+to+maintain+and+improve+the+Joplin+open+source+project.+Thank+you+for+your+help+-+it+makes+a+difference%21¤cy_code=EUR) [![Sponsor on GitHub](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/badges/GitHub-Badge.svg)](https://github.com/sponsors/laurent22/) [![Become a patron](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/badges/Patreon-Badge.svg)](https://www.patreon.com/joplin) [![Donate using IBAN](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/badges/Donate-IBAN.svg)](https://joplinapp.org/donate/#donations) - **Joplin** is a free, open source note taking and to-do application, which can handle a large number of notes organised into notebooks. The notes are searchable, can be copied, tagged and modified either from the applications directly or from your own text editor. The notes are in [Markdown format](#markdown). + Joplin is a free, open source note taking and to-do application, which can handle a large number of notes organised into notebooks. The notes are searchable, can be copied, tagged and modified either from the applications directly or from your own text editor. The notes are in [Markdown format](#markdown). -Notes exported from Evernote [can be imported](#importing) into Joplin, including the formatted content (which is converted to Markdown), resources (images, attachments, etc.) and complete metadata (geolocation, updated time, created time, etc.). Plain Markdown files can also be imported. +Notes exported from Evernote [can be imported](https://github.com/laurent22/joplin/blob/dev/readme/apps/import_export.md) into Joplin, including the formatted content (which is converted to Markdown), resources (images, attachments, etc.) and complete metadata (geolocation, updated time, created time, etc.). Plain Markdown files can also be imported. -The notes can be securely [synchronised](#synchronisation) using [end-to-end encryption](#encryption) with various cloud services including Nextcloud, Dropbox, OneDrive and [Joplin Cloud](https://joplinapp.org/plans/). +Joplin is "offline first", which means you always have all your data on your phone or computer. This ensures that your notes are always accessible, whether you have an internet connection or not. + +The notes can be securely [synchronised](https://github.com/laurent22/joplin/blob/dev/readme/apps/sync/index.md) using [end-to-end encryption](https://github.com/laurent22/joplin/blob/dev/readme/apps/sync/e2ee.md) with various cloud services including Nextcloud, Dropbox, OneDrive and [Joplin Cloud](https://joplinapp.org/plans/). Full text search is available on all platforms to quickly find the information you need. The app can be customised using plugins and themes, and you can also easily create your own. -The application is available for Windows, Linux, macOS, Android and iOS. A [Web Clipper](https://github.com/laurent22/joplin/blob/dev/readme/clipper.md), to save web pages and screenshots from your browser, is also available for [Firefox](https://addons.mozilla.org/firefox/addon/joplin-web-clipper/) and [Chrome](https://chrome.google.com/webstore/detail/joplin-web-clipper/alofnhikmmkdbbbgpnglcpdollgjjfek?hl=en-GB). +The application is available for Windows, Linux, macOS, Android and iOS. A [Web Clipper](https://github.com/laurent22/joplin/blob/dev/readme/apps/clipper.md), to save web pages and screenshots from your browser, is also available for [Firefox](https://addons.mozilla.org/firefox/addon/joplin-web-clipper/) and [Chrome](https://chrome.google.com/webstore/detail/joplin-web-clipper/alofnhikmmkdbbbgpnglcpdollgjjfek?hl=en-GB).
-# Installation +# Help and documentation -Three types of applications are available: for **desktop** (Windows, macOS and Linux), for **mobile** (Android and iOS) and for **terminal** (Windows, macOS, Linux and FreeBSD). All the applications have similar user interfaces and can synchronise with each other. - -## Desktop applications - -Operating System | Download ----|--- -Windows (32 and 64-bit) | Get it on Windows -macOS | Get it on macOS -Linux | Get it on Linux - -**On Windows**, you may also use the Portable version. 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: - -
wget -O - https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh | bash
- -The install and update script supports the [following flags](https://github.com/laurent22/joplin/blob/dev/Joplin_install_and_update.sh#L50) (around line 50 at the time of this writing). - -## Mobile applications - -Operating System | Download | Alt. Download ----|---|--- -Android | Get it on Google Play | or download the [APK file](https://objects.joplinusercontent.com/v2.12.3/joplin-v2.12.3.apk?source=JoplinWebsite&type=New) -iOS | Get it on the App Store | - - -## Terminal application - -Operating system | Method ------------------|---------------- -macOS, Linux, or Windows (via [WSL](https://msdn.microsoft.com/en-us/commandline/wsl/faq?f=255&MSPPError=-2147217396)) | **Important:** First, [install Node 12+](https://nodejs.org/en/download/package-manager/).

`NPM_CONFIG_PREFIX=~/.joplin-bin npm install -g joplin`
`sudo ln -s ~/.joplin-bin/bin/joplin /usr/bin/joplin`

By default, the application binary will be installed under `~/.joplin-bin`. You may change this directory if needed. Alternatively, if your npm permissions are setup as described [here](https://docs.npmjs.com/getting-started/fixing-npm-permissions#option-2-change-npms-default-directory-to-another-directory) (Option 2) then simply running `npm -g install joplin` would work. - -To start it, type `joplin`. - -For usage information, please refer to the full [Joplin Terminal Application Documentation](https://joplinapp.org/terminal/). - -## Web Clipper - -The Web Clipper is a browser extension that allows you to save web pages and screenshots from your browser. For more information on how to install and use it, see the [Web Clipper Help Page](https://github.com/laurent22/joplin/blob/dev/readme/clipper.md). - -## Unofficial Alternative Distributions - -There are a number of unofficial alternative Joplin distributions. If you do not want to or cannot use appimages or any of the other officially supported releases then you may wish to consider these. - -However these come with a caveat in that they are not officially supported so certain issues may not be supportable by the main project. Rather support requests, bug reports and general advice would need to go to the maintainers of these distributions. - -A community maintained list of these distributions can be found here: [Unofficial Joplin distributions](https://discourse.joplinapp.org/t/unofficial-alternative-joplin-distributions/23703) +For more information about the applications, see the [Joplin documentation](https://joplinapp.org) # Sponsors @@ -80,427 +37,12 @@ A community maintained list of these distributions can be found here: [Unofficia |
[matmoly](https://github.com/matmoly) |
[maxtruxa](https://github.com/maxtruxa) |
[saarantras](https://github.com/saarantras) |
[sif](https://github.com/sif) | |
[taskcruncher](https://github.com/taskcruncher) |
[tateisu](https://github.com/tateisu) | | | - - -# Table of contents - -- Applications - - - [Desktop application](https://github.com/laurent22/joplin/blob/dev/readme/desktop.md) - - [Mobile applications](https://github.com/laurent22/joplin/blob/dev/readme/mobile.md) - - [Terminal application](https://github.com/laurent22/joplin/blob/dev/readme/terminal.md) - - [Web Clipper](https://github.com/laurent22/joplin/blob/dev/readme/clipper.md) - -- Support - - - [Joplin Forum](https://discourse.joplinapp.org) - - [Markdown Guide](https://github.com/laurent22/joplin/blob/dev/readme/markdown.md) - - [How to enable end-to-end encryption](https://github.com/laurent22/joplin/blob/dev/readme/e2ee.md) - - [What is a conflict?](https://github.com/laurent22/joplin/blob/dev/readme/conflict.md) - - [How to enable debug mode](https://github.com/laurent22/joplin/blob/dev/readme/debugging.md) - - [About the Rich Text editor limitations](https://github.com/laurent22/joplin/blob/dev/readme/rich_text_editor.md) - - [External links](https://github.com/laurent22/joplin/blob/dev/readme/external_links.md) - - [FAQ](https://github.com/laurent22/joplin/blob/dev/readme/faq.md) - -- Joplin Cloud - - - [Sharing a notebook](https://github.com/laurent22/joplin/blob/dev/readme/share_notebook.md) - - [Publishing a note](https://github.com/laurent22/joplin/blob/dev/readme/publish_note.md) - - [Email to Note](https://github.com/laurent22/joplin/blob/dev/readme/email_to_note.md) - -- Joplin API - Get Started - - - [Joplin API Overview](https://github.com/laurent22/joplin/blob/dev/readme/api/overview.md) - - [Plugin development](https://github.com/laurent22/joplin/blob/dev/readme/api/get_started/plugins.md) - - [Plugin tutorial](https://github.com/laurent22/joplin/blob/dev/readme/api/tutorials/toc_plugin.md) - - -- Joplin API - References - - - [Plugin API](https://joplinapp.org/api/references/plugin_api/classes/joplin.html) - - [Data API](https://github.com/laurent22/joplin/blob/dev/readme/api/references/rest_api.md) - - [Plugin manifest](https://github.com/laurent22/joplin/blob/dev/readme/api/references/plugin_manifest.md) - - [Plugin loading rules](https://github.com/laurent22/joplin/blob/dev/readme/api/references/plugin_loading_rules.md) - - [Plugin theming](https://github.com/laurent22/joplin/blob/dev/readme/api/references/plugin_theming.md) - -- Development - - - [How to build the apps](https://github.com/laurent22/joplin/blob/dev/BUILD.md) - - [Writing a technical spec](https://github.com/laurent22/joplin/blob/dev/readme/technical_spec.md) - - [Desktop application styling](https://github.com/laurent22/joplin/blob/dev/readme/spec/desktop_styling.md) - - [Note history spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/history.md) - - [Synchronisation spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/sync.md) - - [Sync Lock spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/sync_lock.md) - - [Synchronous Scroll spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/sync_scroll.md) - - [Overall Architecture spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/architecture.md) - - [Plugin Architecture spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/plugins.md) - - [Search Sorting spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/search_sorting.md) - - [E2EE: Technical spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/e2ee.md) - - [E2EE: Workflow](https://github.com/laurent22/joplin/blob/dev/readme/spec/e2ee/workflow.md) - - [Server: File URL Format](https://github.com/laurent22/joplin/blob/dev/readme/spec/server_file_url_format.md) - - [Server: Delta Sync](https://github.com/laurent22/joplin/blob/dev/readme/spec/server_delta_sync.md) - - [Server: Sharing](https://github.com/laurent22/joplin/blob/dev/readme/spec/server_sharing.md) - - [Read-only items](https://github.com/laurent22/joplin/blob/dev/readme/spec/read_only.md) - -- Google Summer of Code 2022 - - - [Google Summer of Code 2022](https://github.com/laurent22/joplin/blob/dev/readme/gsoc2022/index.md) - - [How to submit a GSoC pull request](https://github.com/laurent22/joplin/blob/dev/readme/gsoc2022/pull_request_guidelines.md) - - [Project Ideas](https://github.com/laurent22/joplin/blob/dev/readme/gsoc2022/ideas.md) - -- 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) - - [Guiding principles](https://github.com/laurent22/joplin/blob/dev/readme/principles.md) - - [Stats](https://github.com/laurent22/joplin/blob/dev/readme/stats.md) - - [Brand guidelines](https://joplinapp.org/brand) - - [Release cycle](https://github.com/laurent22/joplin/blob/dev/readme/release_cycle.md) - - [Donate](https://github.com/laurent22/joplin/blob/dev/readme/donate.md) - - -# Features - -- Desktop, mobile and terminal applications. -- [Web Clipper](https://github.com/laurent22/joplin/blob/dev/readme/clipper.md) for Firefox and Chrome. -- End To End Encryption (E2EE). -- Note history (revisions). -- Synchronisation with various services, including Nextcloud, Dropbox, WebDAV and OneDrive. -- Offline first, so the entire data is always available on the device even without an internet connection. -- Import Enex files (Evernote export format) and Markdown files. -- Export JEX files (Joplin Export format) and raw files. -- Support notes, to-dos, tags and notebooks. -- Sort notes by multiple criteria - title, updated time, etc. -- Support for alarms (notifications) in mobile and desktop applications. -- Markdown notes, which are rendered with images and formatting in the desktop and mobile applications. Support for extra features such as math notation and checkboxes. -- Choice of both Markdown and Rich Text (WYSIWYG) editors. -- File attachment support - images are displayed, other files are linked and can be opened in the relevant application. -- Inline display of PDF, video and audio files. -- Goto Anything feature. -- Search functionality. -- Geo-location support. -- Supports multiple languages. -- External editor support - open notes in your favorite external editor with one click in Joplin. -- Extensible functionality through plugin and data APIs. -- 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 - -## Importing from Evernote - -Joplin was designed as a replacement for Evernote and so can import complete Evernote notebooks, as well as notes, tags, resources (attached files) and note metadata (such as author, geo-location, etc.) via ENEX files. In terms of data, the only two things that might slightly differ are: - -- Recognition data - Evernote images, in particular scanned (or photographed) documents have [recognition data](https://en.wikipedia.org/wiki/Optical_character_recognition) associated with them. It is the text that Evernote has been able to recognise in the document. This data is not preserved when the note are imported into Joplin. However, should it become supported in the search tool or other parts of Joplin, it should be possible to regenerate this recognition data since the actual image would still be available. - -- Colour, font sizes and faces - Evernote text is stored as HTML and this is converted to Markdown during the import process. For notes that are mostly plain text or with basic formatting (bold, italic, bullet points, links, etc.) this is a lossless conversion, and the note, once rendered back to HTML should be very similar. Tables are also imported and converted to Markdown tables. For very complex notes, some formatting data might be lost - in particular colours, font sizes and font faces will not be imported. The text itself however is always imported in full regardless of formatting. If it is essential that this extra data is preserved then Joplin also allows import of ENEX files as HTML. - -To import Evernote data, first export your Evernote notebooks to ENEX files as described [here](https://help.evernote.com/hc/en-us/articles/209005557-How-to-back-up-export-and-restore-import-notes-and-notebooks). Then follow these steps: - -In the **desktop application**, open File > Import > ENEX and select your file. The notes will be imported into a new separate notebook. If needed they can then be moved to a different notebook, or the notebook can be renamed, etc. - -In the **terminal application**, in [command-line mode](https://github.com/laurent22/joplin/blob/dev/readme/terminal.md#command-line-mode), type `import /path/to/file.enex`. This will import the notes into a new notebook named after the filename. - -## Importing from Markdown files - -Joplin can import notes from plain Markdown file. You can either import a complete directory of Markdown files or individual files. - -In the **desktop application**: -* **File import**: Go to File > Import > MD - Markdown (file) and select the Markdown file. This file will then be imported to the currently selected Notebook. -* **Directory import**: Go to File > Import > MD - Markdown (directory) and select the top level of the directory that is being imported. Directory (folder) structure will be preserved in the Notebook > Subnotebook > Note structure within Joplin. - -In the **terminal application**, in [command-line mode](https://github.com/laurent22/joplin/blob/dev/readme/terminal.md#command-line-mode), type `import --format md /path/to/file.md` or `import --format md /path/to/directory/`. - -## Importing from other applications - -In general the way to import notes from any application into Joplin is to convert the notes to ENEX files (Evernote format) and to import these ENEX files into Joplin using the method above. Most note-taking applications support ENEX files so it should be relatively straightforward. For help about specific applications, see below: - -* Standard Notes: Please see [this tutorial](https://programadorwebvalencia.com/migrate-notes-from-standard-notes-to-joplin/) -* Tomboy Notes: Export the notes to ENEX files [as described here](https://askubuntu.com/questions/243691/how-can-i-export-my-tomboy-notes-into-evernote/608551) for example, and import these ENEX files into Joplin. -* OneNote: First [import the notes from OneNote into Evernote](https://discussion.evernote.com/topic/107736-is-there-a-way-to-import-from-onenote-into-evernote-on-the-mac/). Then export the ENEX file from Evernote and import it into Joplin. -* NixNote: Synchronise with Evernote, then export the ENEX files and import them into Joplin. More info [in this thread](https://discourse.joplinapp.org/t/import-from-nixnote/183/3). - -# Exporting - -Joplin can export to the JEX format (Joplin Export file), which is a tar file that can contain multiple notes, notebooks, etc. This is a lossless format in that all the notes, but also metadata such as geo-location, updated time, tags, etc. are preserved. This format is convenient for backup purposes and can be re-imported into Joplin. A "raw" format is also available. This is the same as the JEX format except that the data is saved to a directory and each item represented by a single file. -Joplin is also capable of exporting to a number of other formats including HTML and PDF which can be done for single notes, notebooks or everything. - -# Synchronisation - -One of the goals of Joplin is to avoid being tied to any particular company or service, whether it is Evernote, Google or Microsoft. As such the synchronisation is designed without any hard dependency to any particular service. Most of the synchronisation process is done at an abstract level and access to external services, such as Nextcloud or Dropbox, is done via lightweight drivers. It is easy to support new services by creating simple drivers that provide a filesystem-like interface, i.e. the ability to read, write, delete and list items. It is also simple to switch from one service to another. - -Currently, synchronisation is possible with Joplin Cloud, Nextcloud, S3, WebDAV, Dropbox, OneDrive or the local filesystem. To enable synchronisation please follow the instructions below. After that, the application will synchronise in the background whenever it is running, or you can click on "Synchronise" to start a synchronisation manually. Joplin will background sync automatically after any content change is made on the local application. - -If the **terminal client** has been installed, it is possible to also synchronise outside of the user interface by typing `joplin sync` from the terminal. This can be used to setup a cron script to synchronise at a regular interval. For example, this would do it every 30 minutes: - -` */30 * * * * /path/to/joplin sync` - -## Nextcloud synchronisation - - Nextcloud is a self-hosted, private cloud solution. It can store documents, images and videos but also calendars, passwords and countless other things and can sync them to your laptop or phone. As you can host your own Nextcloud server, you own both the data on your device and infrastructure used for synchronisation. As such it is a good fit for Joplin. The platform is also well supported and with a strong community, so it is likely to be around for a while - since it's open source anyway, it is not a service that can be closed, it can exist on a server for as long as one chooses. - -In the **desktop application** or **mobile application**, go to the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/config_screen.md) and select Nextcloud as the synchronisation target. Then input the WebDAV URL (to get it, click on Settings in the bottom left corner of the page, in Nextcloud), this is normally `https://example.com/nextcloud/remote.php/webdav/Joplin` (**make sure to create the "Joplin" directory in Nextcloud**), and set the username and password. If it does not work, please [see this explanation](https://github.com/laurent22/joplin/issues/61#issuecomment-373282608) for more details. - -In the **terminal application**, you will need to set the `sync.target` config variable and all the `sync.5.path`, `sync.5.username` and `sync.5.password` config variables to, respectively the Nextcloud WebDAV URL, your username and your password. This can be done from the command line mode using: - - :config sync.5.path https://example.com/nextcloud/remote.php/webdav/Joplin - :config sync.5.username YOUR_USERNAME - :config sync.5.password YOUR_PASSWORD - :config sync.target 5 - -If synchronisation does not work, please consult the logs in the app profile directory - it is often due to a misconfigured URL or password. The log should indicate what the exact issue is. - -## WebDAV synchronisation - -Select the "WebDAV" synchronisation target and follow the same instructions as for Nextcloud above (for the **terminal application** you will need to select sync target 6 rather than 5) - -WebDAV-compatible services that are known to work with Joplin: - -- [Apache WebDAV Module](https://httpd.apache.org/docs/current/mod/mod_dav.html) -- [DriveHQ](https://www.drivehq.com) -- [Fastmail](https://www.fastmail.com/) -- [HiDrive](https://www.strato.fr/stockage-en-ligne/) from Strato. [Setup help](https://github.com/laurent22/joplin/issues/309) -- [Nginx WebDAV Module](https://nginx.org/en/docs/http/ngx_http_dav_module.html) -- [Nextcloud](https://nextcloud.com/) -- [OwnCloud](https://owncloud.org/) -- [Seafile](https://www.seafile.com/) -- [Stack](https://www.transip.nl/stack/) -- [Synology WebDAV Server](https://www.synology.com/en-us/dsm/packages/WebDAVServer) -- [WebDAV Nav](https://www.schimera.com/products/webdav-nav-server/), a macOS server. -- [Zimbra](https://www.zimbra.com/) - -## Dropbox synchronisation - -When syncing with Dropbox, Joplin creates a sub-directory in Dropbox, in `/Apps/Joplin` and reads/writes the notes and notebooks in it. The application does not have access to anything outside this directory. - -In the **desktop application** or **mobile application**, select "Dropbox" as the synchronisation target in the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/config_screen.md) (it is selected by default). Then, to initiate the synchronisation process, click on the "Synchronise" button in the sidebar and follow the instructions. - -In the **terminal application**, to initiate the synchronisation process, type `:sync`. You will be asked to follow a link to authorise the application. - -## OneDrive synchronisation - -When syncing with OneDrive, Joplin creates a sub-directory in OneDrive, in /Apps/Joplin and reads/writes the notes and notebooks in it. The application does not have access to anything outside this directory. - -In the **desktop application** or **mobile application**, select "OneDrive" as the synchronisation target in the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/config_screen.md). Then, to initiate the synchronisation process, click on the "Synchronise" button in the sidebar and follow the instructions. - -In the **terminal application**, to initiate the synchronisation process, type `:sync`. You will be asked to follow a link to authorise the application (simply input your Microsoft credentials - you do not need to register with OneDrive). - -## S3 synchronisation - -As of Joplin 2.x.x, Joplin supports multiple S3 providers. We expose some options that will need to be configured depending on your provider of choice. We have tested with UpCloud, AWS, and Linode. others should work as well. - -In the **desktop application** or **mobile application**, select "S3 (Beta)" as the synchronisation target in the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/config_screen.md). - -- **S3 Bucket:** The name of your Bucket, such as `joplin-bucket` -- **S3 URL:** Fully qualified URL; For AWS this should be `https://s3..amazonaws.com/` -- **S3 Access Key & S3 Secret Key:** The User's programmatic access key. To create a new key & secret on AWS, visit [IAM Security Credentials](https://console.aws.amazon.com/iam/home#/security_credentials). For other providers follow their documentation. -- **S3 Region:** Some providers require you to provide the region of your bucket. This is usually in the form of "eu-west1" or something similar depending on your region. For providers that do not require a region, you can leave it blank. -- **Force Path Style**: This setting enables Joplin to talk to S3 providers using an older style S3 Path. Depending on your provider you may need to try with this on and off. - - -While creating a new Bucket for Joplin, disable **Bucket Versioning**, enable **Block all public access** and enable **Default encryption** with `Amazon S3 key (SSE-S3)`. Some providers do not expose these options, and it could create a syncing problem. Do attempt and report back so we can update the documentation appropriately. - -To add a **Bucket Policy** from the AWS S3 Web Console, navigate to the **Permissions** tab. Temporarily disable **Block all public access** to edit the Bucket policy, something along the lines of: -``` -{ - "Version": "2012-10-17", - "Statement": [ - { - "Sid": "VisualEditor0", - "Effect": "Allow", - "Action": [ - "s3:ListBucket", - "s3:GetBucketLocation", - "s3:GetObject", - "s3:DeleteObject", - "s3:DeleteObjectVersion", - "s3:PutObject" - ], - "Resource": [ - "arn:aws:s3:::joplin-bucket", - "arn:aws:s3:::joplin-bucket/*" - ] - } - ] -} -``` - -### Configuration settings for tested providers - -All providers will require a bucket, Access Key, and Secret Key. - -If you provide a configuration and you receive "success!" on the "check config" then your S3 sync should work for your provider. If you do not receive success, you may need to adjust your settings, or save them, restart the app, and attempt a sync. This may reveal more clear error messaging that will help you deduce the problem. - -### AWS -- URL: `https://s3..amazonaws.com/` (fill in your region, a complete list of endpoint adresses can be found [here](https://docs.aws.amazon.com/general/latest/gr/s3.html)) -- Region: required -- Force Path Style: unchecked - -### Linode -- URL: `https://.linodeobjects.com` (region is in the URL provided by Linode; this URL is also the same as the URL provided by Linode with the bucket name removed) -- Region: Anything you want to type, can't be left empty -- Force Path Style: unchecked - -### UpCloud -- URL: `https://..upcloudobjects.com` (They will provide you with multiple URLs, the one that follows this pattern should work.) -- Region: required -- Force Path Style: unchecked - -# Encryption - -Joplin supports end-to-end encryption (E2EE) on all the applications. E2EE is a system where only the owner of the notes, notebooks, tags or resources can read them. It prevents potential eavesdroppers - including telecom providers, internet providers, and even the developers of Joplin from being able to access the data. Please see the [End-To-End Encryption Tutorial](https://github.com/laurent22/joplin/blob/dev/readme/e2ee.md) for more information about this feature and how to enable it. - -For a more technical description, mostly relevant for development or to review the method being used, please see the [Encryption specification](https://github.com/laurent22/joplin/blob/dev/readme/spec/e2ee.md). - -# Note history - -The Joplin applications automatically save previous versions of your notes at regular intervals. These versions are synced across devices and can be viewed from the desktop application. To do so, click on the "Information" button on a note, then click on "Previous version of this note". From this screen you can view the previous versions of the note as well as restore any of them. - -This feature can be disabled from the "Note history" section in the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/config_screen.md), and it is also possible to change for how long the history of a note is saved. - -More information please see the [Note History page](https://github.com/laurent22/joplin/blob/dev/readme/note_history.md). - -# External text editor - -Joplin notes can be opened and edited using an external editor of your choice. It can be a simple text editor like Notepad++ or Sublime Text or an actual Markdown editor like Typora. In that case, images will also be displayed within the editor. To open the note in an external editor, click on the icon in the toolbar or press Ctrl+E (or Cmd+E). Your default text editor will be used to open the note. If needed, you can also specify the editor directly in the General Options, under "Text editor command". - -# Attachments - -Any kind of file can be attached to a note. In Markdown, links to these files are represented as a simple ID to the attachment, clicking on this link will open the file in the default application. In the case of audio, video and pdf files, these will be displayed inline with the note and so can be viewed or played within Joplin. - -In the **desktop application**, files can be attached either by clicking the "Attach file" icon in the editor or via drag and drop. If you prefer to create a link to a local file instead, hold the ALT key while performing the drag and drop operation. You can also copy and paste images directly in the editor via Ctrl+V. - -Resources that are not attached to any note will be automatically deleted in accordance to the [Note History](#note-history) settings. - -**Important:** Resources larger than 10 MB are not currently supported on mobile. They will crash the application when synchronising so it is recommended not to attach such resources at the moment. The issue is being looked at. - -## Downloading attachments - -The way the attachments are downloaded during synchronisation can be customised in the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/config_screen.md), under "Attachment download behaviour". The default option ("Always") is to download all the attachments, all the time, so that the data is available even when the device is offline. There is also the option to download the attachments manually (option "Manual"), by clicking on it, or automatically (Option "Auto"), in which case the attachments are downloaded only when a note is opened. These options should help saving disk space and network bandwidth, especially on mobile. - -# Notifications - -In the desktop and mobile apps, an alarm can be associated with any to-do. It will be triggered at the given time by displaying a notification. How the notification will be displayed depends on the operating system since each has a different way to handle this. Please see below for the requirements for the desktop applications: - -- **Windows**: >= 8. Make sure the Action Center is enabled on Windows. Task bar balloon for Windows < 8. Growl as fallback. Growl takes precedence over Windows balloons. -- **macOS**: >= 10.8 or Growl if earlier. -- **Linux**: `notify-send` tool, delivered through packages `notify-osd`, `libnotify-bin` or `libnotify-tools`. GNOME should have this by default, but install `libnotify-tools` if using KDE Plasma. - -See [documentation and flow chart for reporter choice](https://github.com/mikaelbr/node-notifier/blob/master/DECISION_FLOW.md) - -On mobile, the alarms will be displayed using the built-in notification system. - -If for any reason the notifications do not work, please [open an issue](https://github.com/laurent22/joplin/issues). - -# Sub-notebooks - -Sub-notebooks allow organising multiple notebooks into a tree of notebooks. For example it can be used to regroup all the notebooks related to work, to family or to a particular project under a parent notebook. - -![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/SubNotebooks.png) - -- In the **desktop application**, to create a subnotebook, drag and drop it onto another notebook. To move it back to the root, drag and drop it on the "Notebooks" header. Currently only the desktop app can be used to organise the notebooks. -- The **mobile application** supports displaying and collapsing/expanding the tree of notebooks, however it does not currently support moving the subnotebooks to different notebooks. -- The **terminal app** supports displaying the tree of subnotebooks but it does not support collapsing/expanding them or moving the subnotebooks around. - -# Markdown - -Joplin uses and renders a Github-flavoured Markdown with a few variations and additions. In particular it adds math formula support, interactive checkboxes and support for note links. Joplin also supports Markdown plugins which allow enabling and disabling various advanced Markdown features. Have a look at the [Markdown Guide](https://github.com/laurent22/joplin/blob/dev/readme/markdown.md) for more information. - -# Custom CSS - -Rendered markdown can be customized by placing a userstyle file in the profile directory `~/.config/joplin-desktop/userstyle.css` (This path might be different on your device - check at the top of the `General` page of the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/config_screen.md) for the exact path). This file supports standard CSS syntax. Joplin ***must*** be restarted for the new css to be applied, please ensure that Joplin is not closing to the tray, but is actually exiting. Note that this file is used for both displaying the notes and printing the notes. Be aware how the CSS may look printed (for example, printing white text over a black background is usually not wanted). - -The whole UI can be customized by placing a custom editor style file in the profile directory `~/.config/joplin-desktop/userchrome.css`. - -Important: userstyle.css and userchrome.css are provided for your convenience, but they are advanced settings, and styles you define may break from one version to the next. If you want to use them, please know that it might require regular development work from you to keep them working. The Joplin team cannot make a commitment to keep the application HTML structure stable. - -# 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](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 [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) - -# Searching - -Joplin implements the SQLite Full Text Search (FTS4) extension. It means the content of all the notes is indexed in real time and search queries return results very fast. Both [Simple FTS Queries](https://www.sqlite.org/fts3.html#simple_fts_queries) and [Full-Text Index Queries](https://www.sqlite.org/fts3.html#full_text_index_queries) are supported. See below for the list of supported queries: - -One caveat of SQLite FTS is that it does not support languages which do not use Latin word boundaries (spaces, tabs, punctuation). To solve this issue, Joplin has a custom search mode, that does not use FTS, but still has all of its features (multi term search, filters, etc.). One of its drawbacks is that it can get slow on larger note collections. Also, the sorting of the results will be less accurate, as the ranking algorithm (BM25) is, for now, only implemented for FTS. Finally, in this mode there are no restrictions on using the `*` wildcard (`swim*`, `*swim` and `ast*rix` all work). This search mode is currently enabled if one of the following languages are detected: - - Chinese - - Japanese - - Korean - - Thai - -## Supported queries - -Search type | Description | Example -------------|-------------|--------- -Single word | Returns all the notes that contain this term. | For example, searching for `cat` will return all the notes that contain this exact word. Note: it will not return the notes that contain the substring - thus, for "cat", notes that contain "cataclysmic" or "prevaricate" will **not** be returned. -Multiple word | Returns all the notes that contain **all** these words, but not necessarily next to each other. | `dog cat` - will return any notes that contain the words "dog" and "cat" anywhere in the note, no necessarily in that order nor next to each other. It will **not** return results that contain "dog" or "cat" only. -Phrase | Add double quotes to return the notes that contain exactly this phrase. | `"shopping list"` - will return the notes that contain these **exact terms** next to each other and in this order. It will **not** return for example a note that contains "going shopping with my list". -Prefix | Add a wildcard to return all the notes that contain a term with a specified prefix. | `swim*` - will return all the notes that contain eg. "swim", but also "swimming", "swimsuit", etc. IMPORTANT: The wildcard **can only be at the end** - it will be ignored at the beginning of a word (eg. `*swim`) and will be treated as a literal asterisk in the middle of a word (eg. `ast*rix`) -Switch to basic search | One drawback of Full Text Search is that it ignores most non-alphabetical characters. However in some cases you might want to search for this too. To do that, you can use basic search. You switch to this mode by prefixing your search with a slash `/`. This won't provide the benefits of FTS but it will allow searching exactly for what you need. Note that it can also be much slower, even extremely slow, depending on your query. | `/"- [ ]"` - will return all the notes that contain unchecked checkboxes. - -## Search filters - -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`.
`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`.
`any:0 cat dog` will return notes with both the words `cat` and `dog`. | -| **title:**
**body:**|Restrict your search to just the title or the body field.|`title:"hello world"` searches for notes whose title contains `hello` and `world`.
`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.
`tag:office tag:important` searches for all notes having both office and important tags.
`tag:office -tag:spam` searches for notes having tag `office` which do not have tag `spam`.
`any:1 tag:office tag:spam` searches for notes having tag `office` or tag `spam`.
`tag:be*ful` does a search with wildcards.
`tag:*` returns all notes with tags.
`-tag:*` returns all notes without tags.| -| **notebook:** | Restrict the search to the specified notebook(s). |`notebook:books` limits the search scope within `books` and all its subnotebooks.
`notebook:wheel*time` does a wildcard search.| -| **created:**
**updated:**
**due:**| Searches for notes created/updated on dates specified using YYYYMMDD format. You can also search relative to the current day, week, month, or year. | `created:20201218` will return notes created on or after December 18, 2020.
`-updated:20201218` will return notes updated before December 18, 2020.
`created:20200118 -created:20201215` will return notes created between January 18, 2020, and before December 15, 2020.
`created:202001 -created:202003` will return notes created on or after January and before March 2020.
`updated:1997 -updated:2020` will return all notes updated between the years 1997 and 2019.
`created:day-2` searches for all notes created in the past two days.
`updated:year-0` searches all notes updated in the current year.
`-due:day+7` will return all todos which are due or will be due in the next seven days.
`-due:day-5` searches all todos that are overdue for more than 5 days.| -| **type:** |Restrict the search to either notes or todos. | `type:note` to return all notes
`type:todo` to return all todos | -| **iscompleted:** | Restrict the search to either completed or uncompleted todos. | `iscompleted:1` to return all completed todos
`iscompleted:0` to return all uncompleted todos| -|**latitude:**
**longitude:**
**altitude:**|Filter by location|`latitude:40 -latitude:50` to return notes with latitude >= 40 and < 50 | -|**resource:**|Filter by attachment MIME type|`resource:image/jpeg` to return notes with a jpeg attachment.
`-resource:application/pdf` to return notes without a pdf attachment.
`resource:image/*` to return notes with any images.| -|**sourceurl:**|Filter by source URL|`sourceurl:https://www.google.com`
`sourceurl:*joplinapp.org` to perform a wildcard search.| -|**id:**|Filter by note ID|`id:9cbc1b4f242043a9b8a50627508bccd5` return a note with the specified id | - -Note: In the CLI client you have to escape the query using `--` when using negated filters. -Eg. `:search -- "-tag:tag1"`. - -The filters are implicitly connected by and/or connectives depending on the following rules: - -- By default, all filters are connected by "AND". -- To override this default behaviour, use the `any` filter, in which case the search terms will be connected by "OR" instead. -- There's an exception for the `notebook` filters which are connected by "OR". The reason being that no note can be in multiple notebooks at once. - -Incorrect search filters are interpreted as a phrase search, e.g. misspelled `nootebook:Example` or non-existing `https://joplinapp.org`. - -## Search order - -Notes are sorted by "relevance". Currently it means the notes that contain the requested terms the most times are on top. For queries with multiple terms, it also matters how close to each other the terms are. This is a bit experimental so if you notice a search query that returns unexpected results, please report it in the forum, providing as many details as possible to replicate the issue. - -# Goto Anything - -In the desktop application, press Ctrl+P or Cmd+P and 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. - -# 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. -Please see the [donation page](https://github.com/laurent22/joplin/blob/dev/readme/donate.md) for information on how to support the development of Joplin. +Please see the [donation page](https://github.com/laurent22/joplin/blob/dev/readme/about/donate.md) for information on how to support the development of Joplin. # Community @@ -518,68 +60,6 @@ Name | Description Please see the guide for information on how to contribute to the development of Joplin: https://github.com/laurent22/joplin/blob/dev/CONTRIBUTING.md -# Localisation - -Joplin is currently available in the languages below. If you would like to contribute a **new translation**, it is quite straightforward, please follow these steps: - -- [Download Poedit](https://poedit.net/), the translation editor, and install it. -- [Download the file to be translated](https://raw.githubusercontent.com/laurent22/joplin/dev/packages/tools/locales/joplin.pot). -- In Poedit, open this .pot file, go into the Catalog menu and click Configuration. Change "Country" and "Language" to your own country and language. -- From then you can translate the file. -- Once it is done, please [open a pull request](https://github.com/laurent22/joplin/pulls) and add the file to it. - -This translation will apply to the three applications - desktop, mobile and terminal. - -To **update a translation**, follow the same steps as above but instead of getting the .pot file, get the .po file for your language from the table below. - -Current translations: - - -  | Language | Po File | Last translator | Percent done ----|---|---|---|--- - | Arabic | [ar](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ar.po) | [Whaell O](mailto:Whaell@protonmail.com) | 84% - | Basque | [eu](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/eu.po) | juan.abasolo@ehu.eus | 21% - | Bosnian (Bosna i Hercegovina) | [bs_BA](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/bs_BA.po) | [Derviš T.](mailto:dervis.t@pm.me) | 54% - | Bulgarian (България) | [bg_BG](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/bg_BG.po) | | 42% - | Catalan | [ca](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ca.po) | [Xavi Ivars](mailto:xavi.ivars@gmail.com) | 92% - | Croatian (Hrvatska) | [hr_HR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/hr_HR.po) | [Milo Ivir](mailto:mail@milotype.de) | 97% - | Czech (Česká republika) | [cs_CZ](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/cs_CZ.po) | Fejby | 94% - | Dansk (Danmark) | [da_DK](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/da_DK.po) | ERYpTION | 97% - | Deutsch (Deutschland) | [de_DE](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/de_DE.po) | [Mr-Kanister](mailto:viger_gtrc@simplelogin.com) | 97% - | Eesti Keel (Eesti) | [et_EE](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/et_EE.po) | | 42% - | English (United Kingdom) | [en_GB](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/en_GB.po) | | 100% - | English (United States of America) | [en_US](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/en_US.po) | | 100% - | Español (España) | [es_ES](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/es_ES.po) | [Francisco Villaverde](mailto:teko.gr@gmail.com) | 93% - | Esperanto | [eo](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/eo.po) | Marton Paulo | 24% - | Finnish (Suomi) | [fi_FI](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/fi_FI.po) | mrkaato0 | 94% - | Français (France) | [fr_FR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/fr_FR.po) | Laurent Cozic | 100% - | Galician (España) | [gl_ES](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/gl_ES.po) | [Marcos Lans](mailto:marcoslansgarza@gmail.com) | 27% - | Indonesian (Indonesia) | [id_ID](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/id_ID.po) | [Wisnu Adi Santoso](mailto:waditos@gmail.com) | 84% - | Italiano (Italia) | [it_IT](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/it_IT.po) | [Manuel Tassi](mailto:mannivuwiki@gmail.com) | 76% - | 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) | 73% - | Nederlands (België, Belgique, Belgien) | [nl_BE](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/nl_BE.po) | | 74% - | Nederlands (Nederland) | [nl_NL](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/nl_NL.po) | [MHolkamp](mailto:mholkamp@users.noreply.github.com) | 97% - | Norwegian (Norge, Noreg) | [nb_NO](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/nb_NO.po) | [Mats Estensen](mailto:code@mxe.no) | 83% - | Persian | [fa](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/fa.po) | [Kourosh Firoozbakht](mailto:kourox@protonmail.com) | 52% - | Polski (Polska) | [pl_PL](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/pl_PL.po) | [X3NO](mailto:X3NO@disroot.org) | 85% - | Português (Brasil) | [pt_BR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/pt_BR.po) | [Fernando Nagase](mailto:nagase.fernando@gmail.com) | 97% - | Português (Portugal) | [pt_PT](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/pt_PT.po) | [Diogo Caveiro](mailto:dcaveiro@yahoo.com) | 68% - | Română | [ro](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ro.po) | [Cristi Duluta](mailto:cristi.duluta@gmail.com) | 48% - | Slovenian (Slovenija) | [sl_SI](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/sl_SI.po) | [Martin Korelič](mailto:martin.korelic@protonmail.com) | 76% - | Svenska | [sv](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/sv.po) | [Jonatan Nyberg](mailto:jonatan@autistici.org) | 97% - | Thai (ประเทศไทย) | [th_TH](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/th_TH.po) | | 34% - | Tiếng Việt | [vi](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/vi.po) | | 73% - | Türkçe (Türkiye) | [tr_TR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/tr_TR.po) | [Arda Kılıçdağı](mailto:arda@kilicdagi.com) | 97% - | Ukrainian (Україна) | [uk_UA](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/uk_UA.po) | [Vyacheslav Andreykiv](mailto:vandreykiv@gmail.com) | 95% - | Ελληνικά (Ελλάδα) | [el_GR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/el_GR.po) | [Harris Arvanitis](mailto:xaris@tuta.io) | 94% - | Русский (Россия) | [ru_RU](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ru_RU.po) | [Титан](mailto:fignin@ya.ru) | 96% - | српски језик (Србија) | [sr_RS](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/sr_RS.po) | | 61% - | 中文 (简体) | [zh_CN](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/zh_CN.po) | [qx100](mailto:ztymaxwell@gmail.com) | 97% - | 中文 (繁體) | [zh_TW](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/zh_TW.po) | [Kevin Hsu](mailto:kevin.hsu.hws@gmail.com) | 84% - | 日本語 (日本) | [ja_JP](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ja_JP.po) | [genneko](mailto:genneko217@gmail.com) | 97% - | 한국어 | [ko](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ko.po) | [Ji-Hyeon Gim](mailto:potatogim@potatogim.net) | 84% - - # Contributors Thank you to everyone who've contributed to Joplin's source code! diff --git a/fastlane/metadata/android/en-US/full_description.txt b/fastlane/metadata/android/en-US/full_description.txt index 895287f95d..33147bf506 100644 --- a/fastlane/metadata/android/en-US/full_description.txt +++ b/fastlane/metadata/android/en-US/full_description.txt @@ -1,9 +1 @@ -Joplin is a note taking and to-do application, which can handle a large number of notes organised into notebooks. The notes are searchable, can be copied, tagged and modified either from the applications directly or from your own text editor. The notes are in Markdown format. - -Notes exported from Evernote and other applications can be imported into Joplin, including the formatted content (which is converted to Markdown), resources (images, attachments, etc.) and complete metadata (geolocation, updated time, created time, etc.). Plain Markdown files can also be imported. - -The notes can be securely synchronised using end-to-end encryption with various cloud services including Nextcloud, Dropbox, OneDrive and Joplin Cloud. - -Full text search is available on all platforms to quickly find the information you need. The app can be customised using plugins and themes, and you can also easily create your own. - -The application is available for Windows, Linux, macOS, Android and iOS. A Web Clipper, to save web pages and screenshots from your browser, is also available for Firefox and Chrome. \ No newline at end of file +Joplin is a free, open source note taking and to-do application, which can handle a large number of notes organised into notebooks. The notes are searchable, can be copied, tagged and modified either from the applications directly or from your own text editor. The notes are in Markdown format.

Notes exported from Evernote can be imported into Joplin, including the formatted content (which is converted to Markdown), resources (images, attachments, etc.) and complete metadata (geolocation, updated time, created time, etc.). Plain Markdown files can also be imported.

Joplin is "offline first", which means you always have all your data on your phone or computer. This ensures that your notes are always accessible, whether you have an internet connection or not.

The notes can be securely synchronised using end-to-end encryption with various cloud services including Nextcloud, Dropbox, OneDrive and Joplin Cloud.

Full text search is available on all platforms to quickly find the information you need. The app can be customised using plugins and themes, and you can also easily create your own.

The application is available for Windows, Linux, macOS, Android and iOS. A Web Clipper, to save web pages and screenshots from your browser, is also available for Firefox and Chrome.

\ No newline at end of file diff --git a/package.json b/package.json index 315e64a73f..03d1623263 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "buildSettingJsonSchema": "yarn workspace joplin start settingschema ../../../joplin-website/docs/schema/settings.json", "buildTranslations": "node packages/tools/build-translation.js", "buildWebsiteTranslations": "node packages/tools/website/buildTranslations.js", - "buildWebsite": "node ./packages/tools/website/build.js && yarn run buildPluginDoc && yarn run buildSettingJsonSchema", + "buildWebsite": "node ./packages/tools/website/processDocs.js --env prod && node ./packages/tools/website/build.js && yarn run buildPluginDoc && yarn run buildSettingJsonSchema", "checkLibPaths": "node ./packages/tools/checkLibPaths.js", "checkIgnoredFiles": "node ./packages/tools/checkIgnoredFiles.js", "circularDependencyCheck": "madge --warning --circular --extensions js ./", @@ -58,7 +58,7 @@ "updateIgnored": "node packages/tools/gulp/tasks/updateIgnoredTypeScriptBuildRun.js", "updatePluginTypes": "./packages/generator-joplin/updateTypes.sh", "watch": "yarn workspaces foreach --parallel --verbose --interlaced --jobs 999 run watch", - "watchWebsite": "nodemon --verbose --watch Assets/WebsiteAssets --watch packages/tools/website --watch packages/tools/website/utils --ext md,ts,js,mustache,css,tsx,gif,png,svg --exec \"node packages/tools/website/build.js && http-server --port 8077 ../joplin-website/docs -a localhost\"" + "watchWebsite": "nodemon --delay 1 --watch Assets/WebsiteAssets --watch packages/tools/website --watch packages/tools/website/utils --watch packages/doc-builder/build --ext md,ts,js,mustache,css,tsx,gif,png,svg --exec \"node packages/tools/website/build.js && http-server --port 8077 ../joplin-website/docs -a localhost\"" }, "husky": { "hooks": { diff --git a/packages/app-cli/app/command-apidoc.js b/packages/app-cli/app/command-apidoc.js index 86791940cc..dd1a9a2a3d 100644 --- a/packages/app-cli/app/command-apidoc.js +++ b/packages/app-cli/app/command-apidoc.js @@ -75,7 +75,7 @@ class Command extends BaseCommand { lines.push('```'); lines.push(''); - lines.push('# Authorisation'); + lines.push('## Authorisation'); lines.push(''); lines.push('To prevent unauthorised applications from accessing the API, the calls must be authentified. To do so, you must provide a token as a query parameter for each API call. You can get this token from the Joplin desktop application, on the Web Clipper Options screen.'); lines.push(''); @@ -85,10 +85,10 @@ class Command extends BaseCommand { lines.push(''); lines.push('In the documentation below, the token will not be specified every time however you will need to include it.'); lines.push(''); - lines.push('If needed you may also [request the token programmatically](https://github.com/laurent22/joplin/blob/dev/readme/spec/clipper_auth.md)'); + lines.push('If needed you may also [request the token programmatically](https://github.com/laurent22/joplin/blob/dev/readme/dev/spec/clipper_auth.md)'); lines.push(''); - lines.push('# Using the API'); + lines.push('## Using the API'); lines.push(''); lines.push('All the calls, unless noted otherwise, receives and send **JSON data**. For example to create a new note:'); lines.push(''); @@ -108,7 +108,7 @@ class Command extends BaseCommand { lines.push('* **DELETE**: To delete items.'); lines.push(''); - lines.push('# Filtering data'); + lines.push('## Filtering data'); lines.push(''); lines.push('You can change the fields that will be returned by the API using the `fields=` query parameter, which takes a list of comma separated fields. For example, to get the longitude and latitude of a note, use this:'); lines.push(''); @@ -121,7 +121,7 @@ class Command extends BaseCommand { lines.push('By default API results will contain the following fields: **id**, **parent_id**, **title**'); lines.push(''); - lines.push('# Pagination'); + lines.push('## Pagination'); lines.push(''); lines.push('All API calls that return multiple results will be paginated and will return the following structure:'); lines.push(''); @@ -164,24 +164,24 @@ async function fetchAllNotes() { lines.push('```'); lines.push(''); - lines.push('# Error handling'); + lines.push('## Error handling'); lines.push(''); lines.push('In case of an error, an HTTP status code >= 400 will be returned along with a JSON object that provides more info about the error. The JSON object is in the format `{ "error": "description of error" }`.'); lines.push(''); - lines.push('# About the property types'); + lines.push('## About the property types'); lines.push(''); lines.push('* Text is UTF-8.'); lines.push('* All date/time are Unix timestamps in milliseconds.'); lines.push('* Booleans are integer values 0 or 1.'); lines.push(''); - lines.push('# Testing if the service is available'); + lines.push('## Testing if the service is available'); lines.push(''); lines.push('Call **GET /ping** to check if the service is available. It should return "JoplinClipperServer" if it works.'); lines.push(''); - lines.push('# Searching'); + lines.push('## Searching'); lines.push(''); lines.push('Call **GET /search?query=YOUR_QUERY** to search for notes. This end-point supports the `field` parameter which is recommended to use so that you only get the data that you need. The query syntax is as described in the main documentation: https://joplinapp.org/help/#searching'); lines.push(''); @@ -192,7 +192,7 @@ async function fetchAllNotes() { lines.push('To retrieve all the tags that start with `project-`: **GET /search?query=project-*&type=tag**'); lines.push(''); - lines.push('# Item type IDs'); + lines.push('## Item type IDs'); lines.push(''); lines.push('Item type IDs might be refered to in certain object you will retrieve from the API. This is the correspondance between name and ID:'); lines.push(''); @@ -240,7 +240,7 @@ async function fetchAllNotes() { // }); } - lines.push(`# ${toTitleCase(tableName)}`); + lines.push(`## ${toTitleCase(tableName)}`); lines.push(''); if (model.type === BaseModel.TYPE_FOLDER) { @@ -248,12 +248,12 @@ async function fetchAllNotes() { lines.push(''); } - lines.push('## Properties'); + lines.push('### Properties'); lines.push(''); lines.push(this.createPropertiesTable(tableFields)); lines.push(''); - lines.push(`## GET /${tableName}`); + lines.push(`### GET /${tableName}`); lines.push(''); lines.push(`Gets all ${tableName}`); lines.push(''); @@ -263,50 +263,50 @@ async function fetchAllNotes() { lines.push(''); } - lines.push(`## GET /${tableName}/:id`); + lines.push(`### GET /${tableName}/:id`); lines.push(''); lines.push(`Gets ${singular} with ID :id`); lines.push(''); if (model.type === BaseModel.TYPE_TAG) { - lines.push('## GET /tags/:id/notes'); + lines.push('### GET /tags/:id/notes'); lines.push(''); lines.push('Gets all the notes with this tag.'); lines.push(''); } if (model.type === BaseModel.TYPE_NOTE) { - lines.push('## GET /notes/:id/tags'); + lines.push('### GET /notes/:id/tags'); lines.push(''); lines.push('Gets all the tags attached to this note.'); lines.push(''); - lines.push('## GET /notes/:id/resources'); + lines.push('### GET /notes/:id/resources'); lines.push(''); lines.push('Gets all the resources attached to this note.'); lines.push(''); } if (model.type === BaseModel.TYPE_FOLDER) { - lines.push('## GET /folders/:id/notes'); + lines.push('### GET /folders/:id/notes'); lines.push(''); lines.push('Gets all the notes inside this folder.'); lines.push(''); } if (model.type === BaseModel.TYPE_RESOURCE) { - lines.push('## GET /resources/:id/file'); + lines.push('### GET /resources/:id/file'); lines.push(''); lines.push('Gets the actual file associated with this resource.'); lines.push(''); - lines.push('## GET /resources/:id/notes'); + lines.push('### GET /resources/:id/notes'); lines.push(''); lines.push('Gets the notes (IDs) associated with a resource.'); lines.push(''); } - lines.push(`## POST /${tableName}`); + lines.push(`### POST /${tableName}`); lines.push(''); lines.push(`Creates a new ${singular}`); lines.push(''); @@ -343,7 +343,7 @@ async function fetchAllNotes() { } if (model.type === BaseModel.TYPE_TAG) { - lines.push('## POST /tags/:id/notes'); + lines.push('### POST /tags/:id/notes'); lines.push(''); lines.push('Post a note to this endpoint to add the tag to the note. The note data must at least contain an ID property (all other properties will be ignored).'); lines.push(''); @@ -366,7 +366,7 @@ async function fetchAllNotes() { lines.push(''); lines.push(' curl --data \'{ "title": "Image test", "body": "Here is Joplin icon:", "image_data_url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAIAAABLbSncAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUeNoAyAA3/wFwtO3K6gUB/vz2+Prw9fj/+/r+/wBZKAAExOgF4/MC9ff+MRH6Ui4E+/0Bqc/zutj6AgT+/Pz7+vv7++nu82c4DlMqCvLs8goA/gL8/fz09fb59vXa6vzZ6vjT5fbn6voD/fwC8vX4UiT9Zi//APHyAP8ACgUBAPv5APz7BPj2+DIaC2o3E+3o6ywaC5fT6gD6/QD9/QEVf9kD+/dcLQgJA/7v8vqfwOf18wA1IAIEVycAyt//v9XvAPv7APz8LhoIAPz9Ri4OAgwARgx4W/6fVeEAAAAASUVORK5CYII="}\' http://127.0.0.1:41184/notes'); lines.push(''); - lines.push('### Creating a note with a specific ID'); + lines.push('#### Creating a note with a specific ID'); lines.push(''); lines.push('When a new note is created, it is automatically assigned a new unique ID so **normally you do not need to set the ID**. However, if for some reason you want to set it, you can supply it as the `id` property. It needs to be a **32 characters long string** in hexadecimal. **Make sure it is unique**, for example by generating it using whatever GUID function is available in your programming language.'); lines.push(''); @@ -374,7 +374,7 @@ async function fetchAllNotes() { lines.push(''); } - lines.push(`## PUT /${tableName}/:id`); + lines.push(`### PUT /${tableName}/:id`); lines.push(''); lines.push(`Sets the properties of the ${singular} with ID :id`); lines.push(''); @@ -384,13 +384,13 @@ async function fetchAllNotes() { lines.push(''); } - lines.push(`## DELETE /${tableName}/:id`); + lines.push(`### DELETE /${tableName}/:id`); lines.push(''); lines.push(`Deletes the ${singular} with ID :id`); lines.push(''); if (model.type === BaseModel.TYPE_TAG) { - lines.push('## DELETE /tags/:id/notes/:note_id'); + lines.push('### DELETE /tags/:id/notes/:note_id'); lines.push(''); lines.push('Remove the tag from the note.'); lines.push(''); @@ -400,15 +400,15 @@ async function fetchAllNotes() { { const tableFields = reg.db().tableFields('item_changes', { includeDescription: true }); - lines.push('# Events'); + lines.push('## Events'); lines.push(''); lines.push('This end point can be used to retrieve the latest note changes. Currently only note changes are tracked.'); lines.push(''); - lines.push('## Properties'); + lines.push('### Properties'); lines.push(''); lines.push(this.createPropertiesTable(tableFields)); lines.push(''); - lines.push('## GET /events'); + lines.push('### GET /events'); lines.push(''); lines.push('Returns a paginated list of recent events. A `cursor` property should be provided, which tells from what point in time the events should be returned. The API will return a `cursor` property, to tell from where to resume retrieving events, as well as an `has_more` (tells if more changes can be retrieved) and `items` property, which will contain the list of events. Events are kept for up to 90 days.'); lines.push(''); @@ -416,7 +416,7 @@ async function fetchAllNotes() { lines.push(''); lines.push('The results are paginated so you may need multiple calls to retrieve all the events. Use the `has_more` property to know if more can be retrieved.'); lines.push(''); - lines.push('## GET /events/:id'); + lines.push('### GET /events/:id'); lines.push(''); lines.push('Returns the event with the given ID.'); } diff --git a/packages/app-cli/app/command-help.js b/packages/app-cli/app/command-help.js index eebb816b1d..c7cb2de79f 100644 --- a/packages/app-cli/app/command-help.js +++ b/packages/app-cli/app/command-help.js @@ -33,7 +33,7 @@ class Command extends BaseCommand { const stdoutWidth = app().commandStdoutMaxWidth(); if (args.command === 'shortcuts' || args.command === 'keymap') { - this.stdout(_('For information on how to customise the shortcuts please visit %s', 'https://joplinapp.org/terminal/#shortcuts')); + this.stdout(_('For information on how to customise the shortcuts please visit %s', 'https://joplinapp.org/help/apps/terminal#shortcuts')); this.stdout(''); if ( diff --git a/packages/app-cli/tests/support/pluginRepo/README.md b/packages/app-cli/tests/support/pluginRepo/README.md index 72feee50d7..c48bd0b2c5 100644 --- a/packages/app-cli/tests/support/pluginRepo/README.md +++ b/packages/app-cli/tests/support/pluginRepo/README.md @@ -4,7 +4,7 @@ This is the official Joplin Plugin Repository ## Installation -To install any of these plugins, open the desktop application, then go to the "Plugins" section in the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/config_screen.md). You can then search for any plugin and install it from there. +To install any of these plugins, open the desktop application, then go to the "Plugins" section in the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/apps/config_screen.md). You can then search for any plugin and install it from there. ## Plugins diff --git a/packages/app-clipper/popup/src/App.js b/packages/app-clipper/popup/src/App.js index f52364d532..472254377e 100644 --- a/packages/app-clipper/popup/src/App.js +++ b/packages/app-clipper/popup/src/App.js @@ -132,7 +132,7 @@ class AppComponent extends Component { }; this.clipperServerHelpLink_click = () => { - bridge().tabsCreate({ url: 'https://joplinapp.org/clipper/' }); + bridge().tabsCreate({ url: 'https://joplinapp.org/help/apps/clipper' }); }; this.folderSelect_change = (event) => { diff --git a/packages/app-desktop/checkForUpdates.ts b/packages/app-desktop/checkForUpdates.ts index d31ebb674e..977ffb0695 100644 --- a/packages/app-desktop/checkForUpdates.ts +++ b/packages/app-desktop/checkForUpdates.ts @@ -113,7 +113,7 @@ export default async function checkForUpdates(inBackground: boolean, parentWindo } else if (buttonIndex === 1) { await addSkippedVersion(release.version); } else if (buttonIndex === 2) { - void bridge().openExternal('https://joplinapp.org/changelog/'); + void bridge().openExternal('https://joplinapp.org/help/about/changelog/desktop'); } } } diff --git a/packages/app-desktop/gui/ConfigScreen/controls/MissingPasswordHelpLink.tsx b/packages/app-desktop/gui/ConfigScreen/controls/MissingPasswordHelpLink.tsx index 8c496aa3fb..41a77c4b6b 100644 --- a/packages/app-desktop/gui/ConfigScreen/controls/MissingPasswordHelpLink.tsx +++ b/packages/app-desktop/gui/ConfigScreen/controls/MissingPasswordHelpLink.tsx @@ -10,7 +10,7 @@ interface Props { } const openMissingPasswordFAQ = () => - bridge().openExternal('https://joplinapp.org/faq#why-did-my-sync-and-encryption-passwords-disappear-after-updating-joplin'); + bridge().openExternal('https://joplinapp.org/help/faq#why-did-my-sync-and-encryption-passwords-disappear-after-updating-joplin'); // A link to a specific part of the FAQ related to passwords being cleared when upgrading // to a MacOS/ARM release. diff --git a/packages/app-desktop/gui/NoteEditor/NoteEditor.tsx b/packages/app-desktop/gui/NoteEditor/NoteEditor.tsx index 85f512ec90..b0bcfdec09 100644 --- a/packages/app-desktop/gui/NoteEditor/NoteEditor.tsx +++ b/packages/app-desktop/gui/NoteEditor/NoteEditor.tsx @@ -473,7 +473,7 @@ function NoteEditor(props: NoteEditorProps) { } const onRichTextReadMoreLinkClick = useCallback(() => { - bridge().openExternal('https://joplinapp.org/rich_text_editor'); + bridge().openExternal('https://joplinapp.org/help/apps/rich_text_editor'); }, []); const onRichTextDismissLinkClick = useCallback(() => { diff --git a/packages/app-mobile/components/screens/encryption-config.tsx b/packages/app-mobile/components/screens/encryption-config.tsx index d4277c6b90..02fd9b17df 100644 --- a/packages/app-mobile/components/screens/encryption-config.tsx +++ b/packages/app-mobile/components/screens/encryption-config.tsx @@ -291,10 +291,10 @@ const EncryptionConfigScreen = (props: Props) => { {_('For more information about End-To-End Encryption (E2EE) and advice on how to enable it please check the documentation:')} { - Linking.openURL('https://joplinapp.org/e2ee/'); + Linking.openURL('https://joplinapp.org/help/apps/sync/e2ee'); }} > - https://joplinapp.org/e2ee/ + https://joplinapp.org/help/apps/sync/e2ee } diff --git a/packages/doc-builder/.gitignore b/packages/doc-builder/.gitignore new file mode 100644 index 0000000000..95ae54d16e --- /dev/null +++ b/packages/doc-builder/.gitignore @@ -0,0 +1,30 @@ +# Dependencies +/node_modules + +# Production +/build + +# Generated files +.docusaurus +.cache-loader + +# Docs are auto-generated using processDoc.js +/docs +/help +/blog +/news + +# Misc +.DS_Store +.env.local +.env.development.local +.env.test.local +.env.production.local + +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# Static files +/static/images +/static/*.png \ No newline at end of file diff --git a/packages/doc-builder/README.md b/packages/doc-builder/README.md new file mode 100644 index 0000000000..aaba2fa1e1 --- /dev/null +++ b/packages/doc-builder/README.md @@ -0,0 +1,41 @@ +# Website + +This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator. + +### Installation + +``` +$ yarn +``` + +### Local Development + +``` +$ yarn start +``` + +This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server. + +### Build + +``` +$ yarn build +``` + +This command generates static content into the `build` directory and can be served using any static contents hosting service. + +### Deployment + +Using SSH: + +``` +$ USE_SSH=true yarn deploy +``` + +Not using SSH: + +``` +$ GIT_USER= yarn deploy +``` + +If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch. diff --git a/packages/doc-builder/babel.config.js b/packages/doc-builder/babel.config.js new file mode 100644 index 0000000000..e00595dae7 --- /dev/null +++ b/packages/doc-builder/babel.config.js @@ -0,0 +1,3 @@ +module.exports = { + presets: [require.resolve('@docusaurus/core/lib/babel/preset')], +}; diff --git a/packages/doc-builder/docusaurus.config.js b/packages/doc-builder/docusaurus.config.js new file mode 100644 index 0000000000..703d9d8678 --- /dev/null +++ b/packages/doc-builder/docusaurus.config.js @@ -0,0 +1,174 @@ +// @ts-check +// Note: type annotations allow type checking and IDEs autocompletion + +const lightCodeTheme = require('prism-react-renderer/themes/github'); +const darkCodeTheme = require('prism-react-renderer/themes/dracula'); + +// To make their weird linter happy +process.env.WEBSITE_BASE_URL = process.env.WEBSITE_BASE_URL || ''; + +/** @type {import('@docusaurus/types').Config} */ +const config = { + title: 'Joplin', + tagline: 'Free your notes!', + favicon: 'img/favicon.ico', + + // Set the production url of your site here + url: process.env.WEBSITE_BASE_URL, + // Set the // pathname under which your site is served + // For GitHub pages deployment, it is often '//' + baseUrl: '/', + + onBrokenLinks: 'throw', + onBrokenMarkdownLinks: 'warn', + + // Even if you don't use internalization, you can use this field to set useful + // metadata like html lang. For example, if your site is Chinese, you may want + // to replace "en" with "zh-Hans". + i18n: { + defaultLocale: 'en', + locales: ['en'], + }, + + plugins: [ + [ + require.resolve('docusaurus-lunr-search'), + { + // Options here + }, + ], + ], + + presets: [ + [ + 'classic', + /** @type {import('@docusaurus/preset-classic').Options} */ + ({ + docs: { + path: 'help', + routeBasePath: 'help', + sidebarPath: require.resolve('./sidebars.js'), + breadcrumbs: false, + editUrl: (params) => { + return 'https://github.com/laurent22/joplin/tree/dev/readme/' + params.docPath; + }, + }, + blog: { + showReadingTime: true, + blogSidebarCount: 'ALL', + path: 'news', + routeBasePath: 'news', + editUrl: (params) => { + return 'https://github.com/laurent22/joplin/tree/dev/readme/news/' + params.blogPath; + }, + }, + theme: { + customCss: require.resolve('./src/css/custom.css'), + }, + sitemap: { + changefreq: 'weekly', + priority: 0.5, + filename: 'sitemap.xml', + }, + }), + ], + ], + + themeConfig: + /** @type {import('@docusaurus/preset-classic').ThemeConfig} */ + ({ + navbar: { + title: '', + logo: { + alt: 'Joplin', + src: 'images/logo-text-blue.svg', + href: process.env.WEBSITE_BASE_URL, + target: '_self', + }, + items: [ + { + to: '/news', + label: 'News', + position: 'right', + }, + { + type: 'docSidebar', + sidebarId: 'helpSidebar', + position: 'right', + label: 'Help', + }, + { + to: 'https://discourse.joplinapp.org', + label: 'Forum', + position: 'right', + }, + { + to: process.env.WEBSITE_BASE_URL + '/plans', + label: 'Joplin Cloud', + position: 'right', + className: 'navbar-custom-buttons plans-button', + }, + { + to: process.env.WEBSITE_BASE_URL + '/donate', + label: '♡ Support us', + position: 'right', + className: 'navbar-custom-buttons sponsor-button', + }, + ], + }, + footer: { + style: 'dark', + links: [ + { + title: 'Community', + items: [ + { + label: 'Twitter', + href: 'https://twitter.com/joplinapp', + }, + { + label: 'Patreon', + href: 'https://www.patreon.com/joplin', + }, + { + label: 'LinkedIn', + href: 'https://www.linkedin.com/company/joplin', + }, + { + label: 'Discord', + href: 'https://discord.gg/VSj7AFHvpq', + }, + { + label: 'Mastodon', + href: 'https://mastodon.social/@joplinapp', + }, + { + label: 'Lemmy', + href: 'https://sopuli.xyz/c/joplinapp', + }, + { + label: 'GitHub', + href: 'https://github.com/laurent22/joplin/', + }, + ], + }, + { + title: 'Legal', + items: [ + { + label: 'Privacy Policy', + to: process.env.WEBSITE_BASE_URL + '/privacy', + }, + ], + }, + ], + copyright: `Copyright © 2016-${new Date().getFullYear()} Laurent Cozic`, + }, + prism: { + theme: lightCodeTheme, + darkTheme: darkCodeTheme, + }, + }), +}; + +module.exports = config; diff --git a/packages/doc-builder/package.json b/packages/doc-builder/package.json new file mode 100644 index 0000000000..9ae3f99b1f --- /dev/null +++ b/packages/doc-builder/package.json @@ -0,0 +1,51 @@ +{ + "name": "@joplin/doc-builder", + "version": "0.0.0", + "private": true, + "scripts": { + "docusaurus": "docusaurus", + "start": "WEBSITE_BASE_URL=http://localhost:8077 BROWSERSLIST_IGNORE_OLD_DATA=true docusaurus start --no-minify", + "_build": "BROWSERSLIST_IGNORE_OLD_DATA=true docusaurus build", + "buildDev": "NODE_ENV=development BROWSERSLIST_IGNORE_OLD_DATA=true docusaurus build --no-minify", + "build": "", + "swizzle": "docusaurus swizzle", + "deploy": "docusaurus deploy", + "clear": "docusaurus clear", + "serve": "WEBSITE_BASE_URL=http://localhost:8077 docusaurus serve", + "write-translations": "docusaurus write-translations", + "write-heading-ids": "docusaurus write-heading-ids" + }, + "dependencies": { + "@docusaurus/core": "2.4.3", + "@docusaurus/preset-classic": "2.4.3", + "@mdx-js/react": "^1.6.22", + "clsx": "^1.2.1", + "prism-react-renderer": "^1.3.5", + "react": "^17.0.2", + "react-dom": "^17.0.2" + }, + "devDependencies": { + "@docusaurus/module-type-aliases": "2.4.3", + "@fortawesome/fontawesome-svg-core": "6.4.2", + "@fortawesome/free-brands-svg-icons": "6.4.2", + "@fortawesome/free-regular-svg-icons": "6.4.2", + "@fortawesome/free-solid-svg-icons": "6.4.2", + "@fortawesome/react-fontawesome": "0.2.0", + "docusaurus-lunr-search": "3.2.0" + }, + "browserslist": { + "production": [ + ">0.5%", + "not dead", + "not op_mini all" + ], + "development": [ + "last 1 chrome version", + "last 1 firefox version", + "last 1 safari version" + ] + }, + "engines": { + "node": ">=16.14" + } +} diff --git a/packages/doc-builder/sidebars.js b/packages/doc-builder/sidebars.js new file mode 100644 index 0000000000..ea803f95a0 --- /dev/null +++ b/packages/doc-builder/sidebars.js @@ -0,0 +1,33 @@ +/** + * Creating a sidebar enables you to: + - create an ordered group of docs + - render a sidebar for each doc of that group + - provide next/previous navigation + + The sidebars can be generated from the filesystem, or explicitly defined here. + + Create as many sidebars as you want. + */ + +// @ts-check + +/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */ +const sidebars = { + // By default, Docusaurus generates a sidebar from the docs folder structure + helpSidebar: [{type: 'autogenerated', dirName: '.'}], + + // But you can create a sidebar manually + /* + tutorialSidebar: [ + 'intro', + 'hello', + { + type: 'category', + label: 'Tutorial', + items: ['tutorial-basics/create-a-document'], + }, + ], + */ +}; + +module.exports = sidebars; diff --git a/packages/doc-builder/src/components/HomepageFeatures/index.js b/packages/doc-builder/src/components/HomepageFeatures/index.js new file mode 100644 index 0000000000..78f410ba68 --- /dev/null +++ b/packages/doc-builder/src/components/HomepageFeatures/index.js @@ -0,0 +1,64 @@ +import React from 'react'; +import clsx from 'clsx'; +import styles from './styles.module.css'; + +const FeatureList = [ + { + title: 'Easy to Use', + Svg: require('@site/static/img/undraw_docusaurus_mountain.svg').default, + description: ( + <> + Docusaurus was designed from the ground up to be easily installed and + used to get your website up and running quickly. + + ), + }, + { + title: 'Focus on What Matters', + Svg: require('@site/static/img/undraw_docusaurus_tree.svg').default, + description: ( + <> + Docusaurus lets you focus on your docs, and we'll do the chores. Go + ahead and move your docs into the docs directory. + + ), + }, + { + title: 'Powered by React', + Svg: require('@site/static/img/undraw_docusaurus_react.svg').default, + description: ( + <> + Extend or customize your website layout by reusing React. Docusaurus can + be extended while reusing the same header and footer. + + ), + }, +]; + +function Feature({Svg, title, description}) { + return ( +
+
+ +
+
+

{title}

+

{description}

+
+
+ ); +} + +export default function HomepageFeatures() { + return ( +
+
+
+ {FeatureList.map((props, idx) => ( + + ))} +
+
+
+ ); +} diff --git a/packages/doc-builder/src/components/HomepageFeatures/styles.module.css b/packages/doc-builder/src/components/HomepageFeatures/styles.module.css new file mode 100644 index 0000000000..b248eb2e5d --- /dev/null +++ b/packages/doc-builder/src/components/HomepageFeatures/styles.module.css @@ -0,0 +1,11 @@ +.features { + display: flex; + align-items: center; + padding: 2rem 0; + width: 100%; +} + +.featureSvg { + height: 200px; + width: 200px; +} diff --git a/packages/doc-builder/src/css/custom.css b/packages/doc-builder/src/css/custom.css new file mode 100644 index 0000000000..3390e5be67 --- /dev/null +++ b/packages/doc-builder/src/css/custom.css @@ -0,0 +1,73 @@ +/** + * Any CSS included here will be global. The classic template + * bundles Infima by default. Infima is a CSS framework designed to + * work well for content-centric websites. + */ + +/* You can override the default Infima variables here. */ +:root { + --ifm-color-primary: #0557ba; + --ifm-color-primary-dark: #003a81; + --ifm-color-primary-darker: #003a81; + --ifm-color-primary-darkest: #002450; + --ifm-color-primary-light: #4f9cf9; + --ifm-color-primary-lighter: #71adf7; + --ifm-color-primary-lightest: #a0c9fc; + --ifm-code-font-size: 95%; + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1); +} + +/* For readability concerns, you should choose a lighter palette in dark mode. */ +[data-theme='dark'] { + --ifm-color-primary: #1e74dd; + --ifm-color-primary-dark: #1e74dd; + --ifm-color-primary-darker: #1e74dd; + --ifm-color-primary-darkest: #175aac; + --ifm-color-primary-light: #1e74dd; + --ifm-color-primary-lighter: #1e74dd; + --ifm-color-primary-lightest: #4b89d4; + --docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3); +} + +.menu__link { + font-weight: normal; +} + +.menu__link--active { + font-weight: bold; +} + +.navbar-custom-buttons { + margin-right: 15px; +} + +.plans-button { + border: 1px solid var(--ifm-color-primary); + border-radius: 100px; + color: var(--ifm-color-primary); +} + +.plans-button:hover { + border-color: var(--ifm-color-primary-lighter); + color: var(--ifm-color-primary-lighter); +} + +.sponsor-button { + border-radius: 100px; + color: white; + background-color: var(--ifm-color-primary-light); +} + +.sponsor-button:hover { + background-color: var(--ifm-color-primary-lighter); + color: white; +} + +/* So that the code in markdown.md wraps. Otherwise the table takes too much space horizontally */ +pre code { + white-space: pre-wrap; +} + +.sidebarItemLinkActive_node_modules-\@docusaurus-theme-classic-lib-theme-BlogSidebar-Desktop-styles-module { + font-weight: bold; +} \ No newline at end of file diff --git a/packages/doc-builder/src/pages/index.js b/packages/doc-builder/src/pages/index.js new file mode 100644 index 0000000000..7773289045 --- /dev/null +++ b/packages/doc-builder/src/pages/index.js @@ -0,0 +1,41 @@ +import React from 'react'; +import clsx from 'clsx'; +import Link from '@docusaurus/Link'; +import useDocusaurusContext from '@docusaurus/useDocusaurusContext'; +import Layout from '@theme/Layout'; +import HomepageFeatures from '@site/src/components/HomepageFeatures'; + +import styles from './index.module.css'; + +function HomepageHeader() { + const {siteConfig} = useDocusaurusContext(); + return ( +
+
+

{siteConfig.title}

+

{siteConfig.tagline}

+
+ + Docusaurus Tutorial - 5min ⏱️ + +
+
+
+ ); +} + +export default function Home() { + const {siteConfig} = useDocusaurusContext(); + return ( + + +
+ +
+
+ ); +} diff --git a/packages/doc-builder/src/pages/index.module.css b/packages/doc-builder/src/pages/index.module.css new file mode 100644 index 0000000000..9f71a5da77 --- /dev/null +++ b/packages/doc-builder/src/pages/index.module.css @@ -0,0 +1,23 @@ +/** + * CSS files with the .module.css suffix will be treated as CSS modules + * and scoped locally. + */ + +.heroBanner { + padding: 4rem 0; + text-align: center; + position: relative; + overflow: hidden; +} + +@media screen and (max-width: 996px) { + .heroBanner { + padding: 2rem; + } +} + +.buttons { + display: flex; + align-items: center; + justify-content: center; +} diff --git a/packages/doc-builder/src/pages/markdown-page.md b/packages/doc-builder/src/pages/markdown-page.md new file mode 100644 index 0000000000..9756c5b668 --- /dev/null +++ b/packages/doc-builder/src/pages/markdown-page.md @@ -0,0 +1,7 @@ +--- +title: Markdown page example +--- + +# Markdown page example + +You don't need React to write simple standalone pages. diff --git a/packages/doc-builder/src/theme/MDXComponents.js b/packages/doc-builder/src/theme/MDXComponents.js new file mode 100644 index 0000000000..f2261ec0c9 --- /dev/null +++ b/packages/doc-builder/src/theme/MDXComponents.js @@ -0,0 +1,15 @@ +import React from 'react'; +// Import the original mapper +import MDXComponents from '@theme-original/MDXComponents'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; // Import the FontAwesomeIcon component. +import { library } from '@fortawesome/fontawesome-svg-core'; // Import the library component. +import { fab } from '@fortawesome/free-brands-svg-icons'; // Import all brands icons. +import { fas } from '@fortawesome/free-solid-svg-icons'; // Import all solid icons. + +library.add(fab, fas); // Add all icons to the library so you can use them without importing them individually. + +export default { + // Re-use the default mapping + ...MDXComponents, + icon: FontAwesomeIcon, // Make the FontAwesomeIcon component available in MDX as . +}; \ No newline at end of file diff --git a/packages/doc-builder/static/.nojekyll b/packages/doc-builder/static/.nojekyll new file mode 100644 index 0000000000..e69de29bb2 diff --git a/packages/doc-builder/static/img/docusaurus-social-card.jpg b/packages/doc-builder/static/img/docusaurus-social-card.jpg new file mode 100644 index 0000000000..ffcb448210 Binary files /dev/null and b/packages/doc-builder/static/img/docusaurus-social-card.jpg differ diff --git a/packages/doc-builder/static/img/docusaurus.png b/packages/doc-builder/static/img/docusaurus.png new file mode 100644 index 0000000000..f458149e3c Binary files /dev/null and b/packages/doc-builder/static/img/docusaurus.png differ diff --git a/packages/doc-builder/static/img/favicon.ico b/packages/doc-builder/static/img/favicon.ico new file mode 100644 index 0000000000..c01d54bcd3 Binary files /dev/null and b/packages/doc-builder/static/img/favicon.ico differ diff --git a/packages/doc-builder/static/img/logo.svg b/packages/doc-builder/static/img/logo.svg new file mode 100644 index 0000000000..9db6d0d066 --- /dev/null +++ b/packages/doc-builder/static/img/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/doc-builder/static/img/undraw_docusaurus_mountain.svg b/packages/doc-builder/static/img/undraw_docusaurus_mountain.svg new file mode 100644 index 0000000000..af961c49a8 --- /dev/null +++ b/packages/doc-builder/static/img/undraw_docusaurus_mountain.svg @@ -0,0 +1,171 @@ + + Easy to Use + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/doc-builder/static/img/undraw_docusaurus_react.svg b/packages/doc-builder/static/img/undraw_docusaurus_react.svg new file mode 100644 index 0000000000..94b5cf08f8 --- /dev/null +++ b/packages/doc-builder/static/img/undraw_docusaurus_react.svg @@ -0,0 +1,170 @@ + + Powered by React + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/doc-builder/static/img/undraw_docusaurus_tree.svg b/packages/doc-builder/static/img/undraw_docusaurus_tree.svg new file mode 100644 index 0000000000..d9161d3392 --- /dev/null +++ b/packages/doc-builder/static/img/undraw_docusaurus_tree.svg @@ -0,0 +1,40 @@ + + Focus on What Matters + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/packages/lib/markdownUtils.ts b/packages/lib/markdownUtils.ts index 3753574687..338ac350ee 100644 --- a/packages/lib/markdownUtils.ts +++ b/packages/lib/markdownUtils.ts @@ -27,6 +27,11 @@ export interface MarkdownTableRow { [key: string]: string; } +export interface MarkdownTable { + header: MarkdownTableHeader[]; + rows: MarkdownTableRow[]; +} + const markdownUtils = { // Titles for markdown links only need escaping for [ and ] escapeTitleText(text: string) { diff --git a/packages/lib/models/Resource.ts b/packages/lib/models/Resource.ts index e72beb6d6f..264222d86b 100644 --- a/packages/lib/models/Resource.ts +++ b/packages/lib/models/Resource.ts @@ -444,7 +444,7 @@ export default class Resource extends BaseItem { await Note.save({ title: _('Attachment conflict: "%s"', resource.title), - body: _('There was a [conflict](%s) on the attachment below.\n\n%s', 'https://joplinapp.org/conflict/', Resource.markdownTag(conflictResource)), + body: _('There was a [conflict](%s) on the attachment below.\n\n%s', 'https://joplinapp.org/help/apps/conflict', Resource.markdownTag(conflictResource)), parent_id: await this.resourceConflictFolderId(), }, { changeSource: ItemChange.SOURCE_SYNC }); } diff --git a/packages/lib/models/Setting.ts b/packages/lib/models/Setting.ts index 964f39498d..adea40d5d1 100644 --- a/packages/lib/models/Setting.ts +++ b/packages/lib/models/Setting.ts @@ -393,7 +393,7 @@ class Setting extends BaseModel { wysiwygNo = ` ${_('(wysiwyg: %s)', _('no'))}`; } - const emptyDirWarning = _('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', 'https://joplinapp.org/faq/'); + const emptyDirWarning = _('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', 'https://joplinapp.org/help/faq'); // A "public" setting means that it will show up in the various config screens (or config command for the CLI tool), however // if if private a setting might still be handled and modified by the app. For instance, the settings related to sorting notes are not @@ -1364,7 +1364,7 @@ class Setting extends BaseModel { autoUpdateEnabled: { value: true, type: SettingItemType.Bool, storage: SettingStorage.File, isGlobal: true, section: 'application', public: platform !== 'linux', appTypes: [AppType.Desktop], label: () => _('Automatically check for updates') }, - 'autoUpdate.includePreReleases': { value: false, type: SettingItemType.Bool, section: 'application', storage: SettingStorage.File, isGlobal: true, public: true, appTypes: [AppType.Desktop], label: () => _('Get pre-releases when checking for updates'), description: () => _('See the pre-release page for more details: %s', 'https://joplinapp.org/prereleases') }, + 'autoUpdate.includePreReleases': { value: false, type: SettingItemType.Bool, section: 'application', storage: SettingStorage.File, isGlobal: true, public: true, appTypes: [AppType.Desktop], label: () => _('Get pre-releases when checking for updates'), description: () => _('See the pre-release page for more details: %s', 'https://joplinapp.org/help/about/prereleases') }, 'clipperServer.autoStart': { value: false, type: SettingItemType.Bool, storage: SettingStorage.File, isGlobal: true, public: false }, 'sync.interval': { value: 300, diff --git a/packages/lib/welcomeAssets.js b/packages/lib/welcomeAssets.js index b85fc76983..64401c518f 100644 --- a/packages/lib/welcomeAssets.js +++ b/packages/lib/welcomeAssets.js @@ -4,7 +4,7 @@ module.exports = { { "id": "8a1556e382704160808e9a7bef7135d3", "title": "1. Welcome to Joplin!", - "body": "# Welcome to Joplin!\n\nJoplin is a free, open source note taking and to-do application, which helps you write and organise your notes, and synchronise them between your devices. The notes are searchable, can be copied, tagged and modified either from the application directly or from your own text editor. The notes are in [Markdown format](https://joplinapp.org/help/#markdown). Joplin is available as a **desktop**, **mobile** and **terminal** application.\n\nThe notes in this notebook give an overview of what Joplin can do and how to use it. In general, the three applications share roughly the same functionalities; any differences will be clearly indicated.\n\n![](./AllClients.png)\n\n## Joplin is divided into three parts\n\nJoplin has three main columns:\n\n- **Sidebar** contains the list of your notebooks and tags, as well as the synchronisation status.\n\n- **Note List** contains the current list of notes - either the notes in the currently selected notebook, the notes in the currently selected tag, or search results.\n\n- **Note Editor** is the place where you write your notes. There is a **Rich Text editor** and a **Markdown editor** - click on the **Toggle editor** button in the top right hand corner to switch between both! You may also use an [external editor](https://joplinapp.org/help/#external-text-editor) to edit notes. For example you can use Typora as an external editor and it will display the note as well as any embedded images.\n\n## Writing notes in Markdown\n\nMarkdown is a lightweight markup language with plain text formatting syntax. Joplin supports a [Github-flavoured Markdown syntax](https://joplinapp.org/markdown/) with a few variations and additions.\n\nIn general, while Markdown is a markup language, it is meant to be human readable, even without being rendered. This is a simple example (you can see how it looks in the viewer panel):\n\n* * *\n\n# Heading\n\n## Sub-heading\n\nParagraphs are separated by a blank line. Text attributes _italic_, **bold** and `monospace` are supported. You can create bullet lists:\n\n* apples\n* oranges\n* pears\n\nOr numbered lists:\n\n1. wash\n2. rinse\n3. repeat\n\nThis is a [link](https://joplinapp.org) and, finally, below is a horizontal rule:\n\n* * *\n\nA lot more is possible including adding code samples, math formulae or checkbox lists - see the [Markdown documentation](https://joplinapp.org/help/#markdown) for more information.\n\n## Organising your notes\n\n### With notebooks\n\nJoplin notes are organised into a tree of notebooks and sub-notebooks.\n\n- On **desktop**, you can create a notebook by clicking on New Notebook, then you can drag and drop them into other notebooks to organise them as you wish.\n- On **mobile**, press the \"+\" icon and select \"New notebook\".\n- On **terminal**, press `:mn`\n\n![](./SubNotebooks.png)\n\n### With tags\n\nThe second way to organise your notes is using tags:\n\n- On **desktop**, right-click on any note in the Note List, and select \"Edit tags\". You can then add the tags, separating them by commas.\n- On **mobile**, open the note and press the \"⋮\" button and select \"Tags\".\n- On **terminal**, type `:help tag` for the available commands.\n", + "body": "# Welcome to Joplin!\n\nJoplin is a free, open source note taking and to-do application, which helps you write and organise your notes, and synchronise them between your devices. The notes are searchable, can be copied, tagged and modified either from the application directly or from your own text editor. The notes are in [Markdown format](https://joplinapp.org/help/apps/markdown). Joplin is available as a **desktop**, **mobile** and **terminal** application.\n\nThe notes in this notebook give an overview of what Joplin can do and how to use it. In general, the three applications share roughly the same functionalities; any differences will be clearly indicated.\n\n![](./AllClients.png)\n\n## Joplin is divided into three parts\n\nJoplin has three main columns:\n\n- **Sidebar** contains the list of your notebooks and tags, as well as the synchronisation status.\n\n- **Note List** contains the current list of notes - either the notes in the currently selected notebook, the notes in the currently selected tag, or search results.\n\n- **Note Editor** is the place where you write your notes. There is a **Rich Text editor** and a **Markdown editor** - click on the **Toggle editor** button in the top right hand corner to switch between both! You may also use an [external editor](https://joplinapp.org/help/apps/external_text_editor) to edit notes. For example you can use Typora as an external editor and it will display the note as well as any embedded images.\n\n## Writing notes in Markdown\n\nMarkdown is a lightweight markup language with plain text formatting syntax. Joplin supports a [Github-flavoured Markdown syntax](https://joplinapp.org/help/apps/markdown) with a few variations and additions.\n\nIn general, while Markdown is a markup language, it is meant to be human readable, even without being rendered. This is a simple example (you can see how it looks in the viewer panel):\n\n* * *\n\n# Heading\n\n## Sub-heading\n\nParagraphs are separated by a blank line. Text attributes _italic_, **bold** and `monospace` are supported. You can create bullet lists:\n\n* apples\n* oranges\n* pears\n\nOr numbered lists:\n\n1. wash\n2. rinse\n3. repeat\n\nThis is a [link](https://joplinapp.org) and, finally, below is a horizontal rule:\n\n* * *\n\nA lot more is possible including adding code samples, math formulae or checkbox lists - see the [Markdown documentation](https://joplinapp.org/help/apps/markdown) for more information.\n\n## Organising your notes\n\n### With notebooks\n\nJoplin notes are organised into a tree of notebooks and sub-notebooks.\n\n- On **desktop**, you can create a notebook by clicking on New Notebook, then you can drag and drop them into other notebooks to organise them as you wish.\n- On **mobile**, press the \"+\" icon and select \"New notebook\".\n- On **terminal**, press `:mn`\n\n![](./SubNotebooks.png)\n\n### With tags\n\nThe second way to organise your notes is using tags:\n\n- On **desktop**, right-click on any note in the Note List, and select \"Edit tags\". You can then add the tags, separating them by commas.\n- On **mobile**, open the note and press the \"⋮\" button and select \"Tags\".\n- On **terminal**, type `:help tag` for the available commands.\n", "resources": { "./AllClients.png": { "id": "5c05172554194f95b60971f6d577cc1a", @@ -20,21 +20,21 @@ module.exports = { { "id": "b863cbc514cb4cafbae8dd6a4fcad919", "title": "2. Importing and exporting notes", - "body": "# Importing and exporting notes\n\n## Importing from Evernote\n\nJoplin can import complete Evernote notebooks, as well as notes, tags, images, attached files and note metadata (such as author, geo-location, etc.) via ENEX files.\n\nTo import Evernote data, first export your Evernote notebooks to ENEX files as described [here](https://help.evernote.com/hc/en-us/articles/209005557-How-to-back-up-export-and-restore-import-notes-and-notebooks). Then, on **desktop**, do the following: Open File > Import > ENEX and select your file. The notes will be imported into a new separate notebook. If needed they can then be moved to a different notebook, or the notebook can be renamed, etc. Read [more about Evernote import](https://joplinapp.org/help/#importing-from-evernote).\n\n# Importing from other apps\n\nJoplin can also import notes from [many other apps](https://github.com/laurent22/joplin#importing-from-other-applications) as well as [from Markdown or text files](https://github.com/laurent22/joplin#importing-from-markdown-files).\n\n# Exporting notes\n\nJoplin can export to the JEX format (Joplin Export file), which is an archive that can contain multiple notes, notebooks, etc. This is a format mostly designed for backup purposes. You may also export to other formats such as plain Markdown files, to JSON or to PDF. Find out [more about exporting notes](https://github.com/laurent22/joplin#exporting) on the official website.", + "body": "# Importing and exporting notes\n\n## Importing from Evernote\n\nJoplin can import complete Evernote notebooks, as well as notes, tags, images, attached files and note metadata (such as author, geo-location, etc.) via ENEX files.\n\nTo import Evernote data, first export your Evernote notebooks to ENEX files as described [here](https://help.evernote.com/hc/en-us/articles/209005557-How-to-back-up-export-and-restore-import-notes-and-notebooks). Then, on **desktop**, do the following: Open File > Import > ENEX and select your file. The notes will be imported into a new separate notebook. If needed they can then be moved to a different notebook, or the notebook can be renamed, etc. Read [more about Evernote import](https://joplinapp.org/help/apps/import_export#importing-from-evernote).\n\n# Importing from other apps\n\nJoplin can also import notes from [many other apps](https://joplinapp.org/help/apps/import_export#importing-from-other-applications) as well as [from Markdown or text files](https://joplinapp.org/help/apps/import_export#importing-from-markdown-files).\n\n# Exporting notes\n\nJoplin can export to the JEX format (Joplin Export file), which is an archive that can contain multiple notes, notebooks, etc. This is a format mostly designed for backup purposes. You may also export to other formats such as plain Markdown files, to JSON or to PDF. Find out [more about exporting notes](https://joplinapp.org/help/apps/import_export#exporting) on the official website.", "resources": {}, "parent_id": "9bb5d498aba74cc6a047cfdc841e82a1" }, { "id": "25b656aac0564d1a91ab98295aa3cc58", "title": "3. Synchronising your notes", - "body": "# Synchronising your notes\n\nJoplin allows you to synchronise your data using various file hosting services. The supported cloud services are the following:\n\n## Setting up Joplin Cloud synchronisation\n\n[Joplin Cloud](https://joplinapp.org/plans/) is a web service specifically designed for Joplin. Besides synchronising your data, it also allows you to publish a note to the internet, or share a notebook with your friends, family or colleagues. Joplin Cloud, compared to other services, also features a number of performance improvements allowing for faster synchronisation.\n\nTo use it, go to the config screen, then to the Synchronisation section. In the list of sync target, select \"Joplin Cloud\". Enter your email and password, and you're ready to use Joplin Cloud.\n\n## Setting up Dropbox synchronisation\n\nSelect \"Dropbox\" as the synchronisation target in the config screen. Then, to initiate the synchronisation process, click on the \"Synchronise\" button in the sidebar and follow the instructions.\n\n## Setting up Nextcloud synchronisation\n\nNextcloud is a self-hosted, private cloud solution. To set it up, go to the config screen and select Nextcloud as the synchronisation target. Then input the WebDAV URL (to get it, go to your Nextcloud page, click on Settings in the bottom left corner of the page and copy the URL). Note that it has to be the **full URL**, so for example if you want the notes to be under `/Joplin`, the URL would be something like `https://example.com/remote.php/webdav/Joplin` (note that \"/Joplin\" part). And **make sure to create the \"/Joplin\" directory in Nextcloud**. Finally set the username and password. If it does not work, please [see this explanation](https://github.com/laurent22/joplin/issues/61#issuecomment-373282608) for more details.\n\n## Setting up OneDrive or WebDAV synchronisation\n\nOneDrive and WebDAV are also supported as synchronisation services. Please see [the synchronisation documentation](https://github.com/laurent22/joplin#synchronisation) for more information.\n\n## Using End-To-End Encryption\n\nJoplin supports end-to-end encryption (E2EE) on all the applications. E2EE is a system where only the owner of the data can read it. It prevents potential eavesdroppers - including telecom providers, internet providers, and even the developers of Joplin from being able to access the data. Please see the [End-To-End Encryption Tutorial](https://joplinapp.org/e2ee/) for more information about this feature and how to enable it.\n", + "body": "# Synchronising your notes\n\nJoplin allows you to synchronise your data using various file hosting services. The supported cloud services are the following:\n\n## Setting up Joplin Cloud synchronisation\n\n[Joplin Cloud](https://joplinapp.org/plans/) is a web service specifically designed for Joplin. Besides synchronising your data, it also allows you to publish a note to the internet, or share a notebook with your friends, family or colleagues. Joplin Cloud, compared to other services, also features a number of performance improvements allowing for faster synchronisation.\n\nTo use it, go to the config screen, then to the Synchronisation section. In the list of sync target, select \"Joplin Cloud\". Enter your email and password, and you're ready to use Joplin Cloud.\n\n## Setting up Dropbox synchronisation\n\nSelect \"Dropbox\" as the synchronisation target in the config screen. Then, to initiate the synchronisation process, click on the \"Synchronise\" button in the sidebar and follow the instructions.\n\n## Setting up Nextcloud synchronisation\n\nNextcloud is a self-hosted, private cloud solution. To set it up, go to the config screen and select Nextcloud as the synchronisation target. Then input the WebDAV URL (to get it, go to your Nextcloud page, click on Settings in the bottom left corner of the page and copy the URL). Note that it has to be the **full URL**, so for example if you want the notes to be under `/Joplin`, the URL would be something like `https://example.com/remote.php/webdav/Joplin` (note that \"/Joplin\" part). And **make sure to create the \"/Joplin\" directory in Nextcloud**. Finally set the username and password. If it does not work, please [see this explanation](https://github.com/laurent22/joplin/issues/61#issuecomment-373282608) for more details.\n\n## Setting up OneDrive or WebDAV synchronisation\n\nOneDrive and WebDAV are also supported as synchronisation services. Please see [the synchronisation documentation](https://github.com/laurent22/joplin#synchronisation) for more information.\n\n## Using End-To-End Encryption\n\nJoplin supports end-to-end encryption (E2EE) on all the applications. E2EE is a system where only the owner of the data can read it. It prevents potential eavesdroppers - including telecom providers, internet providers, and even the developers of Joplin from being able to access the data. Please see the [End-To-End Encryption Tutorial](https://joplinapp.org/help/apps/sync/e2ee) for more information about this feature and how to enable it.\n", "resources": {}, "parent_id": "9bb5d498aba74cc6a047cfdc841e82a1" }, { "id": "2ee48f80889447429a3cccb04a466072", "title": "4. Tips", - "body": "# Tips\n\nThe first few notes should have given you an overview of the main functionalities of Joplin, but there's more it can do. See below for some of these features and how to get more help using the app:\n\n## Web clipper\n\n![](./WebClipper.png)\n\nThe Web Clipper is a browser extension that allows you to save web pages and screenshots from your browser. To start using it, open the Joplin desktop application, go to the Web Clipper Options and follow the instructions.\n\nMore info on the official website: https://joplinapp.org/clipper/\n\n## Plugins\n\nJoplin supports many plugins that allows you to add new features to the app, such as tabs, a table of content for your notes, a way to manage favourite notes, and many other ones. To add a plugin, go to the \"Plugins\" section in the config screen. From there you can search and install plugins, as well as search or update plugins.\n\n## Attachments\n\nAny kind of file can be attached to a note. In Markdown, links to these files are represented as an ID. In the note viewer, these files, if they are images, will be displayed or, if they are other files (PDF, text files, etc.) they will be displayed as links. Clicking on this link will open the file in the default application.\n\nImages can be attached either by clicking on \"Attach file\" or by pasting (with `Ctrl+V` or `Cmd+V`) an image directly in the editor, or by drag and dropping an image.\n\nMore info about attachments: https://joplinapp.org/help/#attachments\n\n## Search\n\nJoplin supports advanced search queries, which are fully documented on the official website: https://joplinapp.org/help/#searching\n\n## Alarms\n\nAn alarm can be associated with any to-do. It will be triggered at the given time by displaying a notification. To use this feature, see the documentation: https://joplinapp.org/help/#notifications\n\n## Markdown advanced tips\n\nJoplin uses and renders [Github-flavoured Markdown](https://joplinapp.org/markdown/) with a few variations and additions.\n\nFor example, tables are supported:\n\n| Tables | Are | Cool |\n| ------------- |:-------------:| -----:|\n| col 3 is | right-aligned | $1600 |\n| col 2 is | centered | $12 |\n| zebra stripes | are neat | $1 |\n\nYou can also create lists of checkboxes. These checkboxes can be ticked directly in the viewer, or by adding an \"x\" inside:\n\n- [ ] Milk\n- [ ] Eggs\n- [x] Beer\n\nMath expressions can be added using the [KaTeX notation](https://khan.github.io/KaTeX/):\n\n$$\nf(x) = \\int_{-\\infty}^\\infty\n \\hat f(\\xi)\\,e^{2 \\pi i \\xi x}\n \\,d\\xi\n$$\n\nVarious other tricks are possible, such as using HTML, or customising the CSS. See the Markdown documentation for more info - https://joplinapp.org/markdown/\n\n## Community and further help\n\n- For general discussion about Joplin, user support, software development questions, and to discuss new features, go to the [Joplin Forum](https://discourse.joplinapp.org/). It is possible to login with your GitHub account.\n- The latest news are posted [on the Patreon page](https://www.patreon.com/joplin).\n- For bug reports and feature requests, go to the [GitHub Issue Tracker](https://github.com/laurent22/joplin/issues).\n\n## Donations\n\nDonations 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.\n\nPlease see the [donation page](https://joplinapp.org/donate/) for information on how to support the development of Joplin.", + "body": "# Tips\n\nThe first few notes should have given you an overview of the main functionalities of Joplin, but there's more it can do. See below for some of these features and how to get more help using the app:\n\n## Web clipper\n\n![](./WebClipper.png)\n\nThe Web Clipper is a browser extension that allows you to save web pages and screenshots from your browser. To start using it, open the Joplin desktop application, go to the Web Clipper Options and follow the instructions.\n\nMore info on the official website: https://joplinapp.org/help/apps/clipper\n\n## Plugins\n\nJoplin supports many plugins that allows you to add new features to the app, such as tabs, a table of content for your notes, a way to manage favourite notes, and many other ones. To add a plugin, go to the \"Plugins\" section in the config screen. From there you can search and install plugins, as well as search or update plugins.\n\n## Attachments\n\nAny kind of file can be attached to a note. In Markdown, links to these files are represented as an ID. In the note viewer, these files, if they are images, will be displayed or, if they are other files (PDF, text files, etc.) they will be displayed as links. Clicking on this link will open the file in the default application.\n\nImages can be attached either by clicking on \"Attach file\" or by pasting (with `Ctrl+V` or `Cmd+V`) an image directly in the editor, or by drag and dropping an image.\n\nMore info about attachments: https://joplinapp.org/help/apps/attachments\n\n## Search\n\nJoplin supports advanced search queries, which are fully documented on the official website: https://joplinapp.org/help/apps/search\n\n## Alarms\n\nAn alarm can be associated with any to-do. It will be triggered at the given time by displaying a notification. To use this feature, see the documentation: https://joplinapp.org/help/apps/notifications\n\n## Markdown advanced tips\n\nJoplin uses and renders [Github-flavoured Markdown](https://joplinapp.org/help/apps/markdown) with a few variations and additions.\n\nFor example, tables are supported:\n\n| Tables | Are | Cool |\n| ------------- |:-------------:| -----:|\n| col 3 is | right-aligned | $1600 |\n| col 2 is | centered | $12 |\n| zebra stripes | are neat | $1 |\n\nYou can also create lists of checkboxes. These checkboxes can be ticked directly in the viewer, or by adding an \"x\" inside:\n\n- [ ] Milk\n- [ ] Eggs\n- [x] Beer\n\nMath expressions can be added using the [KaTeX notation](https://khan.github.io/KaTeX/):\n\n$$\nf(x) = \\int_{-\\infty}^\\infty\n \\hat f(\\xi)\\,e^{2 \\pi i \\xi x}\n \\,d\\xi\n$$\n\nVarious other tricks are possible, such as using HTML, or customising the CSS. See the Markdown documentation for more info - https://joplinapp.org/help/apps/markdown\n\n## Community and further help\n\n- For general discussion about Joplin, user support, software development questions, and to discuss new features, go to the [Joplin Forum](https://discourse.joplinapp.org/). It is possible to login with your GitHub account.\n- The latest news are posted [on the Patreon page](https://www.patreon.com/joplin).\n- For bug reports and feature requests, go to the [GitHub Issue Tracker](https://github.com/laurent22/joplin/issues).\n\n## Donations\n\nDonations 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.\n\nPlease see the [donation page](https://joplinapp.org/donate/) for information on how to support the development of Joplin.", "resources": { "./WebClipper.png": { "id": "30cf9214f5054c4da3b23eed7211a6e0", @@ -64,28 +64,28 @@ module.exports = { { "id": "223a99e0dad4c8882988f446815ea28c", "title": "1. Bienvenue dans Joplin !", - "body": "# Bienvenue dans Joplin !\n\nJoplin est une application gratuite et open source de prise de notes, qui vous aide à rédiger et à organiser vos notes, et à les synchroniser entre vos appareils. Les notes sont consultables, peuvent être copiées, étiquetées et modifiées directement depuis l'application ou depuis votre propre éditeur de texte. Les notes sont au [format Markdown](https://joplinapp.org/help/#markdown). Joplin est disponible en tant qu'application de **bureau**, **mobile** et **terminal**.\n\nLes notes de ce carnet donnent un aperçu de ce que Joplin peut faire et comment l'utiliser. En général, les trois applications partagent à peu près les mêmes fonctionnalités ; toute différence sera clairement indiquée.\n\n![](./AllClients.png)\n\n## Joplin est divisé en trois parties\n\nJoplin a trois colonnes principales :\n\n- La **barre latérale** contient la liste de vos carnets et étiquettes, ainsi que l'état de la synchronisation.\n\n- La **liste de notes** contient la liste actuelle des notes - soit les notes du bloc-notes actuellement sélectionné, les notes de l'étiquette actuellement sélectionnée ou les résultats de la recherche.\n\n- L'**éditeur de notes** est là où vous écrivez vos notes. Il existe un **éditeur de texte enrichi** et un **éditeur Markdown** - cliquez sur le bouton **Basculer l'éditeur** dans le coin supérieur droit pour basculer entre les deux ! Vous pouvez également utiliser un [éditeur externe](https://joplinapp.org/help/#external-text-editor) pour modifier les notes. Par exemple, vous pouvez utiliser Typora comme éditeur externe et il affichera la note ainsi que toutes les images intégrées.\n\n## Écrire des notes en Markdown\n\nMarkdown est un langage de balisage léger. Joplin prend en charge une [syntaxe Markdown à saveur Github](https://joplinapp.org/markdown/) avec quelques variantes et ajouts.\n\nEn général, bien que Markdown soit un langage de balisage, il lisible directement. Ceci est un exemple simple (vous pouvez voir à quoi il ressemble dans le panneau de visualisation) :\n\n* * *\n\n# En-tête\n\n## Sous-titre\n\nLes paragraphes sont séparés par une ligne blanche. Les attributs de texte _italique_, **gras** et `monospace` sont pris en charge. Vous pouvez créer des listes à puces :\n\n* pommes\n* des oranges\n* des poires\n\nOu des listes numérotées :\n\n1. laver\n2. rincer\n3. répéter\n\nCeci est un [lien](https://joplinapp.org) et, enfin, ci-dessous est une règle horizontale :\n\n* * *\n\nBeaucoup plus est possible, y compris l'ajout d'exemples de code informatique, de formules mathématiques ou de listes de cases à cocher - voir la [documentation Markdown](https://joplinapp.org/help/#markdown) pour plus d'informations.\n\n## Organiser vos notes\n\n### Avec des carnets\n\nLes notes de Joplin sont organisées en une arborescence de carnets et de sous-carnets.\n\n- Sur l'appli de **bureau**, vous pouvez créer un carnet en cliquant sur \"Nouveau carnet\", puis vous pouvez les faire glisser et les déposer dans d'autres carnets pour les organiser comme vous le souhaitez.\n- Sur **mobile**, appuyez sur l'icône \"+\" et sélectionnez \"Nouveau carnet\".\n- Sur le **terminal**, appuyez sur `:mn`\n\n![](./SubNotebooks.png)\n\n### Avec des étiquettes\n\nLa deuxième façon d'organiser vos notes consiste à utiliser des étiquettes :\n\n- Sur **bureau**, faites un clic droit sur n'importe quelle note dans la liste des notes et sélectionnez \"Modifier les étiquettes\". Vous pouvez ensuite ajouter les étiquettes en les séparant par des virgules.\n- Sur **mobile**, ouvrez la note et appuyez sur le bouton \"⋮\" et sélectionnez \"étiquettes\".\n- Sur le **terminal**, tapez `:help tag` pour les commandes disponibles.\n", + "body": "# Bienvenue dans Joplin !\n\nJoplin est une application gratuite et open source de prise de notes, qui vous aide à rédiger et à organiser vos notes, et à les synchroniser entre vos appareils. Les notes sont consultables, peuvent être copiées, étiquetées et modifiées directement depuis l'application ou depuis votre propre éditeur de texte. Les notes sont au [format Markdown](https://joplinapp.org/help/apps/markdown). Joplin est disponible en tant qu'application de **bureau**, **mobile** et **terminal**.\n\nLes notes de ce carnet donnent un aperçu de ce que Joplin peut faire et comment l'utiliser. En général, les trois applications partagent à peu près les mêmes fonctionnalités ; toute différence sera clairement indiquée.\n\n![](./AllClients.png)\n\n## Joplin est divisé en trois parties\n\nJoplin a trois colonnes principales :\n\n- La **barre latérale** contient la liste de vos carnets et étiquettes, ainsi que l'état de la synchronisation.\n\n- La **liste de notes** contient la liste actuelle des notes - soit les notes du bloc-notes actuellement sélectionné, les notes de l'étiquette actuellement sélectionnée ou les résultats de la recherche.\n\n- L'**éditeur de notes** est là où vous écrivez vos notes. Il existe un **éditeur de texte enrichi** et un **éditeur Markdown** - cliquez sur le bouton **Basculer l'éditeur** dans le coin supérieur droit pour basculer entre les deux ! Vous pouvez également utiliser un [éditeur externe](https://joplinapp.org/help/apps/external_text_editor) pour modifier les notes. Par exemple, vous pouvez utiliser Typora comme éditeur externe et il affichera la note ainsi que toutes les images intégrées.\n\n## Écrire des notes en Markdown\n\nMarkdown est un langage de balisage léger. Joplin prend en charge une [syntaxe Markdown à saveur Github](https://joplinapp.org/help/apps/markdown) avec quelques variantes et ajouts.\n\nEn général, bien que Markdown soit un langage de balisage, il lisible directement. Ceci est un exemple simple (vous pouvez voir à quoi il ressemble dans le panneau de visualisation) :\n\n* * *\n\n# En-tête\n\n## Sous-titre\n\nLes paragraphes sont séparés par une ligne blanche. Les attributs de texte _italique_, **gras** et `monospace` sont pris en charge. Vous pouvez créer des listes à puces :\n\n* pommes\n* des oranges\n* des poires\n\nOu des listes numérotées :\n\n1. laver\n2. rincer\n3. répéter\n\nCeci est un [lien](https://joplinapp.org) et, enfin, ci-dessous est une règle horizontale :\n\n* * *\n\nBeaucoup plus est possible, y compris l'ajout d'exemples de code informatique, de formules mathématiques ou de listes de cases à cocher - voir la [documentation Markdown](https://joplinapp.org/help/apps/markdown) pour plus d'informations.\n\n## Organiser vos notes\n\n### Avec des carnets\n\nLes notes de Joplin sont organisées en une arborescence de carnets et de sous-carnets.\n\n- Sur l'appli de **bureau**, vous pouvez créer un carnet en cliquant sur \"Nouveau carnet\", puis vous pouvez les faire glisser et les déposer dans d'autres carnets pour les organiser comme vous le souhaitez.\n- Sur **mobile**, appuyez sur l'icône \"+\" et sélectionnez \"Nouveau carnet\".\n- Sur le **terminal**, appuyez sur `:mn`\n\n![](./SubNotebooks.png)\n\n### Avec des étiquettes\n\nLa deuxième façon d'organiser vos notes consiste à utiliser des étiquettes :\n\n- Sur **bureau**, faites un clic droit sur n'importe quelle note dans la liste des notes et sélectionnez \"Modifier les étiquettes\". Vous pouvez ensuite ajouter les étiquettes en les séparant par des virgules.\n- Sur **mobile**, ouvrez la note et appuyez sur le bouton \"⋮\" et sélectionnez \"étiquettes\".\n- Sur le **terminal**, tapez `:help tag` pour les commandes disponibles.\n", "resources": {}, "parent_id": "5494e8c3dcfc84c1549ed22fb3a89265" }, { "id": "21648b1b1b541e7bb87cff262bcc6b54", "title": "2. Importer et exporter des notes", - "body": "# Importer et exporter des notes\n\n## Importation depuis Evernote\n\nJoplin peut importer des carnets complets depuis Evernote, ainsi que des notes, des étiquettes, des images, des fichiers joints et des métadonnées de note (telles que l'auteur, la géolocalisation, etc.) via des fichiers ENEX.\n\nPour importer des données Evernote, exportez d'abord vos carnets Evernote vers des fichiers ENEX comme décrit [ici](https://help.evernote.com/hc/en-us/articles/209005557-How-to-back-up-export-and-restaurer-importer-notes-et-carnets). Ensuite, sur **bureau**, procédez comme suit : Ouvrez Fichier > Importer > ENEX et sélectionnez votre fichier. Les notes seront importées dans un nouveau cahier séparé. Si nécessaire, ils peuvent ensuite être déplacés vers un autre carnet, ou le carnet peut être renommé, etc. [En savoir plus sur l'importation Evernote](https://joplinapp.org/help/#importing-from-evernote).\n\n# Importation à partir d'autres applications\n\nJoplin peut également importer des notes depuis [de nombreuses autres applications](https://github.com/laurent22/joplin#importing-from-other-applications) ainsi que [depuis Markdown ou depuis des fichiers texte](https://github.com/laurent22/joplin#importing-from-markdown-files).\n\n# Exporter des notes\n\nJoplin peut exporter au format JEX (fichier d'exportation Joplin), qui est une archive pouvant contenir plusieurs notes, cahiers, etc. Il s'agit d'un format principalement conçu à des fins de sauvegarde. Vous pouvez également exporter vers d'autres formats tels que des fichiers Markdown simples, vers JSON ou vers PDF. Découvrez [l'exportation de notes](https://github.com/laurent22/joplin#exporting) sur le site officiel.", + "body": "# Importer et exporter des notes\n\n## Importation depuis Evernote\n\nJoplin peut importer des carnets complets depuis Evernote, ainsi que des notes, des étiquettes, des images, des fichiers joints et des métadonnées de note (telles que l'auteur, la géolocalisation, etc.) via des fichiers ENEX.\n\nPour importer des données Evernote, exportez d'abord vos carnets Evernote vers des fichiers ENEX comme décrit [ici](https://help.evernote.com/hc/en-us/articles/209005557-How-to-back-up-export-and-restaurer-importer-notes-et-carnets). Ensuite, sur **bureau**, procédez comme suit : Ouvrez Fichier > Importer > ENEX et sélectionnez votre fichier. Les notes seront importées dans un nouveau cahier séparé. Si nécessaire, ils peuvent ensuite être déplacés vers un autre carnet, ou le carnet peut être renommé, etc. [En savoir plus sur l'importation Evernote](https://joplinapp.org/help/apps/import_export#importing-from-evernote).\n\n# Importation à partir d'autres applications\n\nJoplin peut également importer des notes depuis [de nombreuses autres applications](https://joplinapp.org/help/apps/import_export#importing-from-other-applications) ainsi que [depuis Markdown ou depuis des fichiers texte](https://joplinapp.org/help/apps/import_export#importing-from-markdown-files).\n\n# Exporter des notes\n\nJoplin peut exporter au format JEX (fichier d'exportation Joplin), qui est une archive pouvant contenir plusieurs notes, cahiers, etc. Il s'agit d'un format principalement conçu à des fins de sauvegarde. Vous pouvez également exporter vers d'autres formats tels que des fichiers Markdown simples, vers JSON ou vers PDF. Découvrez [l'exportation de notes](https://joplinapp.org/help/apps/import_export#exporting) sur le site officiel.", "resources": {}, "parent_id": "5494e8c3dcfc84c1549ed22fb3a89265" }, { "id": "3adfa574c0264f68f4c33c4133e734fb", "title": "3. Synchroniser vos notes", - "body": "# Synchroniser vos notes\n\nJoplin vous permet de synchroniser vos données à l'aide de divers services d'hébergement de fichiers. Les services cloud pris en charge sont les suivants :\n\n## Configuration de la synchronisation Joplin Cloud\n\n[Joplin Cloud](https://joplinapp.org/plans/) est un service Web spécialement conçu pour Joplin. Outre la synchronisation de vos données, il vous permet également de publier une note sur Internet ou de partager un carnet avec vos amis, votre famille ou vos collègues. Joplin Cloud, par rapport à d'autres services, présente également un certain nombre d'améliorations des performances permettant une synchronisation plus rapide.\n\nPour l'utiliser, rendez-vous dans l'écran de configuration, puis dans la rubrique Synchronisation. Dans la liste des cibles de synchronisation, sélectionnez \"Joplin Cloud\". Entrez votre e-mail et votre mot de passe, et vous êtes prêt à utiliser Joplin Cloud.\n\n## Configuration de la synchronisation Dropbox\n\nSélectionnez \"Dropbox\" comme cible de synchronisation dans l'écran de configuration. Ensuite, pour lancer le processus de synchronisation, cliquez sur le bouton \"Synchroniser\" dans la barre latérale et suivez les instructions.\n\n## Configuration de la synchronisation Nextcloud\n\nNextcloud est une solution de cloud pouvant être auto-hébergée. Pour le configurer, accédez à l'écran de configuration et sélectionnez Nextcloud comme cible de synchronisation. Saisissez ensuite l'URL WebDAV (pour l'obtenir, rendez-vous sur votre page Nextcloud, cliquez sur Paramètres dans le coin inférieur gauche de la page et copiez l'URL). Notez qu'il doit s'agir de l'**URL complète**, donc par exemple si vous voulez que les notes soient sous `/Joplin`, l'URL serait quelque chose comme `https://example.com/remote.php/webdav /Joplin` (notez que la partie \"/Joplin\"). Et **assurez-vous de créer le répertoire \"/Joplin\" dans Nextcloud**. Définissez enfin le nom d'utilisateur et le mot de passe. Si cela ne fonctionne pas, veuillez [voir cette explication](https://github.com/laurent22/joplin/issues/61#issuecomment-373282608) pour plus de détails.\n\n## Configuration de la synchronisation OneDrive ou WebDAV\n\nOneDrive et WebDAV sont également pris en charge en tant que services de synchronisation. Veuillez consulter [la documentation de synchronisation](https://github.com/laurent22/joplin#synchronisation) pour plus d'informations.\n\n## Utilisation du chiffrement de bout en bout\n\nJoplin prend en charge le chiffrement de bout en bout (E2EE) sur toutes les applications. E2EE est un système où seul le propriétaire des données peut les lire. Il empêche les espions potentiels, y compris les fournisseurs de télécommunications, les fournisseurs d'accès Internet et même les développeurs de Joplin, d'accéder aux données. Veuillez consulter le [tutoriel sur le chiffrement de bout en bout](https://joplinapp.org/e2ee/) pour plus d'informations sur cette fonctionnalité et comment l'activer.", + "body": "# Synchroniser vos notes\n\nJoplin vous permet de synchroniser vos données à l'aide de divers services d'hébergement de fichiers. Les services cloud pris en charge sont les suivants :\n\n## Configuration de la synchronisation Joplin Cloud\n\n[Joplin Cloud](https://joplinapp.org/plans/) est un service Web spécialement conçu pour Joplin. Outre la synchronisation de vos données, il vous permet également de publier une note sur Internet ou de partager un carnet avec vos amis, votre famille ou vos collègues. Joplin Cloud, par rapport à d'autres services, présente également un certain nombre d'améliorations des performances permettant une synchronisation plus rapide.\n\nPour l'utiliser, rendez-vous dans l'écran de configuration, puis dans la rubrique Synchronisation. Dans la liste des cibles de synchronisation, sélectionnez \"Joplin Cloud\". Entrez votre e-mail et votre mot de passe, et vous êtes prêt à utiliser Joplin Cloud.\n\n## Configuration de la synchronisation Dropbox\n\nSélectionnez \"Dropbox\" comme cible de synchronisation dans l'écran de configuration. Ensuite, pour lancer le processus de synchronisation, cliquez sur le bouton \"Synchroniser\" dans la barre latérale et suivez les instructions.\n\n## Configuration de la synchronisation Nextcloud\n\nNextcloud est une solution de cloud pouvant être auto-hébergée. Pour le configurer, accédez à l'écran de configuration et sélectionnez Nextcloud comme cible de synchronisation. Saisissez ensuite l'URL WebDAV (pour l'obtenir, rendez-vous sur votre page Nextcloud, cliquez sur Paramètres dans le coin inférieur gauche de la page et copiez l'URL). Notez qu'il doit s'agir de l'**URL complète**, donc par exemple si vous voulez que les notes soient sous `/Joplin`, l'URL serait quelque chose comme `https://example.com/remote.php/webdav /Joplin` (notez que la partie \"/Joplin\"). Et **assurez-vous de créer le répertoire \"/Joplin\" dans Nextcloud**. Définissez enfin le nom d'utilisateur et le mot de passe. Si cela ne fonctionne pas, veuillez [voir cette explication](https://github.com/laurent22/joplin/issues/61#issuecomment-373282608) pour plus de détails.\n\n## Configuration de la synchronisation OneDrive ou WebDAV\n\nOneDrive et WebDAV sont également pris en charge en tant que services de synchronisation. Veuillez consulter [la documentation de synchronisation](https://joplinapp.org/help/apps/sync/) pour plus d'informations.\n\n## Utilisation du chiffrement de bout en bout\n\nJoplin prend en charge le chiffrement de bout en bout (E2EE) sur toutes les applications. E2EE est un système où seul le propriétaire des données peut les lire. Il empêche les espions potentiels, y compris les fournisseurs de télécommunications, les fournisseurs d'accès Internet et même les développeurs de Joplin, d'accéder aux données. Veuillez consulter le [tutoriel sur le chiffrement de bout en bout](https://joplinapp.org/help/apps/sync/e2ee) pour plus d'informations sur cette fonctionnalité et comment l'activer.", "resources": {}, "parent_id": "5494e8c3dcfc84c1549ed22fb3a89265" }, { "id": "4d0ffc5beb024e6c498129ad814d156e", "title": "4. Trucs & Astuces", - "body": "# Trucs & Astuces\n\nLes premières notes vous ont donné un aperçu des principales fonctionnalités de Joplin, mais il peut faire plus. Voir ci-dessous pour certaines de ces fonctionnalités et comment obtenir plus d'aide en utilisant l'application :\n\n## Web Clipper\n\n![](./WebClipper.png)\n\nLe Web Clipper est une extension de navigateur qui vous permet d'enregistrer des pages Web et des captures d'écran à partir de votre navigateur. Pour commencer à l'utiliser, ouvrez l'application de bureau Joplin, accédez aux options du Web Clipper et suivez les instructions.\n\nPlus d'infos sur le site officiel : https://joplinapp.org/clipper/\n\n## Plugins\n\nJoplin prend en charge de nombreux plugins qui vous permettent d'ajouter de nouvelles fonctionnalités à l'application, telles que des onglets, une table des matières pour vos notes, un moyen de gérer les notes préférées et bien d'autres. Pour ajouter un plugin, rendez-vous dans la section \"Plugins\" de l'écran de configuration. À partir de là, vous pouvez rechercher et installer des plugins, ainsi que rechercher ou mettre à jour des plugins.\n\n## Pièces jointes\n\nTout type de fichier peut être joint à une note. Dans Markdown, les liens vers ces fichiers sont représentés par un ID. Dans le visualiseur de notes, ces fichiers, s'il s'agit d'images, seront affichés ou, s'il s'agit d'autres fichiers (PDF, fichiers texte, etc.), ils seront affichés sous forme de liens. Cliquer sur ce lien ouvrira le fichier dans l'application par défaut.\n\nLes images peuvent être jointes soit en cliquant sur \"Joindre un fichier\", soit en collant (avec `Ctrl+V` ou `Cmd+V`) une image directement dans l'éditeur, soit en glissant-déposant une image.\n\nPlus d'infos sur les pièces jointes : https://joplinapp.org/help/#attachments\n\n## Recherche\n\nJoplin prend en charge les requêtes de recherche avancées, qui sont entièrement documentées sur le site officiel : https://joplinapp.org/help/#searching\n\n## Alarmes\n\nUne alarme peut être associée à n'importe quelle tâche. Elle sera déclenchée à l'heure indiquée par l'affichage d'une notification. Pour utiliser cette fonctionnalité, consultez la documentation : https://joplinapp.org/help/#notifications\n\n## Conseils avancés Markdown\n\nJoplin utilise et rend [Github-flavored Markdown](https://joplinapp.org/markdown/) avec quelques variations et ajouts.\n\nPar exemple, les tableaux sont pris en charge :\n\n| Les tableaux | Sont | Cools |\n| ------------- |:-------------:| -----:|\n| col 3 est | alignée à droite | $1600 |\n| col 2 est | centrée | $12 |\n\nVous pouvez également créer des listes de cases à cocher. Ces cases peuvent être cochées directement dans le visualiseur, ou en ajoutant un \"x\" à l'intérieur :\n\n- [ ] Lait\n- [ ] Œufs\n- [x] Bière\n\nDes expressions mathématiques peuvent être ajoutées à l'aide de la [notation KaTeX](https://khan.github.io/KaTeX/) :\n\n$$\nf(x) = \\int_{-\\infty}^\\infty\n \\hat f(\\xi)\\,e^{2 \\pi i \\xi x}\n \\,d\\xi\n$$\n\nDiverses autres astuces sont possibles, telles que l'utilisation de HTML ou la personnalisation du CSS. Voir la documentation Markdown pour plus d'informations - https://joplinapp.org/markdown/\n\n## Communauté et aide supplémentaire\n\n- Pour une discussion générale sur Joplin, l'assistance aux utilisateurs, les questions de développement logiciel et pour discuter des nouvelles fonctionnalités, rendez-vous sur le [Forum Joplin](https://discourse.joplinapp.org/). Il est possible de se connecter avec votre compte GitHub.\n- Les dernières nouvelles sont publiées [sur la page Patreon](https://www.patreon.com/joplin).\n- Pour les rapports de bugs et les demandes de fonctionnalités, accédez au [GitHub Issue Tracker](https://github.com/laurent22/joplin/issues).\n\n## Donations\n\nLes dons à Joplin soutiennent le développement du projet. Développer des applications de qualité prend généralement du temps, mais il y a aussi des dépenses, comme les certificats numériques pour signer les applications, les frais d'app store, l'hébergement, etc. Surtout, votre don permettra de maintenir le standard de développement actuel.\n\nVeuillez consulter la [page de don](https://joplinapp.org/donate/) pour savoir comment soutenir le développement de Joplin.", + "body": "# Trucs & Astuces\n\nLes premières notes vous ont donné un aperçu des principales fonctionnalités de Joplin, mais il peut faire plus. Voir ci-dessous pour certaines de ces fonctionnalités et comment obtenir plus d'aide en utilisant l'application :\n\n## Web Clipper\n\n![](./WebClipper.png)\n\nLe Web Clipper est une extension de navigateur qui vous permet d'enregistrer des pages Web et des captures d'écran à partir de votre navigateur. Pour commencer à l'utiliser, ouvrez l'application de bureau Joplin, accédez aux options du Web Clipper et suivez les instructions.\n\nPlus d'infos sur le site officiel : https://joplinapp.org/help/apps/clipper/\n\n## Plugins\n\nJoplin prend en charge de nombreux plugins qui vous permettent d'ajouter de nouvelles fonctionnalités à l'application, telles que des onglets, une table des matières pour vos notes, un moyen de gérer les notes préférées et bien d'autres. Pour ajouter un plugin, rendez-vous dans la section \"Plugins\" de l'écran de configuration. À partir de là, vous pouvez rechercher et installer des plugins, ainsi que rechercher ou mettre à jour des plugins.\n\n## Pièces jointes\n\nTout type de fichier peut être joint à une note. Dans Markdown, les liens vers ces fichiers sont représentés par un ID. Dans le visualiseur de notes, ces fichiers, s'il s'agit d'images, seront affichés ou, s'il s'agit d'autres fichiers (PDF, fichiers texte, etc.), ils seront affichés sous forme de liens. Cliquer sur ce lien ouvrira le fichier dans l'application par défaut.\n\nLes images peuvent être jointes soit en cliquant sur \"Joindre un fichier\", soit en collant (avec `Ctrl+V` ou `Cmd+V`) une image directement dans l'éditeur, soit en glissant-déposant une image.\n\nPlus d'infos sur les pièces jointes : https://joplinapp.org/help/apps/attachments\n\n## Recherche\n\nJoplin prend en charge les requêtes de recherche avancées, qui sont entièrement documentées sur le site officiel : https://joplinapp.org/help/apps/search\n\n## Alarmes\n\nUne alarme peut être associée à n'importe quelle tâche. Elle sera déclenchée à l'heure indiquée par l'affichage d'une notification. Pour utiliser cette fonctionnalité, consultez la documentation : https://joplinapp.org/help/apps/notifications\n\n## Conseils avancés Markdown\n\nJoplin utilise et rend [Github-flavored Markdown](https://joplinapp.org/help/apps/markdown) avec quelques variations et ajouts.\n\nPar exemple, les tableaux sont pris en charge :\n\n| Les tableaux | Sont | Cools |\n| ------------- |:-------------:| -----:|\n| col 3 est | alignée à droite | $1600 |\n| col 2 est | centrée | $12 |\n\nVous pouvez également créer des listes de cases à cocher. Ces cases peuvent être cochées directement dans le visualiseur, ou en ajoutant un \"x\" à l'intérieur :\n\n- [ ] Lait\n- [ ] Œufs\n- [x] Bière\n\nDes expressions mathématiques peuvent être ajoutées à l'aide de la [notation KaTeX](https://khan.github.io/KaTeX/) :\n\n$$\nf(x) = \\int_{-\\infty}^\\infty\n \\hat f(\\xi)\\,e^{2 \\pi i \\xi x}\n \\,d\\xi\n$$\n\nDiverses autres astuces sont possibles, telles que l'utilisation de HTML ou la personnalisation du CSS. Voir la documentation Markdown pour plus d'informations - https://joplinapp.org/markdown/\n\n## Communauté et aide supplémentaire\n\n- Pour une discussion générale sur Joplin, l'assistance aux utilisateurs, les questions de développement logiciel et pour discuter des nouvelles fonctionnalités, rendez-vous sur le [Forum Joplin](https://discourse.joplinapp.org/). Il est possible de se connecter avec votre compte GitHub.\n- Les dernières nouvelles sont publiées [sur la page Patreon](https://www.patreon.com/joplin).\n- Pour les rapports de bugs et les demandes de fonctionnalités, accédez au [GitHub Issue Tracker](https://github.com/laurent22/joplin/issues).\n\n## Donations\n\nLes dons à Joplin soutiennent le développement du projet. Développer des applications de qualité prend généralement du temps, mais il y a aussi des dépenses, comme les certificats numériques pour signer les applications, les frais d'app store, l'hébergement, etc. Surtout, votre don permettra de maintenir le standard de développement actuel.\n\nVeuillez consulter la [page de don](https://joplinapp.org/donate/) pour savoir comment soutenir le développement de Joplin.", "resources": {}, "parent_id": "5494e8c3dcfc84c1549ed22fb3a89265" }, diff --git a/packages/server/README.md b/packages/server/README.md index 74cd6f3c85..083a2bcd9a 100644 --- a/packages/server/README.md +++ b/packages/server/README.md @@ -174,7 +174,7 @@ From `packages/server`, run `npm run start-dev` # Changelog -[View the changelog](https://github.com/laurent22/joplin/blob/dev/readme/changelog_server.md) +[View the changelog](https://github.com/laurent22/joplin/blob/dev/readme/about/changelog/changelog_server.md) # License diff --git a/packages/tools/build-release-stats.test.ts b/packages/tools/build-release-stats.test.ts new file mode 100644 index 0000000000..d7dd3a9606 --- /dev/null +++ b/packages/tools/build-release-stats.test.ts @@ -0,0 +1,36 @@ +import { replaceGitHubInternalLinks } from './build-release-stats'; + +describe('build-release-stats', () => { + + it('should replace GitHub internal link', async () => { + const testCases = [ + [ + '(15ce5cd)', + '([15ce5cd](https://github.com/laurent22/joplin/commit/15ce5cd))', + ], + [ + '(#8532 by Henry Heino)', + '([#8532](https://github.com/laurent22/joplin/issues/8532) by Henry Heino)', + ], + [ + '([15ce5cd](https://github.com/laurent22/joplin/commit/15ce5cd))', + '([15ce5cd](https://github.com/laurent22/joplin/commit/15ce5cd))', + ], + [ + '([#8532](https://github.com/laurent22/joplin/issues/8532) by Henry Heino)', + '([#8532](https://github.com/laurent22/joplin/issues/8532) by Henry Heino)', + ], + [ + 'list (#8825) (#8194 by [@CptMeetKat](https://github.com/CptMeetKat))', + 'list ([#8825](https://github.com/laurent22/joplin/issues/8825)) ([#8194](https://github.com/laurent22/joplin/issues/8194) by [@CptMeetKat](https://github.com/CptMeetKat))', + ], + ]; + + for (const [input, expected] of testCases) { + const actual = replaceGitHubInternalLinks(input); + expect(actual).toBe(expected); + } + + }); + +}); diff --git a/packages/tools/build-release-stats.ts b/packages/tools/build-release-stats.ts index 64bc9d1c3c..4e97c40dde 100644 --- a/packages/tools/build-release-stats.ts +++ b/packages/tools/build-release-stats.ts @@ -1,3 +1,5 @@ +/* eslint-disable import/prefer-default-export */ + import fetch from 'node-fetch'; import { writeFile, readFile, pathExists } from 'fs-extra'; import { dirname } from '@joplin/lib/path-utils'; @@ -30,7 +32,7 @@ interface Release extends GitHubRelease { } const rootDir = dirname(dirname(__dirname)); -const statsFilePath = `${rootDir}/readme/stats.md`; +const statsFilePath = `${rootDir}/readme/about/stats.md`; function endsWith(str: string, suffix: string) { return str.indexOf(suffix, str.length - suffix.length) !== -1; @@ -61,10 +63,26 @@ function downloadCounts(release: GitHubRelease) { return output; } +export const replaceGitHubInternalLinks = (body: string) => { + body = body.replace(/#(\d+)(.{2})/g, (_match: string, v1: string, v2: string) => { + if (v2.startsWith('](')) { + // The issue number is already a link, so skip it + return `#${v1}${v2}`; + } else { + return `[#${v1}](https://github.com/laurent22/joplin/issues/${v1})${v2}`; + } + }); + + + body = body.replace(/\(([0-9a-z]{7})\)/g, '([$1](https://github.com/laurent22/joplin/commit/$1))'); + + return body; +}; + function createChangeLog(releases: Release[]) { const output = []; - output.push('# Joplin changelog'); + output.push('# Joplin Desktop Changelog'); for (let i = 0; i < releases.length; i++) { const r = releases[i]; @@ -72,8 +90,7 @@ function createChangeLog(releases: Release[]) { const preReleaseString = r.prerelease ? ' (Pre-release)' : ''; s.push(`## ${r.tag_name}${preReleaseString} - ${r.published_at}`); s.push(''); - let body = r.body.replace(/#(\d+)/g, '[#$1](https://github.com/laurent22/joplin/issues/$1)'); - body = body.replace(/\(([0-9a-z]{7})\)/g, '([$1](https://github.com/laurent22/joplin/commit/$1))'); + const body = replaceGitHubInternalLinks(r.body); s.push(body); output.push(s.join('\n')); } @@ -92,7 +109,7 @@ async function main() { if (updateStats && await pathExists(statsFilePath)) { const md = await readFile(statsFilePath, 'utf8'); - const info = stripOffFrontMatter(md); + const info = stripOffFrontMatter(md).header; if (!info.updated) throw new Error('Missing front matter property: updated'); const now = new Date(); @@ -179,7 +196,7 @@ async function main() { if (updateChangelog) { console.info('Build stats: Updating changelog...'); const changelogText = createChangeLog(rows); - await writeFile(`${rootDir}/readme/changelog.md`, changelogText); + await writeFile(`${rootDir}/readme/about/changelog/desktop.md`, changelogText); } if (!updateStats) return; @@ -238,8 +255,11 @@ async function main() { await writeFile(statsFilePath, statsText); } -main().catch((error) => { - console.error('Fatal error'); - console.error(error); - process.exit(1); -}); +if (require.main === module) { + // eslint-disable-next-line promise/prefer-await-to-then + main().catch((error) => { + console.error('Fatal error'); + console.error(error); + process.exit(1); + }); +} diff --git a/packages/tools/build-translation.ts b/packages/tools/build-translation.ts index 32191060a8..a130d8d47e 100644 --- a/packages/tools/build-translation.ts +++ b/packages/tools/build-translation.ts @@ -310,7 +310,7 @@ function translationStatusToMdTable(status: TranslationStatus[]) { async function updateReadmeWithStats(stats: TranslationStatus[]) { await insertContentIntoFile( - `${rootDir}/README.md`, + `${rootDir}/readme/dev/localisation.md`, '\n', '\n', translationStatusToMdTable(stats), diff --git a/packages/tools/package.json b/packages/tools/package.json index 9887a531d2..902427c0ce 100644 --- a/packages/tools/package.json +++ b/packages/tools/package.json @@ -42,10 +42,12 @@ "yargs": "17.7.2" }, "devDependencies": { + "@docusaurus/plugin-sitemap": "2.4.3", "@joplin/fork-htmlparser2": "^4.1.46", "@rmp135/sql-ts": "1.18.0", "@types/fs-extra": "11.0.2", "@types/jest": "29.5.4", + "@types/js-yaml": "4.0.8", "@types/markdown-it": "13.0.2", "@types/mustache": "4.2.3", "@types/node": "18.17.19", @@ -55,9 +57,11 @@ "gulp": "4.0.2", "html-entities": "1.4.0", "jest": "29.6.4", + "js-yaml": "4.1.0", "rss": "1.2.2", "sass": "1.67.0", "sqlite3": "5.1.6", + "style-to-js": "1.1.8", "typescript": "5.1.6" }, "gitHead": "eb4b0e64eab40a51b0895d3a40a9d8c3cb7b1b14" diff --git a/packages/tools/release-android.ts b/packages/tools/release-android.ts index bb972df700..3eb8f5950b 100644 --- a/packages/tools/release-android.ts +++ b/packages/tools/release-android.ts @@ -267,7 +267,7 @@ async function main() { console.info(`Main download URL: ${releaseFiles['main'].downloadUrl}`); - const changelogPath = `${rootDir}/readme/changelog_android.md`; + const changelogPath = `${rootDir}/readme/about/changelog/android.md`; await completeReleaseWithChangelog(changelogPath, version, tagName, 'Android', isPreRelease); } diff --git a/packages/tools/release-cli.ts b/packages/tools/release-cli.ts index 7a2dd18ea9..6a15178a28 100644 --- a/packages/tools/release-cli.ts +++ b/packages/tools/release-cli.ts @@ -2,7 +2,7 @@ import { execCommand } from '@joplin/utils'; import { rootDir, completeReleaseWithChangelog } from './tool-utils'; const appDir = `${rootDir}/packages/app-cli`; -const changelogPath = `${rootDir}/readme/changelog_cli.md`; +const changelogPath = `${rootDir}/readme/about/changelog/cli.md`; // Start with node Tools/release-cli.js --changelog-from cli-v1.0.126 // to specify from where the changelog should be created diff --git a/packages/tools/release-ios.ts b/packages/tools/release-ios.ts index 2ee67bcaee..4e8dae56ba 100644 --- a/packages/tools/release-ios.ts +++ b/packages/tools/release-ios.ts @@ -72,7 +72,7 @@ async function main() { const tagName = `ios-v${newVersion}`; console.info(`Tag name: ${tagName}`); - const changelogPath = `${rootDir}/readme/changelog_ios.md`; + const changelogPath = `${rootDir}/readme/about/changelog/ios.md`; await completeReleaseWithChangelog(changelogPath, newVersion, tagName, 'iOS', false); } diff --git a/packages/tools/release-server.ts b/packages/tools/release-server.ts index ef63897a61..4a32c30293 100644 --- a/packages/tools/release-server.ts +++ b/packages/tools/release-server.ts @@ -17,7 +17,7 @@ async function main() { const versionSuffix = ''; // isPreRelease ? '-beta' : ''; const tagName = `server-${version}${versionSuffix}`; - const changelogPath = `${rootDir}/readme/changelog_server.md`; + const changelogPath = `${rootDir}/readme/about/changelog/server.md`; await completeReleaseWithChangelog(changelogPath, version, tagName, 'Server', false); } diff --git a/packages/tools/update-readme-download.ts b/packages/tools/update-readme-download.ts index 7b3652f84a..a00e115b9e 100644 --- a/packages/tools/update-readme-download.ts +++ b/packages/tools/update-readme-download.ts @@ -1,7 +1,7 @@ import * as fs from 'fs-extra'; import { fileExtension } from '@joplin/lib/path-utils'; import { gitHubLatestRelease, GitHubRelease } from './tool-utils'; -const readmePath = `${__dirname}/../../README.md`; +const destMarkdownPath = `${__dirname}/../../readme/install.md`; async function msleep(ms: number) { return new Promise((resolve) => { @@ -52,13 +52,13 @@ export const downloadUrl = (release: GitHubRelease, os: OS, portable = false) => }; function readmeContent() { - if (!fs.existsSync(readmePath)) throw new Error(`Cannot find ${readmePath}`); - return fs.readFileSync(readmePath, 'utf8'); + if (!fs.existsSync(destMarkdownPath)) throw new Error(`Cannot find ${destMarkdownPath}`); + return fs.readFileSync(destMarkdownPath, 'utf8'); } function setReadmeContent(content: string) { - if (!fs.existsSync(readmePath)) throw new Error(`Cannot find ${readmePath}`); - return fs.writeFileSync(readmePath, content); + if (!fs.existsSync(destMarkdownPath)) throw new Error(`Cannot find ${destMarkdownPath}`); + return fs.writeFileSync(destMarkdownPath, content); } async function main(argv: any) { diff --git a/packages/tools/website/README.md b/packages/tools/website/README.md new file mode 100644 index 0000000000..cb6c097816 --- /dev/null +++ b/packages/tools/website/README.md @@ -0,0 +1,13 @@ +# Joplin Website Builder + +The website is mostly built by rendering Markdown files under `/readme` to HTML. More advanced pages such as the homepage or Plans page are created using a Mustache template. + +Docusaurus is used to build the Help and News pages. + +## To build the website + +Run `yarn buildWebsite`, which will run all the required commands in the correct order. This will create the website in a relative directory `../joplin-website/docs`. + +## To watch the website + +To watch the website run `yarn watchWebsite`. If changing the Help or News pages, run `yarn start` from `packages/doc-builder`. diff --git a/packages/tools/website/build.ts b/packages/tools/website/build.ts index 70438ecf7b..09e4e7d5b5 100644 --- a/packages/tools/website/build.ts +++ b/packages/tools/website/build.ts @@ -10,7 +10,7 @@ import { readmeFileTitle, replaceGitHubByWebsiteLinks } from './utils/parser'; import { extractOpenGraphTags, OpenGraphTags } from './utils/openGraph'; import { readCredentialFileJson } from '@joplin/lib/utils/credentialFiles'; import { getNewsDateString } from './utils/news'; -import { parsePoFile, parseTranslations, Translations } from '../utils/translation'; +import { Translations } from '../utils/translation'; import { setLocale } from '@joplin/lib/locale'; import applyTranslations from './utils/applyTranslations'; import { loadSponsors } from '../utils/loadSponsors'; @@ -36,7 +36,7 @@ const path = require('path'); const md5File = require('md5-file'); const docDir = `${dirname(dirname(dirname(dirname(__dirname))))}/joplin-website/docs`; -if (!pathExistsSync(docDir)) throw new Error(`Doc directory does not exist: ${docDir}`); +if (!pathExistsSync(docDir)) throw new Error(`"docs" directory does not exist: ${docDir}`); const websiteAssetDir = `${rootDir}/Assets/WebsiteAssets`; const readmeDir = `${rootDir}/readme`; @@ -49,16 +49,16 @@ const partialDir = `${websiteAssetDir}/templates/partials`; const discussLink = 'https://discourse.joplinapp.org/c/news/9'; -let tocMd_: string = null; -const tocHtml_: Record = {}; -const tocRegex_ = /([^]*)/; -function tocMd() { - if (tocMd_) return tocMd_; - const md = readFileSync(`${rootDir}/README.md`, 'utf8'); - const toc = md.match(tocRegex_); - tocMd_ = toc[1]; - return tocMd_; -} +// let tocMd_: string = null; +// const tocHtml_: Record = {}; +// const tocRegex_ = /([^]*)/; +// function tocMd() { +// if (tocMd_) return tocMd_; +// const md = readFileSync(`${rootDir}/README.md`, 'utf8'); +// const toc = md.match(tocRegex_); +// tocMd_ = toc[1]; +// return tocMd_; +// } const donateLinksRegex_ = /([^]*)/; async function getDonateLinks() { @@ -70,18 +70,18 @@ async function getDonateLinks() { return ``; } -function tocHtml(locale: Locale) { - if (tocHtml_[locale.lang]) return tocHtml_[locale.lang]; - const markdownIt = getMarkdownIt(); - let md = tocMd(); - md = md.replace(/# Table of contents/, ''); - md = replaceGitHubByWebsiteLinks(md); - md = convertLinksToLocale(md, locale); - let output = markdownIt.render(md); - output = `
${output}
`; - tocHtml_[locale.lang] = output; - return output; -} +// function tocHtml(locale: Locale) { +// if (tocHtml_[locale.lang]) return tocHtml_[locale.lang]; +// const markdownIt = getMarkdownIt(); +// let md = tocMd(); +// md = md.replace(/# Table of contents/, ''); +// md = replaceGitHubByWebsiteLinks(md); +// md = convertLinksToLocale(md, locale); +// let output = markdownIt.render(md); +// output = `
${output}
`; +// tocHtml_[locale.lang] = output; +// return output; +// } const baseUrl = ''; const cssBasePath = `${websiteAssetDir}/css`; @@ -143,7 +143,7 @@ function defaultTemplateParams(assetUrls: AssetUrls, locale: Locale = null): Tem imageBaseUrl: `${baseUrl}/images`, cssBaseUrl, jsBaseUrl, - tocHtml: tocHtml(locale), + // tocHtml: tocHtml(locale), yyyy: (new Date()).getFullYear().toString(), templateHtml: mainTemplateHtml, forumUrl: 'https://discourse.joplinapp.org/', @@ -211,44 +211,44 @@ function renderFileToHtml(sourcePath: string, targetPath: string, templateParams } } -function makeHomePageMd(readmePath: string) { - let md = readFileSync(readmePath, 'utf8'); - md = md.replace(tocRegex_, ''); +// function makeHomePageMd(readmePath: string) { +// let md = readFileSync(readmePath, 'utf8'); +// md = md.replace(tocRegex_, ''); - // HACK: GitHub needs the \| or the inline code won't be displayed correctly inside the table, - // while MarkdownIt doesn't and will in fact display the \. So we remove it here. - md = md.replace(/\\\| bash/g, '| bash'); +// // HACK: GitHub needs the \| or the inline code won't be displayed correctly inside the table, +// // while MarkdownIt doesn't and will in fact display the \. So we remove it here. +// md = md.replace(/\\\| bash/g, '| bash'); - // We strip-off the donate links because they are added back (with proper - // classes and CSS). - md = md.replace(donateLinksRegex_, ''); +// // We strip-off the donate links because they are added back (with proper +// // classes and CSS). +// md = md.replace(donateLinksRegex_, ''); - return md; -} +// return md; +// } const processNewsMarkdown = (md: string, mdFilePath: string): string => { const info = stripOffFrontMatter(md); md = info.doc.trim(); - const dateString = getNewsDateString(info, mdFilePath); + const dateString = getNewsDateString(info.header, mdFilePath); md = md.replace(/^# (.*)/, `# [$1](https://github.com/laurent22/joplin/blob/dev/readme/news/${path.basename(mdFilePath)})\n\n*Published on **${dateString}***\n\n`); md += `\n\n* * *\n\n[ Discuss on the forum](${discussLink})`; return md; }; -const makeNewsFrontPage = async (sourceFilePaths: string[], targetFilePath: string, templateParams: TemplateParams) => { - const maxNewsPerPage = 20; +// const makeNewsFrontPage = async (sourceFilePaths: string[], targetFilePath: string, templateParams: TemplateParams) => { +// const maxNewsPerPage = 20; - const frontPageMd: string[] = []; +// const frontPageMd: string[] = []; - for (const mdFilePath of sourceFilePaths) { - let md = await readFile(mdFilePath, 'utf8'); - md = processNewsMarkdown(md, mdFilePath); - frontPageMd.push(md); - if (frontPageMd.length >= maxNewsPerPage) break; - } +// for (const mdFilePath of sourceFilePaths) { +// let md = await readFile(mdFilePath, 'utf8'); +// md = processNewsMarkdown(md, mdFilePath); +// frontPageMd.push(md); +// if (frontPageMd.length >= maxNewsPerPage) break; +// } - renderPageToHtml(frontPageMd.join('\n\n* * *\n\n'), targetFilePath, templateParams); -}; +// renderPageToHtml(frontPageMd.join('\n\n* * *\n\n'), targetFilePath, templateParams); +// }; const isNewsFile = (filePath: string): boolean => { return filePath.includes('readme/news/'); @@ -271,16 +271,16 @@ const updatePageLanguage = (html: string, lang: string): string => { async function main() { const supportedLocales: Record = { 'en_GB': enGbLocale, - 'zh_CN': { - htmlTranslations: parseTranslations(await parsePoFile(`${websiteAssetDir}/locales/zh_CN.po`)), - lang: 'zh-cn', - pathPrefix: 'cn', - }, - 'fr_FR': { - htmlTranslations: {}, - lang: 'fr-fr', - pathPrefix: 'fr', - }, + // 'zh_CN': { + // htmlTranslations: parseTranslations(await parsePoFile(`${websiteAssetDir}/locales/zh_CN.po`)), + // lang: 'zh-cn', + // pathPrefix: 'cn', + // }, + // 'fr_FR': { + // htmlTranslations: {}, + // lang: 'fr-fr', + // pathPrefix: 'fr', + // }, }; // delete supportedLocales['zh_CN']; @@ -288,8 +288,12 @@ async function main() { setLocale('en_GB'); - await remove(`${docDir}`); - await copy(websiteAssetDir, `${docDir}`); + await remove(docDir); + + const docBuilderDir = `${rootDir}/packages/doc-builder`; + await copy(`${docBuilderDir}/build`, docDir); + + await copy(websiteAssetDir, docDir); const sponsors = process.env.SKIP_SPONSOR_PROCESSING ? { github: [], orgs: [] } : await loadSponsors(); const partials = await loadMustachePartials(partialDir); @@ -306,38 +310,38 @@ async function main() { // HELP PAGE // ============================================================= - let readmePath = `${rootDir}/README.md`; + // let readmePath = `${rootDir}/README.md`; - let sourceMarkdownFile = 'README.md'; - let targetDocDir = docDir; + // let sourceMarkdownFile = 'README.md'; + // let targetDocDir = docDir; - if (localeName !== 'en_GB') { - const possibleSource = `${rootDir}/readme/_i18n/${localeName}/README.md`; - if (await pathExists(possibleSource)) { - sourceMarkdownFile = possibleSource; - readmePath = possibleSource; - } else { - console.warn(`Cannot find source file: ${possibleSource}`); - } + // if (localeName !== 'en_GB') { + // const possibleSource = `${rootDir}/readme/_i18n/${localeName}/README.md`; + // if (await pathExists(possibleSource)) { + // sourceMarkdownFile = possibleSource; + // readmePath = possibleSource; + // } else { + // console.warn(`Cannot find source file: ${possibleSource}`); + // } - targetDocDir = `${docDir}/${locale.pathPrefix}`; - } + // targetDocDir = `${docDir}/${locale.pathPrefix}`; + // } - const readmeMd = makeHomePageMd(readmePath); + // const readmeMd = makeHomePageMd(readmePath); - renderPageToHtml(readmeMd, `${targetDocDir}/help/index.html`, { - sourceMarkdownFile, - donateLinksMd, - partials, - sponsors, - assetUrls, - openGraph: { - title: 'Joplin documentation', - description: '', - url: 'https://joplinapp.org/help/', - }, - locale, - }); + // renderPageToHtml(readmeMd, `${targetDocDir}/help/index.html`, { + // sourceMarkdownFile, + // donateLinksMd, + // partials, + // sponsors, + // assetUrls, + // openGraph: { + // title: 'Joplin documentation', + // description: '', + // url: 'https://joplinapp.org/help/', + // }, + // locale, + // }); // ============================================================= // FRONT PAGE @@ -444,10 +448,24 @@ async function main() { setLocale('en_GB'); - // ============================================================= - // All other pages are generated dynamically from the - // Markdown files under /readme - // ============================================================= + // ========================================================================== + // All other pages are generated dynamically from the Markdown files under + // /readme + // + // 2023-10-23: This was used to build the Help pages from the Markdown + // files, however this is now done using Docusaurus. A few files still need + // to be at the root however, and so we keep that process here for now. Any + // file that need to be processed should go in the `filesToProcess` array. + // Eventually all that should probably be moved to Docusaurus or to some + // static pages. + // ========================================================================== + + const filesToProcess = [ + 'download.md', + 'privacy.md', + 'donate.md', + 'connection_check.md', + ]; interface SourceInfo { title: string; @@ -467,7 +485,7 @@ async function main() { const filenameNoExt = basename(input, '.md'); return `news/${filenameNoExt}/index.html`; } else { - // Input is for example "readme/spec/interop_with_frontmatter.md", + // Input is for example "readme/dev/spec/interop_with_frontmatter.md", // and we need to convert it to // "docs/spec/interop_with_frontmatter/index.html" and prefix it // with the website repo full path. @@ -498,6 +516,7 @@ async function main() { const newsFilePaths: string[] = []; for (const mdFile of mdFiles) { + if (!filesToProcess.includes(basename(mdFile))) continue; if (mdFile.startsWith('readme/_i18n')) continue; for (const [localeName, locale] of Object.entries(supportedLocales)) { @@ -545,24 +564,27 @@ async function main() { }); } - newsFilePaths.sort((a, b) => { - return a.toLowerCase() > b.toLowerCase() ? -1 : +1; - }); + // newsFilePaths.sort((a, b) => { + // return a.toLowerCase() > b.toLowerCase() ? -1 : +1; + // }); + + // await makeNewsFrontPage(newsFilePaths, `${docDir}/news/index.html`, { + // ...defaultTemplateParams(assetUrls, null), + // title: 'What\'s new', + // pageName: 'news', + // partials, + // showToc: false, + // showImproveThisDoc: false, + // donateLinksMd, + // openGraph: { + // title: 'Joplin - what\'s new', + // description: 'News about the Joplin open source application', + // url: 'https://joplinapp.org/news/', + // }, + // }); + + - await makeNewsFrontPage(newsFilePaths, `${docDir}/news/index.html`, { - ...defaultTemplateParams(assetUrls, null), - title: 'What\'s new', - pageName: 'news', - partials, - showToc: false, - showImproveThisDoc: false, - donateLinksMd, - openGraph: { - title: 'Joplin - what\'s new', - description: 'News about the Joplin open source application', - url: 'https://joplinapp.org/news/', - }, - }); // setLocale('zh_CN'); // const translations = parseTranslations(await parsePoFile(`${websiteAssetDir}/locales/zh_CN.po`)); diff --git a/packages/tools/website/processDocs.test.ts b/packages/tools/website/processDocs.test.ts new file mode 100644 index 0000000000..d5c99db95b --- /dev/null +++ b/packages/tools/website/processDocs.test.ts @@ -0,0 +1,50 @@ +import { readFile } from 'fs/promises'; +import { processMarkdownDoc } from './processDocs'; +import { basename } from 'path'; +import { readdirSync } from 'fs'; + +const sampleDir = `${__dirname}/processDocsTestSamples`; + +interface TestCase { + sourcePath: string; + outputPath: string; +} + +const makeTestCases = () => { + const output: TestCase[] = []; + const files = readdirSync(sampleDir); + for (const file of files) { + if (file.endsWith('.mdx')) continue; + + // if (!file.endsWith('blockquotes.md')) continue; + + const sourcePath = `${sampleDir}/${file}`; + const outputPath = `${sampleDir}/${basename(file, '.md')}.mdx`; + output.push({ + sourcePath, + outputPath, + }); + } + return output; +}; + +describe('website/processDocs', () => { + + test.each(makeTestCases())('process a Markdown doc: $sourcePath', async (testCase: TestCase) => { + const { sourcePath, outputPath } = testCase; + const sourceContent = await readFile(sourcePath, 'utf-8'); + const expected = await readFile(outputPath, 'utf-8'); + const actual = processMarkdownDoc(sourceContent, { }); + + if (actual !== expected) { + console.info(` +EXPECTED ======================================= +${expected} +ACTUAL ========================================= +${actual}`); + } + + expect(actual).toBe(expected); + }); + +}); diff --git a/packages/tools/website/processDocs.ts b/packages/tools/website/processDocs.ts new file mode 100644 index 0000000000..c3dffd7e78 --- /dev/null +++ b/packages/tools/website/processDocs.ts @@ -0,0 +1,509 @@ +/* eslint-disable import/prefer-default-export */ + +import { execCommand, getRootDir } from '@joplin/utils'; +import { readFile, readdir, stat, writeFile } from 'fs/promises'; +import * as MarkdownIt from 'markdown-it'; +import { htmlentities, isSelfClosingTag } from '@joplin/utils/html'; +import { compileWithFrontMatter, stripOffFrontMatter } from './utils/frontMatter'; +import StateCore = require('markdown-it/lib/rules_core/state_core'); +import { copy, mkdirp, remove, pathExists } from 'fs-extra'; +import { basename, dirname } from 'path'; +import markdownUtils, { MarkdownTable } from '@joplin/lib/markdownUtils'; +import { readmeFileTitle } from './utils/parser'; +import { chdir } from 'process'; +import yargs = require('yargs'); + +const md5File = require('md5-file'); +const htmlparser2 = require('@joplin/fork-htmlparser2'); +const styleToJs = require('style-to-js').default; +const crypto = require('crypto'); + +interface Config { + baseUrl: string; + docusaurusBuildEnabled: boolean; + docusaurusBuildCommand: string; +} + +interface List { + type: 'bullet' | 'number'; +} + +interface Context { + currentTable?: MarkdownTable; + currentTableContent?: string[]; + currentTableCellIndex?: number; + inHeader?: boolean; + listStack?: List[]; + listStarting?: boolean; + currentLinkAttrs?: any; + inFence?: boolean; + processedFiles?: string[]; + isNews?: boolean; + donateLinks?: string; + inQuote?: boolean; +} + +const configs: Record = { + dev: { + baseUrl: 'http://localhost:8077', + docusaurusBuildCommand: 'buildDev', + docusaurusBuildEnabled: true, + }, + prod: { + baseUrl: 'https://joplinapp.org', + docusaurusBuildCommand: '_build', + docusaurusBuildEnabled: true, + }, +}; + +const md5 = (s: string) => { + return crypto.createHash('md5').update(s).digest('hex'); +}; + +const parseHtml = (html: string) => { + const output: string[] = []; + + interface Tag { + name: string; + } + + const tagStack: Tag[] = []; + + const currentTag = () => { + if (!tagStack.length) return { name: '', processed: false }; + return tagStack[tagStack.length - 1]; + }; + + const parser = new htmlparser2.Parser({ + + onopentag: (name: string, attrs: Record) => { + tagStack.push({ name }); + + const closingSign = isSelfClosingTag(name) ? '/>' : '>'; + + const attrHtml: string[] = []; + + for (const n in attrs) { + if (!attrs.hasOwnProperty(n)) continue; + let escapedValue = `"${htmlentities(attrs[n])}"`; + if (n === 'style') { + escapedValue = `{${JSON.stringify(styleToJs(attrs.style))}}`; + } + attrHtml.push(`${n}=${escapedValue}`); + } + + output.push(`<${name} ${attrHtml.join(' ')}${closingSign}`); + }, + + ontext: (decodedText: string) => { + output.push(htmlentities(decodedText)); + }, + + onclosetag: (name: string) => { + const current = currentTag(); + + if (current.name === name) tagStack.pop(); + + if (isSelfClosingTag(name)) return; + output.push(``); + }, + + }, { decodeEntities: true }); + + parser.write(html); + parser.end(); + + return output.join(''); +}; + +const escapeForMdx = (s: string): string => { + return s + .replace(//g, '>') + .replace(/`/g, '\\`'); +}; + +const paragraphBreak = '///PARAGRAPH_BREAK///'; +const blockQuoteStart = '///BLOCK_QUOTE_START///'; +const blockQuoteEnd = '///BLOCK_QUOTE_END///'; + +const processToken = (token: any, output: string[], context: Context): void => { + if (!context.listStack) context.listStack = []; + + let contentProcessed = false; + const type = token.type as string; + + const currentList = context.listStack.length ? context.listStack[context.listStack.length - 1] : null; + + const doEscapeForMdx = (text: string) => { + if (context.inFence) return text; + return escapeForMdx(text); + }; + + const content: string[] = []; + + if (type === 'heading_open') { + content.push(paragraphBreak); + content.push(`${token.markup} `); + } else if (type === 'heading_close') { + content.push(paragraphBreak); + } else if (type === 'paragraph_open' || type === 'paragraph_close') { + if (!currentList) { + content.push(paragraphBreak); + } + } else if (type === 'fence') { + context.inFence = true; + content.push(`\`\`\`${token.info || ''}\n`); + } else if (type === 'html_block') { + contentProcessed = true, + content.push(parseHtml(token.content.trim())); + } else if (type === 'html_inline') { + contentProcessed = true, + content.push(parseHtml(token.content.trim())); + } else if (type === 'code_inline') { + contentProcessed = true, + content.push(`\`${token.content}\``); + } else if (type === 'code_block') { + contentProcessed = true; + content.push(`\`\`\`\n${token.content}\`\`\``); + content.push(paragraphBreak); + } else if (type === 'strong_open' || type === 'strong_close') { + content.push('**'); + } else if (type === 'em_open' || type === 'em_close') { + content.push('*'); + } else if (type === 'blockquote_open' || type === 'blockquote_close') { + content.push(type === 'blockquote_open' ? blockQuoteStart : blockQuoteEnd); + } else if (type === 'table_open') { + context.currentTable = { + header: [], + rows: [], + }; + context.currentTableContent = []; + } else if (type === 'th_open') { + context.currentTable.header.push({ + label: '', + name: `${context.currentTable.header.length}`, + disableHtmlEscape: true, + }); + } else if (type === 'thead_open') { + context.inHeader = true; + } else if (type === 'thead_close') { + context.inHeader = false; + } else if (type === 'th_close') { + context.currentTable.header[context.currentTable.header.length - 1].label = context.currentTableContent.join(''); + context.currentTableContent = []; + } else if (type === 'tr_open') { + if (!context.inHeader) { + context.currentTable.rows.push({}); + context.currentTableCellIndex = 0; + } + } else if (type === 'td_open') { + const row = context.currentTable.rows[context.currentTable.rows.length - 1]; + row[`${context.currentTableCellIndex}`] = ''; + } else if (type === 'td_close') { + const row = context.currentTable.rows[context.currentTable.rows.length - 1]; + row[`${context.currentTableCellIndex}`] = context.currentTableContent.join(''); + context.currentTableCellIndex++; + context.currentTableContent = []; + } else if (type === 'table_close') { + const tableMd = markdownUtils.createMarkdownTable(context.currentTable.header, context.currentTable.rows); + content.push(paragraphBreak); + content.push(tableMd); + content.push(paragraphBreak); + context.currentTable = null; + } else if (type === 'bullet_list_open') { + context.listStarting = !context.listStack.length; + context.listStack.push({ type: 'bullet' }); + } else if (type === 'ordered_list_open') { + context.listStarting = !context.listStack.length; + context.listStack.push({ type: 'number' }); + } else if (type === 'bullet_list_close' || type === 'ordered_list_close') { + context.listStack.pop(); + if (!context.listStack.length) content.push(paragraphBreak); + } else if (type === 'list_item_open') { + if (!context.listStarting) content.push('\n'); + context.listStarting = false; + const indent = '\t'.repeat((context.listStack.length - 1)); + if (currentList.type === 'bullet') content.push(`${indent}- `); + if (currentList.type === 'number') content.push(`${indent + token.info}. `); + } else if (type === 'image') { + (context.currentTable ? context.currentTableContent : content).push('!['); + } else if (type === 'link_open') { + content.push('['); + context.currentLinkAttrs = token.attrs; + } else if (type === 'link_close') { + const href = context.currentLinkAttrs.find((a: string[]) => a[0] === 'href')[1]; + content.push(`](${escapeForMdx(href)})`); + context.currentLinkAttrs = null; + } + + if (token.children) { + for (const child of token.children) { + processToken(child, content, context); + } + } else if (token.content && !contentProcessed) { + content.push(doEscapeForMdx(token.content)); + } + + if (type === 'fence') { + content.push('```'); + content.push(paragraphBreak); + context.inFence = false; + } + + if (type === 'image') { + let src: string = token.attrs.find((a: string[]) => a[0] === 'src')[1]; + if (!src.startsWith('http') && !src.startsWith('/')) src = `/${src}`; + content.push(`](${doEscapeForMdx(src)})`); + } + + for (const c of content) { + if (context.currentTable) { + context.currentTableContent.push(c); + } else { + output.push(c); + } + } +}; + +const resolveParagraphBreaks = (output: string[]): string[] => { + if (!output.length) return output; + + while (output.length && output[0] === paragraphBreak) { + output.splice(0, 1); + } + + while (output.length && output[output.length - 1] === paragraphBreak) { + output.pop(); + } + + let previous = ''; + const newOutput: string[] = []; + for (const s of output) { + if (s === paragraphBreak && previous === paragraphBreak) continue; + newOutput.push(s === paragraphBreak ? '\n\n' : s); + previous = s; + } + + return newOutput; +}; + +const resolveBlockQuotes = (output: string): string => { + if (!output) return output; + + const lines = output.split('\n'); + let inQuotes = false; + const quotedLines: string[] = []; + const newOutput: string[] = []; + for (const line of lines) { + if (line === blockQuoteStart) { + inQuotes = true; + } else if (line === blockQuoteEnd) { + inQuotes = false; + const s = quotedLines.join('\n').trim().split('\n').map(l => `> ${l}`).join('\n'); + newOutput.push(s); + } else if (inQuotes) { + quotedLines.push(line); + } else { + newOutput.push(line); + } + } + + return newOutput.join('\n'); +}; + +const processUrls = (md: string) => { + md = md + .replace(/https:\/\/github.com\/laurent22\/joplin\/blob\/dev\/readme\/(.*)\/index\.md/g, '/help/$1') + .replace(/https:\/\/github.com\/laurent22\/joplin\/blob\/dev\/readme\/(.*)\.md/g, '/help/$1'); + + return md; +}; + +export const processMarkdownDoc = (sourceContent: string, context: Context): string => { + const markdownIt = new MarkdownIt({ + breaks: true, + linkify: true, + html: true, + }); + + let items: string[] = []; + + markdownIt.core.ruler.push('converter', (state: StateCore) => { + const tokens = state.tokens; + // console.info(JSON.stringify(tokens, null, '\t')); + for (let i = 0; i < tokens.length; i++) { + const token = tokens[i]; + processToken(token, items, context); + } + }); + + const mdAndFrontMatter = stripOffFrontMatter(sourceContent); + + markdownIt.render(mdAndFrontMatter.doc); + + items = resolveParagraphBreaks(items); + + const output = resolveBlockQuotes(processUrls(items.join('').trim())); + + return compileWithFrontMatter({ + ...mdAndFrontMatter, + doc: output, + }); +}; + +const processMarkdownFile = async (sourcePath: string, destPath: string, context: Context) => { + context.processedFiles.push(destPath); + + const sourceContent = await readFile(sourcePath, 'utf-8'); + const destContent = processMarkdownDoc(sourceContent, context); + await mkdirp(dirname(destPath)); + + const title = await readmeFileTitle(sourcePath); + + const mdAndFrontMatter = stripOffFrontMatter(destContent); + mdAndFrontMatter.header.sidebar_label = title; + + if (context.isNews) { + const dateString = basename(sourcePath).split('-')[0]; + const formatted = `${dateString.substring(0, 4)}-${dateString.substring(4, 6)}-${dateString.substring(6, 8)}`; + mdAndFrontMatter.header.date = formatted; + } + + mdAndFrontMatter.doc = mdAndFrontMatter.doc.replace(/^# (.*)\n/, `# $1\n\n${context.donateLinks}\n\n`); + + if (mdAndFrontMatter.header.forum_url) { + // mdAndFrontMatter.doc += `\n\n* * *\n\n[ Discuss on the forum](${mdAndFrontMatter.header.forum_url})`; + mdAndFrontMatter.doc += `\n\n* * *\n\n[ Discuss on the forum](${mdAndFrontMatter.header.forum_url})`; + } + + const fullContent = compileWithFrontMatter(mdAndFrontMatter); + + if (await pathExists(destPath)) { + const existingMd5 = await md5File(destPath); + const newMd5 = md5(fullContent); + if (existingMd5 === newMd5) return; + } + + await writeFile(destPath, fullContent, 'utf-8'); +}; + +const processDocFiles = async (sourceDir: string, destDir: string, excluded: string[], context: Context) => { + if (!context.processedFiles) context.processedFiles = []; + + const files = await readdir(sourceDir); + for (const file of files) { + const fullPath = `${sourceDir}/${file}`; + if (excluded.includes(fullPath)) continue; + + const info = await stat(fullPath); + const destPath = `${destDir}/${file}`; + + if (info.isDirectory()) { + await processDocFiles(fullPath, destPath, excluded, context); + } else { + if (file.endsWith('.md')) { + console.info(`Process: ${fullPath}`); + await processMarkdownFile(fullPath, destPath, context); + } else if (file === '_category_.yml') { + context.processedFiles.push(destPath); + await copy(fullPath, destPath); + } + } + } +}; + +export const deleteUnprocessedFiles = async (dirPath: string, processedFiles: string[]) => { + const files = await readdir(dirPath); + for (const file of files) { + const fullPath = `${dirPath}/${file}`; + const info = await stat(fullPath); + + if (info.isDirectory()) { + await deleteUnprocessedFiles(fullPath, processedFiles); + } else { + if (!processedFiles.includes(fullPath)) { + console.info(`Delete: ${fullPath}`); + await remove(fullPath); + } + } + } +}; + +const copyFile = async (sourceFile: string, destFile: string) => { + console.info(`Copy: ${destFile}`); + await copy(sourceFile, destFile); +}; + +const getDonateLinks = () => { + return `
+ +[![Donate using PayPal](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/badges/Donate-PayPal-green.svg)](https://www.paypal.com/donate/?business=E8JMYD2LQ8MMA&no_recurring=0&item_name=I+rely+on+donations+to+maintain+and+improve+the+Joplin+open+source+project.+Thank+you+for+your+help+-+it+makes+a+difference%21¤cy_code=EUR) [![Sponsor on GitHub](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/badges/GitHub-Badge.svg)](https://github.com/sponsors/laurent22/) [![Become a patron](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/badges/Patreon-Badge.svg)](https://www.patreon.com/joplin) [![Donate using IBAN](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/badges/Donate-IBAN.svg)](https://joplinapp.org/donate/#donations) + +
`; +}; + +export const buildDocusaurus = async (docBuilderDir: string, buildCommand: string, baseUrl: string) => { + chdir(docBuilderDir); + await execCommand(`yarn ${buildCommand}`, { + env: { + WEBSITE_BASE_URL: baseUrl, + }, + }); +}; + +async function main() { + const argv = await yargs.argv; + const env = argv.env as string; + + if (!env) throw new Error('Env must be specified: either "dev" or "prod"'); + + const config = { ...configs[env] }; + + if ('docuBuild' in argv && !argv.docuBuild) config.docusaurusBuildEnabled = false; + + const rootDir = await getRootDir(); + const docBuilderDir = `${rootDir}/packages/doc-builder`; + const destHelpDir = `${docBuilderDir}/help`; + const newsDestDir = `${docBuilderDir}/news`; + const readmeDir = `${rootDir}/readme`; + + const donateLinks = getDonateLinks(); + + const mainContext: Context = { donateLinks }; + + await processDocFiles(readmeDir, destHelpDir, [ + `${readmeDir}/_i18n`, + `${readmeDir}/cla.md`, + `${readmeDir}/download.md`, + `${readmeDir}/faq_joplin_cloud.md`, + `${readmeDir}/privacy.md`, + `${readmeDir}/donate.md`, + `${readmeDir}/connection_check.md`, + `${readmeDir}/welcome`, + `${readmeDir}/news`, + ], mainContext); + + await deleteUnprocessedFiles(destHelpDir, mainContext.processedFiles); + + const newsContext: Context = { isNews: true, donateLinks }; + await processDocFiles(`${readmeDir}/news`, newsDestDir, [], newsContext); + await deleteUnprocessedFiles(newsDestDir, newsContext.processedFiles); + + await copyFile(`${rootDir}/Assets/WebsiteAssets/images`, `${docBuilderDir}/static/images`); + + if (config.docusaurusBuildEnabled) { + await buildDocusaurus(docBuilderDir, config.docusaurusBuildCommand, config.baseUrl); + } else { + console.info('Skipping Docusaurus build...'); + } +} + +if (require.main === module) { + // eslint-disable-next-line promise/prefer-await-to-then + main().catch((error) => { + console.error('Fatal error'); + console.error(error); + process.exit(1); + }); +} diff --git a/packages/tools/website/processDocsTestSamples/blockquotes.md b/packages/tools/website/processDocsTestSamples/blockquotes.md new file mode 100644 index 0000000000..6bd88ec07a --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/blockquotes.md @@ -0,0 +1,5 @@ +This is a quote: + +> "I never said that!" +> +> ― Albert Einstein \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/blockquotes.mdx b/packages/tools/website/processDocsTestSamples/blockquotes.mdx new file mode 100644 index 0000000000..8355787189 --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/blockquotes.mdx @@ -0,0 +1,5 @@ +This is a quote: + +> "I never said that!" +> +> ― Albert Einstein \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/code_block.md b/packages/tools/website/processDocsTestSamples/code_block.md new file mode 100644 index 0000000000..5aee986f0a --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/code_block.md @@ -0,0 +1,8 @@ +This is a code block: + +```javascript +const test = 123; +console.info(test); +``` + +## Followed by a header \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/code_block.mdx b/packages/tools/website/processDocsTestSamples/code_block.mdx new file mode 100644 index 0000000000..5aee986f0a --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/code_block.mdx @@ -0,0 +1,8 @@ +This is a code block: + +```javascript +const test = 123; +console.info(test); +``` + +## Followed by a header \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/doc1.md b/packages/tools/website/processDocsTestSamples/doc1.md new file mode 100644 index 0000000000..6433f97d45 --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/doc1.md @@ -0,0 +1,3 @@ +One paragraph + +Two paragraph \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/doc1.mdx b/packages/tools/website/processDocsTestSamples/doc1.mdx new file mode 100644 index 0000000000..6433f97d45 --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/doc1.mdx @@ -0,0 +1,3 @@ +One paragraph + +Two paragraph \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/escaped_code.md b/packages/tools/website/processDocsTestSamples/escaped_code.md new file mode 100644 index 0000000000..77e6e85974 --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/escaped_code.md @@ -0,0 +1 @@ +\`escapedCode();\` \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/escaped_code.mdx b/packages/tools/website/processDocsTestSamples/escaped_code.mdx new file mode 100644 index 0000000000..77e6e85974 --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/escaped_code.mdx @@ -0,0 +1 @@ +\`escapedCode();\` \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/formatting.md b/packages/tools/website/processDocsTestSamples/formatting.md new file mode 100644 index 0000000000..78ea5d69be --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/formatting.md @@ -0,0 +1 @@ +Some **bold text** and some *italic text* <EscapedTag> \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/formatting.mdx b/packages/tools/website/processDocsTestSamples/formatting.mdx new file mode 100644 index 0000000000..78ea5d69be --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/formatting.mdx @@ -0,0 +1 @@ +Some **bold text** and some *italic text* <EscapedTag> \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/headers.md b/packages/tools/website/processDocsTestSamples/headers.md new file mode 100644 index 0000000000..b0d0ebf518 --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/headers.md @@ -0,0 +1,17 @@ +# One + +## One one + +Some text + +## One two + +More text + +# Two + +End + + + +# Image and header \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/headers.mdx b/packages/tools/website/processDocsTestSamples/headers.mdx new file mode 100644 index 0000000000..b0d0ebf518 --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/headers.mdx @@ -0,0 +1,17 @@ +# One + +## One one + +Some text + +## One two + +More text + +# Two + +End + + + +# Image and header \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/headers2.md b/packages/tools/website/processDocsTestSamples/headers2.md new file mode 100644 index 0000000000..836a04f5f8 --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/headers2.md @@ -0,0 +1,7 @@ +# Joplin Android app changelog + +## [android-v2.13.4](https://github.com/laurent22/joplin/releases/tag/android-v2.13.4) (Pre-release) - 2023-10-24T18:29:09Z + +- Fixed: Improve list toggle logic (#9103) (#9066 by Henry Heino) + +## [android-v2.13.2](https://github.com/laurent22/joplin/releases/tag/android-v2.13.2) (Pre-release) - 2023-10-07T16:42:16Z \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/headers2.mdx b/packages/tools/website/processDocsTestSamples/headers2.mdx new file mode 100644 index 0000000000..836a04f5f8 --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/headers2.mdx @@ -0,0 +1,7 @@ +# Joplin Android app changelog + +## [android-v2.13.4](https://github.com/laurent22/joplin/releases/tag/android-v2.13.4) (Pre-release) - 2023-10-24T18:29:09Z + +- Fixed: Improve list toggle logic (#9103) (#9066 by Henry Heino) + +## [android-v2.13.2](https://github.com/laurent22/joplin/releases/tag/android-v2.13.2) (Pre-release) - 2023-10-07T16:42:16Z \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/image.md b/packages/tools/website/processDocsTestSamples/image.md new file mode 100644 index 0000000000..c4cc0295f3 --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/image.md @@ -0,0 +1,5 @@ +One paragraph + + + +Two paragraph \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/image.mdx b/packages/tools/website/processDocsTestSamples/image.mdx new file mode 100644 index 0000000000..80dbf4ab1e --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/image.mdx @@ -0,0 +1,5 @@ +One paragraph + + + +Two paragraph \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/image_in_link.md b/packages/tools/website/processDocsTestSamples/image_in_link.md new file mode 100644 index 0000000000..00ccb645ad --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/image_in_link.md @@ -0,0 +1,3 @@ +| Link | +| --- | +| [![Image description](https://example.com/image.svg)](https://example.com/link) | \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/image_in_link.mdx b/packages/tools/website/processDocsTestSamples/image_in_link.mdx new file mode 100644 index 0000000000..4ee5ccdc21 --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/image_in_link.mdx @@ -0,0 +1,3 @@ +| Link | +| ----- | +| [![Image description](https://example.com/image.svg)](https://example.com/link) | \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/indented_block.md b/packages/tools/website/processDocsTestSamples/indented_block.md new file mode 100644 index 0000000000..0e48cc7782 --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/indented_block.md @@ -0,0 +1,6 @@ +This needs to be converted: + + Some indented + Text + +Unindented \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/indented_block.mdx b/packages/tools/website/processDocsTestSamples/indented_block.mdx new file mode 100644 index 0000000000..e1b59b60a0 --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/indented_block.mdx @@ -0,0 +1,8 @@ +This needs to be converted: + +``` +Some indented +Text +``` + +Unindented \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/inline_code.md b/packages/tools/website/processDocsTestSamples/inline_code.md new file mode 100644 index 0000000000..d381168d13 --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/inline_code.md @@ -0,0 +1 @@ +If `yarn dist` fails, it may need administrative rights. \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/inline_code.mdx b/packages/tools/website/processDocsTestSamples/inline_code.mdx new file mode 100644 index 0000000000..d381168d13 --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/inline_code.mdx @@ -0,0 +1 @@ +If `yarn dist` fails, it may need administrative rights. \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/links.md b/packages/tools/website/processDocsTestSamples/links.md new file mode 100644 index 0000000000..b341d9953c --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/links.md @@ -0,0 +1,3 @@ +One image: ![some alt text](https://joplinapp.org/images/logo-text-blue.svg) + +Some link: [hello](https://joplinapp.org) \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/links.mdx b/packages/tools/website/processDocsTestSamples/links.mdx new file mode 100644 index 0000000000..b341d9953c --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/links.mdx @@ -0,0 +1,3 @@ +One image: ![some alt text](https://joplinapp.org/images/logo-text-blue.svg) + +Some link: [hello](https://joplinapp.org) \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/list.md b/packages/tools/website/processDocsTestSamples/list.md new file mode 100644 index 0000000000..00a1d51908 --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/list.md @@ -0,0 +1,14 @@ +- One +- Two + - Four + - Five +- Six + - Seven + +Some paragraph + +1. One + 1. Two + 2. three +2. Foud +3. Five \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/list.mdx b/packages/tools/website/processDocsTestSamples/list.mdx new file mode 100644 index 0000000000..00a1d51908 --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/list.mdx @@ -0,0 +1,14 @@ +- One +- Two + - Four + - Five +- Six + - Seven + +Some paragraph + +1. One + 1. Two + 2. three +2. Foud +3. Five \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/style.md b/packages/tools/website/processDocsTestSamples/style.md new file mode 100644 index 0000000000..5057c8695c --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/style.md @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/style.mdx b/packages/tools/website/processDocsTestSamples/style.mdx new file mode 100644 index 0000000000..ff7ca21fdd --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/style.mdx @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/table.md b/packages/tools/website/processDocsTestSamples/table.md new file mode 100644 index 0000000000..f5007aefc0 --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/table.md @@ -0,0 +1,18 @@ +| First Header | Second Header | +| --------------- | --------------- | +| Content Cell A1 | Content Cell A2 | +| Content Cell A2 | Content Cell B2 | + + + +| Header | +| --- | +| Content | + +Paragraph + +# With a BR tag + +| Header | +| --- | +| Line 1
Line 2 | \ No newline at end of file diff --git a/packages/tools/website/processDocsTestSamples/table.mdx b/packages/tools/website/processDocsTestSamples/table.mdx new file mode 100644 index 0000000000..914b945181 --- /dev/null +++ b/packages/tools/website/processDocsTestSamples/table.mdx @@ -0,0 +1,18 @@ +| First Header | Second Header | +| ----- | ----- | +| Content Cell A1 | Content Cell A2 | +| Content Cell A2 | Content Cell B2 | + + + +| Header | +| ----- | +| Content | + +Paragraph + +# With a BR tag + +| Header | +| ----- | +| Line 1
Line 2 | \ No newline at end of file diff --git a/packages/tools/website/updateDownloadPage.ts b/packages/tools/website/updateDownloadPage.ts index 694a5a0f15..c06af73d15 100644 --- a/packages/tools/website/updateDownloadPage.ts +++ b/packages/tools/website/updateDownloadPage.ts @@ -2,7 +2,7 @@ import { readFile } from 'fs-extra'; import { rootDir, insertContentIntoFile } from '../tool-utils'; async function getReadmeMd() { - return readFile(`${rootDir}/README.md`, 'utf8'); + return readFile(`${rootDir}/readme/install.md`, 'utf8'); } async function createDownloadButtonsHtml(readmeMd: string): Promise> { diff --git a/packages/tools/website/updateNews.ts b/packages/tools/website/updateNews.ts index 7fb2c73089..62366d71e0 100644 --- a/packages/tools/website/updateNews.ts +++ b/packages/tools/website/updateNews.ts @@ -70,7 +70,7 @@ const generateRssFeed = async (posts: Post[]) => { const feedItems: any[] = []; for (const post of posts.reverse()) { const content = await getPostContent(post); - const postDate = getNewsDate(content.parsed, post.path); + const postDate = getNewsDate(content.parsed.header, post.path); const html = markdownToHtml(content.body); if (pubDate === null) pubDate = postDate; @@ -78,11 +78,11 @@ const generateRssFeed = async (posts: Post[]) => { feedItems.push({ title: content.title, description: html, - url: `https://joplinapp.org/news/${post.id}/`, + url: `https://joplinapp.org/news/${post.id}`, guid: post.id, date: postDate, custom_elements: [ - { 'twitter-text': content.parsed.tweet }, + { 'twitter-text': content.parsed.header.tweet }, ], }); @@ -161,7 +161,7 @@ const main = async () => { }); const postUrl = `https://discourse.joplinapp.org/t/${topic.topic_id}`; - content.parsed.forum_url = postUrl; + content.parsed.header.forum_url = postUrl; const compiled = compileWithFrontMatter(content.parsed); await writeFile(post.path, compiled, 'utf8'); diff --git a/packages/tools/website/utils/frontMatter.test.ts b/packages/tools/website/utils/frontMatter.test.ts new file mode 100644 index 0000000000..02fc7772f7 --- /dev/null +++ b/packages/tools/website/utils/frontMatter.test.ts @@ -0,0 +1,58 @@ +import { compileWithFrontMatter, stripOffFrontMatter } from './frontMatter'; +const moment = require('moment'); + +const testCases: any[][] = [ + + // ============================================================= + + [ + ` +--- +tweet: Introducing the "GitHub Action Raw Log Viewer" extension for Chrome +forum_url: https://discourse.joplinapp.org/t/29139 +created: 2019-09-29T14:28:34.000+00:00 +updated: 2019-09-29T14:30:50.000+00:00 +--- + +Body +` + + , + + { + tweet: 'Introducing the "GitHub Action Raw Log Viewer" extension for Chrome', + forum_url: 'https://discourse.joplinapp.org/t/29139', + created: moment('2019-09-29T14:28:34.000+00:00').toDate(), + updated: moment('2019-09-29T14:30:50.000+00:00').toDate(), + }, + + 'Body', + + ` +--- +tweet: Introducing the "GitHub Action Raw Log Viewer" extension for Chrome +forum_url: https://discourse.joplinapp.org/t/29139 +created: 2019-09-29T14:28:34.000Z +updated: 2019-09-29T14:30:50.000Z +--- + +Body +`, + ], + +]; + +describe('frontMatter', () => { + + it('should strip-off FrontMatter', async () => { + for (const [doc, frontMatter, body, compiled] of testCases) { + const actual = stripOffFrontMatter(doc.trim()); + expect(actual.doc).toBe(body); + expect(actual.header).toEqual(frontMatter); + + const actualCompiled = compileWithFrontMatter(actual); + expect(actualCompiled).toBe(compiled.trim()); + } + }); + +}); diff --git a/packages/tools/website/utils/frontMatter.ts b/packages/tools/website/utils/frontMatter.ts index 3a8a13e69b..2370e697d2 100644 --- a/packages/tools/website/utils/frontMatter.ts +++ b/packages/tools/website/utils/frontMatter.ts @@ -1,30 +1,32 @@ +import * as yaml from 'js-yaml'; + const moment = require('moment'); -export interface MarkdownAndFrontMatter { - doc: string; +export interface FrontMatter { created?: Date; updated?: Date; source_url?: string; forum_url?: string; tweet?: string; + + // Docusaurus + sidebar_label?: string; + sidebar_position?: number; + date?: string; } -const readProp = (line: string): string[] => { - line = line.trim(); - const d = line.indexOf(':'); - return [line.substr(0, d).trim(), line.substr(d + 1).trim()]; -}; +export interface MarkdownAndFrontMatter { + doc: string; + header: FrontMatter; +} export const stripOffFrontMatter = (md: string): MarkdownAndFrontMatter => { - if (md.indexOf('---') !== 0) return { doc: md }; + if (md.indexOf('---') !== 0) return { doc: md, header: {} }; let state = 'start'; const lines = md.split('\n'); const docLines: string[] = []; - - const output: MarkdownAndFrontMatter = { - doc: '', - }; + const headerLines: string[] = []; for (const line of lines) { if (state === 'start') { @@ -40,10 +42,7 @@ export const stripOffFrontMatter = (md: string): MarkdownAndFrontMatter => { } const propLine = line.trim(); - if (propLine) { - const p = readProp(propLine); - (output as any)[p[0]] = p[1]; - } + headerLines.push(propLine); } if (state === 'out') { @@ -57,12 +56,13 @@ export const stripOffFrontMatter = (md: string): MarkdownAndFrontMatter => { if (state !== 'doc') throw new Error('Front matter block was not closed with "---"'); - output.doc = docLines.join('\n'); + const header: Record = yaml.load(headerLines.join('\n'), { schema: yaml.FAILSAFE_SCHEMA }); - if (output.created) output.created = moment(output.created).toDate(); - if (output.updated) output.updated = moment(output.updated).toDate(); + if (header.created) header.created = moment(header.created).toDate(); + if (header.updated) header.updated = moment(header.updated).toDate(); + if ('sidebar_position' in header) header.sidebar_position = Number(header.sidebar_position); - return output; + return { header, doc: docLines.join('\n') }; }; // --- @@ -80,16 +80,15 @@ const formatFrontMatterValue = (key: string, value: any) => { export const compileWithFrontMatter = (md: MarkdownAndFrontMatter): string => { const output: string[] = []; - const header: string[] = []; - for (const [key, value] of Object.entries(md)) { - if (key === 'doc') continue; - header.push(`${key}: ${formatFrontMatterValue(key, value)}`); - } - - if (header.length) { + if (Object.keys(md.header).length) { + const header = { ...md.header }; + for (const [key, value] of Object.entries(header)) { + (header as any)[key] = formatFrontMatterValue(key, value); + } + const headerString = yaml.dump(header, { noCompatMode: true, schema: yaml.FAILSAFE_SCHEMA, lineWidth: 100000 }); output.push('---'); - output.push(header.join('\n')); + output.push(headerString.trim()); output.push('---'); output.push(''); } diff --git a/packages/tools/website/utils/news.ts b/packages/tools/website/utils/news.ts index 992319e3a4..70aaeeff2e 100644 --- a/packages/tools/website/utils/news.ts +++ b/packages/tools/website/utils/news.ts @@ -1,14 +1,14 @@ /* eslint-disable import/prefer-default-export */ -import { MarkdownAndFrontMatter } from './frontMatter'; +import { FrontMatter } from './frontMatter'; import { basename } from 'path'; const moment = require('moment'); -export const getNewsDateString = (info: MarkdownAndFrontMatter, mdFilePath: string): string => { +export const getNewsDateString = (info: FrontMatter, mdFilePath: string): string => { return moment(getNewsDate(info, mdFilePath)).format('D MMM YYYY'); }; -export const getNewsDate = (info: MarkdownAndFrontMatter, mdFilePath: string): Date => { +export const getNewsDate = (info: FrontMatter, 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) diff --git a/packages/utils/execCommand.ts b/packages/utils/execCommand.ts index 34d0132cba..b1aa0893ff 100644 --- a/packages/utils/execCommand.ts +++ b/packages/utils/execCommand.ts @@ -8,6 +8,7 @@ interface ExecCommandOptions { showStdout?: boolean; showStderr?: boolean; quiet?: boolean; + env?: Record; } export default async (command: string | string[], options: ExecCommandOptions | null = null): Promise => { @@ -16,6 +17,7 @@ export default async (command: string | string[], options: ExecCommandOptions | showStdout: true, showStderr: true, quiet: false, + env: {}, ...options, }; @@ -36,7 +38,7 @@ export default async (command: string | string[], options: ExecCommandOptions | const args: string[] = typeof command === 'string' ? splitCommandString(command) : command as string[]; const executableName = args[0]; args.splice(0, 1); - const promise = execa(executableName, args); + const promise = execa(executableName, args, { env: options.env }); if (options.showStdout && promise.stdout) promise.stdout.pipe(process.stdout); if (options.showStderr && promise.stderr) promise.stderr.pipe(process.stderr); const result = await promise; diff --git a/packages/utils/html.ts b/packages/utils/html.ts index 0e21987f0a..946bebdec4 100644 --- a/packages/utils/html.ts +++ b/packages/utils/html.ts @@ -2,4 +2,41 @@ const Entities = require('html-entities').AllHtmlEntities; +const selfClosingElements = [ + 'area', + 'base', + 'basefont', + 'br', + 'col', + 'command', + 'embed', + 'frame', + 'hr', + 'img', + 'input', + 'isindex', + 'keygen', + 'link', + 'meta', + 'param', + 'source', + 'track', + 'wbr', +]; + export const htmlentities = new Entities().encode; + +export const attributesHtml = (attr: Record) => { + const output = []; + + for (const n in attr) { + if (!attr.hasOwnProperty(n)) continue; + output.push(`${n}="${htmlentities(attr[n])}"`); + } + + return output.join(' '); +}; + +export const isSelfClosingTag = (tagName: string) => { + return selfClosingElements.includes(tagName.toLowerCase()); +}; diff --git a/readme/_i18n/fr_FR/welcome/1_welcome_to_joplin.md b/readme/_i18n/fr_FR/welcome/1_welcome_to_joplin.md index 35ed96a8d1..e43b4b988a 100644 --- a/readme/_i18n/fr_FR/welcome/1_welcome_to_joplin.md +++ b/readme/_i18n/fr_FR/welcome/1_welcome_to_joplin.md @@ -1,6 +1,6 @@ # Bienvenue dans Joplin ! -Joplin est une application gratuite et open source de prise de notes, qui vous aide à rédiger et à organiser vos notes, et à les synchroniser entre vos appareils. Les notes sont consultables, peuvent être copiées, étiquetées et modifiées directement depuis l'application ou depuis votre propre éditeur de texte. Les notes sont au [format Markdown](https://joplinapp.org/help/#markdown). Joplin est disponible en tant qu'application de **bureau**, **mobile** et **terminal**. +Joplin est une application gratuite et open source de prise de notes, qui vous aide à rédiger et à organiser vos notes, et à les synchroniser entre vos appareils. Les notes sont consultables, peuvent être copiées, étiquetées et modifiées directement depuis l'application ou depuis votre propre éditeur de texte. Les notes sont au [format Markdown](https://joplinapp.org/help/apps/markdown). Joplin est disponible en tant qu'application de **bureau**, **mobile** et **terminal**. Les notes de ce carnet donnent un aperçu de ce que Joplin peut faire et comment l'utiliser. En général, les trois applications partagent à peu près les mêmes fonctionnalités ; toute différence sera clairement indiquée. @@ -14,11 +14,11 @@ Joplin a trois colonnes principales : - La **liste de notes** contient la liste actuelle des notes - soit les notes du bloc-notes actuellement sélectionné, les notes de l'étiquette actuellement sélectionnée ou les résultats de la recherche. -- L'**éditeur de notes** est là où vous écrivez vos notes. Il existe un **éditeur de texte enrichi** et un **éditeur Markdown** - cliquez sur le bouton **Basculer l'éditeur** dans le coin supérieur droit pour basculer entre les deux ! Vous pouvez également utiliser un [éditeur externe](https://joplinapp.org/help/#external-text-editor) pour modifier les notes. Par exemple, vous pouvez utiliser Typora comme éditeur externe et il affichera la note ainsi que toutes les images intégrées. +- L'**éditeur de notes** est là où vous écrivez vos notes. Il existe un **éditeur de texte enrichi** et un **éditeur Markdown** - cliquez sur le bouton **Basculer l'éditeur** dans le coin supérieur droit pour basculer entre les deux ! Vous pouvez également utiliser un [éditeur externe](https://joplinapp.org/help/apps/external_text_editor) pour modifier les notes. Par exemple, vous pouvez utiliser Typora comme éditeur externe et il affichera la note ainsi que toutes les images intégrées. ## Écrire des notes en Markdown -Markdown est un langage de balisage léger. Joplin prend en charge une [syntaxe Markdown à saveur Github](https://joplinapp.org/markdown/) avec quelques variantes et ajouts. +Markdown est un langage de balisage léger. Joplin prend en charge une [syntaxe Markdown à saveur Github](https://joplinapp.org/help/apps/markdown) avec quelques variantes et ajouts. En général, bien que Markdown soit un langage de balisage, il lisible directement. Ceci est un exemple simple (vous pouvez voir à quoi il ressemble dans le panneau de visualisation) : @@ -44,7 +44,7 @@ Ceci est un [lien](https://joplinapp.org) et, enfin, ci-dessous est une règle h * * * -Beaucoup plus est possible, y compris l'ajout d'exemples de code informatique, de formules mathématiques ou de listes de cases à cocher - voir la [documentation Markdown](https://joplinapp.org/help/#markdown) pour plus d'informations. +Beaucoup plus est possible, y compris l'ajout d'exemples de code informatique, de formules mathématiques ou de listes de cases à cocher - voir la [documentation Markdown](https://joplinapp.org/help/apps/markdown) pour plus d'informations. ## Organiser vos notes diff --git a/readme/_i18n/fr_FR/welcome/2_importing_and_exporting_notes.md b/readme/_i18n/fr_FR/welcome/2_importing_and_exporting_notes.md index f52370fe79..067ab3fdc1 100644 --- a/readme/_i18n/fr_FR/welcome/2_importing_and_exporting_notes.md +++ b/readme/_i18n/fr_FR/welcome/2_importing_and_exporting_notes.md @@ -4,12 +4,12 @@ Joplin peut importer des carnets complets depuis Evernote, ainsi que des notes, des étiquettes, des images, des fichiers joints et des métadonnées de note (telles que l'auteur, la géolocalisation, etc.) via des fichiers ENEX. -Pour importer des données Evernote, exportez d'abord vos carnets Evernote vers des fichiers ENEX comme décrit [ici](https://help.evernote.com/hc/en-us/articles/209005557-How-to-back-up-export-and-restaurer-importer-notes-et-carnets). Ensuite, sur **bureau**, procédez comme suit : Ouvrez Fichier > Importer > ENEX et sélectionnez votre fichier. Les notes seront importées dans un nouveau cahier séparé. Si nécessaire, ils peuvent ensuite être déplacés vers un autre carnet, ou le carnet peut être renommé, etc. [En savoir plus sur l'importation Evernote](https://joplinapp.org/help/#importing-from-evernote). +Pour importer des données Evernote, exportez d'abord vos carnets Evernote vers des fichiers ENEX comme décrit [ici](https://help.evernote.com/hc/en-us/articles/209005557-How-to-back-up-export-and-restaurer-importer-notes-et-carnets). Ensuite, sur **bureau**, procédez comme suit : Ouvrez Fichier > Importer > ENEX et sélectionnez votre fichier. Les notes seront importées dans un nouveau cahier séparé. Si nécessaire, ils peuvent ensuite être déplacés vers un autre carnet, ou le carnet peut être renommé, etc. [En savoir plus sur l'importation Evernote](https://joplinapp.org/help/apps/import_export#importing-from-evernote). # Importation à partir d'autres applications -Joplin peut également importer des notes depuis [de nombreuses autres applications](https://github.com/laurent22/joplin#importing-from-other-applications) ainsi que [depuis Markdown ou depuis des fichiers texte](https://github.com/laurent22/joplin#importing-from-markdown-files). +Joplin peut également importer des notes depuis [de nombreuses autres applications](https://joplinapp.org/help/apps/import_export#importing-from-other-applications) ainsi que [depuis Markdown ou depuis des fichiers texte](https://joplinapp.org/help/apps/import_export#importing-from-markdown-files). # Exporter des notes -Joplin peut exporter au format JEX (fichier d'exportation Joplin), qui est une archive pouvant contenir plusieurs notes, cahiers, etc. Il s'agit d'un format principalement conçu à des fins de sauvegarde. Vous pouvez également exporter vers d'autres formats tels que des fichiers Markdown simples, vers JSON ou vers PDF. Découvrez [l'exportation de notes](https://github.com/laurent22/joplin#exporting) sur le site officiel. \ No newline at end of file +Joplin peut exporter au format JEX (fichier d'exportation Joplin), qui est une archive pouvant contenir plusieurs notes, cahiers, etc. Il s'agit d'un format principalement conçu à des fins de sauvegarde. Vous pouvez également exporter vers d'autres formats tels que des fichiers Markdown simples, vers JSON ou vers PDF. Découvrez [l'exportation de notes](https://joplinapp.org/help/apps/import_export#exporting) sur le site officiel. \ No newline at end of file diff --git a/readme/_i18n/fr_FR/welcome/3_synchronising_your_notes.md b/readme/_i18n/fr_FR/welcome/3_synchronising_your_notes.md index 561b0b0a1e..acfaf75e02 100644 --- a/readme/_i18n/fr_FR/welcome/3_synchronising_your_notes.md +++ b/readme/_i18n/fr_FR/welcome/3_synchronising_your_notes.md @@ -18,8 +18,8 @@ Nextcloud est une solution de cloud pouvant être auto-hébergée. Pour le confi ## Configuration de la synchronisation OneDrive ou WebDAV -OneDrive et WebDAV sont également pris en charge en tant que services de synchronisation. Veuillez consulter [la documentation de synchronisation](https://github.com/laurent22/joplin#synchronisation) pour plus d'informations. +OneDrive et WebDAV sont également pris en charge en tant que services de synchronisation. Veuillez consulter [la documentation de synchronisation](https://joplinapp.org/help/apps/sync/) pour plus d'informations. ## Utilisation du chiffrement de bout en bout -Joplin prend en charge le chiffrement de bout en bout (E2EE) sur toutes les applications. E2EE est un système où seul le propriétaire des données peut les lire. Il empêche les espions potentiels, y compris les fournisseurs de télécommunications, les fournisseurs d'accès Internet et même les développeurs de Joplin, d'accéder aux données. Veuillez consulter le [tutoriel sur le chiffrement de bout en bout](https://joplinapp.org/e2ee/) pour plus d'informations sur cette fonctionnalité et comment l'activer. \ No newline at end of file +Joplin prend en charge le chiffrement de bout en bout (E2EE) sur toutes les applications. E2EE est un système où seul le propriétaire des données peut les lire. Il empêche les espions potentiels, y compris les fournisseurs de télécommunications, les fournisseurs d'accès Internet et même les développeurs de Joplin, d'accéder aux données. Veuillez consulter le [tutoriel sur le chiffrement de bout en bout](https://joplinapp.org/help/apps/sync/e2ee) pour plus d'informations sur cette fonctionnalité et comment l'activer. \ No newline at end of file diff --git a/readme/_i18n/fr_FR/welcome/4_tips.md b/readme/_i18n/fr_FR/welcome/4_tips.md index 3cf7c4b311..6683f1f990 100644 --- a/readme/_i18n/fr_FR/welcome/4_tips.md +++ b/readme/_i18n/fr_FR/welcome/4_tips.md @@ -8,7 +8,7 @@ Les premières notes vous ont donné un aperçu des principales fonctionnalités Le Web Clipper est une extension de navigateur qui vous permet d'enregistrer des pages Web et des captures d'écran à partir de votre navigateur. Pour commencer à l'utiliser, ouvrez l'application de bureau Joplin, accédez aux options du Web Clipper et suivez les instructions. -Plus d'infos sur le site officiel : https://joplinapp.org/clipper/ +Plus d'infos sur le site officiel : https://joplinapp.org/help/apps/clipper/ ## Plugins @@ -20,19 +20,19 @@ Tout type de fichier peut être joint à une note. Dans Markdown, les liens vers Les images peuvent être jointes soit en cliquant sur "Joindre un fichier", soit en collant (avec `Ctrl+V` ou `Cmd+V`) une image directement dans l'éditeur, soit en glissant-déposant une image. -Plus d'infos sur les pièces jointes : https://joplinapp.org/help/#attachments +Plus d'infos sur les pièces jointes : https://joplinapp.org/help/apps/attachments ## Recherche -Joplin prend en charge les requêtes de recherche avancées, qui sont entièrement documentées sur le site officiel : https://joplinapp.org/help/#searching +Joplin prend en charge les requêtes de recherche avancées, qui sont entièrement documentées sur le site officiel : https://joplinapp.org/help/apps/search ## Alarmes -Une alarme peut être associée à n'importe quelle tâche. Elle sera déclenchée à l'heure indiquée par l'affichage d'une notification. Pour utiliser cette fonctionnalité, consultez la documentation : https://joplinapp.org/help/#notifications +Une alarme peut être associée à n'importe quelle tâche. Elle sera déclenchée à l'heure indiquée par l'affichage d'une notification. Pour utiliser cette fonctionnalité, consultez la documentation : https://joplinapp.org/help/apps/notifications ## Conseils avancés Markdown -Joplin utilise et rend [Github-flavored Markdown](https://joplinapp.org/markdown/) avec quelques variations et ajouts. +Joplin utilise et rend [Github-flavored Markdown](https://joplinapp.org/help/apps/markdown) avec quelques variations et ajouts. Par exemple, les tableaux sont pris en charge : diff --git a/readme/about/_category_.yml b/readme/about/_category_.yml new file mode 100644 index 0000000000..2b42f8d65a --- /dev/null +++ b/readme/about/_category_.yml @@ -0,0 +1,4 @@ +position: 5 +label: 'About' +collapsible: true +collapsed: true \ No newline at end of file diff --git a/readme/about/changelog/_category_.yml b/readme/about/changelog/_category_.yml new file mode 100644 index 0000000000..11a071629a --- /dev/null +++ b/readme/about/changelog/_category_.yml @@ -0,0 +1,4 @@ +position: 1 +label: 'Changelog' +collapsible: true +collapsed: true \ No newline at end of file diff --git a/readme/changelog_android.md b/readme/about/changelog/android.md similarity index 99% rename from readme/changelog_android.md rename to readme/about/changelog/android.md index f8e63b640a..f3d352fc59 100644 --- a/readme/changelog_android.md +++ b/readme/about/changelog/android.md @@ -1,4 +1,4 @@ -# Joplin Android app changelog +# Joplin Android Changelog ## [android-v2.13.4](https://github.com/laurent22/joplin/releases/tag/android-v2.13.4) (Pre-release) - 2023-10-24T18:29:09Z diff --git a/readme/changelog_cli.md b/readme/about/changelog/cli.md similarity index 99% rename from readme/changelog_cli.md rename to readme/about/changelog/cli.md index 11beae5d4d..445577b136 100644 --- a/readme/changelog_cli.md +++ b/readme/about/changelog/cli.md @@ -1,4 +1,4 @@ -# Joplin terminal app changelog +# Joplin Terminal App Changelog ## [cli-v2.12.1](https://github.com/laurent22/joplin/releases/tag/cli-v2.12.1) - 2023-08-23T12:53:19Z diff --git a/readme/changelog.md b/readme/about/changelog/desktop.md similarity index 84% rename from readme/changelog.md rename to readme/about/changelog/desktop.md index db27adb8dd..690f6a0fa7 100644 --- a/readme/changelog.md +++ b/readme/about/changelog/desktop.md @@ -1,8 +1,8 @@ -# Joplin changelog +# Joplin Desktop Changelog ## [v2.13.3](https://github.com/laurent22/joplin/releases/tag/v2.13.3) (Pre-release) - 2023-10-24T09:25:33Z -- Improved: Support for plural translations ([#9033](https://github.com/laurent22/joplin/issues/9033)) +- Improved: Support for plural translations ([#903](https://github.com/laurent22/joplin/issues/903)3) - Improved: Update Electron to 25.9.0 ([90832da](https://github.com/laurent22/joplin/commit/90832da)) - Improved: Updated packages dayjs (v1.11.10), follow-redirects (v1.15.3), glob (v10.3.6), katex (v0.16.9), markdown-it (v13.0.2), react, react-redux (v8.1.3), react-select (v5.7.7), sharp (v0.32.6), tar (v6.2.0) - Improved: Use plain text editor in safe mode ([#8750](https://github.com/laurent22/joplin/issues/8750)) ([#8749](https://github.com/laurent22/joplin/issues/8749) by Henry Heino) @@ -21,31 +21,31 @@ ## [v2.13.2](https://github.com/laurent22/joplin/releases/tag/v2.13.2) (Pre-release) - 2023-10-06T17:00:07Z - New: Add new beta Markdown editor based on CodeMirror 6 ([#8793](https://github.com/laurent22/joplin/issues/8793) by Henry Heino) -- New: Add support for plugin imaging API ([#8900](https://github.com/laurent22/joplin/issues/8900)) -- New: Add support for note list plugins ([#8897](https://github.com/laurent22/joplin/issues/8897)) ([#5389](https://github.com/laurent22/joplin/issues/5389)) +- New: Add support for plugin imaging API ([#890](https://github.com/laurent22/joplin/issues/890)0) +- New: Add support for note list plugins ([#8897](https://github.com/laurent22/joplin/issues/8897)) ([#538](https://github.com/laurent22/joplin/issues/538)9) - Improved: Api: Allow accessing revision data ([e49ca26](https://github.com/laurent22/joplin/commit/e49ca26)) - Improved: Bump mermaid version to 10.4.0 to support new chart types ([#8890](https://github.com/laurent22/joplin/issues/8890)) ([#8728](https://github.com/laurent22/joplin/issues/8728) by [@oj-lappi](https://github.com/oj-lappi)) - Improved: Enable ignoreTlsErrors and custom certificates for S3 sync ([#8980](https://github.com/laurent22/joplin/issues/8980) by Jens Böttge) -- Improved: Improved handling of invalid sync info ([#6978](https://github.com/laurent22/joplin/issues/6978)) +- Improved: Improved handling of invalid sync info ([#697](https://github.com/laurent22/joplin/issues/697)8) - Improved: Indent sub-sections in config screen ([2cb3857](https://github.com/laurent22/joplin/commit/2cb3857)) -- Improved: No strikethrough on completed to-dos in note list to improve readability ([#8225](https://github.com/laurent22/joplin/issues/8225)) -- Improved: Remember whether "All notes", a notebook or a tag was opened when re-opening the app ([#8021](https://github.com/laurent22/joplin/issues/8021)) -- Improved: Significantly improve performance when displaying large tables in Rich Text editor ([#6736](https://github.com/laurent22/joplin/issues/6736)) +- Improved: No strikethrough on completed to-dos in note list to improve readability ([#822](https://github.com/laurent22/joplin/issues/822)5) +- Improved: Remember whether "All notes", a notebook or a tag was opened when re-opening the app ([#802](https://github.com/laurent22/joplin/issues/802)1) +- Improved: Significantly improve performance when displaying large tables in Rich Text editor ([#673](https://github.com/laurent22/joplin/issues/673)6) - Improved: Updated packages @electron/notarize (v2.1.0), @electron/remote (v2.0.11), compare-versions (v6.1.0), glob (v10.3.4), katex (v0.16.8), sass (v1.66.1), sprintf-js (v1.1.3), uuid (v9.0.1) - Improved: Upgrade to Electron 25.8.1 ([#8921](https://github.com/laurent22/joplin/issues/8921) by Henry Heino) -- Fixed: Changing the currently opened note from plugins or the data API does not refresh the note content ([#5955](https://github.com/laurent22/joplin/issues/5955)) -- Fixed: Do no automatically set focus when switching layout to fix certain plugin issues ([#6514](https://github.com/laurent22/joplin/issues/6514)) -- Fixed: ENEX files that contain resources with invalid mime types are imported correctly ([#8363](https://github.com/laurent22/joplin/issues/8363)) +- Fixed: Changing the currently opened note from plugins or the data API does not refresh the note content ([#595](https://github.com/laurent22/joplin/issues/595)5) +- Fixed: Do no automatically set focus when switching layout to fix certain plugin issues ([#651](https://github.com/laurent22/joplin/issues/651)4) +- Fixed: ENEX files that contain resources with invalid mime types are imported correctly ([#836](https://github.com/laurent22/joplin/issues/836)3) - Fixed: Enable translation for "Reveal file in folder" command ([#8852](https://github.com/laurent22/joplin/issues/8852)) ([#6440](https://github.com/laurent22/joplin/issues/6440) by [@CptMeetKat](https://github.com/CptMeetKat)) -- Fixed: Ensure that ENEX resources with invalid filenames are imported correctly ([#8823](https://github.com/laurent22/joplin/issues/8823)) -- Fixed: Ensure that notes that contain invalid links can still be exported as HTML or PDF ([#8305](https://github.com/laurent22/joplin/issues/8305)) +- Fixed: Ensure that ENEX resources with invalid filenames are imported correctly ([#882](https://github.com/laurent22/joplin/issues/882)3) +- Fixed: Ensure that notes that contain invalid links can still be exported as HTML or PDF ([#830](https://github.com/laurent22/joplin/issues/830)5) - Fixed: Fix escapes breaking linkified URLs ([#8873](https://github.com/laurent22/joplin/issues/8873)) ([#8743](https://github.com/laurent22/joplin/issues/8743) by Henry Heino) - Fixed: Fix search engine ranking algorithm ([f504cf1](https://github.com/laurent22/joplin/commit/f504cf1)) -- Fixed: Improved import of invalid Markdown+FrontMatter files ([#8802](https://github.com/laurent22/joplin/issues/8802)) +- Fixed: Improved import of invalid Markdown+FrontMatter files ([#880](https://github.com/laurent22/joplin/issues/880)2) - Fixed: Modified placeholder text on note title input field ([#8850](https://github.com/laurent22/joplin/issues/8850)) ([#8643](https://github.com/laurent22/joplin/issues/8643) by [@CptMeetKat](https://github.com/CptMeetKat)) - Fixed: Preserve previous values when updating a note's date fields ([#8948](https://github.com/laurent22/joplin/issues/8948)) ([#8937](https://github.com/laurent22/joplin/issues/8937) by [@CptMeetKat](https://github.com/CptMeetKat)) -- Fixed: Prevent application from being stuck when importing an invalid ENEX file ([#8699](https://github.com/laurent22/joplin/issues/8699)) -- Fixed: Regression: Fixes [#8877](https://github.com/laurent22/joplin/issues/8877): After a note is decrypted, the note list is not updated ([#8877](https://github.com/laurent22/joplin/issues/8877)) +- Fixed: Prevent application from being stuck when importing an invalid ENEX file ([#869](https://github.com/laurent22/joplin/issues/869)9) +- Fixed: Regression: Fixes [#8877](https://github.com/laurent22/joplin/issues/8877): After a note is decrypted, the note list is not updated ([#887](https://github.com/laurent22/joplin/issues/887)7) - Fixed: Remove dead area at the end of the note list ([#8825](https://github.com/laurent22/joplin/issues/8825)) ([#8194](https://github.com/laurent22/joplin/issues/8194) by [@CptMeetKat](https://github.com/CptMeetKat)) - Fixed: Show a gear when a plugin doesn't specify an icon ([#8909](https://github.com/laurent22/joplin/issues/8909)) ([#8898](https://github.com/laurent22/joplin/issues/8898) by Henry Heino) - Fixed: Whitelisted Joplin markdown links for copy pasting in WYSIWYG mode ([#8972](https://github.com/laurent22/joplin/issues/8972)) ([#8946](https://github.com/laurent22/joplin/issues/8946) by [@CptMeetKat](https://github.com/CptMeetKat)) @@ -56,20 +56,20 @@ ## [v2.12.17](https://github.com/laurent22/joplin/releases/tag/v2.12.17) - 2023-09-14T21:54:52Z -- Fixed: Prevent application from being stuck when importing an invalid ENEX file ([#8699](https://github.com/laurent22/joplin/issues/8699)) +- Fixed: Prevent application from being stuck when importing an invalid ENEX file ([#869](https://github.com/laurent22/joplin/issues/869)9) ## [v2.13.1](https://github.com/laurent22/joplin/releases/tag/v2.13.1) (Pre-release) - 2023-09-13T09:31:50Z - Improved: Add option to import HTML and TXT file ([#8729](https://github.com/laurent22/joplin/issues/8729)) ([#8722](https://github.com/laurent22/joplin/issues/8722) by [@hubert](https://github.com/hubert)) -- Improved: Allow more special content within tables in the Rich Text editor ([#8579](https://github.com/laurent22/joplin/issues/8579)) -- Improved: Apply correct size to images imported from ENEX files ([#8684](https://github.com/laurent22/joplin/issues/8684)) +- Improved: Allow more special content within tables in the Rich Text editor ([#857](https://github.com/laurent22/joplin/issues/857)9) +- Improved: Apply correct size to images imported from ENEX files ([#868](https://github.com/laurent22/joplin/issues/868)4) - Improved: Fetch release info from Joplin server ([39c118b](https://github.com/laurent22/joplin/commit/39c118b)) -- Improved: Improve pasting content from Word and Excel ([#8705](https://github.com/laurent22/joplin/issues/8705)) ([#8691](https://github.com/laurent22/joplin/issues/8691)) -- Improved: Refactor note list in preparation for plugin support ([#8624](https://github.com/laurent22/joplin/issues/8624)) +- Improved: Improve pasting content from Word and Excel ([#8705](https://github.com/laurent22/joplin/issues/8705)) ([#869](https://github.com/laurent22/joplin/issues/869)1) +- Improved: Refactor note list in preparation for plugin support ([#862](https://github.com/laurent22/joplin/issues/862)4) - Improved: Updated packages markdown-it-multimd-table (v4.2.3), re-resizable (v6.9.11), react, react-redux (v8.1.2), sass (v1.64.2), sharp (v0.32.5), word-wrap (v1.2.5) - Fixed: Fix note editor blank after syncing an encrypted note with remote changes ([#8666](https://github.com/laurent22/joplin/issues/8666)) ([#8661](https://github.com/laurent22/joplin/issues/8661) by Henry Heino) -- Fixed: Hide option to share a notebook when it is not available ([#8844](https://github.com/laurent22/joplin/issues/8844)) -- Fixed: Prevent application from being stuck when importing an invalid ENEX file ([#8699](https://github.com/laurent22/joplin/issues/8699)) +- Fixed: Hide option to share a notebook when it is not available ([#884](https://github.com/laurent22/joplin/issues/884)4) +- Fixed: Prevent application from being stuck when importing an invalid ENEX file ([#869](https://github.com/laurent22/joplin/issues/869)9) - Fixed: Rich Text editor toolbar doesn't show all buttons even when there's enough space ([#8754](https://github.com/laurent22/joplin/issues/8754)) ([#8726](https://github.com/laurent22/joplin/issues/8726) by [@hubert](https://github.com/hubert)) - Fixed: Update CSS variables in user iframes on theme change ([#8724](https://github.com/laurent22/joplin/issues/8724)) ([#8723](https://github.com/laurent22/joplin/issues/8723) by Henry Heino) @@ -79,7 +79,7 @@ ## [v2.12.15](https://github.com/laurent22/joplin/releases/tag/v2.12.15) - 2023-08-27T11:35:39Z -- Fixed: Pasting a resource in Rich Text editor breaks the resource link ([#8706](https://github.com/laurent22/joplin/issues/8706)) +- Fixed: Pasting a resource in Rich Text editor breaks the resource link ([#870](https://github.com/laurent22/joplin/issues/870)6) - Fixed: Handling of macOS ARM-64 version **Note:** This release does **not** support Windows 7, 8, or 8.1. See [the release notes for version 2.12.7](https://github.com/laurent22/joplin/releases/tag/v2.12.7). @@ -90,10 +90,10 @@ - Improved: Fetch release info from Joplin server ([f0c1042](https://github.com/laurent22/joplin/commit/f0c1042)) - Improved: Link to FAQ when encryption password may have been reset by an update ([#8667](https://github.com/laurent22/joplin/issues/8667)) ([#8493](https://github.com/laurent22/joplin/issues/8493) by Henry Heino) - Improved: Show missing sync password warning and link to FAQ ([#8644](https://github.com/laurent22/joplin/issues/8644)) ([#8625](https://github.com/laurent22/joplin/issues/8625) by Henry Heino) -- Improved: Temporarily revert to AES-128 as encryption method due to severe performance issues ([#8657](https://github.com/laurent22/joplin/issues/8657)) +- Improved: Temporarily revert to AES-128 as encryption method due to severe performance issues ([#865](https://github.com/laurent22/joplin/issues/865)7) - Improved: Add an option to disable the image resizing prompt ([#8575](https://github.com/laurent22/joplin/issues/8575)) ([#8566](https://github.com/laurent22/joplin/issues/8566) by [@hubert](https://github.com/hubert)) - Improved: Always show reencrypt button ([#8555](https://github.com/laurent22/joplin/issues/8555)) ([#8380](https://github.com/laurent22/joplin/issues/8380) by Henry Heino) -- Improved: Auto-update to ARM64 version on Apple M1 hardware ([#8467](https://github.com/laurent22/joplin/issues/8467)) +- Improved: Auto-update to ARM64 version on Apple M1 hardware ([#846](https://github.com/laurent22/joplin/issues/846)7) - Improved: Improved sharing error handling ([95ca89b](https://github.com/laurent22/joplin/commit/95ca89b)) - Improved: Sync 15 seconds after changing a note ([807384c](https://github.com/laurent22/joplin/commit/807384c)) - Improved: Updated packages @rmp135/sql-ts (v1.18.0), buildTools, glob (v10.3.3), react-select (v5.7.4), sharp (v0.32.3), word-wrap (v1.2.4) @@ -107,28 +107,28 @@ - Improved: Updated packages gettext-parser (v7.0.1), react-redux (v8.1.1) - Fixed: [#8370](https://github.com/laurent22/joplin/issues/8370): Fix note drag-drop into markdown editor ([#8571](https://github.com/laurent22/joplin/issues/8571)) ([#8370](https://github.com/laurent22/joplin/issues/8370) by Henry Heino) - Fixed: Fix CodeMirror context menu not containing correct items ([#8543](https://github.com/laurent22/joplin/issues/8543)) ([#8535](https://github.com/laurent22/joplin/issues/8535) by Henry Heino) -- Fixed: Note imported from Web Clipper is broken after being saved from the Rich Text editor ([#8485](https://github.com/laurent22/joplin/issues/8485)) +- Fixed: Note imported from Web Clipper is broken after being saved from the Rich Text editor ([#848](https://github.com/laurent22/joplin/issues/848)5) - Fixed: Preserve empty newlines created by pressing Enter repeatedly in the rich text editor ([#8549](https://github.com/laurent22/joplin/issues/8549)) ([#6055](https://github.com/laurent22/joplin/issues/6055) by Henry Heino) -- Fixed: Text that is pasted in Rich Text editor had extra new lines ([#8476](https://github.com/laurent22/joplin/issues/8476)) +- Fixed: Text that is pasted in Rich Text editor had extra new lines ([#847](https://github.com/laurent22/joplin/issues/847)6) - Fixed: Upgrade to electron 25.3.1 ([#8550](https://github.com/laurent22/joplin/issues/8550)) ([#8535](https://github.com/laurent22/joplin/issues/8535) by Henry Heino) - Security: Fix XSS: Sanitize HTML pasted into the rich text editor. ## [v2.12.9](https://github.com/laurent22/joplin/releases/tag/v2.12.9) (Pre-release) - 2023-07-25T16:06:08Z -- New: Add support for Joplin Cloud email to note functionality ([[#8460](https://github.com/laurent22/joplin/issues/8460)](https://github.com/laurent22/joplin/issues/8460) by [@pedr](https://github.com/pedr)) +- New: Add support for Joplin Cloud email to note functionality ([#8460](https://github.com/laurent22/joplin/issues/8460) by [@pedr](https://github.com/pedr)) - New: Enable share permission handling for Joplin Cloud ([c88b6b6](https://github.com/laurent22/joplin/commit/c88b6b6)) - Improved: Rotating log files ([#8376](https://github.com/laurent22/joplin/issues/8376)) ([#5521](https://github.com/laurent22/joplin/issues/5521) by [@hubert](https://github.com/hubert)) -- Improved: Rich text editor: Disable spellcheck in inline code blocks ([[#8532](https://github.com/laurent22/joplin/issues/8532)](https://github.com/laurent22/joplin/issues/8532) by Henry Heino) +- Improved: Rich text editor: Disable spellcheck in inline code blocks ([#8532](https://github.com/laurent22/joplin/issues/8532) by Henry Heino) - Improved: Updated packages dayjs (v1.11.9), jsdom (v22.1.0), react-redux (v8.1.0), sass (v1.63.6), ts-loader (v9.4.4) -- Improved: WebDAV: Show a more descriptive error message when the password is empty ([[#8477](https://github.com/laurent22/joplin/issues/8477)](https://github.com/laurent22/joplin/issues/8477)) ([[#8466](https://github.com/laurent22/joplin/issues/8466)](https://github.com/laurent22/joplin/issues/8466) by Henry Heino) -- Fixed: Add "insert*before" buttons for tables in the rich text editor ([[#8393](https://github.com/laurent22/joplin/issues/8393)](https://github.com/laurent22/joplin/issues/8393)) ([[#8382](https://github.com/laurent22/joplin/issues/8382)](https://github.com/laurent22/joplin/issues/8382) by [@Marph](https://github.com/Marph)) -- Fixed: Fix Rich Text theme not matching the system theme after several global theme changes ([[#8521](https://github.com/laurent22/joplin/issues/8521)](https://github.com/laurent22/joplin/issues/8521)) ([[#8520](https://github.com/laurent22/joplin/issues/8520)](https://github.com/laurent22/joplin/issues/8520) by Henry Heino) -- Fixed: Make HTML <br/> tags convert to markdown compatible with the softbreaks setting ([[#8469](https://github.com/laurent22/joplin/issues/8469)](https://github.com/laurent22/joplin/issues/8469)) ([[#8430](https://github.com/laurent22/joplin/issues/8430)](https://github.com/laurent22/joplin/issues/8430) by Henry Heino) -- Fixed: Merge changes from upstream turndown project ([[#8468](https://github.com/laurent22/joplin/issues/8468)](https://github.com/laurent22/joplin/issues/8468)) ([[#8448](https://github.com/laurent22/joplin/issues/8448)](https://github.com/laurent22/joplin/issues/8448) by Henry Heino) -- Fixed: Rich text editor: Use fewer ` `s in markdown while still preserving initial paragraph indentation ([[#8529](https://github.com/laurent22/joplin/issues/8529)](https://github.com/laurent22/joplin/issues/8529)) ([[#8530](https://github.com/laurent22/joplin/issues/8530)](https://github.com/laurent22/joplin/issues/8530) by Henry Heino) -- Fixed: Support plugin toolbar icons in the Rich Text editor toolbar ([[#8519](https://github.com/laurent22/joplin/issues/8519)](https://github.com/laurent22/joplin/issues/8519)) ([[#8504](https://github.com/laurent22/joplin/issues/8504)](https://github.com/laurent22/joplin/issues/8504) by Henry Heino) -- Security: Fix XSS: Sanitize rendered output in safe mode ([[#8507](https://github.com/laurent22/joplin/issues/8507)](https://github.com/laurent22/joplin/issues/8507) by Henry Heino) -- Security: Close root electron window before unload: Prevent top-level redirection ([[#8478](https://github.com/laurent22/joplin/issues/8478)](https://github.com/laurent22/joplin/issues/8478) by Henry Heino) +- Improved: WebDAV: Show a more descriptive error message when the password is empty ([#8477](https://github.com/laurent22/joplin/issues/8477)) ([#8466](https://github.com/laurent22/joplin/issues/8466) by Henry Heino) +- Fixed: Add "insert*before" buttons for tables in the rich text editor ([#8393](https://github.com/laurent22/joplin/issues/8393)) ([#8382](https://github.com/laurent22/joplin/issues/8382) by [@Marph](https://github.com/Marph)) +- Fixed: Fix Rich Text theme not matching the system theme after several global theme changes ([#8521](https://github.com/laurent22/joplin/issues/8521)) ([#8520](https://github.com/laurent22/joplin/issues/8520) by Henry Heino) +- Fixed: Make HTML <br/> tags convert to markdown compatible with the softbreaks setting ([#8469](https://github.com/laurent22/joplin/issues/8469)) ([#8430](https://github.com/laurent22/joplin/issues/8430) by Henry Heino) +- Fixed: Merge changes from upstream turndown project ([#8468](https://github.com/laurent22/joplin/issues/8468)) ([#8448](https://github.com/laurent22/joplin/issues/8448) by Henry Heino) +- Fixed: Rich text editor: Use fewer ` `s in markdown while still preserving initial paragraph indentation ([#8529](https://github.com/laurent22/joplin/issues/8529)) ([#8530](https://github.com/laurent22/joplin/issues/8530) by Henry Heino) +- Fixed: Support plugin toolbar icons in the Rich Text editor toolbar ([#8519](https://github.com/laurent22/joplin/issues/8519)) ([#8504](https://github.com/laurent22/joplin/issues/8504) by Henry Heino) +- Security: Fix XSS: Sanitize rendered output in safe mode ([#8507](https://github.com/laurent22/joplin/issues/8507) by Henry Heino) +- Security: Close root electron window before unload: Prevent top-level redirection ([#8478](https://github.com/laurent22/joplin/issues/8478) by Henry Heino) - Security: Disallow map and area tags ([#8479](https://github.com/laurent22/joplin/issues/8479) by Henry Heino) @@ -150,31 +150,31 @@ ## [v2.12.4](https://github.com/laurent22/joplin/releases/tag/v2.12.4) (Pre-release) - 2023-07-07T22:36:53Z -- Improved: Build macOS app as Universal binary ([[#8423](https://github.com/laurent22/joplin/issues/8423)](https://github.com/laurent22/joplin/issues/8423)) ([[#6052](https://github.com/laurent22/joplin/issues/6052)](https://github.com/laurent22/joplin/issues/6052)) +- Improved: Build macOS app as Universal binary ([#8423](https://github.com/laurent22/joplin/issues/8423)) ([#6052](https://github.com/laurent22/joplin/issues/6052)) ## [v2.12.3](https://github.com/laurent22/joplin/releases/tag/v2.12.3) (Pre-release) - 2023-07-07T10:16:55Z -- Improved: Build macOS app as Universal binary ([#8423](https://github.com/laurent22/joplin/issues/8423)) ([#6052](https://github.com/laurent22/joplin/issues/6052)) +- Improved: Build macOS app as Universal binary ([#8423](https://github.com/laurent22/joplin/issues/8423)) ([#605](https://github.com/laurent22/joplin/issues/605)2) - Improved: Updated packages @electron/remote (v2.0.10), @rmp135/sql-ts (v1.17.0), clean-html (v2), glob (v10.2.7) - Fixed: Removing Markdown when using 'Paste as Text' ([#8351](https://github.com/laurent22/joplin/issues/8351)) ([#8317](https://github.com/laurent22/joplin/issues/8317) by [@pedr](https://github.com/pedr)) ## [v2.11.11](https://github.com/laurent22/joplin/releases/tag/v2.11.11) - 2023-06-23T15:16:37Z -- Improved: Add support for plugin user data ([#8312](https://github.com/laurent22/joplin/issues/8312)) ([#8080](https://github.com/laurent22/joplin/issues/8080)) +- Improved: Add support for plugin user data ([#8312](https://github.com/laurent22/joplin/issues/8312)) ([#808](https://github.com/laurent22/joplin/issues/808)0) - Improved: Configure Rich Text editor to handle the first table row as header ([#8163](https://github.com/laurent22/joplin/issues/8163)) ([#3535](https://github.com/laurent22/joplin/issues/3535) by [@Marph](https://github.com/Marph)) - Improved: Updated packages css-loader (v6.7.4), dayjs (v1.11.8), domhandler (v5), domutils (v3.1.0), highlight.js (v11.8.0), react-redux (v8.0.7), style-loader (v3.3.3), styled-components (v5.3.11), ts-loader (v9.4.3) -- Improved: Upgrade E2EE encryption method to AES-256 ([#7686](https://github.com/laurent22/joplin/issues/7686)) -- Fixed: Allow certain HTML anchor tags ([#8286](https://github.com/laurent22/joplin/issues/8286)) -- Fixed: Display plugin console in dev mode ([#8210](https://github.com/laurent22/joplin/issues/8210)) -- Fixed: Duplicated published notes retain the published note's label's color ([#8287](https://github.com/laurent22/joplin/issues/8287)) -- Fixed: Include more Rich Text editor commands in the menu ([#8316](https://github.com/laurent22/joplin/issues/8316)) +- Improved: Upgrade E2EE encryption method to AES-256 ([#768](https://github.com/laurent22/joplin/issues/768)6) +- Fixed: Allow certain HTML anchor tags ([#828](https://github.com/laurent22/joplin/issues/828)6) +- Fixed: Display plugin console in dev mode ([#821](https://github.com/laurent22/joplin/issues/821)0) +- Fixed: Duplicated published notes retain the published note's label's color ([#828](https://github.com/laurent22/joplin/issues/828)7) +- Fixed: Include more Rich Text editor commands in the menu ([#831](https://github.com/laurent22/joplin/issues/831)6) - Security: Prevent XSS when passing specially encoded string to a link (PoC by lin@UCCU Hacker) ([57b4198](https://github.com/laurent22/joplin/commit/57b4198)) - Security: Prevent calling arbitrary commands via x-callback-url (PoC by lin@UCCU Hacker) ([6982661](https://github.com/laurent22/joplin/commit/6982661)) ## [v2.11.9](https://github.com/laurent22/joplin/releases/tag/v2.11.9) (Pre-release) - 2023-06-06T16:23:27Z -- Improved: Add support for AVIF image format ([#8175](https://github.com/laurent22/joplin/issues/8175)) -- Improved: Improved word count when em-dash is used ([#8083](https://github.com/laurent22/joplin/issues/8083)) +- Improved: Add support for AVIF image format ([#817](https://github.com/laurent22/joplin/issues/817)5) +- Improved: Improved word count when em-dash is used ([#808](https://github.com/laurent22/joplin/issues/808)3) - Improved: Fix white screen issue ([8b578c5](https://github.com/laurent22/joplin/commit/8b578c5)) - Improved: Updated packages aws, buildTools, tar (v6.1.15) - Fixed: "New note" buttons so large they occlude Search ([#8249](https://github.com/laurent22/joplin/issues/8249)) ([#8159](https://github.com/laurent22/joplin/issues/8159) by Rio Sinnott) @@ -183,14 +183,14 @@ - Improved: When resetting the master password, also create a new master key with that password ([e647775](https://github.com/laurent22/joplin/commit/e647775)) - Fixed: Don't display "obsolete encryption method" message if the key is disabled ([#8025](https://github.com/laurent22/joplin/issues/8025)) ([#7933](https://github.com/laurent22/joplin/issues/7933) by [@gitstart](https://github.com/gitstart)) -- Fixed: Improve selection of active E2EE key ([#8254](https://github.com/laurent22/joplin/issues/8254)) +- Fixed: Improve selection of active E2EE key ([#825](https://github.com/laurent22/joplin/issues/825)4) - Fixed: Improve sidebar workaround for Linux w/Intel GPU ([#8126](https://github.com/laurent22/joplin/issues/8126)) ([#7506](https://github.com/laurent22/joplin/issues/7506) by Calum Lind) - Fixed: Preserve Table Alignment When Editing a Note With the Rich Text Editor ([#8214](https://github.com/laurent22/joplin/issues/8214)) ([#6431](https://github.com/laurent22/joplin/issues/6431) by Christopher O'Toole) ## [v2.11.5](https://github.com/laurent22/joplin/releases/tag/v2.11.5) (Pre-release) - 2023-05-28T00:41:40Z - Improved: Updated packages jsdom (v21.1.2), markdown-it-multimd-table (v4.2.2), react-select (v5.7.3), sass (v1.62.1), sharp (v0.32.1), tar (v6.1.14), yargs (v17.7.2) -- Fixed: Fix slow startup time ([#8087](https://github.com/laurent22/joplin/issues/8087)) +- Fixed: Fix slow startup time ([#808](https://github.com/laurent22/joplin/issues/808)7) - Security: Disable SVG tag support in editor to prevent XSS ([caf6606](https://github.com/laurent22/joplin/commit/caf6606)) (Vulnerability discovered by [RyotaK](https://ryotak.net/)) - Security: Prevent XSS by sanitizing certain HTML attributes ([9e90d90](https://github.com/laurent22/joplin/commit/9e90d90)) (Vulnerability discovered by [RyotaK](https://ryotak.net/)) @@ -202,30 +202,30 @@ ## [v2.11.4](https://github.com/laurent22/joplin/releases/tag/v2.11.4) (Pre-release) - 2023-05-16T10:02:21Z -- Fixed: Fix slow startup time ([#8087](https://github.com/laurent22/joplin/issues/8087)) +- Fixed: Fix slow startup time ([#808](https://github.com/laurent22/joplin/issues/808)7) ## [v2.11.3](https://github.com/laurent22/joplin/releases/tag/v2.11.3) (Pre-release) - 2023-05-16T09:09:57Z - Improved: Add support for `--safe-mode` command line flag ([#7919](https://github.com/laurent22/joplin/issues/7919)) ([#7889](https://github.com/laurent22/joplin/issues/7889) by Arun Kumar) - Improved: Added export graph button for Mermaid ([#7958](https://github.com/laurent22/joplin/issues/7958)) ([#6101](https://github.com/laurent22/joplin/issues/6101) by Arun Kumar) - Improved: Auto-detect locale on startup ([052a829](https://github.com/laurent22/joplin/commit/052a829)) -- Improved: Cache code blocks in notes to speed up rendering ([#7867](https://github.com/laurent22/joplin/issues/7867)) +- Improved: Cache code blocks in notes to speed up rendering ([#786](https://github.com/laurent22/joplin/issues/786)7) - Improved: Compress installer to reduce size ([#8068](https://github.com/laurent22/joplin/issues/8068)) ([#8028](https://github.com/laurent22/joplin/issues/8028) by Arun Kumar) - Improved: Improved handling of items with duplicate IDs ([a0b707c](https://github.com/laurent22/joplin/commit/a0b707c)) -- Improved: Remove custom PDF viewer to reduce application size ([#8028](https://github.com/laurent22/joplin/issues/8028)) -- Improved: Translate Welcome notes ([#8154](https://github.com/laurent22/joplin/issues/8154)) +- Improved: Remove custom PDF viewer to reduce application size ([#802](https://github.com/laurent22/joplin/issues/802)8) +- Improved: Translate Welcome notes ([#815](https://github.com/laurent22/joplin/issues/815)4) - Improved: Updated packages aws, fs-extra (v11.1.1), jsdom (v21.1.1), markdown-it-multimd-table (v4.2.1), nanoid (v3.3.6), node-persist (v3.1.3), react-select (v5.7.2), reselect (v4.1.8), sass (v1.60.0), sharp (v0.32.0), sqlite3 (v5.1.6), style-loader (v3.3.2), styled-components (v5.3.9), turndown (v7.1.2), yargs (v17.7.1) -- Fixed: Application cannot be installed on Windows 10 in some cases ([#8149](https://github.com/laurent22/joplin/issues/8149)) +- Fixed: Application cannot be installed on Windows 10 in some cases ([#814](https://github.com/laurent22/joplin/issues/814)9) - Fixed: Do not allow update for plugins incompatible with current version ([#7936](https://github.com/laurent22/joplin/issues/7936)) ([#4801](https://github.com/laurent22/joplin/issues/4801) by [@julien](https://github.com/julien)) - Fixed: Encode the non-ASCII characters in OneDrive URI ([#7868](https://github.com/laurent22/joplin/issues/7868)) ([#7851](https://github.com/laurent22/joplin/issues/7851) by Self Not Found) -- Fixed: Enter Key No Longer Saves and Closes The Tag Dialog ([#8072](https://github.com/laurent22/joplin/issues/8072)) +- Fixed: Enter Key No Longer Saves and Closes The Tag Dialog ([#807](https://github.com/laurent22/joplin/issues/807)2) - Fixed: Fix OneDrive sync attempting to call method on `null` variable ([#7987](https://github.com/laurent22/joplin/issues/7987)) ([#7986](https://github.com/laurent22/joplin/issues/7986) by Henry Heino) - Fixed: Fix issue where search bar can randomly lose focus while searching ([489d677](https://github.com/laurent22/joplin/commit/489d677)) - Fixed: Fix note list blank space display problems ([#7888](https://github.com/laurent22/joplin/issues/7888)) ([#4124](https://github.com/laurent22/joplin/issues/4124) by Arun Kumar) - Fixed: Fixed Linux tag display issues ([#8002](https://github.com/laurent22/joplin/issues/8002)) ([#8000](https://github.com/laurent22/joplin/issues/8000) by Arun Kumar) - Fixed: Fixed icon when note is dragged across notebooks ([#7924](https://github.com/laurent22/joplin/issues/7924)) ([#7881](https://github.com/laurent22/joplin/issues/7881) by Arun Kumar) - Fixed: Fixed issue with text disappearing within plugin-created zones when searching for text ([0c8de68](https://github.com/laurent22/joplin/commit/0c8de68)) -- Fixed: Fixes crash when using multiple profiles along with certain plugins ([#8143](https://github.com/laurent22/joplin/issues/8143)) +- Fixed: Fixes crash when using multiple profiles along with certain plugins ([#814](https://github.com/laurent22/joplin/issues/814)3) - Fixed: Removed `MasterKey` from Sync Status report ([#8026](https://github.com/laurent22/joplin/issues/8026)) ([#7940](https://github.com/laurent22/joplin/issues/7940) by Arun Kumar) - Fixed: Skip the resources which haven't been downloaded yet when exporting ([#7843](https://github.com/laurent22/joplin/issues/7843)) ([#7831](https://github.com/laurent22/joplin/issues/7831) by Self Not Found) - Fixed: With Custom Sort, new notes appear at bottom and later randomly "pop" to the top ([#7765](https://github.com/laurent22/joplin/issues/7765)) ([#7741](https://github.com/laurent22/joplin/issues/7741) by Tao Klerks) @@ -234,12 +234,12 @@ ## [v2.10.18](https://github.com/laurent22/joplin/releases/tag/v2.10.18) - 2023-05-09T13:27:43Z -- Fixed: Application cannot be installed on Windows 10 in some cases ([#8149](https://github.com/laurent22/joplin/issues/8149)) +- Fixed: Application cannot be installed on Windows 10 in some cases ([#814](https://github.com/laurent22/joplin/issues/814)9) ## [v2.10.17](https://github.com/laurent22/joplin/releases/tag/v2.10.17) - 2023-05-08T17:27:28Z -- Fixed: Enter Key No Longer Saves and Closes The Tag Dialog ([#8072](https://github.com/laurent22/joplin/issues/8072)) -- Fixed: Fixes crash when using multiple profiles along with certain plugins ([#8143](https://github.com/laurent22/joplin/issues/8143)) +- Fixed: Enter Key No Longer Saves and Closes The Tag Dialog ([#807](https://github.com/laurent22/joplin/issues/807)2) +- Fixed: Fixes crash when using multiple profiles along with certain plugins ([#814](https://github.com/laurent22/joplin/issues/814)3) ## [v2.10.16](https://github.com/laurent22/joplin/releases/tag/v2.10.16) - 2023-04-27T09:27:45Z @@ -247,8 +247,8 @@ ## [v2.10.15](https://github.com/laurent22/joplin/releases/tag/v2.10.15) (Pre-release) - 2023-04-26T22:02:16Z -- Improved: Remove custom PDF viewer to reduce application size ([#8028](https://github.com/laurent22/joplin/issues/8028)) -- Improved: Compress installer to reduce size ([#8068](https://github.com/laurent22/joplin/issues/8068)) ([#8028](https://github.com/laurent22/joplin/issues/8028)) +- Improved: Remove custom PDF viewer to reduce application size ([#802](https://github.com/laurent22/joplin/issues/802)8) +- Improved: Compress installer to reduce size ([#8068](https://github.com/laurent22/joplin/issues/8068)) ([#802](https://github.com/laurent22/joplin/issues/802)8) ## [v2.10.13](https://github.com/laurent22/joplin/releases/tag/v2.10.13) (Pre-release) - 2023-04-03T16:53:46Z @@ -296,14 +296,14 @@ - New: Add 'Paste as text' to the Context menu of the Rich Text Editor ([#7769](https://github.com/laurent22/joplin/issues/7769) by [@pedr](https://github.com/pedr)) - New: Add a menu option to reset the application layout ([#7786](https://github.com/laurent22/joplin/issues/7786) by [@pedr](https://github.com/pedr)) - Improved: Allow 'Paste as Text' on the Rich Text Editor ([#7751](https://github.com/laurent22/joplin/issues/7751) by [@pedr](https://github.com/pedr)) -- Improved: Disable custom PDF viewer by default ([#7506](https://github.com/laurent22/joplin/issues/7506)) +- Improved: Disable custom PDF viewer by default ([#750](https://github.com/laurent22/joplin/issues/750)6) - Improved: Fix copy text with no selection ([#7641](https://github.com/laurent22/joplin/issues/7641)) ([#7602](https://github.com/laurent22/joplin/issues/7602) by Betty Alagwu) - Improved: Improve dialogue spacing in Fountain renderer ([#7628](https://github.com/laurent22/joplin/issues/7628)) ([#7627](https://github.com/laurent22/joplin/issues/7627) by [@Elleo](https://github.com/Elleo)) - Improved: New design for "New note" and "New todo" buttons ([#7780](https://github.com/laurent22/joplin/issues/7780) by [@julien](https://github.com/julien)) - Improved: Remove auto-matching for greater than character ([#7669](https://github.com/laurent22/joplin/issues/7669) by Self Not Found) - Improved: Show installed plugins in Help - About Joplin ([#7711](https://github.com/laurent22/joplin/issues/7711)) ([#6143](https://github.com/laurent22/joplin/issues/6143) by [@julien](https://github.com/julien)) - Fixed: App freezes and displays fatal error when text provided in the search bar is too long ([#7764](https://github.com/laurent22/joplin/issues/7764)) ([#7634](https://github.com/laurent22/joplin/issues/7634) by [@pedr](https://github.com/pedr)) -- Fixed: Certain plugins could create invalid settings, which could result in a crash ([#7621](https://github.com/laurent22/joplin/issues/7621)) +- Fixed: Certain plugins could create invalid settings, which could result in a crash ([#762](https://github.com/laurent22/joplin/issues/762)1) - Fixed: Clicking on Save saves changes when updating a link ([#7753](https://github.com/laurent22/joplin/issues/7753)) ([#7658](https://github.com/laurent22/joplin/issues/7658) by [@julien](https://github.com/julien)) - Fixed: Ctrl-X behaviour when no text is selected ([#7778](https://github.com/laurent22/joplin/issues/7778)) ([#7662](https://github.com/laurent22/joplin/issues/7662) by [@melsonic](https://github.com/melsonic)) - Fixed: Custom sort order not synchronized ([#7729](https://github.com/laurent22/joplin/issues/7729)) ([#6956](https://github.com/laurent22/joplin/issues/6956) by Tao Klerks) @@ -312,38 +312,38 @@ - Fixed: Fix text editor text highlighting when used with special IME methods ([#7630](https://github.com/laurent22/joplin/issues/7630)) ([#7565](https://github.com/laurent22/joplin/issues/7565) by [@light](https://github.com/light)) - Fixed: Markdown editor not surrounding highlighted text with backticks ([#7697](https://github.com/laurent22/joplin/issues/7697)) ([#7694](https://github.com/laurent22/joplin/issues/7694) by Helmut K. C. Tessarek) - Fixed: Mermaid images are incorrectly sized when exported as PNG ([#7546](https://github.com/laurent22/joplin/issues/7546)) ([#7521](https://github.com/laurent22/joplin/issues/7521) by Adarsh Singh) -- Fixed: Note editor scrolls back to top when editing certain notes ([#7617](https://github.com/laurent22/joplin/issues/7617)) +- Fixed: Note editor scrolls back to top when editing certain notes ([#761](https://github.com/laurent22/joplin/issues/761)7) ## [v2.10.5](https://github.com/laurent22/joplin/releases/tag/v2.10.5) - 2023-01-16T15:00:53Z - Fixed: Api: Fixes [#6862](https://github.com/laurent22/joplin/issues/6862) set todo related fields when adding or changing a todo ([#7395](https://github.com/laurent22/joplin/issues/7395) by [@Wartijn](https://github.com/Wartijn)) -- Fixed: Fixed crash when loading certain plugins ([#7598](https://github.com/laurent22/joplin/issues/7598)) +- Fixed: Fixed crash when loading certain plugins ([#759](https://github.com/laurent22/joplin/issues/759)8) - Fixed: Fixes crash when changing note time from properties dialog ([6b9a270](https://github.com/laurent22/joplin/commit/6b9a270)) -- Fixed: Hyperlink insertion no longer works in Markdown editor ([#7605](https://github.com/laurent22/joplin/issues/7605)) -- Fixed: Optimise sidebar rendering speed ([#7610](https://github.com/laurent22/joplin/issues/7610)) +- Fixed: Hyperlink insertion no longer works in Markdown editor ([#760](https://github.com/laurent22/joplin/issues/760)5) +- Fixed: Optimise sidebar rendering speed ([#761](https://github.com/laurent22/joplin/issues/761)0) - Fixed: Try to replace the external link with internal link when attachment file is pasted in Markdown editor ([#6865](https://github.com/laurent22/joplin/issues/6865)) ([#6211](https://github.com/laurent22/joplin/issues/6211) by Self Not Found) ## [v2.10.4](https://github.com/laurent22/joplin/releases/tag/v2.10.4) (Pre-release) - 2023-01-05T13:09:20Z - Fixed: Fixed certain plugins that were using the sqlite3 database ([a43ce33](https://github.com/laurent22/joplin/commit/a43ce33)) -- Fixed: Plugin API DirectoryPath edit problems when path contain spaces ([#7018](https://github.com/laurent22/joplin/issues/7018)) +- Fixed: Plugin API DirectoryPath edit problems when path contain spaces ([#701](https://github.com/laurent22/joplin/issues/701)8) ## [v2.10.3](https://github.com/laurent22/joplin/releases/tag/v2.10.3) (Pre-release) - 2022-12-31T15:53:23Z - Improved: Resolve [#6254](https://github.com/laurent22/joplin/issues/6254): <details> elements remain closed when exporting to PDF ([#7515](https://github.com/laurent22/joplin/issues/7515)) ([#6254](https://github.com/laurent22/joplin/issues/6254) by Hitarth Thummar) - Improved: Switch license to AGPL-3.0 ([faf0a4e](https://github.com/laurent22/joplin/commit/faf0a4e)) -- Fixed: Fixed crash when closing PDF ([#7528](https://github.com/laurent22/joplin/issues/7528)) +- Fixed: Fixed crash when closing PDF ([#752](https://github.com/laurent22/joplin/issues/752)8) - Fixed: Fixes import of tasklists from enex files ([#7344](https://github.com/laurent22/joplin/issues/7344)) ([#7329](https://github.com/laurent22/joplin/issues/7329) by [@Wartijn](https://github.com/Wartijn)) -- Fixed: Press Enter to select a tag ([#7493](https://github.com/laurent22/joplin/issues/7493)) +- Fixed: Press Enter to select a tag ([#749](https://github.com/laurent22/joplin/issues/749)3) - Fixed: Profile paths that contain special characters can break note rendering ([#7449](https://github.com/laurent22/joplin/issues/7449)) ([#7434](https://github.com/laurent22/joplin/issues/7434) by [@Wartijn](https://github.com/Wartijn)) -- Fixed: Random crash when searching ([#7499](https://github.com/laurent22/joplin/issues/7499)) +- Fixed: Random crash when searching ([#749](https://github.com/laurent22/joplin/issues/749)9) - Fixed: Search field doesn't get focus when pressing Ctrl+F ([#7529](https://github.com/laurent22/joplin/issues/7529)) ([#7520](https://github.com/laurent22/joplin/issues/7520) by Betty Alagwu) ## [v2.10.2](https://github.com/laurent22/joplin/releases/tag/v2.10.2) (Pre-release) - 2022-12-18T18:05:08Z - Improved: Update Mermaid: 9.1.7 to 9.2.2 ([#7330](https://github.com/laurent22/joplin/issues/7330) by Helmut K. C. Tessarek) - Fixed: Fix pasting plain text ([#7045](https://github.com/laurent22/joplin/issues/7045)) ([#7036](https://github.com/laurent22/joplin/issues/7036) by Self Not Found) -- Fixed: Open callback URLs from within the application ([#7354](https://github.com/laurent22/joplin/issues/7354)) +- Fixed: Open callback URLs from within the application ([#735](https://github.com/laurent22/joplin/issues/735)4) ## [v2.9.17](https://github.com/laurent22/joplin/releases/tag/v2.9.17) - 2022-11-15T10:28:37Z @@ -352,7 +352,7 @@ ## [v2.9.12](https://github.com/laurent22/joplin/releases/tag/v2.9.12) (Pre-release) - 2022-11-01T17:06:05Z -- Improved: Display the plugin name in dialog boxes created by plugins ([#6979](https://github.com/laurent22/joplin/issues/6979)) +- Improved: Display the plugin name in dialog boxes created by plugins ([#697](https://github.com/laurent22/joplin/issues/697)9) - Improved: Regression: Plugin CSS files were no longer being loaded correctly ([99a61f1](https://github.com/laurent22/joplin/commit/99a61f1)) - Improved: Remove unnecessary PDF viewer messages ([db4c6ea](https://github.com/laurent22/joplin/commit/db4c6ea)) - Fixed: Fix exporting resources to md and md + frontmatter ([#6768](https://github.com/laurent22/joplin/issues/6768)) ([#6721](https://github.com/laurent22/joplin/issues/6721) by [@SFulpius](https://github.com/SFulpius)) @@ -363,7 +363,7 @@ ## [v2.9.11](https://github.com/laurent22/joplin/releases/tag/v2.9.11) (Pre-release) - 2022-10-23T16:09:58Z - New: Add PDF full screen viewer ([#6821](https://github.com/laurent22/joplin/issues/6821) by [@asrient](https://github.com/asrient)) -- New: Add support for multi-language spell check ([#6617](https://github.com/laurent22/joplin/issues/6617)) +- New: Add support for multi-language spell check ([#661](https://github.com/laurent22/joplin/issues/661)7) - New: Add zoom feature on PDF viewer ([#6748](https://github.com/laurent22/joplin/issues/6748) by [@asrient](https://github.com/asrient)) - New: Added PDF viewer options ([#6800](https://github.com/laurent22/joplin/issues/6800) by [@asrient](https://github.com/asrient)) - New: Plugins: Add support for media links in plugin manifest.json ([#6672](https://github.com/laurent22/joplin/issues/6672) by [@Retrove](https://github.com/Retrove)) @@ -373,8 +373,8 @@ - Improved: PDF scroll persistence ([#6747](https://github.com/laurent22/joplin/issues/6747) by [@asrient](https://github.com/asrient)) - Fixed: Avoid reloading loaded plugin scripts ([#6742](https://github.com/laurent22/joplin/issues/6742)) ([#6719](https://github.com/laurent22/joplin/issues/6719) by [@SeptemberHX](https://github.com/SeptemberHX)) - Fixed: Fix resources sync when proxy is set ([#6817](https://github.com/laurent22/joplin/issues/6817)) ([#6688](https://github.com/laurent22/joplin/issues/6688) by Self Not Found) -- Fixed: Fixed file and directory paths in plugin setting dialogs ([#6692](https://github.com/laurent22/joplin/issues/6692)) -- Fixed: Fixed names of imported duplicate notebooks ([#6704](https://github.com/laurent22/joplin/issues/6704)) +- Fixed: Fixed file and directory paths in plugin setting dialogs ([#669](https://github.com/laurent22/joplin/issues/669)2) +- Fixed: Fixed names of imported duplicate notebooks ([#670](https://github.com/laurent22/joplin/issues/670)4) ## [v2.9.4](https://github.com/laurent22/joplin/releases/tag/v2.9.4) (Pre-release) - 2022-08-18T16:52:26Z @@ -388,7 +388,7 @@ - Improved: Allow electron flag to disable smooth scrolling ([#6712](https://github.com/laurent22/joplin/issues/6712) by [@joserebelo](https://github.com/joserebelo)) - Improved: New Embedded Pdf Viewer ([#6681](https://github.com/laurent22/joplin/issues/6681) by [@asrient](https://github.com/asrient)) -- Fixed: Do not encrypt non-owned note if it was not shared encrypted ([#6645](https://github.com/laurent22/joplin/issues/6645)) +- Fixed: Do not encrypt non-owned note if it was not shared encrypted ([#664](https://github.com/laurent22/joplin/issues/664)5) - Fixed: Fixed broken image links ([#6590](https://github.com/laurent22/joplin/issues/6590)) ([#6570](https://github.com/laurent22/joplin/issues/6570) by [@SFulpius](https://github.com/SFulpius)) - Fixed: Play flac files ([#6666](https://github.com/laurent22/joplin/issues/6666)) ([#6434](https://github.com/laurent22/joplin/issues/6434) by [@SFulpius](https://github.com/SFulpius)) @@ -399,9 +399,9 @@ - Improved: Checkbox don't function while checkbox format button hidden from toolbar ([#6567](https://github.com/laurent22/joplin/issues/6567)) ([#6172](https://github.com/laurent22/joplin/issues/6172) by [@SFulpius](https://github.com/SFulpius)) - Improved: Update to Electron 18 ([#6496](https://github.com/laurent22/joplin/issues/6496) by [@alexmo1997](https://github.com/alexmo1997)) - Fixed: Allow styling note list items using custom CSS ([#6542](https://github.com/laurent22/joplin/issues/6542)) ([#5178](https://github.com/laurent22/joplin/issues/5178) by Kenichi Kobayashi) -- Fixed: App can crash with certain combinations of plugins ([#6506](https://github.com/laurent22/joplin/issues/6506)) -- Fixed: Search field focus is stolen on layout change ([#6514](https://github.com/laurent22/joplin/issues/6514)) -- Fixed: Search field would not clear as expected ([#6557](https://github.com/laurent22/joplin/issues/6557)) +- Fixed: App can crash with certain combinations of plugins ([#650](https://github.com/laurent22/joplin/issues/650)6) +- Fixed: Search field focus is stolen on layout change ([#651](https://github.com/laurent22/joplin/issues/651)4) +- Fixed: Search field would not clear as expected ([#655](https://github.com/laurent22/joplin/issues/655)7) - Security: Fixes XSS in GotoAnything dialog (Vulnerability found by [@ly1g3](https://github.com/ly1g3) CVE-2022-35131) ([e797ebb](https://github.com/laurent22/joplin/commit/e797ebb)) ## [v2.8.8](https://github.com/laurent22/joplin/releases/tag/v2.8.8) - 2022-05-17T14:48:06Z @@ -412,8 +412,8 @@ ## [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)) +- Fixed: Make undo/redo menu items translatable ([#643](https://github.com/laurent22/joplin/issues/643)5) +- Fixed: Sync config was lost when switching profiles ([#645](https://github.com/laurent22/joplin/issues/645)9) ## [v2.8.6](https://github.com/laurent22/joplin/releases/tag/v2.8.6) (Pre-release) - 2022-05-03T10:08:25Z @@ -432,20 +432,20 @@ - New: Multi-profiles: Added profile ID in CSS root class so that different profiles can have different styles ([fd9fe5c](https://github.com/laurent22/joplin/commit/fd9fe5c)) - Improved: Enabled plugin throttling logic to prevent certain plugins from freezing the app ([b716755](https://github.com/laurent22/joplin/commit/b716755)) -- Improved: Multi-profiles: Improve performance when switching notes, when multiple plugins are loaded ([#6394](https://github.com/laurent22/joplin/issues/6394)) +- Improved: Multi-profiles: Improve performance when switching notes, when multiple plugins are loaded ([#639](https://github.com/laurent22/joplin/issues/639)4) - Improved: Multi-profiles: Assign an ID to profiles and remove path ([b4a6e17](https://github.com/laurent22/joplin/commit/b4a6e17)) - Improved: Multi-profiles: Automatically restart the app when switching profiles on Linux ([1797e84](https://github.com/laurent22/joplin/commit/1797e84)) - Improved: Multi-profiles: Share UI layout between profiles ([a111531](https://github.com/laurent22/joplin/commit/a111531)) - Improved: Multi-profiles: Share custom CSS between profiles ([0cdef66](https://github.com/laurent22/joplin/commit/0cdef66)) - Improved: Multi-profiles: Share plugins between profiles ([510df43](https://github.com/laurent22/joplin/commit/510df43)) -- Improved: Multi-profiles: Locale was not being preserved when creating a new profile ([#6411](https://github.com/laurent22/joplin/issues/6411)) +- Improved: Multi-profiles: Locale was not being preserved when creating a new profile ([#641](https://github.com/laurent22/joplin/issues/641)1) - Improved: Performance improvement when switching note while plugins are running ([#6409](https://github.com/laurent22/joplin/issues/6409)) ([#5770](https://github.com/laurent22/joplin/issues/5770) by Kenichi Kobayashi) - Fixed: Editor context menu was broken (regression) ([#6422](https://github.com/laurent22/joplin/issues/6422)) ([#6126](https://github.com/laurent22/joplin/issues/6126) by [@asrient](https://github.com/asrient)) -- Fixed: Opening a file with ctrl-click in the editor results in a 'network error' dialogue ([#6145](https://github.com/laurent22/joplin/issues/6145)) +- Fixed: Opening a file with ctrl-click in the editor results in a 'network error' dialogue ([#614](https://github.com/laurent22/joplin/issues/614)5) ## [v2.8.2](https://github.com/laurent22/joplin/releases/tag/v2.8.2) (Pre-release) - 2022-04-14T11:35:45Z -- New: Add support for multiple profiles ([#6385](https://github.com/laurent22/joplin/issues/6385)) ([#591](https://github.com/laurent22/joplin/issues/591)) +- New: Add support for multiple profiles ([#6385](https://github.com/laurent22/joplin/issues/6385)) ([#59](https://github.com/laurent22/joplin/issues/59)1) - New: Allow saving a Mermaid graph as a PNG or SVG via context menu ([#6126](https://github.com/laurent22/joplin/issues/6126)) ([#6100](https://github.com/laurent22/joplin/issues/6100) by [@asrient](https://github.com/asrient)) - New: Support for Joplin Cloud recursive linked notes ([9d9420a](https://github.com/laurent22/joplin/commit/9d9420a)) - Improved: Don’t unpin app from taskbar on update ([#6271](https://github.com/laurent22/joplin/issues/6271)) ([#4155](https://github.com/laurent22/joplin/issues/4155) by Daniel Aleksandersen) @@ -453,8 +453,8 @@ - Improved: Plugins: Add support for "categories" manifest field ([#6109](https://github.com/laurent22/joplin/issues/6109)) ([#5867](https://github.com/laurent22/joplin/issues/5867) by Mayank Bondre) - Improved: Plugins: Allow updating a resource via the data API ([74273cd](https://github.com/laurent22/joplin/commit/74273cd)) - Improved: Automatically start sync after setting the sync parameters ([ff066ba](https://github.com/laurent22/joplin/commit/ff066ba)) -- Improved: Improve E2EE usability when accidentally creating multiple keys ([#6399](https://github.com/laurent22/joplin/issues/6399)) ([#6338](https://github.com/laurent22/joplin/issues/6338)) -- Improved: Improved handling of ENTER and ESCAPE keys in dialogs ([#6194](https://github.com/laurent22/joplin/issues/6194)) +- Improved: Improve E2EE usability when accidentally creating multiple keys ([#6399](https://github.com/laurent22/joplin/issues/6399)) ([#633](https://github.com/laurent22/joplin/issues/633)8) +- Improved: Improved handling of ENTER and ESCAPE keys in dialogs ([#619](https://github.com/laurent22/joplin/issues/619)4) - Fixed: Fixed color of published note on Light theme ([21706fa](https://github.com/laurent22/joplin/commit/21706fa)) - Fixed: Fixed creation of empty notebooks when importing directory of files ([#6274](https://github.com/laurent22/joplin/issues/6274)) ([#6197](https://github.com/laurent22/joplin/issues/6197) by [@Retrove](https://github.com/Retrove)) - Fixed: Fixes right click menu on Markdown Editor ([#6132](https://github.com/laurent22/joplin/issues/6132) by [@bishoy-magdy](https://github.com/bishoy-magdy)) @@ -462,17 +462,17 @@ ## [v2.7.15](https://github.com/laurent22/joplin/releases/tag/v2.7.15) - 2022-03-17T13:03:23Z -- Improved: Handle invalid revision patches ([#6209](https://github.com/laurent22/joplin/issues/6209)) -- Fixed: Clicking on folder button was no longer jumping to the right folder ([#5584](https://github.com/laurent22/joplin/issues/5584)) -- Fixed: Ensure that note revision markup type is set correctly ([#6261](https://github.com/laurent22/joplin/issues/6261)) +- Improved: Handle invalid revision patches ([#620](https://github.com/laurent22/joplin/issues/620)9) +- Fixed: Clicking on folder button was no longer jumping to the right folder ([#558](https://github.com/laurent22/joplin/issues/558)4) +- Fixed: Ensure that note revision markup type is set correctly ([#626](https://github.com/laurent22/joplin/issues/626)1) - Fixed: Fixed Tags Order ([#6136](https://github.com/laurent22/joplin/issues/6136)) ([#5686](https://github.com/laurent22/joplin/issues/5686) by [@OmGole](https://github.com/OmGole)) -- Fixed: Undo and redo on note title did not work in some cases ([#6214](https://github.com/laurent22/joplin/issues/6214)) +- Fixed: Undo and redo on note title did not work in some cases ([#621](https://github.com/laurent22/joplin/issues/621)4) ## [v2.7.14](https://github.com/laurent22/joplin/releases/tag/v2.7.14) - 2022-02-27T11:30:53Z - Improved: Improve error message when revision metadata cannot be decoded, to improve debugging ([a325bf6](https://github.com/laurent22/joplin/commit/a325bf6)) -- Fixed: Prevent certain errors from stopping the revision service ([#5531](https://github.com/laurent22/joplin/issues/5531)) -- Fixed: Note export could fail in some cases (regression) ([#6203](https://github.com/laurent22/joplin/issues/6203)) +- Fixed: Prevent certain errors from stopping the revision service ([#553](https://github.com/laurent22/joplin/issues/553)1) +- Fixed: Note export could fail in some cases (regression) ([#620](https://github.com/laurent22/joplin/issues/620)3) ## [v2.7.13](https://github.com/laurent22/joplin/releases/tag/v2.7.13) - 2022-02-24T17:42:12Z @@ -481,7 +481,7 @@ ## [v2.7.12](https://github.com/laurent22/joplin/releases/tag/v2.7.12) (Pre-release) - 2022-02-14T15:06:14Z -- Fixed: Exported JEX notebook should not contain share metadata ([#6129](https://github.com/laurent22/joplin/issues/6129)) +- Fixed: Exported JEX notebook should not contain share metadata ([#612](https://github.com/laurent22/joplin/issues/612)9) ## [v2.7.11](https://github.com/laurent22/joplin/releases/tag/v2.7.11) (Pre-release) - 2022-02-12T13:00:02Z @@ -493,15 +493,15 @@ Important: If you use custom notebook icons and sync with the mobile app, make sure also install the latest 2.7 mobile app. - New: Add additional time format HH.mm ([#6086](https://github.com/laurent22/joplin/issues/6086) by [@vincentjocodes](https://github.com/vincentjocodes)) -- New: Add support for custom notebook icons ([#6110](https://github.com/laurent22/joplin/issues/6110)) +- New: Add support for custom notebook icons ([#611](https://github.com/laurent22/joplin/issues/611)0) - Improved: Fixed sync scroll issue ([#6059](https://github.com/laurent22/joplin/issues/6059)) ([#5808](https://github.com/laurent22/joplin/issues/5808) by Caleb John) - Improved: Make heading 4, 5 and 6 styling more consistent ([fca5875](https://github.com/laurent22/joplin/commit/fca5875)) - Improved: Update Mermaid 8.13.5 -> 8.13.9 and Katex dependencies ([#6039](https://github.com/laurent22/joplin/issues/6039) by Helmut K. C. Tessarek) - Fixed: Add "Other applications" import menu item ([#6118](https://github.com/laurent22/joplin/issues/6118)) ([#6108](https://github.com/laurent22/joplin/issues/6108) by Helmut K. C. Tessarek) - Fixed: Global search focuses text in notes so that edits overwrite highlighted text ([#6040](https://github.com/laurent22/joplin/issues/6040)) ([#6035](https://github.com/laurent22/joplin/issues/6035) by Caleb John) -- Fixed: Login field was sometimes disabled on Sync Wizard dialog ([#6075](https://github.com/laurent22/joplin/issues/6075)) +- Fixed: Login field was sometimes disabled on Sync Wizard dialog ([#607](https://github.com/laurent22/joplin/issues/607)5) - Fixed: Scroll position is not remembered (regression) ([#6043](https://github.com/laurent22/joplin/issues/6043)) ([#6042](https://github.com/laurent22/joplin/issues/6042) by Kenichi Kobayashi) -- Fixed: Shared resource was not encrypted with correct encryption key ([#6092](https://github.com/laurent22/joplin/issues/6092)) +- Fixed: Shared resource was not encrypted with correct encryption key ([#609](https://github.com/laurent22/joplin/issues/609)2) ## [v2.7.8](https://github.com/laurent22/joplin/releases/tag/v2.7.8) (Pre-release) - 2022-01-19T09:35:27Z @@ -525,14 +525,14 @@ Important: If you use custom notebook icons and sync with the mobile app, make s - Improved: Better handling of bold text to simplify customisation ([#5732](https://github.com/laurent22/joplin/issues/5732) by Hieu-Thi Luong) - Improved: Clickable tags in Tag Bar ([#5956](https://github.com/laurent22/joplin/issues/5956) by Kenichi Kobayashi) - Improved: Do no duplicate resources when duplicating a note ([721d008](https://github.com/laurent22/joplin/commit/721d008)) -- Improved: Expand search field when clicking on search button ([#5893](https://github.com/laurent22/joplin/issues/5893)) +- Improved: Expand search field when clicking on search button ([#589](https://github.com/laurent22/joplin/issues/589)3) - Improved: Focus notebook title when opening Notebook dialog ([3117133](https://github.com/laurent22/joplin/commit/3117133)) -- Improved: Plugins: Throttle plugins that make too many API calls ([#5895](https://github.com/laurent22/joplin/issues/5895)) +- Improved: Plugins: Throttle plugins that make too many API calls ([#589](https://github.com/laurent22/joplin/issues/589)5) - Improved: Prevent Desktop Environments to launch a new window ([#5984](https://github.com/laurent22/joplin/issues/5984) by Felipe Kinoshita) - Improved: Right click on image to copy it to clipboard ([297b992](https://github.com/laurent22/joplin/commit/297b992)) - Improved: Show login prompt for OneDrive ([#5933](https://github.com/laurent22/joplin/issues/5933) by Jonathan Heard) -- Improved: Use same notebook dialog when creating a new notebook too ([#5934](https://github.com/laurent22/joplin/issues/5934)) -- Fixed: Add back text editor commands to Command Palette ([#5707](https://github.com/laurent22/joplin/issues/5707)) +- Improved: Use same notebook dialog when creating a new notebook too ([#593](https://github.com/laurent22/joplin/issues/593)4) +- Fixed: Add back text editor commands to Command Palette ([#570](https://github.com/laurent22/joplin/issues/570)7) - Fixed: Cannot jump if local search count is one ([#5894](https://github.com/laurent22/joplin/issues/5894)) ([#5549](https://github.com/laurent22/joplin/issues/5549) by Kenichi Kobayashi) - Fixed: Editor loses cursor focus when Ctrl+F search is closed ([#5919](https://github.com/laurent22/joplin/issues/5919)) ([#5850](https://github.com/laurent22/joplin/issues/5850) by Kenichi Kobayashi) - Fixed: Fix white space in the bottom of Add Tag Prompt dialog ([#5998](https://github.com/laurent22/joplin/issues/5998) by Krishna Kumar) @@ -545,15 +545,15 @@ Important: If you use custom notebook icons and sync with the mobile app, make s - Fixed: Scroll jumps when images are rendered in Markdown Editor ([#5929](https://github.com/laurent22/joplin/issues/5929)) ([#5918](https://github.com/laurent22/joplin/issues/5918) by Kenichi Kobayashi) - Fixed: Scrolling was out of sync when a Multi Markdown Table was being used ([#5815](https://github.com/laurent22/joplin/issues/5815)) ([#5808](https://github.com/laurent22/joplin/issues/5808) by Caleb John) - Fixed: Show error on sync if S3 region is not set ([#5923](https://github.com/laurent22/joplin/issues/5923)) ([#5875](https://github.com/laurent22/joplin/issues/5875) by [@shinglyu](https://github.com/shinglyu)) -- Fixed: Update menu item labels when the language changes ([#5927](https://github.com/laurent22/joplin/issues/5927)) +- Fixed: Update menu item labels when the language changes ([#592](https://github.com/laurent22/joplin/issues/592)7) - Fixed: Default sort order lost on exit ([#6022](https://github.com/laurent22/joplin/issues/6022)) ([#5968](https://github.com/laurent22/joplin/issues/5968) by Kenichi Kobayashi) - Fixed: Scroll positions are not preserved when layout changes ([#6021](https://github.com/laurent22/joplin/issues/6021)) ([#5981](https://github.com/laurent22/joplin/issues/5981) by Kenichi Kobayashi) -- Security: Fixes [#6004](https://github.com/laurent22/joplin/issues/6004): Prevent XSS in Goto Anything ([#6004](https://github.com/laurent22/joplin/issues/6004)) +- Security: Fixes [#6004](https://github.com/laurent22/joplin/issues/6004): Prevent XSS in Goto Anything ([#600](https://github.com/laurent22/joplin/issues/600)4) ## [v2.6.10](https://github.com/laurent22/joplin/releases/tag/v2.6.10) - 2021-12-19T11:31:16Z -- Fixed: Fixed export of HTML files on Linux ([#5873](https://github.com/laurent22/joplin/issues/5873)) -- Fixed: Fixed exporting notes that contain Mermaid diagrams as PDF or HTML ([#5879](https://github.com/laurent22/joplin/issues/5879)) +- Fixed: Fixed export of HTML files on Linux ([#587](https://github.com/laurent22/joplin/issues/587)3) +- Fixed: Fixed exporting notes that contain Mermaid diagrams as PDF or HTML ([#587](https://github.com/laurent22/joplin/issues/587)9) - Fixed: Markdown search no longer scrolls to result ([#5876](https://github.com/laurent22/joplin/issues/5876)) ([#5872](https://github.com/laurent22/joplin/issues/5872) by Kenichi Kobayashi) ## [v2.6.9](https://github.com/laurent22/joplin/releases/tag/v2.6.9) - 2021-12-17T11:57:32Z @@ -581,11 +581,11 @@ Important: If you use custom notebook icons and sync with the mobile app, make s - Improved: Allow flags for native wayland ([#5804](https://github.com/laurent22/joplin/issues/5804) by [@stephanoskomnenos](https://github.com/stephanoskomnenos)) - Improved: Also duplicate resources when duplicating a note ([c0a8c33](https://github.com/laurent22/joplin/commit/c0a8c33)) - Improved: Improved S3 sync error handling and reliability, and upgraded S3 SDK ([#5312](https://github.com/laurent22/joplin/issues/5312) by Lee Matos) -- Improved: Improved error message when synchronising with Joplin Server ([#5754](https://github.com/laurent22/joplin/issues/5754)) +- Improved: Improved error message when synchronising with Joplin Server ([#575](https://github.com/laurent22/joplin/issues/575)4) - Improved: When exporting as HTML, pack all images, styles and scripts inside the HTML file ([98ed2be](https://github.com/laurent22/joplin/commit/98ed2be)) - Fixed: Fixed sharing notebook when recipient is not allowed to share ([1bb7bbb](https://github.com/laurent22/joplin/commit/1bb7bbb)) -- Fixed: Handle duplicate attachments when the parent notebook is shared ([#5796](https://github.com/laurent22/joplin/issues/5796)) -- Fixed: Opening a file with ctrl and click leads to an error in the Rich Text editor ([#5693](https://github.com/laurent22/joplin/issues/5693)) +- Fixed: Handle duplicate attachments when the parent notebook is shared ([#579](https://github.com/laurent22/joplin/issues/579)6) +- Fixed: Opening a file with ctrl and click leads to an error in the Rich Text editor ([#569](https://github.com/laurent22/joplin/issues/569)3) - Fixed: Rich text editor flashing white when switching notes/editor ([#5793](https://github.com/laurent22/joplin/issues/5793)) ([#5311](https://github.com/laurent22/joplin/issues/5311) by [@CalebJohn](https://github.com/CalebJohn)) - Fixed: Sync wizard is displayed incorrectly in dev mode ([#5749](https://github.com/laurent22/joplin/issues/5749)) ([#5373](https://github.com/laurent22/joplin/issues/5373) by [@Rishabhraghwendra18](https://github.com/Rishabhraghwendra18)) @@ -594,29 +594,29 @@ Important: If you use custom notebook icons and sync with the mobile app, make s - New: Sort Order Buttons and Per-Notebook Sort Order ([#5437](https://github.com/laurent22/joplin/issues/5437) by Kenichi Kobayashi) - New: Added support for notebook icons ([e97bb78](https://github.com/laurent22/joplin/commit/e97bb78)) - New: Implements Sync-Scroll for Markdown Editor and Viewer ([#5512](https://github.com/laurent22/joplin/issues/5512)) ([#2242](https://github.com/laurent22/joplin/issues/2242) by Kenichi Kobayashi) -- New: Add support for encrypted notebooks via Joplin Server ([#5529](https://github.com/laurent22/joplin/issues/5529)) +- New: Add support for encrypted notebooks via Joplin Server ([#552](https://github.com/laurent22/joplin/issues/552)9) - New: Add shortcut for bulleted list ([#5698](https://github.com/laurent22/joplin/issues/5698) by Helmut K. C. Tessarek) -- New: Add support for faster Joplin Server built-in sync locks ([#5662](https://github.com/laurent22/joplin/issues/5662)) +- New: Add support for faster Joplin Server built-in sync locks ([#566](https://github.com/laurent22/joplin/issues/566)2) - New: Add support for more style of highlighted texts when importing ENEX files ([89179c2](https://github.com/laurent22/joplin/commit/89179c2)) - Improved: Allow showing passwords in Master Password dialog ([79d97f2](https://github.com/laurent22/joplin/commit/79d97f2)) - Improved: Fixed and improve laggy scroll in text editor ([#5606](https://github.com/laurent22/joplin/issues/5606)) ([#4827](https://github.com/laurent22/joplin/issues/4827) by Kenichi Kobayashi) - Improved: Improved error message when a file cannot be uploaded or downloaded ([567ba06](https://github.com/laurent22/joplin/commit/567ba06)) -- Improved: Make code blocks horizontally scrollable on note viewer ([#5740](https://github.com/laurent22/joplin/issues/5740)) +- Improved: Make code blocks horizontally scrollable on note viewer ([#574](https://github.com/laurent22/joplin/issues/574)0) - Improved: Plugins: Allow posting messages from plugin to webview ([#5569](https://github.com/laurent22/joplin/issues/5569) by [@agerardin](https://github.com/agerardin)) - Fixed: Currently opened note is not updated after sync (5582) ([#5711](https://github.com/laurent22/joplin/issues/5711)) ([#5582](https://github.com/laurent22/joplin/issues/5582) by Kenichi Kobayashi) - Fixed: Fixed button to upgrade a master key ([725c79d](https://github.com/laurent22/joplin/commit/725c79d)) - Fixed: Fixed issue that could cause application to needlessly lock the sync target ([0de6e9e](https://github.com/laurent22/joplin/commit/0de6e9e)) -- Fixed: Fixed issue with parts of HTML notes not being displayed in some cases ([#5687](https://github.com/laurent22/joplin/issues/5687)) -- Fixed: Long resource filenames were being incorrectly cut ([#5653](https://github.com/laurent22/joplin/issues/5653)) -- Fixed: Message in search box dialog was not readable in dark mode ([#5666](https://github.com/laurent22/joplin/issues/5666)) -- Fixed: OneDrive login screen was not readable in dark mode ([#5726](https://github.com/laurent22/joplin/issues/5726)) -- Fixed: Plugin secure settings would be lost if keychain is not enabled ([#5720](https://github.com/laurent22/joplin/issues/5720)) -- Fixed: Sharing multiple notebooks via Joplin Server with the same user results in an error ([#5721](https://github.com/laurent22/joplin/issues/5721)) -- Fixed: Text was unreadable in dark mode when dropping a note on Rich Text editor ([#5710](https://github.com/laurent22/joplin/issues/5710)) +- Fixed: Fixed issue with parts of HTML notes not being displayed in some cases ([#568](https://github.com/laurent22/joplin/issues/568)7) +- Fixed: Long resource filenames were being incorrectly cut ([#565](https://github.com/laurent22/joplin/issues/565)3) +- Fixed: Message in search box dialog was not readable in dark mode ([#566](https://github.com/laurent22/joplin/issues/566)6) +- Fixed: OneDrive login screen was not readable in dark mode ([#572](https://github.com/laurent22/joplin/issues/572)6) +- Fixed: Plugin secure settings would be lost if keychain is not enabled ([#572](https://github.com/laurent22/joplin/issues/572)0) +- Fixed: Sharing multiple notebooks via Joplin Server with the same user results in an error ([#572](https://github.com/laurent22/joplin/issues/572)1) +- Fixed: Text was unreadable in dark mode when dropping a note on Rich Text editor ([#571](https://github.com/laurent22/joplin/issues/571)0) ## [v2.5.12](https://github.com/laurent22/joplin/releases/tag/v2.5.12) - 2021-11-08T11:07:11Z -- Fixed regression: Long resource filenames were being incorrectly cut when exporting as Markdown ([#5653](https://github.com/laurent22/joplin/issues/5653)) +- Fixed regression: Long resource filenames were being incorrectly cut when exporting as Markdown ([#565](https://github.com/laurent22/joplin/issues/565)3) ## [v2.5.10](https://github.com/laurent22/joplin/releases/tag/v2.5.10) - 2021-11-01T08:22:42Z @@ -625,8 +625,8 @@ Important: If you use custom notebook icons and sync with the mobile app, make s ## [v2.5.8](https://github.com/laurent22/joplin/releases/tag/v2.5.8) - 2021-10-31T11:38:03Z -- Improved: Enable safe mode for Markdown editor too ([#5593](https://github.com/laurent22/joplin/issues/5593)) -- Fixed: Do not render very large code blocks to prevent app from freezing ([#5593](https://github.com/laurent22/joplin/issues/5593)) +- Improved: Enable safe mode for Markdown editor too ([#559](https://github.com/laurent22/joplin/issues/559)3) +- Fixed: Do not render very large code blocks to prevent app from freezing ([#559](https://github.com/laurent22/joplin/issues/559)3) ## [v2.5.7](https://github.com/laurent22/joplin/releases/tag/v2.5.7) (Pre-release) - 2021-10-29T14:47:33Z @@ -642,7 +642,7 @@ Important: If you use custom notebook icons and sync with the mobile app, make s ## [v2.5.4](https://github.com/laurent22/joplin/releases/tag/v2.5.4) (Pre-release) - 2021-10-19T10:10:54Z -- New: Add support for public-private key pairs and improved master password support ([#5438](https://github.com/laurent22/joplin/issues/5438)) +- New: Add support for public-private key pairs and improved master password support ([#543](https://github.com/laurent22/joplin/issues/543)8) - New: Add Markdown + Front Matter exporter/importer ([#5465](https://github.com/laurent22/joplin/issues/5465)) ([#5224](https://github.com/laurent22/joplin/issues/5224) by [@CalebJohn](https://github.com/CalebJohn)) - New: Add support for callback URLs ([#5416](https://github.com/laurent22/joplin/issues/5416)) ([#5168](https://github.com/laurent22/joplin/issues/5168) by Roman Musin) - Improved: Allows a shared notebook recipient to leave the notebook ([7354548](https://github.com/laurent22/joplin/commit/7354548)) @@ -651,14 +651,14 @@ Important: If you use custom notebook icons and sync with the mobile app, make s - Improved: Laggy scrolling in Markdown viewer ([#5496](https://github.com/laurent22/joplin/issues/5496)) ([#4827](https://github.com/laurent22/joplin/issues/4827) by Kenichi Kobayashi) - Improved: Mentioned on share dialog that it may take a few minutes for all notes to appear on the recipient device ([852c6f2](https://github.com/laurent22/joplin/commit/852c6f2)) - Fixed: Bright background around code block insertion dialog in dark mode ([#5491](https://github.com/laurent22/joplin/issues/5491)) ([#5310](https://github.com/laurent22/joplin/issues/5310) by [@Rishabhraghwendra18](https://github.com/Rishabhraghwendra18)) -- Fixed: Certain attachments were not being automatically deleted ([#932](https://github.com/laurent22/joplin/issues/932)) -- Fixed: Exclude disabled commands from Goto Anything ([#5421](https://github.com/laurent22/joplin/issues/5421)) -- Fixed: Fixed running out of memory when importing large ENEX files ([#5543](https://github.com/laurent22/joplin/issues/5543)) +- Fixed: Certain attachments were not being automatically deleted ([#93](https://github.com/laurent22/joplin/issues/93)2) +- Fixed: Exclude disabled commands from Goto Anything ([#542](https://github.com/laurent22/joplin/issues/542)1) +- Fixed: Fixed running out of memory when importing large ENEX files ([#554](https://github.com/laurent22/joplin/issues/554)3) - Fixed: Fixed share dialog button sizes ([1fee83d](https://github.com/laurent22/joplin/commit/1fee83d)) ## [v2.4.12](https://github.com/laurent22/joplin/releases/tag/v2.4.12) - 2021-10-13T17:24:34Z -- Fixed: Fixed running out of memory when importing large ENEX files ([#5543](https://github.com/laurent22/joplin/issues/5543)) +- Fixed: Fixed running out of memory when importing large ENEX files ([#554](https://github.com/laurent22/joplin/issues/554)3) ## [v2.5.1](https://github.com/laurent22/joplin/releases/tag/v2.5.1) (Pre-release) - 2021-10-02T09:51:58Z @@ -674,22 +674,22 @@ Important: If you use custom notebook icons and sync with the mobile app, make s ## [v2.4.8](https://github.com/laurent22/joplin/releases/tag/v2.4.8) (Pre-release) - 2021-09-22T19:01:46Z - Fixed: Fixed Sync Wizard logo images on Windows ([da88475](https://github.com/laurent22/joplin/commit/da88475)) -- Improved: Improved plugin search and installing new plugins from China ([#5161](https://github.com/laurent22/joplin/issues/5161)) +- Improved: Improved plugin search and installing new plugins from China ([#516](https://github.com/laurent22/joplin/issues/516)1) ## [v2.4.7](https://github.com/laurent22/joplin/releases/tag/v2.4.7) (Pre-release) - 2021-09-19T12:53:22Z - New: MacOS: Added Cmd+Backspace shortcut to delete line ([#5478](https://github.com/laurent22/joplin/issues/5478) by Helmut K. C. Tessarek) - Improved: Display 0/0 when no search results are found in editor ([#5360](https://github.com/laurent22/joplin/issues/5360)) ([#5299](https://github.com/laurent22/joplin/issues/5299) by Nikhil Gautam) -- Improved: Do not escape content when copying from Rich Text editor ([#5440](https://github.com/laurent22/joplin/issues/5440)) +- Improved: Do not escape content when copying from Rich Text editor ([#544](https://github.com/laurent22/joplin/issues/544)0) - Improved: Fire resize event whenever the layout changes ([#5344](https://github.com/laurent22/joplin/issues/5344)) ([#5233](https://github.com/laurent22/joplin/issues/5233) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Linux: Installer: properly quote variables ([#5476](https://github.com/laurent22/joplin/issues/5476) by [@a1346054](https://github.com/a1346054)) - Improved: Support for user-data-dir flag ([#5467](https://github.com/laurent22/joplin/issues/5467) by [@Marph](https://github.com/Marph)) - Improved: Sync deleted items first to allow fixing oversized accounts ([43c594b](https://github.com/laurent22/joplin/commit/43c594b)) - Improved: Update Mermaid 8.10.2 -> 8.12.1 and fix gitGraph crash ([#5448](https://github.com/laurent22/joplin/issues/5448)) ([#5295](https://github.com/laurent22/joplin/issues/5295) by Helmut K. C. Tessarek) -- Fixed: Editor max width was not always applied in Rich Text editor ([#5461](https://github.com/laurent22/joplin/issues/5461)) +- Fixed: Editor max width was not always applied in Rich Text editor ([#546](https://github.com/laurent22/joplin/issues/546)1) - Fixed: Misinterpreted search term after filter in quotation marks ([#5445](https://github.com/laurent22/joplin/issues/5445)) ([#5444](https://github.com/laurent22/joplin/issues/5444) by [@JackGruber](https://github.com/JackGruber)) - Fixed: Plugin onNoteSelectionChange() is triggered twice after a search ([#5449](https://github.com/laurent22/joplin/issues/5449)) ([#5447](https://github.com/laurent22/joplin/issues/5447) by Kenichi Kobayashi) -- Fixed: Underline was not applied when using Cmd+U in Rich Text editor ([#5480](https://github.com/laurent22/joplin/issues/5480)) +- Fixed: Underline was not applied when using Cmd+U in Rich Text editor ([#548](https://github.com/laurent22/joplin/issues/548)0) ## [v2.4.6](https://github.com/laurent22/joplin/releases/tag/v2.4.6) (Pre-release) - 2021-09-09T18:57:17Z @@ -700,10 +700,10 @@ Important: If you use custom notebook icons and sync with the mobile app, make s - New: Linux: Add Centos 7 for no sandbox ([#5401](https://github.com/laurent22/joplin/issues/5401) by [@geant44](https://github.com/geant44)) - Improved: Allow disabling any master key, including default or active one ([9407efd](https://github.com/laurent22/joplin/commit/9407efd)) -- Improved: Api: Add support for "events" end point to retrieve info about latest note changes ([#5199](https://github.com/laurent22/joplin/issues/5199)) +- Improved: Api: Add support for "events" end point to retrieve info about latest note changes ([#519](https://github.com/laurent22/joplin/issues/519)9) - Improved: Load themes as CSS variables for use in custom themes and internal components ([478d4ac](https://github.com/laurent22/joplin/commit/478d4ac)) - Improved: Sort plugin results according to recommended property, and display Recommended tag ([d97ba57](https://github.com/laurent22/joplin/commit/d97ba57)) -- Fixed: Handle invalid search index in Goto Anything ([#5417](https://github.com/laurent22/joplin/issues/5417)) +- Fixed: Handle invalid search index in Goto Anything ([#541](https://github.com/laurent22/joplin/issues/541)7) - Fixed: Plugins: Fixed import API ([736bbbd](https://github.com/laurent22/joplin/commit/736bbbd)) ## [v2.4.4](https://github.com/laurent22/joplin/releases/tag/v2.4.4) (Pre-release) - 2021-08-30T16:02:51Z @@ -712,8 +712,8 @@ Important: If you use custom notebook icons and sync with the mobile app, make s ## [v2.4.3](https://github.com/laurent22/joplin/releases/tag/v2.4.3) (Pre-release) - 2021-08-28T15:27:32Z -- Improved: Display link to browse plugins when repository cannot be reached ([#5161](https://github.com/laurent22/joplin/issues/5161)) -- Fixed: Fixed crash when a required master key does not exist ([#5391](https://github.com/laurent22/joplin/issues/5391)) +- Improved: Display link to browse plugins when repository cannot be reached ([#516](https://github.com/laurent22/joplin/issues/516)1) +- Fixed: Fixed crash when a required master key does not exist ([#539](https://github.com/laurent22/joplin/issues/539)1) ## [v2.4.2](https://github.com/laurent22/joplin/releases/tag/v2.4.2) (Pre-release) - 2021-08-27T17:13:21Z @@ -721,8 +721,8 @@ Important: If you use custom notebook icons and sync with the mobile app, make s - Improved: Disable inline code background in vim mode ([#5370](https://github.com/laurent22/joplin/issues/5370)) ([#5364](https://github.com/laurent22/joplin/issues/5364) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Do not display master key upgrade warnings for new master keys ([70efadd](https://github.com/laurent22/joplin/commit/70efadd)) - Improved: Various improvements to Markdown import and export ([#5290](https://github.com/laurent22/joplin/issues/5290) by [@CalebJohn](https://github.com/CalebJohn)) -- Fixed: "Move to notebook" would break with empty input ([#5346](https://github.com/laurent22/joplin/issues/5346)) -- Fixed: Prevent it from crashing with too long search queries ([#5380](https://github.com/laurent22/joplin/issues/5380)) +- Fixed: "Move to notebook" would break with empty input ([#534](https://github.com/laurent22/joplin/issues/534)6) +- Fixed: Prevent it from crashing with too long search queries ([#538](https://github.com/laurent22/joplin/issues/538)0) ## [v2.4.1](https://github.com/laurent22/joplin/releases/tag/v2.4.1) (Pre-release) - 2021-08-21T11:52:30Z @@ -735,21 +735,21 @@ Important: If you use custom notebook icons and sync with the mobile app, make s - Improved: Removes markdown inline code padding ([#5331](https://github.com/laurent22/joplin/issues/5331) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Split code block class in two ([#5359](https://github.com/laurent22/joplin/issues/5359) by [@CalebJohn](https://github.com/CalebJohn)) - Fixed: Add more specific classes for CodeMirror elements ([#5333](https://github.com/laurent22/joplin/issues/5333)) ([#5327](https://github.com/laurent22/joplin/issues/5327) by [@CalebJohn](https://github.com/CalebJohn)) -- Fixed: Fixed file paths when exporting as HTML ([#5325](https://github.com/laurent22/joplin/issues/5325)) -- Fixed: GotoAnything is not working on first try ([#5184](https://github.com/laurent22/joplin/issues/5184)) +- Fixed: Fixed file paths when exporting as HTML ([#532](https://github.com/laurent22/joplin/issues/532)5) +- Fixed: GotoAnything is not working on first try ([#518](https://github.com/laurent22/joplin/issues/518)4) ## [v2.3.5](https://github.com/laurent22/joplin/releases/tag/v2.3.5) - 2021-08-17T06:43:30Z - Improved: Allow setting a max width for the editor content ([8063c94](https://github.com/laurent22/joplin/commit/8063c94)) - Improved: Improved Markdown editor code styling, and add CSS classes for code ([#5314](https://github.com/laurent22/joplin/issues/5314)) ([#5297](https://github.com/laurent22/joplin/issues/5297) by [@CalebJohn](https://github.com/CalebJohn)) - Fixed: Bump hightlight.js to v11.2 ([#5278](https://github.com/laurent22/joplin/issues/5278)) ([#5245](https://github.com/laurent22/joplin/issues/5245) by Roman Musin) -- Fixed (Regression): Fixed file paths when exporting as HTML ([#5325](https://github.com/laurent22/joplin/issues/5325)) +- Fixed (Regression): Fixed file paths when exporting as HTML ([#532](https://github.com/laurent22/joplin/issues/532)5) ## [v2.3.3](https://github.com/laurent22/joplin/releases/tag/v2.3.3) - 2021-08-14T09:19:40Z CAUTION: This release will ask you to upgrade your sync target, whether it's Dropbox, OneDrive, Joplin Cloud, etc. Once it is done, only apps version 2.3+ will be able to sync with it, so make sure you are ready to upgrade all your apps before installing this version. -- Improved: Improved E2EE usability by making its state a property of the sync target ([#5276](https://github.com/laurent22/joplin/issues/5276)) +- Improved: Improved E2EE usability by making its state a property of the sync target ([#527](https://github.com/laurent22/joplin/issues/527)6) ## [v2.2.7](https://github.com/laurent22/joplin/releases/tag/v2.2.7) - 2021-08-11T11:03:26Z @@ -761,7 +761,7 @@ CAUTION: This release will ask you to upgrade your sync target, whether it's Dro - Improved: Fix AWS S3 sync error and upgrade framework to v3 ([#5212](https://github.com/laurent22/joplin/issues/5212)) ([#4810](https://github.com/laurent22/joplin/issues/4810) by Lee Matos) - Improved: Handles OneDrive throttling responses and sets User-Agent based on Microsoft best practices ([#5246](https://github.com/laurent22/joplin/issues/5246)) ([#5244](https://github.com/laurent22/joplin/issues/5244) by [@alec](https://github.com/alec)) - Improved: Plugins: Hide note list menu items for commands that are disabled ([#5270](https://github.com/laurent22/joplin/issues/5270) by [@Ahmad45123](https://github.com/Ahmad45123)) -- Improved: Prevent plugins from crashing the application ([#5273](https://github.com/laurent22/joplin/issues/5273)) +- Improved: Prevent plugins from crashing the application ([#527](https://github.com/laurent22/joplin/issues/527)3) ## [v2.2.5](https://github.com/laurent22/joplin/releases/tag/v2.2.5) (Pre-release) - 2021-08-07T10:35:24Z @@ -775,25 +775,25 @@ IMPORTANT: If you are a plugin developer or if, as a user, you notice a plugin t - New: Plugins: Add support for loading application chrome and note CSS from the plugin ([07d2a60](https://github.com/laurent22/joplin/commit/07d2a60)) - New: Turn old plugin deprecation notices into errors ([7f00e4e](https://github.com/laurent22/joplin/commit/7f00e4e)) - Improved: Converted Clipper notification to a modal dialog that shows up in all screens ([fb9ec10](https://github.com/laurent22/joplin/commit/fb9ec10)) -- Improved: GotoAnything sometimes is not working on first try ([#5184](https://github.com/laurent22/joplin/issues/5184)) -- Improved: Increase space between paragraphs in viewer and Rich Text editor to match Markdown editor ([#5256](https://github.com/laurent22/joplin/issues/5256)) -- Fixed: Disable "Dropped file type is not supported" notification in Rich Text editor ([#5268](https://github.com/laurent22/joplin/issues/5268)) -- Fixed: Do not export share properties ([#5232](https://github.com/laurent22/joplin/issues/5232)) +- Improved: GotoAnything sometimes is not working on first try ([#518](https://github.com/laurent22/joplin/issues/518)4) +- Improved: Increase space between paragraphs in viewer and Rich Text editor to match Markdown editor ([#525](https://github.com/laurent22/joplin/issues/525)6) +- Fixed: Disable "Dropped file type is not supported" notification in Rich Text editor ([#526](https://github.com/laurent22/joplin/issues/526)8) +- Fixed: Do not export share properties ([#523](https://github.com/laurent22/joplin/issues/523)2) - Fixed: Fixed header spacing (regression) ([d3cd843](https://github.com/laurent22/joplin/commit/d3cd843)) -- Fixed: Fixed issue with orphaned resource being created in case of a resource conflict ([#5223](https://github.com/laurent22/joplin/issues/5223)) -- Fixed: Fixed plugin state when it has been deleted outside the app ([#5253](https://github.com/laurent22/joplin/issues/5253)) -- Fixed: Fixed recipient list colors in Share Notebook dialog ([#5258](https://github.com/laurent22/joplin/issues/5258)) -- Fixed: Fixed share note color in note list ([#5259](https://github.com/laurent22/joplin/issues/5259)) -- Fixed: Focus is lost while searching in all notes ([#5208](https://github.com/laurent22/joplin/issues/5208)) -- Fixed: Import highlighted text from ENEX files ([#5213](https://github.com/laurent22/joplin/issues/5213)) -- Fixed: Katex code could be broken after editing it in Rich Text editor ([#5241](https://github.com/laurent22/joplin/issues/5241)) +- Fixed: Fixed issue with orphaned resource being created in case of a resource conflict ([#522](https://github.com/laurent22/joplin/issues/522)3) +- Fixed: Fixed plugin state when it has been deleted outside the app ([#525](https://github.com/laurent22/joplin/issues/525)3) +- Fixed: Fixed recipient list colors in Share Notebook dialog ([#525](https://github.com/laurent22/joplin/issues/525)8) +- Fixed: Fixed share note color in note list ([#525](https://github.com/laurent22/joplin/issues/525)9) +- Fixed: Focus is lost while searching in all notes ([#520](https://github.com/laurent22/joplin/issues/520)8) +- Fixed: Import highlighted text from ENEX files ([#521](https://github.com/laurent22/joplin/issues/521)3) +- Fixed: Katex code could be broken after editing it in Rich Text editor ([#524](https://github.com/laurent22/joplin/issues/524)1) ## [v2.2.2](https://github.com/laurent22/joplin/releases/tag/v2.2.2) (Pre-release) - 2021-07-19T10:28:35Z Attention: The default font size has been changed in the Markdown editor. You can change it back in Config > Appearance > Editor font size. - Improved: Ensure that timestamps are not changed when sharing or unsharing a note ([cafaa9c](https://github.com/laurent22/joplin/commit/cafaa9c)) -- Improved: Make Markdown editor styling closer to view styling ([#5174](https://github.com/laurent22/joplin/issues/5174)) +- Improved: Make Markdown editor styling closer to view styling ([#517](https://github.com/laurent22/joplin/issues/517)4) - Improved: Make sure clipper authorisation notification is displayed, even when in config screen ([b2de27b](https://github.com/laurent22/joplin/commit/b2de27b)) ## [v2.1.9](https://github.com/laurent22/joplin/releases/tag/v2.1.9) - 2021-07-19T10:28:43Z @@ -828,12 +828,12 @@ Attention: The default font size has been changed in the Markdown editor. You ca - New: Plugins: Add support for read and writing text, HTML and images from/to clipboard ([50ecdc2](https://github.com/laurent22/joplin/commit/50ecdc2)) - Improved: Web Clipper now must request authorisation before accessing the application data ([67d9977](https://github.com/laurent22/joplin/commit/67d9977)) - Improved: Also allow disabling TLS errors for Joplin Cloud to go around error UNABLE_TO_GET_ISSUER_CERT_LOCALLY ([118a2f9](https://github.com/laurent22/joplin/commit/118a2f9)) -- Improved: Apply monospace font to code dialog in Rich Text editor ([#4905](https://github.com/laurent22/joplin/issues/4905)) -- Fixed: Handle special type of code block when importing ENEX files ([#4965](https://github.com/laurent22/joplin/issues/4965)) -- Fixed: Fixed error that could prevent a revision from being created, and that would prevent the revision service from processing the rest of the notes ([#5051](https://github.com/laurent22/joplin/issues/5051)) +- Improved: Apply monospace font to code dialog in Rich Text editor ([#490](https://github.com/laurent22/joplin/issues/490)5) +- Fixed: Handle special type of code block when importing ENEX files ([#496](https://github.com/laurent22/joplin/issues/496)5) +- Fixed: Fixed error that could prevent a revision from being created, and that would prevent the revision service from processing the rest of the notes ([#505](https://github.com/laurent22/joplin/issues/505)1) - Fixed: Fixed issue when trying to sync an item associated with a share that no longer exists ([5bb68ba](https://github.com/laurent22/joplin/commit/5bb68ba)) - Fixed: Fixed note history line count information (Regression) ([caabdbd](https://github.com/laurent22/joplin/commit/caabdbd)) -- Fixed: Fixed readability of links in notification banners ([#4983](https://github.com/laurent22/joplin/issues/4983)) +- Fixed: Fixed readability of links in notification banners ([#498](https://github.com/laurent22/joplin/issues/498)3) ## [v2.1.3](https://github.com/laurent22/joplin/releases/tag/v2.1.3) (Pre-release) - 2021-06-19T16:32:51Z @@ -848,11 +848,11 @@ Attention: The default font size has been changed in the Markdown editor. You ca ## [v2.0.11](https://github.com/laurent22/joplin/releases/tag/v2.0.11) - 2021-06-16T17:55:49Z - Improved: Prevent sync process from being stuck when the download state of a resource is invalid ([5c6fd93](https://github.com/laurent22/joplin/commit/5c6fd93)) -- Fixed: Prevent app from crashing when loading a setting value that has been removed ([[#5086](https://github.com/laurent22/joplin/issues/5086)](https://github.com/laurent22/joplin/issues/5086)) +- Fixed: Prevent app from crashing when loading a setting value that has been removed ([#5086](https://github.com/laurent22/joplin/issues/5086)) ## [v2.0.10](https://github.com/laurent22/joplin/releases/tag/v2.0.10) - 2021-06-16T07:58:29Z -- Fixed: Ensure resources are decrypted when sharing a notebook with Joplin Server ([#5080](https://github.com/laurent22/joplin/issues/5080)) +- Fixed: Ensure resources are decrypted when sharing a notebook with Joplin Server ([#508](https://github.com/laurent22/joplin/issues/508)0) - Fixed: Fixed user content URLs when sharing note via Joplin Server ([2cf7067](https://github.com/laurent22/joplin/commit/2cf7067)) ## [v2.0.9](https://github.com/laurent22/joplin/releases/tag/v2.0.9) (Pre-release) - 2021-06-12T09:30:30Z @@ -873,7 +873,7 @@ Attention: The default font size has been changed in the Markdown editor. You ca - Improved: Improved Joplin Server error handling ([95d7ccc](https://github.com/laurent22/joplin/commit/95d7ccc)) - Improved: Plugins: Support executing CodeMirror commands from plugins when using execCommand ([#5012](https://github.com/laurent22/joplin/issues/5012) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Recreate http agent when the protocol changes ([#5016](https://github.com/laurent22/joplin/issues/5016) by Roman Musin) -- Fixed: Certain resource paths could be corrupted when saved from the Rich Text editor ([#5034](https://github.com/laurent22/joplin/issues/5034)) +- Fixed: Certain resource paths could be corrupted when saved from the Rich Text editor ([#503](https://github.com/laurent22/joplin/issues/503)4) - Fixed: Ctrl+Clicking links in Rich Text editor was broken (regression) ([e8a02c2](https://github.com/laurent22/joplin/commit/e8a02c2)) - Fixed: Incorrect list renumbering ([#4914](https://github.com/laurent22/joplin/issues/4914)) ([#4877](https://github.com/laurent22/joplin/issues/4877) by Austin Doupnik) - Fixed: Inline Katex gets broken when editing in Rich Text editor ([#5052](https://github.com/laurent22/joplin/issues/5052)) ([#5025](https://github.com/laurent22/joplin/issues/5025) by [@Subhra264](https://github.com/Subhra264)) @@ -892,37 +892,37 @@ Attention: The default font size has been changed in the Markdown editor. You ca - Improved: Allow unsharing a note ([f7d164b](https://github.com/laurent22/joplin/commit/f7d164b)) - Improved: Displays error info when Joplin Server fails ([3f0586e](https://github.com/laurent22/joplin/commit/3f0586e)) - Improved: Handle too large items for Joplin Server ([d29624c](https://github.com/laurent22/joplin/commit/d29624c)) -- Improved: Import SVG as images when importing ENEX files ([#4968](https://github.com/laurent22/joplin/issues/4968)) +- Improved: Import SVG as images when importing ENEX files ([#496](https://github.com/laurent22/joplin/issues/496)8) - Improved: Import linked local files when importing Markdown files ([#4966](https://github.com/laurent22/joplin/issues/4966)) ([#4433](https://github.com/laurent22/joplin/issues/4433) by [@JackGruber](https://github.com/JackGruber)) -- Improved: Improved usability when plugin repository cannot be connected to ([#4462](https://github.com/laurent22/joplin/issues/4462)) +- Improved: Improved usability when plugin repository cannot be connected to ([#446](https://github.com/laurent22/joplin/issues/446)2) - Improved: Made sync more reliable by making it skip items that time out, and improved sync status screen ([15fe119](https://github.com/laurent22/joplin/commit/15fe119)) - Improved: Pass custom CSS property to all export handlers and renderers ([bd08041](https://github.com/laurent22/joplin/commit/bd08041)) - Improved: Regression: It was no longer possible to add list items in an empty note ([6577f4f](https://github.com/laurent22/joplin/commit/6577f4f)) - Improved: Regression: Pasting plain text in Rich Text editor was broken ([9e9bf63](https://github.com/laurent22/joplin/commit/9e9bf63)) -- Fixed: Fixed issue with empty panels being created by plugins ([#4926](https://github.com/laurent22/joplin/issues/4926)) +- Fixed: Fixed issue with empty panels being created by plugins ([#492](https://github.com/laurent22/joplin/issues/492)6) - Fixed: Fixed pasting HTML in Rich Text editor, and improved pasting plain text ([2226b79](https://github.com/laurent22/joplin/commit/2226b79)) -- Fixed: Improved importing Evernote notes that contain codeblocks ([#4965](https://github.com/laurent22/joplin/issues/4965)) -- Fixed: Prevent cursor from jumping to top of page when pasting image ([#4591](https://github.com/laurent22/joplin/issues/4591)) +- Fixed: Improved importing Evernote notes that contain codeblocks ([#496](https://github.com/laurent22/joplin/issues/496)5) +- Fixed: Prevent cursor from jumping to top of page when pasting image ([#459](https://github.com/laurent22/joplin/issues/459)1) ## [v2.0.1](https://github.com/laurent22/joplin/releases/tag/v2.0.1) (Pre-release) - 2021-05-15T13:22:58Z -- New: Add support for sharing notebooks with Joplin Server ([#4772](https://github.com/laurent22/joplin/issues/4772)) +- New: Add support for sharing notebooks with Joplin Server ([#477](https://github.com/laurent22/joplin/issues/477)2) - New: Add new date format YYMMDD ([#4954](https://github.com/laurent22/joplin/issues/4954) by Helmut K. C. Tessarek) - New: Added button to skip an application update ([a31b402](https://github.com/laurent22/joplin/commit/a31b402)) -- Fixed: Display proper error message when JEX file is corrupted ([#4958](https://github.com/laurent22/joplin/issues/4958)) +- Fixed: Display proper error message when JEX file is corrupted ([#495](https://github.com/laurent22/joplin/issues/495)8) - Fixed: Show or hide completed todos in search results based on user settings ([#4951](https://github.com/laurent22/joplin/issues/4951)) ([#4581](https://github.com/laurent22/joplin/issues/4581) by [@JackGruber](https://github.com/JackGruber)) - Fixed: Solve "Resource Id not provided" error ([#4943](https://github.com/laurent22/joplin/issues/4943)) ([#4891](https://github.com/laurent22/joplin/issues/4891) by [@Subhra264](https://github.com/Subhra264)) ## [v1.8.5](https://github.com/laurent22/joplin/releases/tag/v1.8.5) - 2021-05-10T11:58:14Z -- Fixed: Fixed pasting of text and images from Word on Windows ([#4916](https://github.com/laurent22/joplin/issues/4916)) +- Fixed: Fixed pasting of text and images from Word on Windows ([#491](https://github.com/laurent22/joplin/issues/491)6) - Security: Filter out NOSCRIPT tags that could be used to cause an XSS (CVE-2021-33295) (found by [Jubair Rehman Yousafzai](https://twitter.com/newfolderj)) ([9c20d59](https://github.com/laurent22/joplin/commit/9c20d59)) ## [v1.8.4](https://github.com/laurent22/joplin/releases/tag/v1.8.4) (Pre-release) - 2021-05-09T18:05:05Z - Improved: Improve display of release notes for new versions ([f76f99b](https://github.com/laurent22/joplin/commit/f76f99b)) -- Fixed: Ensure that image paths that contain spaces are pasted correctly in the Rich Text editor ([#4916](https://github.com/laurent22/joplin/issues/4916)) -- Fixed: Make sure sync startup operations are cleared after startup ([#4919](https://github.com/laurent22/joplin/issues/4919)) +- Fixed: Ensure that image paths that contain spaces are pasted correctly in the Rich Text editor ([#491](https://github.com/laurent22/joplin/issues/491)6) +- Fixed: Make sure sync startup operations are cleared after startup ([#491](https://github.com/laurent22/joplin/issues/491)9) - Security: Apply npm audit security fixes ([0b67446](https://github.com/laurent22/joplin/commit/0b67446)) ## [v1.8.3](https://github.com/laurent22/joplin/releases/tag/v1.8.3) (Pre-release) - 2021-05-04T10:38:16Z @@ -942,20 +942,20 @@ Attention: The default font size has been changed in the Markdown editor. You ca - New: Add an option to renew the API token ([#4811](https://github.com/laurent22/joplin/issues/4811) by Helmut K. C. Tessarek) - New: Add button to copy note ID in Note Properties dialog ([#4749](https://github.com/laurent22/joplin/issues/4749) by Abdallah Ahmed) - New: Add plugin info when the app crashes -- New: Add support for safe mode, which temporarily disables note rendering and plugins ([#4727](https://github.com/laurent22/joplin/issues/4727)) +- New: Add support for safe mode, which temporarily disables note rendering and plugins ([#472](https://github.com/laurent22/joplin/issues/472)7) - Improved: Also duplicate the tags when the note is duplicated ([#4876](https://github.com/laurent22/joplin/issues/4876)) ([#3157](https://github.com/laurent22/joplin/issues/3157) by [@JackGruber](https://github.com/JackGruber)) - Improved: ENTER key no longer submits dialogs when a textarea is focused. ([#4777](https://github.com/laurent22/joplin/issues/4777)) ([#4766](https://github.com/laurent22/joplin/issues/4766) by [@Ahmad45123](https://github.com/Ahmad45123)) - Improved: Fixed editor focus issue when running command from palette ([#4812](https://github.com/laurent22/joplin/issues/4812)) ([#4759](https://github.com/laurent22/joplin/issues/4759) by [@Aksh-Konda](https://github.com/Aksh-Konda)) - Improved: Note list is empty if search field is cleared ([#4739](https://github.com/laurent22/joplin/issues/4739)) ([#4736](https://github.com/laurent22/joplin/issues/4736) by Apoorva Shukla) - Improved: Show notebook and note title in the title bar ([#4390](https://github.com/laurent22/joplin/issues/4390)) ([#3695](https://github.com/laurent22/joplin/issues/3695) by [@asrient](https://github.com/asrient)) - Improved: Disappearing text in markdown editor ([#4750](https://github.com/laurent22/joplin/issues/4750)) ([#4781](https://github.com/laurent22/joplin/issues/4781) by Adarsh Singh) -- Fixed: Copying code block from Rich Text editor results in two copies of the text ([#4669](https://github.com/laurent22/joplin/issues/4669)) -- Fixed: Ensure that invalid plugin settings do not crash the application ([#4562](https://github.com/laurent22/joplin/issues/4562)) +- Fixed: Copying code block from Rich Text editor results in two copies of the text ([#466](https://github.com/laurent22/joplin/issues/466)9) +- Fixed: Ensure that invalid plugin settings do not crash the application ([#456](https://github.com/laurent22/joplin/issues/456)2) - Fixed: File-Links with German Umlauts don't work ([#4804](https://github.com/laurent22/joplin/issues/4804)) ([#4043](https://github.com/laurent22/joplin/issues/4043) by [@Subhra264](https://github.com/Subhra264)) - Fixed: Fixed cursor moved to the top issue in Markdown editor ([#4870](https://github.com/laurent22/joplin/issues/4870) by [@CalebJohn](https://github.com/CalebJohn)) - Fixed: Highlight existing text in global search field ([#4773](https://github.com/laurent22/joplin/issues/4773)) ([#4769](https://github.com/laurent22/joplin/issues/4769) by Siddhant Sehgal) - Fixed: Prevent Goto anything from changing folders when all notes filter is on ([#4751](https://github.com/laurent22/joplin/issues/4751)) ([#4697](https://github.com/laurent22/joplin/issues/4697) by [@jalajcodes](https://github.com/jalajcodes)) -- Fixed: Prevents plugin from causing an error when the app closes ([#4570](https://github.com/laurent22/joplin/issues/4570)) +- Fixed: Prevents plugin from causing an error when the app closes ([#457](https://github.com/laurent22/joplin/issues/457)0) - Fixed: Regression: Fixed handling of provisional status of note - Fixed: Roboto font in plugins ([#4755](https://github.com/laurent22/joplin/issues/4755)) ([#4754](https://github.com/laurent22/joplin/issues/4754) by Brett Bender) - Fixed: Scroll position is not remembered in Markdown editor ([#4806](https://github.com/laurent22/joplin/issues/4806)) ([#4797](https://github.com/laurent22/joplin/issues/4797) by Roman Musin) @@ -976,8 +976,8 @@ Attention: The default font size has been changed in the Markdown editor. You ca - Improved: Give plugin config section without an icon, a default icon - Improved: Improve mathmode syntax highlighting ([#4580](https://github.com/laurent22/joplin/issues/4580)) ([#4554](https://github.com/laurent22/joplin/issues/4554) by James Wright) - Improved: Improved solarized dark theme ([#4748](https://github.com/laurent22/joplin/issues/4748)) ([#3887](https://github.com/laurent22/joplin/issues/3887) by Anakai Richards) -- Improved: Improved spell checking support in dialogs and text input fields ([#4458](https://github.com/laurent22/joplin/issues/4458)) -- Improved: Plugins: Focus dialog when it is opened so that ENTER/ESC shortcuts work ([#4474](https://github.com/laurent22/joplin/issues/4474)) +- Improved: Improved spell checking support in dialogs and text input fields ([#445](https://github.com/laurent22/joplin/issues/445)8) +- Improved: Plugins: Focus dialog when it is opened so that ENTER/ESC shortcuts work ([#447](https://github.com/laurent22/joplin/issues/447)4) - Improved: Plugins: Only call onNoteChange for the current note - Improved: Remove branch name in detached head state ([#4636](https://github.com/laurent22/joplin/issues/4636) by Helmut K. C. Tessarek) - Improved: Reset window hash to allow clicking an anchor multiple times ([#4538](https://github.com/laurent22/joplin/issues/4538) by [@CalebJohn](https://github.com/CalebJohn)) @@ -990,16 +990,16 @@ Attention: The default font size has been changed in the Markdown editor. You ca - Fixed: Allow copying images from Joplin to external editors ([#4724](https://github.com/laurent22/joplin/issues/4724)) ([#4602](https://github.com/laurent22/joplin/issues/4602) by Nishant Mittal) - Fixed: Fix mermaid diagrams in WYSIWYG editor ([#4670](https://github.com/laurent22/joplin/issues/4670)) ([#4612](https://github.com/laurent22/joplin/issues/4612) by [@mablin7](https://github.com/mablin7)) - Fixed: Fixed calendar styling ([#4703](https://github.com/laurent22/joplin/issues/4703)) ([#4397](https://github.com/laurent22/joplin/issues/4397) by Harshit Kathuria) -- Fixed: Fixed exporting as HTML or PDF when a plugin is active, and make sure plugin assets are also exported ([#4452](https://github.com/laurent22/joplin/issues/4452)) -- Fixed: Fixed formatting of consecutive code blocks ([#4416](https://github.com/laurent22/joplin/issues/4416)) +- Fixed: Fixed exporting as HTML or PDF when a plugin is active, and make sure plugin assets are also exported ([#445](https://github.com/laurent22/joplin/issues/445)2) +- Fixed: Fixed formatting of consecutive code blocks ([#441](https://github.com/laurent22/joplin/issues/441)6) - Fixed: Fixed issue which could cause plugin views to be orphaned - Fixed: Fixed rendering of note and resource links -- Fixed: Improved enabling/disabling commands depending on application state ([#4473](https://github.com/laurent22/joplin/issues/4473)) -- Fixed: Improved handling of empty paths for Joplin Server sync target ([#4426](https://github.com/laurent22/joplin/issues/4426)) -- Fixed: Make config sidebar vertically scrollable, and make it grow horizontally depending on menu items ([#4491](https://github.com/laurent22/joplin/issues/4491)) +- Fixed: Improved enabling/disabling commands depending on application state ([#447](https://github.com/laurent22/joplin/issues/447)3) +- Fixed: Improved handling of empty paths for Joplin Server sync target ([#442](https://github.com/laurent22/joplin/issues/442)6) +- Fixed: Make config sidebar vertically scrollable, and make it grow horizontally depending on menu items ([#449](https://github.com/laurent22/joplin/issues/449)1) - Fixed: Make plugin links clickable from search ([#4548](https://github.com/laurent22/joplin/issues/4548)) ([#4505](https://github.com/laurent22/joplin/issues/4505) by Roman Musin) - Fixed: Plugin Update error when plugin was installed manually ([#4725](https://github.com/laurent22/joplin/issues/4725)) ([#4723](https://github.com/laurent22/joplin/issues/4723) by [@mablin7](https://github.com/mablin7)) -- Fixed: Plugins: Apply "fields" query parameter when requesting data from data API ([#4407](https://github.com/laurent22/joplin/issues/4407)) +- Fixed: Plugins: Apply "fields" query parameter when requesting data from data API ([#440](https://github.com/laurent22/joplin/issues/440)7) - Fixed: Refresh note tags when a note is moved to another folder ([#4574](https://github.com/laurent22/joplin/issues/4574)) ([#4369](https://github.com/laurent22/joplin/issues/4369) by Roman Musin) - Fixed: Updating a disabled plugin enables it ([#4711](https://github.com/laurent22/joplin/issues/4711)) ([#4683](https://github.com/laurent22/joplin/issues/4683) by [@mablin7](https://github.com/mablin7)) - Fixed: Wrong background color for the table button in the toolbar ([#4681](https://github.com/laurent22/joplin/issues/4681)) ([#4398](https://github.com/laurent22/joplin/issues/4398) by [@zozolina123](https://github.com/zozolina123)) @@ -1017,10 +1017,10 @@ Attention: The default font size has been changed in the Markdown editor. You ca - New: Plugins: Add support for `joplin.plugins.require` API to allow using sqlite3 or fs-extra from a plugin - New: Plugins: Add support for `plugins.dataDir` function, to provide a path for plugin to store its own data - New: Plugins: Added support for bi-directional messages in content scripts and webview scripts using postMessage -- Fixed: Added missing translations ([#4363](https://github.com/laurent22/joplin/issues/4363)) -- Fixed: Fixed copying text from Rich Text editor ([#4441](https://github.com/laurent22/joplin/issues/4441)) +- Fixed: Added missing translations ([#436](https://github.com/laurent22/joplin/issues/436)3) +- Fixed: Fixed copying text from Rich Text editor ([#444](https://github.com/laurent22/joplin/issues/444)1) - Fixed: Fixed plugin panel issue that could crash app in rare case -- Fixed: Make sure note is automatically saved when format is set via keyboard shortcut in Rich Text editor ([#4337](https://github.com/laurent22/joplin/issues/4337)) +- Fixed: Make sure note is automatically saved when format is set via keyboard shortcut in Rich Text editor ([#433](https://github.com/laurent22/joplin/issues/433)7) - Fixed: Plugins: Fixed dropdown settings - Fixed: Some commands were no longer working ([#4343](https://github.com/laurent22/joplin/issues/4343)) ([#4338](https://github.com/laurent22/joplin/issues/4338) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Do not allow installing plugins incompatible with current app version @@ -1056,8 +1056,8 @@ Attention: The default font size has been changed in the Markdown editor. You ca - New: Allow updating a plugin - Improved: Enable TLS options for Joplin Server - Improved: Move plugin settings under separate section in config menu -- Fixed: Added missing translations ([#4363](https://github.com/laurent22/joplin/issues/4363)) -- Fixed: Make sure note is automatically saved when format is set via keyboard shortcut in Rich Text editor ([#4337](https://github.com/laurent22/joplin/issues/4337)) +- Fixed: Added missing translations ([#436](https://github.com/laurent22/joplin/issues/436)3) +- Fixed: Make sure note is automatically saved when format is set via keyboard shortcut in Rich Text editor ([#433](https://github.com/laurent22/joplin/issues/433)7) - Fixed: Plugins: Fixed dropdown settings - Fixed: Some commands were no longer working ([#4343](https://github.com/laurent22/joplin/issues/4343)) ([#4338](https://github.com/laurent22/joplin/issues/4338) by [@CalebJohn](https://github.com/CalebJohn)) @@ -1069,14 +1069,14 @@ Attention: The default font size has been changed in the Markdown editor. You ca - New: Allow updating a plugin - Improved: Enable TLS options for Joplin Server - Improved: Move plugin settings under separate section in config menu -- Fixed: Added missing translations ([#4363](https://github.com/laurent22/joplin/issues/4363)) -- Fixed: Make sure note is automatically saved when format is set via keyboard shortcut in Rich Text editor ([#4337](https://github.com/laurent22/joplin/issues/4337)) +- Fixed: Added missing translations ([#436](https://github.com/laurent22/joplin/issues/436)3) +- Fixed: Make sure note is automatically saved when format is set via keyboard shortcut in Rich Text editor ([#433](https://github.com/laurent22/joplin/issues/433)7) - Fixed: Plugins: Fixed dropdown settings - Fixed: Some commands were no longer working ([#4343](https://github.com/laurent22/joplin/issues/4343)) ([#4338](https://github.com/laurent22/joplin/issues/4338) by [@CalebJohn](https://github.com/CalebJohn)) ## [v1.6.8](https://github.com/laurent22/joplin/releases/tag/v1.6.8) - 2021-01-20T18:11:34Z -- Fixed: Fixed infinite sync issue with OneDrive ([#4305](https://github.com/laurent22/joplin/issues/4305)) +- Fixed: Fixed infinite sync issue with OneDrive ([#430](https://github.com/laurent22/joplin/issues/430)5) ## [v1.7.3](https://github.com/laurent22/joplin/releases/tag/v1.7.3) (Pre-release) - 2021-01-20T11:23:50Z @@ -1096,14 +1096,14 @@ Attention: The default font size has been changed in the Markdown editor. You ca ## [v1.6.5](https://github.com/laurent22/joplin/releases/tag/v1.6.5) (Pre-release) - 2021-01-09T01:24:32Z - New: Plugins: Added joplin.settings.onChange event -- Improved: Do not display error message when fixing ENEX resource mime type ([#4310](https://github.com/laurent22/joplin/issues/4310)) +- Improved: Do not display error message when fixing ENEX resource mime type ([#431](https://github.com/laurent22/joplin/issues/431)0) - Improved: Handle case where a command is sent to an editor that is gone -- Improved: Improved support for bold and italic format when importing ENEX file ([#4316](https://github.com/laurent22/joplin/issues/4316)) +- Improved: Improved support for bold and italic format when importing ENEX file ([#431](https://github.com/laurent22/joplin/issues/431)6) - Fixed: Fix issue that was preventing editor context menu from being refreshed ([#4303](https://github.com/laurent22/joplin/issues/4303) by [@CalebJohn](https://github.com/CalebJohn)) - Fixed: Fixed OneDrive issue that would require a full resync every time ([#4324](https://github.com/laurent22/joplin/issues/4324)) ([#4313](https://github.com/laurent22/joplin/issues/4313) by Jonathan Heard) - Fixed: Fixed attaching local files that contain spaces in path - Fixed: Fixed context menu not being displayed on high DPI screens -- Fixed: Plugins: Fixed "exportFolders" command when exporting JEX file ([#4308](https://github.com/laurent22/joplin/issues/4308)) +- Fixed: Plugins: Fixed "exportFolders" command when exporting JEX file ([#430](https://github.com/laurent22/joplin/issues/430)8) ## [v1.6.4](https://github.com/laurent22/joplin/releases/tag/v1.6.4) (Pre-release) - 2021-01-07T19:11:32Z @@ -1123,7 +1123,7 @@ Attention: The default font size has been changed in the Markdown editor. You ca - Improved: Upload Big Notes to Onedrive ([#4120](https://github.com/laurent22/joplin/issues/4120)) ([#3528](https://github.com/laurent22/joplin/issues/3528) by Jonathan Heard) - Fixed: `file://` URLs would not be rendered correctly - Fixed: MacOS: Fixed paste as text in Rich Text editor -- Fixed: Plugins: Allow API paths that contain 4 elements ([#4285](https://github.com/laurent22/joplin/issues/4285)) +- Fixed: Plugins: Allow API paths that contain 4 elements ([#428](https://github.com/laurent22/joplin/issues/428)5) ## [v1.5.14](https://github.com/laurent22/joplin/releases/tag/v1.5.14) - 2020-12-30T01:48:46Z @@ -1151,7 +1151,7 @@ Fixed ENEX import regression: Fix issue when importing ENEX file that contains i - New: Plugins: Added a way to execute commands from Markdown-it content scripts - Fixed: Fix End key behavior with Codemirror spellcheck ([#4215](https://github.com/laurent22/joplin/issues/4215) by Caleb John) - Fixed: Fixed basic search when executing a query in Chinese ([#4034](https://github.com/laurent22/joplin/issues/4034) by Naveen M V) -- Fixed: Fixed context menu when the UI is zoomed in or out ([#4201](https://github.com/laurent22/joplin/issues/4201)) +- Fixed: Fixed context menu when the UI is zoomed in or out ([#420](https://github.com/laurent22/joplin/issues/420)1) - Fixed: Fixed importing certain code blocks from ENEX - Fixed: Fixed importing ENEX files that contain empty resources - Fixed: Fixed importing ENEX files that contain resources with invalid mime type @@ -1164,15 +1164,15 @@ Fixed ENEX import regression: Fix issue when importing ENEX file that contains i - Fixed: Fixed title input field width on small windows - Fixed: Focus editor after pressing toolbar buttons ([#4037](https://github.com/laurent22/joplin/issues/4037)) ([#4036](https://github.com/laurent22/joplin/issues/4036) by [@CalebJohn](https://github.com/CalebJohn)) - Fixed: Plugins: Fixed disabling plugin files that start with "_" -- Fixed: Prevent double paste when using Shift+Ctrl+V ([#4243](https://github.com/laurent22/joplin/issues/4243)) -- Fixed: Prevents crash when invalid spell checker language is selected, and provide fallback for invalid language codes ([#4146](https://github.com/laurent22/joplin/issues/4146)) +- Fixed: Prevent double paste when using Shift+Ctrl+V ([#424](https://github.com/laurent22/joplin/issues/424)3) +- Fixed: Prevents crash when invalid spell checker language is selected, and provide fallback for invalid language codes ([#414](https://github.com/laurent22/joplin/issues/414)6) - Fixed: Register Markdown editor commands with the Keyboard Shortcut editor ([#4136](https://github.com/laurent22/joplin/issues/4136)) ([#4130](https://github.com/laurent22/joplin/issues/4130) by Caleb John) - Improved: Display Katex parsing errors - Improved: Improved warning banner colors - Improved: Plugins: Commands would not show up in keymap editor when no shortcut was associated with them - Improved: Plugins: Improved note change event handling. - Improved: Removed warning for Markdown editor spell checking -- Improved: Restrict auto-detection of links, and added option to toggle linkify ([#4205](https://github.com/laurent22/joplin/issues/4205)) +- Improved: Restrict auto-detection of links, and added option to toggle linkify ([#420](https://github.com/laurent22/joplin/issues/420)5) - Improved: Rich Text: Do not converts to markdown links URLs that would be linkified - Improved: Translation: Update zh_CN ([#4195](https://github.com/laurent22/joplin/issues/4195) by Zhang YANG) - Improved: Update macOS icon for macOS Big Sur @@ -1191,7 +1191,7 @@ Fixed ENEX import regression: Fix issue when importing ENEX file that contains i - New: Plugins: Added a way to execute commands from Markdown-it content scripts - Fixed: Fix End key behavior with Codemirror spellcheck ([#4215](https://github.com/laurent22/joplin/issues/4215) by Caleb John) - Fixed: Fixed basic search when executing a query in Chinese ([#4034](https://github.com/laurent22/joplin/issues/4034) by Naveen M V) -- Fixed: Fixed context menu when the UI is zoomed in or out ([#4201](https://github.com/laurent22/joplin/issues/4201)) +- Fixed: Fixed context menu when the UI is zoomed in or out ([#420](https://github.com/laurent22/joplin/issues/420)1) - Fixed: Fixed importing certain code blocks from ENEX - Fixed: Fixed importing ENEX files that contain empty resources - Fixed: Fixed importing ENEX files that contain resources with invalid mime type @@ -1204,15 +1204,15 @@ Fixed ENEX import regression: Fix issue when importing ENEX file that contains i - Fixed: Fixed title input field width on small windows - Fixed: Focus editor after pressing toolbar buttons ([#4037](https://github.com/laurent22/joplin/issues/4037)) ([#4036](https://github.com/laurent22/joplin/issues/4036) by [@CalebJohn](https://github.com/CalebJohn)) - Fixed: Plugins: Fixed disabling plugin files that start with "_" -- Fixed: Prevent double paste when using Shift+Ctrl+V ([#4243](https://github.com/laurent22/joplin/issues/4243)) -- Fixed: Prevents crash when invalid spell checker language is selected, and provide fallback for invalid language codes ([#4146](https://github.com/laurent22/joplin/issues/4146)) +- Fixed: Prevent double paste when using Shift+Ctrl+V ([#424](https://github.com/laurent22/joplin/issues/424)3) +- Fixed: Prevents crash when invalid spell checker language is selected, and provide fallback for invalid language codes ([#414](https://github.com/laurent22/joplin/issues/414)6) - Fixed: Register Markdown editor commands with the Keyboard Shortcut editor ([#4136](https://github.com/laurent22/joplin/issues/4136)) ([#4130](https://github.com/laurent22/joplin/issues/4130) by Caleb John) - Improved: Display Katex parsing errors - Improved: Improved warning banner colors - Improved: Plugins: Commands would not show up in keymap editor when no shortcut was associated with them - Improved: Plugins: Improved note change event handling. - Improved: Removed warning for Markdown editor spell checking -- Improved: Restrict auto-detection of links, and added option to toggle linkify ([#4205](https://github.com/laurent22/joplin/issues/4205)) +- Improved: Restrict auto-detection of links, and added option to toggle linkify ([#420](https://github.com/laurent22/joplin/issues/420)5) - Improved: Rich Text: Do not converts to markdown links URLs that would be linkified - Improved: Translation: Update zh_CN ([#4195](https://github.com/laurent22/joplin/issues/4195) by Zhang YANG) - Improved: Update macOS icon for macOS Big Sur @@ -1225,9 +1225,9 @@ Fixed ENEX import regression: Fix issue when importing ENEX file that contains i - Improved: Display Katex parsing errors - Improved: Removed warning for Markdown editor spell checking - Improved: Update macOS icon for macOS Big Sur -- Fixed: Fixed context menu when the UI is zoomed in or out ([#4201](https://github.com/laurent22/joplin/issues/4201)) +- Fixed: Fixed context menu when the UI is zoomed in or out ([#420](https://github.com/laurent22/joplin/issues/420)1) - Fixed: Fixed issues when importing hidden tables within hidden sections in Enex files -- Fixed: Prevent double paste when using Shift+Ctrl+V ([#4243](https://github.com/laurent22/joplin/issues/4243)) +- Fixed: Prevent double paste when using Shift+Ctrl+V ([#424](https://github.com/laurent22/joplin/issues/424)3) ## [v1.5.9](https://github.com/laurent22/joplin/releases/tag/v1.5.9) (Pre-release) - 2020-12-23T18:01:08Z @@ -1253,7 +1253,7 @@ Fixed ENEX import regression: Fix issue when importing ENEX file that contains i - New: Plugins: Add support for workspace.onSyncStart event - Improved: Improved warning banner colors - Improved: Plugins: Commands would not show up in keymap editor when no shortcut was associated with them -- Improved: Restrict auto-detection of links, and added option to toggle linkify ([#4205](https://github.com/laurent22/joplin/issues/4205)) +- Improved: Restrict auto-detection of links, and added option to toggle linkify ([#420](https://github.com/laurent22/joplin/issues/420)5) - Improved: Rich Text: Do not converts to markdown links URLs that would be linkified - Improved: Translation: Update zh_CN ([#4195](https://github.com/laurent22/joplin/issues/4195) by Zhang YANG) - Improved: Update Mermaid: 8.8.1 -> 8.8.4 ([#4193](https://github.com/laurent22/joplin/issues/4193) by Helmut K. C. Tessarek) @@ -1264,7 +1264,7 @@ Fixed ENEX import regression: Fix issue when importing ENEX file that contains i - Fixed: Fixed numbered list bug in markdown editor ([#4116](https://github.com/laurent22/joplin/issues/4116)) ([#3917](https://github.com/laurent22/joplin/issues/3917) by [@MichBoi](https://github.com/MichBoi)) - Fixed: Fixed potential crash when watching note files or resources - Fixed: Focus editor after pressing toolbar buttons ([#4037](https://github.com/laurent22/joplin/issues/4037)) ([#4036](https://github.com/laurent22/joplin/issues/4036) by [@CalebJohn](https://github.com/CalebJohn)) -- Fixed: Prevents crash when invalid spell checker language is selected, and provide fallback for invalid language codes ([#4146](https://github.com/laurent22/joplin/issues/4146)) +- Fixed: Prevents crash when invalid spell checker language is selected, and provide fallback for invalid language codes ([#414](https://github.com/laurent22/joplin/issues/414)6) - Fixed: Fixed issue when searching for text that contains diacritic ([#4152](https://github.com/laurent22/joplin/issues/4152)) ([#4025](https://github.com/laurent22/joplin/issues/4025) by Roman Musin) - Fixed: Fixed issue with attachment paths being invalid when user has spaces in home directory path. - Fixed: Fixed title input field width on small windows @@ -1279,7 +1279,7 @@ Fixed ENEX import regression: Fix issue when importing ENEX file that contains i - Fixed: Fixed numbered list bug in markdown editor ([#4116](https://github.com/laurent22/joplin/issues/4116)) ([#3917](https://github.com/laurent22/joplin/issues/3917) by [@MichBoi](https://github.com/MichBoi)) - Fixed: Fixed potential crash when watching note files or resources - Fixed: Focus editor after pressing toolbar buttons ([#4037](https://github.com/laurent22/joplin/issues/4037)) ([#4036](https://github.com/laurent22/joplin/issues/4036) by [@CalebJohn](https://github.com/CalebJohn)) -- Fixed: Prevents crash when invalid spell checker language is selected, and provide fallback for invalid language codes ([#4146](https://github.com/laurent22/joplin/issues/4146)) +- Fixed: Prevents crash when invalid spell checker language is selected, and provide fallback for invalid language codes ([#414](https://github.com/laurent22/joplin/issues/414)6) ## [v1.4.19](https://github.com/laurent22/joplin/releases/tag/v1.4.19) - 2020-12-01T11:11:16Z @@ -1301,7 +1301,7 @@ Although soft-break is part of the CommonMark spec, it requires a special editor - Fixed: Notifications on macOS - Fixed: Fixed potential crash when watching note files or resources -- Fixed: Prevents crash when invalid spell checker language is selected, and provide fallback for invalid language codes ([#4146](https://github.com/laurent22/joplin/issues/4146)) +- Fixed: Prevents crash when invalid spell checker language is selected, and provide fallback for invalid language codes ([#414](https://github.com/laurent22/joplin/issues/414)6) - Plugins: Fixed webview postMessage call ## [v1.4.12](https://github.com/laurent22/joplin/releases/tag/v1.4.12) - 2020-11-23T18:58:07Z @@ -1326,11 +1326,11 @@ Plugin doc has been updated with some info about the [development process](https - New: Add config screen to add, remove or enable, disable plugins - New: Add option to toggle spellchecking for the markdown editor ([#4109](https://github.com/laurent22/joplin/issues/4109) by [@CalebJohn](https://github.com/CalebJohn)) - New: Added toolbar button to switch spell checker language -- New: Adds spell checker support for Rich Text editor ([#3974](https://github.com/laurent22/joplin/issues/3974)) +- New: Adds spell checker support for Rich Text editor ([#397](https://github.com/laurent22/joplin/issues/397)4) - New: Allow customising application layout - New: Api: Added ability to watch resource file - New: Api: Added way to get the notes associated with a resource -- New: API: Adds ability to paginate data ([#3983](https://github.com/laurent22/joplin/issues/3983)) +- New: API: Adds ability to paginate data ([#398](https://github.com/laurent22/joplin/issues/398)3) - New: Plugins: Add command "editorSetText" for desktop app - New: Plugins: Add support for editor context menu - New: Plugins: Add support for external CodeMirror plugins ([#4015](https://github.com/laurent22/joplin/issues/4015) by [@CalebJohn](https://github.com/CalebJohn)) @@ -1338,35 +1338,35 @@ Plugin doc has been updated with some info about the [development process](https - New: Plugins: Added command to export folders and notes - New: Plugins: Added support app_min_version property and made it required - Fixed: Api: Fix note and resource association end points -- Fixed: Display note count for conflict folder, and display notes even if they are completed to-dos ([#3997](https://github.com/laurent22/joplin/issues/3997)) -- Fixed: Fix crash due to React when trying to upgrade sync target ([#4098](https://github.com/laurent22/joplin/issues/4098)) +- Fixed: Display note count for conflict folder, and display notes even if they are completed to-dos ([#399](https://github.com/laurent22/joplin/issues/399)7) +- Fixed: Fix crash due to React when trying to upgrade sync target ([#409](https://github.com/laurent22/joplin/issues/409)8) - Fixed: Fix drag and drop behaviour to "copy" instead of "move" ([#4031](https://github.com/laurent22/joplin/issues/4031) by [@CalebJohn](https://github.com/CalebJohn)) - Fixed: Fix handling of certain keys in shortcut editor ([#4022](https://github.com/laurent22/joplin/issues/4022) by Helmut K. C. Tessarek) - Fixed: Fix handling of new line escaping when using external edit - Fixed: Fix size of search bar area when notebook is empty - Fixed: Fixed importing certain ENEX files that contain invalid dates -- Fixed: Fixed inconsistent note list state when using search ([#3904](https://github.com/laurent22/joplin/issues/3904)) -- Fixed: Fixed issue when a newly created note would be automatically moved to the wrong folder on save ([#4038](https://github.com/laurent22/joplin/issues/4038)) +- Fixed: Fixed inconsistent note list state when using search ([#390](https://github.com/laurent22/joplin/issues/390)4) +- Fixed: Fixed issue when a newly created note would be automatically moved to the wrong folder on save ([#403](https://github.com/laurent22/joplin/issues/403)8) - Fixed: Fixed issue with note being saved after word has been replaced by spell checker -- Fixed: Fixed links imported from ENEX as HTML ([#4119](https://github.com/laurent22/joplin/issues/4119)) +- Fixed: Fixed links imported from ENEX as HTML ([#411](https://github.com/laurent22/joplin/issues/411)9) - Fixed: Fixed Markdown rendering when code highlighting is disabled - Fixed: Fixed note list overflow when resized very small - Fixed: Fixed text editor button tooltips - Fixed: Plugins: Fix crash when path includes trailing slash - Fixed: Plugins: Fixed issue with dialog being empty in some cases - Fixed: Plugins: Fixed issue with toolbar button key not being unique -- Fixed: Prevent log from filling up when certain external editors trigger many watch events ([#4011](https://github.com/laurent22/joplin/issues/4011)) +- Fixed: Prevent log from filling up when certain external editors trigger many watch events ([#401](https://github.com/laurent22/joplin/issues/401)1) - Fixed: Regression: Fix application name - Fixed: Regression: Fix exporting to HTML and PDF - Fixed: Regression: Fixed external edit file watching -- Fixed: Resource links could not be opened from Rich Text editor on Linux ([#4073](https://github.com/laurent22/joplin/issues/4073)) -- Fixed: Tags could not be selected in some cases ([#3876](https://github.com/laurent22/joplin/issues/3876)) -- Improved: Allow exporting conflict notes ([#4095](https://github.com/laurent22/joplin/issues/4095)) +- Fixed: Resource links could not be opened from Rich Text editor on Linux ([#407](https://github.com/laurent22/joplin/issues/407)3) +- Fixed: Tags could not be selected in some cases ([#387](https://github.com/laurent22/joplin/issues/387)6) +- Improved: Allow exporting conflict notes ([#409](https://github.com/laurent22/joplin/issues/409)5) - Improved: Allow lowercase filters when doing search - Improved: Api: Always include 'has_more' field for paginated data - Improved: Api: Make sure pagination sort options are respected for search and other requests - Improved: Attempt to fix Outlook drag and drop on Markdown editor ([#4093](https://github.com/laurent22/joplin/issues/4093) by [@CalebJohn](https://github.com/CalebJohn)) -- Improved: Change Markdown rendering to align with CommonMark spec ([#3839](https://github.com/laurent22/joplin/issues/3839)) +- Improved: Change Markdown rendering to align with CommonMark spec ([#383](https://github.com/laurent22/joplin/issues/383)9) - Improved: Disable spell checker on config and search input fields - Improved: Disabled the auto update option in linux ([#4102](https://github.com/laurent22/joplin/issues/4102)) ([#4096](https://github.com/laurent22/joplin/issues/4096) by Anshuman Pandey) - Improved: Make Markdown editor selection more visible in Dark mode @@ -1409,7 +1409,7 @@ Plugin doc has been updated with some info about the [development process](https - New: Plugins: Added command to export folders and notes - New: Plugins: Added support app_min_version property and made it required - Improved: Upgrade to Electron 10 -- Improved: Allow exporting conflict notes ([#4095](https://github.com/laurent22/joplin/issues/4095)) +- Improved: Allow exporting conflict notes ([#409](https://github.com/laurent22/joplin/issues/409)5) - Improved: Api: Always include 'has_more' field for paginated data - Improved: Api: Make sure pagination sort options are respected for search and other requests - Improved: Attempt to fix Outlook drag and drop on Markdown editor ([#4093](https://github.com/laurent22/joplin/issues/4093) by [@CalebJohn](https://github.com/CalebJohn)) @@ -1421,40 +1421,40 @@ Plugin doc has been updated with some info about the [development process](https - Improved: Prevent lines from shifting in Markdown Editor when Scrollbar appears ([#4110](https://github.com/laurent22/joplin/issues/4110) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Put title bar and toolbar button over two lines when window size is below 800px - Improved: Refresh sidebar and notes when moving note outside of conflict folder -- Fixed: Display note count for conflict folder, and display notes even if they are completed to-dos ([#3997](https://github.com/laurent22/joplin/issues/3997)) -- Fixed: Fix crash due to React when trying to upgrade sync target ([#4098](https://github.com/laurent22/joplin/issues/4098)) +- Fixed: Display note count for conflict folder, and display notes even if they are completed to-dos ([#399](https://github.com/laurent22/joplin/issues/399)7) +- Fixed: Fix crash due to React when trying to upgrade sync target ([#409](https://github.com/laurent22/joplin/issues/409)8) - Fixed: Fix size of search bar area when notebook is empty -- Fixed: Fixed issue when a newly created note would be automatically moved to the wrong folder on save ([#4038](https://github.com/laurent22/joplin/issues/4038)) +- Fixed: Fixed issue when a newly created note would be automatically moved to the wrong folder on save ([#403](https://github.com/laurent22/joplin/issues/403)8) - Fixed: Fixed note list overflow when resized very small - Fixed: Plugins: Fixed issue with dialog being empty in some cases -- Fixed: Prevent log from filling up when certain external editors trigger many watch events ([#4011](https://github.com/laurent22/joplin/issues/4011)) +- Fixed: Prevent log from filling up when certain external editors trigger many watch events ([#401](https://github.com/laurent22/joplin/issues/401)1) - Fixed: Regression: Fixed external edit file watching -- Fixed: Resource links could not be opened from Rich Text editor on Linux ([#4073](https://github.com/laurent22/joplin/issues/4073)) +- Fixed: Resource links could not be opened from Rich Text editor on Linux ([#407](https://github.com/laurent22/joplin/issues/407)3) * * * - Fixed: Api: Fix note and resource association end points - Fixed: Fix drag and drop behaviour to "copy" instead of "move" ([#4031](https://github.com/laurent22/joplin/issues/4031) by [@CalebJohn](https://github.com/CalebJohn)) - Fixed: Fix handling of certain keys in shortcut editor ([#4022](https://github.com/laurent22/joplin/issues/4022) by Helmut K. C. Tessarek) -- Fixed: Fixed inconsistent note list state when using search ([#3904](https://github.com/laurent22/joplin/issues/3904)) +- Fixed: Fixed inconsistent note list state when using search ([#390](https://github.com/laurent22/joplin/issues/390)4) - Fixed: Fixed issue with note being saved after word has been replaced by spell checker - Fixed: Fixed text editor button tooltips - Fixed: Plugins: Fix crash when path includes trailing slash - Fixed: Regression: Fix application name - Fixed: Regression: Fix exporting to HTML and PDF -- Fixed: Tags could not be selected in some cases ([#3876](https://github.com/laurent22/joplin/issues/3876)) +- Fixed: Tags could not be selected in some cases ([#387](https://github.com/laurent22/joplin/issues/387)6) - Improved: Allow lowercase filters when doing search -- Improved: Change Markdown rendering to align with CommonMark spec ([#3839](https://github.com/laurent22/joplin/issues/3839)) +- Improved: Change Markdown rendering to align with CommonMark spec ([#383](https://github.com/laurent22/joplin/issues/383)9) - Improved: Make Markdown editor selection more visible in Dark mode - Improved: Plugins: Allow retrieving form values from dialogs - Improved: Plugins: Force plugin devtool dialog to be detached - New: Add {{bowm}} and {{bows}} - Beginning Of Week (Monday/Sunday) ([#4023](https://github.com/laurent22/joplin/issues/4023) by Helmut K. C. Tessarek) - New: Added toolbar button to switch spell checker language -- New: Adds spell checker support for Rich Text editor ([#3974](https://github.com/laurent22/joplin/issues/3974)) +- New: Adds spell checker support for Rich Text editor ([#397](https://github.com/laurent22/joplin/issues/397)4) - New: Allow customising application layout - New: Api: Added ability to watch resource file - New: Api: Added way to get the notes associated with a resource -- New: API: Adds ability to paginate data ([#3983](https://github.com/laurent22/joplin/issues/3983)) +- New: API: Adds ability to paginate data ([#398](https://github.com/laurent22/joplin/issues/398)3) - New: Plugins: Add support for editor context menu ## [v1.4.10](https://github.com/laurent22/joplin/releases/tag/v1.4.10) (Pre-release) - 2020-11-14T09:53:15Z @@ -1491,13 +1491,13 @@ Plugin doc has been updated with some info about the [development process](https - New: Added toolbar button to switch spell checker language - New: Api: Added way to get the notes associated with a resource - New: Api: Added ability to watch resource file -- New: API: Adds ability to paginate data ([#3983](https://github.com/laurent22/joplin/issues/3983)) -- New: Adds spell checker support for Rich Text editor ([#3974](https://github.com/laurent22/joplin/issues/3974)) -- Fixed: Fixed inconsistent note list state when using search ([#3904](https://github.com/laurent22/joplin/issues/3904)) +- New: API: Adds ability to paginate data ([#398](https://github.com/laurent22/joplin/issues/398)3) +- New: Adds spell checker support for Rich Text editor ([#397](https://github.com/laurent22/joplin/issues/397)4) +- Fixed: Fixed inconsistent note list state when using search ([#390](https://github.com/laurent22/joplin/issues/390)4) - Fixed: Fixed text editor button tooltips - Fixed: Regression: Fix exporting to HTML and PDF -- Fixed: Tags could not be selected in some cases ([#3876](https://github.com/laurent22/joplin/issues/3876)) -- Improved: Change Markdown rendering to align with CommonMark spec ([#3839](https://github.com/laurent22/joplin/issues/3839)) +- Fixed: Tags could not be selected in some cases ([#387](https://github.com/laurent22/joplin/issues/387)6) +- Improved: Change Markdown rendering to align with CommonMark spec ([#383](https://github.com/laurent22/joplin/issues/383)9) - Improved: Plugins: Force plugin devtool dialog to be detached ## [v1.4.9](https://github.com/laurent22/joplin/releases/tag/v1.4.9) (Pre-release) - 2020-11-11T14:23:17Z @@ -1508,18 +1508,18 @@ IMPORTANT: If you use the Clipper API, please note that there are a few breaking - New: Added toolbar button to switch spell checker language - Improved: Api: Change pagination to has_more model -- Fixed: Fixed inconsistent note list state when using search ([#3904](https://github.com/laurent22/joplin/issues/3904)) +- Fixed: Fixed inconsistent note list state when using search ([#390](https://github.com/laurent22/joplin/issues/390)4) - Fixed: Fixed text editor button tooltips - Fixed: Regression: Fix exporting to HTML and PDF -- Fixed: Tags could not be selected in some cases ([#3876](https://github.com/laurent22/joplin/issues/3876)) +- Fixed: Tags could not be selected in some cases ([#387](https://github.com/laurent22/joplin/issues/387)6) * * * - New: Api: Added way to get the notes associated with a resource - New: Api: Added ability to watch resource file -- New: API: Adds ability to paginate data ([#3983](https://github.com/laurent22/joplin/issues/3983)) -- New: Adds spell checker support for Rich Text editor ([#3974](https://github.com/laurent22/joplin/issues/3974)) -- Improved: Change Markdown rendering to align with CommonMark spec ([#3839](https://github.com/laurent22/joplin/issues/3839)) +- New: API: Adds ability to paginate data ([#398](https://github.com/laurent22/joplin/issues/398)3) +- New: Adds spell checker support for Rich Text editor ([#397](https://github.com/laurent22/joplin/issues/397)4) +- Improved: Change Markdown rendering to align with CommonMark spec ([#383](https://github.com/laurent22/joplin/issues/383)9) - Improved: Plugins: Force plugin devtool dialog to be detached ## [v1.4.7](https://github.com/laurent22/joplin/releases/tag/v1.4.7) (Pre-release) - 2020-11-07T18:23:29Z @@ -1534,18 +1534,18 @@ IMPORTANT: If you use the Clipper API, please note that there are a few breaking * * * -- New: API: Adds ability to paginate data ([#3983](https://github.com/laurent22/joplin/issues/3983)) -- New: Adds spell checker support for Rich Text editor ([#3974](https://github.com/laurent22/joplin/issues/3974)) -- Improved: Change Markdown rendering to align with CommonMark spec ([#3839](https://github.com/laurent22/joplin/issues/3839)) +- New: API: Adds ability to paginate data ([#398](https://github.com/laurent22/joplin/issues/398)3) +- New: Adds spell checker support for Rich Text editor ([#397](https://github.com/laurent22/joplin/issues/397)4) +- Improved: Change Markdown rendering to align with CommonMark spec ([#383](https://github.com/laurent22/joplin/issues/383)9) ## [v1.3.18](https://github.com/laurent22/joplin/releases/tag/v1.3.18) - 2020-11-06T12:07:02Z -- Regression: Random crash when syncing due to undefined tags ([#4051](https://github.com/laurent22/joplin/issues/4051)) -- Fixed: Keymap editor crash when an invalid command is used ([#4049](https://github.com/laurent22/joplin/issues/4049)) +- Regression: Random crash when syncing due to undefined tags ([#405](https://github.com/laurent22/joplin/issues/405)1) +- Fixed: Keymap editor crash when an invalid command is used ([#404](https://github.com/laurent22/joplin/issues/404)9) * * * -- New: Add support for application plugins ([#3257](https://github.com/laurent22/joplin/issues/3257)) +- New: Add support for application plugins ([#325](https://github.com/laurent22/joplin/issues/325)7) - New: Added Thunderbird count for desktop client ([#3880](https://github.com/laurent22/joplin/issues/3880) by [@Technik-J](https://github.com/Technik-J)) - New: Added support for Menu API for plugins - New: Added support for plugins packaged as JS bundles @@ -1567,33 +1567,33 @@ IMPORTANT: If you use the Clipper API, please note that there are a few breaking - Improved: Plugin API - added support for settings.globalValue method - Improved: Remove Hide Joplin menu item on Linux and Windows - Improved: Removed OneDrive Dev sync target which was not really useful -- Improved: Allow setting note geolocation attributes via API ([#3884](https://github.com/laurent22/joplin/issues/3884)) +- Improved: Allow setting note geolocation attributes via API ([#388](https://github.com/laurent22/joplin/issues/388)4) - Improved: Disabled emoji highlighting in editor when emoji plugin is disabled ([#3852](https://github.com/laurent22/joplin/issues/3852) by Rahil Sarvaiya) - Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting ([#3777](https://github.com/laurent22/joplin/issues/3777) by [@shawnaxsom](https://github.com/shawnaxsom)) - Improved: Make sure all commands appear in keymap editor -- Fixed: Add history backward and forward commands to keymap and menus ([#4010](https://github.com/laurent22/joplin/issues/4010)) +- Fixed: Add history backward and forward commands to keymap and menus ([#401](https://github.com/laurent22/joplin/issues/401)0) - Fixed: Fixed handling of Option key for shortcuts in macOS -- Fixed: Fix slow Katex rendering when there are many global definitions ([#3993](https://github.com/laurent22/joplin/issues/3993)) +- Fixed: Fix slow Katex rendering when there are many global definitions ([#399](https://github.com/laurent22/joplin/issues/399)3) - Fixed: Fix syntax of imported resources when importing ENEX as HTML - Fixed: Fixed OneDrive authentication -- Fixed: Fixed sync issue when importing ENEX files that contain new line characters in the source URL attribute ([#3955](https://github.com/laurent22/joplin/issues/3955)) -- Fixed: Handle gzipped CSS files when importing from clipper ([#3986](https://github.com/laurent22/joplin/issues/3986)) -- Fixed: Update highlight.js to fix freeze for certain code blocks ([#3992](https://github.com/laurent22/joplin/issues/3992)) +- Fixed: Fixed sync issue when importing ENEX files that contain new line characters in the source URL attribute ([#395](https://github.com/laurent22/joplin/issues/395)5) +- Fixed: Handle gzipped CSS files when importing from clipper ([#398](https://github.com/laurent22/joplin/issues/398)6) +- Fixed: Update highlight.js to fix freeze for certain code blocks ([#399](https://github.com/laurent22/joplin/issues/399)2) - Fixed: Fix search filters when language is in Korean or with accents ([#3947](https://github.com/laurent22/joplin/issues/3947) by Naveen M V) -- Fixed: Fixed freeze when importing ENEX as HTML, and fixed potential error when importing resources ([#3958](https://github.com/laurent22/joplin/issues/3958)) +- Fixed: Fixed freeze when importing ENEX as HTML, and fixed potential error when importing resources ([#395](https://github.com/laurent22/joplin/issues/395)8) - Fixed: Fixed setting issue that would cause a password to be saved in plain text in the database, even when the keychain is working -- Fixed: Fixed sidebar performance issue when there are many notebooks or tags ([#3893](https://github.com/laurent22/joplin/issues/3893)) -- Fixed: Allows toggling external editing off and on again ([#3886](https://github.com/laurent22/joplin/issues/3886)) +- Fixed: Fixed sidebar performance issue when there are many notebooks or tags ([#389](https://github.com/laurent22/joplin/issues/389)3) +- Fixed: Allows toggling external editing off and on again ([#388](https://github.com/laurent22/joplin/issues/388)6) - Fixed: Fixed toggleNoteList and toggleSidebar commands - Fixed: Fixed Toggle Editor button tooltip and icon ## [v1.3.17](https://github.com/laurent22/joplin/releases/tag/v1.3.17) (Pre-release) - 2020-11-06T11:35:15Z -- Regression: Random crash when syncing due to undefined tags ([#4051](https://github.com/laurent22/joplin/issues/4051)) +- Regression: Random crash when syncing due to undefined tags ([#405](https://github.com/laurent22/joplin/issues/405)1) * * * -- New: Add support for application plugins ([#3257](https://github.com/laurent22/joplin/issues/3257)) +- New: Add support for application plugins ([#325](https://github.com/laurent22/joplin/issues/325)7) - New: Added Thunderbird count for desktop client ([#3880](https://github.com/laurent22/joplin/issues/3880) by [@Technik-J](https://github.com/Technik-J)) - New: Added support for Menu API for plugins - New: Added support for plugins packaged as JS bundles @@ -1615,23 +1615,23 @@ IMPORTANT: If you use the Clipper API, please note that there are a few breaking - Improved: Plugin API - added support for settings.globalValue method - Improved: Remove Hide Joplin menu item on Linux and Windows - Improved: Removed OneDrive Dev sync target which was not really useful -- Improved: Allow setting note geolocation attributes via API ([#3884](https://github.com/laurent22/joplin/issues/3884)) +- Improved: Allow setting note geolocation attributes via API ([#388](https://github.com/laurent22/joplin/issues/388)4) - Improved: Disabled emoji highlighting in editor when emoji plugin is disabled ([#3852](https://github.com/laurent22/joplin/issues/3852) by Rahil Sarvaiya) - Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting ([#3777](https://github.com/laurent22/joplin/issues/3777) by [@shawnaxsom](https://github.com/shawnaxsom)) - Improved: Make sure all commands appear in keymap editor -- Fixed: Add history backward and forward commands to keymap and menus ([#4010](https://github.com/laurent22/joplin/issues/4010)) +- Fixed: Add history backward and forward commands to keymap and menus ([#401](https://github.com/laurent22/joplin/issues/401)0) - Fixed: Fixed handling of Option key for shortcuts in macOS -- Fixed: Fix slow Katex rendering when there are many global definitions ([#3993](https://github.com/laurent22/joplin/issues/3993)) +- Fixed: Fix slow Katex rendering when there are many global definitions ([#399](https://github.com/laurent22/joplin/issues/399)3) - Fixed: Fix syntax of imported resources when importing ENEX as HTML - Fixed: Fixed OneDrive authentication -- Fixed: Fixed sync issue when importing ENEX files that contain new line characters in the source URL attribute ([#3955](https://github.com/laurent22/joplin/issues/3955)) -- Fixed: Handle gzipped CSS files when importing from clipper ([#3986](https://github.com/laurent22/joplin/issues/3986)) -- Fixed: Update highlight.js to fix freeze for certain code blocks ([#3992](https://github.com/laurent22/joplin/issues/3992)) +- Fixed: Fixed sync issue when importing ENEX files that contain new line characters in the source URL attribute ([#395](https://github.com/laurent22/joplin/issues/395)5) +- Fixed: Handle gzipped CSS files when importing from clipper ([#398](https://github.com/laurent22/joplin/issues/398)6) +- Fixed: Update highlight.js to fix freeze for certain code blocks ([#399](https://github.com/laurent22/joplin/issues/399)2) - Fixed: Fix search filters when language is in Korean or with accents ([#3947](https://github.com/laurent22/joplin/issues/3947) by Naveen M V) -- Fixed: Fixed freeze when importing ENEX as HTML, and fixed potential error when importing resources ([#3958](https://github.com/laurent22/joplin/issues/3958)) +- Fixed: Fixed freeze when importing ENEX as HTML, and fixed potential error when importing resources ([#395](https://github.com/laurent22/joplin/issues/395)8) - Fixed: Fixed setting issue that would cause a password to be saved in plain text in the database, even when the keychain is working -- Fixed: Fixed sidebar performance issue when there are many notebooks or tags ([#3893](https://github.com/laurent22/joplin/issues/3893)) -- Fixed: Allows toggling external editing off and on again ([#3886](https://github.com/laurent22/joplin/issues/3886)) +- Fixed: Fixed sidebar performance issue when there are many notebooks or tags ([#389](https://github.com/laurent22/joplin/issues/389)3) +- Fixed: Allows toggling external editing off and on again ([#388](https://github.com/laurent22/joplin/issues/388)6) - Fixed: Fixed toggleNoteList and toggleSidebar commands - Fixed: Fixed Toggle Editor button tooltip and icon @@ -1639,13 +1639,13 @@ IMPORTANT: If you use the Clipper API, please note that there are a few breaking IMPORTANT: If you use the Clipper API, please note that there are a few breaking changes in this version. See this link for more information: https://github.com/laurent22/joplin/pull/3983 -- New: API: Adds ability to paginate data ([#3983](https://github.com/laurent22/joplin/issues/3983)) -- New: Adds spell checker support for Rich Text editor ([#3974](https://github.com/laurent22/joplin/issues/3974)) -- Improved: Change Markdown rendering to align with CommonMark spec ([#3839](https://github.com/laurent22/joplin/issues/3839)) +- New: API: Adds ability to paginate data ([#398](https://github.com/laurent22/joplin/issues/398)3) +- New: Adds spell checker support for Rich Text editor ([#397](https://github.com/laurent22/joplin/issues/397)4) +- Improved: Change Markdown rendering to align with CommonMark spec ([#383](https://github.com/laurent22/joplin/issues/383)9) ## [v1.3.15](https://github.com/laurent22/joplin/releases/tag/v1.3.15) - 2020-11-04T12:22:50Z -- New: Add support for application plugins ([#3257](https://github.com/laurent22/joplin/issues/3257)) +- New: Add support for application plugins ([#325](https://github.com/laurent22/joplin/issues/325)7) - New: Added Thunderbird count for desktop client ([#3880](https://github.com/laurent22/joplin/issues/3880) by [@Technik-J](https://github.com/Technik-J)) - New: Added support for Menu API for plugins - New: Added support for plugins packaged as JS bundles @@ -1667,36 +1667,36 @@ IMPORTANT: If you use the Clipper API, please note that there are a few breaking - Improved: Plugin API - added support for settings.globalValue method - Improved: Remove Hide Joplin menu item on Linux and Windows - Improved: Removed OneDrive Dev sync target which was not really useful -- Improved: Allow setting note geolocation attributes via API ([#3884](https://github.com/laurent22/joplin/issues/3884)) +- Improved: Allow setting note geolocation attributes via API ([#388](https://github.com/laurent22/joplin/issues/388)4) - Improved: Disabled emoji highlighting in editor when emoji plugin is disabled ([#3852](https://github.com/laurent22/joplin/issues/3852) by Rahil Sarvaiya) - Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting ([#3777](https://github.com/laurent22/joplin/issues/3777) by [@shawnaxsom](https://github.com/shawnaxsom)) - Improved: Make sure all commands appear in keymap editor -- Fixed: Add history backward and forward commands to keymap and menus ([#4010](https://github.com/laurent22/joplin/issues/4010)) +- Fixed: Add history backward and forward commands to keymap and menus ([#401](https://github.com/laurent22/joplin/issues/401)0) - Fixed: Fixed handling of Option key for shortcuts in macOS -- Fixed: Fix slow Katex rendering when there are many global definitions ([#3993](https://github.com/laurent22/joplin/issues/3993)) +- Fixed: Fix slow Katex rendering when there are many global definitions ([#399](https://github.com/laurent22/joplin/issues/399)3) - Fixed: Fix syntax of imported resources when importing ENEX as HTML - Fixed: Fixed OneDrive authentication -- Fixed: Fixed sync issue when importing ENEX files that contain new line characters in the source URL attribute ([#3955](https://github.com/laurent22/joplin/issues/3955)) -- Fixed: Handle gzipped CSS files when importing from clipper ([#3986](https://github.com/laurent22/joplin/issues/3986)) -- Fixed: Update highlight.js to fix freeze for certain code blocks ([#3992](https://github.com/laurent22/joplin/issues/3992)) +- Fixed: Fixed sync issue when importing ENEX files that contain new line characters in the source URL attribute ([#395](https://github.com/laurent22/joplin/issues/395)5) +- Fixed: Handle gzipped CSS files when importing from clipper ([#398](https://github.com/laurent22/joplin/issues/398)6) +- Fixed: Update highlight.js to fix freeze for certain code blocks ([#399](https://github.com/laurent22/joplin/issues/399)2) - Fixed: Fix search filters when language is in Korean or with accents ([#3947](https://github.com/laurent22/joplin/issues/3947) by Naveen M V) -- Fixed: Fixed freeze when importing ENEX as HTML, and fixed potential error when importing resources ([#3958](https://github.com/laurent22/joplin/issues/3958)) +- Fixed: Fixed freeze when importing ENEX as HTML, and fixed potential error when importing resources ([#395](https://github.com/laurent22/joplin/issues/395)8) - Fixed: Fixed setting issue that would cause a password to be saved in plain text in the database, even when the keychain is working -- Fixed: Fixed sidebar performance issue when there are many notebooks or tags ([#3893](https://github.com/laurent22/joplin/issues/3893)) -- Fixed: Allows toggling external editing off and on again ([#3886](https://github.com/laurent22/joplin/issues/3886)) +- Fixed: Fixed sidebar performance issue when there are many notebooks or tags ([#389](https://github.com/laurent22/joplin/issues/389)3) +- Fixed: Allows toggling external editing off and on again ([#388](https://github.com/laurent22/joplin/issues/388)6) - Fixed: Fixed toggleNoteList and toggleSidebar commands - Fixed: Fixed Toggle Editor button tooltip and icon ## [v1.3.11](https://github.com/laurent22/joplin/releases/tag/v1.3.11) (Pre-release) - 2020-10-31T13:22:20Z - Improved: Make sure all commands appear in keymap editor -- Fixed: Add history backward and forward commands to keymap and menus ([#4010](https://github.com/laurent22/joplin/issues/4010)) +- Fixed: Add history backward and forward commands to keymap and menus ([#401](https://github.com/laurent22/joplin/issues/401)0) - Fixed: Fixed handling of Option key for shortcuts in macOS - Security: Remove "link" and "meta" tags from notes to prevent XSS * * * -- New: Add support for application plugins ([#3257](https://github.com/laurent22/joplin/issues/3257)) +- New: Add support for application plugins ([#325](https://github.com/laurent22/joplin/issues/325)7) - New: Added Thunderbird count for desktop client ([#3880](https://github.com/laurent22/joplin/issues/3880) by [@Technik-J](https://github.com/Technik-J)) - New: Added support for Menu API for plugins - New: Added support for plugins packaged as JS bundles @@ -1717,20 +1717,20 @@ IMPORTANT: If you use the Clipper API, please note that there are a few breaking - Improved: Plugin API - added support for settings.globalValue method - Improved: Remove Hide Joplin menu item on Linux and Windows - Improved: Removed OneDrive Dev sync target which was not really useful -- Improved: Allow setting note geolocation attributes via API ([#3884](https://github.com/laurent22/joplin/issues/3884)) +- Improved: Allow setting note geolocation attributes via API ([#388](https://github.com/laurent22/joplin/issues/388)4) - Improved: Disabled emoji highlighting in editor when emoji plugin is disabled ([#3852](https://github.com/laurent22/joplin/issues/3852) by Rahil Sarvaiya) - Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting ([#3777](https://github.com/laurent22/joplin/issues/3777) by [@shawnaxsom](https://github.com/shawnaxsom)) -- Fixed: Fix slow Katex rendering when there are many global definitions ([#3993](https://github.com/laurent22/joplin/issues/3993)) +- Fixed: Fix slow Katex rendering when there are many global definitions ([#399](https://github.com/laurent22/joplin/issues/399)3) - Fixed: Fix syntax of imported resources when importing ENEX as HTML - Fixed: Fixed OneDrive authentication -- Fixed: Fixed sync issue when importing ENEX files that contain new line characters in the source URL attribute ([#3955](https://github.com/laurent22/joplin/issues/3955)) -- Fixed: Handle gzipped CSS files when importing from clipper ([#3986](https://github.com/laurent22/joplin/issues/3986)) -- Fixed: Update highlight.js to fix freeze for certain code blocks ([#3992](https://github.com/laurent22/joplin/issues/3992)) +- Fixed: Fixed sync issue when importing ENEX files that contain new line characters in the source URL attribute ([#395](https://github.com/laurent22/joplin/issues/395)5) +- Fixed: Handle gzipped CSS files when importing from clipper ([#398](https://github.com/laurent22/joplin/issues/398)6) +- Fixed: Update highlight.js to fix freeze for certain code blocks ([#399](https://github.com/laurent22/joplin/issues/399)2) - Fixed: Fix search filters when language is in Korean or with accents ([#3947](https://github.com/laurent22/joplin/issues/3947) by Naveen M V) -- Fixed: Fixed freeze when importing ENEX as HTML, and fixed potential error when importing resources ([#3958](https://github.com/laurent22/joplin/issues/3958)) +- Fixed: Fixed freeze when importing ENEX as HTML, and fixed potential error when importing resources ([#395](https://github.com/laurent22/joplin/issues/395)8) - Fixed: Fixed setting issue that would cause a password to be saved in plain text in the database, even when the keychain is working -- Fixed: Fixed sidebar performance issue when there are many notebooks or tags ([#3893](https://github.com/laurent22/joplin/issues/3893)) -- Fixed: Allows toggling external editing off and on again ([#3886](https://github.com/laurent22/joplin/issues/3886)) +- Fixed: Fixed sidebar performance issue when there are many notebooks or tags ([#389](https://github.com/laurent22/joplin/issues/389)3) +- Fixed: Allows toggling external editing off and on again ([#388](https://github.com/laurent22/joplin/issues/388)6) - Fixed: Fixed toggleNoteList and toggleSidebar commands - Fixed: Fixed Toggle Editor button toolip and icon @@ -1741,16 +1741,16 @@ IMPORTANT: If you use the Clipper API, please note that there are a few breaking - Fixed: Regression: Keyboard shortcut would not save in some cases - Fixed: Regression: Restore "New sub-notebook" command - Fixed: Command Palette click did not work -- Fixed: Fix slow Katex rendering when there are many global definitions ([#3993](https://github.com/laurent22/joplin/issues/3993)) +- Fixed: Fix slow Katex rendering when there are many global definitions ([#399](https://github.com/laurent22/joplin/issues/399)3) - Fixed: Fix syntax of imported resources when importing ENEX as HTML - Fixed: Fixed OneDrive authentication -- Fixed: Fixed sync issue when importing ENEX files that contain new line characters in the source URL attribute ([#3955](https://github.com/laurent22/joplin/issues/3955)) -- Fixed: Handle gzipped CSS files when importing from clipper ([#3986](https://github.com/laurent22/joplin/issues/3986)) -- Fixed: Update highlight.js to fix freeze for certain code blocks ([#3992](https://github.com/laurent22/joplin/issues/3992)) +- Fixed: Fixed sync issue when importing ENEX files that contain new line characters in the source URL attribute ([#395](https://github.com/laurent22/joplin/issues/395)5) +- Fixed: Handle gzipped CSS files when importing from clipper ([#398](https://github.com/laurent22/joplin/issues/398)6) +- Fixed: Update highlight.js to fix freeze for certain code blocks ([#399](https://github.com/laurent22/joplin/issues/399)2) * * * -- New: Add support for application plugins ([#3257](https://github.com/laurent22/joplin/issues/3257)) +- New: Add support for application plugins ([#325](https://github.com/laurent22/joplin/issues/325)7) - New: Added Thunderbird count for desktop client ([#3880](https://github.com/laurent22/joplin/issues/3880) by [@Technik-J](https://github.com/Technik-J)) - New: Added support for Menu API for plugins - New: Added support for plugins packaged as JS bundles @@ -1769,14 +1769,14 @@ IMPORTANT: If you use the Clipper API, please note that there are a few breaking - Improved: Plugin API - added support for settings.globalValue method - Improved: Remove Hide Joplin menu item on Linux and Windows - Improved: Removed OneDrive Dev sync target which was not really useful -- Improved: Allow setting note geolocation attributes via API ([#3884](https://github.com/laurent22/joplin/issues/3884)) +- Improved: Allow setting note geolocation attributes via API ([#388](https://github.com/laurent22/joplin/issues/388)4) - Improved: Disabled emoji highlighting in editor when emoji plugin is disabled ([#3852](https://github.com/laurent22/joplin/issues/3852) by Rahil Sarvaiya) - Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting ([#3777](https://github.com/laurent22/joplin/issues/3777) by [@shawnaxsom](https://github.com/shawnaxsom)) - Fixed: Fix search filters when language is in Korean or with accents ([#3947](https://github.com/laurent22/joplin/issues/3947) by Naveen M V) -- Fixed: Fixed freeze when importing ENEX as HTML, and fixed potential error when importing resources ([#3958](https://github.com/laurent22/joplin/issues/3958)) +- Fixed: Fixed freeze when importing ENEX as HTML, and fixed potential error when importing resources ([#395](https://github.com/laurent22/joplin/issues/395)8) - Fixed: Fixed setting issue that would cause a password to be saved in plain text in the database, even when the keychain is working -- Fixed: Fixed sidebar performance issue when there are many notebooks or tags ([#3893](https://github.com/laurent22/joplin/issues/3893)) -- Fixed: Allows toggling external editing off and on again ([#3886](https://github.com/laurent22/joplin/issues/3886)) +- Fixed: Fixed sidebar performance issue when there are many notebooks or tags ([#389](https://github.com/laurent22/joplin/issues/389)3) +- Fixed: Allows toggling external editing off and on again ([#388](https://github.com/laurent22/joplin/issues/388)6) - Fixed: Fixed toggleNoteList and toggleSidebar commands - Fixed: Fixed Toggle Editor button toolip and icon @@ -1791,7 +1791,7 @@ IMPORTANT: If you use the Clipper API, please note that there are a few breaking * * * -- New: Add support for application plugins ([#3257](https://github.com/laurent22/joplin/issues/3257)) +- New: Add support for application plugins ([#325](https://github.com/laurent22/joplin/issues/325)7) - New: Added Thunderbird count for desktop client ([#3880](https://github.com/laurent22/joplin/issues/3880) by [@Technik-J](https://github.com/Technik-J)) - New: Added support for Menu API for plugins - New: Added support for plugins packaged as JS bundles @@ -1807,13 +1807,13 @@ IMPORTANT: If you use the Clipper API, please note that there are a few breaking - Improved: Plugin API - added support for settings.globalValue method - Improved: Remove Hide Joplin menu item on Linux and Windows - Improved: Removed OneDrive Dev sync target which was not really useful -- Improved: Allow setting note geolocation attributes via API ([#3884](https://github.com/laurent22/joplin/issues/3884)) +- Improved: Allow setting note geolocation attributes via API ([#388](https://github.com/laurent22/joplin/issues/388)4) - Improved: Disabled emoji highlighting in editor when emoji plugin is disabled ([#3852](https://github.com/laurent22/joplin/issues/3852) by Rahil Sarvaiya) - Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting ([#3777](https://github.com/laurent22/joplin/issues/3777) by [@shawnaxsom](https://github.com/shawnaxsom)) -- Fixed: Fixed freeze when importing ENEX as HTML, and fixed potential error when importing resources ([#3958](https://github.com/laurent22/joplin/issues/3958)) +- Fixed: Fixed freeze when importing ENEX as HTML, and fixed potential error when importing resources ([#395](https://github.com/laurent22/joplin/issues/395)8) - Fixed: Fixed setting issue that would cause a password to be saved in plain text in the database, even when the keychain is working -- Fixed: Fixed sidebar performance issue when there are many notebooks or tags ([#3893](https://github.com/laurent22/joplin/issues/3893)) -- Fixed: Allows toggling external editing off and on again ([#3886](https://github.com/laurent22/joplin/issues/3886)) +- Fixed: Fixed sidebar performance issue when there are many notebooks or tags ([#389](https://github.com/laurent22/joplin/issues/389)3) +- Fixed: Allows toggling external editing off and on again ([#388](https://github.com/laurent22/joplin/issues/388)6) - Fixed: Fixed toggleNoteList and toggleSidebar commands - Fixed: Fixed Toggle Editor button toolip and icon @@ -1824,14 +1824,14 @@ IMPORTANT: If you use the Clipper API, please note that there are a few breaking - Improved: Display more info while an ENEX file is being imported - Improved: Made toolbar buttons bigger and swap order of bullet and number lists - Improved: Plugins: Allow custom commands to return a result -- Fixed: Certain commands no longer worked. ([#3962](https://github.com/laurent22/joplin/issues/3962)) -- Fixed: Fixed freeze when importing ENEX as HTML, and fixed potential error when importing resources ([#3958](https://github.com/laurent22/joplin/issues/3958)) +- Fixed: Certain commands no longer worked. ([#396](https://github.com/laurent22/joplin/issues/396)2) +- Fixed: Fixed freeze when importing ENEX as HTML, and fixed potential error when importing resources ([#395](https://github.com/laurent22/joplin/issues/395)8) - Fixed: Fixed setting issue that would cause a password to be saved in plain text in the database, even when the keychain is working - Fixed: Regression: Fixed format of copied version info * * * -- New: Add support for application plugins ([#3257](https://github.com/laurent22/joplin/issues/3257)) +- New: Add support for application plugins ([#325](https://github.com/laurent22/joplin/issues/325)7) - New: Added Thunderbird count for desktop client ([#3880](https://github.com/laurent22/joplin/issues/3880) by [@Technik-J](https://github.com/Technik-J)) - New: Added support for Menu API for plugins - New: Added support for plugins packaged as JS bundles @@ -1844,11 +1844,11 @@ IMPORTANT: If you use the Clipper API, please note that there are a few breaking - Improved: Plugin API - added support for settings.globalValue method - Improved: Remove Hide Joplin menu item on Linux and Windows - Improved: Removed OneDrive Dev sync target which was not really useful -- Improved: Allow setting note geolocation attributes via API ([#3884](https://github.com/laurent22/joplin/issues/3884)) +- Improved: Allow setting note geolocation attributes via API ([#388](https://github.com/laurent22/joplin/issues/388)4) - Improved: Disabled emoji highlighting in editor when emoji plugin is disabled ([#3852](https://github.com/laurent22/joplin/issues/3852) by Rahil Sarvaiya) - Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting ([#3777](https://github.com/laurent22/joplin/issues/3777) by [@shawnaxsom](https://github.com/shawnaxsom)) -- Fixed: Fixed sidebar performance issue when there are many notebooks or tags ([#3893](https://github.com/laurent22/joplin/issues/3893)) -- Fixed: Allows toggling external editing off and on again ([#3886](https://github.com/laurent22/joplin/issues/3886)) +- Fixed: Fixed sidebar performance issue when there are many notebooks or tags ([#389](https://github.com/laurent22/joplin/issues/389)3) +- Fixed: Allows toggling external editing off and on again ([#388](https://github.com/laurent22/joplin/issues/388)6) - Fixed: Fixed toggleNoteList and toggleSidebar commands - Fixed: Fixed Toggle Editor button toolip and icon @@ -1858,11 +1858,11 @@ IMPORTANT: If you use the Clipper API, please note that there are a few breaking - Improved: Import ``, `` tags (strikethrough) from Evernote ([#3936](https://github.com/laurent22/joplin/issues/3936) by Ian Slinger) - Improved: Simplified and improve command service, and added command palette - Improved: Tray: Exit -> Quit ([#3945](https://github.com/laurent22/joplin/issues/3945) by Helmut K. C. Tessarek) -- Fixed: Trying to fix sidebar performance issue when there are many notebooks or tags ([#3893](https://github.com/laurent22/joplin/issues/3893)) +- Fixed: Trying to fix sidebar performance issue when there are many notebooks or tags ([#389](https://github.com/laurent22/joplin/issues/389)3) * * * -- New: Add support for application plugins ([#3257](https://github.com/laurent22/joplin/issues/3257)) +- New: Add support for application plugins ([#325](https://github.com/laurent22/joplin/issues/325)7) - New: Added Thunderbird count for desktop client ([#3880](https://github.com/laurent22/joplin/issues/3880) by [@Technik-J](https://github.com/Technik-J)) - New: Added support for Menu API for plugins - New: Added support for plugins packaged as JS bundles @@ -1871,20 +1871,20 @@ IMPORTANT: If you use the Clipper API, please note that there are a few breaking - Improved: Plugin API - added support for settings.globalValue method - Improved: Remove Hide Joplin menu item on Linux and Windows - Improved: Removed OneDrive Dev sync target which was not really useful -- Improved: Allow setting note geolocation attributes via API ([#3884](https://github.com/laurent22/joplin/issues/3884)) +- Improved: Allow setting note geolocation attributes via API ([#388](https://github.com/laurent22/joplin/issues/388)4) - Improved: Disabled emoji highlighting in editor when emoji plugin is disabled ([#3852](https://github.com/laurent22/joplin/issues/3852) by Rahil Sarvaiya) - Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting ([#3777](https://github.com/laurent22/joplin/issues/3777) by [@shawnaxsom](https://github.com/shawnaxsom)) -- Fixed: Allows toggling external editing off and on again ([#3886](https://github.com/laurent22/joplin/issues/3886)) +- Fixed: Allows toggling external editing off and on again ([#388](https://github.com/laurent22/joplin/issues/388)6) - Fixed: Fixed toggleNoteList and toggleSidebar commands - Fixed: Fixed Toggle Editor button toolip and icon ## [v1.3.5](https://github.com/laurent22/joplin/releases/tag/v1.3.5) (Pre-release) - 2020-10-17T14:26:35Z - Fixed: Regression: Remove Hide Joplin menu item on Linux too -- Fixed: Regression: Editor toolbar was disabled when importing note from MD file ([#3915](https://github.com/laurent22/joplin/issues/3915)) -- Fixed: Regression: Header links with special characters were no longer working ([#3903](https://github.com/laurent22/joplin/issues/3903)) -- Fixed: Regression: Importing ENEX as HTML was importing as Markdown ([#3923](https://github.com/laurent22/joplin/issues/3923)) -- Fixed: Regression - Layout Button Sequence menu items were disabled ([#3899](https://github.com/laurent22/joplin/issues/3899)) +- Fixed: Regression: Editor toolbar was disabled when importing note from MD file ([#391](https://github.com/laurent22/joplin/issues/391)5) +- Fixed: Regression: Header links with special characters were no longer working ([#390](https://github.com/laurent22/joplin/issues/390)3) +- Fixed: Regression: Importing ENEX as HTML was importing as Markdown ([#392](https://github.com/laurent22/joplin/issues/392)3) +- Fixed: Regression - Layout Button Sequence menu items were disabled ([#389](https://github.com/laurent22/joplin/issues/389)9) - Fixed: Regression: Fix export of pluginAssets when exporting to html/pdf ([#3927](https://github.com/laurent22/joplin/issues/3927) by Caleb John) - Fixed: Regression: Fixed check for update - Fixed: Regression: Fixed move to notebook from context menu @@ -1892,7 +1892,7 @@ IMPORTANT: If you use the Clipper API, please note that there are a few breaking * * * -- New: Add support for application plugins ([#3257](https://github.com/laurent22/joplin/issues/3257)) +- New: Add support for application plugins ([#325](https://github.com/laurent22/joplin/issues/325)7) - New: Added Thunderbird count for desktop client ([#3880](https://github.com/laurent22/joplin/issues/3880) by [@Technik-J](https://github.com/Technik-J)) - New: Added support for Menu API for plugins - New: Added support for plugins packaged as JS bundles @@ -1901,27 +1901,27 @@ IMPORTANT: If you use the Clipper API, please note that there are a few breaking - Improved: Plugin API - added support for settings.globalValue method - Improved: Remove Hide Joplin menu item on Linux and Windows - Improved: Removed OneDrive Dev sync target which was not really useful -- Improved: Allow setting note geolocation attributes via API ([#3884](https://github.com/laurent22/joplin/issues/3884)) +- Improved: Allow setting note geolocation attributes via API ([#388](https://github.com/laurent22/joplin/issues/388)4) - Improved: Disabled emoji highlighting in editor when emoji plugin is disabled ([#3852](https://github.com/laurent22/joplin/issues/3852) by Rahil Sarvaiya) - Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting ([#3777](https://github.com/laurent22/joplin/issues/3777) by [@shawnaxsom](https://github.com/shawnaxsom)) -- Fixed: Allows toggling external editing off and on again ([#3886](https://github.com/laurent22/joplin/issues/3886)) +- Fixed: Allows toggling external editing off and on again ([#388](https://github.com/laurent22/joplin/issues/388)6) - Fixed: Fixed toggleNoteList and toggleSidebar commands - Fixed: Fixed Toggle Editor button toolip and icon ## [v1.3.3](https://github.com/laurent22/joplin/releases/tag/v1.3.3) (Pre-release) - 2020-10-17T10:56:57Z - Fixed: Regression: Remove Hide Joplin menu item on Linux too -- Fixed: Regression: Editor toolbar was disabled when importing note from MD file ([#3915](https://github.com/laurent22/joplin/issues/3915)) -- Fixed: Regression: Header links with special characters were no longer working ([#3903](https://github.com/laurent22/joplin/issues/3903)) -- Fixed: Regression: Importing ENEX as HTML was importing as Markdown ([#3923](https://github.com/laurent22/joplin/issues/3923)) -- Fixed: Regression - Layout Button Sequence menu items were disabled ([#3899](https://github.com/laurent22/joplin/issues/3899)) +- Fixed: Regression: Editor toolbar was disabled when importing note from MD file ([#391](https://github.com/laurent22/joplin/issues/391)5) +- Fixed: Regression: Header links with special characters were no longer working ([#390](https://github.com/laurent22/joplin/issues/390)3) +- Fixed: Regression: Importing ENEX as HTML was importing as Markdown ([#392](https://github.com/laurent22/joplin/issues/392)3) +- Fixed: Regression - Layout Button Sequence menu items were disabled ([#389](https://github.com/laurent22/joplin/issues/389)9) - Fixed: Regression: Fix export of pluginAssets when exporting to html/pdf ([#3927](https://github.com/laurent22/joplin/issues/3927) by Caleb John) - Fixed: Regression: Fixed check for update - Fixed: Regression: Fixed move to notebook from context menu * * * -- New: Add support for application plugins ([#3257](https://github.com/laurent22/joplin/issues/3257)) +- New: Add support for application plugins ([#325](https://github.com/laurent22/joplin/issues/325)7) - New: Added Thunderbird count for desktop client ([#3880](https://github.com/laurent22/joplin/issues/3880) by [@Technik-J](https://github.com/Technik-J)) - New: Added support for Menu API for plugins - New: Added support for plugins packaged as JS bundles @@ -1930,10 +1930,10 @@ IMPORTANT: If you use the Clipper API, please note that there are a few breaking - Improved: Plugin API - added support for settings.globalValue method - Improved: Remove Hide Joplin menu item on Linux and Windows - Improved: Removed OneDrive Dev sync target which was not really useful -- Improved: Allow setting note geolocation attributes via API ([#3884](https://github.com/laurent22/joplin/issues/3884)) +- Improved: Allow setting note geolocation attributes via API ([#388](https://github.com/laurent22/joplin/issues/388)4) - Improved: Disabled emoji highlighting in editor when emoji plugin is disabled ([#3852](https://github.com/laurent22/joplin/issues/3852) by Rahil Sarvaiya) - Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting ([#3777](https://github.com/laurent22/joplin/issues/3777) by [@shawnaxsom](https://github.com/shawnaxsom)) -- Fixed: Allows toggling external editing off and on again ([#3886](https://github.com/laurent22/joplin/issues/3886)) +- Fixed: Allows toggling external editing off and on again ([#388](https://github.com/laurent22/joplin/issues/388)6) - Fixed: Fixed toggleNoteList and toggleSidebar commands - Fixed: Fixed Toggle Editor button toolip and icon @@ -1943,23 +1943,23 @@ IMPORTANT: If you use the Clipper API, please note that there are a few breaking * * * -- New: Add support for application plugins ([#3257](https://github.com/laurent22/joplin/issues/3257)) -- Improved: Allow setting note geolocation attributes via API ([#3884](https://github.com/laurent22/joplin/issues/3884)) +- New: Add support for application plugins ([#325](https://github.com/laurent22/joplin/issues/325)7) +- Improved: Allow setting note geolocation attributes via API ([#388](https://github.com/laurent22/joplin/issues/388)4) - Improved: Disabled emoji highlighting in editor when emoji plugin is disabled ([#3852](https://github.com/laurent22/joplin/issues/3852) by Rahil Sarvaiya) - Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting ([#3777](https://github.com/laurent22/joplin/issues/3777) by [@shawnaxsom](https://github.com/shawnaxsom)) -- Fixed: Allows toggling external editing off and on again ([#3886](https://github.com/laurent22/joplin/issues/3886)) +- Fixed: Allows toggling external editing off and on again ([#388](https://github.com/laurent22/joplin/issues/388)6) ## [v1.3.1](https://github.com/laurent22/joplin/releases/tag/v1.3.1) (Pre-release) - 2020-10-11T15:10:18Z -- New: Add support for application plugins ([#3257](https://github.com/laurent22/joplin/issues/3257)) -- Improved: Allow setting note geolocation attributes via API ([#3884](https://github.com/laurent22/joplin/issues/3884)) +- New: Add support for application plugins ([#325](https://github.com/laurent22/joplin/issues/325)7) +- Improved: Allow setting note geolocation attributes via API ([#388](https://github.com/laurent22/joplin/issues/388)4) - Improved: Disabled emoji highlighting in editor when emoji plugin is disabled ([#3852](https://github.com/laurent22/joplin/issues/3852) by Rahil Sarvaiya) - Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting ([#3777](https://github.com/laurent22/joplin/issues/3777) by [@shawnaxsom](https://github.com/shawnaxsom)) -- Fixed: Allows toggling external editing off and on again ([#3886](https://github.com/laurent22/joplin/issues/3886)) +- Fixed: Allows toggling external editing off and on again ([#388](https://github.com/laurent22/joplin/issues/388)6) ## [v1.2.6](https://github.com/laurent22/joplin/releases/tag/v1.2.6) - 2020-10-09T13:56:59Z -- New: Updated UI ([#3586](https://github.com/laurent22/joplin/issues/3586)) +- New: Updated UI ([#358](https://github.com/laurent22/joplin/issues/358)6) - Improved: Add frequently used languages to markdown editor ([#3786](https://github.com/laurent22/joplin/issues/3786) by Carlos Eduardo) - Improved: Adjust the codemirror code block colors for the dark theme ([#3794](https://github.com/laurent22/joplin/issues/3794) by Caleb John) - Improved: Disable auto-update by default @@ -1968,19 +1968,19 @@ IMPORTANT: If you use the Clipper API, please note that there are a few breaking - Improved: Optimised sidebar rendering speed - Improved: Upgrade Mermaid to v8.8.0 ([#3745](https://github.com/laurent22/joplin/issues/3745)) ([#3740](https://github.com/laurent22/joplin/issues/3740) by Caleb John) - Fixed: Add stricter rules for katex blocks ([#3795](https://github.com/laurent22/joplin/issues/3795)) ([#3791](https://github.com/laurent22/joplin/issues/3791) by Caleb John) -- Fixed: Allow Read Time label to be translated ([#3684](https://github.com/laurent22/joplin/issues/3684)) -- Fixed: Always use light theme for notes in HTML mode ([#3698](https://github.com/laurent22/joplin/issues/3698)) -- Fixed: Disable editor shortcuts when a dialog, such as GotoAnything, is visible ([#3700](https://github.com/laurent22/joplin/issues/3700)) +- Fixed: Allow Read Time label to be translated ([#368](https://github.com/laurent22/joplin/issues/368)4) +- Fixed: Always use light theme for notes in HTML mode ([#369](https://github.com/laurent22/joplin/issues/369)8) +- Fixed: Disable editor shortcuts when a dialog, such as GotoAnything, is visible ([#370](https://github.com/laurent22/joplin/issues/370)0) - Fixed: Fade out checked items in Rich Text editor too - Fixed: Fix bug where editor would scroll to focus global search ([#3787](https://github.com/laurent22/joplin/issues/3787) by Caleb John) - Fixed: Fix missed highlighting when using the global search ([#3717](https://github.com/laurent22/joplin/issues/3717) by Caleb John) -- Fixed: Fixed editor font size ([#3801](https://github.com/laurent22/joplin/issues/3801)) -- Fixed: Fixed issue when switching from search to "All notes" ([#3748](https://github.com/laurent22/joplin/issues/3748)) -- Fixed: Improved handling of special characters when exporting to Markdown ([#3760](https://github.com/laurent22/joplin/issues/3760)) -- Fixed: Notebooks and tags click area was too narrow ([#3876](https://github.com/laurent22/joplin/issues/3876)) -- Fixed: Only disable relevant toolbar buttons when editor is read-only ([#3810](https://github.com/laurent22/joplin/issues/3810)) -- Fixed: Prevent crash in rare case when opening the config screen ([#3835](https://github.com/laurent22/joplin/issues/3835)) -- Fixed: Refresh search results when searching by tag and when a tag is changed ([#3754](https://github.com/laurent22/joplin/issues/3754)) +- Fixed: Fixed editor font size ([#380](https://github.com/laurent22/joplin/issues/380)1) +- Fixed: Fixed issue when switching from search to "All notes" ([#374](https://github.com/laurent22/joplin/issues/374)8) +- Fixed: Improved handling of special characters when exporting to Markdown ([#376](https://github.com/laurent22/joplin/issues/376)0) +- Fixed: Notebooks and tags click area was too narrow ([#387](https://github.com/laurent22/joplin/issues/387)6) +- Fixed: Only disable relevant toolbar buttons when editor is read-only ([#381](https://github.com/laurent22/joplin/issues/381)0) +- Fixed: Prevent crash in rare case when opening the config screen ([#383](https://github.com/laurent22/joplin/issues/383)5) +- Fixed: Refresh search results when searching by tag and when a tag is changed ([#375](https://github.com/laurent22/joplin/issues/375)4) ## [v1.2.4](https://github.com/laurent22/joplin/releases/tag/v1.2.4) (Pre-release) - 2020-09-30T07:34:29Z @@ -1999,31 +1999,31 @@ IMPORTANT: If you use the Clipper API, please note that there are a few breaking - Improved: Optimised sidebar rendering speed - Fixed: Fade out checked items in Rich Text editor too - Fixed: Fix issue with highlighted search terms in CodeMirror viewer -- Fixed: Fixed editor font size ([#3801](https://github.com/laurent22/joplin/issues/3801)) -- Fixed: Only disable relevant toolbar buttons when editor is read-only ([#3810](https://github.com/laurent22/joplin/issues/3810)) -- Fixed: Prevent crash in rare case when opening the config screen ([#3835](https://github.com/laurent22/joplin/issues/3835)) -- Fixed: Refresh search results when searching by tag and when a tag is changed ([#3754](https://github.com/laurent22/joplin/issues/3754)) +- Fixed: Fixed editor font size ([#380](https://github.com/laurent22/joplin/issues/380)1) +- Fixed: Only disable relevant toolbar buttons when editor is read-only ([#381](https://github.com/laurent22/joplin/issues/381)0) +- Fixed: Prevent crash in rare case when opening the config screen ([#383](https://github.com/laurent22/joplin/issues/383)5) +- Fixed: Refresh search results when searching by tag and when a tag is changed ([#375](https://github.com/laurent22/joplin/issues/375)4) ## [v1.2.2](https://github.com/laurent22/joplin/releases/tag/v1.2.2) (Pre-release) - 2020-09-22T20:31:55Z - New: Add frequently used languages to markdown editor ([#3786](https://github.com/laurent22/joplin/issues/3786) by Carlos Eduardo) - Improved: Disable auto-update by default - Improved: Improved menu enabled states when not in main screen -- Improved: UI update ([#3586](https://github.com/laurent22/joplin/issues/3586)) +- Improved: UI update ([#358](https://github.com/laurent22/joplin/issues/358)6) - Improved: Upgrade Mermaid to v8.8.0 ([#3745](https://github.com/laurent22/joplin/issues/3745)) ([#3740](https://github.com/laurent22/joplin/issues/3740) by Caleb John) - Fixed: Add stricter rules for katex blocks ([#3795](https://github.com/laurent22/joplin/issues/3795)) ([#3791](https://github.com/laurent22/joplin/issues/3791) by Caleb John) -- Fixed: Allow Read Time label to be translated ([#3684](https://github.com/laurent22/joplin/issues/3684)) -- Fixed: Always use light theme for notes in HTML mode ([#3698](https://github.com/laurent22/joplin/issues/3698)) -- Fixed: Disable editor shortcuts when a dialog, such as GotoAnything, is visible ([#3700](https://github.com/laurent22/joplin/issues/3700)) +- Fixed: Allow Read Time label to be translated ([#368](https://github.com/laurent22/joplin/issues/368)4) +- Fixed: Always use light theme for notes in HTML mode ([#369](https://github.com/laurent22/joplin/issues/369)8) +- Fixed: Disable editor shortcuts when a dialog, such as GotoAnything, is visible ([#370](https://github.com/laurent22/joplin/issues/370)0) - Fixed: Fix bug where editor would scroll to focus global search ([#3787](https://github.com/laurent22/joplin/issues/3787) by Caleb John) - Fixed: Fix missed highlighting when using the global search ([#3717](https://github.com/laurent22/joplin/issues/3717) by Caleb John) -- Fixed: Fixed issue when switching from search to "All notes" ([#3748](https://github.com/laurent22/joplin/issues/3748)) -- Fixed: Improved handling of special characters when exporting to Markdown ([#3760](https://github.com/laurent22/joplin/issues/3760)) +- Fixed: Fixed issue when switching from search to "All notes" ([#374](https://github.com/laurent22/joplin/issues/374)8) +- Fixed: Improved handling of special characters when exporting to Markdown ([#376](https://github.com/laurent22/joplin/issues/376)0) ## [v1.1.4](https://github.com/laurent22/joplin/releases/tag/v1.1.4) - 2020-09-21T11:20:09Z - New: Add keyboard shortcut editor ([#3525](https://github.com/laurent22/joplin/issues/3525) by Anjula Karunarathne) -- New: Add log statement to try to fix issue [#3536](https://github.com/laurent22/joplin/issues/3536) +- New: Add log statement to try to fix issue [#35](https://github.com/laurent22/joplin/issues/35)36 - Improved: Change codemirror default home and end to be visual line based ([#3672](https://github.com/laurent22/joplin/issues/3672) by Caleb John) - Improved: Clarifies labels of certain actions, and added shortcut for note list toggle - Improved: Do not prevent export when one item is still encrypted @@ -2034,21 +2034,21 @@ IMPORTANT: If you use the Clipper API, please note that there are a few breaking - Security: Disallow EMBED tags to prevent XSS vulnerability (CVE-2020-15930, vulnerability found by Ademar Nowasky Junior) - Security: Upgrade packages to fix vulnerabilities - Fixed: Creating a note after backward redirection places it in a wrong notebook ([#3759](https://github.com/laurent22/joplin/issues/3759) by Naveen M V) -- Fixed: Fix applying tags to multiple notes ([#3710](https://github.com/laurent22/joplin/issues/3710)) +- Fixed: Fix applying tags to multiple notes ([#371](https://github.com/laurent22/joplin/issues/371)0) - Fixed: Fix bug with quotes when searching ([#3735](https://github.com/laurent22/joplin/issues/3735) by Naveen M V) - Fixed: Fix wildcard search ([#3713](https://github.com/laurent22/joplin/issues/3713) by Naveen M V) - Fixed: Fixed clock sync logic when creating new sync target -- Fixed: Fixed copying link in Rich Text editor ([#3697](https://github.com/laurent22/joplin/issues/3697)) -- Fixed: Fixed note export when there are folders with non-existing parents. Also fixed long path issue on Windows. ([#3689](https://github.com/laurent22/joplin/issues/3689)) -- Fixed: Fixed viewer font size, in particular for inline code ([#3553](https://github.com/laurent22/joplin/issues/3553)) -- Fixed: Increased file extension limit to 20 to prevent issue when using external editors ([#3696](https://github.com/laurent22/joplin/issues/3696)) +- Fixed: Fixed copying link in Rich Text editor ([#369](https://github.com/laurent22/joplin/issues/369)7) +- Fixed: Fixed note export when there are folders with non-existing parents. Also fixed long path issue on Windows. ([#368](https://github.com/laurent22/joplin/issues/368)9) +- Fixed: Fixed viewer font size, in particular for inline code ([#355](https://github.com/laurent22/joplin/issues/355)3) +- Fixed: Increased file extension limit to 20 to prevent issue when using external editors ([#369](https://github.com/laurent22/joplin/issues/369)6) - Fixed: Use joplin list handling in emacs mode ([#3758](https://github.com/laurent22/joplin/issues/3758)) ([#3749](https://github.com/laurent22/joplin/issues/3749) by Caleb John) ## [v1.1.3](https://github.com/laurent22/joplin/releases/tag/v1.1.3) (Pre-release) - 2020-09-17T10:30:37Z - Improved: Do not prevent export when one item is still encrypted - Fixed: Creating a note after backward redirection places it in a wrong notebook ([#3759](https://github.com/laurent22/joplin/issues/3759) by Naveen M V) -- Fixed: Increased file extension limit to 20 to prevent issue when using external editors ([#3696](https://github.com/laurent22/joplin/issues/3696)) +- Fixed: Increased file extension limit to 20 to prevent issue when using external editors ([#369](https://github.com/laurent22/joplin/issues/369)6) - Fixed: Use joplin list handling in emacs mode ([#3758](https://github.com/laurent22/joplin/issues/3758)) ([#3749](https://github.com/laurent22/joplin/issues/3749) by Caleb John) ## [v1.1.2](https://github.com/laurent22/joplin/releases/tag/v1.1.2) (Pre-release) - 2020-09-15T12:58:38Z @@ -2065,12 +2065,12 @@ IMPORTANT: If you use the Clipper API, please note that there are a few breaking - Improved: Rename menu item from "Export" to "Export all" to clarify what it does - Improved: Sync immediately on startup - Security: Disallow EMBED tags to prevent XSS vulnerability (CVE-2020-15930, vulnerability found by Ademar Nowasky Junior) -- Fixed: Fix applying tags to multiple notes ([#3710](https://github.com/laurent22/joplin/issues/3710)) +- Fixed: Fix applying tags to multiple notes ([#371](https://github.com/laurent22/joplin/issues/371)0) - Fixed: Fix bug with quotes when searching ([#3735](https://github.com/laurent22/joplin/issues/3735) by Naveen M V) - Fixed: Fix wildcard search ([#3713](https://github.com/laurent22/joplin/issues/3713) by Naveen M V) -- Fixed: Fixed copying link in Rich Text editor ([#3697](https://github.com/laurent22/joplin/issues/3697)) -- Fixed: Fixed note export when there are folders with non-existing parents. Also fixed long path issue on Windows. ([#3689](https://github.com/laurent22/joplin/issues/3689)) -- Fixed: Fixed viewer font size, in particular for inline code ([#3553](https://github.com/laurent22/joplin/issues/3553)) +- Fixed: Fixed copying link in Rich Text editor ([#369](https://github.com/laurent22/joplin/issues/369)7) +- Fixed: Fixed note export when there are folders with non-existing parents. Also fixed long path issue on Windows. ([#368](https://github.com/laurent22/joplin/issues/368)9) +- Fixed: Fixed viewer font size, in particular for inline code ([#355](https://github.com/laurent22/joplin/issues/355)3) ## [v1.0.245](https://github.com/laurent22/joplin/releases/tag/v1.0.245) - 2020-09-09T12:56:10Z @@ -2086,7 +2086,7 @@ This release will ask you to upgrade your sync target and, once it is done, only This version also includes an update to the search engine and as a result starting the app the first might be SLOW, as the search engine indexes all your notes. It might take from a few seconds to several minutes depending on how large your note collection is. This is a one off operation. -- New: Add mechanism to lock and upgrade sync targets ([#3524](https://github.com/laurent22/joplin/issues/3524)) +- New: Add mechanism to lock and upgrade sync targets ([#352](https://github.com/laurent22/joplin/issues/352)4) - New: Add version info to error screen - New: Added KeymapService to manage keyboard shortcuts ([#3252](https://github.com/laurent22/joplin/issues/3252) by Anjula Karunarathne) - New: Added attach file to menu bar ([#3540](https://github.com/laurent22/joplin/issues/3540) by [@R3dError](https://github.com/R3dError)) @@ -2096,17 +2096,17 @@ This version also includes an update to the search engine and as a result starti - Improved: Codemirror: clean up list indent code ([#3581](https://github.com/laurent22/joplin/issues/3581) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Enable CodeMirror keybindings ([#3545](https://github.com/laurent22/joplin/issues/3545) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Fix AppImage Icon ([#3570](https://github.com/laurent22/joplin/issues/3570)) ([#3529](https://github.com/laurent22/joplin/issues/3529) by [@Jesssullivan](https://github.com/Jesssullivan)) -- Improved: Hide completed to-dos in GotoAnything ([#3580](https://github.com/laurent22/joplin/issues/3580)) +- Improved: Hide completed to-dos in GotoAnything ([#358](https://github.com/laurent22/joplin/issues/358)0) - Improved: Implement scroll-past-end on CodeMirror editor ([#3589](https://github.com/laurent22/joplin/issues/3589) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Show full folder name in mouse-over pop-up text ([#3590](https://github.com/laurent22/joplin/issues/3590)) ([#3569](https://github.com/laurent22/joplin/issues/3569) by Allan Jacquet-Cretides) - Improved: Toggle Editor rather than setting split mode on search ([#3561](https://github.com/laurent22/joplin/issues/3561) by [@CalebJohn](https://github.com/CalebJohn)) -- Fixed: Fixed copy, cut and paste in Rich Text editor ([#3565](https://github.com/laurent22/joplin/issues/3565)) +- Fixed: Fixed copy, cut and paste in Rich Text editor ([#356](https://github.com/laurent22/joplin/issues/356)5) - Fixed: Fixed scrolling issue when editing while searching in CodeMirror ([#3593](https://github.com/laurent22/joplin/issues/3593) by [@CalebJohn](https://github.com/CalebJohn)) - Fixed: Fixed sync fetching issue ([#3599](https://github.com/laurent22/joplin/issues/3599)) ([#3591](https://github.com/laurent22/joplin/issues/3591) by [@alexchee](https://github.com/alexchee)) - Fixed: Fixed vim mode issue where status bar was not visible ([#3606](https://github.com/laurent22/joplin/issues/3606) by [@CalebJohn](https://github.com/CalebJohn)) - Fixed: Modify the CodeMirror linter plugin to fix katex ([#3582](https://github.com/laurent22/joplin/issues/3582)) ([#3560](https://github.com/laurent22/joplin/issues/3560) by [@CalebJohn](https://github.com/CalebJohn)) -- Fixed: Fixed Katex font rendering ([#3664](https://github.com/laurent22/joplin/issues/3664)) -- Fixed: Fix links within Mermaid documents ([#3618](https://github.com/laurent22/joplin/issues/3618)) +- Fixed: Fixed Katex font rendering ([#366](https://github.com/laurent22/joplin/issues/366)4) +- Fixed: Fix links within Mermaid documents ([#361](https://github.com/laurent22/joplin/issues/361)8) ## [v1.0.239](https://github.com/laurent22/joplin/releases/tag/v1.0.239) (Pre-release) - 2020-09-01T21:56:36Z @@ -2117,11 +2117,11 @@ This version also includes an update to the search engine and as a result starti Regression fixes: - Fixes [#3645](https://github.com/laurent22/joplin/issues/3645): Improved handling of startup errors, and prevent window from being invisible when upgrading sync target -- Fixed OneDrive synchronisation ([#3674](https://github.com/laurent22/joplin/issues/3674)) +- Fixed OneDrive synchronisation ([#367](https://github.com/laurent22/joplin/issues/367)4) Main changes: -- New: Add mechanism to lock and upgrade sync targets ([#3524](https://github.com/laurent22/joplin/issues/3524)) +- New: Add mechanism to lock and upgrade sync targets ([#352](https://github.com/laurent22/joplin/issues/352)4) - New: Add version info to error screen - New: Added KeymapService to manage keyboard shortcuts ([#3252](https://github.com/laurent22/joplin/issues/3252) by Anjula Karunarathne) - New: Added attach file to menu bar ([#3540](https://github.com/laurent22/joplin/issues/3540) by [@R3dError](https://github.com/R3dError)) @@ -2131,11 +2131,11 @@ Main changes: - Improved: Codemirror: clean up list indent code ([#3581](https://github.com/laurent22/joplin/issues/3581) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Enable CodeMirror keybindings ([#3545](https://github.com/laurent22/joplin/issues/3545) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Fix AppImage Icon ([#3570](https://github.com/laurent22/joplin/issues/3570)) ([#3529](https://github.com/laurent22/joplin/issues/3529) by [@Jesssullivan](https://github.com/Jesssullivan)) -- Improved: Hide completed to-dos in GotoAnything ([#3580](https://github.com/laurent22/joplin/issues/3580)) +- Improved: Hide completed to-dos in GotoAnything ([#358](https://github.com/laurent22/joplin/issues/358)0) - Improved: Implement scroll-past-end on CodeMirror editor ([#3589](https://github.com/laurent22/joplin/issues/3589) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Show full folder name in mouse-over pop-up text ([#3590](https://github.com/laurent22/joplin/issues/3590)) ([#3569](https://github.com/laurent22/joplin/issues/3569) by Allan Jacquet-Cretides) - Improved: Toggle Editor rather than setting split mode on search ([#3561](https://github.com/laurent22/joplin/issues/3561) by [@CalebJohn](https://github.com/CalebJohn)) -- Fixed: Fixed copy, cut and paste in Rich Text editor ([#3565](https://github.com/laurent22/joplin/issues/3565)) +- Fixed: Fixed copy, cut and paste in Rich Text editor ([#356](https://github.com/laurent22/joplin/issues/356)5) - Fixed: Fixed scrolling issue when editing while searching in CodeMirror ([#3593](https://github.com/laurent22/joplin/issues/3593) by [@CalebJohn](https://github.com/CalebJohn)) - Fixed: Fixed sync fetching issue ([#3599](https://github.com/laurent22/joplin/issues/3599)) ([#3591](https://github.com/laurent22/joplin/issues/3591) by [@alexchee](https://github.com/alexchee)) - Fixed: Fixed vim mode issue where status bar was not visible ([#3606](https://github.com/laurent22/joplin/issues/3606) by [@CalebJohn](https://github.com/CalebJohn)) @@ -2150,11 +2150,11 @@ This version also includes an update to the search engine and as a result starti Regression fixes: - Linux: Fixes [#3645](https://github.com/laurent22/joplin/issues/3645): Prevent lock when restarting app -- Fixed OneDrive synchronisation ([#3674](https://github.com/laurent22/joplin/issues/3674)) +- Fixed OneDrive synchronisation ([#367](https://github.com/laurent22/joplin/issues/367)4) Main changes: -- New: Add mechanism to lock and upgrade sync targets ([#3524](https://github.com/laurent22/joplin/issues/3524)) +- New: Add mechanism to lock and upgrade sync targets ([#352](https://github.com/laurent22/joplin/issues/352)4) - New: Add version info to error screen - New: Added KeymapService to manage keyboard shortcuts ([#3252](https://github.com/laurent22/joplin/issues/3252) by Anjula Karunarathne) - New: Added attach file to menu bar ([#3540](https://github.com/laurent22/joplin/issues/3540) by [@R3dError](https://github.com/R3dError)) @@ -2164,11 +2164,11 @@ Main changes: - Improved: Codemirror: clean up list indent code ([#3581](https://github.com/laurent22/joplin/issues/3581) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Enable CodeMirror keybindings ([#3545](https://github.com/laurent22/joplin/issues/3545) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Fix AppImage Icon ([#3570](https://github.com/laurent22/joplin/issues/3570)) ([#3529](https://github.com/laurent22/joplin/issues/3529) by [@Jesssullivan](https://github.com/Jesssullivan)) -- Improved: Hide completed to-dos in GotoAnything ([#3580](https://github.com/laurent22/joplin/issues/3580)) +- Improved: Hide completed to-dos in GotoAnything ([#358](https://github.com/laurent22/joplin/issues/358)0) - Improved: Implement scroll-past-end on CodeMirror editor ([#3589](https://github.com/laurent22/joplin/issues/3589) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Show full folder name in mouse-over pop-up text ([#3590](https://github.com/laurent22/joplin/issues/3590)) ([#3569](https://github.com/laurent22/joplin/issues/3569) by Allan Jacquet-Cretides) - Improved: Toggle Editor rather than setting split mode on search ([#3561](https://github.com/laurent22/joplin/issues/3561) by [@CalebJohn](https://github.com/CalebJohn)) -- Fixed: Fixed copy, cut and paste in Rich Text editor ([#3565](https://github.com/laurent22/joplin/issues/3565)) +- Fixed: Fixed copy, cut and paste in Rich Text editor ([#356](https://github.com/laurent22/joplin/issues/356)5) - Fixed: Fixed scrolling issue when editing while searching in CodeMirror ([#3593](https://github.com/laurent22/joplin/issues/3593) by [@CalebJohn](https://github.com/CalebJohn)) - Fixed: Fixed sync fetching issue ([#3599](https://github.com/laurent22/joplin/issues/3599)) ([#3591](https://github.com/laurent22/joplin/issues/3591) by [@alexchee](https://github.com/alexchee)) - Fixed: Fixed vim mode issue where status bar was not visible ([#3606](https://github.com/laurent22/joplin/issues/3606) by [@CalebJohn](https://github.com/CalebJohn)) @@ -2182,11 +2182,11 @@ This version also includes an update to the search engine and as a result starti Regression fixes: -- Fixed OneDrive synchronisation ([#3674](https://github.com/laurent22/joplin/issues/3674)) +- Fixed OneDrive synchronisation ([#367](https://github.com/laurent22/joplin/issues/367)4) Main changes: -- New: Add mechanism to lock and upgrade sync targets ([#3524](https://github.com/laurent22/joplin/issues/3524)) +- New: Add mechanism to lock and upgrade sync targets ([#352](https://github.com/laurent22/joplin/issues/352)4) - New: Add version info to error screen - New: Added KeymapService to manage keyboard shortcuts ([#3252](https://github.com/laurent22/joplin/issues/3252) by Anjula Karunarathne) - New: Added attach file to menu bar ([#3540](https://github.com/laurent22/joplin/issues/3540) by [@R3dError](https://github.com/R3dError)) @@ -2196,11 +2196,11 @@ Main changes: - Improved: Codemirror: clean up list indent code ([#3581](https://github.com/laurent22/joplin/issues/3581) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Enable CodeMirror keybindings ([#3545](https://github.com/laurent22/joplin/issues/3545) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Fix AppImage Icon ([#3570](https://github.com/laurent22/joplin/issues/3570)) ([#3529](https://github.com/laurent22/joplin/issues/3529) by [@Jesssullivan](https://github.com/Jesssullivan)) -- Improved: Hide completed to-dos in GotoAnything ([#3580](https://github.com/laurent22/joplin/issues/3580)) +- Improved: Hide completed to-dos in GotoAnything ([#358](https://github.com/laurent22/joplin/issues/358)0) - Improved: Implement scroll-past-end on CodeMirror editor ([#3589](https://github.com/laurent22/joplin/issues/3589) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Show full folder name in mouse-over pop-up text ([#3590](https://github.com/laurent22/joplin/issues/3590)) ([#3569](https://github.com/laurent22/joplin/issues/3569) by Allan Jacquet-Cretides) - Improved: Toggle Editor rather than setting split mode on search ([#3561](https://github.com/laurent22/joplin/issues/3561) by [@CalebJohn](https://github.com/CalebJohn)) -- Fixed: Fixed copy, cut and paste in Rich Text editor ([#3565](https://github.com/laurent22/joplin/issues/3565)) +- Fixed: Fixed copy, cut and paste in Rich Text editor ([#356](https://github.com/laurent22/joplin/issues/356)5) - Fixed: Fixed scrolling issue when editing while searching in CodeMirror ([#3593](https://github.com/laurent22/joplin/issues/3593) by [@CalebJohn](https://github.com/CalebJohn)) - Fixed: Fixed sync fetching issue ([#3599](https://github.com/laurent22/joplin/issues/3599)) ([#3591](https://github.com/laurent22/joplin/issues/3591) by [@alexchee](https://github.com/alexchee)) - Fixed: Fixed vim mode issue where status bar was not visible ([#3606](https://github.com/laurent22/joplin/issues/3606) by [@CalebJohn](https://github.com/CalebJohn)) @@ -2212,7 +2212,7 @@ Important: This pre-release will ask you to upgrade your sync target and, once i This version also includes an update to the search engine and as a result starting the app the first might be SLOW, as the search engine indexes all your notes. It might take from a few seconds to several minutes depending on how large your note collection is -- New: Add mechanism to lock and upgrade sync targets ([#3524](https://github.com/laurent22/joplin/issues/3524)) +- New: Add mechanism to lock and upgrade sync targets ([#352](https://github.com/laurent22/joplin/issues/352)4) - New: Add version info to error screen - New: Added KeymapService to manage keyboard shortcuts ([#3252](https://github.com/laurent22/joplin/issues/3252) by Anjula Karunarathne) - New: Added attach file to menu bar ([#3540](https://github.com/laurent22/joplin/issues/3540) by [@R3dError](https://github.com/R3dError)) @@ -2222,11 +2222,11 @@ This version also includes an update to the search engine and as a result starti - Improved: Codemirror: clean up list indent code ([#3581](https://github.com/laurent22/joplin/issues/3581) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Enable CodeMirror keybindings ([#3545](https://github.com/laurent22/joplin/issues/3545) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Fix AppImage Icon ([#3570](https://github.com/laurent22/joplin/issues/3570)) ([#3529](https://github.com/laurent22/joplin/issues/3529) by [@Jesssullivan](https://github.com/Jesssullivan)) -- Improved: Hide completed to-dos in GotoAnything ([#3580](https://github.com/laurent22/joplin/issues/3580)) +- Improved: Hide completed to-dos in GotoAnything ([#358](https://github.com/laurent22/joplin/issues/358)0) - Improved: Implement scroll-past-end on CodeMirror editor ([#3589](https://github.com/laurent22/joplin/issues/3589) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Show full folder name in mouse-over pop-up text ([#3590](https://github.com/laurent22/joplin/issues/3590)) ([#3569](https://github.com/laurent22/joplin/issues/3569) by Allan Jacquet-Cretides) - Improved: Toggle Editor rather than setting split mode on search ([#3561](https://github.com/laurent22/joplin/issues/3561) by [@CalebJohn](https://github.com/CalebJohn)) -- Fixed: Fixed copy, cut and paste in Rich Text editor ([#3565](https://github.com/laurent22/joplin/issues/3565)) +- Fixed: Fixed copy, cut and paste in Rich Text editor ([#356](https://github.com/laurent22/joplin/issues/356)5) - Fixed: Fixed scrolling issue when editing while searching in CodeMirror ([#3593](https://github.com/laurent22/joplin/issues/3593) by [@CalebJohn](https://github.com/CalebJohn)) - Fixed: Fixed sync fetching issue ([#3599](https://github.com/laurent22/joplin/issues/3599)) ([#3591](https://github.com/laurent22/joplin/issues/3591) by [@alexchee](https://github.com/alexchee)) - Fixed: Fixed vim mode issue where status bar was not visible ([#3606](https://github.com/laurent22/joplin/issues/3606) by [@CalebJohn](https://github.com/CalebJohn)) @@ -2238,7 +2238,7 @@ Important: This pre-release will ask you to upgrade your sync target and, once i This version also includes an update to the search engine and as a result starting the app the first might be SLOW, as the search engine indexes all your notes. It might take from a few seconds to several minutes depending on how large your note collection is. -- New: Add mechanism to lock and upgrade sync targets ([#3524](https://github.com/laurent22/joplin/issues/3524)) +- New: Add mechanism to lock and upgrade sync targets ([#352](https://github.com/laurent22/joplin/issues/352)4) - New: Add support for media player for video and audio files - New: Add version info to error screen - New: Added KeymapService to manage keyboard shortcuts ([#3252](https://github.com/laurent22/joplin/issues/3252) by Anjula Karunarathne) @@ -2249,11 +2249,11 @@ This version also includes an update to the search engine and as a result starti - Improved: Codemirror: clean up list indent code ([#3581](https://github.com/laurent22/joplin/issues/3581) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Enable CodeMirror keybindings ([#3545](https://github.com/laurent22/joplin/issues/3545) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Fix AppImage Icon ([#3570](https://github.com/laurent22/joplin/issues/3570)) ([#3529](https://github.com/laurent22/joplin/issues/3529) by [@Jesssullivan](https://github.com/Jesssullivan)) -- Improved: Hide completed to-dos in GotoAnything ([#3580](https://github.com/laurent22/joplin/issues/3580)) +- Improved: Hide completed to-dos in GotoAnything ([#358](https://github.com/laurent22/joplin/issues/358)0) - Improved: Implement scroll-past-end on CodeMirror editor ([#3589](https://github.com/laurent22/joplin/issues/3589) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Show full folder name in mouse-over pop-up text ([#3590](https://github.com/laurent22/joplin/issues/3590)) ([#3569](https://github.com/laurent22/joplin/issues/3569) by Allan Jacquet-Cretides) - Improved: Toggle Editor rather than setting split mode on search ([#3561](https://github.com/laurent22/joplin/issues/3561) by [@CalebJohn](https://github.com/CalebJohn)) -- Fixed: Fixed copy, cut and paste in Rich Text editor ([#3565](https://github.com/laurent22/joplin/issues/3565)) +- Fixed: Fixed copy, cut and paste in Rich Text editor ([#356](https://github.com/laurent22/joplin/issues/356)5) - Fixed: Fixed scrolling issue when editing while searching in CodeMirror ([#3593](https://github.com/laurent22/joplin/issues/3593) by [@CalebJohn](https://github.com/CalebJohn)) - Fixed: Fixed sync fetching issue ([#3599](https://github.com/laurent22/joplin/issues/3599)) ([#3591](https://github.com/laurent22/joplin/issues/3591) by [@alexchee](https://github.com/alexchee)) - Fixed: Fixed vim mode issue where status bar was not visible ([#3606](https://github.com/laurent22/joplin/issues/3606) by [@CalebJohn](https://github.com/CalebJohn)) @@ -2268,21 +2268,21 @@ This version also includes an update to the search engine and as a result starti - Improved: Enforce that whitespace check for unindent checks the begining of a ([#3515](https://github.com/laurent22/joplin/issues/3515) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Load more CodeMirror modes for syntax highlighting ([#3401](https://github.com/laurent22/joplin/issues/3401) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Split Codemirror setOptions into different effects ([#3522](https://github.com/laurent22/joplin/issues/3522) by [@CalebJohn](https://github.com/CalebJohn)) -- Fixed: Fix filename when exporting notebook as Markdown ([#3473](https://github.com/laurent22/joplin/issues/3473)) +- Fixed: Fix filename when exporting notebook as Markdown ([#347](https://github.com/laurent22/joplin/issues/347)3) - Fixed: Fixed alarms on macOS - Fixed: Improve Markdown rendering in CodeMirror, in particular for math expressions ([#3448](https://github.com/laurent22/joplin/issues/3448)) ([#3440](https://github.com/laurent22/joplin/issues/3440) by [@CalebJohn](https://github.com/CalebJohn)) -- Fixed: Crash when applying tags to multiple notes from within another tag ([#3481](https://github.com/laurent22/joplin/issues/3481)) -- Fixed: Fixed regression when moving note to notebook from menu ([#3482](https://github.com/laurent22/joplin/issues/3482)) -- Fixed: Editor window was no longer being resized with the main window ([#3503](https://github.com/laurent22/joplin/issues/3503)) +- Fixed: Crash when applying tags to multiple notes from within another tag ([#348](https://github.com/laurent22/joplin/issues/348)1) +- Fixed: Fixed regression when moving note to notebook from menu ([#348](https://github.com/laurent22/joplin/issues/348)2) +- Fixed: Editor window was no longer being resized with the main window ([#350](https://github.com/laurent22/joplin/issues/350)3) - Fixed: Fixed attachments being out of order when importing Enex file - Fixed: Fixed save issue in Rich Text editor when making a change to a note and quickly switching to a different notebook -- Fixed: Fixed style caching ([#3449](https://github.com/laurent22/joplin/issues/3449)) -- Fixed: In some cases, changes made to an attachment would not be saved. Also added banner to show that an attachment is being edited ([#3407](https://github.com/laurent22/joplin/issues/3407)) -- Fixed: Note links would be broken after saving a note in Rich Text editor ([#3510](https://github.com/laurent22/joplin/issues/3510)) +- Fixed: Fixed style caching ([#344](https://github.com/laurent22/joplin/issues/344)9) +- Fixed: In some cases, changes made to an attachment would not be saved. Also added banner to show that an attachment is being edited ([#340](https://github.com/laurent22/joplin/issues/340)7) +- Fixed: Note links would be broken after saving a note in Rich Text editor ([#351](https://github.com/laurent22/joplin/issues/351)0) - Fixed: Regression: Fix sort tags alphabetically in side-menu ([#3489](https://github.com/laurent22/joplin/issues/3489) by Vaidotas Šimkus) - Fixed: Regression: Fixed adding a new sub-notebook to a notebook -- Fixed: Revealing file in Windows did not work ([#3366](https://github.com/laurent22/joplin/issues/3366)) -- Fixed: Undoing changes multiple time on an existing note could result in a blank note ([#3534](https://github.com/laurent22/joplin/issues/3534)) +- Fixed: Revealing file in Windows did not work ([#336](https://github.com/laurent22/joplin/issues/336)6) +- Fixed: Undoing changes multiple time on an existing note could result in a blank note ([#353](https://github.com/laurent22/joplin/issues/353)4) - Fixed: Fixed potential crash when notebook does not have a title - Fixed: Fixed toolbar button state when going from setting screen to main screen @@ -2297,22 +2297,22 @@ This release is to remove the hierarchical/nested tags feature for now, as it ha - Improved: Enforce that whitespace check for unindent checks the begining of a ([#3515](https://github.com/laurent22/joplin/issues/3515) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Load more CodeMirror modes for syntax highlighting ([#3401](https://github.com/laurent22/joplin/issues/3401) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Split Codemirror setOptions into different effects ([#3522](https://github.com/laurent22/joplin/issues/3522) by [@CalebJohn](https://github.com/CalebJohn)) -- Fixed: Fix filename when exporting notebook as Markdown ([#3473](https://github.com/laurent22/joplin/issues/3473)) +- Fixed: Fix filename when exporting notebook as Markdown ([#347](https://github.com/laurent22/joplin/issues/347)3) - Fixed: Fixed alarms on macOS - Fixed: Improve Markdown rendering in CodeMirror, in particular for math expressions ([#3448](https://github.com/laurent22/joplin/issues/3448)) ([#3440](https://github.com/laurent22/joplin/issues/3440) by [@CalebJohn](https://github.com/CalebJohn)) -- Fixed: Crash when applying tags to multiple notes from within another tag ([#3481](https://github.com/laurent22/joplin/issues/3481)) -- Fixed: Fixed regression when moving note to notebook from menu ([#3482](https://github.com/laurent22/joplin/issues/3482)) +- Fixed: Crash when applying tags to multiple notes from within another tag ([#348](https://github.com/laurent22/joplin/issues/348)1) +- Fixed: Fixed regression when moving note to notebook from menu ([#348](https://github.com/laurent22/joplin/issues/348)2) - Fixed: Api: Fixes nested tag API to handle calls with no 'fields' query key ([#3539](https://github.com/laurent22/joplin/issues/3539) by Vaidotas Šimkus) -- Fixed: Editor window was no longer being resized with the main window ([#3503](https://github.com/laurent22/joplin/issues/3503)) +- Fixed: Editor window was no longer being resized with the main window ([#350](https://github.com/laurent22/joplin/issues/350)3) - Fixed: Fixed attachments being out of order when importing Enex file - Fixed: Fixed save issue in Rich Text editor when making a change to a note and quickly switching to a different notebook -- Fixed: Fixed style caching ([#3449](https://github.com/laurent22/joplin/issues/3449)) -- Fixed: In some cases, changes made to an attachment would not be saved. Also added banner to show that an attachment is being edited ([#3407](https://github.com/laurent22/joplin/issues/3407)) -- Fixed: Note links would be broken after saving a note in Rich Text editor ([#3510](https://github.com/laurent22/joplin/issues/3510)) +- Fixed: Fixed style caching ([#344](https://github.com/laurent22/joplin/issues/344)9) +- Fixed: In some cases, changes made to an attachment would not be saved. Also added banner to show that an attachment is being edited ([#340](https://github.com/laurent22/joplin/issues/340)7) +- Fixed: Note links would be broken after saving a note in Rich Text editor ([#351](https://github.com/laurent22/joplin/issues/351)0) - Fixed: Regression: Fix sort tags alphabetically in side-menu ([#3489](https://github.com/laurent22/joplin/issues/3489) by Vaidotas Šimkus) - Fixed: Regression: Fixed adding a new sub-notebook to a notebook -- Fixed: Revealing file in Windows did not work ([#3366](https://github.com/laurent22/joplin/issues/3366)) -- Fixed: Undoing changes multiple time on an existing note could result in a blank note ([#3534](https://github.com/laurent22/joplin/issues/3534)) +- Fixed: Revealing file in Windows did not work ([#336](https://github.com/laurent22/joplin/issues/336)6) +- Fixed: Undoing changes multiple time on an existing note could result in a blank note ([#353](https://github.com/laurent22/joplin/issues/353)4) ## [v1.0.227](https://github.com/laurent22/joplin/releases/tag/v1.0.227) - 2020-07-07T20:44:54Z @@ -2321,13 +2321,13 @@ This release is to remove the hierarchical/nested tags feature for now, as it ha - Improved: Manually refresh codemirror whenever the window size changes ([#3388](https://github.com/laurent22/joplin/issues/3388) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Refactored command system - Fixed: Fix link color for dark theme ([#3391](https://github.com/laurent22/joplin/issues/3391) by Helmut K. C. Tessarek) -- Fixed: Fixed custom order when note title is changed ([#3412](https://github.com/laurent22/joplin/issues/3412)) -- Fixed: Fixed import of checkboxes in ENEX files ([#3402](https://github.com/laurent22/joplin/issues/3402)) -- Fixed: Only de-duplicate imported notebook titles when needed ([#2331](https://github.com/laurent22/joplin/issues/2331)) -- Fixed: Prevent code highlighting from freezing the app in some cases ([#3281](https://github.com/laurent22/joplin/issues/3281)) +- Fixed: Fixed custom order when note title is changed ([#341](https://github.com/laurent22/joplin/issues/341)2) +- Fixed: Fixed import of checkboxes in ENEX files ([#340](https://github.com/laurent22/joplin/issues/340)2) +- Fixed: Only de-duplicate imported notebook titles when needed ([#233](https://github.com/laurent22/joplin/issues/233)1) +- Fixed: Prevent code highlighting from freezing the app in some cases ([#328](https://github.com/laurent22/joplin/issues/328)1) - Fixed: WYSIWYG: Fix undo issue - Fixed: Fixed GotoAnything rendering issue with HTML notes -- Fixed: Fixed regression which could cause a crash after deleting a notebook ([#3461](https://github.com/laurent22/joplin/issues/3461)) +- Fixed: Fixed regression which could cause a crash after deleting a notebook ([#346](https://github.com/laurent22/joplin/issues/346)1) - Fixed: WYSIWYG: Fixed inserting date time and other content inside header ## [v1.0.226](https://github.com/laurent22/joplin/releases/tag/v1.0.226) (Pre-release) - 2020-07-04T10:21:26Z @@ -2336,10 +2336,10 @@ This release is to remove the hierarchical/nested tags feature for now, as it ha - Improved: Manually refresh codemirror whenever the window size changes ([#3388](https://github.com/laurent22/joplin/issues/3388) by [@CalebJohn](https://github.com/CalebJohn)) - Improved: Refactored command system - Fixed: Fix link color for dark theme ([#3391](https://github.com/laurent22/joplin/issues/3391) by Helmut K. C. Tessarek) -- Fixed: Fixed custom order when note title is changed ([#3412](https://github.com/laurent22/joplin/issues/3412)) -- Fixed: Fixed import of checkboxes in ENEX files ([#3402](https://github.com/laurent22/joplin/issues/3402)) -- Fixed: Only de-duplicate imported notebook titles when needed ([#2331](https://github.com/laurent22/joplin/issues/2331)) -- Fixed: Prevent code highlighting from freezing the app in some cases ([#3281](https://github.com/laurent22/joplin/issues/3281)) +- Fixed: Fixed custom order when note title is changed ([#341](https://github.com/laurent22/joplin/issues/341)2) +- Fixed: Fixed import of checkboxes in ENEX files ([#340](https://github.com/laurent22/joplin/issues/340)2) +- Fixed: Only de-duplicate imported notebook titles when needed ([#233](https://github.com/laurent22/joplin/issues/233)1) +- Fixed: Prevent code highlighting from freezing the app in some cases ([#328](https://github.com/laurent22/joplin/issues/328)1) - Fixed: WYSIWYG: Fix undo issue ## [v1.0.224](https://github.com/laurent22/joplin/releases/tag/v1.0.224) - 2020-06-20T22:26:08Z @@ -2361,14 +2361,14 @@ This release is to remove the hierarchical/nested tags feature for now, as it ha - Improved: Remove auto-indent for in note html/xml for Code Mirror ([#3374](https://github.com/laurent22/joplin/issues/3374) by [@CalebJohn](https://github.com/CalebJohn)) - Fixed: Fix getLineSpan logic and list token regex logic ([#3365](https://github.com/laurent22/joplin/issues/3365) by [@CalebJohn](https://github.com/CalebJohn)) - Fixed: Fixed various bugs related to the import of ENEX files as HTML -- Fixed: Prevent desktop.ini file from breaking sync lock ([#3381](https://github.com/laurent22/joplin/issues/3381)) +- Fixed: Prevent desktop.ini file from breaking sync lock ([#338](https://github.com/laurent22/joplin/issues/338)1) ## [v1.0.220](https://github.com/laurent22/joplin/releases/tag/v1.0.220) - 2020-06-13T18:26:22Z -- Improved: Improved escaping of Markdown titles in links ([#3333](https://github.com/laurent22/joplin/issues/3333)) +- Improved: Improved escaping of Markdown titles in links ([#333](https://github.com/laurent22/joplin/issues/333)3) - Improved: Refactored themes to allow using the same ones in both desktop and mobile version - Fixed: Fixed issue with setting filename for edited attachments -- Fixed: Prevent notebook to be the parent of itself ([#3334](https://github.com/laurent22/joplin/issues/3334)) +- Fixed: Prevent notebook to be the parent of itself ([#333](https://github.com/laurent22/joplin/issues/333)4) ## [v1.0.218](https://github.com/laurent22/joplin/releases/tag/v1.0.218) - 2020-06-07T10:43:34Z @@ -2379,26 +2379,26 @@ This release is to remove the hierarchical/nested tags feature for now, as it ha - New: Add option to choose Code Mirror as code editor ([#3284](https://github.com/laurent22/joplin/issues/3284) by [@CalebJohn](https://github.com/CalebJohn)) - New: Translation: Add bahasa indonesia (id_ID.po) ([#3246](https://github.com/laurent22/joplin/issues/3246) by [@ffadilaputra](https://github.com/ffadilaputra)) -- Improved: Add support for editable resources ([#3305](https://github.com/laurent22/joplin/issues/3305)) ([#279](https://github.com/laurent22/joplin/issues/279)) -- Improved: Add support for system keychain to save sensitive settings ([#3207](https://github.com/laurent22/joplin/issues/3207)) ([#2773](https://github.com/laurent22/joplin/issues/2773)) -- Improved: Add way to manually order notes by dragging them ([#3235](https://github.com/laurent22/joplin/issues/3235)) ([#51](https://github.com/laurent22/joplin/issues/51)) +- Improved: Add support for editable resources ([#3305](https://github.com/laurent22/joplin/issues/3305)) ([#27](https://github.com/laurent22/joplin/issues/27)9) +- Improved: Add support for system keychain to save sensitive settings ([#3207](https://github.com/laurent22/joplin/issues/3207)) ([#277](https://github.com/laurent22/joplin/issues/277)3) +- Improved: Add way to manually order notes by dragging them ([#3235](https://github.com/laurent22/joplin/issues/3235)) ([#5](https://github.com/laurent22/joplin/issues/5)1) - Improved: Create new notes with minimum set of properties to prevent a few minor bugs - Improved: Dev fix: Only disable editor toolbar in preview mode - Improved: Unindent empty list markup on Enter ([#2772](https://github.com/laurent22/joplin/issues/2772)) ([#2614](https://github.com/laurent22/joplin/issues/2614) by Shotaro Yamada) - Improved: Upload attachments > 4 MB when using OneDrive ([#3195](https://github.com/laurent22/joplin/issues/3195)) ([#173](https://github.com/laurent22/joplin/issues/173) by [@TheOnlyTrueJonathanHeard](https://github.com/TheOnlyTrueJonathanHeard)) - Fixed: Always make the first item selected in Goto Anything ([#3181](https://github.com/laurent22/joplin/issues/3181)) ([#3170](https://github.com/laurent22/joplin/issues/3170) by 叡山电车) -- Fixed: Attaching an image, then cancelling the resize dialog, would crash the app ([#3324](https://github.com/laurent22/joplin/issues/3324)) -- Fixed: Disable editor toolbar when editor is not in focus ([#3286](https://github.com/laurent22/joplin/issues/3286)) -- Fixed: Disable middle-clicking external URLs, as they would open inside the application ([#3287](https://github.com/laurent22/joplin/issues/3287)) -- Fixed: Fix styling of note title in exported PDF and print ([#3227](https://github.com/laurent22/joplin/issues/3227)) +- Fixed: Attaching an image, then cancelling the resize dialog, would crash the app ([#332](https://github.com/laurent22/joplin/issues/332)4) +- Fixed: Disable editor toolbar when editor is not in focus ([#328](https://github.com/laurent22/joplin/issues/328)6) +- Fixed: Disable middle-clicking external URLs, as they would open inside the application ([#328](https://github.com/laurent22/joplin/issues/328)7) +- Fixed: Fix styling of note title in exported PDF and print ([#322](https://github.com/laurent22/joplin/issues/322)7) - Fixed: Fixed date popup dialog overflow issue inside info dialog - Fixed: Fixed issue with accentuated letters in GotoAnything ([#3183](https://github.com/laurent22/joplin/issues/3183)) ([#3171](https://github.com/laurent22/joplin/issues/3171) by 叡山电车) -- Fixed: Fixed issue with invalid image paths when config path contains spaces ([#3267](https://github.com/laurent22/joplin/issues/3267)) -- Fixed: Fixed note list context menu ([#3331](https://github.com/laurent22/joplin/issues/3331)) +- Fixed: Fixed issue with invalid image paths when config path contains spaces ([#326](https://github.com/laurent22/joplin/issues/326)7) +- Fixed: Fixed note list context menu ([#333](https://github.com/laurent22/joplin/issues/333)1) - Fixed: Fixed portable app issue with resource paths -- Fixed: Fixed shortcut to focus Note List when editor is in focus ([#3298](https://github.com/laurent22/joplin/issues/3298)) +- Fixed: Fixed shortcut to focus Note List when editor is in focus ([#329](https://github.com/laurent22/joplin/issues/329)8) - Fixed: Make GotoAnyting work with East Asian charactors ([#3180](https://github.com/laurent22/joplin/issues/3180)) ([#3153](https://github.com/laurent22/joplin/issues/3153) by 叡山电车) -- Fixed: Prevent drag and dropping of text in editor as it can lead to data loss ([#3302](https://github.com/laurent22/joplin/issues/3302)) +- Fixed: Prevent drag and dropping of text in editor as it can lead to data loss ([#330](https://github.com/laurent22/joplin/issues/330)2) ## [v1.0.216](https://github.com/laurent22/joplin/releases/tag/v1.0.216) - 2020-05-24T14:21:01Z @@ -2416,12 +2416,12 @@ Finally, the tag bar has been moved to the top of the note editor pane. Again th - New: WYSIWYG: Added localisation support - New: WYSIWYG: Added support for scroll restore - New: Added more info on how to switch to Markdown editor -- New: Add support for system theme auto-switching ([#2665](https://github.com/laurent22/joplin/issues/2665)) -- Security: Filter SVG element event attributes to prevent XSS vulnerability ([#3143](https://github.com/laurent22/joplin/issues/3143)) +- New: Add support for system theme auto-switching ([#266](https://github.com/laurent22/joplin/issues/266)5) +- Security: Filter SVG element event attributes to prevent XSS vulnerability ([#314](https://github.com/laurent22/joplin/issues/314)3) - Improved: Made sidebar chevrons consistent - Improved: Add note history (back/forward buttons) ([#2819](https://github.com/laurent22/joplin/issues/2819)) ([#2409](https://github.com/laurent22/joplin/issues/2409) by Naveen M V) - Improved: Moved note-related toolbar button next to tag bar -- Improved: Switch to Font Awesome as icon library ([#3137](https://github.com/laurent22/joplin/issues/3137)) +- Improved: Switch to Font Awesome as icon library ([#313](https://github.com/laurent22/joplin/issues/313)7) - Improved: Upgraded to Electron 8.2.5 - Improved: WYSIWYG: Allow pasting images in editor - Improved: Handle compositionend event in TinyMCE ([#3164](https://github.com/laurent22/joplin/issues/3164) by Shotaro Yamada) @@ -2434,14 +2434,14 @@ Finally, the tag bar has been moved to the top of the note editor pane. Again th - Improved: WYSIWYG: Handle drag and drop of notes and files - Improved: Themes switched for more appealing text highlighting ([#3192](https://github.com/laurent22/joplin/issues/3192)) ([#2883](https://github.com/laurent22/joplin/issues/2883) by [@infinity052](https://github.com/infinity052)) - Fixed: Fix undo issue when loading new note -- Fixed: Fixed inserting templates into existing notes ([#3259](https://github.com/laurent22/joplin/issues/3259)) +- Fixed: Fixed inserting templates into existing notes ([#325](https://github.com/laurent22/joplin/issues/325)9) - Fixed: Fixed issue with the editor showing previous note when it should show nothing - Fixed: Fixed two way scrolling issue in Markdown editor -- Fixed: Fixed infinite rendering loop, which would cause the app to crash (white window) ([#3200](https://github.com/laurent22/joplin/issues/3200)) -- Fixed: Markdown editor would not scroll in sync with viewer in some cases ([#3228](https://github.com/laurent22/joplin/issues/3228)) -- Fixed: Sync would fail in some cases due to a database error ([#3234](https://github.com/laurent22/joplin/issues/3234)) -- Fixed: Better handling of missing table field bug on Linux ([#3088](https://github.com/laurent22/joplin/issues/3088)) -- Fixed: Disable or enable menu items depending on the current view ([#2467](https://github.com/laurent22/joplin/issues/2467)) +- Fixed: Fixed infinite rendering loop, which would cause the app to crash (white window) ([#320](https://github.com/laurent22/joplin/issues/320)0) +- Fixed: Markdown editor would not scroll in sync with viewer in some cases ([#322](https://github.com/laurent22/joplin/issues/322)8) +- Fixed: Sync would fail in some cases due to a database error ([#323](https://github.com/laurent22/joplin/issues/323)4) +- Fixed: Better handling of missing table field bug on Linux ([#308](https://github.com/laurent22/joplin/issues/308)8) +- Fixed: Disable or enable menu items depending on the current view ([#246](https://github.com/laurent22/joplin/issues/246)7) - Fixed: Fix focus after exiting GotoAnything ([#3075](https://github.com/laurent22/joplin/issues/3075)) ([#3066](https://github.com/laurent22/joplin/issues/3066) by Mohammed Rabeeh) - Fixed: Fix format of geolocation data ([#2673](https://github.com/laurent22/joplin/issues/2673) by [@mic704b](https://github.com/mic704b)) - Fixed: Fix issue where last used filename was displayed when exporting directory @@ -2455,11 +2455,11 @@ Finally, the tag bar has been moved to the top of the note editor pane. Again th - Fixed: Fixed the Goto Anything item list overflow ([#3096](https://github.com/laurent22/joplin/issues/3096)) ([#3095](https://github.com/laurent22/joplin/issues/3095) by Rahul Mohata) - Fixed: Fixed various bugs and regressions following note editor refactoring - Fixed: Long URIs break Note Info dialog ([#3136](https://github.com/laurent22/joplin/issues/3136)) ([#3131](https://github.com/laurent22/joplin/issues/3131) by Mohammed Rabeeh) -- Fixed: Prevent Goto Anything from freezing when inputting special characters ([#3093](https://github.com/laurent22/joplin/issues/3093)) +- Fixed: Prevent Goto Anything from freezing when inputting special characters ([#309](https://github.com/laurent22/joplin/issues/309)3) - Fixed: WYSIWYG: Fix CODE element style - Fixed: WYSIWYG: Fixed clicking a link within a checkbox label - Fixed: WYSIWYG: Fixed undo issue when pasting text -- Fixed: Fix notebook associated with note when doing search, and expand correct notebook ([#3219](https://github.com/laurent22/joplin/issues/3219)) +- Fixed: Fix notebook associated with note when doing search, and expand correct notebook ([#321](https://github.com/laurent22/joplin/issues/321)9) - Fixed: Make sidebar resizable when note list is not displayed ([#2895](https://github.com/laurent22/joplin/issues/2895)) ([#2865](https://github.com/laurent22/joplin/issues/2865) by anirudh murali) - Fixed: WYSIWYG: Fixed UI translation issue for certain languages - Fixed: Word/character counter includes Markdown syntax and HTML tags ([#3037](https://github.com/laurent22/joplin/issues/3037)) ([#3009](https://github.com/laurent22/joplin/issues/3009) by [@RedDocMD](https://github.com/RedDocMD)) @@ -2480,12 +2480,12 @@ Finally, the tag bar has been moved to the top of the note editor pane. Again th - New: WYSIWYG: Added localisation support - New: WYSIWYG: Added support for scroll restore - New: Added more info on how to switch to Markdown editor -- New: Add support for system theme auto-switching ([#2665](https://github.com/laurent22/joplin/issues/2665)) -- Security: Filter SVG element event attributes to prevent XSS vulnerability ([#3143](https://github.com/laurent22/joplin/issues/3143)) +- New: Add support for system theme auto-switching ([#266](https://github.com/laurent22/joplin/issues/266)5) +- Security: Filter SVG element event attributes to prevent XSS vulnerability ([#314](https://github.com/laurent22/joplin/issues/314)3) - Improved: Made sidebar chevrons consistent - Improved: Add note history (back/forward buttons) ([#2819](https://github.com/laurent22/joplin/issues/2819)) ([#2409](https://github.com/laurent22/joplin/issues/2409) by Naveen M V) - Improved: Moved note-related toolbar button next to tag bar -- Improved: Switch to Font Awesome as icon library ([#3137](https://github.com/laurent22/joplin/issues/3137)) +- Improved: Switch to Font Awesome as icon library ([#313](https://github.com/laurent22/joplin/issues/313)7) - Improved: Upgraded to Electron 8.2.5 - Improved: WYSIWYG: Allow pasting images in editor - Improved: Handle compositionend event in TinyMCE ([#3164](https://github.com/laurent22/joplin/issues/3164) by Shotaro Yamada) @@ -2499,11 +2499,11 @@ Finally, the tag bar has been moved to the top of the note editor pane. Again th - Improved: Themes switched for more appealing text highlighting ([#3192](https://github.com/laurent22/joplin/issues/3192)) ([#2883](https://github.com/laurent22/joplin/issues/2883) by [@infinity052](https://github.com/infinity052)) - Fixed: Fixed issue with the editor showing previous note when it should show nothing - Fixed: Fixed two way scrolling issue in Markdown editor -- Fixed: Fixed infinite rendering loop, which would cause the app to crash (white window) ([#3200](https://github.com/laurent22/joplin/issues/3200)) -- Fixed: Markdown editor would not scroll in sync with viewer in some cases ([#3228](https://github.com/laurent22/joplin/issues/3228)) -- Fixed: Sync would fail in some cases due to a database error ([#3234](https://github.com/laurent22/joplin/issues/3234)) -- Fixed: Better handling of missing table field bug on Linux ([#3088](https://github.com/laurent22/joplin/issues/3088)) -- Fixed: Disable or enable menu items depending on the current view ([#2467](https://github.com/laurent22/joplin/issues/2467)) +- Fixed: Fixed infinite rendering loop, which would cause the app to crash (white window) ([#320](https://github.com/laurent22/joplin/issues/320)0) +- Fixed: Markdown editor would not scroll in sync with viewer in some cases ([#322](https://github.com/laurent22/joplin/issues/322)8) +- Fixed: Sync would fail in some cases due to a database error ([#323](https://github.com/laurent22/joplin/issues/323)4) +- Fixed: Better handling of missing table field bug on Linux ([#308](https://github.com/laurent22/joplin/issues/308)8) +- Fixed: Disable or enable menu items depending on the current view ([#246](https://github.com/laurent22/joplin/issues/246)7) - Fixed: Fix focus after exiting GotoAnything ([#3075](https://github.com/laurent22/joplin/issues/3075)) ([#3066](https://github.com/laurent22/joplin/issues/3066) by Mohammed Rabeeh) - Fixed: Fix format of geolocation data ([#2673](https://github.com/laurent22/joplin/issues/2673) by [@mic704b](https://github.com/mic704b)) - Fixed: Fix issue where last used filename was displayed when exporting directory @@ -2517,11 +2517,11 @@ Finally, the tag bar has been moved to the top of the note editor pane. Again th - Fixed: Fixed the Goto Anything item list overflow ([#3096](https://github.com/laurent22/joplin/issues/3096)) ([#3095](https://github.com/laurent22/joplin/issues/3095) by Rahul Mohata) - Fixed: Fixed various bugs and regressions following note editor refactoring - Fixed: Long URIs break Note Info dialog ([#3136](https://github.com/laurent22/joplin/issues/3136)) ([#3131](https://github.com/laurent22/joplin/issues/3131) by Mohammed Rabeeh) -- Fixed: Prevent Goto Anything from freezing when inputting special characters ([#3093](https://github.com/laurent22/joplin/issues/3093)) +- Fixed: Prevent Goto Anything from freezing when inputting special characters ([#309](https://github.com/laurent22/joplin/issues/309)3) - Fixed: WYSIWYG: Fix CODE element style - Fixed: WYSIWYG: Fixed clicking a link within a checkbox label - Fixed: WYSIWYG: Fixed undo issue when pasting text -- Fixed: Fix notebook associated with note when doing search, and expand correct notebook ([#3219](https://github.com/laurent22/joplin/issues/3219)) +- Fixed: Fix notebook associated with note when doing search, and expand correct notebook ([#321](https://github.com/laurent22/joplin/issues/321)9) - Fixed: Make sidebar resizable when note list is not displayed ([#2895](https://github.com/laurent22/joplin/issues/2895)) ([#2865](https://github.com/laurent22/joplin/issues/2865) by anirudh murali) - Fixed: WYSIWYG: Fixed UI translation issue for certain languages - Fixed: Word/character counter includes Markdown syntax and HTML tags ([#3037](https://github.com/laurent22/joplin/issues/3037)) ([#3009](https://github.com/laurent22/joplin/issues/3009) by [@RedDocMD](https://github.com/RedDocMD)) @@ -2542,11 +2542,11 @@ Finally, the tag bar has been moved to the top of the note editor pane. Again th - New: WYSIWYG: Added localisation support - New: WYSIWYG: Added support for scroll restore - New: Added more info on how to switch to Markdown editor -- Security: Filter SVG element event attributes to prevent XSS vulnerability ([#3143](https://github.com/laurent22/joplin/issues/3143)) +- Security: Filter SVG element event attributes to prevent XSS vulnerability ([#314](https://github.com/laurent22/joplin/issues/314)3) - Improved: Made sidebar chevrons consistent - Improved: Add note history (back/forward buttons) ([#2819](https://github.com/laurent22/joplin/issues/2819)) ([#2409](https://github.com/laurent22/joplin/issues/2409) by Naveen M V) - Improved: Moved note-related toolbar button next to tag bar -- Improved: Switch to Font Awesome as icon library ([#3137](https://github.com/laurent22/joplin/issues/3137)) +- Improved: Switch to Font Awesome as icon library ([#313](https://github.com/laurent22/joplin/issues/313)7) - Improved: Upgraded to Electron 8.2.5 - Improved: WYSIWYG: Allow pasting images in editor - Improved: Handle compositionend event in TinyMCE ([#3164](https://github.com/laurent22/joplin/issues/3164) by Shotaro Yamada) @@ -2560,11 +2560,11 @@ Finally, the tag bar has been moved to the top of the note editor pane. Again th - Improved: Themes switched for more appealing text highlighting ([#3192](https://github.com/laurent22/joplin/issues/3192)) ([#2883](https://github.com/laurent22/joplin/issues/2883) by [@infinity052](https://github.com/infinity052)) - Fixed: Fixed issue with the editor showing previous note when it should show nothing - Fixed: Fixed two way scrolling issue in Markdown editor -- Fixed: Fixed infinite rendering loop, which would cause the app to crash (white window) ([#3200](https://github.com/laurent22/joplin/issues/3200)) -- Fixed: Markdown editor would not scroll in sync with viewer in some cases ([#3228](https://github.com/laurent22/joplin/issues/3228)) -- Fixed: Sync would fail in some cases due to a database error ([#3234](https://github.com/laurent22/joplin/issues/3234)) -- Fixed: Better handling of missing table field bug on Linux ([#3088](https://github.com/laurent22/joplin/issues/3088)) -- Fixed: Disable or enable menu items depending on the current view ([#2467](https://github.com/laurent22/joplin/issues/2467)) +- Fixed: Fixed infinite rendering loop, which would cause the app to crash (white window) ([#320](https://github.com/laurent22/joplin/issues/320)0) +- Fixed: Markdown editor would not scroll in sync with viewer in some cases ([#322](https://github.com/laurent22/joplin/issues/322)8) +- Fixed: Sync would fail in some cases due to a database error ([#323](https://github.com/laurent22/joplin/issues/323)4) +- Fixed: Better handling of missing table field bug on Linux ([#308](https://github.com/laurent22/joplin/issues/308)8) +- Fixed: Disable or enable menu items depending on the current view ([#246](https://github.com/laurent22/joplin/issues/246)7) - Fixed: Fix focus after exiting GotoAnything ([#3075](https://github.com/laurent22/joplin/issues/3075)) ([#3066](https://github.com/laurent22/joplin/issues/3066) by Mohammed Rabeeh) - Fixed: Fix format of geolocation data ([#2673](https://github.com/laurent22/joplin/issues/2673) by [@mic704b](https://github.com/mic704b)) - Fixed: Fix issue where last used filename was displayed when exporting directory @@ -2578,11 +2578,11 @@ Finally, the tag bar has been moved to the top of the note editor pane. Again th - Fixed: Fixed the Goto Anything item list overflow ([#3096](https://github.com/laurent22/joplin/issues/3096)) ([#3095](https://github.com/laurent22/joplin/issues/3095) by Rahul Mohata) - Fixed: Fixed various bugs and regressions following note editor refactoring - Fixed: Long URIs break Note Info dialog ([#3136](https://github.com/laurent22/joplin/issues/3136)) ([#3131](https://github.com/laurent22/joplin/issues/3131) by Mohammed Rabeeh) -- Fixed: Prevent Goto Anything from freezing when inputting special characters ([#3093](https://github.com/laurent22/joplin/issues/3093)) +- Fixed: Prevent Goto Anything from freezing when inputting special characters ([#309](https://github.com/laurent22/joplin/issues/309)3) - Fixed: WYSIWYG: Fix CODE element style - Fixed: WYSIWYG: Fixed clicking a link within a checkbox label - Fixed: WYSIWYG: Fixed undo issue when pasting text -- Fixed: Fix notebook associated with note when doing search, and expand correct notebook ([#3219](https://github.com/laurent22/joplin/issues/3219)) +- Fixed: Fix notebook associated with note when doing search, and expand correct notebook ([#321](https://github.com/laurent22/joplin/issues/321)9) - Fixed: Make sidebar resizable when note list is not displayed ([#2895](https://github.com/laurent22/joplin/issues/2895)) ([#2865](https://github.com/laurent22/joplin/issues/2865) by anirudh murali) - Fixed: WYSIWYG: Fixed UI translation issue for certain languages - Fixed: Word/character counter includes Markdown syntax and HTML tags ([#3037](https://github.com/laurent22/joplin/issues/3037)) ([#3009](https://github.com/laurent22/joplin/issues/3009) by [@RedDocMD](https://github.com/RedDocMD)) @@ -2603,10 +2603,10 @@ Finally, the tag bar has been moved to the top of the note editor pane. Again th - New: WYSIWYG: Added localisation support - New: WYSIWYG: Added support for scroll restore - New: Added more info on how to switch to Markdown editor -- Security: Filter SVG element event attributes to prevent XSS vulnerability ([#3143](https://github.com/laurent22/joplin/issues/3143)) +- Security: Filter SVG element event attributes to prevent XSS vulnerability ([#314](https://github.com/laurent22/joplin/issues/314)3) - Improved: Add note history (back/forward buttons) ([#2819](https://github.com/laurent22/joplin/issues/2819)) ([#2409](https://github.com/laurent22/joplin/issues/2409) by Naveen M V) - Improved: Moved note-related toolbar button next to tag bar -- Improved: Switch to Font Awesome as icon library ([#3137](https://github.com/laurent22/joplin/issues/3137)) +- Improved: Switch to Font Awesome as icon library ([#313](https://github.com/laurent22/joplin/issues/313)7) - Improved: Upgraded to Electron 8.2.5 - Improved: WYSIWYG: Allow pasting images in editor - Improved: Handle compositionend event in TinyMCE ([#3164](https://github.com/laurent22/joplin/issues/3164) by Shotaro Yamada) @@ -2618,11 +2618,11 @@ Finally, the tag bar has been moved to the top of the note editor pane. Again th - Improved: WYSIWYG: Handle "Paste as text" when pressing Ctrl+Shift+V - Improved: WYSIWYG: Handle drag and drop of notes and files - Improved: Themes switched for more appealing text highlighting ([#3192](https://github.com/laurent22/joplin/issues/3192)) ([#2883](https://github.com/laurent22/joplin/issues/2883) by [@infinity052](https://github.com/infinity052)) -- Fixed: Fixed infinite rendering loop, which would cause the app to crash (white window) ([#3200](https://github.com/laurent22/joplin/issues/3200)) -- Fixed: Markdown editor would not scroll in sync with viewer in some cases ([#3228](https://github.com/laurent22/joplin/issues/3228)) -- Fixed: Sync would fail in some cases due to a database error ([#3234](https://github.com/laurent22/joplin/issues/3234)) -- Fixed: Better handling of missing table field bug on Linux ([#3088](https://github.com/laurent22/joplin/issues/3088)) -- Fixed: Disable or enable menu items depending on the current view ([#2467](https://github.com/laurent22/joplin/issues/2467)) +- Fixed: Fixed infinite rendering loop, which would cause the app to crash (white window) ([#320](https://github.com/laurent22/joplin/issues/320)0) +- Fixed: Markdown editor would not scroll in sync with viewer in some cases ([#322](https://github.com/laurent22/joplin/issues/322)8) +- Fixed: Sync would fail in some cases due to a database error ([#323](https://github.com/laurent22/joplin/issues/323)4) +- Fixed: Better handling of missing table field bug on Linux ([#308](https://github.com/laurent22/joplin/issues/308)8) +- Fixed: Disable or enable menu items depending on the current view ([#246](https://github.com/laurent22/joplin/issues/246)7) - Fixed: Fix focus after exiting GotoAnything ([#3075](https://github.com/laurent22/joplin/issues/3075)) ([#3066](https://github.com/laurent22/joplin/issues/3066) by Mohammed Rabeeh) - Fixed: Fix format of geolocation data ([#2673](https://github.com/laurent22/joplin/issues/2673) by [@mic704b](https://github.com/mic704b)) - Fixed: Fix issue where last used filename was displayed when exporting directory @@ -2636,11 +2636,11 @@ Finally, the tag bar has been moved to the top of the note editor pane. Again th - Fixed: Fixed the Goto Anything item list overflow ([#3096](https://github.com/laurent22/joplin/issues/3096)) ([#3095](https://github.com/laurent22/joplin/issues/3095) by Rahul Mohata) - Fixed: Fixed various bugs and regressions following note editor refactoring - Fixed: Long URIs break Note Info dialog ([#3136](https://github.com/laurent22/joplin/issues/3136)) ([#3131](https://github.com/laurent22/joplin/issues/3131) by Mohammed Rabeeh) -- Fixed: Prevent Goto Anything from freezing when inputting special characters ([#3093](https://github.com/laurent22/joplin/issues/3093)) +- Fixed: Prevent Goto Anything from freezing when inputting special characters ([#309](https://github.com/laurent22/joplin/issues/309)3) - Fixed: WYSIWYG: Fix CODE element style - Fixed: WYSIWYG: Fixed clicking a link within a checkbox label - Fixed: WYSIWYG: Fixed undo issue when pasting text -- Fixed: Fix notebook associated with note when doing search, and expand correct notebook ([#3219](https://github.com/laurent22/joplin/issues/3219)) +- Fixed: Fix notebook associated with note when doing search, and expand correct notebook ([#321](https://github.com/laurent22/joplin/issues/321)9) - Fixed: Make sidebar resizable when note list is not displayed ([#2895](https://github.com/laurent22/joplin/issues/2895)) ([#2865](https://github.com/laurent22/joplin/issues/2865) by anirudh murali) - Fixed: WYSIWYG: Fixed UI translation issue for certain languages - Fixed: Word/character counter includes Markdown syntax and HTML tags ([#3037](https://github.com/laurent22/joplin/issues/3037)) ([#3009](https://github.com/laurent22/joplin/issues/3009) by [@RedDocMD](https://github.com/RedDocMD)) @@ -2661,10 +2661,10 @@ Finally, the tag bar has been moved to the top of the note editor pane. Again th - New: WYSIWYG: Added localisation support - New: WYSIWYG: Added support for scroll restore - New: Added more info on how to switch to Markdown editor -- Security: Filter SVG element event attributes to prevent XSS vulnerability ([#3143](https://github.com/laurent22/joplin/issues/3143)) +- Security: Filter SVG element event attributes to prevent XSS vulnerability ([#314](https://github.com/laurent22/joplin/issues/314)3) - Improved: Add note history (back/forward buttons) ([#2819](https://github.com/laurent22/joplin/issues/2819)) ([#2409](https://github.com/laurent22/joplin/issues/2409) by Naveen M V) - Improved: Moved note-related toolbar button next to tag bar -- Improved: Switch to Font Awesome as icon library ([#3137](https://github.com/laurent22/joplin/issues/3137)) +- Improved: Switch to Font Awesome as icon library ([#313](https://github.com/laurent22/joplin/issues/313)7) - Improved: Upgraded to Electron 8.2.5 - Improved: WYSIWYG: Allow pasting images in editor - Improved: Handle compositionend event in TinyMCE ([#3164](https://github.com/laurent22/joplin/issues/3164) by Shotaro Yamada) @@ -2675,8 +2675,8 @@ Finally, the tag bar has been moved to the top of the note editor pane. Again th - Improved: WYSIWYG: Enable context menu on resources, links and text - Improved: WYSIWYG: Handle "Paste as text" when pressing Ctrl+Shift+V - Improved: WYSIWYG: Handle drag and drop of notes and files -- Fixed: Better handling of missing table field bug on Linux ([#3088](https://github.com/laurent22/joplin/issues/3088)) -- Fixed: Disable or enable menu items depending on the current view ([#2467](https://github.com/laurent22/joplin/issues/2467)) +- Fixed: Better handling of missing table field bug on Linux ([#308](https://github.com/laurent22/joplin/issues/308)8) +- Fixed: Disable or enable menu items depending on the current view ([#246](https://github.com/laurent22/joplin/issues/246)7) - Fixed: Fix focus after exiting GotoAnything ([#3075](https://github.com/laurent22/joplin/issues/3075)) ([#3066](https://github.com/laurent22/joplin/issues/3066) by Mohammed Rabeeh) - Fixed: Fix format of geolocation data ([#2673](https://github.com/laurent22/joplin/issues/2673) by [@mic704b](https://github.com/mic704b)) - Fixed: Fix issue where last used filename was displayed when exporting directory @@ -2690,11 +2690,11 @@ Finally, the tag bar has been moved to the top of the note editor pane. Again th - Fixed: Fixed the Goto Anything item list overflow ([#3096](https://github.com/laurent22/joplin/issues/3096)) ([#3095](https://github.com/laurent22/joplin/issues/3095) by Rahul Mohata) - Fixed: Fixed various bugs and regressions following note editor refactoring - Fixed: Long URIs break Note Info dialog ([#3136](https://github.com/laurent22/joplin/issues/3136)) ([#3131](https://github.com/laurent22/joplin/issues/3131) by Mohammed Rabeeh) -- Fixed: Prevent Goto Anything from freezing when inputting special characters ([#3093](https://github.com/laurent22/joplin/issues/3093)) +- Fixed: Prevent Goto Anything from freezing when inputting special characters ([#309](https://github.com/laurent22/joplin/issues/309)3) - Fixed: WYSIWYG: Fix CODE element style - Fixed: WYSIWYG: Fixed clicking a link within a checkbox label - Fixed: WYSIWYG: Fixed undo issue when pasting text -- Fixed: Fix notebook associated with note when doing search, and expand correct notebook ([#3219](https://github.com/laurent22/joplin/issues/3219)) +- Fixed: Fix notebook associated with note when doing search, and expand correct notebook ([#321](https://github.com/laurent22/joplin/issues/321)9) - Fixed: Make sidebar resizable when note list is not displayed ([#2895](https://github.com/laurent22/joplin/issues/2895)) ([#2865](https://github.com/laurent22/joplin/issues/2865) by anirudh murali) - Fixed: WYSIWYG: Fixed UI translation issue for certain languages - Fixed: Word/character counter includes Markdown syntax and HTML tags ([#3037](https://github.com/laurent22/joplin/issues/3037)) ([#3009](https://github.com/laurent22/joplin/issues/3009) by [@RedDocMD](https://github.com/RedDocMD)) @@ -2722,8 +2722,8 @@ Finally, the tag bar has been moved to the top of the note editor pane. Again th - Improved: WYSIWYG: Enable context menu on resources, links and text - Improved: WYSIWYG: Handle "Paste as text" when pressing Ctrl+Shift+V - Improved: WYSIWYG: Handle drag and drop of notes and files -- Fixed: Better handling of missing table field bug on Linux ([#3088](https://github.com/laurent22/joplin/issues/3088)) -- Fixed: Disable or enable menu items depending on the current view ([#2467](https://github.com/laurent22/joplin/issues/2467)) +- Fixed: Better handling of missing table field bug on Linux ([#308](https://github.com/laurent22/joplin/issues/308)8) +- Fixed: Disable or enable menu items depending on the current view ([#246](https://github.com/laurent22/joplin/issues/246)7) - Fixed: Fix focus after exiting GotoAnything ([#3075](https://github.com/laurent22/joplin/issues/3075)) ([#3066](https://github.com/laurent22/joplin/issues/3066) by Mohammed Rabeeh) - Fixed: Fix format of geolocation data ([#2673](https://github.com/laurent22/joplin/issues/2673) by [@mic704b](https://github.com/mic704b)) - Fixed: Fix issue where last used filename was displayed when exporting directory @@ -2737,33 +2737,33 @@ Finally, the tag bar has been moved to the top of the note editor pane. Again th - Fixed: Fixed the Goto Anything item list overflow ([#3096](https://github.com/laurent22/joplin/issues/3096)) ([#3095](https://github.com/laurent22/joplin/issues/3095) by Rahul Mohata) - Fixed: Fixed various bugs and regressions following note editor refactoring - Fixed: Long URIs break Note Info dialog ([#3136](https://github.com/laurent22/joplin/issues/3136)) ([#3131](https://github.com/laurent22/joplin/issues/3131) by Mohammed Rabeeh) -- Fixed: Prevent Goto Anything from freezing when inputting special characters ([#3093](https://github.com/laurent22/joplin/issues/3093)) +- Fixed: Prevent Goto Anything from freezing when inputting special characters ([#309](https://github.com/laurent22/joplin/issues/309)3) - Fixed: WYSIWYG: Fix CODE element style - Fixed: WYSIWYG: Fixed clicking a link within a checkbox label - Fixed: WYSIWYG: Fixed undo issue when pasting text -- Security: Filter SVG element event attributes to prevent XSS vulnerability ([#3143](https://github.com/laurent22/joplin/issues/3143)) +- Security: Filter SVG element event attributes to prevent XSS vulnerability ([#314](https://github.com/laurent22/joplin/issues/314)3) ## [v1.0.201](https://github.com/laurent22/joplin/releases/tag/v1.0.201) - 2020-04-15T22:55:13Z - Improved: Search in title and body by default when using Goto Anything - Improved: Disable prompt dialog OK button when input is empty ([#2905](https://github.com/laurent22/joplin/issues/2905)) ([#2799](https://github.com/laurent22/joplin/issues/2799) by Siddhant Sehgal) - Improved: Disable BASE html tag, which can break certain plugins such as Katex -- Fixed: In some cases, notes with Katex code were not exported correctly as PDF ([#3058](https://github.com/laurent22/joplin/issues/3058)) -- Fixed: Trying to fix resource path issue in WYSIWYG editor ([#2968](https://github.com/laurent22/joplin/issues/2968)) -- Fixed: Fixed Katex rendering issue when greater than symbol appears in markup ([#3033](https://github.com/laurent22/joplin/issues/3033)) +- Fixed: In some cases, notes with Katex code were not exported correctly as PDF ([#305](https://github.com/laurent22/joplin/issues/305)8) +- Fixed: Trying to fix resource path issue in WYSIWYG editor ([#296](https://github.com/laurent22/joplin/issues/296)8) +- Fixed: Fixed Katex rendering issue when greater than symbol appears in markup ([#303](https://github.com/laurent22/joplin/issues/303)3) ## [v1.0.200](https://github.com/laurent22/joplin/releases/tag/v1.0.200) - 2020-04-12T12:17:46Z This is to fix a few regressions in previous release. -- New: Add more log statements to attempt to fix [#2968](https://github.com/laurent22/joplin/issues/2968) +- New: Add more log statements to attempt to fix [#29](https://github.com/laurent22/joplin/issues/29)68 - Improved: Update zh_TW.po ([#3020](https://github.com/laurent22/joplin/issues/3020) by Ethan Chen) - Improved: Update sv.po ([#3013](https://github.com/laurent22/joplin/issues/3013) by [@abolishallprivateproperty](https://github.com/abolishallprivateproperty)) - Fixed: Fix Go To Anything closing when clicking inside the modal ([#3029](https://github.com/laurent22/joplin/issues/3029)) ([#3028](https://github.com/laurent22/joplin/issues/3028) by Anjula Karunarathne) - Fixed: Fix JEX export ([#3026](https://github.com/laurent22/joplin/issues/3026) by [@CalebJohn](https://github.com/CalebJohn)) - Fixed: Fixes todo mouse hover behaviour ([#2831](https://github.com/laurent22/joplin/issues/2831)) ([#2830](https://github.com/laurent22/joplin/issues/2830) by Siddhant Sehgal) - Fixed: Fixes selection in text editor after applying formatting ([#2737](https://github.com/laurent22/joplin/issues/2737)) ([#2736](https://github.com/laurent22/joplin/issues/2736) by [@Rishgod](https://github.com/Rishgod)) -- Fixed: Title auto-update didn't work anymore ([#3019](https://github.com/laurent22/joplin/issues/3019)) +- Fixed: Title auto-update didn't work anymore ([#301](https://github.com/laurent22/joplin/issues/301)9) ## [v1.0.199](https://github.com/laurent22/joplin/releases/tag/v1.0.199) - 2020-04-10T18:41:58Z @@ -2777,24 +2777,24 @@ This is to fix a few regressions in previous release. - New: WYSIWYG: Handle resource download mode - New: WYSIWYG: Improved documentation on what plugins are compatible with WYSIWYG editor - New: WYSIWYG: Preserve HTML code in Markdown when editing from wysiwyg editor -- New: Add "Retry All" option to synchronisation page ([#2688](https://github.com/laurent22/joplin/issues/2688)) +- New: Add "Retry All" option to synchronisation page ([#268](https://github.com/laurent22/joplin/issues/268)8) - New: Add friendly default filenames to export options ([#2749](https://github.com/laurent22/joplin/issues/2749) by [@CalebJohn](https://github.com/CalebJohn)) - New: Add message box to ask confirmation when resizing image -- Improved: Clear provisional flag as soon as note is modified to avoid data loss ([#2681](https://github.com/laurent22/joplin/issues/2681)) +- Improved: Clear provisional flag as soon as note is modified to avoid data loss ([#268](https://github.com/laurent22/joplin/issues/268)1) - Improved: Close `Goto Anything` modal on outside click ([#2940](https://github.com/laurent22/joplin/issues/2940) by Siddhant Sehgal) - Improved: Moved all themes out into their own .js theme files ([#2951](https://github.com/laurent22/joplin/issues/2951) by [@TobiasDev](https://github.com/TobiasDev)) -- Improved: Resource screen improvements ([#2850](https://github.com/laurent22/joplin/issues/2850)) ([#2639](https://github.com/laurent22/joplin/issues/2639)) +- Improved: Resource screen improvements ([#2850](https://github.com/laurent22/joplin/issues/2850)) ([#263](https://github.com/laurent22/joplin/issues/263)9) - Improved: Right-click to move note to notebook ([#2566](https://github.com/laurent22/joplin/issues/2566)) ([#2296](https://github.com/laurent22/joplin/issues/2296) by Siddhant Sehgal) - Improved: Update it_IT.po ([#2978](https://github.com/laurent22/joplin/issues/2978) by [@abonte](https://github.com/abonte)) - Improved: Update ko.po ([#2986](https://github.com/laurent22/joplin/issues/2986) by [@xmlangel](https://github.com/xmlangel)) - Improved: Update nb_NO.po ([#2973](https://github.com/laurent22/joplin/issues/2973) by Mats Estensen) - Improved: Update zh_CN.po ([#2971](https://github.com/laurent22/joplin/issues/2971) by [@troilus](https://github.com/troilus)) - Improved: Wait for note to be saved before closing the app -- Fixed: Fixed iOS and macOS icons and created script to automate icon creation ([#2604](https://github.com/laurent22/joplin/issues/2604)) +- Fixed: Fixed iOS and macOS icons and created script to automate icon creation ([#260](https://github.com/laurent22/joplin/issues/260)4) - Fixed: Fixed regression when drag and dropping files - Fixed: Fixed styling issues with rendered Markdown -- Fixed: Prevent decryption loop when a resource cannot be decrypted ([#2257](https://github.com/laurent22/joplin/issues/2257)) -- Fixed: When modifying a conflicted note, it would disappear from the view ([#2709](https://github.com/laurent22/joplin/issues/2709)) +- Fixed: Prevent decryption loop when a resource cannot be decrypted ([#225](https://github.com/laurent22/joplin/issues/225)7) +- Fixed: When modifying a conflicted note, it would disappear from the view ([#270](https://github.com/laurent22/joplin/issues/270)9) ## [v1.0.197](https://github.com/laurent22/joplin/releases/tag/v1.0.197) - 2020-03-30T17:21:22Z @@ -2808,7 +2808,7 @@ This is to fix a few regressions in previous release. ## [v1.0.195](https://github.com/laurent22/joplin/releases/tag/v1.0.195) - 2020-03-22T19:56:12Z -- New: Added experimental WYSIWYG editor ([#2556](https://github.com/laurent22/joplin/issues/2556)) ([#176](https://github.com/laurent22/joplin/issues/176)) +- New: Added experimental WYSIWYG editor ([#2556](https://github.com/laurent22/joplin/issues/2556)) ([#17](https://github.com/laurent22/joplin/issues/17)6) - New: Added way to upgrade master key encryption and sync target encryption - New: Add button to About box to copy Joplin's information to the clipboard ([#2711](https://github.com/laurent22/joplin/issues/2711) by Helmut K. C. Tessarek) - New: Api: Add support for "tags" property for note PUT request ([#2649](https://github.com/laurent22/joplin/issues/2649)) ([#941](https://github.com/laurent22/joplin/issues/941) by [@jyuvaraj03](https://github.com/jyuvaraj03)) @@ -2825,13 +2825,13 @@ This is to fix a few regressions in previous release. - Fixed: Fix show-all-notes update bugs. ([#2642](https://github.com/laurent22/joplin/issues/2642) by [@mic704b](https://github.com/mic704b)) - Fixed: Fix issue with tag not being displayed below note when it is created - Fixed: Fix button label wrapping in toolbar ([#2708](https://github.com/laurent22/joplin/issues/2708)) ([#2700](https://github.com/laurent22/joplin/issues/2700) by Anjula Karunarathne) -- Fixed: Fixed renaming tag issue ([#2618](https://github.com/laurent22/joplin/issues/2618)) +- Fixed: Fixed renaming tag issue ([#261](https://github.com/laurent22/joplin/issues/261)8) ## [v1.0.194](https://github.com/laurent22/joplin/releases/tag/v1.0.194) (Pre-release) - 2020-03-14T00:00:32Z The main purpose of this pre-release is to allow evaluating the WYSIWYG editor. -- New: Added experimental WYSIWYG editor ([#2556](https://github.com/laurent22/joplin/issues/2556)) ([#176](https://github.com/laurent22/joplin/issues/176)) +- New: Added experimental WYSIWYG editor ([#2556](https://github.com/laurent22/joplin/issues/2556)) ([#17](https://github.com/laurent22/joplin/issues/17)6) - New: Added way to upgrade master key encryption and sync target encryption - New: Add button to About box to copy Joplin's information to the clipboard ([#2711](https://github.com/laurent22/joplin/issues/2711) by Helmut K. C. Tessarek) - New: Api: Add support for "tags" property for note PUT request ([#2649](https://github.com/laurent22/joplin/issues/2649)) ([#941](https://github.com/laurent22/joplin/issues/941) by [@jyuvaraj03](https://github.com/jyuvaraj03)) @@ -2843,12 +2843,12 @@ The main purpose of this pre-release is to allow evaluating the WYSIWYG editor. - New: Added concept of provisional note to simplify creation and handling of newly created notes - New: Add word counter feature to notes ([#2444](https://github.com/laurent22/joplin/issues/2444)) ([#160](https://github.com/laurent22/joplin/issues/160) by [@jdrobertso](https://github.com/jdrobertso)) -- New: Added zoom controls to the application menu ([#2162](https://github.com/laurent22/joplin/issues/2162)) -- New: Added Mermaid diagrams support ([#2001](https://github.com/laurent22/joplin/issues/2001)) +- New: Added zoom controls to the application menu ([#216](https://github.com/laurent22/joplin/issues/216)2) +- New: Added Mermaid diagrams support ([#200](https://github.com/laurent22/joplin/issues/200)1) - New: Add "add or remove tags" for multiple notes. ([#2386](https://github.com/laurent22/joplin/issues/2386)) ([#539](https://github.com/laurent22/joplin/issues/539) by [@mic704b](https://github.com/mic704b)) - New: Added new date format YYYY.MM.DD ([#2318](https://github.com/laurent22/joplin/issues/2318) by XSAkos) - New: Added new, more secure encryption methods, so that they can be switched to at a later time -- Fixed: Handle invalid UTF-8 data when encrypting ([#2591](https://github.com/laurent22/joplin/issues/2591)) +- Fixed: Handle invalid UTF-8 data when encrypting ([#259](https://github.com/laurent22/joplin/issues/259)1) - New: Add more context to encryption errors - Security: Fixed potential Arbitrary File Read via XSS (Reported by [Javier Olmedo](https://github.com/JavierOlmedo), fixed by Laurent Cozic) - Security: Changed default encryption method to CCM @@ -2882,16 +2882,16 @@ The main purpose of this pre-release is to allow evaluating the WYSIWYG editor. - Fixed: Fix to update tag list when note is deleted. ([#2554](https://github.com/laurent22/joplin/issues/2554) by [@mic704b](https://github.com/mic704b)) - Fixed: Fix Resources menu item on macOS ([#2530](https://github.com/laurent22/joplin/issues/2530) by Helmut K. C. Tessarek) - Fixed: Fixed search bar text not visible in dark mode -- Fixed: Better handling of rare error in WebDAV server ([#2485](https://github.com/laurent22/joplin/issues/2485)) +- Fixed: Better handling of rare error in WebDAV server ([#248](https://github.com/laurent22/joplin/issues/248)5) - Fixed: Fixed note renderer asset caching issue - Fixed: Add new Katex fonts to improve rendering ([#2478](https://github.com/laurent22/joplin/issues/2478)) ([#2477](https://github.com/laurent22/joplin/issues/2477) by Helmut K. C. Tessarek) - Fixed: Fix `.desktop` file & force refresh ([#2479](https://github.com/laurent22/joplin/issues/2479) by Brandon Wulf) - Fixed: Fixed incorect location format ([#2480](https://github.com/laurent22/joplin/issues/2480) by [@anjulalk](https://github.com/anjulalk)) - Fixed: Fix importing of very large attachments (150MB+) from Evernote ENEX files - Fixed: Fix to update the note list if the selected tag is deleted. ([#2398](https://github.com/laurent22/joplin/issues/2398) by [@mic704b](https://github.com/mic704b)) -- Fixed: Fix alignment of checkboxes and other list items in rendered note ([#2277](https://github.com/laurent22/joplin/issues/2277)) -- Fixed: Fix slow rendering and memory leak issues with Katex notes ([#2357](https://github.com/laurent22/joplin/issues/2357)) -- Fixed: Fix rendering of certain letters in Katex. Fixed printing when note contains Katex code ([#2374](https://github.com/laurent22/joplin/issues/2374)) +- Fixed: Fix alignment of checkboxes and other list items in rendered note ([#227](https://github.com/laurent22/joplin/issues/227)7) +- Fixed: Fix slow rendering and memory leak issues with Katex notes ([#235](https://github.com/laurent22/joplin/issues/235)7) +- Fixed: Fix rendering of certain letters in Katex. Fixed printing when note contains Katex code ([#237](https://github.com/laurent22/joplin/issues/237)4) - Fixed: Fix markdown export ([#2463](https://github.com/laurent22/joplin/issues/2463)) ([#2455](https://github.com/laurent22/joplin/issues/2455) by [@mic704b](https://github.com/mic704b)) - Fixed: Fix escaping of title when generating a markdown link ([#2456](https://github.com/laurent22/joplin/issues/2456)) ([#2085](https://github.com/laurent22/joplin/issues/2085) by Helmut K. C. Tessarek) - Fixed: Fix rendering of tabs in code blocks ([#2446](https://github.com/laurent22/joplin/issues/2446)) ([#2330](https://github.com/laurent22/joplin/issues/2330) by [@mic704b](https://github.com/mic704b)) @@ -2899,11 +2899,11 @@ The main purpose of this pre-release is to allow evaluating the WYSIWYG editor. - Fixed: Fixes long lines warpped ([#2447](https://github.com/laurent22/joplin/issues/2447) by Amit singh) - Fixed: Ensure the main window is hidden when Joplin starts ([#2432](https://github.com/laurent22/joplin/issues/2432)) ([#2365](https://github.com/laurent22/joplin/issues/2365) by 0xCLOVER) - Fixed: Fix hang when selecting tag when multiple notes are selected (also for search) ([#2372](https://github.com/laurent22/joplin/issues/2372) by [@mic704b](https://github.com/mic704b)) -- Fixed: Apply userstyle again when exporting to PDF or printing ([#2324](https://github.com/laurent22/joplin/issues/2324)) +- Fixed: Apply userstyle again when exporting to PDF or printing ([#232](https://github.com/laurent22/joplin/issues/232)4) - Fixed: Fixed update message box - Fixed: Fix identification of note in pdf export from main menu. ([#2323](https://github.com/laurent22/joplin/issues/2323) by [@mic704b](https://github.com/mic704b)) -- Fixed: Fixed bad table rendering with multitable ([#2352](https://github.com/laurent22/joplin/issues/2352)) -- Fixed: Fixed issues with Katex and MultiMd table plugin ([#2339](https://github.com/laurent22/joplin/issues/2339)) +- Fixed: Fixed bad table rendering with multitable ([#235](https://github.com/laurent22/joplin/issues/235)2) +- Fixed: Fixed issues with Katex and MultiMd table plugin ([#233](https://github.com/laurent22/joplin/issues/233)9) - Fixed: Fix Linux installation script ([#2333](https://github.com/laurent22/joplin/issues/2333) by Carl Bordum Hansen) ## [v1.0.192](https://github.com/laurent22/joplin/releases/tag/v1.0.192) (Pre-release) - 2020-03-06T23:27:52Z @@ -2911,7 +2911,7 @@ The main purpose of this pre-release is to allow evaluating the WYSIWYG editor. More fixes following latest pre-release. - Security: Changed default encryption method to CCM -- Fixed: Handle invalid UTF-8 data when encrypting ([#2591](https://github.com/laurent22/joplin/issues/2591)) +- Fixed: Handle invalid UTF-8 data when encrypting ([#259](https://github.com/laurent22/joplin/issues/259)1) - Fixed: Fixed top margin issue on note rendering - Fixed: Fixed issue with style embeded in notes @@ -2919,8 +2919,8 @@ More fixes following latest pre-release. Fix more regressions from previous pre-release. -- Fixed: Fixed sanitize function so that it does not break HTML ([#2667](https://github.com/laurent22/joplin/issues/2667)) -- Fixed: Templates when creating note were broken ([#2660](https://github.com/laurent22/joplin/issues/2660)) +- Fixed: Fixed sanitize function so that it does not break HTML ([#266](https://github.com/laurent22/joplin/issues/266)7) +- Fixed: Templates when creating note were broken ([#266](https://github.com/laurent22/joplin/issues/266)0) ## [v1.0.189](https://github.com/laurent22/joplin/releases/tag/v1.0.189) (Pre-release) - 2020-03-04T17:27:15Z @@ -2929,17 +2929,17 @@ Fixed issue from previous pre-release 1.0.187. - New: Add more context to encryption errors - Improved: Improve code css for Solarized Dark ([#2626](https://github.com/laurent22/joplin/issues/2626) by [@rajprakash](https://github.com/rajprakash)) - Improved: Empty note body has 0 line count ([#2623](https://github.com/laurent22/joplin/issues/2623) by [@jdrobertso](https://github.com/jdrobertso)) -- Fixed: Fix creation of new notes ([#2656](https://github.com/laurent22/joplin/issues/2656)) -- Fixed: Improved Mermaid rendering on small viewports ([#2638](https://github.com/laurent22/joplin/issues/2638)) -- Fixed: Fixed auto-title feature ([#2652](https://github.com/laurent22/joplin/issues/2652)) -- Fixed: HTML code within Markdown was rendered incorrectly in some cases ([#2640](https://github.com/laurent22/joplin/issues/2640)) +- Fixed: Fix creation of new notes ([#265](https://github.com/laurent22/joplin/issues/265)6) +- Fixed: Improved Mermaid rendering on small viewports ([#263](https://github.com/laurent22/joplin/issues/263)8) +- Fixed: Fixed auto-title feature ([#265](https://github.com/laurent22/joplin/issues/265)2) +- Fixed: HTML code within Markdown was rendered incorrectly in some cases ([#264](https://github.com/laurent22/joplin/issues/264)0) ## [v1.0.187](https://github.com/laurent22/joplin/releases/tag/v1.0.187) (Pre-release) - 2020-03-01T12:31:06Z - New: Added concept of provisional note to simplify creation and handling of newly created notes - New: Add word counter feature to notes ([#2444](https://github.com/laurent22/joplin/issues/2444)) ([#160](https://github.com/laurent22/joplin/issues/160) by [@jdrobertso](https://github.com/jdrobertso)) -- New: Added zoom controls to the application menu ([#2162](https://github.com/laurent22/joplin/issues/2162)) -- New: Added Mermaid diagrams support ([#2001](https://github.com/laurent22/joplin/issues/2001)) +- New: Added zoom controls to the application menu ([#216](https://github.com/laurent22/joplin/issues/216)2) +- New: Added Mermaid diagrams support ([#200](https://github.com/laurent22/joplin/issues/200)1) - New: Add "add or remove tags" for multiple notes. ([#2386](https://github.com/laurent22/joplin/issues/2386)) ([#539](https://github.com/laurent22/joplin/issues/539) by [@mic704b](https://github.com/mic704b)) - New: Added new date format YYYY.MM.DD ([#2318](https://github.com/laurent22/joplin/issues/2318) by XSAkos) - New: Added new, more secure encryption methods, so that they can be switched to at a later time @@ -2972,16 +2972,16 @@ Fixed issue from previous pre-release 1.0.187. - Fixed: Fix to update tag list when note is deleted. ([#2554](https://github.com/laurent22/joplin/issues/2554) by [@mic704b](https://github.com/mic704b)) - Fixed: Fix Resources menu item on macOS ([#2530](https://github.com/laurent22/joplin/issues/2530) by Helmut K. C. Tessarek) - Fixed: Fixed search bar text not visible in dark mode -- Fixed: Better handling of rare error in WebDAV server ([#2485](https://github.com/laurent22/joplin/issues/2485)) +- Fixed: Better handling of rare error in WebDAV server ([#248](https://github.com/laurent22/joplin/issues/248)5) - Fixed: Fixed note renderer asset caching issue - Fixed: Add new Katex fonts to improve rendering ([#2478](https://github.com/laurent22/joplin/issues/2478)) ([#2477](https://github.com/laurent22/joplin/issues/2477) by Helmut K. C. Tessarek) - Fixed: Fix `.desktop` file & force refresh ([#2479](https://github.com/laurent22/joplin/issues/2479) by Brandon Wulf) - Fixed: Fixed incorect location format ([#2480](https://github.com/laurent22/joplin/issues/2480) by [@anjulalk](https://github.com/anjulalk)) - Fixed: Fix importing of very large attachments (150MB+) from Evernote ENEX files - Fixed: Fix to update the note list if the selected tag is deleted. ([#2398](https://github.com/laurent22/joplin/issues/2398) by [@mic704b](https://github.com/mic704b)) -- Fixed: Fix alignment of checkboxes and other list items in rendered note ([#2277](https://github.com/laurent22/joplin/issues/2277)) -- Fixed: Fix slow rendering and memory leak issues with Katex notes ([#2357](https://github.com/laurent22/joplin/issues/2357)) -- Fixed: Fix rendering of certain letters in Katex. Fixed printing when note contains Katex code ([#2374](https://github.com/laurent22/joplin/issues/2374)) +- Fixed: Fix alignment of checkboxes and other list items in rendered note ([#227](https://github.com/laurent22/joplin/issues/227)7) +- Fixed: Fix slow rendering and memory leak issues with Katex notes ([#235](https://github.com/laurent22/joplin/issues/235)7) +- Fixed: Fix rendering of certain letters in Katex. Fixed printing when note contains Katex code ([#237](https://github.com/laurent22/joplin/issues/237)4) - Fixed: Fix markdown export ([#2463](https://github.com/laurent22/joplin/issues/2463)) ([#2455](https://github.com/laurent22/joplin/issues/2455) by [@mic704b](https://github.com/mic704b)) - Fixed: Fix escaping of title when generating a markdown link ([#2456](https://github.com/laurent22/joplin/issues/2456)) ([#2085](https://github.com/laurent22/joplin/issues/2085) by Helmut K. C. Tessarek) - Fixed: Fix rendering of tabs in code blocks ([#2446](https://github.com/laurent22/joplin/issues/2446)) ([#2330](https://github.com/laurent22/joplin/issues/2330) by [@mic704b](https://github.com/mic704b)) @@ -2989,37 +2989,37 @@ Fixed issue from previous pre-release 1.0.187. - Fixed: Fixes long lines warpped ([#2447](https://github.com/laurent22/joplin/issues/2447) by Amit singh) - Fixed: Ensure the main window is hidden when Joplin starts ([#2432](https://github.com/laurent22/joplin/issues/2432)) ([#2365](https://github.com/laurent22/joplin/issues/2365) by 0xCLOVER) - Fixed: Fix hang when selecting tag when multiple notes are selected (also for search) ([#2372](https://github.com/laurent22/joplin/issues/2372) by [@mic704b](https://github.com/mic704b)) -- Fixed: Apply userstyle again when exporting to PDF or printing ([#2324](https://github.com/laurent22/joplin/issues/2324)) +- Fixed: Apply userstyle again when exporting to PDF or printing ([#232](https://github.com/laurent22/joplin/issues/232)4) - Fixed: Fixed update message box - Fixed: Fix identification of note in pdf export from main menu. ([#2323](https://github.com/laurent22/joplin/issues/2323) by [@mic704b](https://github.com/mic704b)) -- Fixed: Fixed bad table rendering with multitable ([#2352](https://github.com/laurent22/joplin/issues/2352)) -- Fixed: Fixed issues with Katex and MultiMd table plugin ([#2339](https://github.com/laurent22/joplin/issues/2339)) +- Fixed: Fixed bad table rendering with multitable ([#235](https://github.com/laurent22/joplin/issues/235)2) +- Fixed: Fixed issues with Katex and MultiMd table plugin ([#233](https://github.com/laurent22/joplin/issues/233)9) - Fixed: Fix Linux installation script ([#2333](https://github.com/laurent22/joplin/issues/2333) by Carl Bordum Hansen) ## [v1.0.179](https://github.com/laurent22/joplin/releases/tag/v1.0.179) - 2020-01-24T22:42:41Z - New: Added new, more secure encryption methods, so that they can be switched to at a later time - Improved: Improve appearance of note Info dialog -- Fixed: Apply userstyle again when exporting to PDF or printing ([#2324](https://github.com/laurent22/joplin/issues/2324)) +- Fixed: Apply userstyle again when exporting to PDF or printing ([#232](https://github.com/laurent22/joplin/issues/232)4) - Fixed: Fixed update message box - Fixed: Fix identification of note in pdf export from main menu. ([#2323](https://github.com/laurent22/joplin/issues/2323) by mic704b) -- Fixed: Undefined text was being displayed on top of notes in revision viewer ([#2352](https://github.com/laurent22/joplin/issues/2352)) -- Fixed: Fixed issues with Katex and MultiMd table plugin ([#2339](https://github.com/laurent22/joplin/issues/2339)) +- Fixed: Undefined text was being displayed on top of notes in revision viewer ([#235](https://github.com/laurent22/joplin/issues/235)2) +- Fixed: Fixed issues with Katex and MultiMd table plugin ([#233](https://github.com/laurent22/joplin/issues/233)9) - Fixed: Fix Linux installation script ([#2333](https://github.com/laurent22/joplin/issues/2333) by [@carlbordum](https://github.com/carlbordum)) ## [v1.0.178](https://github.com/laurent22/joplin/releases/tag/v1.0.178) - 2020-01-20T19:06:45Z - New: Add ability to search by folder or tag title -- New: Add option to disable auto-matching braces ([#2251](https://github.com/laurent22/joplin/issues/2251)) -- New: Display selected tags under a note title ([#2217](https://github.com/laurent22/joplin/issues/2217)) -- New: Add external editor actions to the note context menu. ([#2214](https://github.com/laurent22/joplin/issues/2214)) -- Improved: When importing MD files create resources for local linked files ([#2262](https://github.com/laurent22/joplin/issues/2262)) -- Improved: Update Electron to 7.1.9 ([#2314](https://github.com/laurent22/joplin/issues/2314)) -- Improved: Show completed date in note properties ([#2292](https://github.com/laurent22/joplin/issues/2292)) -- Improved: Maintain selection when non-selected note is deleted ([#2290](https://github.com/laurent22/joplin/issues/2290)) -- Improved: Don't count completed to-dos in note counts when they are not shown ([#2288](https://github.com/laurent22/joplin/issues/2288)) -- Improved: Replace note links with relative paths in MD Exporter ([#2161](https://github.com/laurent22/joplin/issues/2161)) -- Fixed: Fix pdf export when mouse over non-selected note in notelist. ([#2255](https://github.com/laurent22/joplin/issues/2255)) ([#2254](https://github.com/laurent22/joplin/issues/2254)) +- New: Add option to disable auto-matching braces ([#225](https://github.com/laurent22/joplin/issues/225)1) +- New: Display selected tags under a note title ([#221](https://github.com/laurent22/joplin/issues/221)7) +- New: Add external editor actions to the note context menu. ([#221](https://github.com/laurent22/joplin/issues/221)4) +- Improved: When importing MD files create resources for local linked files ([#226](https://github.com/laurent22/joplin/issues/226)2) +- Improved: Update Electron to 7.1.9 ([#231](https://github.com/laurent22/joplin/issues/231)4) +- Improved: Show completed date in note properties ([#229](https://github.com/laurent22/joplin/issues/229)2) +- Improved: Maintain selection when non-selected note is deleted ([#229](https://github.com/laurent22/joplin/issues/229)0) +- Improved: Don't count completed to-dos in note counts when they are not shown ([#228](https://github.com/laurent22/joplin/issues/228)8) +- Improved: Replace note links with relative paths in MD Exporter ([#216](https://github.com/laurent22/joplin/issues/216)1) +- Fixed: Fix pdf export when mouse over non-selected note in notelist. ([#2255](https://github.com/laurent22/joplin/issues/2255)) ([#225](https://github.com/laurent22/joplin/issues/225)4) - Fixed: Fixed regression in HTML note rendering - Fixed: Fixed export to HTML, PDF and printing @@ -3028,110 +3028,110 @@ Fixed issue from previous pre-release 1.0.187. This is to test the Electron framework upgrade and the switch to a separate note renderer. If you find any bug please report on the forum or GitHub tracker. - New: Allow exporting a note as HTML -- Improved: Extract note renderer to separate package ([#2206](https://github.com/laurent22/joplin/issues/2206)) +- Improved: Extract note renderer to separate package ([#220](https://github.com/laurent22/joplin/issues/220)6) - Improved: Better handling of resource download errors, and added resource info to sync status screen -- Improved: Update Katex to 0.11.1 ([#2201](https://github.com/laurent22/joplin/issues/2201)) +- Improved: Update Katex to 0.11.1 ([#220](https://github.com/laurent22/joplin/issues/220)1) - Improved: Improved Nextcloud API error handling - Improved: Updated OneDrive login to remove webview dependency - Improved: Decrypt notes that are meant to be shared - Improved: Make it easier to view early errors when the app starts - Improved: Upgrade to Electron 7 - Improved: Render note using iframe instead of deprecated webview -- Fixed: Fix Goto Anything scrolling issue ([#2199](https://github.com/laurent22/joplin/issues/2199)) ([#2122](https://github.com/laurent22/joplin/issues/2122)) -- Fixed: Prevent app from crashing when pressing focus shortcut from search bar ([#2157](https://github.com/laurent22/joplin/issues/2157)) -- Fixed: Handle WebDAV servers that do not return a last modified date (fixes mail.ru) ([#2091](https://github.com/laurent22/joplin/issues/2091)) -- Fixed: Fix notifications on Windows 7 ([#2144](https://github.com/laurent22/joplin/issues/2144)) +- Fixed: Fix Goto Anything scrolling issue ([#2199](https://github.com/laurent22/joplin/issues/2199)) ([#212](https://github.com/laurent22/joplin/issues/212)2) +- Fixed: Prevent app from crashing when pressing focus shortcut from search bar ([#215](https://github.com/laurent22/joplin/issues/215)7) +- Fixed: Handle WebDAV servers that do not return a last modified date (fixes mail.ru) ([#209](https://github.com/laurent22/joplin/issues/209)1) +- Fixed: Fix notifications on Windows 7 ([#214](https://github.com/laurent22/joplin/issues/214)4) ## [v1.0.176](https://github.com/laurent22/joplin/releases/tag/v1.0.176) (Pre-release) - 2019-12-14T10:36:44Z -- New: Add ability to share a note publicly using Nextcloud ([#2173](https://github.com/laurent22/joplin/issues/2173)) -- Improved: Allow for custom Joplin theme and Ace editor styles ([#2099](https://github.com/laurent22/joplin/issues/2099)) +- New: Add ability to share a note publicly using Nextcloud ([#217](https://github.com/laurent22/joplin/issues/217)3) +- Improved: Allow for custom Joplin theme and Ace editor styles ([#209](https://github.com/laurent22/joplin/issues/209)9) ## [v1.0.175](https://github.com/laurent22/joplin/releases/tag/v1.0.175) - 2019-12-08T11:48:47Z -- New: Add warning message when user tries to upload a file 10MB or larger ([#2102](https://github.com/laurent22/joplin/issues/2102)) ([#2097](https://github.com/laurent22/joplin/issues/2097)) -- Improved: Improved text editor syntax highlighting ([#2100](https://github.com/laurent22/joplin/issues/2100)) +- New: Add warning message when user tries to upload a file 10MB or larger ([#2102](https://github.com/laurent22/joplin/issues/2102)) ([#209](https://github.com/laurent22/joplin/issues/209)7) +- Improved: Improved text editor syntax highlighting ([#210](https://github.com/laurent22/joplin/issues/210)0) - Improved: Improved logging during sync to allow finding bugs more easily -- Improved: Allow Electron debugging flag ([#2084](https://github.com/laurent22/joplin/issues/2084)) +- Improved: Allow Electron debugging flag ([#208](https://github.com/laurent22/joplin/issues/208)4) - Improved: Updated application icons -- Fixed: Restaured translations that had been accidentally deleted ([#2126](https://github.com/laurent22/joplin/issues/2126)) -- Fixed: Fixed warning boxes in solarized theme ([#1826](https://github.com/laurent22/joplin/issues/1826)) -- Fixed: Prevent sync from happening if target dir could not be created, in local sync ([#2117](https://github.com/laurent22/joplin/issues/2117)) -- Fixed: Handle rare case when notebook has a parent that no longer exists, which causes a crash when sorting ([#2088](https://github.com/laurent22/joplin/issues/2088)) +- Fixed: Restaured translations that had been accidentally deleted ([#212](https://github.com/laurent22/joplin/issues/212)6) +- Fixed: Fixed warning boxes in solarized theme ([#182](https://github.com/laurent22/joplin/issues/182)6) +- Fixed: Prevent sync from happening if target dir could not be created, in local sync ([#211](https://github.com/laurent22/joplin/issues/211)7) +- Fixed: Handle rare case when notebook has a parent that no longer exists, which causes a crash when sorting ([#208](https://github.com/laurent22/joplin/issues/208)8) ## [v1.0.174](https://github.com/laurent22/joplin/releases/tag/v1.0.174) - 2019-11-12T18:20:58Z - Improved: Show note count by default -- Fixed: Do not crash when a notebook parent does not exist ([#2079](https://github.com/laurent22/joplin/issues/2079)) -- Fixed: Fix scaling of inline svg resource icons ([#2075](https://github.com/laurent22/joplin/issues/2075)) +- Fixed: Do not crash when a notebook parent does not exist ([#207](https://github.com/laurent22/joplin/issues/207)9) +- Fixed: Fix scaling of inline svg resource icons ([#207](https://github.com/laurent22/joplin/issues/207)5) ## [v1.0.173](https://github.com/laurent22/joplin/releases/tag/v1.0.173) - 2019-11-11T08:33:35Z -- New: Add new setting to show note counts for folders and tags ([#2006](https://github.com/laurent22/joplin/issues/2006)) -- New: Add keyboard modes to editor (vim, emacs) ([#2056](https://github.com/laurent22/joplin/issues/2056)) ([#1298](https://github.com/laurent22/joplin/issues/1298)) -- New: Added link resource icon ([#2035](https://github.com/laurent22/joplin/issues/2035)) -- New: Add `` tag support ([#2044](https://github.com/laurent22/joplin/issues/2044)) ([#2043](https://github.com/laurent22/joplin/issues/2043)) -- New: Add Nord theme ([#2004](https://github.com/laurent22/joplin/issues/2004)) ([#1903](https://github.com/laurent22/joplin/issues/1903)) -- New: Add menu item to toggle note list ([#1991](https://github.com/laurent22/joplin/issues/1991)) ([#1988](https://github.com/laurent22/joplin/issues/1988)) -- New: Add context menu and menu item to create sub-notebook ([#1984](https://github.com/laurent22/joplin/issues/1984)) -- New: Add typographer support ([#1987](https://github.com/laurent22/joplin/issues/1987)) -- Improved: Set user-agent header to Joplin/1.0 ([#2064](https://github.com/laurent22/joplin/issues/2064)) ([#2042](https://github.com/laurent22/joplin/issues/2042)) -- Improved: Prevent window from being shown on startup when it should be hidden in tray ([#2031](https://github.com/laurent22/joplin/issues/2031)) -- Improved: Allow selecting what views should be available from the Layout button ([#2028](https://github.com/laurent22/joplin/issues/2028)) ([#1900](https://github.com/laurent22/joplin/issues/1900)) -- Improved: Fill X primary selection from the editor on text selection ([#2029](https://github.com/laurent22/joplin/issues/2029)) ([#215](https://github.com/laurent22/joplin/issues/215)) -- Improved: Allow custom CSS when printing ([#2014](https://github.com/laurent22/joplin/issues/2014)) ([#1918](https://github.com/laurent22/joplin/issues/1918)) -- Improved: Update Markdown plugins: toc-done-right, anchor ([#2005](https://github.com/laurent22/joplin/issues/2005)) ([#1953](https://github.com/laurent22/joplin/issues/1953)) -- Improved: Handle WebDAV server with empty XML namespaces ([#2002](https://github.com/laurent22/joplin/issues/2002)) -- Improved: Stop watching external edits when closing editor ([#1981](https://github.com/laurent22/joplin/issues/1981)) +- New: Add new setting to show note counts for folders and tags ([#200](https://github.com/laurent22/joplin/issues/200)6) +- New: Add keyboard modes to editor (vim, emacs) ([#2056](https://github.com/laurent22/joplin/issues/2056)) ([#129](https://github.com/laurent22/joplin/issues/129)8) +- New: Added link resource icon ([#203](https://github.com/laurent22/joplin/issues/203)5) +- New: Add `` tag support ([#2044](https://github.com/laurent22/joplin/issues/2044)) ([#204](https://github.com/laurent22/joplin/issues/204)3) +- New: Add Nord theme ([#2004](https://github.com/laurent22/joplin/issues/2004)) ([#190](https://github.com/laurent22/joplin/issues/190)3) +- New: Add menu item to toggle note list ([#1991](https://github.com/laurent22/joplin/issues/1991)) ([#198](https://github.com/laurent22/joplin/issues/198)8) +- New: Add context menu and menu item to create sub-notebook ([#198](https://github.com/laurent22/joplin/issues/198)4) +- New: Add typographer support ([#198](https://github.com/laurent22/joplin/issues/198)7) +- Improved: Set user-agent header to Joplin/1.0 ([#2064](https://github.com/laurent22/joplin/issues/2064)) ([#204](https://github.com/laurent22/joplin/issues/204)2) +- Improved: Prevent window from being shown on startup when it should be hidden in tray ([#203](https://github.com/laurent22/joplin/issues/203)1) +- Improved: Allow selecting what views should be available from the Layout button ([#2028](https://github.com/laurent22/joplin/issues/2028)) ([#190](https://github.com/laurent22/joplin/issues/190)0) +- Improved: Fill X primary selection from the editor on text selection ([#2029](https://github.com/laurent22/joplin/issues/2029)) ([#21](https://github.com/laurent22/joplin/issues/21)5) +- Improved: Allow custom CSS when printing ([#2014](https://github.com/laurent22/joplin/issues/2014)) ([#191](https://github.com/laurent22/joplin/issues/191)8) +- Improved: Update Markdown plugins: toc-done-right, anchor ([#2005](https://github.com/laurent22/joplin/issues/2005)) ([#195](https://github.com/laurent22/joplin/issues/195)3) +- Improved: Handle WebDAV server with empty XML namespaces ([#200](https://github.com/laurent22/joplin/issues/200)2) +- Improved: Stop watching external edits when closing editor ([#198](https://github.com/laurent22/joplin/issues/198)1) - Improved: Allow apps to work with read-only profile -- Fixed: Fix handling of URLs that contain single quotes ([#2030](https://github.com/laurent22/joplin/issues/2030)) -- Fixed: Prevent horizontal scrolling on Linux when a scrollbar is present in note list ([#2062](https://github.com/laurent22/joplin/issues/2062)) ([#1570](https://github.com/laurent22/joplin/issues/1570)) -- Fixed: Fix TOC with special characters ([#2052](https://github.com/laurent22/joplin/issues/2052)) -- Fixed: Stop print command from resetting theme ([#1999](https://github.com/laurent22/joplin/issues/1999)) ([#1790](https://github.com/laurent22/joplin/issues/1790)) +- Fixed: Fix handling of URLs that contain single quotes ([#203](https://github.com/laurent22/joplin/issues/203)0) +- Fixed: Prevent horizontal scrolling on Linux when a scrollbar is present in note list ([#2062](https://github.com/laurent22/joplin/issues/2062)) ([#157](https://github.com/laurent22/joplin/issues/157)0) +- Fixed: Fix TOC with special characters ([#205](https://github.com/laurent22/joplin/issues/205)2) +- Fixed: Stop print command from resetting theme ([#1999](https://github.com/laurent22/joplin/issues/1999)) ([#179](https://github.com/laurent22/joplin/issues/179)0) - Fixed: Fixed attachment markup when importing ENEX files as HTML so that it works in mobile too -- Fixed: Api: Fixed error handling when getting resources of a note that does not exist ([#2018](https://github.com/laurent22/joplin/issues/2018)) -- Fixed: Fix scrolling issue when clicking on internal link ([#1867](https://github.com/laurent22/joplin/issues/1867)) -- Fixed: Open links in external browser from revision view ([#2008](https://github.com/laurent22/joplin/issues/2008)) +- Fixed: Api: Fixed error handling when getting resources of a note that does not exist ([#201](https://github.com/laurent22/joplin/issues/201)8) +- Fixed: Fix scrolling issue when clicking on internal link ([#186](https://github.com/laurent22/joplin/issues/186)7) +- Fixed: Open links in external browser from revision view ([#200](https://github.com/laurent22/joplin/issues/200)8) ## [v1.0.170](https://github.com/laurent22/joplin/releases/tag/v1.0.170) - 2019-10-13T22:13:04Z - New: Added support for chemical equations using mhchem for Katex -- New: Add option to set page dimensions when printing ([#1976](https://github.com/laurent22/joplin/issues/1976)) -- New: Add checkmark to menu item, if Dev Tools are on ([#1949](https://github.com/laurent22/joplin/issues/1949)) -- New: Added Dracula theme ([#1924](https://github.com/laurent22/joplin/issues/1924)) ([#1863](https://github.com/laurent22/joplin/issues/1863)) +- New: Add option to set page dimensions when printing ([#197](https://github.com/laurent22/joplin/issues/197)6) +- New: Add checkmark to menu item, if Dev Tools are on ([#194](https://github.com/laurent22/joplin/issues/194)9) +- New: Added Dracula theme ([#1924](https://github.com/laurent22/joplin/issues/1924)) ([#186](https://github.com/laurent22/joplin/issues/186)3) - New: Added concept of sync version and client ID to allow upgrading sync targets -- Improved: Truncate update changelog when it's too long ([#1967](https://github.com/laurent22/joplin/issues/1967)) ([#1222](https://github.com/laurent22/joplin/issues/1222)) -- Improved: Support italic in span tags ([#1966](https://github.com/laurent22/joplin/issues/1966)) +- Improved: Truncate update changelog when it's too long ([#1967](https://github.com/laurent22/joplin/issues/1967)) ([#122](https://github.com/laurent22/joplin/issues/122)2) +- Improved: Support italic in span tags ([#196](https://github.com/laurent22/joplin/issues/196)6) - Improved: Allow a sync client to lock a sync target, so that migration operations can be performed on it - Improved: Give correct mime type to more file types -- Improved: Api: Allow getting the resources of a note ([#1956](https://github.com/laurent22/joplin/issues/1956)) -- Improved: Set cancel as the default in dangerous operations ([#1934](https://github.com/laurent22/joplin/issues/1934)) ([#1662](https://github.com/laurent22/joplin/issues/1662)) -- Improved: Hide some toolbar buttons when editor hidden ([#1940](https://github.com/laurent22/joplin/issues/1940)) ([#1896](https://github.com/laurent22/joplin/issues/1896)) -- Improved: Larger search bar ([#1933](https://github.com/laurent22/joplin/issues/1933)) ([#917](https://github.com/laurent22/joplin/issues/917)) -- Improved: Use profile temp dir when exporting files ([#1932](https://github.com/laurent22/joplin/issues/1932)) -- Improved: Code button now detects multiline ([#1915](https://github.com/laurent22/joplin/issues/1915)) -- Fixed: Prevent note content from being deleted when using certain external editors (in particular Typora) ([#1854](https://github.com/laurent22/joplin/issues/1854)) -- Fixed: Display error message when notes cannot be exported ([#1970](https://github.com/laurent22/joplin/issues/1970)) -- Fixed: Note view was not reloaded after viewing revisions ([#1819](https://github.com/laurent22/joplin/issues/1819)) -- Fixed: Fixed alarms that would trigger immediately when they were set too far in future ([#1829](https://github.com/laurent22/joplin/issues/1829)) -- Fixed: Text input context menu was not working in Windows ([#1703](https://github.com/laurent22/joplin/issues/1703)) -- Fixed: App would crash if trying to index a note that has not been decrypted yet ([#1938](https://github.com/laurent22/joplin/issues/1938)) +- Improved: Api: Allow getting the resources of a note ([#195](https://github.com/laurent22/joplin/issues/195)6) +- Improved: Set cancel as the default in dangerous operations ([#1934](https://github.com/laurent22/joplin/issues/1934)) ([#166](https://github.com/laurent22/joplin/issues/166)2) +- Improved: Hide some toolbar buttons when editor hidden ([#1940](https://github.com/laurent22/joplin/issues/1940)) ([#189](https://github.com/laurent22/joplin/issues/189)6) +- Improved: Larger search bar ([#1933](https://github.com/laurent22/joplin/issues/1933)) ([#91](https://github.com/laurent22/joplin/issues/91)7) +- Improved: Use profile temp dir when exporting files ([#193](https://github.com/laurent22/joplin/issues/193)2) +- Improved: Code button now detects multiline ([#191](https://github.com/laurent22/joplin/issues/191)5) +- Fixed: Prevent note content from being deleted when using certain external editors (in particular Typora) ([#185](https://github.com/laurent22/joplin/issues/185)4) +- Fixed: Display error message when notes cannot be exported ([#197](https://github.com/laurent22/joplin/issues/197)0) +- Fixed: Note view was not reloaded after viewing revisions ([#181](https://github.com/laurent22/joplin/issues/181)9) +- Fixed: Fixed alarms that would trigger immediately when they were set too far in future ([#182](https://github.com/laurent22/joplin/issues/182)9) +- Fixed: Text input context menu was not working in Windows ([#170](https://github.com/laurent22/joplin/issues/170)3) +- Fixed: App would crash if trying to index a note that has not been decrypted yet ([#193](https://github.com/laurent22/joplin/issues/193)8) ## [v1.0.169](https://github.com/laurent22/joplin/releases/tag/v1.0.169) - 2019-09-27T18:35:13Z -- New: Add support for Deepin desktop environment in install script ([#1884](https://github.com/laurent22/joplin/issues/1884)) +- New: Add support for Deepin desktop environment in install script ([#188](https://github.com/laurent22/joplin/issues/188)4) - Improved: Improves deletion fail-safe so it is based on percentage of notes deleted. And display warning on sidebar. - Improved: Log last requests in case of a sync error ## [v1.0.168](https://github.com/laurent22/joplin/releases/tag/v1.0.168) - 2019-09-25T21:21:38Z -- New: Import Evernote notes as HTML ([#1887](https://github.com/laurent22/joplin/issues/1887)) +- New: Import Evernote notes as HTML ([#188](https://github.com/laurent22/joplin/issues/188)7) - New: Added fail-safe to prevent data from being wiped out when the sync target is empty - Improved: Also allow importing TXT files with markdown - Improved: Cleaned up and improved config screen design, move all screens under same one, and added section buttons - Fixed: Fixed broken menu bar - Fixed: Fixed import of notes that contain links with hashes -- Fixed: Support non-alphabetical characters in note link anchors ([#1870](https://github.com/laurent22/joplin/issues/1870)) +- Fixed: Support non-alphabetical characters in note link anchors ([#187](https://github.com/laurent22/joplin/issues/187)0) ## [v1.0.167](https://github.com/laurent22/joplin/releases/tag/v1.0.167) - 2019-09-10T08:48:37Z @@ -3141,101 +3141,101 @@ This is to test the Electron framework upgrade and the switch to a separate note Note that on Windows the code signing certificate has been renewed, which some times triggers warnings when installing the application. -- New: Add support for anchor hashes in note links ([#1490](https://github.com/laurent22/joplin/issues/1490)) -- Improved: Only support checkboxes that start with a dash ([#1832](https://github.com/laurent22/joplin/issues/1832)) -- Improved: Apply current locale to date and time ([#1822](https://github.com/laurent22/joplin/issues/1822)) -- Improved: Update template prompt font and sort templates ([#1806](https://github.com/laurent22/joplin/issues/1806)) -- Fixed: Do not scroll text when search is open and user type in note ([#1833](https://github.com/laurent22/joplin/issues/1833)) -- Fixed: Fixed cropped content issue when printing or exporting to PDF ([#1815](https://github.com/laurent22/joplin/issues/1815)) -- Fixed: Fix typo on encryption options screen ([#1823](https://github.com/laurent22/joplin/issues/1823)) -- Fixed: Use correct date format for templates ([#1810](https://github.com/laurent22/joplin/issues/1810)) ([#1803](https://github.com/laurent22/joplin/issues/1803)) +- New: Add support for anchor hashes in note links ([#149](https://github.com/laurent22/joplin/issues/149)0) +- Improved: Only support checkboxes that start with a dash ([#183](https://github.com/laurent22/joplin/issues/183)2) +- Improved: Apply current locale to date and time ([#182](https://github.com/laurent22/joplin/issues/182)2) +- Improved: Update template prompt font and sort templates ([#180](https://github.com/laurent22/joplin/issues/180)6) +- Fixed: Do not scroll text when search is open and user type in note ([#183](https://github.com/laurent22/joplin/issues/183)3) +- Fixed: Fixed cropped content issue when printing or exporting to PDF ([#181](https://github.com/laurent22/joplin/issues/181)5) +- Fixed: Fix typo on encryption options screen ([#182](https://github.com/laurent22/joplin/issues/182)3) +- Fixed: Use correct date format for templates ([#1810](https://github.com/laurent22/joplin/issues/1810)) ([#180](https://github.com/laurent22/joplin/issues/180)3) ## [v1.0.165](https://github.com/laurent22/joplin/releases/tag/v1.0.165) - 2019-08-14T21:46:29Z - New: Added support for Fountain screenwriting language -- New: Add solarized themes to desktop client ([#1733](https://github.com/laurent22/joplin/issues/1733)) -- New: Added support for templates ([#1647](https://github.com/laurent22/joplin/issues/1647)) +- New: Add solarized themes to desktop client ([#173](https://github.com/laurent22/joplin/issues/173)3) +- New: Added support for templates ([#164](https://github.com/laurent22/joplin/issues/164)7) - New: Added markup language to property dialog -- New: Add support for cinnamon to install script ([#1738](https://github.com/laurent22/joplin/issues/1738)) -- Improved: Better handling of adding the title to print and export to PDF ([#1744](https://github.com/laurent22/joplin/issues/1744)) -- Improved: Improved bold formatting support in Enex import ([#1708](https://github.com/laurent22/joplin/issues/1708)) -- Improved: Create fileURLs via drag and drop ([#1653](https://github.com/laurent22/joplin/issues/1653)) +- New: Add support for cinnamon to install script ([#173](https://github.com/laurent22/joplin/issues/173)8) +- Improved: Better handling of adding the title to print and export to PDF ([#174](https://github.com/laurent22/joplin/issues/174)4) +- Improved: Improved bold formatting support in Enex import ([#170](https://github.com/laurent22/joplin/issues/170)8) +- Improved: Create fileURLs via drag and drop ([#165](https://github.com/laurent22/joplin/issues/165)3) - Improved: No longer crash if certain theme properties are not set -- Improved: Make translation files smaller by not including untranslated strings. Also add percentage translated to config screen. ([#1459](https://github.com/laurent22/joplin/issues/1459)) +- Improved: Make translation files smaller by not including untranslated strings. Also add percentage translated to config screen. ([#145](https://github.com/laurent22/joplin/issues/145)9) - Improved: Only repeat failed requests up to 3 times during sync - Improved: Upgraded packages to fix security issue - Improved: Make depthColor theme property optional - Improved: Optimised loading of multiple items - Improved: Disable Markdown actions for HTML notes -- Improved: Footnote, toc-done-right, anchor ([#1741](https://github.com/laurent22/joplin/issues/1741)) +- Improved: Footnote, toc-done-right, anchor ([#174](https://github.com/laurent22/joplin/issues/174)1) - Fixed: Fixed Back button icon on Config screen -- Fixed: Fixed note order when dragging a note outside a notebook ([#1732](https://github.com/laurent22/joplin/issues/1732)) +- Fixed: Fixed note order when dragging a note outside a notebook ([#173](https://github.com/laurent22/joplin/issues/173)2) - Fixed: Fixed race condition when loading a note while another one is still loading. Improved performance when loading large note. ## [v1.0.161](https://github.com/laurent22/joplin/releases/tag/v1.0.161) - 2019-07-13T18:30:00Z -- Improved: Show git branch and hash in About dialog ([#1692](https://github.com/laurent22/joplin/issues/1692)) +- Improved: Show git branch and hash in About dialog ([#169](https://github.com/laurent22/joplin/issues/169)2) - Improved: Better logging in case of error while indexing search - Improved: When doing local search do not split query into words -- Improved: For Ubuntu users, added unity to if condition for desktop icon creation ([#1683](https://github.com/laurent22/joplin/issues/1683)) -- Improved: Cache code blocks in notes to speed up rendering ([#1649](https://github.com/laurent22/joplin/issues/1649)) +- Improved: For Ubuntu users, added unity to if condition for desktop icon creation ([#168](https://github.com/laurent22/joplin/issues/168)3) +- Improved: Cache code blocks in notes to speed up rendering ([#164](https://github.com/laurent22/joplin/issues/164)9) - Improved: Optimised resource download queue by exiting early if resources are already downloaded -- Fixed: Keep back button when opening a note link from the search results ([#1727](https://github.com/laurent22/joplin/issues/1727)) -- Fixed: Improved note selection and scrolling when moving a note to a different notebook ([#1724](https://github.com/laurent22/joplin/issues/1724)) -- Fixed: Import Evernote audio files correctly ([#1723](https://github.com/laurent22/joplin/issues/1723)) -- Fixed: Fixed issue with certain commands being repeated in some cases ([#1720](https://github.com/laurent22/joplin/issues/1720)) -- Fixed: Set note title to correct size when zoom is enabled ([#1704](https://github.com/laurent22/joplin/issues/1704)) -- Fixed: Hide toolbar button text when it is below a certain size ([#1699](https://github.com/laurent22/joplin/issues/1699)) -- Fixed: When deleting resource from sync target also delete associated data blob ([#1694](https://github.com/laurent22/joplin/issues/1694)) -- Fixed: Add override for ACE editor shortcut `Ctrl+K` ([#1705](https://github.com/laurent22/joplin/issues/1705)) ([#1342](https://github.com/laurent22/joplin/issues/1342)) +- Fixed: Keep back button when opening a note link from the search results ([#172](https://github.com/laurent22/joplin/issues/172)7) +- Fixed: Improved note selection and scrolling when moving a note to a different notebook ([#172](https://github.com/laurent22/joplin/issues/172)4) +- Fixed: Import Evernote audio files correctly ([#172](https://github.com/laurent22/joplin/issues/172)3) +- Fixed: Fixed issue with certain commands being repeated in some cases ([#172](https://github.com/laurent22/joplin/issues/172)0) +- Fixed: Set note title to correct size when zoom is enabled ([#170](https://github.com/laurent22/joplin/issues/170)4) +- Fixed: Hide toolbar button text when it is below a certain size ([#169](https://github.com/laurent22/joplin/issues/169)9) +- Fixed: When deleting resource from sync target also delete associated data blob ([#169](https://github.com/laurent22/joplin/issues/169)4) +- Fixed: Add override for ACE editor shortcut `Ctrl+K` ([#1705](https://github.com/laurent22/joplin/issues/1705)) ([#134](https://github.com/laurent22/joplin/issues/134)2) - Fixed: Only log master key ID -- Fixed: Preserve user timestamps when adding note via API ([#1676](https://github.com/laurent22/joplin/issues/1676)) -- Fixed: Fix line break issue when importing certain notes from Evernotes ([#1672](https://github.com/laurent22/joplin/issues/1672)) -- Fixed: Fixed issue with issue with watching file on Linux ([#1659](https://github.com/laurent22/joplin/issues/1659)) -- Fixed: Disable certain menu items when no note or multiple notes are selected, and fixed menu item to set tag ([#1664](https://github.com/laurent22/joplin/issues/1664)) +- Fixed: Preserve user timestamps when adding note via API ([#167](https://github.com/laurent22/joplin/issues/167)6) +- Fixed: Fix line break issue when importing certain notes from Evernotes ([#167](https://github.com/laurent22/joplin/issues/167)2) +- Fixed: Fixed issue with issue with watching file on Linux ([#165](https://github.com/laurent22/joplin/issues/165)9) +- Fixed: Disable certain menu items when no note or multiple notes are selected, and fixed menu item to set tag ([#166](https://github.com/laurent22/joplin/issues/166)4) ## [v1.0.160](https://github.com/laurent22/joplin/releases/tag/v1.0.160) - 2019-06-15T00:21:40Z -- New: Highlight notebooks based on depth ([#1634](https://github.com/laurent22/joplin/issues/1634)) -- New: Added menu item to format inline code ([#1641](https://github.com/laurent22/joplin/issues/1641)) -- Improved: Added shortcut for tags (`Cmd+Opt+T` / `Ctrl+Alt+T`) ([#1638](https://github.com/laurent22/joplin/issues/1638)) -- Fixed: Allow opening external editor on new notes ([#1443](https://github.com/laurent22/joplin/issues/1443)) +- New: Highlight notebooks based on depth ([#163](https://github.com/laurent22/joplin/issues/163)4) +- New: Added menu item to format inline code ([#164](https://github.com/laurent22/joplin/issues/164)1) +- Improved: Added shortcut for tags (`Cmd+Opt+T` / `Ctrl+Alt+T`) ([#163](https://github.com/laurent22/joplin/issues/163)8) +- Fixed: Allow opening external editor on new notes ([#144](https://github.com/laurent22/joplin/issues/144)3) ## [v1.0.159](https://github.com/laurent22/joplin/releases/tag/v1.0.159) - 2019-06-08T00:00:19Z - New: Added option to open development tools, to make it easier to create custom CSS -- Improved: Improved tag dialog to make it easier to add and remove tags ([#1589](https://github.com/laurent22/joplin/issues/1589)) -- Improved: Speed up synchronisation by allowing multiple connections when downloading items ([#1633](https://github.com/laurent22/joplin/issues/1633)) +- Improved: Improved tag dialog to make it easier to add and remove tags ([#158](https://github.com/laurent22/joplin/issues/158)9) +- Improved: Speed up synchronisation by allowing multiple connections when downloading items ([#163](https://github.com/laurent22/joplin/issues/163)3) - Improved: Better handling of items that cannot be decrypted, including those that cause crashes -- Improved: Upgrade TOC plugin version to 4.0.0 to fix various issues ([#1603](https://github.com/laurent22/joplin/issues/1603)) -- Improved: Improve how font size is applied ([#1601](https://github.com/laurent22/joplin/issues/1601)) +- Improved: Upgrade TOC plugin version to 4.0.0 to fix various issues ([#160](https://github.com/laurent22/joplin/issues/160)3) +- Improved: Improve how font size is applied ([#160](https://github.com/laurent22/joplin/issues/160)1) - Improved: Improved workflow of downloading and decrypting data during sync -- Fixed: Fix icon path and directory in Linux install script ([#1612](https://github.com/laurent22/joplin/issues/1612)) -- Fixed: Handle multiple lines in attributes when importing Enex files ([#1583](https://github.com/laurent22/joplin/issues/1583)) +- Fixed: Fix icon path and directory in Linux install script ([#161](https://github.com/laurent22/joplin/issues/161)2) +- Fixed: Handle multiple lines in attributes when importing Enex files ([#158](https://github.com/laurent22/joplin/issues/158)3) - Fixed: Fix issue with revisions being needlessly created when decrypting notes ## [v1.0.158](https://github.com/laurent22/joplin/releases/tag/v1.0.158) - 2019-05-27T19:01:18Z -- Improved: Enable more options on multimd-table plugin ([#1586](https://github.com/laurent22/joplin/issues/1586)) +- Improved: Enable more options on multimd-table plugin ([#158](https://github.com/laurent22/joplin/issues/158)6) - Improved: Improved config screen with dark theme -- Improved: Make bold text more visible ([#1575](https://github.com/laurent22/joplin/issues/1575)) -- Fixed: Fix internal note links ([#1587](https://github.com/laurent22/joplin/issues/1587)) +- Improved: Make bold text more visible ([#157](https://github.com/laurent22/joplin/issues/157)5) +- Fixed: Fix internal note links ([#158](https://github.com/laurent22/joplin/issues/158)7) - Fixed: Fixed empty separators in menu ## [v1.0.157](https://github.com/laurent22/joplin/releases/tag/v1.0.157) - 2019-05-26T17:55:53Z -- New: Added Persian translation ([#1539](https://github.com/laurent22/joplin/issues/1539)) -- New: Allow downloading attachments on demand or automatically ([#1527](https://github.com/laurent22/joplin/issues/1527)) ([#1481](https://github.com/laurent22/joplin/issues/1481)) -- Improved: Make bold text more visible ([#1575](https://github.com/laurent22/joplin/issues/1575)) +- New: Added Persian translation ([#153](https://github.com/laurent22/joplin/issues/153)9) +- New: Allow downloading attachments on demand or automatically ([#1527](https://github.com/laurent22/joplin/issues/1527)) ([#148](https://github.com/laurent22/joplin/issues/148)1) +- Improved: Make bold text more visible ([#157](https://github.com/laurent22/joplin/issues/157)5) - Improved: Add number of characters removed and added in revision list - Improved: Remove tags from Welcome item due to issue with cleaning them up afterwards - Improved: Handle missing resource blob when setting resource size - Improved: Gray out checkboxes that have been ticked inside notes - Improved: Put back "Fetched items" message during sync - Improved: When opening a note using Goto Anything, open all its parent notebooks too -- Fixed: Clears search when clicking on a notebook. ([#1504](https://github.com/laurent22/joplin/issues/1504)) ([#1186](https://github.com/laurent22/joplin/issues/1186)) -- Fixed: Default sort order for notebooks should be title and ascending ([#1541](https://github.com/laurent22/joplin/issues/1541)) -- Fixed: Added backticks to auto-wrapping quotes. ([#1534](https://github.com/laurent22/joplin/issues/1534)) ([#1426](https://github.com/laurent22/joplin/issues/1426)) +- Fixed: Clears search when clicking on a notebook. ([#1504](https://github.com/laurent22/joplin/issues/1504)) ([#118](https://github.com/laurent22/joplin/issues/118)6) +- Fixed: Default sort order for notebooks should be title and ascending ([#154](https://github.com/laurent22/joplin/issues/154)1) +- Fixed: Added backticks to auto-wrapping quotes. ([#1534](https://github.com/laurent22/joplin/issues/1534)) ([#142](https://github.com/laurent22/joplin/issues/142)6) - Fixed: Prevent app from trying to upload resource it has not downloaded yet ## [v1.0.153](https://github.com/laurent22/joplin/releases/tag/v1.0.153) (Pre-release) - 2019-05-15T06:27:29Z @@ -3246,38 +3246,38 @@ This release only adds additional logging for the note history feature. Same as v1.0.151 but with a fix to the migration issue, that was in turns affecting synchronisation. -- New: Support for note history ([#1415](https://github.com/laurent22/joplin/issues/1415)) ([#712](https://github.com/laurent22/joplin/issues/712)) +- New: Support for note history ([#1415](https://github.com/laurent22/joplin/issues/1415)) ([#71](https://github.com/laurent22/joplin/issues/71)2) - Improved: Save size of a resource to the database; and added mechanism to run non-database migrations -- Improved: Improved note deletion dialog ([#1502](https://github.com/laurent22/joplin/issues/1502)) -- Fixed: Allow resources greater than 10 MB but they won't be synced on mobile ([#371](https://github.com/laurent22/joplin/issues/371)) -- Fixed: Improved handling of images when using external editor, so that it works in Atom, VSCode and Typora ([#1425](https://github.com/laurent22/joplin/issues/1425)) +- Improved: Improved note deletion dialog ([#150](https://github.com/laurent22/joplin/issues/150)2) +- Fixed: Allow resources greater than 10 MB but they won't be synced on mobile ([#37](https://github.com/laurent22/joplin/issues/37)1) +- Fixed: Improved handling of images when using external editor, so that it works in Atom, VSCode and Typora ([#142](https://github.com/laurent22/joplin/issues/142)5) - Fixed: Some images were not being displayed -- Fixed: Resets the undo manager when creating new notes ([#1495](https://github.com/laurent22/joplin/issues/1495)) ([#355](https://github.com/laurent22/joplin/issues/355)) -- Fixed: Prevents notes with no title to break after synchronize ([#1472](https://github.com/laurent22/joplin/issues/1472)) +- Fixed: Resets the undo manager when creating new notes ([#1495](https://github.com/laurent22/joplin/issues/1495)) ([#35](https://github.com/laurent22/joplin/issues/35)5) +- Fixed: Prevents notes with no title to break after synchronize ([#147](https://github.com/laurent22/joplin/issues/147)2) ## [v1.0.151](https://github.com/laurent22/joplin/releases/tag/v1.0.151) - 2019-05-12T15:14:32Z Same as v1.0.150 but with a small fix to set the resources file size. -- New: Support for note history ([#1415](https://github.com/laurent22/joplin/issues/1415)) ([#712](https://github.com/laurent22/joplin/issues/712)) +- New: Support for note history ([#1415](https://github.com/laurent22/joplin/issues/1415)) ([#71](https://github.com/laurent22/joplin/issues/71)2) - Improved: Save size of a resource to the database; and added mechanism to run non-database migrations -- Improved: Improved note deletion dialog ([#1502](https://github.com/laurent22/joplin/issues/1502)) -- Fixed: Allow resources greater than 10 MB but they won't be synced on mobile ([#371](https://github.com/laurent22/joplin/issues/371)) -- Fixed: Improved handling of images when using external editor, so that it works in Atom, VSCode and Typora ([#1425](https://github.com/laurent22/joplin/issues/1425)) +- Improved: Improved note deletion dialog ([#150](https://github.com/laurent22/joplin/issues/150)2) +- Fixed: Allow resources greater than 10 MB but they won't be synced on mobile ([#37](https://github.com/laurent22/joplin/issues/37)1) +- Fixed: Improved handling of images when using external editor, so that it works in Atom, VSCode and Typora ([#142](https://github.com/laurent22/joplin/issues/142)5) - Fixed: Some images were not being displayed -- Fixed: Resets the undo manager when creating new notes ([#1495](https://github.com/laurent22/joplin/issues/1495)) ([#355](https://github.com/laurent22/joplin/issues/355)) -- Fixed: Prevents notes with no title to break after synchronize ([#1472](https://github.com/laurent22/joplin/issues/1472)) +- Fixed: Resets the undo manager when creating new notes ([#1495](https://github.com/laurent22/joplin/issues/1495)) ([#35](https://github.com/laurent22/joplin/issues/35)5) +- Fixed: Prevents notes with no title to break after synchronize ([#147](https://github.com/laurent22/joplin/issues/147)2) ## [v1.0.150](https://github.com/laurent22/joplin/releases/tag/v1.0.150) - 2019-05-12T11:27:48Z -- New: Support for note history ([#1415](https://github.com/laurent22/joplin/issues/1415)) ([#712](https://github.com/laurent22/joplin/issues/712)) +- New: Support for note history ([#1415](https://github.com/laurent22/joplin/issues/1415)) ([#71](https://github.com/laurent22/joplin/issues/71)2) - Improved: Save size of a resource to the database; and added mechanism to run non-database migrations -- Improved: Improved note deletion dialog ([#1502](https://github.com/laurent22/joplin/issues/1502)) -- Fixed: Allow resources greater than 10 MB but they won't be synced on mobile ([#371](https://github.com/laurent22/joplin/issues/371)) -- Fixed: Improved handling of images when using external editor, so that it works in Atom, VSCode and Typora ([#1425](https://github.com/laurent22/joplin/issues/1425)) +- Improved: Improved note deletion dialog ([#150](https://github.com/laurent22/joplin/issues/150)2) +- Fixed: Allow resources greater than 10 MB but they won't be synced on mobile ([#37](https://github.com/laurent22/joplin/issues/37)1) +- Fixed: Improved handling of images when using external editor, so that it works in Atom, VSCode and Typora ([#142](https://github.com/laurent22/joplin/issues/142)5) - Fixed: Some images were not being displayed -- Fixed: Resets the undo manager when creating new notes ([#1495](https://github.com/laurent22/joplin/issues/1495)) ([#355](https://github.com/laurent22/joplin/issues/355)) -- Fixed: Prevents notes with no title to break after synchronize ([#1472](https://github.com/laurent22/joplin/issues/1472)) +- Fixed: Resets the undo manager when creating new notes ([#1495](https://github.com/laurent22/joplin/issues/1495)) ([#35](https://github.com/laurent22/joplin/issues/35)5) +- Fixed: Prevents notes with no title to break after synchronize ([#147](https://github.com/laurent22/joplin/issues/147)2) ## [v1.0.148](https://github.com/laurent22/joplin/releases/tag/v1.0.148) (Pre-release) - 2019-05-08T19:12:24Z @@ -3292,31 +3292,31 @@ This is to test the revision service. It is not yet recommended to upgrade as th ## [v1.0.145](https://github.com/laurent22/joplin/releases/tag/v1.0.145) - 2019-05-03T09:16:53Z - Improved: Display better error message when trying to sync with a new sync target from an old version of Joplin -- Improved: UI updates to sidebar and header, changing icon sizes and animations ([#1463](https://github.com/laurent22/joplin/issues/1463)) -- Fixed: Update chokidar to fix blank screen when returning from external editor ([#1479](https://github.com/laurent22/joplin/issues/1479)) -- Fixed: Fixes [#1476](https://github.com/laurent22/joplin/issues/1476): Import lists and sub-lists from Enex files with correct indentation ([#1476](https://github.com/laurent22/joplin/issues/1476)) -- Fixed: Remove message "Processing a path that has already been done" as this is not an error ([#1353](https://github.com/laurent22/joplin/issues/1353)) +- Improved: UI updates to sidebar and header, changing icon sizes and animations ([#146](https://github.com/laurent22/joplin/issues/146)3) +- Fixed: Update chokidar to fix blank screen when returning from external editor ([#147](https://github.com/laurent22/joplin/issues/147)9) +- Fixed: Fixes [#1476](https://github.com/laurent22/joplin/issues/1476): Import lists and sub-lists from Enex files with correct indentation ([#147](https://github.com/laurent22/joplin/issues/147)6) +- Fixed: Remove message "Processing a path that has already been done" as this is not an error ([#135](https://github.com/laurent22/joplin/issues/135)3) ## [v1.0.143](https://github.com/laurent22/joplin/releases/tag/v1.0.143) - 2019-04-22T10:51:38Z - Improved support for Japanese, Chinese, Korean search queries (also applies to Goto Anything) - Fixes [#1433](https://github.com/laurent22/joplin/issues/1433): Some resources could incorrectly be deleted even though they are still present in a note. Also added additional verifications to make sure resources that are still linked to a note are not accidentally deleted. - Fix: Goto Anything results were displayed lowercase -- Fix: Clear selected Notes when switching Notebook ([#1387](https://github.com/laurent22/joplin/issues/1387)) +- Fix: Clear selected Notes when switching Notebook ([#138](https://github.com/laurent22/joplin/issues/138)7) - Fixes [#1405](https://github.com/laurent22/joplin/issues/1405): Handle invalid resource tags that contain no data when importing ENEX - Fix: Updated Electron and Chokidar to try to fix external editor crashing app - Fixes [#423](https://github.com/laurent22/joplin/issues/423): Make sure links are clickable when exporting to PDF - Fixes [#1427](https://github.com/laurent22/joplin/issues/1427): Support checkoxes behind bullets - Fixes [#1417](https://github.com/laurent22/joplin/issues/1417): Clipper: Sort the folders in the same order as the desktop app - Fixes [#1425](https://github.com/laurent22/joplin/issues/1425) (probably): Fix display of images when using VSCode as external editor -- Change shortcuts for 'Print' and 'Goto Anything' ([#1420](https://github.com/laurent22/joplin/issues/1420)) -- Add option to use soft breaks for markdown rendering ([#1408](https://github.com/laurent22/joplin/issues/1408)) +- Change shortcuts for 'Print' and 'Goto Anything' ([#142](https://github.com/laurent22/joplin/issues/142)0) +- Add option to use soft breaks for markdown rendering ([#140](https://github.com/laurent22/joplin/issues/140)8) ## [v1.0.142](https://github.com/laurent22/joplin/releases/tag/v1.0.142) - 2019-04-02T16:44:51Z -- New: Allow toggling markdown plugins and added several new plugins ([#1347](https://github.com/laurent22/joplin/issues/1347)) +- New: Allow toggling markdown plugins and added several new plugins ([#134](https://github.com/laurent22/joplin/issues/134)7) - New: Added Goto Anything dialog (Ctrl+P or Cmd+P) -- Improved: macOS: make the menu more like a macOS menu ([#1348](https://github.com/laurent22/joplin/issues/1348)) +- Improved: macOS: make the menu more like a macOS menu ([#134](https://github.com/laurent22/joplin/issues/134)8) - Improved search - when clearing search, stay on current item. When clicking on notebook name, jump to note within notebook. Improved toolbar layout. - Fixed: The side bar was being refreshed too frequently. - Fixed: Order of notebooks with sub-notebooks was sometimes incorrect when sorting @@ -3324,7 +3324,7 @@ This is to test the revision service. It is not yet recommended to upgrade as th - Fixes [#1329](https://github.com/laurent22/joplin/issues/1329): Could not edit created and updated time anymore - Fixes [#1326](https://github.com/laurent22/joplin/issues/1326): Restored inline code styling - Fixes [#1325](https://github.com/laurent22/joplin/issues/1325): Fixed nested checkbox indentation -- fix sub pixel rendering for desktop ([#1378](https://github.com/laurent22/joplin/issues/1378)) +- fix sub pixel rendering for desktop ([#137](https://github.com/laurent22/joplin/issues/137)8) ## [v1.0.140](https://github.com/laurent22/joplin/releases/tag/v1.0.140) - 2019-03-10T20:59:58Z @@ -3352,9 +3352,9 @@ Note: this is the same as v132 but with a fix for the resizeable column bug, and - New: Experimental support for Mermaid graphs (This is **not** yet supported on mobile). - New: Allow resizing sidebar columns. - New: Resolves [#1198](https://github.com/laurent22/joplin/issues/1198): In search results, give more weight to more recent notes and less to completed to-dos -- Add shortcut to start a sync ([#1231](https://github.com/laurent22/joplin/issues/1231)) -- Change notebook icon in toolbar and search result ([#1252](https://github.com/laurent22/joplin/issues/1252)) -- When deleting notebook or tag, display name ([#1253](https://github.com/laurent22/joplin/issues/1253)) +- Add shortcut to start a sync ([#123](https://github.com/laurent22/joplin/issues/123)1) +- Change notebook icon in toolbar and search result ([#125](https://github.com/laurent22/joplin/issues/125)2) +- When deleting notebook or tag, display name ([#125](https://github.com/laurent22/joplin/issues/125)3) - API: Resolves [#1148](https://github.com/laurent22/joplin/issues/1148): Added support for search end-point and improved error handling - Security: Updated a few packages to fix CVE-2018-16469 - Security: Updated parse-url package to fix CVE-2018-3774 @@ -3368,9 +3368,9 @@ Note: this is the same as v132 but with a fix for the resizeable column bug. - New: Experimental support for Mermaid graphs (This is **not** yet supported on mobile). - New: Allow resizing sidebar columns. - New: Resolves [#1198](https://github.com/laurent22/joplin/issues/1198): In search results, give more weight to more recent notes and less to completed to-dos -- Add shortcut to start a sync ([#1231](https://github.com/laurent22/joplin/issues/1231)) -- Change notebook icon in toolbar and search result ([#1252](https://github.com/laurent22/joplin/issues/1252)) -- When deleting notebook or tag, display name ([#1253](https://github.com/laurent22/joplin/issues/1253)) +- Add shortcut to start a sync ([#123](https://github.com/laurent22/joplin/issues/123)1) +- Change notebook icon in toolbar and search result ([#125](https://github.com/laurent22/joplin/issues/125)2) +- When deleting notebook or tag, display name ([#125](https://github.com/laurent22/joplin/issues/125)3) - API: Resolves [#1148](https://github.com/laurent22/joplin/issues/1148): Added support for search end-point and improved error handling - Security: Updated a few packages to fix CVE-2018-16469 - Security: Updated parse-url package to fix CVE-2018-3774 @@ -3382,9 +3382,9 @@ Note: this is the same as v132 but with a fix for the resizeable column bug. - New: Experimental support for Mermaid graphs (This is **not** yet supported on mobile). - New: Allow resizing sidebar columns. - New: Resolves [#1198](https://github.com/laurent22/joplin/issues/1198): In search results, give more weight to more recent notes and less to completed to-dos -- Add shortcut to start a sync ([#1231](https://github.com/laurent22/joplin/issues/1231)) -- Change notebook icon in toolbar and search result ([#1252](https://github.com/laurent22/joplin/issues/1252)) -- When deleting notebook or tag, display name ([#1253](https://github.com/laurent22/joplin/issues/1253)) +- Add shortcut to start a sync ([#123](https://github.com/laurent22/joplin/issues/123)1) +- Change notebook icon in toolbar and search result ([#125](https://github.com/laurent22/joplin/issues/125)2) +- When deleting notebook or tag, display name ([#125](https://github.com/laurent22/joplin/issues/125)3) - API: Resolves [#1148](https://github.com/laurent22/joplin/issues/1148): Added support for search end-point and improved error handling - Security: Updated a few packages to fix CVE-2018-16469 - Security: Updated parse-url package to fix CVE-2018-3774 @@ -3426,7 +3426,7 @@ This big release aims at improving the overall usability of the application and - Improved: When deleting note, display title or number of notes - Improved: Highlight row backgroung in table - Improved: Printing page - checkboxes and background colours and images are now printed correctly -- Improved: Add styling to the scrollbars in text editor and viewer ([#1204](https://github.com/laurent22/joplin/issues/1204)) +- Improved: Add styling to the scrollbars in text editor and viewer ([#120](https://github.com/laurent22/joplin/issues/120)4) - Updated translations and added Turkish language (thanks Zorbey Doğangüneş) - API: Allow specifying item ID for any item @@ -3471,18 +3471,18 @@ This big release aims at improving the overall usability of the application and - Improved local search by highlighting even partial matches - Fixes [#1126](https://github.com/laurent22/joplin/issues/1126): Open Katex link in external browser instead of inside app - Fixes [#769](https://github.com/laurent22/joplin/issues/769): Disable META tags in Markdown viewers -- Improved: Handle ESC key press to cancel the NotePropertiesDialog ([#1125](https://github.com/laurent22/joplin/issues/1125)) +- Improved: Handle ESC key press to cancel the NotePropertiesDialog ([#112](https://github.com/laurent22/joplin/issues/112)5) - Fixes [#1137](https://github.com/laurent22/joplin/issues/1137): Fixed regression on SeaFile sync ## [v1.0.120](https://github.com/laurent22/joplin/releases/tag/v1.0.120) - 2019-01-10T21:42:53Z -- New: Adds functionality to toggle the notebooks and tags on the sidebar. ([#1002](https://github.com/laurent22/joplin/issues/1002)) +- New: Adds functionality to toggle the notebooks and tags on the sidebar. ([#100](https://github.com/laurent22/joplin/issues/100)2) - Resolves [#1059](https://github.com/laurent22/joplin/issues/1059): Fixed behaviour of export to PDF and print -- Fix window manager icon on linux ([#1110](https://github.com/laurent22/joplin/issues/1110)) -- Fixed file url issue ([#1054](https://github.com/laurent22/joplin/issues/1054)) +- Fix window manager icon on linux ([#111](https://github.com/laurent22/joplin/issues/111)0) +- Fixed file url issue ([#105](https://github.com/laurent22/joplin/issues/105)4) - Fixed keyword highlighting bug -- Fix markdown code for checked checkbox ([#1113](https://github.com/laurent22/joplin/issues/1113)) -- Apply zoom and editorfont updates without needing to restart ([#1109](https://github.com/laurent22/joplin/issues/1109)) +- Fix markdown code for checked checkbox ([#111](https://github.com/laurent22/joplin/issues/111)3) +- Apply zoom and editorfont updates without needing to restart ([#110](https://github.com/laurent22/joplin/issues/110)9) - Updated many translations ## [v1.0.119](https://github.com/laurent22/joplin/releases/tag/v1.0.119) - 2018-12-18T12:40:22Z @@ -3491,7 +3491,7 @@ Important: This release might be slow on startup due to the need to index all th - New: Fast full text search engine. Works with multiple terms, support for prefixes, can restrict search to either note title or body. See https://joplin.cozic.net/#searching for more info. - New: Search within current note (Ctrl+F). -- New: Add separate editor font size option ([#1027](https://github.com/laurent22/joplin/issues/1027)) +- New: Add separate editor font size option ([#102](https://github.com/laurent22/joplin/issues/102)7) - Changed: Changed global search shortcut to F6. - Fixes [#808](https://github.com/laurent22/joplin/issues/808) (maybe): Added fix for Nginx 404 error issue. - Fixed: Prevent sync infinite loop under some rare conditions (only happens when manually modifying files on sync target, which should not be done anyway). @@ -3505,7 +3505,7 @@ Important: This release might be slow on startup due to the need to index all th - New: Fast full text search engine. Works with multiple terms, support for prefixes, can restrict search to either note title or body. See https://joplin.cozic.net/#searching for more info. - New: Search within current note (Ctrl+F). -- New: Add separate editor font size option ([#1027](https://github.com/laurent22/joplin/issues/1027)) +- New: Add separate editor font size option ([#102](https://github.com/laurent22/joplin/issues/102)7) - Changed: Changed global search shortcut to F6. - Fixes [#808](https://github.com/laurent22/joplin/issues/808) (maybe): Added fix for Nginx 404 error issue. - Fixed: Prevent sync infinite loop under some rare conditions (only happens when manually modifying files on sync target, which should not be done anyway). @@ -3535,12 +3535,12 @@ This is mostly a bug fix release following the recent v115 release. This is a rather large release which includes many of the pull requests that were submitted during Hacktoberfest, plus some extra improvements and bug fixes. Many thanks to all the contributors! -- New: Adds functionality to display tags under the open note. ([#893](https://github.com/laurent22/joplin/issues/893)) -- New: Joplin desktop Dark Mode ([#921](https://github.com/laurent22/joplin/issues/921)) -- New: Add support for custom css across all notes ([#925](https://github.com/laurent22/joplin/issues/925)) -- New: Show note title in pdf export ([#890](https://github.com/laurent22/joplin/issues/890)) ([#937](https://github.com/laurent22/joplin/issues/937)) +- New: Adds functionality to display tags under the open note. ([#89](https://github.com/laurent22/joplin/issues/89)3) +- New: Joplin desktop Dark Mode ([#92](https://github.com/laurent22/joplin/issues/92)1) +- New: Add support for custom css across all notes ([#92](https://github.com/laurent22/joplin/issues/92)5) +- New: Show note title in pdf export ([#890](https://github.com/laurent22/joplin/issues/890)) ([#93](https://github.com/laurent22/joplin/issues/93)7) - New: Display number of resources being fetched in side bar -- New: Export notes to JSON ([#912](https://github.com/laurent22/joplin/issues/912), issues/912). ([#927](https://github.com/laurent22/joplin/issues/927)) +- New: Export notes to JSON ([#912](https://github.com/laurent22/joplin/issues/912), issues/912). ([#92](https://github.com/laurent22/joplin/issues/92)7) - New: Further (invisible) changes on how resources are downloaded to prepare for better resource handling. - Fix: Resolves [#918](https://github.com/laurent22/joplin/issues/918): Skip properties that are on sync target but not handled by local client - Fix: Fixes [#952](https://github.com/laurent22/joplin/issues/952): Upgraded Katex lib to fix bug @@ -3724,7 +3724,7 @@ This release is mainly to fix various issues with the recently released Web Clip ## [v1.0.91](https://github.com/laurent22/joplin/releases/tag/v1.0.91) - 2018-05-10T14:48:04Z -Same as v1.0.90 but with a fix for [#510](https://github.com/laurent22/joplin/issues/510) +Same as v1.0.90 but with a fix for [#51](https://github.com/laurent22/joplin/issues/51)0 - New: Resolves [#345](https://github.com/laurent22/joplin/issues/345): Option to hide completed todos - New: Resolves [#200](https://github.com/laurent22/joplin/issues/200), Resolves [#416](https://github.com/laurent22/joplin/issues/416): Allow attaching images by pasting them in. Allow attaching files by drag and dropping them. Insert attachment at cursor position. diff --git a/readme/changelog_ios.md b/readme/about/changelog/ios.md similarity index 99% rename from readme/changelog_ios.md rename to readme/about/changelog/ios.md index 0b7982b2a0..3c4aea5af6 100644 --- a/readme/changelog_ios.md +++ b/readme/about/changelog/ios.md @@ -1,4 +1,4 @@ -# Joplin iOS app changelog +# Joplin iOS Changelog ## [ios-v12.13.2](https://github.com/laurent22/joplin/releases/tag/ios-v12.13.2) - 2023-10-24T18:40:49Z diff --git a/readme/changelog_server.md b/readme/about/changelog/server.md similarity index 100% rename from readme/changelog_server.md rename to readme/about/changelog/server.md diff --git a/readme/prereleases.md b/readme/about/prereleases.md similarity index 91% rename from readme/prereleases.md rename to readme/about/prereleases.md index 7c1470b896..e172fabf7f 100644 --- a/readme/prereleases.md +++ b/readme/about/prereleases.md @@ -6,4 +6,4 @@ You can help the development of Joplin by choosing to receive these early releas In general it is safe to use these pre-releases as they do not include any experimental or unstable features. Hundreds of users run them without any issue. Moreover even if you do find an issue, you can report it and it is usually fixed very quickly as these bugs are given the highest priority. -To have access to these pre-releases, simply go to [Configuration > Application](https://github.com/laurent22/joplin/blob/dev/readme/config_screen.md) and tick the box "**Get pre-releases when checking for updates**". +To have access to these pre-releases, simply go to [Configuration > Application](https://github.com/laurent22/joplin/blob/dev/readme/apps/config_screen.md) and tick the box "**Get pre-releases when checking for updates**". diff --git a/readme/principles.md b/readme/about/principles.md similarity index 100% rename from readme/principles.md rename to readme/about/principles.md diff --git a/readme/release_cycle.md b/readme/about/release_cycle.md similarity index 81% rename from readme/release_cycle.md rename to readme/about/release_cycle.md index 06f6502f40..d1babeeacd 100644 --- a/readme/release_cycle.md +++ b/readme/about/release_cycle.md @@ -21,4 +21,4 @@ Below is our schedule related to the phases mentioned above: | **Joplin 2.16** | Aug 17 2024 - Aug 31 2024 | Sept 1 2024 - Sept 7 2024 | | **Joplin 2.17** | Nov 16 2024 - Nov 30 2024 | Dec 1 2024 - Dec 7 2024 | -Please note that during this release process, [prereleases are also regularly made available](https://joplinapp.org/prereleases/). This allows you to test the application before its final release and to provide feedback on the new features being added and influence development. Moreover, if you find an issue, you can report it and we will give it a high priority and attempt to fix it as soon as possible. +Please note that during this release process, [prereleases are also regularly made available](https://joplinapp.org/help/about/prereleases/). This allows you to test the application before its final release and to provide feedback on the new features being added and influence development. Moreover, if you find an issue, you can report it and we will give it a high priority and attempt to fix it as soon as possible. diff --git a/readme/stats.md b/readme/about/stats.md similarity index 100% rename from readme/stats.md rename to readme/about/stats.md diff --git a/readme/api/_category_.yml b/readme/api/_category_.yml new file mode 100644 index 0000000000..53a9102416 --- /dev/null +++ b/readme/api/_category_.yml @@ -0,0 +1,4 @@ +position: 2 +label: 'Programmatic API' +collapsible: true +collapsed: true \ No newline at end of file diff --git a/readme/api/get_started/_category_.yml b/readme/api/get_started/_category_.yml new file mode 100644 index 0000000000..c50177200e --- /dev/null +++ b/readme/api/get_started/_category_.yml @@ -0,0 +1,4 @@ +position: 1 +label: 'Getting started' +collapsible: true +collapsed: true \ No newline at end of file diff --git a/readme/api/get_started/plugins.md b/readme/api/get_started/plugins.md index 05cef91d63..9b840a117b 100644 --- a/readme/api/get_started/plugins.md +++ b/readme/api/get_started/plugins.md @@ -55,7 +55,7 @@ This should be the path to your main plugin directory, i.e. `path/to/your/root/p ## Test the Plugin, Hello World! Restart the Development app from the command line/terminal, and Joplin should load the plugin and execute its `onStart` handler. If all went well you should see the test message in the plugin console: "Hello world. Test plugin started!". You will also be able to see the information from the manifest in the **Settings > Plugins** -# Next steps +## Next steps Great, you now have the basics of a working plugin! - Start the [plugin tutorial](https://github.com/laurent22/joplin/blob/dev/readme/api/tutorials/toc_plugin.md) to learn how to use the plugin API. diff --git a/readme/api/overview.md b/readme/api/index.md similarity index 100% rename from readme/api/overview.md rename to readme/api/index.md diff --git a/readme/api/references/_category_.yml b/readme/api/references/_category_.yml new file mode 100644 index 0000000000..d2d22c27cf --- /dev/null +++ b/readme/api/references/_category_.yml @@ -0,0 +1,4 @@ +position: 3 +label: 'References' +collapsible: true +collapsed: true \ No newline at end of file diff --git a/readme/api/references/plugin_theming.md b/readme/api/references/plugin_theming.md index 618fa01c89..2f1a220960 100644 --- a/readme/api/references/plugin_theming.md +++ b/readme/api/references/plugin_theming.md @@ -2,15 +2,11 @@ ## CSS -Plugins add custom content to the UI using -[webview panels](https://joplinapp.org/api/references/plugin_api/classes/joplinviewspanels.html). -The HTML content of a a panel is styled with CSS. +Plugins add custom content to the UI using [webview panels](https://joplinapp.org/api/references/plugin_api/classes/joplinviewspanels.html). The HTML content of a a panel is styled with CSS. -To keep the look and feel of a plugin consistent with the rest of the Joplin UI, -you are automatically provided with variables derived from the current theme. +To keep the look and feel of a plugin consistent with the rest of the Joplin UI, you are automatically provided with variables derived from the current theme. -Variables follow the naming convention `--joplin-{property}` and are used -in your plugin's stylesheet as shown here. +Variables follow the naming convention `--joplin-{property}` and are used in your plugin's stylesheet as shown here. ```css /* webview.css */ @@ -22,8 +18,7 @@ in your plugin's stylesheet as shown here. ## Icons -In addition to variables, you have access to a set of standard font assets that ship with Joplin. -These include: +In addition to variables, you have access to a set of standard font assets that ship with Joplin. These include: * [Roboto](https://fonts.google.com/specimen/Roboto?preview.text_type=custom) - (the standard UI font, `font-family` referenced above) * [Font Awesome](https://fontawesome.com/icons?d=gallery&p=2&m=free) - icon library diff --git a/readme/api/references/rest_api.md b/readme/api/references/rest_api.md index bb617e9c9e..ee3f808214 100644 --- a/readme/api/references/rest_api.md +++ b/readme/api/references/rest_api.md @@ -15,7 +15,7 @@ for (let portToTest = 41184; portToTest <= 41194; portToTest++) { } ``` -# Authorisation +## Authorisation To prevent unauthorised applications from accessing the API, the calls must be authentified. To do so, you must provide a token as a query parameter for each API call. You can get this token from the Joplin desktop application, on the Web Clipper Options screen. @@ -25,9 +25,9 @@ This would be an example of valid cURL call using a token: In the documentation below, the token will not be specified every time however you will need to include it. -If needed you may also [request the token programmatically](https://github.com/laurent22/joplin/blob/dev/readme/spec/clipper_auth.md) +If needed you may also [request the token programmatically](https://github.com/laurent22/joplin/blob/dev/readme/dev/spec/clipper_auth.md) -# Using the API +## Using the API All the calls, unless noted otherwise, receives and send **JSON data**. For example to create a new note: @@ -46,7 +46,7 @@ The four verbs supported by the API are the following ones: * **PUT**: To update an item. Note in a REST API, traditionally PUT is used to completely replace an item, however in this API it will only replace the properties that are provided. For example if you PUT {"title": "my new title"}, only the "title" property will be changed. The other properties will be left untouched (they won't be cleared nor changed). * **DELETE**: To delete items. -# Filtering data +## Filtering data You can change the fields that will be returned by the API using the `fields=` query parameter, which takes a list of comma separated fields. For example, to get the longitude and latitude of a note, use this: @@ -58,7 +58,7 @@ To get the IDs only of all the tags: By default API results will contain the following fields: **id**, **parent_id**, **title** -# Pagination +## Pagination All API calls that return multiple results will be paginated and will return the following structure: @@ -100,21 +100,21 @@ async function fetchAllNotes() { } ``` -# Error handling +## Error handling In case of an error, an HTTP status code >= 400 will be returned along with a JSON object that provides more info about the error. The JSON object is in the format `{ "error": "description of error" }`. -# About the property types +## About the property types * Text is UTF-8. * All date/time are Unix timestamps in milliseconds. * Booleans are integer values 0 or 1. -# Testing if the service is available +## Testing if the service is available Call **GET /ping** to check if the service is available. It should return "JoplinClipperServer" if it works. -# Searching +## Searching Call **GET /search?query=YOUR_QUERY** to search for notes. This end-point supports the `field` parameter which is recommended to use so that you only get the data that you need. The query syntax is as described in the main documentation: https://joplinapp.org/help/#searching @@ -124,7 +124,7 @@ For example, to retrieve the notebook named `recipes`: **GET /search?query=recip To retrieve all the tags that start with `project-`: **GET /search?query=project-*&type=tag** -# Item type IDs +## Item type IDs Item type IDs might be refered to in certain object you will retrieve from the API. This is the correspondance between name and ID: @@ -147,9 +147,9 @@ migration | 14 smart_filter | 15 command | 16 -# Notes +## Notes -## Properties +### Properties | Name | Type | Description | | ----- | ----- | ----- | @@ -187,23 +187,23 @@ command | 16 | image_data_url | text | An image to attach to the note, in [Data URL](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/Data_URIs) format. | | crop_rect | text | If an image is provided, you can also specify an optional rectangle that will be used to crop the image. In format `{ x: x, y: y, width: width, height: height }` | -## GET /notes +### GET /notes Gets all notes -## GET /notes/:id +### GET /notes/:id Gets note with ID :id -## GET /notes/:id/tags +### GET /notes/:id/tags Gets all the tags attached to this note. -## GET /notes/:id/resources +### GET /notes/:id/resources Gets all the resources attached to this note. -## POST /notes +### POST /notes Creates a new note @@ -223,25 +223,25 @@ Examples: curl --data '{ "title": "Image test", "body": "Here is Joplin icon:", "image_data_url": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAIAAABLbSncAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAANZJREFUeNoAyAA3/wFwtO3K6gUB/vz2+Prw9fj/+/r+/wBZKAAExOgF4/MC9ff+MRH6Ui4E+/0Bqc/zutj6AgT+/Pz7+vv7++nu82c4DlMqCvLs8goA/gL8/fz09fb59vXa6vzZ6vjT5fbn6voD/fwC8vX4UiT9Zi//APHyAP8ACgUBAPv5APz7BPj2+DIaC2o3E+3o6ywaC5fT6gD6/QD9/QEVf9kD+/dcLQgJA/7v8vqfwOf18wA1IAIEVycAyt//v9XvAPv7APz8LhoIAPz9Ri4OAgwARgx4W/6fVeEAAAAASUVORK5CYII="}' http://127.0.0.1:41184/notes -### Creating a note with a specific ID +#### Creating a note with a specific ID When a new note is created, it is automatically assigned a new unique ID so **normally you do not need to set the ID**. However, if for some reason you want to set it, you can supply it as the `id` property. It needs to be a **32 characters long string** in hexadecimal. **Make sure it is unique**, for example by generating it using whatever GUID function is available in your programming language. curl --data '{ "id": "00a87474082744c1a8515da6aa5792d2", "title": "My note with custom ID"}' http://127.0.0.1:41184/notes -## PUT /notes/:id +### PUT /notes/:id Sets the properties of the note with ID :id -## DELETE /notes/:id +### DELETE /notes/:id Deletes the note with ID :id -# Folders +## Folders This is actually a notebook. Internally notebooks are called "folders". -## Properties +### Properties | Name | Type | Description | | ----- | ----- | ----- | @@ -260,35 +260,35 @@ This is actually a notebook. Internally notebooks are called "folders". | icon | text | | | user_data | text | | -## GET /folders +### GET /folders Gets all folders The folders are returned as a tree. The sub-notebooks of a notebook, if any, are under the `children` key. -## GET /folders/:id +### GET /folders/:id Gets folder with ID :id -## GET /folders/:id/notes +### GET /folders/:id/notes Gets all the notes inside this folder. -## POST /folders +### POST /folders Creates a new folder -## PUT /folders/:id +### PUT /folders/:id Sets the properties of the folder with ID :id -## DELETE /folders/:id +### DELETE /folders/:id Deletes the folder with ID :id -# Resources +## Resources -## Properties +### Properties | Name | Type | Description | | ----- | ----- | ----- | @@ -311,23 +311,23 @@ Deletes the folder with ID :id | user_data | text | | | blob_updated_time | int | | -## GET /resources +### GET /resources Gets all resources -## GET /resources/:id +### GET /resources/:id Gets resource with ID :id -## GET /resources/:id/file +### GET /resources/:id/file Gets the actual file associated with this resource. -## GET /resources/:id/notes +### GET /resources/:id/notes Gets the notes (IDs) associated with a resource. -## POST /resources +### POST /resources Creates a new resource @@ -359,19 +359,19 @@ Or if you only need to update the resource properties (title, etc.), without cha ] ); ``` -## PUT /resources/:id +### PUT /resources/:id Sets the properties of the resource with ID :id You may also update the file data by specifying a file (See `POST /resources` example). -## DELETE /resources/:id +### DELETE /resources/:id Deletes the resource with ID :id -# Tags +## Tags -## Properties +### Properties | Name | Type | Description | | ----- | ----- | ----- | @@ -387,41 +387,41 @@ Deletes the resource with ID :id | parent_id | text | | | user_data | text | | -## GET /tags +### GET /tags Gets all tags -## GET /tags/:id +### GET /tags/:id Gets tag with ID :id -## GET /tags/:id/notes +### GET /tags/:id/notes Gets all the notes with this tag. -## POST /tags +### POST /tags Creates a new tag -## POST /tags/:id/notes +### POST /tags/:id/notes Post a note to this endpoint to add the tag to the note. The note data must at least contain an ID property (all other properties will be ignored). -## PUT /tags/:id +### PUT /tags/:id Sets the properties of the tag with ID :id -## DELETE /tags/:id +### DELETE /tags/:id Deletes the tag with ID :id -## DELETE /tags/:id/notes/:note_id +### DELETE /tags/:id/notes/:note_id Remove the tag from the note. -# Revisions +## Revisions -## Properties +### Properties | Name | Type | Description | | ----- | ----- | ----- | @@ -438,31 +438,31 @@ Remove the tag from the note. | updated_time | int | | | created_time | int | | -## GET /revisions +### GET /revisions Gets all revisions -## GET /revisions/:id +### GET /revisions/:id Gets revision with ID :id -## POST /revisions +### POST /revisions Creates a new revision -## PUT /revisions/:id +### PUT /revisions/:id Sets the properties of the revision with ID :id -## DELETE /revisions/:id +### DELETE /revisions/:id Deletes the revision with ID :id -# Events +## Events This end point can be used to retrieve the latest note changes. Currently only note changes are tracked. -## Properties +### Properties | Name | Type | Description | | ----- | ----- | ----- | @@ -474,7 +474,7 @@ This end point can be used to retrieve the latest note changes. Currently only n | source | int | Unused | | before_change_item | text | Unused | -## GET /events +### GET /events Returns a paginated list of recent events. A `cursor` property should be provided, which tells from what point in time the events should be returned. The API will return a `cursor` property, to tell from where to resume retrieving events, as well as an `has_more` (tells if more changes can be retrieved) and `items` property, which will contain the list of events. Events are kept for up to 90 days. @@ -482,6 +482,6 @@ If no `cursor` property is provided, the API will respond with the latest change The results are paginated so you may need multiple calls to retrieve all the events. Use the `has_more` property to know if more can be retrieved. -## GET /events/:id +### GET /events/:id Returns the event with the given ID. \ No newline at end of file diff --git a/readme/api/tutorials/_category_.yml b/readme/api/tutorials/_category_.yml new file mode 100644 index 0000000000..606b5a1933 --- /dev/null +++ b/readme/api/tutorials/_category_.yml @@ -0,0 +1,4 @@ +position: 2 +label: 'Tutorials' +collapsible: true +collapsed: true \ No newline at end of file diff --git a/readme/apps/_category_.yml b/readme/apps/_category_.yml new file mode 100644 index 0000000000..c8a5b4bd78 --- /dev/null +++ b/readme/apps/_category_.yml @@ -0,0 +1,4 @@ +position: 1 +label: 'Using Joplin' +collapsible: true +collapsed: true \ No newline at end of file diff --git a/readme/apps/attachments.md b/readme/apps/attachments.md new file mode 100644 index 0000000000..93f32ca99b --- /dev/null +++ b/readme/apps/attachments.md @@ -0,0 +1,13 @@ +# Attachments + +Any kind of file can be attached to a note. In Markdown, links to these files are represented as a simple ID to the attachment, clicking on this link will open the file in the default application. In the case of audio, video and pdf files, these will be displayed inline with the note and so can be viewed or played within Joplin. + +In the **desktop application**, files can be attached either by clicking the "Attach file" icon in the editor or via drag and drop. If you prefer to create a link to a local file instead, hold the ALT key while performing the drag and drop operation. You can also copy and paste images directly in the editor via Ctrl+V. + +Resources that are not attached to any note will be automatically deleted in accordance to the [Note History](https://github.com/laurent22/joplin/blob/dev/readme/apps/note_history.md) settings. + +**Important:** Resources larger than 10 MB are not currently supported on mobile. They will crash the application when synchronising so it is recommended not to attach such resources at the moment. The issue is being looked at. + +## Downloading attachments + +The way the attachments are downloaded during synchronisation can be customised in the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/apps/config_screen.md), under "Attachment download behaviour". The default option ("Always") is to download all the attachments, all the time, so that the data is available even when the device is offline. There is also the option to download the attachments manually (option "Manual"), by clicking on it, or automatically (Option "Auto"), in which case the attachments are downloaded only when a note is opened. These options should help saving disk space and network bandwidth, especially on mobile. \ No newline at end of file diff --git a/readme/clipper.md b/readme/apps/clipper.md similarity index 95% rename from readme/clipper.md rename to readme/apps/clipper.md index 08a152ba91..8a321c0e51 100644 --- a/readme/clipper.md +++ b/readme/apps/clipper.md @@ -4,7 +4,7 @@ The Web Clipper is a browser extension that allows you to save web pages and scr -# Troubleshooting the web clipper service +## Troubleshooting the web clipper service The web clipper extension and the Joplin application communicates via a service, which is started by the Joplin desktop app. @@ -16,9 +16,9 @@ However certain things can interfere with this service and prevent it from being If none of this work, please report it on the [forum](https://discourse.joplinapp.org/) or [GitHub issue tracker](https://github.com/laurent22/joplin/issues) -# Debugging the extension +## Debugging the extension -## In Chrome +### In Chrome To provide as much information as possible when reporting an issue, you may provide the log from the various Chrome console. @@ -28,7 +28,7 @@ To do so, first enable developer mode in [chrome://extensions/](chrome://extensi - Debugging the background script: In `chrome://extensions/`, click on "Inspect background script". - Debugging the content script: Press Ctrl+Shift+I to open the console of the current page. -## In Firefox +### In Firefox - Open [about:debugging](about:debugging) in Firefox. - Make sure the checkbox "Enable add-on debugging" is ticked. @@ -41,6 +41,6 @@ Now use the extension as normal and replicate the bug you're having. Copy and paste the content of both the debugging window and the Firefox console, and post it to the [forum](https://discourse.joplinapp.org/). -# Using the Web Clipper service +## Using the Web Clipper service The Web Clipper service can be used to create, modify or delete notes, notebooks, tags, etc. from any other application. It exposes an API with a number of methods to manage Joplin's data. For more information about this API and how to use it, please check the [Joplin API documentation](https://joplinapp.org/api/references/rest_api/). diff --git a/readme/config_screen.md b/readme/apps/config_screen.md similarity index 100% rename from readme/config_screen.md rename to readme/apps/config_screen.md diff --git a/readme/conflict.md b/readme/apps/conflict.md similarity index 97% rename from readme/conflict.md rename to readme/apps/conflict.md index eed7d12f73..30c363dbf6 100644 --- a/readme/conflict.md +++ b/readme/apps/conflict.md @@ -2,7 +2,7 @@ A conflict happens when one note or one attachment is modified in two different places, and then synchronised. In that case, it is not possible to determine which version of the note or attachment you want to keep, and thus a conflict is generated. -# How to resolve a conflict? +## How to resolve a conflict? When Joplin detects a conflict, it creates a _Conflict_ notebook and copies the local note to it. Then the remote note replaces the local note. You can then inspect the notes in the Conflict notebook, compare it with your other version, and copy any change that might have been overwritten. @@ -11,6 +11,7 @@ If you are sure that the local version on one of your devices was good, you can There is a Joplin plugin that deals with conflict resolution: https://discourse.joplinapp.org/t/plugin-conflict-resolution/ ## If you do not remember your changes since the last failed synchronisation + 1. Use a merge tool, for example www.diffchecker.com 2. Copy the entire content of your _Conflict_/note 3. Paste it to the left side of your merge tool @@ -22,8 +23,7 @@ There is a Joplin plugin that deals with conflict resolution: https://discourse. 9. Synchronise 10. Delete the Conflict/note (right-click, Delete) - -# How to avoid conflicts? +## How to avoid conflicts? Conflicts are always annoying to deal with so it is best to avoid them as much as possible. diff --git a/readme/apps/custom_css.md b/readme/apps/custom_css.md new file mode 100644 index 0000000000..41e08f8bad --- /dev/null +++ b/readme/apps/custom_css.md @@ -0,0 +1,7 @@ +# Custom CSS + +Rendered markdown can be customized by placing a userstyle file in the profile directory `~/.config/joplin-desktop/userstyle.css` (This path might be different on your device - check at the top of the `General` page of the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/apps/config_screen.md) for the exact path). This file supports standard CSS syntax. Joplin ***must*** be restarted for the new css to be applied, please ensure that Joplin is not closing to the tray, but is actually exiting. Note that this file is used for both displaying the notes and printing the notes. Be aware how the CSS may look printed (for example, printing white text over a black background is usually not wanted). + +The whole UI can be customized by placing a custom editor style file in the profile directory `~/.config/joplin-desktop/userchrome.css`. + +Important: userstyle.css and userchrome.css are provided for your convenience, but they are advanced settings, and styles you define may break from one version to the next. If you want to use them, please know that it might require regular development work from you to keep them working. The Joplin team cannot make a commitment to keep the application HTML structure stable. \ No newline at end of file diff --git a/readme/debugging.md b/readme/apps/debugging.md similarity index 95% rename from readme/debugging.md rename to readme/apps/debugging.md index e733e1c3ae..3c35093b93 100644 --- a/readme/debugging.md +++ b/readme/apps/debugging.md @@ -32,12 +32,12 @@ There's two ways to start in safe mode: ## Mobile application -- In the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/config_screen.md), press on the **Log button**, and from the options menu, press "share". +- In the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/apps/config_screen.md), press on the **Log button**, and from the options menu, press "share". - Attach the shared log (or just relevant portions) to the GitHub issue. If you recently (within two weeks) upgraded from 12.11.x to version 12.12.x, [be sure to check the log for and remove any sensitive data shared with Joplin](https://github.com/laurent22/joplin/issues/8211). -# Creating a low-level bug report on Android +### Creating a low-level bug report on Android https://developer.android.com/studio/debug/bug-report @@ -49,7 +49,7 @@ To get a bug report directly from your device, do the following: After a moment you get a notification that the bug report is ready. To share the bug report, tap the notification. -# Creating a low-level bug report on iOS +### Creating a low-level bug report on iOS Some crashes cannot be investigated using Joplin's own tools. In that case, it can be very helpful to provide a native iOS crash report. diff --git a/readme/desktop.md b/readme/apps/desktop.md similarity index 100% rename from readme/desktop.md rename to readme/apps/desktop.md diff --git a/readme/email_to_note.md b/readme/apps/email_to_note.md similarity index 69% rename from readme/email_to_note.md rename to readme/apps/email_to_note.md index 8a69e34f96..52c7597ac2 100644 --- a/readme/email_to_note.md +++ b/readme/apps/email_to_note.md @@ -10,13 +10,13 @@ This feature is available for Pro and Teams members. ### Desktop -To copy your Joplin Cloud email address you will need to navigate to the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/config_screen.md) and locate to the Joplin Cloud tab. You will need to have your [synchronisation set to Joplin Cloud](https://github.com/laurent22/joplin/blob/dev/readme/welcome/3_synchronising_your_notes.md#setting-up-joplin-cloud-synchronisation) +To copy your Joplin Cloud email address you will need to navigate to the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/apps/config_screen.md) and locate to the Joplin Cloud tab. You will need to have your [synchronisation set to Joplin Cloud](https://github.com/laurent22/joplin/blob/dev/readme/welcome/3_synchronising_your_notes.md#setting-up-joplin-cloud-synchronisation) ### Mobile -To copy your Joplin Cloud email address you will need to navigate to the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/config_screen.md) and find the Joplin Cloud section. You will need to have your [synchronisation set to Joplin Cloud](https://github.com/laurent22/joplin/blob/dev/readme/welcome/3_synchronising_your_notes.md#setting-up-joplin-cloud-synchronisation) +To copy your Joplin Cloud email address you will need to navigate to the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/apps/config_screen.md) and find the Joplin Cloud section. You will need to have your [synchronisation set to Joplin Cloud](https://github.com/laurent22/joplin/blob/dev/readme/welcome/3_synchronising_your_notes.md#setting-up-joplin-cloud-synchronisation) diff --git a/readme/external_links.md b/readme/apps/external_links.md similarity index 100% rename from readme/external_links.md rename to readme/apps/external_links.md diff --git a/readme/apps/external_text_editor.md b/readme/apps/external_text_editor.md new file mode 100644 index 0000000000..a04296fdb3 --- /dev/null +++ b/readme/apps/external_text_editor.md @@ -0,0 +1,3 @@ +# External text editor + +Joplin notes can be opened and edited using an external editor of your choice. It can be a simple text editor like Notepad++ or Sublime Text or an actual Markdown editor like Typora. In that case, images will also be displayed within the editor. To open the note in an external editor, click on the icon in the toolbar or press Ctrl+E (or Cmd+E). Your default text editor will be used to open the note. If needed, you can also specify the editor directly in the General Options, under "Text editor command". \ No newline at end of file diff --git a/readme/apps/import_export.md b/readme/apps/import_export.md new file mode 100644 index 0000000000..3e50ee90ac --- /dev/null +++ b/readme/apps/import_export.md @@ -0,0 +1,42 @@ +# Importing and exporting + +## Importing + +### Importing from Evernote + +Joplin was designed as a replacement for Evernote and so can import complete Evernote notebooks, as well as notes, tags, resources (attached files) and note metadata (such as author, geo-location, etc.) via ENEX files. In terms of data, the only two things that might slightly differ are: + +- Recognition data - Evernote images, in particular scanned (or photographed) documents have [recognition data](https://en.wikipedia.org/wiki/Optical_character_recognition) associated with them. It is the text that Evernote has been able to recognise in the document. This data is not preserved when the note are imported into Joplin. However, should it become supported in the search tool or other parts of Joplin, it should be possible to regenerate this recognition data since the actual image would still be available. + +- Colour, font sizes and faces - Evernote text is stored as HTML and this is converted to Markdown during the import process. For notes that are mostly plain text or with basic formatting (bold, italic, bullet points, links, etc.) this is a lossless conversion, and the note, once rendered back to HTML should be very similar. Tables are also imported and converted to Markdown tables. For very complex notes, some formatting data might be lost - in particular colours, font sizes and font faces will not be imported. The text itself however is always imported in full regardless of formatting. If it is essential that this extra data is preserved then Joplin also allows import of ENEX files as HTML. + +To import Evernote data, first export your Evernote notebooks to ENEX files as described [here](https://help.evernote.com/hc/en-us/articles/209005557-How-to-back-up-export-and-restore-import-notes-and-notebooks). Then follow these steps: + +In the **desktop application**, open File > Import > ENEX and select your file. The notes will be imported into a new separate notebook. If needed they can then be moved to a different notebook, or the notebook can be renamed, etc. + +In the **terminal application**, in [command-line mode](https://github.com/laurent22/joplin/blob/dev/readme/apps/terminal.md#command-line-mode), type `import /path/to/file.enex`. This will import the notes into a new notebook named after the filename. + +### Importing from Markdown files + +Joplin can import notes from plain Markdown file. You can either import a complete directory of Markdown files or individual files. + +In the **desktop application**: +* **File import**: Go to File > Import > MD - Markdown (file) and select the Markdown file. This file will then be imported to the currently selected Notebook. +* **Directory import**: Go to File > Import > MD - Markdown (directory) and select the top level of the directory that is being imported. Directory (folder) structure will be preserved in the Notebook > Subnotebook > Note structure within Joplin. + +In the **terminal application**, in [command-line mode](https://github.com/laurent22/joplin/blob/dev/readme/apps/terminal.md#command-line-mode), type `import --format md /path/to/file.md` or `import --format md /path/to/directory/`. + +### Importing from other applications + +In general the way to import notes from any application into Joplin is to convert the notes to ENEX files (Evernote format) and to import these ENEX files into Joplin using the method above. Most note-taking applications support ENEX files so it should be relatively straightforward. For help about specific applications, see below: + +* Standard Notes: Please see [this tutorial](https://programadorwebvalencia.com/migrate-notes-from-standard-notes-to-joplin/) +* Tomboy Notes: Export the notes to ENEX files [as described here](https://askubuntu.com/questions/243691/how-can-i-export-my-tomboy-notes-into-evernote/608551) for example, and import these ENEX files into Joplin. +* OneNote: First [import the notes from OneNote into Evernote](https://discussion.evernote.com/topic/107736-is-there-a-way-to-import-from-onenote-into-evernote-on-the-mac/). Then export the ENEX file from Evernote and import it into Joplin. +* NixNote: Synchronise with Evernote, then export the ENEX files and import them into Joplin. More info [in this thread](https://discourse.joplinapp.org/t/import-from-nixnote/183/3). + +## Exporting + +Joplin can export to the JEX format (Joplin Export file), which is a tar file that can contain multiple notes, notebooks, etc. This is a lossless format in that all the notes, but also metadata such as geo-location, updated time, tags, etc. are preserved. This format is convenient for backup purposes and can be re-imported into Joplin. A "raw" format is also available. This is the same as the JEX format except that the data is saved to a directory and each item represented by a single file. + +Joplin is also capable of exporting to a number of other formats including HTML and PDF which can be done for single notes, notebooks or everything. \ No newline at end of file diff --git a/readme/markdown.md b/readme/apps/markdown.md similarity index 96% rename from readme/markdown.md rename to readme/apps/markdown.md index fbeeb45172..f2b6f0989d 100644 --- a/readme/markdown.md +++ b/readme/apps/markdown.md @@ -18,7 +18,7 @@ This is a quick summary of the Markdown syntax. | **Bold** |
This is some `**bold text**`
| This is some bold text | **Italic** |
This is some `*italic text*`
| This is some italic text | **Blockquotes** |
> Kent.
> Where's the king?

> Gent.
> Contending with the
> fretful elements
|
Kent.
Where's the king?

Gent.
Contending with
the fretful elements
-| **List** |
* Milk
* Eggs
* Beers
* Desperados
* Heineken
* Ham
|
  • Milk
  • Eggs
  • Beers
    • Desperados
    • Heineken
  • Ham
+| **List** |
- Milk
- Eggs
- Beers
- Desperados
- Heineken
- Ham
|
  • Milk
  • Eggs
  • Beers
    • Desperados
    • Heineken
  • Ham
| **Ordered list** |
1. Introduction
2. Main topic
1. First sub-topic
2. Second sub-topic
3. Conclusion
|
  1. Introduction
  2. Main topic
    1. First sub-topic
    2. Second sub-topic
  3. Conclusion
| **Inline code** |
This is \`someJavaScript()\`
| This is `someJavaScript()` | **Code block** |
Here's some JavaScript code:

\`\`\`
function hello() {
alert('hello');
}
\`\`\`

Language is normally auto-detected,
but it can also be specified:

\`\`\`sql
SELECT * FROM users;
DELETE FROM sessions;
\`\`\`
| Here's some JavaScript code:

function hello() {
    alert('hello');
}

Language is normally auto-detected, but it can also be specified:

SELECT * FROM users;
DELETE FROM sessions;
@@ -102,13 +102,13 @@ Joplin supports chemical equations via the mhchem plugin for KaTeX. This plugin You can create diagrams in Joplin using the [Mermaid syntax](https://mermaidjs.github.io/). To add such a graph, wrap the Mermaid script inside a "\`\`\`mermaid" code block like this: - ```mermaid - graph TD; - A-->B; - A-->C; - B-->D; - C-->D; - ``` +\`\`\`mermaid
+graph TD;
+    A-->B;
+    A-->C;
+    B-->D;
+    C-->D;
+\`\`\` This is how it would look with the Markdown on the left, and rendered graph on the right: @@ -138,7 +138,7 @@ It is generally recommended to enter the notes as Markdown as it makes the notes ### Markdown Plugins -Joplin supports a number of plugins that can be toggled on/off to enable/disable markdown features on top of the standard Markdown features you would expect. These plugins are listed below. Unlike regular plugins, Markdown plugins must be enabled in the markdown section of the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/config_screen.md). Not all of the plugins are enabled by default, if the "enabled" field is 'no' below, then open the option screen to enable the plugin. Plugins can be disabled in the same manner. +Joplin supports a number of plugins that can be toggled on/off to enable/disable markdown features on top of the standard Markdown features you would expect. These plugins are listed below. Unlike regular plugins, Markdown plugins must be enabled in the markdown section of the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/apps/config_screen.md). Not all of the plugins are enabled by default, if the "enabled" field is 'no' below, then open the option screen to enable the plugin. Plugins can be disabled in the same manner. The functionality added by these plugins is not part of the CommonMark spec so, while they will all work within Joplin, it is not guaranteed that they will work in other Markdown readers. Often this is not an issue but keep it in mind if you require compatibility with other Markdown applications. diff --git a/readme/mobile.md b/readme/apps/mobile.md similarity index 100% rename from readme/mobile.md rename to readme/apps/mobile.md diff --git a/readme/note_history.md b/readme/apps/note_history.md similarity index 70% rename from readme/note_history.md rename to readme/apps/note_history.md index ec0b16c3b7..e93f746bd8 100644 --- a/readme/note_history.md +++ b/readme/apps/note_history.md @@ -1,11 +1,9 @@ # Note History -Joplin has support for note history. The applications (desktop, mobile and CLI) now preserve previous versions of the notes, so you can inspect or restore them later on as needed. +The Joplin applications automatically save previous versions of your notes at regular intervals. These versions are synced across devices and can be viewed from the desktop application. A common complain with many sync-based note taking apps is that they work in an opaque way - sometimes notes are changed or they disappear and it's not clear why - it could be a user error, or some bug, but regardless it makes it hard to trust the app with thousands of notes. So this feature give transparency over what's happening - if some note seems to be gone or changed when it shouldn't, the redundant data allows investigating the issue and restoring content. -Another medium term goal is to allow the implementation of a recycle bin. Behind the scene, this is essentially already done since whenever a note is deleted, a final revision of that note is preserved. What's missing is a user interface (i.e. the recycle bin) to view these deleted notes. - ### How does it work? All the apps save a version of the modified notes every 10 minutes. These revisions are then synced across all the devices so if you're looking for a particular version of a note that was made on mobile, you can later find that version on the desktop app too. @@ -16,16 +14,16 @@ While all the apps save revisions, currently only the desktop one allow viewing To do so, click on the Information icon in the toolbar, then select "Previous version of this note". -![](https://raw.githubusercontent.com/laurent22/joplin/dev/readme/blog/images/20190523-231026_0.png) +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20190523-231026_0.png) The next screen will show the latest version of the note. You can then choose to view a different version, if any, or to restore one of them. To restore a note, simply click on the "Restore" button. The old version of the note will be copied in a folder called "Restored Notes". The current version of the note will not be replaced or modified. -![](https://raw.githubusercontent.com/laurent22/joplin/dev/readme/blog/images/20190523-231026_1.png) +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20190523-231026_1.png) ### How to configure the note history feature? -Additional options are available in the `Note History` page of the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/config_screen.md). It is possible to enable/disable the note history feature. It is also possible to specify for how long the history of a note should be kept (by default, for 90 days). +Additional options are available in the `Note History` page of the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/apps/config_screen.md). It is possible to enable/disable the note history feature. It is also possible to specify for how long the history of a note should be kept (by default, for 90 days). **IMPORTANT**: Please note that since all the revisions are synced across all devices, it means these settings are kind of global. So for example, if on one device you set it to keep revisions for 30 days, and on another to 100 days, the revisions older than 30 days will be deleted, and then this deletion will be synced. So in practice it means revisions are kept for whatever is the minimum number of days as set on any of the devices. In that particular case, the 100 days setting will be essentially ignored, and only the 30 days one will apply. diff --git a/readme/apps/notifications.md b/readme/apps/notifications.md new file mode 100644 index 0000000000..060d32dc4f --- /dev/null +++ b/readme/apps/notifications.md @@ -0,0 +1,13 @@ +# Notifications + +In the desktop and mobile apps, an alarm can be associated with any to-do. It will be triggered at the given time by displaying a notification. How the notification will be displayed depends on the operating system since each has a different way to handle this. Please see below for the requirements for the desktop applications: + +- **Windows**: >= 8. Make sure the Action Center is enabled on Windows. Task bar balloon for Windows < 8. Growl as fallback. Growl takes precedence over Windows balloons. +- **macOS**: >= 10.8 or Growl if earlier. +- **Linux**: `notify-send` tool, delivered through packages `notify-osd`, `libnotify-bin` or `libnotify-tools`. GNOME should have this by default, but install `libnotify-tools` if using KDE Plasma. + +See [documentation and flow chart for reporter choice](https://github.com/mikaelbr/node-notifier/blob/master/DECISION_FLOW.md) + +On mobile, the alarms will be displayed using the built-in notification system. + +If for any reason the notifications do not work, please [open an issue](https://github.com/laurent22/joplin/issues). \ No newline at end of file diff --git a/readme/plugins.md b/readme/apps/plugins.md similarity index 80% rename from readme/plugins.md rename to readme/apps/plugins.md index 5965f7a87c..f9348f4645 100644 --- a/readme/plugins.md +++ b/readme/apps/plugins.md @@ -1,7 +1,7 @@ # 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](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. +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/apps/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 @@ -12,11 +12,11 @@ See the [Joplin Discourse 'plugins' category](https://discourse.joplinapp.org/c/ ## Installing a plugin -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 space will display all plugins or you can browse the repository by pressing the `Plugin tools` "gear" button and selecting `Browse all plugins`. +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/apps/config_screen.md). Typing a space 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. +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/apps/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 @@ -36,6 +36,6 @@ 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. +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/index.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/) diff --git a/readme/apps/profiles.md b/readme/apps/profiles.md new file mode 100644 index 0000000000..540f36d6c5 --- /dev/null +++ b/readme/apps/profiles.md @@ -0,0 +1,9 @@ +# 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 and mobile. \ No newline at end of file diff --git a/readme/publish_note.md b/readme/apps/publish_note.md similarity index 100% rename from readme/publish_note.md rename to readme/apps/publish_note.md diff --git a/readme/rich_text_editor.md b/readme/apps/rich_text_editor.md similarity index 93% rename from readme/rich_text_editor.md rename to readme/apps/rich_text_editor.md index d959b573f9..ae16d9e74d 100644 --- a/readme/rich_text_editor.md +++ b/readme/apps/rich_text_editor.md @@ -2,7 +2,7 @@ **TLDR:** Avoid using Markdown plugins if you primarily intend to use the Rich Text editor, and be aware of the editor's limitations. -At its core, Joplin stores notes in [Markdown format](https://github.com/laurent22/joplin/blob/dev/readme/markdown.md). Markdown is a simple way to format text that looks great on any device and, while it's formatted text, it still looks perfectly readable in a plain text editor. +At its core, Joplin stores notes in [Markdown format](https://github.com/laurent22/joplin/blob/dev/readme/apps/markdown.md). Markdown is a simple way to format text that looks great on any device and, while it's formatted text, it still looks perfectly readable in a plain text editor. In some cases however, the extra markup format that appears in notes can be seen as a drawback. Bold text will `look **like this**` for example, and tables might not be particularly readable. For that reason, Joplin also features a Rich Text editor, which allows you to edit notes with a [WYSIWYG](https://en.wikipedia.org/wiki/WYSIWYG) editing experience. Bold text will "look **like this**" and tables will be more readable, among others. diff --git a/readme/apps/search.md b/readme/apps/search.md new file mode 100644 index 0000000000..0b75e7c722 --- /dev/null +++ b/readme/apps/search.md @@ -0,0 +1,57 @@ +# Searching + +Joplin implements the SQLite Full Text Search (FTS4) extension. It means the content of all the notes is indexed in real time and search queries return results very fast. Both [Simple FTS Queries](https://www.sqlite.org/fts3.html#simple_fts_queries) and [Full-Text Index Queries](https://www.sqlite.org/fts3.html#full_text_index_queries) are supported. See below for the list of supported queries: + +One caveat of SQLite FTS is that it does not support languages which do not use Latin word boundaries (spaces, tabs, punctuation). To solve this issue, Joplin has a custom search mode, that does not use FTS, but still has all of its features (multi term search, filters, etc.). One of its drawbacks is that it can get slow on larger note collections. Also, the sorting of the results will be less accurate, as the ranking algorithm (BM25) is, for now, only implemented for FTS. Finally, in this mode there are no restrictions on using the `*` wildcard (`swim*`, `*swim` and `ast*rix` all work). This search mode is currently enabled if one of the following languages are detected: + - Chinese + - Japanese + - Korean + - Thai + +## Supported queries + +Search type | Description | Example +------------|-------------|--------- +Single word | Returns all the notes that contain this term. | For example, searching for `cat` will return all the notes that contain this exact word. Note: it will not return the notes that contain the substring - thus, for "cat", notes that contain "cataclysmic" or "prevaricate" will **not** be returned. +Multiple word | Returns all the notes that contain **all** these words, but not necessarily next to each other. | `dog cat` - will return any notes that contain the words "dog" and "cat" anywhere in the note, no necessarily in that order nor next to each other. It will **not** return results that contain "dog" or "cat" only. +Phrase | Add double quotes to return the notes that contain exactly this phrase. | `"shopping list"` - will return the notes that contain these **exact terms** next to each other and in this order. It will **not** return for example a note that contains "going shopping with my list". +Prefix | Add a wildcard to return all the notes that contain a term with a specified prefix. | `swim*` - will return all the notes that contain eg. "swim", but also "swimming", "swimsuit", etc. IMPORTANT: The wildcard **can only be at the end** - it will be ignored at the beginning of a word (eg. `*swim`) and will be treated as a literal asterisk in the middle of a word (eg. `ast*rix`) +Switch to basic search | One drawback of Full Text Search is that it ignores most non-alphabetical characters. However in some cases you might want to search for this too. To do that, you can use basic search. You switch to this mode by prefixing your search with a slash `/`. This won't provide the benefits of FTS but it will allow searching exactly for what you need. Note that it can also be much slower, even extremely slow, depending on your query. | `/"- [ ]"` - will return all the notes that contain unchecked checkboxes. + +## Search filters + +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`.
`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`.
`any:0 cat dog` will return notes with both the words `cat` and `dog`. | +| **title:**
**body:**|Restrict your search to just the title or the body field.|`title:"hello world"` searches for notes whose title contains `hello` and `world`.
`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.
`tag:office tag:important` searches for all notes having both office and important tags.
`tag:office -tag:spam` searches for notes having tag `office` which do not have tag `spam`.
`any:1 tag:office tag:spam` searches for notes having tag `office` or tag `spam`.
`tag:be*ful` does a search with wildcards.
`tag:*` returns all notes with tags.
`-tag:*` returns all notes without tags.| +| **notebook:** | Restrict the search to the specified notebook(s). |`notebook:books` limits the search scope within `books` and all its subnotebooks.
`notebook:wheel*time` does a wildcard search.| +| **created:**
**updated:**
**due:**| Searches for notes created/updated on dates specified using YYYYMMDD format. You can also search relative to the current day, week, month, or year. | `created:20201218` will return notes created on or after December 18, 2020.
`-updated:20201218` will return notes updated before December 18, 2020.
`created:20200118 -created:20201215` will return notes created between January 18, 2020, and before December 15, 2020.
`created:202001 -created:202003` will return notes created on or after January and before March 2020.
`updated:1997 -updated:2020` will return all notes updated between the years 1997 and 2019.
`created:day-2` searches for all notes created in the past two days.
`updated:year-0` searches all notes updated in the current year.
`-due:day+7` will return all todos which are due or will be due in the next seven days.
`-due:day-5` searches all todos that are overdue for more than 5 days.| +| **type:** |Restrict the search to either notes or todos. | `type:note` to return all notes
`type:todo` to return all todos | +| **iscompleted:** | Restrict the search to either completed or uncompleted todos. | `iscompleted:1` to return all completed todos
`iscompleted:0` to return all uncompleted todos| +|**latitude:**
**longitude:**
**altitude:**|Filter by location|`latitude:40 -latitude:50` to return notes with latitude >= 40 and < 50 | +|**resource:**|Filter by attachment MIME type|`resource:image/jpeg` to return notes with a jpeg attachment.
`-resource:application/pdf` to return notes without a pdf attachment.
`resource:image/*` to return notes with any images.| +|**sourceurl:**|Filter by source URL|`sourceurl:https://www.google.com`
`sourceurl:*joplinapp.org` to perform a wildcard search.| +|**id:**|Filter by note ID|`id:9cbc1b4f242043a9b8a50627508bccd5` return a note with the specified id | + +Note: In the CLI client you have to escape the query using `--` when using negated filters. +Eg. `:search -- "-tag:tag1"`. + +The filters are implicitly connected by and/or connectives depending on the following rules: + +- By default, all filters are connected by "AND". +- To override this default behaviour, use the `any` filter, in which case the search terms will be connected by "OR" instead. +- There's an exception for the `notebook` filters which are connected by "OR". The reason being that no note can be in multiple notebooks at once. + +Incorrect search filters are interpreted as a phrase search, e.g. misspelled `nootebook:Example` or non-existing `https://joplinapp.org`. + +## Search order + +Notes are sorted by "relevance". Currently it means the notes that contain the requested terms the most times are on top. For queries with multiple terms, it also matters how close to each other the terms are. This is a bit experimental so if you notice a search query that returns unexpected results, please report it in the forum, providing as many details as possible to replicate the issue. + +## Goto Anything + +In the desktop application, press Ctrl+P or Cmd+P and 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. \ No newline at end of file diff --git a/readme/share_notebook.md b/readme/apps/share_notebook.md similarity index 100% rename from readme/share_notebook.md rename to readme/apps/share_notebook.md diff --git a/readme/apps/subnotebooks.md b/readme/apps/subnotebooks.md new file mode 100644 index 0000000000..2d3c485251 --- /dev/null +++ b/readme/apps/subnotebooks.md @@ -0,0 +1,9 @@ +# Sub-notebooks + +Sub-notebooks allow organising multiple notebooks into a tree of notebooks. For example it can be used to regroup all the notebooks related to work, to family or to a particular project under a parent notebook. + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/SubNotebooks.png) + +- In the **desktop application**, to create a subnotebook, drag and drop it onto another notebook. To move it back to the root, drag and drop it on the "Notebooks" header. Currently only the desktop app can be used to organise the notebooks. +- The **mobile application** supports displaying and collapsing/expanding the tree of notebooks, however it does not currently support moving the subnotebooks to different notebooks. +- The **terminal app** supports displaying the tree of subnotebooks but it does not support collapsing/expanding them or moving the subnotebooks around. diff --git a/readme/apps/sync/_category_.yml b/readme/apps/sync/_category_.yml new file mode 100644 index 0000000000..1822dfc4de --- /dev/null +++ b/readme/apps/sync/_category_.yml @@ -0,0 +1,4 @@ +position: 1 +label: 'Synchronisation' +collapsible: true +collapsed: true \ No newline at end of file diff --git a/readme/apps/sync/dropbox.md b/readme/apps/sync/dropbox.md new file mode 100644 index 0000000000..5464f05b8c --- /dev/null +++ b/readme/apps/sync/dropbox.md @@ -0,0 +1,7 @@ +# Dropbox synchronisation + +When syncing with Dropbox, Joplin creates a sub-directory in Dropbox, in `/Apps/Joplin` and reads/writes the notes and notebooks in it. The application does not have access to anything outside this directory. + +In the **desktop application** or **mobile application**, select "Dropbox" as the synchronisation target in the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/apps/config_screen.md) (it is selected by default). Then, to initiate the synchronisation process, click on the "Synchronise" button in the sidebar and follow the instructions. + +In the **terminal application**, to initiate the synchronisation process, type `:sync`. You will be asked to follow a link to authorise the application. \ No newline at end of file diff --git a/readme/e2ee.md b/readme/apps/sync/e2ee.md similarity index 86% rename from readme/e2ee.md rename to readme/apps/sync/e2ee.md index b4d574b955..89a3f3ff87 100644 --- a/readme/e2ee.md +++ b/readme/apps/sync/e2ee.md @@ -1,12 +1,12 @@ -# About End-To-End Encryption (E2EE) +# End-To-End Encryption (E2EE) -End-to-end encryption (E2EE) is a system where only the owner of the data (i.e. notes, notebooks, tags or resources) can read it. It prevents potential eavesdroppers - including telecom providers, internet providers, and even the developers of Joplin from being able to access the data. +Joplin supports end-to-end encryption (E2EE) on all the applications. End-to-end encryption (E2EE) is a system where only the owner of the data (i.e. notes, notebooks, tags or resources) can read it. It prevents potential eavesdroppers - including telecom providers, internet providers, and even the developers of Joplin from being able to access the data. The system is designed to defeat any attempts at surveillance or tampering because no third party can decipher the data being communicated or stored. There is a small overhead to using E2EE since data constantly has to be encrypted and decrypted so consider whether you really need the feature. -# Enabling E2EE +## Enabling E2EE Due to the decentralised nature of Joplin, E2EE needs to be manually enabled on a single device first (this will create a Master Key for encryption secured by your password) and then it must be synced with all other remaining devices. It is recommended to start with the desktop or terminal application since they generally run on more powerful devices (unlike the mobile application), and so they can encrypt the initial data faster. @@ -23,10 +23,10 @@ Do not manually enable encryption on multiple devices in parallel, but rather wa Once all the devices are in sync with E2EE enabled, the encryption/decryption should be mostly transparent. Occasionally you may see encrypted items but they will get decrypted in the background eventually. -# Disabling E2EE +## Disabling E2EE Follow the same procedure as above but instead disable E2EE on each device one by one. Again it might be simpler to do it one device at a time and to wait every time for the synchronisation to complete. -# Technical specification +## Technical specification -For a more technical description, mostly relevant for development or to review the method being used, please see the [Encryption specification](https://github.com/laurent22/joplin/blob/dev/readme/spec/e2ee.md). +For a more technical description, mostly relevant for development or to review the method being used, please see the [Encryption specification](https://github.com/laurent22/joplin/blob/dev/readme/dev/spec/e2ee.md). \ No newline at end of file diff --git a/readme/apps/sync/index.md b/readme/apps/sync/index.md new file mode 100644 index 0000000000..419e75e268 --- /dev/null +++ b/readme/apps/sync/index.md @@ -0,0 +1,9 @@ +# Synchronisation + +One of the goals of Joplin is to avoid being tied to any particular company or service, whether it is Evernote, Google or Microsoft. As such the synchronisation is designed without any hard dependency to any particular service. Most of the synchronisation process is done at an abstract level and access to external services, such as Nextcloud or Dropbox, is done via lightweight drivers. It is easy to support new services by creating simple drivers that provide a filesystem-like interface, i.e. the ability to read, write, delete and list items. It is also simple to switch from one service to another. + +Currently, synchronisation is possible with Joplin Cloud, Nextcloud, S3, WebDAV, Dropbox, OneDrive or the local filesystem. To enable synchronisation please follow the instructions below. After that, the application will synchronise in the background whenever it is running, or you can click on "Synchronise" to start a synchronisation manually. Joplin will background sync automatically after any content change is made on the local application. + +If the **terminal client** has been installed, it is possible to also synchronise outside of the user interface by typing `joplin sync` from the terminal. This can be used to setup a cron script to synchronise at a regular interval. For example, this would do it every 30 minutes: + +` */30 * * * * /path/to/joplin sync` \ No newline at end of file diff --git a/readme/apps/sync/nextcloud.md b/readme/apps/sync/nextcloud.md new file mode 100644 index 0000000000..b6865ce894 --- /dev/null +++ b/readme/apps/sync/nextcloud.md @@ -0,0 +1,14 @@ +# Nextcloud synchronisation + + Nextcloud is a self-hosted, private cloud solution. It can store documents, images and videos but also calendars, passwords and countless other things and can sync them to your laptop or phone. As you can host your own Nextcloud server, you own both the data on your device and infrastructure used for synchronisation. As such it is a good fit for Joplin. The platform is also well supported and with a strong community, so it is likely to be around for a while - since it's open source anyway, it is not a service that can be closed, it can exist on a server for as long as one chooses. + +In the **desktop application** or **mobile application**, go to the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/apps/config_screen.md) and select Nextcloud as the synchronisation target. Then input the WebDAV URL (to get it, click on Settings in the bottom left corner of the page, in Nextcloud), this is normally `https://example.com/nextcloud/remote.php/webdav/Joplin` (**make sure to create the "Joplin" directory in Nextcloud**), and set the username and password. If it does not work, please [see this explanation](https://github.com/laurent22/joplin/issues/61#issuecomment-373282608) for more details. + +In the **terminal application**, you will need to set the `sync.target` config variable and all the `sync.5.path`, `sync.5.username` and `sync.5.password` config variables to, respectively the Nextcloud WebDAV URL, your username and your password. This can be done from the command line mode using: + + :config sync.5.path https://example.com/nextcloud/remote.php/webdav/Joplin + :config sync.5.username YOUR_USERNAME + :config sync.5.password YOUR_PASSWORD + :config sync.target 5 + +If synchronisation does not work, please consult the logs in the app profile directory - it is often due to a misconfigured URL or password. The log should indicate what the exact issue is. \ No newline at end of file diff --git a/readme/apps/sync/onedrive.md b/readme/apps/sync/onedrive.md new file mode 100644 index 0000000000..0e8d0c197f --- /dev/null +++ b/readme/apps/sync/onedrive.md @@ -0,0 +1,7 @@ +# OneDrive synchronisation + +When syncing with OneDrive, Joplin creates a sub-directory in OneDrive, in /Apps/Joplin and reads/writes the notes and notebooks in it. The application does not have access to anything outside this directory. + +In the **desktop application** or **mobile application**, select "OneDrive" as the synchronisation target in the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/apps/config_screen.md). Then, to initiate the synchronisation process, click on the "Synchronise" button in the sidebar and follow the instructions. + +In the **terminal application**, to initiate the synchronisation process, type `:sync`. You will be asked to follow a link to authorise the application (simply input your Microsoft credentials - you do not need to register with OneDrive). \ No newline at end of file diff --git a/readme/apps/sync/s3.md b/readme/apps/sync/s3.md new file mode 100644 index 0000000000..9f9ad0dd81 --- /dev/null +++ b/readme/apps/sync/s3.md @@ -0,0 +1,60 @@ +# S3 synchronisation + +As of Joplin 2.x.x, Joplin supports multiple S3 providers. We expose some options that will need to be configured depending on your provider of choice. We have tested with UpCloud, AWS, and Linode. others should work as well. + +In the **desktop application** or **mobile application**, select "S3 (Beta)" as the synchronisation target in the [Configuration screen](https://github.com/laurent22/joplin/blob/dev/readme/apps/config_screen.md). + +- **S3 Bucket:** The name of your Bucket, such as `joplin-bucket` +- **S3 URL:** Fully qualified URL; For AWS this should be `https://s3..amazonaws.com/` +- **S3 Access Key & S3 Secret Key:** The User's programmatic access key. To create a new key & secret on AWS, visit [IAM Security Credentials](https://console.aws.amazon.com/iam/home#/security_credentials). For other providers follow their documentation. +- **S3 Region:** Some providers require you to provide the region of your bucket. This is usually in the form of "eu-west1" or something similar depending on your region. For providers that do not require a region, you can leave it blank. +- **Force Path Style**: This setting enables Joplin to talk to S3 providers using an older style S3 Path. Depending on your provider you may need to try with this on and off. + + +While creating a new Bucket for Joplin, disable **Bucket Versioning**, enable **Block all public access** and enable **Default encryption** with `Amazon S3 key (SSE-S3)`. Some providers do not expose these options, and it could create a syncing problem. Do attempt and report back so we can update the documentation appropriately. + +To add a **Bucket Policy** from the AWS S3 Web Console, navigate to the **Permissions** tab. Temporarily disable **Block all public access** to edit the Bucket policy, something along the lines of: +``` +{ + "Version": "2012-10-17", + "Statement": [ + { + "Sid": "VisualEditor0", + "Effect": "Allow", + "Action": [ + "s3:ListBucket", + "s3:GetBucketLocation", + "s3:GetObject", + "s3:DeleteObject", + "s3:DeleteObjectVersion", + "s3:PutObject" + ], + "Resource": [ + "arn:aws:s3:::joplin-bucket", + "arn:aws:s3:::joplin-bucket/*" + ] + } + ] +} +``` + +## Configuration settings for tested providers + +All providers will require a bucket, Access Key, and Secret Key. + +If you provide a configuration and you receive "success!" on the "check config" then your S3 sync should work for your provider. If you do not receive success, you may need to adjust your settings, or save them, restart the app, and attempt a sync. This may reveal more clear error messaging that will help you deduce the problem. + +## AWS +- URL: `https://s3..amazonaws.com/` (fill in your region, a complete list of endpoint adresses can be found [here](https://docs.aws.amazon.com/general/latest/gr/s3.html)) +- Region: required +- Force Path Style: unchecked + +## Linode +- URL: `https://.linodeobjects.com` (region is in the URL provided by Linode; this URL is also the same as the URL provided by Linode with the bucket name removed) +- Region: Anything you want to type, can't be left empty +- Force Path Style: unchecked + +## UpCloud +- URL: `https://..upcloudobjects.com` (They will provide you with multiple URLs, the one that follows this pattern should work.) +- Region: required +- Force Path Style: unchecked \ No newline at end of file diff --git a/readme/apps/sync/webdav.md b/readme/apps/sync/webdav.md new file mode 100644 index 0000000000..606c34c3f6 --- /dev/null +++ b/readme/apps/sync/webdav.md @@ -0,0 +1,18 @@ +# WebDAV synchronisation + +Select the "WebDAV" synchronisation target and follow the same instructions as for Nextcloud above (for the **terminal application** you will need to select sync target 6 rather than 5) + +WebDAV-compatible services that are known to work with Joplin: + +- [Apache WebDAV Module](https://httpd.apache.org/docs/current/mod/mod_dav.html) +- [DriveHQ](https://www.drivehq.com) +- [Fastmail](https://www.fastmail.com/) +- [HiDrive](https://www.strato.fr/stockage-en-ligne/) from Strato. [Setup help](https://github.com/laurent22/joplin/issues/309) +- [Nginx WebDAV Module](https://nginx.org/en/docs/http/ngx_http_dav_module.html) +- [Nextcloud](https://nextcloud.com/) +- [OwnCloud](https://owncloud.org/) +- [Seafile](https://www.seafile.com/) +- [Stack](https://www.transip.nl/stack/) +- [Synology WebDAV Server](https://www.synology.com/en-us/dsm/packages/WebDAVServer) +- [WebDAV Nav](https://www.schimera.com/products/webdav-nav-server/), a macOS server. +- [Zimbra](https://www.zimbra.com/) \ No newline at end of file diff --git a/readme/apps/terminal.md b/readme/apps/terminal.md new file mode 100644 index 0000000000..e8e75c79df --- /dev/null +++ b/readme/apps/terminal.md @@ -0,0 +1,753 @@ +# Joplin Terminal Application + +Joplin is a free, open source note taking and to-do application, which can handle a large number of notes organised into notebooks. The notes are searchable, can be copied, tagged and modified with your own text editor. + +Notes exported from Evernote via .enex files can be imported into Joplin, including the formatted content (which is converted to Markdown), resources (images, attachments, etc.) and complete metadata (geolocation, updated time, created time, etc.). Plain Markdown files can also be imported. + +The notes can be [synchronised](#synchronisation) with various targets including the file system (for example with a network directory), Nextcloud, Dropbox, OneDrive or WebDAV. When synchronising the notes, notebooks, tags and other metadata are saved to plain text files which can be easily inspected, backed up and moved around. + + + +## Installation + +Operating system | Method +-----------------|---------------- +macOS, Linux, or Windows (via [WSL](https://docs.microsoft.com/en-us/windows/wsl/faq)) | 1. First, [install Node 12+](https://nodejs.org/en/download/package-manager/).

2. Issue the following commands to install Joplin Terminal:
`NPM_CONFIG_PREFIX=~/.joplin-bin npm install -g joplin`
`sudo ln -s ~/.joplin-bin/bin/joplin /usr/bin/joplin`

3. Enter the following command to start Joplin Terminal:
`joplin`

By default, the application binary will be installed under `~/.joplin-bin`. You may change this directory if needed. Alternatively, if your npm permissions are setup as described [here](https://docs.npmjs.com/getting-started/fixing-npm-permissions#option-2-change-npms-default-directory-to-another-directory) (Option 2) then simply running `npm -g install joplin` would work. + +### Unsupported methods + +There are other ways to install the terminal application. However, they are not supported and problems must be reported to the upstream projects. + +Operating system | Method +-----------------|---------------- +Arch Linux | An Arch Linux package is available [here](https://aur.archlinux.org/packages/joplin/). To install it, use an AUR wrapper such as yay: `yay -S joplin`. Both the CLI tool (type `joplin`) and desktop app (type `joplin-desktop`) are packaged. You can also install a compiled version with the [chaotic-aur](https://wiki.archlinux.org/index.php/Unofficial_user_repositories#chaotic-aur) repository. For support, please go to the [GitHub repo](https://github.com/masterkorp/joplin-pkgbuild). + +## Usage + +To start the application type `joplin`. This will open the user interface, which has three main panes: Notebooks, Notes and the text of the current note. There are also additional panels that can be toggled on and off via [shortcuts](#shortcuts). + + + +### Input modes + +Joplin user interface is partly based on the text editor Vim and offers two different modes to interact with the notes and notebooks: + +#### Normal mode + +Allows moving from one pane to another using the `Tab` and `Shift-Tab` keys, and to select/view notes using the arrow keys. Text area can be scrolled using the arrow keys too. Press `Enter` to edit a note. Various other [shortcuts](#shortcuts) are available. + +#### Command-line mode + +Press `:` to enter command line mode. From there, the Joplin commands such as `mknote` or `search` are available. See the [full list of commands](#commands). + +It is possible to refer to a note or notebook by title or ID. However the simplest way is to refer to the currently selected item using one of these shortcuts: + +Shortcut | Description +---------|------------ +`$n` | Refers to the currently selected note +`$b` | Refers to the currently selected notebook +`$c` | Refers to the currently selected item. For example, if the note list is current active, `$c` will refer to the currently selected note. + +**Examples:** + +Create a new note with title "Wednesday's meeting": + + mknote "Wednesday's meeting" + +Create a new to-do: + + mktodo "Buy bread" + +Move the currently selected note ($n) to the notebook with title "Personal" + + mv $n "Personal" + +Rename the currently selected notebook ($b) to "Something": + + ren $b "Something" + +Attach a local file to the currently selected note ($n): + + attach $n /home/laurent/pictures/Vacation12.jpg + +The configuration can also be changed from command-line mode. For example, to change the current editor to Sublime Text: + + config editor "subl -w" + +### Editing a note + +To edit a note, select it and press `ENTER`. Or, in command-line mode, type `edit $n` to edit the currently selected note, or `edit "Note title"` to edit a particular note. + +### Getting help + +The complete usage information is available from command-line mode, by typing one of these commands: + +Command | Description +--------|------------------- +`help` | General help information +`help keymap` | Lists the available shortcuts +`help [command]` | Displays information about a particular command + +If the help is not fully visible, press `Tab` multiple times till the console is in focus and use the arrow keys or page up/down to scroll the text. + +For general information relevant to all the applications, see also [Joplin home page](https://joplinapp.org). + +## Importing notes from Evernote + +To import Evernote data, follow these steps: + +* First, export your Evernote notebooks to ENEX files as described [here](https://help.evernote.com/hc/en-us/articles/209005557-How-to-back-up-export-and-restore-import-notes-and-notebooks). +* In Joplin, in [command-line mode](#command-line-mode), type `import /path/to/file.enex`. This will import the notes into a new notebook named after the filename. +* Then repeat the process for each notebook that needs to be imported. + +## Synchronisation + +One of the goals of Joplin is to avoid being tied to any particular company or service, whether it is Evernote, Google or Microsoft. As such the synchronisation is designed without any hard dependency to any particular service. Most of the synchronisation process is done at an abstract level and access to external services, such as Nextcloud or Dropbox, is done via lightweight drivers. It is easy to support new services by creating simple drivers that provide a filesystem-like interface, i.e. the ability to read, write, delete and list items. It is also simple to switch from one service to another. + +Currently, synchronisation is possible with Joplin Cloud, Nextcloud, S3, WebDAV, Dropbox, OneDrive or the local filesystem. To enable synchronisation please follow the instructions below. After that, the application will synchronise in the background whenever it is running, or you can click on "Synchronise" to start a synchronisation manually. Joplin will background sync automatically after any content change is made on the local application. + +If the **terminal client** has been installed, it is possible to also synchronise outside of the user interface by typing `joplin sync` from the terminal. This can be used to setup a cron script to synchronise at a regular interval. For example, this would do it every 30 minutes: + + */30 * * * * /path/to/joplin sync + +### Nextcloud synchronisation + +You will need to set the `sync.target` config variable and all the `sync.5.path`, `sync.5.username` and `sync.5.password` config variables to, respectively the Nextcloud WebDAV URL, your username and your password. This can be done from the command line mode using: + + :config sync.target 5 + :config sync.5.path https://example.com/nextcloud/remote.php/webdav/Joplin + :config sync.5.username YOUR_USERNAME + :config sync.5.password YOUR_PASSWORD + +If synchronisation does not work, please consult the logs in the app profile directory (`~/.config/joplin`)- it is often due to a misconfigured URL or password. The log should indicate what the exact issue is. + +### WebDAV synchronisation + +Select the "WebDAV" synchronisation target and follow the same instructions as for Nextcloud above (for the **terminal application** you will need to select sync target 6 rather than 5). + +For WebDAV-compatible services that are known to work with Joplin see [WebDAV synchronisation](https://github.com/laurent22/joplin/blob/dev/readme/apps/sync/webdav.md). + + +### Dropbox synchronisation + +You will need to set the `sync.target` config variable from the command line mode using: + + :config sync.target 7 + +When syncing with Dropbox, Joplin creates a sub-directory in Dropbox, in `/Apps/Joplin` and read/write the notes and notebooks from it. The application does not have access to anything outside this directory. + +To initiate the synchronisation process, type `:sync`. You will be asked to follow a link to authorise the application. + +### Local filesystem synchronisation + +Local filesystem sync can be initiated after starting the joplin terminal app by using the [command-line mode](#command-line-mode) + + :config sync.target 2 + :config sync.2.path + +### OneDrive synchronisation + +When syncing with OneDrive, Joplin creates a sub-directory in OneDrive, in /Apps/Joplin and read/write the notes and notebooks from it. The application does not have access to anything outside this directory. + +To initiate the synchronisation process, type `:sync`. You will be asked to follow a link to authorise the application (simply input your Microsoft credentials - you do not need to register with OneDrive). + +## URLs + +When Ctrl+Clicking a URL (or opening with the shortcut 'o' while it is highlighted), most terminals will open that URL in the default browser. However, one issue, especially with long URLs, is that they can end up like this: + + + +Not only it makes the text hard to read, but the link, being cut in two, will also not be clickable. + +As a solution Joplin tries to start a mini-server in the background and, if successful, all the links will be converted to a much shorter URL: + + + +Since this is still an actual URL, the terminal will still make it clickable. And with shorter URLs, the text is more readable and the links unlikely to be cut. Both resources (files that are attached to notes) and external links are handled in this way. + +## Attachments / Resources + +In Markdown, links to resources are represented as a simple ID to the resource. In order to give access to these resources, they will be, like links, converted to local URLs. Clicking this link will then open a browser, which will handle the file - i.e. display the image, open the PDF file, etc. + +## Shell mode + +Commands can also be used directly from a shell. To view the list of available commands, type `joplin help all`. To reference a note, notebook or tag you can either use the ID (type `joplin ls -l` to view the ID) or by title. + +For example, this will create a new note "My note" in the notebook "My notebook": + + $ joplin mkbook "My notebook" + $ joplin use "My notebook" + $ joplin mknote "My note" + +To view the newly created note: + + $ joplin ls -l + fe889 07/12/2017 17:57 My note + +Give a new title to the note: + + $ joplin set fe889 title "New title" + +## Shortcuts + +There are two types of shortcuts: those that manipulate the user interface directly, such as `TAB` to move from one pane to another, and those that are simply shortcuts to actual commands. In a way similar to Vim, these shortcuts are generally a verb followed by an object. For example, typing `mn` ([m]ake [n]ote), is used to create a new note: it will switch the interface to command line mode and pre-fill it with `mknote ""` from where the title of the note can be entered. See below for the full list of default shortcuts: + + : enter_command_line_mode + TAB focus_next + SHIFT_TAB focus_previous + UP move_up + DOWN move_down + PAGE_UP page_up + PAGE_DOWN page_down + ENTER activate + DELETE, BACKSPACE delete + (SPACE) todo toggle $n + n next_link + b previous_link + o open_link + tc toggle_console + tm toggle_metadata + / search "" + mn mknote "" + mt mktodo "" + mb mkbook "" + yn cp $n "" + dn mv $n "" + +Shortcut can be configured by adding a keymap file to the profile directory in `~/.config/joplin/keymap.json`. The content of this file is a JSON array with each entry defining a command and the keys associated with it. + +As an example, this is the default keymap, but read below for a detailed explanation of each property. + +```json +[ + { "keys": [":"], "type": "function", "command": "enter_command_line_mode" }, + { "keys": ["TAB"], "type": "function", "command": "focus_next" }, + { "keys": ["SHIFT_TAB"], "type": "function", "command": "focus_previous" }, + { "keys": ["UP"], "type": "function", "command": "move_up" }, + { "keys": ["DOWN"], "type": "function", "command": "move_down" }, + { "keys": ["PAGE_UP"], "type": "function", "command": "page_up" }, + { "keys": ["PAGE_DOWN"], "type": "function", "command": "page_down" }, + { "keys": ["ENTER"], "type": "function", "command": "activate" }, + { "keys": ["DELETE", "BACKSPACE"], "type": "function", "command": "delete" }, + { "keys": [" "], "command": "todo toggle $n" }, + { "keys": ["n"], "type": "function", "command": "next_link" }, + { "keys": ["b"], "type": "function", "command": "previous_link" }, + { "keys": ["o"], "type": "function", "command": "open_link" }, + { "keys": ["tc"], "type": "function", "command": "toggle_console" }, + { "keys": ["tm"], "type": "function", "command": "toggle_metadata" }, + { "keys": ["/"], "type": "prompt", "command": "search \"\"", "cursorPosition": -2 }, + { "keys": ["mn"], "type": "prompt", "command": "mknote \"\"", "cursorPosition": -2 }, + { "keys": ["mt"], "type": "prompt", "command": "mktodo \"\"", "cursorPosition": -2 }, + { "keys": ["mb"], "type": "prompt", "command": "mkbook \"\"", "cursorPosition": -2 }, + { "keys": ["yn"], "type": "prompt", "command": "cp $n \"\"", "cursorPosition": -2 }, + { "keys": ["dn"], "type": "prompt", "command": "mv $n \"\"", "cursorPosition": -2 } +] +``` + +Each entry can have the following properties: + +Name | Description +-----|------------ +`keys` | The array of keys that will trigger the action. Special keys such as page up, down arrow, etc. needs to be specified UPPERCASE. See the [list of available special keys](https://github.com/cronvel/terminal-kit/blob/3114206a9556f518cc63abbcb3d188fe1995100d/lib/termconfig/xterm.js#L531). For example, `['DELETE', 'BACKSPACE']` means the command will run if the user pressed either the delete or backspace key. Key combinations can also be provided - in that case specify them lowercase. For example "tc" means that the command will be executed when the user pressed "t" then "c". Special keys can also be used in this fashion - simply write them one after the other. For instance, `CTRL_WCTRL_W` means the action would be executed if the user pressed "ctrl-w ctrl-w". +`type` | The command type. It can have the value "exec", "function" or "prompt". **exec**: Simply execute the provided [command](#commands). For example `edit $n` would edit the selected note. **function**: Run a special commands (see below for the list of functions). **prompt**: A bit similar to "exec", except that the command is not going to be executed immediately - this allows the user to provide additional data. For example `mknote ""` would fill the command line with this command and allow the user to set the title. A prompt command can also take a `cursorPosition` parameter (see below) +`command` | The command that needs to be executed +`cursorPosition` | An integer. For prompt commands, tells where the cursor (caret) should start at. This is convenient for example to position the cursor between quotes. Use a negative value to set a position starting from the end. A value of "0" means positioning the caret at the first character. A value of "-1" means positioning it at the end. + +This is the list of special functions: + +Name | Description +-----|------------ +enter_command_line_mode | Enter command line mode +focus_next | Focus next pane (or widget) +focus_previous | Focus previous pane (or widget) +move_up | Move up (in a list for example) +move_down | Move down (in a list for example) +page_up | Page up +page_down | Page down +next_link | Select the next link in the currently opened note (the first link will be selected if no link is currently selected) +previous_link | Select the previous link in the currently opened note (the last link will be selected if no link is currently selected) +open_link | Open the currently selected link externally +activate | Activates the selected item. If the item is a note for example it will be open in the editor +delete | Deletes the selected item +toggle_console | Toggle the console +toggle_metadata | Toggle note metadata + +## Commands + +The following commands are available in [command-line mode](#command-line-mode): + +```plaintext +attach + + Attaches the given file to the note. + +batch + + Runs the commands contained in the text file. There should be one command + per line. + +cat + + Displays the given note. + + -v, --verbose Displays the complete information about note. + +config [name] [value] + + Gets or sets a config value. If [value] is not provided, it will show the + value of [name]. If neither [name] nor [value] is provided, it will list + the current configuration. + + -v, --verbose Also displays unset and hidden config variables. + --export Writes all settings to STDOUT as JSON including + secure variables. + --import Reads in JSON formatted settings from STDIN. + --import-file Reads in settings from . must contain + valid JSON. + +Possible keys/values: + + sync.target Synchronisation target. + The target to synchronise to. Each sync + target may have additional parameters which + are named as `sync.NUM.NAME` (all + documented below). + Type: Enum. + Possible values: 0 ((None)), 2 (File + system), 3 (OneDrive), 5 (Nextcloud), 6 + (WebDAV), 7 (Dropbox), 8 (S3 (Beta)), 9 + (Joplin Server (Beta)), 10 (Joplin Cloud). + Default: 0 + + sync.2.path Directory to synchronise with (absolute + path). + 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: + https://joplinapp.org/faq/ + Type: string. + + sync.5.path Nextcloud WebDAV URL. + 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: + https://joplinapp.org/faq/ + Type: string. + + sync.5.username Nextcloud username. + Type: string. + + sync.5.password Nextcloud password. + Type: string. + + sync.6.path WebDAV URL. + 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: + https://joplinapp.org/faq/ + Type: string. + + sync.6.username WebDAV username. + Type: string. + + sync.6.password WebDAV password. + Type: string. + + sync.8.path AWS S3 bucket. + 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: + https://joplinapp.org/faq/ + Type: string. + + sync.8.url AWS S3 URL. + Type: string. + Default: "https://s3.amazonaws.com/" + + sync.8.region AWS region. + Type: string. + + sync.8.username AWS access key. + Type: string. + + sync.8.password AWS secret key. + Type: string. + + sync.8.forcePathStyle Force path style. + Type: bool. + Default: false + + sync.9.path Joplin Server URL. + 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: + https://joplinapp.org/faq/ + Type: string. + + sync.9.username Joplin Server email. + Type: string. + + sync.9.password Joplin Server password. + Type: string. + + sync.10.username Joplin Cloud email. + Type: string. + + sync.10.password Joplin Cloud password. + Type: string. + + sync.maxConcurrentConnections Max concurrent connections. + Type: int. + Default: 5 + + locale Language. + Type: Enum. + Possible values: ar (Arabic (93%)), eu + (Basque (27%)), bs_BA (Bosnian (Bosna i + Hercegovina) (67%)), bg_BG (Bulgarian + (България) (53%)), ca (Catalan (93%)), + hr_HR (Croatian (Hrvatska) (97%)), cs_CZ + (Czech (Česká republika) (89%)), da_DK + (Dansk (Danmark) (97%)), de_DE (Deutsch + (Deutschland) (97%)), et_EE (Eesti Keel + (Eesti) (51%)), en_GB (English (United + Kingdom) (100%)), en_US (English (United + States of America) (100%)), es_ES (Español + (España) (93%)), eo (Esperanto (30%)), + fi_FI (Finnish (Suomi) (93%)), fr_FR + (Français (France) (100%)), gl_ES (Galician + (España) (34%)), id_ID (Indonesian + (Indonesia) (92%)), it_IT (Italiano + (Italia) (90%)), hu_HU (Magyar + (Magyarország) (78%)), nl_BE (Nederlands + (België, Belgique, Belgien) (81%)), nl_NL + (Nederlands (Nederland) (85%)), nb_NO + (Norwegian (Norge, Noreg) (90%)), fa + (Persian (64%)), pl_PL (Polski (Polska) + (84%)), pt_BR (Português (Brasil) (94%)), + pt_PT (Português (Portugal) (84%)), ro + (Română (59%)), sl_SI (Slovenian + (Slovenija) (93%)), sv (Svenska (97%)), + th_TH (Thai (ประเทศไทย) (43%)), vi (Tiếng + Việt (90%)), tr_TR (Türkçe (Türkiye) + (93%)), uk_UA (Ukrainian (Україна) (83%)), + el_GR (Ελληνικά (Ελλάδα) (87%)), ru_RU + (Русский (Россия) (93%)), sr_RS (српски + језик (Србија) (76%)), zh_CN (中文 (简体) + (97%)), zh_TW (中文 (繁體) (90%)), ja_JP (日本語 + (日本) (98%)), ko (한국어 (89%)). + Default: "en_GB" + + dateFormat Date format. + Type: Enum. + Possible values: DD/MM/YYYY (30/01/2017), + DD/MM/YY (30/01/17), MM/DD/YYYY + (01/30/2017), MM/DD/YY (01/30/17), + YYYY-MM-DD (2017-01-30), DD.MM.YYYY + (30.01.2017), YYYY.MM.DD (2017.01.30), + YYMMDD (170130), YYYY/MM/DD (2017/01/30). + Default: "DD/MM/YYYY" + + timeFormat Time format. + Type: Enum. + Possible values: HH:mm (20:30), h:mm A + (8:30 PM). + Default: "HH:mm" + + uncompletedTodosOnTop Uncompleted to-dos on top. + Type: bool. + Default: true + + showCompletedTodos Show completed to-dos. + Type: bool. + Default: true + + notes.sortOrder.field Sort notes by. + Type: Enum. + Possible values: user_updated_time (Updated + date), user_created_time (Created date), + title (Title), order (Custom order). + Default: "user_updated_time" + + notes.sortOrder.reverse Reverse sort order. + Type: bool. + Default: true + + folders.sortOrder.field Sort notebooks by. + Type: Enum. + Possible values: title (Title), + last_note_user_updated_time (Updated date). + Default: "title" + + folders.sortOrder.reverse Reverse sort order. + Type: bool. + Default: false + + trackLocation Save geo-location with notes. + Type: bool. + Default: true + + sync.interval Synchronisation interval. + Type: Enum. + Possible values: 0 (Disabled), 300 (5 + minutes), 600 (10 minutes), 1800 (30 + minutes), 3600 (1 hour), 43200 (12 hours), + 86400 (24 hours). + Default: 300 + + editor Text editor command. + The editor command (may include arguments) + that will be used to open a note. If none + is provided it will try to auto-detect the + default editor. + Type: string. + + net.customCertificates Custom TLS certificates. + Comma-separated list of paths to + directories to load the certificates from, + or path to individual cert files. For + example: /my/cert_dir, /other/custom.pem. + Note that if you make changes to the TLS + settings, you must save your changes before + clicking on "Check synchronisation + configuration". + Type: string. + + net.ignoreTlsErrors Ignore TLS certificate errors. + Type: bool. + Default: false + + sync.wipeOutFailSafe Fail-safe. + Fail-safe: Do not wipe out local data when + sync target is empty (often the result of a + misconfiguration or bug) + Type: bool. + Default: true + + + revisionService.enabled Enable note history. + Type: bool. + Default: true + + revisionService.ttlDays Keep note history for. + Type: int. + Default: 90 + + layout.folderList.factor Notebook list growth factor. + The factor property sets how the item will + grow or shrink to fit the available space + in its container with respect to the other + items. Thus an item with a factor of 2 will + take twice as much space as an item with a + factor of 1.Restart app to see changes. + Type: int. + Default: 1 + + layout.noteList.factor Note list growth factor. + The factor property sets how the item will + grow or shrink to fit the available space + in its container with respect to the other + items. Thus an item with a factor of 2 will + take twice as much space as an item with a + factor of 1.Restart app to see changes. + Type: int. + Default: 1 + + layout.note.factor Note area growth factor. + The factor property sets how the item will + grow or shrink to fit the available space + in its container with respect to the other + items. Thus an item with a factor of 2 will + take twice as much space as an item with a + factor of 1.Restart app to see changes. + Type: int. + Default: 2 + +cp [notebook] + + Duplicates the notes matching to [notebook]. If no notebook is + specified the note is duplicated in the current notebook. + +done + + Marks a to-do as done. + +e2ee [path] + + Manages E2EE configuration. Commands are `enable`, `disable`, `decrypt`, + `status`, `decrypt-file`, and `target-status`. + + -p, --password Use this password as master password (For + security reasons, it is not recommended to use + this option). + -v, --verbose More verbose output for the `target-status` + command + -o, --output Output directory + --retry-failed-items Applies to `decrypt` command - retries + decrypting items that previously could not be + decrypted. + +edit + + Edit note. + +export + + Exports Joplin data to the given path. By default, it will export the + complete database including notebooks, notes, tags and resources. + + --format Destination format: jex (Joplin Export File), raw + (Joplin Export Directory), md (Markdown), + md_frontmatter (Markdown + Front Matter) + --note Exports only the given note. + --notebook Exports only the given notebook. + +geoloc + + Displays a geolocation URL for the note. + +help [command] + + Displays usage information. + +import [notebook] + + Imports data into Joplin. + + --format Source format: auto, jex, md, + md_frontmatter, raw, enex, enex + -f, --force Do not ask for confirmation. + --output-format Output format: md, html + +ls [note-pattern] + + Displays the notes in the current notebook. Use `ls /` to display the list + of notebooks. + + -n, --limit Displays only the first top notes. + -s, --sort Sorts the item by (eg. title, updated_time, + created_time). + -r, --reverse Reverses the sorting order. + -t, --type Displays only the items of the specific type(s). + Can be `n` for notes, `t` for to-dos, or `nt` for + notes and to-dos (eg. `-tt` would display only the + to-dos, while `-tnt` would display notes and + to-dos. + -f, --format Either "text" or "json" + -l, --long Use long list format. Format is ID, NOTE_COUNT (for + notebook), DATE, TODO_CHECKED (for to-dos), TITLE + +mkbook + + Creates a new notebook. + +mknote + + Creates a new note. + +mktodo + + Creates a new to-do. + +mv [notebook] + + Moves the notes matching to [notebook]. + +ren + + Renames the given (note or notebook) to . + +rmbook + + Deletes the given notebook. + + -f, --force Deletes the notebook without asking for confirmation. + +rmnote + + Deletes the notes matching . + + -f, --force Deletes the notes without asking for confirmation. + +server + + Start, stop or check the API server. To specify on which port it should + run, set the api.port config variable. Commands are (start|stop|status). + This is an experimental feature - use at your own risks! It is recommended + that the server runs off its own separate profile so that no two CLI + instances access that profile at the same time. Use --profile to specify + the profile path. + +set [value] + + Sets the property of the given to the given [value]. + Possible properties are: + + parent_id (text), title (text), body (text), created_time (int), + updated_time (int), is_conflict (int), latitude (numeric), longitude + (numeric), altitude (numeric), author (text), source_url (text), is_todo + (int), todo_due (int), todo_completed (int), source (text), + source_application (text), application_data (text), order (numeric), + user_created_time (int), user_updated_time (int), encryption_cipher_text + (text), encryption_applied (int), markup_language (int), is_shared (int), + share_id (text), conflict_original_id (text), master_key_id (text) + +status + + Displays summary about the notes and notebooks. + +sync + + Synchronises with remote storage. + + --target Sync to provided target (defaults to sync.target + config value) + --upgrade Upgrade the sync target to the latest version. + --use-lock Disable local locks that prevent multiple clients from + synchronizing at the same time (Default = 1) + +tag [tag] [note] + + can be "add", "remove", "list", or "notetags" to assign or + remove [tag] from [note], to list notes associated with [tag], or to list + tags associated with [note]. The command `tag list` can be used to list + all the tags (use -l for long option). + + -l, --long Use long list format. Format is ID, NOTE_COUNT (for notebook), + DATE, TODO_CHECKED (for to-dos), TITLE + +todo + + can either be "toggle" or "clear". Use "toggle" to toggle + the given to-do between completed and uncompleted state (If the target is + a regular note it will be converted to a to-do). Use "clear" to convert + the to-do back to a regular note. + +undone + + Marks a to-do as non-completed. + +use + + Switches to [notebook] - all further operations will happen within this + notebook. + +version + + Displays version information +``` + +## License + +Copyright (c) 2016-2023 Laurent Cozic + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/BUILD.md b/readme/dev/BUILD.md similarity index 97% rename from BUILD.md rename to readme/dev/BUILD.md index 0c9dd0194d..8e3024911f 100644 --- a/BUILD.md +++ b/readme/dev/BUILD.md @@ -98,6 +98,6 @@ It still requires you to quit the application each time you want it to rebuild, 2. Switch to the Electron app and cmd+Q to quit it. 3. `watchman` immediately restarts the app for you (whereas usually you'd have to switch back to the terminal, type `"yarn start"`, and hit enter). -# Troubleshooting +## Troubleshooting -Please read for the [Build Troubleshooting Document](https://github.com/laurent22/joplin/blob/dev/readme/build_troubleshooting.md) for various tips on how to get the build working. +Please read for the [Build Troubleshooting Document](https://github.com/laurent22/joplin/blob/dev/readme/dev/build_troubleshooting.md) for various tips on how to get the build working. diff --git a/DEPLOY.md b/readme/dev/DEPLOY.md similarity index 100% rename from DEPLOY.md rename to readme/dev/DEPLOY.md diff --git a/readme/dev/_category_.yml b/readme/dev/_category_.yml new file mode 100644 index 0000000000..3395dbd780 --- /dev/null +++ b/readme/dev/_category_.yml @@ -0,0 +1,4 @@ +position: 3 +label: 'Development' +collapsible: true +collapsed: true \ No newline at end of file diff --git a/readme/build_troubleshooting.md b/readme/dev/build_troubleshooting.md similarity index 96% rename from readme/build_troubleshooting.md rename to readme/dev/build_troubleshooting.md index 088f140c6a..e451cc564f 100644 --- a/readme/build_troubleshooting.md +++ b/readme/dev/build_troubleshooting.md @@ -1,6 +1,8 @@ -# Desktop application +# Build troubleshooting -## On Windows +## Desktop application + +### On Windows If `yarn dist` fails, it may need administrative rights. @@ -13,7 +15,7 @@ call "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliar set "PATH=C:\Program Files\nodejs;%PATH%" ``` -## On Linux and macOS +### On Linux and macOS If there's an error `while loading shared libraries: libgconf-2.so.4: cannot open shared object file: No such file or directory`, run `sudo apt-get install libgconf-2-4` @@ -31,7 +33,7 @@ Try `sudo apt install python` (or the `apt` equivalent for your operating system If you get the error `libtool: unrecognized option '-static'`, follow the instructions [in this post](https://stackoverflow.com/a/38552393/561309) to use the correct libtool version. -## Other issues +### Other issues > The application window doesn't open or is white @@ -48,9 +50,9 @@ This is an indication that there's an early initialisation error. Try this: So everything should be done from a Windows Command prompt or Windows PowerShell running as Administrator. All build and start commands are designed to work cross-platform, including on Windows. -# Mobile application +## Mobile application -## iOS +### iOS If there is an error `/joplin/packages/app-mobile/ios/Pods/Target Support Files/Pods-Joplin/Pods-Joplin.debug.xcconfig: unable to open file (in target "Joplin" in project "Joplin") (in target 'Joplin' from project 'Joplin')` run the following commands: diff --git a/readme/coding_style.md b/readme/dev/coding_style.md similarity index 90% rename from readme/coding_style.md rename to readme/dev/coding_style.md index c4ff30bad0..4d510b836d 100644 --- a/readme/coding_style.md +++ b/readme/dev/coding_style.md @@ -2,7 +2,7 @@ Coding style is mostly enforced by a pre-commit hook that runs `eslint`. This hook is installed whenever running `yarn install` on any of the application directory. If for some reason the pre-commit hook didn't get installed, you can manually install it by running `yarn install` at the root of the repository. -## Enforcing rules using eslint +### Enforcing rules using eslint Whenever possible, coding style should be enforced using an eslint rule. To do so, add the relevant rule or plugin to `eslintrc.js`. To manually run the linter, run `yarn run linter ./` from the root of the project. @@ -12,9 +12,9 @@ When adding a rule, you will often find that many files will no longer pass the - Or use `yarn run linter-interactive ./` to disable existing errors. The interactive tool will process all the files and you can then choose to disable any existing error that it finds (by adding a `eslint-disable-next-line` comment above it). This allows keeping the existing, working codebase as it is, and enforcing that new code follows the rule. When using this method, add the comment "Old code before rule was applied" so that we can easily find back all the lines that have been automatically disabled. -## Use TypeScript for new files +### Use TypeScript for new files -### Creating a new `.ts` file +#### Creating a new `.ts` file Because the TypeScript compiler generates `.js` files, be sure to add these new `.js` files to `.eslintignore` and `.gitignore`. @@ -22,17 +22,17 @@ To do this, 1. If the TypeScript compiler has already generated a `.js` file for the new `.ts` file, delete it. 2. Run `yarn run updateIgnored` in the root directory of the project (or `yarn run postinstall`) -### Convert existing `.js` files to TypeScript before modifying +#### Convert existing `.js` files to TypeScript before modifying Even if you are **modifying** a file that was originally in JavaScript you should ideally convert it first to TypeScript before modifying it. If this is a large file however please ask first if it needs to be converted. Some very old and large JS files are tricky to convert properly due to poorly defined types, so in some cases it's better to leave that for another day (or another PR). -### Prefer `import` to `require` +#### Prefer `import` to `require` In TypeScript files prefer `import` to `require` so that we can benefit from type-checking. If it does not work, you may have to add the type using `yarn add @types/NAME_OF_PACKAGE`. If you are trying to import an old package, it may not have TypeScript types and in this case using `require()` is acceptable. -### Avoid inline types +#### Avoid inline types In general please define types separately as it improves readability and it means the type can be re-used. @@ -52,7 +52,7 @@ const config: Config = { } ``` -### Don't set the type when it can be inferred +#### Don't set the type when it can be inferred TypeScript can automatically detect the type so setting it explicitely in many cases is not needed, and makes the code unecessary verbose. We already have enabled the eslint rule `no-inferrable-types`, however it only applies to simple types such as string, number, etc. but not to function calls. @@ -74,7 +74,7 @@ const getSomething() => { const timestamp = Date.now(); ``` -## Filenames +### Filenames * `camelCase.ts`: Files that export multiple things. * Example: [`checkForUpdates.ts`](https://github.com/laurent22/joplin/blob/dev/packages/app-desktop/checkForUpdates.ts) @@ -83,7 +83,7 @@ const timestamp = Date.now(); * Example : [`types.ts`](https://github.com/laurent22/joplin/blob/dev/packages/server/src/utils/types.ts) -## Use the same case for imported and exported members +### Use the same case for imported and exported members If you create a file that exports a single function called `processData()`, the file should be named `processData.ts`. When importing, it should be imported as `processData`, too. Basically, be consistent with naming, even though JS allows things to be named differently. @@ -115,7 +115,7 @@ processData(); ... ``` -## Only import what you need +### Only import what you need Only import what you need so that we can potentially benefit from [tree shaking](https://webpack.js.org/guides/tree-shaking/) if we ever implement it. @@ -133,7 +133,7 @@ import { writeFile } from 'fs-extra'; writeFile('example.md', 'example'); ``` -## Use `camelCase` for `const`ants in new code +### Use `camelCase` for `const`ants in new code **BAD:** ```ts @@ -146,7 +146,7 @@ const GRAVITY_ACCEL = 9.8; const gravityAccel = 9.8; ``` -## Declare variables just before their usage +### Declare variables just before their usage **BAD:** ```ts @@ -181,10 +181,10 @@ foo += Math.sin(bar + Math.tan(foo)); Don't allow this to lead to duplicate code, however. If constants are used multiple times, it's okay to declare them at the top of a file or in a separate, imported file. -## Prefer `const` to `let` (where possible) +### Prefer `const` to `let` (where possible) -## Prefer `() => {}` to `function() { ... }` +### Prefer `() => {}` to `function() { ... }` Doing this avoids having to deal with the `this` keyword. Not having it makes it easier to refactor class components into React Hooks, because any use of `this` (used in classes) will be correctly detected as invalid by TypeScript. @@ -203,16 +203,16 @@ const foo = () => { }; ``` -### See also +#### See also * [Frontend Armory — When should I use arrow functions with React?](https://frontarm.com/james-k-nelson/when-to-use-arrow-functions/) -## Avoid default and optional parameters +### Avoid default and optional parameters As much as possible, avoid default parameters in **function definitions** and optional fields in **interface definitions**. When all parameters are required, it is much easier to refactor the code because the compiler will automatically catch any missing parameters. -## Escape variables +### Escape variables [XSS](https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html) is one of the most common vulnerabilities in today's code. These vulnerabilities are often difficult to spot because they are not errors, they often won't fail any test units and the program will work just fine with 99% of input. Yet that remaining 1% can be exploited and used to steal user information, crash the app, etc. @@ -224,7 +224,7 @@ Finally, escaping data is often required to prevent markup code from breaking. F How you escape the data depends on where you are going to insert it so there's no single function that's going to cover all cases. -### To insert into a JS script +#### To insert into a JS script Use `JSON.stringify()`. For example: @@ -232,7 +232,7 @@ Use `JSON.stringify()`. For example: const jsCode = `const data = ${JSON.stringify(dynamicallyGeneratedData)};` ``` -### To insert into an HTML string +#### To insert into an HTML string You need to convert special characters to HTML entities, which we usually do using the `html-entities` package. For example: @@ -245,7 +245,7 @@ const htmlentities = new Entities().encode; const html = `${htmlentities(content)}`; ``` -### To insert into a URL +#### To insert into a URL It depends on what you're trying to do. To insert a query parameter, use `encodeURIComponent` @@ -260,7 +260,7 @@ encodeURI('https://domain.com/path to a document.pdf'); // 'https://domain.com/path%20to%20a%20document.pdf' ``` -### To insert into Markdown code +#### To insert into Markdown code Use the provided escape functions in `lib/markdownUtils`: @@ -272,7 +272,7 @@ Use the provided escape functions in `lib/markdownUtils`: const markdown = `[${markdownUtils.escapeTitleText(linkTitle)}](${markdownUtils.escapeLinkUrl(linkUrl)})`; ``` -### Escape as late as possible +#### Escape as late as possible Ideally the application should only deal with raw, unencoded data, so it means data should be decoded and encoded at the application boundaries. Doing so means we avoid accidentally double-escaping data, or having to encode/decode within the app, which is error prone. @@ -306,7 +306,7 @@ parameters.other = otherParam; const url = `https://example.com?${new URLSearchParams(parameters).toString()}` ``` -### Make wrong code look wrong +#### Make wrong code look wrong To name variables that are already escaped we used the technique described in "[Make wrong code look wrong](https://www.joelonsoftware.com/2005/05/11/making-wrong-code-look-wrong/)". We add a suffix to indicate the content of the variable and to make it clear it has already been escaped. It means that the code will look wrong if a variable is inserted in a string and it does not have a suffix. For example: @@ -345,9 +345,9 @@ const html = `
${userContentHtml}
` // string. ``` -# React +## React -## Use function components for new code +### Use function components for new code New code should use [React Hooks](https://reactjs.org/docs/hooks-intro.html) and `function` components, rather than objects that extend `Component`. @@ -375,25 +375,25 @@ const Example = (props: { text: string }) => { ); }; ``` -## Use react [custom hooks](https://reactjs.org/docs/hooks-custom.html) to simplify long code +### Use react [custom hooks](https://reactjs.org/docs/hooks-custom.html) to simplify long code If `eslint` gives an error about `useFoo` being called outside of a component, be sure [the custom hook is titled appropriately](https://stackoverflow.com/a/55862839). -# Database +## Database -## Use snake_case +### Use snake_case We use `snake_case` for table names and column names. -## Everything is NOT NULL +### Everything is NOT NULL All columns should be defined as `NOT NULL`, possibly with a default value (but see below). This helps keeping queries more simple as we don't have to do check for both `NULL` and `0` or empty string. -## Use defaults sparingly +### Use defaults sparingly Don't automatically give a default valuet to a column - in many cases it's better to require the user to explicitly set the value, otherwise it will be set to a default they might not know about or want. Exceptions can be less important columns, things like timestamp, or columns that are going to be set by the system. -## Use an integer for enum-like values +### Use an integer for enum-like values If a column can be set to a fixed number of values, please set the type to integer. In code, you would then have a TypeScript enum that defines what each values is for. For example: @@ -407,17 +407,17 @@ export enum Action { We don't use built-in database enums because they make migrations difficult. They provide added readability when accessing the database directly, but it is not worth the extra trouble. -## Prefer using `tinyint(1)` to `bool` +### Prefer using `tinyint(1)` to `bool` Booleans are not a distinct types in many common DBMS, including SQLite (which we use) and MySQL, so prefer using a `tinyint(1)` instead. -# Web requests and API +## Web requests and API -## Use `snake_case` +### Use `snake_case` We use `snake_case` for end points and query parameters. -# See also -## **Other** projects' style guides +## See also +### **Other** projects' style guides We aren't using these guides, but they may still be helpful! * [TypeScript Deep Dive — Style Guide](https://basarat.gitbook.io/typescript/styleguide) @@ -426,9 +426,9 @@ We aren't using these guides, but they may still be helpful! * [Javascript standardstyle](https://standardjs.com/rules.html) * Possibly useful for adding to `.eslintrc.js`: lists `eslint` configuration flags for each of their suggestions -## Posts/resources related to Joplin's style +### Posts/resources related to Joplin's style * Forum Post: [Troubleshooting FAQ and collecting topic for contributing to Joplin codebase](https://discourse.joplinapp.org/t/troubleshooting-faq-and-collecting-topic-for-contributing-to-joplin-codebase/6501) * Forum Post: [How to style your code](https://discourse.joplinapp.org/t/how-to-style-your-code/6502) - * GSoC: [GSoC 2022 pull request guidelines](gsoc2022/pull_request_guidelines.md) + * GSoC: [GSoC 2022 pull request guidelines](https://github.com/laurent22/joplin/blob/dev/readme/dev/gsoc/gsoc2022/pull_request_guidelines.md) * GitHub: [`.eslintrc.js`](https://github.com/laurent22/joplin/blob/dev/.eslintrc.js) diff --git a/readme/dev/gsoc/_category_.yml b/readme/dev/gsoc/_category_.yml new file mode 100644 index 0000000000..16d0d141d9 --- /dev/null +++ b/readme/dev/gsoc/_category_.yml @@ -0,0 +1,4 @@ +position: 2 +label: 'Google Summer of Code' +collapsible: true +collapsed: true \ No newline at end of file diff --git a/readme/gsoc2020/ideas.md b/readme/dev/gsoc/gsoc2020/ideas.md similarity index 96% rename from readme/gsoc2020/ideas.md rename to readme/dev/gsoc/gsoc2020/ideas.md index be7c21e372..4d6786b204 100644 --- a/readme/gsoc2020/ideas.md +++ b/readme/dev/gsoc/gsoc2020/ideas.md @@ -1,18 +1,18 @@ # GSoC 2020 Ideas -2020 is Joplin first round at Google Summer of Code. Detailed information on how to get involved and apply are given in the [general Summer of Code introduction](https://joplinapp.org/gsoc2020/) +2020 is Joplin first round at Google Summer of Code. Detailed information on how to get involved and apply are given in the [general Summer of Code introduction](https://joplinapp.org/help/dev/gsoc/gsoc2020) **These are all proposals! We are open to new ideas you might have!!** Do you have an awesome idea you want to work on with Joplin but that is not among the ideas below? That's cool. We love that! But please do us a favour: Get in touch with a mentor early on and make sure your project is realistic and within the scope of Joplin. -# Information for Students +## Information for Students These ideas were contributed by our developers and users. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, you are urged to contact the developers and find out more about the particular suggestion you're looking at. Becoming accepted as a Google Summer of Code student is quite competitive. Accepted students typically have thoroughly researched the technologies of their proposed project and have been in frequent contact with potential mentors. **Simply copying and pasting an idea here will not work.** On the other hand, creating a completely new idea without first consulting potential mentors rarely works. -# List of ideas +## List of ideas -## 1. Support for multiple profiles +### 1. Support for multiple profiles The applications should support multiple profiles so that, for example, one can have a "work" profile and a "personal" profile. This will also make it easier to share notes: for example a "work project" profile could be created and shared with co-workers via sync. @@ -30,7 +30,7 @@ Potential Mentor(s): [tessus](https://github.com/tessus), [laurent22](https://gi More info: [GitHub issue](https://github.com/laurent22/joplin/issues/591), [Forum Thread](https://discourse.joplinapp.org/t/can-i-run-a-second-instance-of-joplin/110) -## 2. Collaboration via Nextcloud +### 2. Collaboration via Nextcloud We need a way to share notes with other users, and to collaborate on notes. This is useful for companies, to collaborate on projects for example, but also for individual users when they want to share their notes with other people. @@ -50,7 +50,7 @@ Potential Mentor(s): [Roeland Jago Douma](mailto:roeland.douma@nextcloud.com), [ More info: [Forum thread about Joplin Web API for Nextcloud](https://discourse.joplinapp.org/t/joplin-web-api-for-nextcloud/4491) -## 3. Hierarchical Tags +### 3. Hierarchical Tags One of the most asked-for feature in Joplin is support for hierarchical tags. This would allow users that heavily rely on tags to organise them into a hierarchy, as is done for the notebooks. @@ -66,7 +66,7 @@ Potential Mentor(s): [laurent22](https://github.com/laurent22/) More info: [GitHub issue](https://github.com/laurent22/joplin/issues/375) -## 4. Sharing on mobile +### 4. Sharing on mobile The mobile application allows sharing text from any application to Joplin. However it is not currently possible to share images or to share selected text with Joplin. We would like to allow sharing an image or file from any application to Joplin. And to allow selecting some text in an application (in a browser for instance) and share it with Joplin @@ -82,7 +82,7 @@ Potential Mentor(s): [CalebJohn](https://github.com/CalebJohn/), [laurent22](htt More info: [Mobile - Add share menu #876](https://github.com/laurent22/joplin/issues/876) -## 5. Web client for Nextcloud +### 5. Web client for Nextcloud There is the community's wish to have the notes integrated Nextcloud, so that Notes can be sought by Nextcloud itself. Although this idea focuses on Nextcloud it shall allow to extend it to other collaboration applications going beyond the current scope of [Synchronisation](https://joplinapp.org/help/#synchronisation). There is already the [web application](https://github.com/foxmask/joplin-web) what may used as a starting point, but it is also fine to start from scratch. @@ -103,7 +103,7 @@ Potential Mentor(s): [Roeland Jago Douma](mailto:roeland.douma@nextcloud.com), [ More info: [GitHub: Nextcloud notes integration (Web client)](https://github.com/laurent22/joplin/issues/228) -## 6. OCR support +### 6. OCR support It is possible to add support for OCR content in Joplin via the [Tesseract library](http://tesseract.projectnaptha.com/). A first step would be to assess the feasibility of this project by integrating the lib in the desktop app and trying to OCR an image. OCR support should be implemented as a service of the desktop app. It would extract the text from the images, and append the content as plain text to the notes. @@ -115,7 +115,7 @@ Skills Required: JavaScript Potential Mentor(s): [CalebJohn](https://github.com/CalebJohn/), [laurent22](https://github.com/laurent22/) -## 7. Password-protected notes +### 7. Password-protected notes We would like to add an option to allow encrypting a note or a notebook with a password. When opening the note, the password must be provided to reveal the content. @@ -127,7 +127,7 @@ Skills Required: JavaScript; React Potential Mentor(s): [PackElend](https://github.com/PackElend), [laurent22](https://github.com/laurent22/) -## 8. Search +### 8. Search The current search engine is built on top of SQLite FTS. An index of the notes is built and this is what is used by FTS when searching. @@ -153,7 +153,7 @@ Potential Mentor(s): [laurent22](https://github.com/laurent22/) More info: [Search engine improvements](https://github.com/laurent22/joplin/issues/1877) -## 9. WYSIWYG Editor +### 9. WYSIWYG Editor The current editor shows the Markdown text on the left side and the rendered HTML on the right side (a split view). We would like to add another editor option, which would be a WYSIWYG editor, where the user can directly edit formatted text. This would not replace the split view but rather be an alternative editor and the user can choose either split view or WYSIWYG. @@ -167,7 +167,7 @@ Potential Mentor(s): [CalebJohn](https://github.com/CalebJohn/), [PackElend](htt More info: [WYSIWYG thread on the forum](https://discourse.joplinapp.org/t/wysiwyg-editor-in-joplin/2253) -## 10. Custom keyboard shortcuts +### 10. Custom keyboard shortcuts The CLI application allows setting custom keyboard shortcuts, however this feature is currently missing from the desktop application. We would like to let the user set shortcuts for the menu items in particular, but also potentially any other Joplin action. There should be a shortcut editor in the Config panel to do this. diff --git a/readme/gsoc2020/index.md b/readme/dev/gsoc/gsoc2020/index.md similarity index 99% rename from readme/gsoc2020/index.md rename to readme/dev/gsoc/gsoc2020/index.md index c32650312d..d024681f48 100644 --- a/readme/gsoc2020/index.md +++ b/readme/dev/gsoc/gsoc2020/index.md @@ -23,7 +23,7 @@ The GUI's, as listed on the [Joplin's website](https://joplinapp.org/help/#insta More details can be found on: -- [How to contribute](https://github.com/laurent22/joplin/blob/dev/CONTRIBUTING.md) +- [How to contribute](https://github.com/laurent22/joplin/blob/dev/readme/dev/index.md) - [How to build](https://github.com/laurent22/joplin/blob/dev/BUILD.md) Moreover there are community driven projects such as: diff --git a/readme/gsoc2021/ideas.md b/readme/dev/gsoc/gsoc2021/ideas.md similarity index 92% rename from readme/gsoc2021/ideas.md rename to readme/dev/gsoc/gsoc2021/ideas.md index c5cabbc7ed..fe8d5bfac0 100644 --- a/readme/gsoc2021/ideas.md +++ b/readme/dev/gsoc/gsoc2021/ideas.md @@ -1,6 +1,6 @@ # GSoC 2021 Ideas -2021 is Joplin second round at Google Summer of Code. Detailed information on how to get involved and apply are given in the [general Summer of Code introduction](https://joplinapp.org/gsoc2021/) +2021 is Joplin second round at Google Summer of Code. Detailed information on how to get involved and apply are given in the [general Summer of Code introduction](https://joplinapp.org/help/dev/gsoc/gsoc2021) **These are all proposals! We are open to new ideas you might have!!** Do you have an awesome idea you want to work on with Joplin but that is not among the ideas below? That's cool. We love that! But please do us a favour: Get in touch with a mentor early on and make sure your project is realistic and within the scope of Joplin. Just make sure your idea is within this year's theme: @@ -8,15 +8,15 @@ - **External desktop applications** - build external Joplin applications by retrieving, creating or modifying notes via the Data API. - **External server applications** - leverage the Joplin Server API to provide online features to Joplin users. -# Information for Students +## Information for Students These ideas were contributed by our developers and users. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, you are urged to contact the developers and find out more about the particular suggestion you're looking at. Becoming accepted as a Google Summer of Code student is quite competitive. Accepted students typically have thoroughly researched the technologies of their proposed project and have been in frequent contact with potential mentors. **Simply copying and pasting an idea here will not work.** On the other hand, creating a completely new idea without first consulting potential mentors rarely works. -# List of ideas +## List of ideas -## 1. OCR plugin +### 1. OCR plugin It is possible to add support for OCR content in Joplin via the [Tesseract library](http://tesseract.projectnaptha.com/). A first step would be to assess the feasibility of this project by integrating the lib in the desktop app and trying to OCR an image. OCR support should be implemented as a service of the desktop app. It would extract the text from the images, and append the content as plain text to the notes. @@ -28,7 +28,7 @@ Skills Required: JavaScript, Image processing Potential Mentor(s): [CalebJohn](https://github.com/CalebJohn/), [laurent22](https://github.com/laurent22/), [roman_r_m](https://discourse.joplinapp.org/u/roman_r_m) -## 2. Template plugin +### 2. Template plugin Joplin already supports templates however we would like to re-package this feature as a plugin. Thus you would remove it from the main app and create a new plugin for it. It should be compatible with existing templates. Once the plugin is created, it could be a good idea to improve the feature further, perhaps based on user feedback on GitHub or in the forum. @@ -40,7 +40,7 @@ Skills Required: JavaScript Potential Mentor(s): [CalebJohn](https://github.com/CalebJohn/), [tessus](https://github.com/tessus/) -## 3. BibTex plugin +### 3. BibTex plugin Many of our users use Joplin for research note and as such a plugin that can add support for [BibTex](http://www.bibtex.org) would be very useful. The plugin should use locally stored citations, then display popup with type-ahead to allow the user to enter the citation into the document. A content script should also be created so that these citations are rendered correctly in the note viewer. @@ -52,7 +52,7 @@ Skills Required: JavaScript, understanding of BibTex format Potential Mentor(s): [CalebJohn](https://github.com/CalebJohn/), [roman_r_m](https://discourse.joplinapp.org/u/roman_r_m), [laurent22](https://github.com/laurent22/) -## 4. Real-time collaboration on a note +### 4. Real-time collaboration on a note Create a web application that allows two or more users to collaborate in real time on the same note. Use the Joplin Server API to save and load the note. @@ -64,7 +64,7 @@ Skills Required: JavaScript, Text editor, Web development Potential Mentor(s): [PackElend](https://discourse.joplinapp.org/u/PackElend), [roman_r_m](https://discourse.joplinapp.org/u/roman_r_m) -## 5. Paste special +### 5. Paste special A plugin that will allow pasting special text into Joplin and have it converted to Markdown. For example, paste an Excel or CSV table, and have it converted to a Markdown table. Paste some HTML or PDF text and again have it converted to formatted Markdown. This could be one plugin, or a collection of plugins, one for each "paste special" operation. @@ -76,7 +76,7 @@ Skills Required: JavaScript, Markdown, HTML, and knowledge of various text file Potential Mentor(s): [CalebJohn](https://github.com/CalebJohn/), [tessus](https://github.com/tessus/), [roman_r_m](https://discourse.joplinapp.org/u/roman_r_m) -## 6. Plugin system on mobile +### 6. Plugin system on mobile The plugin system is currently available on desktop and CLI. We believe it could work on mobile too although some work will have to be done to make the plugin API compatible, as well as add a mechanism to load plugins. @@ -88,7 +88,7 @@ Skills Required: JavaScript, React Native Potential Mentor(s): [PackElend](https://discourse.joplinapp.org/u/PackElend), [roman_r_m](https://discourse.joplinapp.org/u/roman_r_m), [laurent22](https://github.com/laurent22/) -## 7. Conflict resolution editor plugin +### 7. Conflict resolution editor plugin When a note is modified on two different devices, a "conflict note" is generated. It would be useful to create a plugin that allows taking this "conflict note" and the current version of the note, and compare them using a colored diff editor. It could be a built-in editor, or perhaps the plugin could leverage existing diff editors and feed the note versions to it. @@ -100,7 +100,7 @@ Skills Required: JavaScript, Markdown, Understanding of diff and merging conflic Potential Mentor(s): [tessus](https://github.com/tessus/), [PackElend](https://discourse.joplinapp.org/u/PackElend), [CalebJohn](https://github.com/CalebJohn/) -## 8. Kanban plugin +### 8. Kanban plugin Use Joplin built-in types - notes, to-dos and tags to implement [Kanban for Tasks](https://discourse.joplinapp.org/t/kanban-for-tasks/7342). @@ -112,8 +112,8 @@ Skills Required: JavaScript Potential Mentor(s): [CalebJohn](https://github.com/CalebJohn/), [laurent22](https://github.com/laurent22/) -# More info +## More info -- Make sure you read the [Joplin Google Summer of Code Introduction](https://joplinapp.org/gsoc2021/) -- To build the application, please read [BUILD.md](https://github.com/laurent22/joplin/blob/dev/BUILD.md) -- And before creating a pull request, please read the [pull request guidelines](https://joplinapp.org/gsoc2021/pull_request_guidelines/) +- Make sure you read the [Joplin Google Summer of Code Introduction](https://joplinapp.org/help/dev/gsoc/gsoc2021) +- To build the application, please read [BUILD.md](https://github.com/laurent22/joplin/blob/dev/readme/dev/BUILD.md) +- And before creating a pull request, please read the [pull request guidelines](https://joplinapp.org/help/dev/gsoc/gsoc2021/pull_request_guidelines) diff --git a/readme/gsoc2021/index.md b/readme/dev/gsoc/gsoc2021/index.md similarity index 96% rename from readme/gsoc2021/index.md rename to readme/dev/gsoc/gsoc2021/index.md index b04665af9c..65ea853da6 100644 --- a/readme/gsoc2021/index.md +++ b/readme/dev/gsoc/gsoc2021/index.md @@ -18,9 +18,9 @@ All participants will need a Google account in order to join the program. So, sa We suggest you read carefully these important documents and bookmark the links as you will need to refer to them throughout GSoC: -- [How to submit a pull request for GSoC](https://joplinapp.org/gsoc2021/pull_request_guidelines/) -- [How to build the apps](https://github.com/laurent22/joplin/blob/dev/BUILD.md) -- [How to contribute](https://github.com/laurent22/joplin/blob/dev/CONTRIBUTING.md) +- [How to submit a pull request for GSoC](https://joplinapp.org/help/dev/gsoc/gsoc2021/pull_request_guidelines/) +- [How to build the apps](https://github.com/laurent22/joplin/blob/dev/readme/dev/BUILD.md) +- [How to contribute](https://github.com/laurent22/joplin/blob/dev/readme/dev/index.md) ## Programming Language @@ -31,7 +31,7 @@ We suggest you read carefully these important documents and bookmark the links a In general, all applications share the same back-end written in TypeScript or JavaScript (Node.js), with Redux for state management. The back-end runs locally. -The desktop GUI, as listed on the [Joplin's website](https://joplinapp.org/help/#installation) is done using Electron and React. +The desktop GUI, as listed on the [Joplin's website](https://joplinapp.org/help/install) is done using Electron and React. The mobile app is done using React Native. @@ -59,7 +59,7 @@ Before you can be accepted as a student we expect you to write some code and lin - Please **do not submit a pull request just to fix some typo**. -Before submitting a pull request, please make sure you read the [pull request guidelines for GSoC 2021](https://joplinapp.org/gsoc2021/pull_request_guidelines/). +Before submitting a pull request, please make sure you read the [pull request guidelines for GSoC 2021](https://joplinapp.org/help/dev/gsoc/gsoc2021/pull_request_guidelines/). ## General instructions @@ -69,7 +69,7 @@ First of all, please read the above referenced resources and the [GSoC FAQ](http 1. Join the [Joplin Forum](https://discourse.joplinapp.org), introduce yourself in a structured manner, share your GitHub username, and meet your fellow developers in the [GSoC category](https://discourse.joplinapp.org/c/gsoc). The subject of the topic shall contain your username, e.g. _Introducing \_. 2. Read Student proposal guidelines and the [GSoC Student Manual](https://developers.google.com/open-source/gsoc/resources/manual#student_manual) -3. Take a look at the [list of ideas](https://joplinapp.org/gsoc2021/ideas/). You can have you own idea added by posting it in the [Features category](https://discourse.joplinapp.org/c/features) +3. Take a look at the [list of ideas](https://joplinapp.org/help/dev/gsoc/gsoc2021/ideas/). You can have you own idea added by posting it in the [Features category](https://discourse.joplinapp.org/c/features) 4. Come up with project that you're interested in and discuss it in [Features category](https://discourse.joplinapp.org/c/features) 5. Write a first draft and get someone to review it 6. Remember: you must link to work such as commits in your proposal. A private place will be created within the forum for that purposes. @@ -166,4 +166,4 @@ Finally, know that we will never assign you to a project you do not want to work Please see below for a list of project ideas: -https://joplinapp.org/gsoc2021/ideas/ +https://joplinapp.org/help/dev/gsoc/gsoc2021/ideas/ diff --git a/readme/gsoc2021/pull_request_guidelines.md b/readme/dev/gsoc/gsoc2021/pull_request_guidelines.md similarity index 100% rename from readme/gsoc2021/pull_request_guidelines.md rename to readme/dev/gsoc/gsoc2021/pull_request_guidelines.md diff --git a/readme/gsoc2022/ideas.md b/readme/dev/gsoc/gsoc2022/ideas.md similarity index 93% rename from readme/gsoc2022/ideas.md rename to readme/dev/gsoc/gsoc2022/ideas.md index a25857da37..7e6d08110d 100644 --- a/readme/gsoc2022/ideas.md +++ b/readme/dev/gsoc/gsoc2022/ideas.md @@ -1,6 +1,6 @@ # GSoC 2022 Ideas -2022 is Joplin third round at Google Summer of Code. Detailed information on how to get involved and apply are given in the [general Summer of Code introduction](https://joplinapp.org/gsoc2022/) +2022 is Joplin third round at Google Summer of Code. Detailed information on how to get involved and apply are given in the [general Summer of Code introduction](https://joplinapp.org/help/dev/gsoc/gsoc2022/) **These are all proposals! We are open to new ideas you might have!!** Do you have an awesome idea you want to work on with Joplin but that is not among the ideas below? That's cool. We love that! But please do us a favour: Get in touch with a mentor early on and make sure your project is realistic and within the scope of Joplin. This year's themes are: @@ -8,15 +8,15 @@ - **Plugin and external apps** - leverage the Joplin API to create plugins and external apps. - And you are welcome to suggest your own ideas. -# Information for Contributors +## Information for Contributors These ideas were contributed by our developers and users. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, you are urged to contact the developers and find out more about the particular suggestion you're looking at. Becoming accepted as a Google Summer of Code contributor is quite competitive. Accepted contributors typically have thoroughly researched the technologies of their proposed project and have been in frequent contact with potential mentors. **Simply copying and pasting an idea here will not work.** On the other hand, creating a completely new idea without first consulting potential mentors rarely works. -# List of ideas +## List of ideas -## 1. Plugin system on mobile +### 1. Plugin system on mobile The plugin system is currently available on desktop and CLI. We believe it could work on mobile too although some work will have to be done to make the plugin API compatible, as well as add a mechanism to load plugins. @@ -30,7 +30,7 @@ Potential Mentor(s): [PackElend](https://discourse.joplinapp.org/u/PackElend), [ Expected size of project: 350 hours -## 2. Seamless desktop application updates +### 2. Seamless desktop application updates The desktop application currently supports automatic updates, however the process is not particularly smooth: the user is presented with a modal dialog, where they need to click "Download" and that opens the default browser to download the file. Then they need to run this file and go through the installer. @@ -52,7 +52,7 @@ Potential Mentor(s): [CalebJohn](https://github.com/CalebJohn/) Expected size of project: 175 hours -## 3. Refactor the project documentation +### 3. Refactor the project documentation The current documentation (under [joplinapp.org/help](https://joplinapp.org/help)) is mainly a giant README.md file and various smaller Markdown files under /readme. All this is then built into the HTML website by a script. @@ -72,7 +72,7 @@ Potential Mentor(s): [Daeraxa](https://discourse.joplinapp.org/u/Daeraxa), [Laur Expected size of project: 350 hours -## 4. Implement default plugins on desktop application +### 4. Implement default plugins on desktop application We would like to bundle certain plugins with the desktop application, such as the Backup or Rich Markdown plugin. Some process needs to be implemented so that they are bundled and updated automatically. You'll have to consider how it will work on CI, and across platform. The process should be fault tolerant and retry when something fails. @@ -86,7 +86,7 @@ Potential Mentor(s): [CalebJohn](https://github.com/CalebJohn/), [JackGruber](ht Expected size of project: 350 hours -## 5. Implement a toolbar for the mobile beta code editor +### 5. Implement a toolbar for the mobile beta code editor We would like the Beta code editor to eventually become the main editor, and for that a number of changes need to be made. The main one would be the addition of a toolbar to it, to set the various styles, such as Bold, Bullet list, Header, etc. Additionally there are number of bugs that will have to be fixed to get the editor ready for production - you will find them in the list of issues (under the "high" and "mobile" label). @@ -100,13 +100,13 @@ Potential Mentor(s): [CalebJohn](https://github.com/CalebJohn/), [Laurent](https Expected size of project: 350 hours -## 6. Improve integration of the richtext/WYSIWYG editor +### 6. Improve integration of the richtext/WYSIWYG editor Joplin offers a richtext/WYSIWYG typing experience alongside the Markdown editor but there are a number of areas that could do with improvement when it comes to integration with Joplin as a whole. Areas for consideration include increasing compatibility with Joplin-wide keybindings (many are currently static), limiting features of the editor not compatible with markdown formatting, reducing the impact of data changes caused by swapping between editors. -Also read the document about limitations of the editor: [https://joplinapp.org/rich_text_editor/](https://joplinapp.org/rich_text_editor/) +Also read the document about limitations of the editor: [https://joplinapp.org/rich_text_editor/](https://joplinapp.org/help/apps/rich_text_editor/) Expected Outcome: Removal of non-functional formatting options, alignment of generic Joplin editor options as well general improvements in editor usability. @@ -118,7 +118,7 @@ Potential Mentor(s): [Daeraxa](https://discourse.joplinapp.org/u/Daeraxa) Expected size of project: 175 hours -## 7. Improve PDF export +### 7. Improve PDF export Joplin uses Chrome's built-in print to PDF function which is very limited. This can be improved by using a 3rd party library to convert notes to PDF. Applies to desktop and CLI versions. @@ -140,7 +140,7 @@ Potential Mentor(s): [Roman](https://discourse.joplinapp.org/u/roman_r_m), [Cale Expected size of project: 350 hours -## 8. Replace built-in PDF renderer with a library +### 8. Replace built-in PDF renderer with a library Just like with export, Joplin relies on the built-in PDF renderer to show PDF attachments. Replacing it with a 3rd-party library has a number of advantages: @@ -160,7 +160,7 @@ Potential Mentor(s): [Roman](https://discourse.joplinapp.org/u/roman_r_m), [Cale Expected size of project: 350 hours -## 9. Rebuild file system sync on Android +### 9. Rebuild file system sync on Android A recent update broke file system synchronization on Android, as applications are now required to use a new API to access storage. Currently there are no libraries that would proxy this API for React Native. If we want to get file system sync working again it has to be written from scratch. @@ -174,7 +174,7 @@ Potential Mentor(s): [Roman](https://discourse.joplinapp.org/u/roman_r_m) Expected size of project: 175 hours -## 10. Tablet layout +### 10. Tablet layout On wide screens devices like tables Joplin could use a different layout, e.g. with note list always showing, or have both editor and viewer visible at the same time. What component is visible shoud be optional - for example, the user may want to see the note list, but hide the sidebar. This change will have to be implemented in such a way that it doesn't break the regular, mobile-only layout. @@ -188,7 +188,7 @@ Potential Mentor(s): [Laurent](https://github.com/laurent22/) Expected size of project: 350 hours -## 11. Improve plugin search and discoverability +### 11. Improve plugin search and discoverability As there are more and more plugins it would be good to improve how they are discovered, and to improve search - in particular improve search relevance. @@ -212,7 +212,7 @@ Potential Mentor(s): [JackGruber](https://discourse.joplinapp.org/u/JackGruber), Expected size of project: 350 hours -## 12. Email plugin +### 12. Email plugin Create a plugin to fetch mail via IMAP and convert messages to notes (including attachments). The plugin should be able to filter what messages it donwloads, e.g. based on the folder. @@ -234,7 +234,7 @@ Potential Mentor(s): [Roman](https://discourse.joplinapp.org/u/roman_r_m), [Laur Expected size of project: 350 hours -## 13. Desktop application integration testing +### 13. Desktop application integration testing The desktop app front end has a few unit tests to verify things like React hooks and certain utility functions. However we currently have no integration testing to verify for example that a change in one component didn't break something in another component. This project would be about setting up this integration testing for the desktop app. You would do the setup and probably also write a few tests to demonstrate that it's working as expected. More info at https://www.electronjs.org/docs/latest/tutorial/automated-testing @@ -248,7 +248,7 @@ Potential Mentor(s): [CalebJohn](https://github.com/CalebJohn/), [Laurent](https Expected size of project: 350 hours -## 14. Client settings sync +### 14. Client settings sync Whenever settings are changed on one client these are not replicated to other clients connected to the same sync target. @@ -264,8 +264,8 @@ Potential Mentor(s): [Daeraxa](https://discourse.joplinapp.org/u/Daeraxa), [Jack Expected size of project: 350 hours -# More info +## More info -- Make sure you read the [Joplin Google Summer of Code Introduction](https://joplinapp.org/gsoc2022/) -- To build the application, please read [BUILD.md](https://github.com/laurent22/joplin/blob/dev/BUILD.md) -- And before creating a pull request, please read the [pull request guidelines](https://joplinapp.org/gsoc2022/pull_request_guidelines/) +- Make sure you read the [Joplin Google Summer of Code Introduction](https://joplinapp.org/help/dev/gsoc/gsoc2022/) +- To build the application, please read [BUILD.md](https://github.com/laurent22/joplin/blob/dev/readme/dev/BUILD.md) +- And before creating a pull request, please read the [pull request guidelines](https://joplinapp.org/help/dev/gsoc/gsoc2022/pull_request_guidelines/) diff --git a/readme/gsoc2022/index.md b/readme/dev/gsoc/gsoc2022/index.md similarity index 98% rename from readme/gsoc2022/index.md rename to readme/dev/gsoc/gsoc2022/index.md index 367c179884..285be3d109 100644 --- a/readme/gsoc2022/index.md +++ b/readme/dev/gsoc/gsoc2022/index.md @@ -16,9 +16,9 @@ All participants will need a Google account in order to join the program. So, sa We suggest you read carefully these important documents and bookmark the links as you will need to refer to them throughout GSoC: -- [How to submit a pull request for GSoC](https://joplinapp.org/gsoc2022/pull_request_guidelines/) -- [How to build the apps](https://github.com/laurent22/joplin/blob/dev/BUILD.md) -- [How to contribute](https://github.com/laurent22/joplin/blob/dev/CONTRIBUTING.md) +- [How to submit a pull request for GSoC](https://joplinapp.org/help/dev/gsoc/gsoc2022/pull_request_guidelines/) +- [How to build the apps](https://github.com/laurent22/joplin/blob/dev/help/dev/BUILD.md) +- [How to contribute](https://github.com/laurent22/joplin/blob/dev/readme/dev/index.md) ## Programming Language @@ -29,7 +29,7 @@ We suggest you read carefully these important documents and bookmark the links a In general, all applications share the same back-end written in TypeScript or JavaScript (Node.js), with Redux for state management. The back-end runs locally. -The desktop GUI, as listed on the [Joplin's website](https://joplinapp.org/help/#installation) is done using Electron and React. +The desktop GUI, as listed on the [Joplin's website](https://joplinapp.org/help/install) is done using Electron and React. The mobile app is done using React Native. @@ -55,7 +55,7 @@ Before you can be accepted as a contributor we expect you to write some code and - Please **do not submit a pull request just to fix some typo**. -Before submitting a pull request, please make sure you read the [pull request guidelines for GSoC 2022](https://joplinapp.org/gsoc2022/pull_request_guidelines/). +Before submitting a pull request, please make sure you read the [pull request guidelines for GSoC 2022](https://joplinapp.org/help/dev/gsoc/gsoc2022/pull_request_guidelines/). ## General instructions @@ -162,4 +162,4 @@ Finally, know that we will never assign you to a project you do not want to work Please see below for a list of project ideas: -https://joplinapp.org/gsoc2022/ideas/ +https://joplinapp.org/help/dev/gsoc/gsoc2022/ideas/ diff --git a/readme/gsoc2022/pull_request_guidelines.md b/readme/dev/gsoc/gsoc2022/pull_request_guidelines.md similarity index 98% rename from readme/gsoc2022/pull_request_guidelines.md rename to readme/dev/gsoc/gsoc2022/pull_request_guidelines.md index 03a23ad470..3b98f5a5d1 100644 --- a/readme/gsoc2022/pull_request_guidelines.md +++ b/readme/dev/gsoc/gsoc2022/pull_request_guidelines.md @@ -20,7 +20,7 @@ Due to our limited resources and in order to give everyone a chance to submit a 4. **If you are borrowing code, please disclose it**. It is fine and sometimes even recommended to borrow code, but we need to know about it to assess your work. -5. **All pull request must have test units**. In some cases it might be almost impossible to add such tests (for example integration tests), but for anything else we insist on having them, and we may close the pull request if we see they could have been added but weren't. If you don't know how to add test units, please ask on the forum or Discord. If really it's not possible to add tests, we'll let you know at this point. Also please check again the [Automated Tests](https://github.com/laurent22/joplin/blob/dev/CONTRIBUTING.md#automated-tests) documentation for more information. +5. **All pull request must have test units**. In some cases it might be almost impossible to add such tests (for example integration tests), but for anything else we insist on having them, and we may close the pull request if we see they could have been added but weren't. If you don't know how to add test units, please ask on the forum or Discord. If really it's not possible to add tests, we'll let you know at this point. Also please check again the [Automated Tests](https://github.com/laurent22/joplin/blob/dev/readme/dev/index.md#automated-tests) documentation for more information. 6. **No Work In Progress**. ONLY completed and working pull requests, and with test units, will be accepted. A WIP would fall under rule 3 and be closed immediately. diff --git a/readme/gsoc2023/ideas.md b/readme/dev/gsoc/gsoc2023/ideas.md similarity index 93% rename from readme/gsoc2023/ideas.md rename to readme/dev/gsoc/gsoc2023/ideas.md index d6c915cfa8..a769e0eb80 100644 --- a/readme/gsoc2023/ideas.md +++ b/readme/dev/gsoc/gsoc2023/ideas.md @@ -1,6 +1,6 @@ # GSoC 2023 Ideas -2023 is Joplin third round at Google Summer of Code. Detailed information on how to get involved and apply are given in the [general Summer of Code introduction](https://joplinapp.org/gsoc2023/) +2023 is Joplin third round at Google Summer of Code. Detailed information on how to get involved and apply are given in the [general Summer of Code introduction](https://joplinapp.org/help/dev/gsoc/gsoc2023/) **These are all proposals! We are open to new ideas you might have!!** Do you have an awesome idea you want to work on with Joplin but that is not among the ideas below? That's cool. We love that! But please do us a favour: Get in touch with a mentor early on and make sure your project is realistic and within the scope of Joplin. This year's themes are: @@ -9,15 +9,15 @@ - **Independent modules** - create self-contains modules within the core application - And you are welcome to suggest your own ideas. -# Information for Contributors +## Information for Contributors These ideas were contributed by our developers and users. They are sometimes vague or incomplete. If you wish to submit a proposal based on these ideas, you are urged to contact the developers and find out more about the particular suggestion you're looking at. Becoming accepted as a Google Summer of Code contributor is quite competitive. Accepted contributors typically have thoroughly researched the technologies of their proposed project and have been in frequent contact with potential mentors. **Simply copying and pasting an idea here will not work.** On the other hand, creating a completely new idea without first consulting potential mentors rarely works. -# List of ideas +## List of ideas -## 1. Plugin system on mobile +### 1. Plugin system on mobile The plugin system is currently available on desktop and CLI. We believe it could work on mobile too although some work will have to be done to make the plugin API compatible, as well as add a mechanism to load plugins. @@ -31,7 +31,7 @@ Potential Mentor(s): Expected size of project: 350 hours -## 2. Seamless desktop application updates +### 2. Seamless desktop application updates The desktop application currently supports automatic updates, however the process is not particularly smooth: the user is presented with a modal dialog, where they need to click "Download" and that opens the default browser to download the file. Then they need to run this file and go through the installer. @@ -53,7 +53,7 @@ Potential Mentor(s): Expected size of project: 175 hours -## 3. Improve PDF export +### 3. Improve PDF export Joplin uses Chrome's built-in print to PDF function which is very limited. This can be improved by using a 3rd party library to convert notes to PDF. Applies to desktop and CLI versions. @@ -75,7 +75,7 @@ Potential Mentor(s): Expected size of project: 350 hours -## 4. Desktop application integration testing +### 4. Desktop application integration testing The desktop app front end has a few unit tests to verify things like React hooks and certain utility functions. However we currently have no integration testing to verify for example that a change in one component didn't break something in another component. This project would be about setting up this integration testing for the desktop app. You would do the setup and probably also write a few tests to demonstrate that it's working as expected. More info at https://www.electronjs.org/docs/latest/tutorial/automated-testing @@ -89,7 +89,7 @@ Potential Mentor(s): Expected size of project: 350 hours -## 5. OCR plugin +### 5. OCR plugin It is possible to add support for OCR content in Joplin via the [Tesseract library](http://tesseract.projectnaptha.com/). A first step would be to assess the feasibility of this project by integrating the lib in the desktop app and trying to OCR an image. OCR support should be implemented as a service of the desktop app. It would extract the text from the images, and append the content as plain text to the notes. @@ -101,7 +101,7 @@ Skills Required: JavaScript, Image processing Potential Mentor(s): -## 6. Voice to text on mobile +### 6. Voice to text on mobile Add support for voice to text on mobile. @@ -113,7 +113,7 @@ Skills Required: JavaScript, React Native Potential Mentor(s): -## 7. PDF annotations +### 7. PDF annotations We would like to add annotation support to the beta PDF viewer on desktop. The annotation tools should be similar to what's in Apple Preview for instance - ability to draw over a PDF, to add text boxes, to draw lines and arrow, etc. These annotations must be saved to the file. @@ -125,7 +125,7 @@ Skills Required: JavaScript Potential Mentor(s): -## 8. Plugin inspector +### 8. Plugin inspector Electron provides an API that allows inspecting any sub-process it creates. We can use that to monitor the performance of each plugin - how much CPU they use, how much memory, etc. We would also like to display an alert in the app if a plugin is using too much resources over a long period of time. @@ -137,7 +137,7 @@ Skills Required: JavaScript, Electron Potential Mentor(s): -## 9. Template insertion tool +### 9. Template insertion tool Joplinc can store general templates as notes that can be used in various context. For example, it could have email templates that could be inserted into a Thunderbird email. Or code snippets that could be inserted into a text editor. The workflow will be as follow @@ -153,8 +153,8 @@ Skills Required: JavaScript, Windows/macOS programming Potential Mentor(s): -# More info +## More info -- Make sure you read the [Joplin Google Summer of Code Introduction](https://joplinapp.org/gsoc2023/) -- To build the application, please read [BUILD.md](https://github.com/laurent22/joplin/blob/dev/BUILD.md) +- Make sure you read the [Joplin Google Summer of Code Introduction](https://joplinapp.org/help/dev/gsoc/gsoc2023) +- To build the application, please read [BUILD.md](https://github.com/laurent22/joplin/blob/dev/help/dev/BUILD.md) - And before creating a pull request, please read the [pull request guidelines](https://joplinapp.org/gsoc2023/pull_request_guidelines/) diff --git a/readme/gsoc2023/index.md b/readme/dev/gsoc/gsoc2023/index.md similarity index 98% rename from readme/gsoc2023/index.md rename to readme/dev/gsoc/gsoc2023/index.md index 5bb61d8569..474a9a72d9 100644 --- a/readme/gsoc2023/index.md +++ b/readme/dev/gsoc/gsoc2023/index.md @@ -16,9 +16,9 @@ All participants will need a Google account in order to join the program. So, sa We suggest you read carefully these important documents and bookmark the links as you will need to refer to them throughout GSoC: -- [How to submit a pull request for GSoC](https://joplinapp.org/gsoc2023/pull_request_guidelines/) -- [How to build the apps](https://github.com/laurent22/joplin/blob/dev/BUILD.md) -- [How to contribute](https://github.com/laurent22/joplin/blob/dev/CONTRIBUTING.md) +- [How to submit a pull request for GSoC](https://joplinapp.org/help/dev/gsoc/gsoc2023/pull_request_guidelines/) +- [How to build the apps](https://github.com/laurent22/joplin/blob/dev/help/dev/BUILD.md) +- [How to contribute](https://github.com/laurent22/joplin/blob/dev/readme/dev/index.md) ## Programming Language @@ -29,7 +29,7 @@ We suggest you read carefully these important documents and bookmark the links a In general, all applications share the same back-end written in TypeScript or JavaScript (Node.js), with Redux for state management. The back-end runs locally. -The desktop GUI, as listed on the [Joplin's website](https://joplinapp.org/help/#installation) is done using Electron and React. +The desktop GUI, as listed on the [Joplin's website](https://joplinapp.org/help/install) is done using Electron and React. The mobile app is done using React Native. @@ -55,7 +55,7 @@ Before you can be accepted as a contributor we expect you to write some code and - Please **do not submit a pull request just to fix some typo**. -Before submitting a pull request, please make sure you read the [pull request guidelines for GSoC 2023](https://joplinapp.org/gsoc2023/pull_request_guidelines/). +Before submitting a pull request, please make sure you read the [pull request guidelines for GSoC 2023](https://joplinapp.org/help/dev/gsoc/gsoc2023/pull_request_guidelines/). ## General instructions @@ -162,4 +162,4 @@ Finally, know that we will never assign you to a project you do not want to work Please see below for a list of project ideas: -https://joplinapp.org/gsoc2023/ideas/ +https://joplinapp.org/help/dev/gsoc/gsoc2023/ideas/ diff --git a/readme/gsoc2023/pull_request_guidelines.md b/readme/dev/gsoc/gsoc2023/pull_request_guidelines.md similarity index 98% rename from readme/gsoc2023/pull_request_guidelines.md rename to readme/dev/gsoc/gsoc2023/pull_request_guidelines.md index 03a23ad470..3b98f5a5d1 100644 --- a/readme/gsoc2023/pull_request_guidelines.md +++ b/readme/dev/gsoc/gsoc2023/pull_request_guidelines.md @@ -20,7 +20,7 @@ Due to our limited resources and in order to give everyone a chance to submit a 4. **If you are borrowing code, please disclose it**. It is fine and sometimes even recommended to borrow code, but we need to know about it to assess your work. -5. **All pull request must have test units**. In some cases it might be almost impossible to add such tests (for example integration tests), but for anything else we insist on having them, and we may close the pull request if we see they could have been added but weren't. If you don't know how to add test units, please ask on the forum or Discord. If really it's not possible to add tests, we'll let you know at this point. Also please check again the [Automated Tests](https://github.com/laurent22/joplin/blob/dev/CONTRIBUTING.md#automated-tests) documentation for more information. +5. **All pull request must have test units**. In some cases it might be almost impossible to add such tests (for example integration tests), but for anything else we insist on having them, and we may close the pull request if we see they could have been added but weren't. If you don't know how to add test units, please ask on the forum or Discord. If really it's not possible to add tests, we'll let you know at this point. Also please check again the [Automated Tests](https://github.com/laurent22/joplin/blob/dev/readme/dev/index.md#automated-tests) documentation for more information. 6. **No Work In Progress**. ONLY completed and working pull requests, and with test units, will be accepted. A WIP would fall under rule 3 and be closed immediately. diff --git a/readme/gsod2020/ideas.md b/readme/dev/gsoc/gsod2020/ideas.md similarity index 78% rename from readme/gsod2020/ideas.md rename to readme/dev/gsoc/gsod2020/ideas.md index 43aa97a6e0..c4c192373d 100644 --- a/readme/gsod2020/ideas.md +++ b/readme/dev/gsoc/gsod2020/ideas.md @@ -1,4 +1,6 @@ -# 1.Idea - Create documentation hub +# Ideas + +## 1.Idea - Create documentation hub - Make a screening of available options of how apps to be utilized to organize documentation better and simplified access to information. You can start with: - [Read the Docs](https://readthedocs.org/) @@ -8,17 +10,17 @@ You can start with: - create a high-level visualization of all Joplin structure - creating a basic documentation is minimum expectations -# 2. Idea - introduce and describe a consistent workflow from bug report / feature request to pull request -- create [Wizards]() for the Discourse forum +## 2. Idea - introduce and describe a consistent workflow from bug report / feature request to pull request +- create Wizards for the Discourse forum - create templates at GitHub - optimize the bot on GitHub - show and may implement how the current Bug Report and Feature Request workflow can be improved using - [HubBoard](https://huboard.com/pricing) - [GiHub Project Board](https://help.github.com/en/github/managing-your-work-on-github/about-project-boards) -# 3. Idea - create a tool to collect ideas and suggestions based on the content of the community forum +## 3. Idea - create a tool to collect ideas and suggestions based on the content of the community forum There are many ideas in the forum and attempts to organize and streamline them. Task is to find a toolset to structure them and make the knowledge buried in there available easily. -# 4. Idea - Divide panel into separate windows +## 4. Idea - Divide panel into separate windows Joplin has 4 panes: side bar, notes list, code and view. Change joplin in a way that these parts can be different windows. Thus it is possible to put these windows on different screens for more space and better overview. diff --git a/readme/gsod2020/index.md b/readme/dev/gsoc/gsod2020/index.md similarity index 98% rename from readme/gsod2020/index.md rename to readme/dev/gsoc/gsod2020/index.md index 20379b7bc6..34c80068cb 100644 --- a/readme/gsod2020/index.md +++ b/readme/dev/gsoc/gsod2020/index.md @@ -17,7 +17,7 @@ All participants will need a Google account in order to join the program. So, sa --- -# Instructions for students +## Instructions for students Students wishing to participate in Season of Docs must realize, that this is a important professional opportunity. You will be required to produce applicable and readable documentation for Joplin in 3 months. Your mentors, will dedicate a portion of their time to mentoring you. Therefore, we seek candidates who are committed to helping Joplin and its community long-term and are willing to both do quality work, and be proactive in communicating with your mentor(s). You don't have to be a proven technical writer - in fact, this whole program is meant to facilitate to support Joplin and other Open Source communities by technical writers. However, experience in technical writing and/or coding experience is welcome. @@ -38,14 +38,14 @@ Moreover, we require that you come to clear agreement on how to commit, test and Students who neglect active communication will be failed! -## General instructions +### General instructions First of all, please read the above referenced resources and the [GSoC FAQ](https://developers.google.com/open-source/gsoc/faq). Pay special attention to the **Eligibility** section of the FAQ. We strongly recommend to follow the recommended steps, see next section, closely. It is slightly differs from the steps given for the closed GSoC application period. The procedure reflects some of the lessons learnt in the GSOC 2020 campaign, so you may compare the recommended steps and scan the change history of the [GSoC 2020 live blog](https://discourse.joplinapp.org/t/gsoc-2020-live-blog/6219). -## Recommended steps +### Recommended steps 1. Join the [Joplin Forum](https://discourse.joplinapp.org), introduce yourself in a structured manner, share your GitHub username, and meet your fellow developers in the [GSoC category](https://discourse.joplinapp.org/c/gsoc). The subject of the topic shall contain your username, e.g. `_Introducing \_`. 2. Read Student proposal guidelines and the [GSoD Student Manual](https://developers.google.com/season-of-docs/docs/tech-writer-guide) @@ -63,7 +63,7 @@ Coming up with an interesting idea is probably the most difficult part. It shoul A good start is finding out what the most pressing issues are in the projects in which you are interested. Join the forum and subscribe to GitHub repository for that project or go into its discourse channel: meet developers and your potential mentor, as well as start learning the code-base. We recommend strongly getting involved in advance of the beginning of GSoC, and we will look favourably on applications from students who have already started to act like Open Source developers. -## Student proposal guidelines +### Student proposal guidelines A project proposal is what you will be judged upon. Write a clear proposal on what you plan to do, the scope of your project, and why we should choose you to do it. Proposals are the basis of the GSoC projects and therefore one of the most important things to do well. The proposal is not only the basis of our decision of which student to choose, it has also an effect on Google's decision as to how many student slots are assigned to Joplin. @@ -103,20 +103,20 @@ Below is the application template: > > - After you have written your proposal, you should get it reviewed. Do not rely on the Joplin mentors to do it for you via the web interface, although we will try to comment on every proposal. It is wise to ask a colleague or a developer to critique your proposal. Clarity and completeness are important. -## Accepted Students +### Accepted Students Your primary responsibility is finishing your project under the guidance of your mentors. To do that, you must submit code regularly and stay in frequent and effective communication with your mentors and team. To pass the evaluations, you must do both the communication and the documentation. All students will create a report page by tool up to their choice. Keep this up-to-date, as this is one of our primary evaluation tools. -# Instructions for mentors -## Ideas +## Instructions for mentors +### Ideas If you're a Joplin developer or motivated user and you wish to participate in Summer of Code, make a proposal in the the [Features category of the Joplin Forum](https://discourse.joplinapp.org/c/features), based what your Joplin project needs. If you wish to mentor, please read the [GSoD Mentor Guide](https://developers.google.com/season-of-docs/docs/admin-guide) and the [Season of Doc FAQ](https://developers.google.com/season-of-docs/docs/faq). Also, please contact the staff and get the go-ahead from them before editing the ideas page, adding your idea. Your idea proposal should be a brief description of what the project is, what the desired goals would be, what the student should know and an email address for contact. Students are not required to follow your idea to the letter, so regard your proposal as inspiration for the students. -## Mentoring +### Mentoring Anyone developer can be a mentor if you meet the GSoD eligibility requirements. We will potentially assign a student to you who has never worked on such a large project and will need some help. Make sure you're up for the task. Mentoring takes time, and lots and lots of communication. Before subscribing yourself as a mentor, please make sure that the staff is aware of that. Ask them to send the Summer of Code Administrators an email confirming your involvement in the team. This is just a formality to make sure you are a real person we can trust; the administrators cannot know all active developers by their Google account ID. Then drop us an message in the forum. @@ -125,8 +125,8 @@ You will subscribe to the relevant tags in the forum to discuss ideas. You will Finally, know that we will never assign you to a project you do not want to work on. We will not assign you more projects than you can/want to take on either. And you will have a backup mentor, just in case something unforeseen takes place. -# Ideas +## Ideas Please see below for a list of project ideas: -https://joplinapp.org/gsod2020/ideas/ +https://joplinapp.org/help/dev/gsoc/gsod2020/ideas/ diff --git a/CONTRIBUTING.md b/readme/dev/index.md similarity index 90% rename from CONTRIBUTING.md rename to readme/dev/index.md index c73bdf857d..2bd2185934 100644 --- a/CONTRIBUTING.md +++ b/readme/dev/index.md @@ -1,19 +1,21 @@ -# User support +# Contributing to Joplin + +## User support The [Joplin Forum](https://discourse.joplinapp.org/) is the community driven place for user support, general discussion about Joplin, problems with installation, new features and software development questions. It is possible to login with your GitHub account. Don't use the issue tracker for support questions. -# Reporting a bug +## Reporting a bug File bugs in the [Github Issue Tracker](https://github.com/laurent22/joplin/issues?utf8=%E2%9C%93&q=is%3Aissue). Please follow these guidelines: - Search existing issues first, make sure yours hasn't already been reported. - Please follow the template. -- Consider [enabling debug mode](https://joplinapp.org/debugging/) so that you can provide as much details as possible when reporting the issue. +- Consider [enabling debug mode](https://joplinapp.org/help/apps/debugging/) so that you can provide as much details as possible when reporting the issue. - Stay on topic, but describe the issue in detail so that others can **reproduce** it. - **Provide a screenshot** if possible. A screenshot showing the problem is often more useful than a paragraph describing it. - For web clipper bugs, **please provide the URL causing the issue**. Sometimes the clipper works in one page but not in another so it is important to know what URL has a problem. -# Feature requests +## Feature requests Feature requests **must be opened and discussed on the [forum](https://discourse.joplinapp.org/c/features)**. After they have been accepted, they can be added to the GitHub tracker. @@ -23,11 +25,11 @@ Avoid listing multiple requests in one topic. One topic per request makes it eas Finally, when submitting a pull request, don't forget to [test your code](#automated-tests). -# Contributing to Joplin's translation +## Contributing to Joplin's translation Joplin is available in multiple languages thanks to the help of its users. You can help translate Joplin to your language or keep it up to date. Please read the documentation about [Localisation](https://joplinapp.org/help/#localisation). -# Contributing to Joplin's code +## Contributing to Joplin's code If you want to start contributing to the project's code, please follow these guidelines before creating a pull request: @@ -43,23 +45,23 @@ If you want to start contributing to the project's code, please follow these gui Building the apps is relatively easy - please [see the build instructions](https://github.com/laurent22/joplin/blob/dev/BUILD.md) for more details. -## Signing the Individual Contributor License Agreement +### Signing the Individual Contributor License Agreement -All contributors to the project must sign our [Individual Contributor License Agreement](https://github.com/laurent22/joplin/blob/dev/readme/cla.md). +All contributors to the project must sign our [Individual Contributor License Agreement](https://raw.githubusercontent.com/laurent22/joplin/dev/readme/cla.md). -## Coding style +### Coding style -Please see [readme/coding_style.md](readme/coding_style.md). +Please see [the coding style document](https://github.com/laurent22/joplin/blob/dev/readme/dev/coding_style.md). -## GUI style +### GUI style For changes made to the Desktop and mobile clients that affect the user interface, refer to `packages/lib/theme.ts` for all styling information. The goal is to create a consistent user interface to allow for easy navigation of Joplin's various features and improve the overall user experience. -## Automated tests +### Automated tests When submitting a pull request for a new feature or a bug fix, please add automated tests. We use [Jest](https://jestjs.io/) as a testing framework so you will need to be familiar with it or go through their documentation. -### Running the tests +#### Running the tests To run all the test units, run from the root: @@ -72,31 +74,31 @@ Or you can go inside a package folder, and run the tests from there. For example To run just one particular file: ```sh -# Run all the tests in markdownUtils.test.ts +## Run all the tests in markdownUtils.test.ts yarn test markdownUtils ``` To run only a particular test in a file: ```sh -# Run only the test described as "should handle conflict" -# inside markdownUtils.test.ts: +## Run only the test described as "should handle conflict" +## inside markdownUtils.test.ts: yarn test markdownUtils --filter="should handle conflict" ``` -### Adding a new test file +#### Adding a new test file To add a test, simply create a new file with an extension `.test.ts` in the same directory. For example if you are working on the file `example.ts`, create a file `example.test.ts` for the unit tests. If this file already exist, simply add your tests directly to it. -### Setting the testing environment +#### Setting the testing environment Many utility functions are available under the package `@joplin/lib/testing/test-utils`. Have a look for example at [Note.test.ts](https://github.com/laurent22/joplin/blob/dev/packages/lib/models/Note.test.ts) to see how to setup test units with database support and synchroniser support. Note that this is not needed for all tests - if you just have a simple functions to test you won't need that extra setup. -### Testing React Hooks +#### Testing React Hooks To test React Hooks please use the package `@testing-library/react-hooks`. See [useLayoutItemSizes.test.ts](https://github.com/laurent22/joplin/blob/dev/packages/app-desktop/gui/ResizableLayout/utils/useLayoutItemSizes.test.ts) for an example. -### If it is not possible to add tests +#### If it is not possible to add tests More often than not, it is actually possible to add tests - just go back to your code and see if it can be refactored and certain functionalities moved to simple functions (with no dependencies). Once you have a simple function, you can easily add unit tests for it. @@ -108,7 +110,7 @@ Additionally, if the unit tests are not sufficient, please provide a **manual te A reviewer should be able to run the app with your changes, then do the above steps to verify that everything's working as expected. -## About abandoned pull requests +### About abandoned pull requests It happens that a pull request is started but not finished and despite our attempts to contact the contributor, we don't hear from them again. diff --git a/readme/dev/localisation.md b/readme/dev/localisation.md new file mode 100644 index 0000000000..3bbce083ad --- /dev/null +++ b/readme/dev/localisation.md @@ -0,0 +1,61 @@ +# Localisation + +Joplin is currently available in the languages below. If you would like to contribute a **new translation**, it is quite straightforward, please follow these steps: + +- [Download Poedit](https://poedit.net/), the translation editor, and install it. +- [Download the file to be translated](https://raw.githubusercontent.com/laurent22/joplin/dev/packages/tools/locales/joplin.pot). +- In Poedit, open this .pot file, go into the Catalog menu and click Configuration. Change "Country" and "Language" to your own country and language. +- From then you can translate the file. +- Once it is done, please [open a pull request](https://github.com/laurent22/joplin/pulls) and add the file to it. + +This translation will apply to the three applications - desktop, mobile and terminal. + +To **update a translation**, follow the same steps as above but instead of getting the .pot file, get the .po file for your language from the table below. + +Current translations: + + +  | Language | Po File | Last translator | Percent done +---|---|---|---|--- + | Arabic | [ar](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ar.po) | [Whaell O](mailto:Whaell@protonmail.com) | 84% + | Basque | [eu](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/eu.po) | juan.abasolo@ehu.eus | 21% + | Bosnian (Bosna i Hercegovina) | [bs_BA](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/bs_BA.po) | [Derviš T.](mailto:dervis.t@pm.me) | 54% + | Bulgarian (България) | [bg_BG](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/bg_BG.po) | | 42% + | Catalan | [ca](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ca.po) | [Xavi Ivars](mailto:xavi.ivars@gmail.com) | 92% + | Croatian (Hrvatska) | [hr_HR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/hr_HR.po) | [Milo Ivir](mailto:mail@milotype.de) | 97% + | Czech (Česká republika) | [cs_CZ](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/cs_CZ.po) | Fejby | 94% + | Dansk (Danmark) | [da_DK](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/da_DK.po) | ERYpTION | 97% + | Deutsch (Deutschland) | [de_DE](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/de_DE.po) | [Mr-Kanister](mailto:viger_gtrc@simplelogin.com) | 97% + | Eesti Keel (Eesti) | [et_EE](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/et_EE.po) | | 42% + | English (United Kingdom) | [en_GB](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/en_GB.po) | | 100% + | English (United States of America) | [en_US](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/en_US.po) | | 100% + | Español (España) | [es_ES](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/es_ES.po) | [Francisco Villaverde](mailto:teko.gr@gmail.com) | 93% + | Esperanto | [eo](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/eo.po) | Marton Paulo | 24% + | Finnish (Suomi) | [fi_FI](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/fi_FI.po) | mrkaato0 | 94% + | Français (France) | [fr_FR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/fr_FR.po) | Laurent Cozic | 100% + | Galician (España) | [gl_ES](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/gl_ES.po) | [Marcos Lans](mailto:marcoslansgarza@gmail.com) | 27% + | Indonesian (Indonesia) | [id_ID](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/id_ID.po) | [Wisnu Adi Santoso](mailto:waditos@gmail.com) | 84% + | Italiano (Italia) | [it_IT](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/it_IT.po) | [Manuel Tassi](mailto:mannivuwiki@gmail.com) | 76% + | 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) | 73% + | Nederlands (België, Belgique, Belgien) | [nl_BE](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/nl_BE.po) | | 74% + | Nederlands (Nederland) | [nl_NL](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/nl_NL.po) | [MHolkamp](mailto:mholkamp@users.noreply.github.com) | 97% + | Norwegian (Norge, Noreg) | [nb_NO](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/nb_NO.po) | [Mats Estensen](mailto:code@mxe.no) | 83% + | Persian | [fa](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/fa.po) | [Kourosh Firoozbakht](mailto:kourox@protonmail.com) | 52% + | Polski (Polska) | [pl_PL](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/pl_PL.po) | [X3NO](mailto:X3NO@disroot.org) | 85% + | Português (Brasil) | [pt_BR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/pt_BR.po) | [Fernando Nagase](mailto:nagase.fernando@gmail.com) | 97% + | Português (Portugal) | [pt_PT](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/pt_PT.po) | [Diogo Caveiro](mailto:dcaveiro@yahoo.com) | 68% + | Română | [ro](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ro.po) | [Cristi Duluta](mailto:cristi.duluta@gmail.com) | 48% + | Slovenian (Slovenija) | [sl_SI](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/sl_SI.po) | [Martin Korelič](mailto:martin.korelic@protonmail.com) | 76% + | Svenska | [sv](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/sv.po) | [Jonatan Nyberg](mailto:jonatan@autistici.org) | 97% + | Thai (ประเทศไทย) | [th_TH](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/th_TH.po) | | 34% + | Tiếng Việt | [vi](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/vi.po) | | 73% + | Türkçe (Türkiye) | [tr_TR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/tr_TR.po) | [Arda Kılıçdağı](mailto:arda@kilicdagi.com) | 97% + | Ukrainian (Україна) | [uk_UA](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/uk_UA.po) | [Vyacheslav Andreykiv](mailto:vandreykiv@gmail.com) | 95% + | Ελληνικά (Ελλάδα) | [el_GR](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/el_GR.po) | [Harris Arvanitis](mailto:xaris@tuta.io) | 94% + | Русский (Россия) | [ru_RU](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ru_RU.po) | [Титан](mailto:fignin@ya.ru) | 96% + | српски језик (Србија) | [sr_RS](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/sr_RS.po) | | 61% + | 中文 (简体) | [zh_CN](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/zh_CN.po) | [qx100](mailto:ztymaxwell@gmail.com) | 97% + | 中文 (繁體) | [zh_TW](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/zh_TW.po) | [Kevin Hsu](mailto:kevin.hsu.hws@gmail.com) | 84% + | 日本語 (日本) | [ja_JP](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ja_JP.po) | [genneko](mailto:genneko217@gmail.com) | 97% + | 한국어 | [ko](https://github.com/laurent22/joplin/blob/dev/packages/tools/locales/ko.po) | [Ji-Hyeon Gim](mailto:potatogim@potatogim.net) | 84% + \ No newline at end of file diff --git a/readme/dev/spec/_category_.yml b/readme/dev/spec/_category_.yml new file mode 100644 index 0000000000..d4bacddf16 --- /dev/null +++ b/readme/dev/spec/_category_.yml @@ -0,0 +1,4 @@ +position: 1 +label: 'Technical specifications' +collapsible: true +collapsed: true \ No newline at end of file diff --git a/readme/spec/architecture.md b/readme/dev/spec/architecture.md similarity index 92% rename from readme/spec/architecture.md rename to readme/dev/spec/architecture.md index 40de45329c..4d0bba6678 100644 --- a/readme/spec/architecture.md +++ b/readme/dev/spec/architecture.md @@ -2,9 +2,9 @@ Joplin as a project is organised around three main components: -- The user applications: For [desktop](https://github.com/laurent22/joplin/blob/dev/readme/desktop.md), [mobile](https://github.com/laurent22/joplin/blob/dev/readme/mobile.md) and [CLI](https://github.com/laurent22/joplin/blob/dev/readme/terminal.md)) +- The user applications: For [desktop](https://github.com/laurent22/joplin/blob/dev/readme/apps/desktop.md), [mobile](https://github.com/laurent22/joplin/blob/dev/readme/apps/mobile.md) and [CLI](https://github.com/laurent22/joplin/blob/dev/readme/apps/terminal.md)) - [Joplin Server](https://github.com/laurent22/joplin/blob/dev/packages/server/README.md) -- [Web Clipper](https://github.com/laurent22/joplin/blob/dev/readme/clipper.md) +- [Web Clipper](https://github.com/laurent22/joplin/blob/dev/readme/apps/clipper.md) ## User applications @@ -64,9 +64,9 @@ The Web Clipper is a browser extension for Firefox and Chrome. It is used to cap It is developed using the [WebExtensions API](https://extensionworkshop.com/documentation/develop/about-the-webextensions-api/) with the popup being done using React. -# More information +## More information -- [Plugin Architecture spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/plugins.md) -- [E2EE: Technical spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/e2ee.md) -- [E2EE: Workflow](https://github.com/laurent22/joplin/blob/dev/readme/spec/e2ee/workflow.md) -- [All Joplin technical specifications](https://github.com/laurent22/joplin/tree/dev/readme/spec) +- [Plugin Architecture spec](https://github.com/laurent22/joplin/blob/dev/readme/dev/spec/plugins.md) +- [E2EE: Technical spec](https://github.com/laurent22/joplin/blob/dev/readme/dev/spec/e2ee.md) +- [E2EE: Workflow](https://github.com/laurent22/joplin/blob/dev/readme/dev/spec/e2ee/workflow.md) +- [All Joplin technical specifications](https://github.com/laurent22/joplin/tree/dev/readme/dev/spec) diff --git a/readme/spec/clipper_auth.md b/readme/dev/spec/clipper_auth.md similarity index 100% rename from readme/spec/clipper_auth.md rename to readme/dev/spec/clipper_auth.md diff --git a/readme/spec/default_plugins.md b/readme/dev/spec/default_plugins.md similarity index 90% rename from readme/spec/default_plugins.md rename to readme/dev/spec/default_plugins.md index 6dec9ecd3f..a688907d6c 100644 --- a/readme/spec/default_plugins.md +++ b/readme/dev/spec/default_plugins.md @@ -6,17 +6,17 @@ To add a new default plugin for desktop: - For example, if you wanted to add 2 default settings, `settingName1` and `settingName2`, then you will modify the `defaultPlugins` object in following way: - ``` - const defaultPlugins = { - 'samplePluginId': { - version: '1.0.0', - settings: { - 'settingName1': 'setting-value1', - 'settingName2': 'setting-value2', - }, +``` +const defaultPlugins = { + 'samplePluginId': { + version: '1.0.0', + settings: { + 'settingName1': 'setting-value1', + 'settingName2': 'setting-value2', }, - }; - ``` + }, +}; +``` ## Bundling of default plugins diff --git a/readme/spec/desktop_styling.md b/readme/dev/spec/desktop_styling.md similarity index 100% rename from readme/spec/desktop_styling.md rename to readme/dev/spec/desktop_styling.md diff --git a/readme/spec/e2ee.md b/readme/dev/spec/e2ee/index.md similarity index 100% rename from readme/spec/e2ee.md rename to readme/dev/spec/e2ee/index.md diff --git a/readme/spec/e2ee/workflow.md b/readme/dev/spec/e2ee/workflow.md similarity index 100% rename from readme/spec/e2ee/workflow.md rename to readme/dev/spec/e2ee/workflow.md diff --git a/readme/spec/history.md b/readme/dev/spec/history.md similarity index 100% rename from readme/spec/history.md rename to readme/dev/spec/history.md diff --git a/readme/spec/interop_with_frontmatter.md b/readme/dev/spec/interop_with_frontmatter.md similarity index 100% rename from readme/spec/interop_with_frontmatter.md rename to readme/dev/spec/interop_with_frontmatter.md diff --git a/readme/spec/plugins.md b/readme/dev/spec/plugins.md similarity index 100% rename from readme/spec/plugins.md rename to readme/dev/spec/plugins.md diff --git a/readme/spec/read_only.md b/readme/dev/spec/read_only.md similarity index 100% rename from readme/spec/read_only.md rename to readme/dev/spec/read_only.md diff --git a/readme/spec/search_sorting.md b/readme/dev/spec/search_sorting.md similarity index 100% rename from readme/spec/search_sorting.md rename to readme/dev/spec/search_sorting.md diff --git a/readme/spec/server_debug.md b/readme/dev/spec/server_debug.md similarity index 100% rename from readme/spec/server_debug.md rename to readme/dev/spec/server_debug.md diff --git a/readme/spec/server_delta_sync.md b/readme/dev/spec/server_delta_sync.md similarity index 100% rename from readme/spec/server_delta_sync.md rename to readme/dev/spec/server_delta_sync.md diff --git a/readme/spec/server_file_url_format.md b/readme/dev/spec/server_file_url_format.md similarity index 100% rename from readme/spec/server_file_url_format.md rename to readme/dev/spec/server_file_url_format.md diff --git a/readme/spec/server_items.md b/readme/dev/spec/server_items.md similarity index 100% rename from readme/spec/server_items.md rename to readme/dev/spec/server_items.md diff --git a/readme/spec/server_sharing.md b/readme/dev/spec/server_sharing.md similarity index 100% rename from readme/spec/server_sharing.md rename to readme/dev/spec/server_sharing.md diff --git a/readme/spec/server_sharing_e2ee.md b/readme/dev/spec/server_sharing_e2ee.md similarity index 100% rename from readme/spec/server_sharing_e2ee.md rename to readme/dev/spec/server_sharing_e2ee.md diff --git a/readme/spec/server_user_status.md b/readme/dev/spec/server_user_status.md similarity index 100% rename from readme/spec/server_user_status.md rename to readme/dev/spec/server_user_status.md diff --git a/readme/spec/sync.md b/readme/dev/spec/sync.md similarity index 97% rename from readme/spec/sync.md rename to readme/dev/spec/sync.md index 785e9fbd70..0014813b05 100644 --- a/readme/spec/sync.md +++ b/readme/dev/spec/sync.md @@ -42,6 +42,6 @@ By default, the test units synchronise with an in-memory sync target, which is f ## See also -- [Synchronisation lock](https://github.com/laurent22/joplin/blob/dev/readme/spec/sync_lock.md) -- [E2EE: Technical spec](https://github.com/laurent22/joplin/blob/dev/readme/spec/e2ee.md) -- [E2EE: Workflow](https://github.com/laurent22/joplin/blob/dev/readme/spec/e2ee/workflow.md) +- [Synchronisation lock](https://github.com/laurent22/joplin/blob/dev/readme/dev/spec/sync_lock.md) +- [E2EE: Technical spec](https://github.com/laurent22/joplin/blob/dev/readme/dev/spec/e2ee.md) +- [E2EE: Workflow](https://github.com/laurent22/joplin/blob/dev/readme/dev/spec/e2ee/workflow.md) diff --git a/readme/spec/sync_lock.md b/readme/dev/spec/sync_lock.md similarity index 96% rename from readme/spec/sync_lock.md rename to readme/dev/spec/sync_lock.md index c74ce89237..57f284cf2e 100644 --- a/readme/spec/sync_lock.md +++ b/readme/dev/spec/sync_lock.md @@ -1,11 +1,11 @@ -# Lock types +# Synchronisation locks There are two types of locks: - **SYNC**: Used when synchronising a client with a target. There can be multiple SYNC locks simultaneously. - **EXCLUSIVE**: Used when a client upgrades a sync target. There can be only one EXCLUSIVE lock. -# Timeout +## Timeout When a client acquires a lock, it must refresh it every X seconds. A lock timeout after Y seconds (where X < Y). A lock with a timestamp greater than Y is considered expired and can be ignored by other clients. A client that tries to refresh a lock that has expired should fail. @@ -17,7 +17,7 @@ If the previous lock has expired, we shouldn't try to acquire a new one. This is In some cases it should be safe to re-acquire a lock but adding support for this would make the algorithm more complex without much benefits. -# Acquiring a SYNC lock +## Acquiring a SYNC lock - The client check if there is a valid EXCLUSIVE lock on the target - If there is, it must stop the sync process @@ -26,7 +26,7 @@ In some cases it should be safe to re-acquire a lock but adding support for this - When syncing is done, it releases the SYNC lock - If it doesn't, it acquires a SYNC lock and repeat the complete process from the beginning (to avoid race conditions) -# Acquiring an EXCLUSIVE lock +## Acquiring an EXCLUSIVE lock - The client check if there is a valid EXCLUSIVE or SYNC lock on the target - If there is, it must stop the upgrade process (or wait till target is unlocked) @@ -35,7 +35,7 @@ In some cases it should be safe to re-acquire a lock but adding support for this - When upgrading is done, it releases the EXCLUSIVE lock - If it doesn't, it acquires an EXCLUSIVE lock and repeat the complete process from the beginning (to avoid race conditions) -# Lock files +## Lock files The lock files are in format `__.json` with lockType being "exclusive" or "sync", clientType being "desktop", "mobile" or "cli" and clientId is the globally unique ID assigned to a client profile when it is created. @@ -54,7 +54,7 @@ The have the following content: Although only one client can acquire an exclusive lock, there can be multiple `exclusive_*.json` lock files in the lock folder (for example if a client crashed before releasing a lock or if two clients try to acquire a lock at the exact same time). In this case, only the oldest lock amongst the active ones is the valid one. If there are two locks with the same timestamp, the one with lowest client ID is the valid one. -# Sync Target Migration +## Sync Target Migration First the app checks the sync target version - if it's new (no version), it set it up by upgrading to the latest sync version. diff --git a/readme/spec/sync_scroll.md b/readme/dev/spec/sync_scroll.md similarity index 94% rename from readme/spec/sync_scroll.md rename to readme/dev/spec/sync_scroll.md index cd618c63ba..08bf3204d4 100644 --- a/readme/spec/sync_scroll.md +++ b/readme/dev/spec/sync_scroll.md @@ -38,7 +38,7 @@ The reasons why "ePercent" is not directly translated from "vPercent" and vice v The next figure shows the components and data interactions related to Markdown Editor and Sync Scroll. -First, underlying Markdown Editor is explained. Editor is implemented using [CodeMirror](https://codemirror.net/), and it provides the translation capability between line numbers of Markdown text and their pixel positions in Editor. A Markdown text being edited in Editor is converted to an HTML text using [MarkdownIt](https://github.com/markdown-it/markdown-it), and it is rendered by Viewer, which is implemented using [Electron's `