diff --git a/docs/api/get_started/plugins/index.html b/docs/api/get_started/plugins/index.html deleted file mode 100644 index 4a0a9b27d2..0000000000 --- a/docs/api/get_started/plugins/index.html +++ /dev/null @@ -1,469 +0,0 @@ - - - - - - - Getting started with plugin development | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Getting started with plugin development🔗

-

In this article you will learn the basic steps to build and test a plugin in Joplin.

-

Setting up your environment🔗

-

First you need to setup your environment:

-
    -
  • Make sure you have Node.js and git installed.
  • -
  • Install Joplin and run it in development mode.
  • -
-

You will also need to have Joplin installed and running in development mode, which we'll describe later.

-

But first install Yeoman and the Joplin Plugin Generator:

-
npm install -g yo generator-joplin
-
-

Then to create the plugin, run:

-
yo joplin
-
-

This will create the basic scafolding of the plugin. At the root of it, there is a number of configuration files which you normally won't need to change. Then the src/ directory will contain your code. By default, the project uses TypeScript, but you are free to use plain JavaScript too - eventually the project is compiled to plain JS in any case.

-

The src/ directory also contains a manifest.json file, which you can edit to set various information about the plugin, such as its name, homepage URL, etc.

-

Building the plugin🔗

-

The file src/index.ts already contain some basic code meant for testing the plugin. In particular it contains a call to joplin.plugins.register, which all plugins should call to register the plugin. And an onStart() event handler, which will be executed by Joplin when the plugin starts.

-

To try this basic plugin, compile the app by running the following from the root of the project:

-
npm run dist
-
-

Doing so should compile all the files into the dist/ directory. This is from here that Joplin will load the plugin.

-

Testing the plugin🔗

-

In order to test the plugin, you might want to run Joplin in Development Mode. Doing so means that Joplin will run using a different profile, so you can experiment with the plugin without risking to accidentally change or delete your data.

-

Finally, in order to test the plugin, open the Setting screen, then navigate the the Plugins section, and add the plugin path in the Development plugins text field. For example, if your plugin project path is /home/user/src/joplin-plugin, add this in the text field.

-

Restart the app, 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: "Test plugin started!".

-

Next steps🔗

-
    -
  • You might want to check the plugin tutorial to get a good overview of how to create a complete plugin and how to use the plugin API.
  • -
  • For more information about the plugin API, check the Plugin API reference.
  • -
- - - - -
- - - - diff --git a/docs/api/overview/index.html b/docs/api/overview/index.html deleted file mode 100644 index 74594d78cf..0000000000 --- a/docs/api/overview/index.html +++ /dev/null @@ -1,459 +0,0 @@ - - - - - - - Extending Joplin | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Extending Joplin🔗

-

Joplin provides a number of extension points to allow third-party applications to access its data, or to develop plugins.

-

The two main extension points are:

-
    -
  • -

    The data API, which is a server that provides access to Joplin data to external applications. It is possible, using standard HTTP calls, to create, modify or delete notes, notebooks, tags, etc. as well as attach files to notes and retrieve these files. This is for example how the web clipper communicates with Joplin.

    -
  • -
  • -

    The plugin API, which allows directly modifying Joplin by adding new features to the application. Using this API, you can:

    -
      -
    • Access notes, folders, etc. via the data API
    • -
    • Add a view to display custom data using HTML/CSS/JS
    • -
    • Create a dialog to display information and get input from the user
    • -
    • Create a new command and associate a toolbar button or menu item with it
    • -
    • Get access to the note currently being edited and modify it
    • -
    • Listen to various events and run code when they happen
    • -
    • Hook into the application to set additional options and customise Joplin's behaviour
    • -
    • Create a module to export or import data into Joplin
    • -
    • Define new settings and setting sections, and get/set them from the plugin
    • -
    -
  • -
- - - - -
- - - - diff --git a/docs/api/references/development_mode/index.html b/docs/api/references/development_mode/index.html deleted file mode 100644 index ea24d9a580..0000000000 --- a/docs/api/references/development_mode/index.html +++ /dev/null @@ -1,440 +0,0 @@ - - - - - - - Development mode | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Development mode🔗

-

When experimenting with Joplin, for example when developing a plugin or trying a theme, you might want to run Joplin in development mode. Doing so means that Joplin will run using a different profile, so you can experiment without risking to accidentally change or delete your data.

-

To enable Development Mode, open Joplin as normal, then go to Help => Copy dev mode command to clipboard. This will copy a command to the clipboard. Now close Joplin, and start it again in dev mode using the command you've just copied.

- - - - -
- - - - diff --git a/docs/api/references/plugin_api/classes/joplinviewsdialogs.html b/docs/api/references/plugin_api/classes/joplinviewsdialogs.html index 87a6131953..ca26299380 100644 --- a/docs/api/references/plugin_api/classes/joplinviewsdialogs.html +++ b/docs/api/references/plugin_api/classes/joplinviewsdialogs.html @@ -67,12 +67,33 @@
-

Allows creating and managing dialogs. A dialog is modal window that contains a webview and a row of buttons. You can update the update the webview using the setHtml method. - Dialogs are hidden by default and you need to call open() to open them. Once the user clicks on a button, the open call will return an object indicating what button was clicked - on. If your HTML content included one or more form, a formData object will also be included with the key/value for each form. - There is currently no "close" method since the dialog should be thought as a modal one and thus can only be closed by clicking on one of the buttons.

+

Allows creating and managing dialogs. A dialog is modal window that + contains a webview and a row of buttons. You can update the update the + webview using the setHtml method. Dialogs are hidden by default and + you need to call open() to open them. Once the user clicks on a + button, the open call will return an object indicating what button was + clicked on.

-

View the demo plugin

+ +

Retrieving form values

+
+

If your HTML content included one or more forms, a formData object + will also be included with the key/value for each form.

+ +

Special button IDs

+
+

The following buttons IDs have a special meaning:

+
    +
  • ok, yes, submit, confirm: They are considered "submit" buttons
  • +
  • cancel, no, reject: They are considered "dismiss" buttons
  • +
+

This information is used by the application to determine what action + should be done when the user presses "Enter" or "Escape" within the + dialog. If they press "Enter", the first "submit" button will be + automatically clicked. If they press "Escape" the first "dismiss" button + will be automatically clicked.

+

View the demo + plugin

- - - Plugin Manifest | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Plugin Manifest🔗

-

The manifest file is a JSON file that describes various properties of the plugin. If you use the Yeoman generator, it should be automatically generated based on the answers you've provided. The supported properties are:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameRequired?Description
manifest_versionYesFor now should always be "1".
nameYesName of the plugin. Should be a user-friendly string, as it will be displayed in the UI.
versionYesVersion number such as "1.0.0".
app_min_versionYesMinimum version of Joplin that the plugin is compatible with. In general it should be whatever version you are using to develop the plugin.
descriptionNoDetailed description of the plugin.
authorNoPlugin author name.
homepage_urlNoHomepage URL of the plugin. It can also be, for example, a link to a GitHub repository.
-

Here's a complete example:

-
{
-    "manifest_version": 1,
-    "name": "Joplin Simple Plugin",
-    "description": "To test loading and running a plugin",
-    "version": "1.0.0",
-    "author": "John Smith",
-    "app_min_version": "1.4",
-    "homepage_url": "https://joplinapp.org"
-}
-
- - - - -
- - - - diff --git a/docs/api/references/rest_api/index.html b/docs/api/references/rest_api/index.html deleted file mode 100644 index 590d3c7d94..0000000000 --- a/docs/api/references/rest_api/index.html +++ /dev/null @@ -1,1069 +0,0 @@ - - - - - - - Joplin Data API | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Joplin Data API🔗

-

This API is available when the clipper server is running. It provides access to the notes, notebooks, tags and other Joplin object via a REST API. Plugins can also access this API even when the clipper server is not running.

-

In order to use it, you'll first need to find on which port the service is running. To do so, open the Web Clipper Options in Joplin and if the service is running it should tell you on which port. Normally it runs on port 41184. If you want to find it programmatically, you may follow this kind of algorithm:

-
let port = null;
-for (let portToTest = 41184; portToTest <= 41194; portToTest++) {
-    const result = pingPort(portToTest); // Call GET /ping
-    if (result == 'JoplinClipperServer') {
-        port = portToTest; // Found the port
-        break;
-    }
-}
-
-

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.

-

This would be an example of valid cURL call using a token:

-
curl http://localhost:41184/notes?token=ABCD123ABCD123ABCD123ABCD123ABCD123
-
-

In the documentation below, the token will not be specified every time however you will need to include it.

-

Using the API🔗

-

All the calls, unless noted otherwise, receives and send JSON data. For example to create a new note:

-
curl --data '{ "title": "My note", "body": "Some note in **Markdown**"}' http://localhost:41184/notes
-
-

In the documentation below, the calls may include special parameters such as :id or :note_id. You would replace this with the item ID or note ID.

-

For example, for the endpoint DELETE /tags/:id/notes/:note_id, to remove the tag with ID "ABCD1234" from the note with ID "EFGH789", you would run for example:

-
curl -X DELETE http://localhost:41184/tags/ABCD1234/notes/EFGH789
-
-

The four verbs supported by the API are the following ones:

-
    -
  • GET: To retrieve items (notes, notebooks, etc.).
  • -
  • POST: To create new items. In general most item properties are optional. If you omit any, a default value will be used.
  • -
  • 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🔗

-

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:

-
curl http://localhost:41184/notes/ABCD123?fields=longitude,latitude
-
-

To get the IDs only of all the tags:

-
curl http://localhost:41184/tags?fields=id
-
-

By default API results will contain the following fields: id, parent_id, title

-

Pagination🔗

-

All API calls that return multiple results will be paginated and will return the following structure:

- - - - - - - - - - - - - - - - - - - - -
KeyAlways present?Description
itemsYesThe array of items you have requested.
has_moreYesIf true, there are more items after this page. If false, it means you have reached the end of the data set.
-

You can specify how the results should be sorted using the order_by and order_dir query parameters, and which page to retrieve using the page parameter (starts at and defaults to 1). You can specify the number of items to be returned using the limit parameter (the maximum being 100 items).

-

The following call for example will initiate a request to fetch all the notes, 10 at a time, and sorted by "updated_time" ascending:

-
curl http://localhost:41184/notes?order_by=updated_time&order_dir=ASC&limit=10
-
-

This will return a result like this

-
{ "items": [ /* 10 notes */ ], "has_more": true }
-
-

Then you will resume fetching the results using this query:

-
curl http://localhost:41184/notes?order_by=updated_time&order_dir=ASC&limit=10&page=2
-
-

Eventually you will get some results that do not contain an "has_more" paramater, at which point you will have retrieved all the results

-

As an example the pseudo-code below could be used to fetch all the notes:

-

-async function fetchJson(url) {
-	return (await fetch(url)).json();
-}
-
-async function fetchAllNotes() {
-	let pageNum = 1;
-	do {
-		const response = await fetchJson((http://localhost:41184/notes?page=' + pageNum++);
-		console.info('Printing notes:', response.items);
-	} while (response.has_more)
-}
-
-

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🔗

-
    -
  • 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🔗

-

Call GET /ping to check if the service is available. It should return "JoplinClipperServer" if it works.

-

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/#searching

-

To retrieve non-notes items, such as notebooks or tags, add a type parameter and set it to the required item type name. In that case, full text search will not be used - instead it will be a simple case-insensitive search. You can also use * as a wildcard. This is convenient for example to retrieve notebooks or tags by title.

-

For example, to retrieve the notebook named recipes: GET /search?query=recipes&type=folder

-

To retrieve all the tags that start with project-: GET /search?query=project-*&type=tag

-

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:

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameValue
note1
folder2
setting3
resource4
tag5
note_tag6
search7
alarm8
master_key9
item_change10
note_resource11
resource_local_state12
revision13
migration14
smart_filter15
command16
-

Notes🔗

-

Properties🔗

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
idtext
parent_idtextID of the notebook that contains this note. Change this ID to move the note to a different notebook.
titletextThe note title.
bodytextThe note body, in Markdown. May also contain HTML.
created_timeintWhen the note was created.
updated_timeintWhen the note was last updated.
is_conflictintTells whether the note is a conflict or not.
latitudenumeric
longitudenumeric
altitudenumeric
authortext
source_urltextThe full URL where the note comes from.
is_todointTells whether this note is a todo or not.
todo_dueintWhen the todo is due. An alarm will be triggered on that date.
todo_completedintTells whether todo is completed or not. This is a timestamp in milliseconds.
sourcetext
source_applicationtext
application_datatext
ordernumeric
user_created_timeintWhen the note was created. It may differ from created_time as it can be manually set by the user.
user_updated_timeintWhen the note was last updated. It may differ from updated_time as it can be manually set by the user.
encryption_cipher_texttext
encryption_appliedint
markup_languageint
is_sharedint
body_htmltextNote body, in HTML format
base_urltextIf body_html is provided and contains relative URLs, provide the base_url parameter too so that all the URLs can be converted to absolute ones. The base URL is basically where the HTML was fetched from, minus the query (everything after the '?'). For example if the original page was https://stackoverflow.com/search?q=%5Bjava%5D+test, the base URL is https://stackoverflow.com/search.
image_data_urltextAn image to attach to the note, in Data URL format.
crop_recttextIf 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🔗

-

Gets all notes

-

GET /notes/:id🔗

-

Gets note with ID :id

-

GET /notes/:id/tags🔗

-

Gets all the tags attached to this note.

-

GET /notes/:id/resources🔗

-

Gets all the resources attached to this note.

-

POST /notes🔗

-

Creates a new note

-

You can either specify the note body as Markdown by setting the body parameter, or in HTML by setting the body_html.

-

Examples:

-
    -
  • -

    Create a note from some Markdown text

    -
    curl --data '{ "title": "My note", "body": "Some note in **Markdown**"}' http://127.0.0.1:41184/notes
    -
    -
  • -
  • -

    Create a note from some HTML

    -
    curl --data '{ "title": "My note", "body_html": "Some note in <b>HTML</b>"}' http://127.0.0.1:41184/notes
    -
    -
  • -
  • -

    Create a note and attach an image to it:

    -
    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🔗

-

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🔗

-

Sets the properties of the note with ID :id

-

DELETE /notes/:id🔗

-

Deletes the note with ID :id

-

Folders🔗

-

This is actually a notebook. Internally notebooks are called "folders".

-

Properties🔗

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
idtext
titletextThe folder title.
created_timeintWhen the folder was created.
updated_timeintWhen the folder was last updated.
user_created_timeintWhen the folder was created. It may differ from created_time as it can be manually set by the user.
user_updated_timeintWhen the folder was last updated. It may differ from updated_time as it can be manually set by the user.
encryption_cipher_texttext
encryption_appliedint
parent_idtext
is_sharedint
-

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🔗

-

Gets folder with ID :id

-

GET /folders/:id/notes🔗

-

Gets all the notes inside this folder.

-

POST /folders🔗

-

Creates a new folder

-

PUT /folders/:id🔗

-

Sets the properties of the folder with ID :id

-

DELETE /folders/:id🔗

-

Deletes the folder with ID :id

-

Resources🔗

-

Properties🔗

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
idtext
titletextThe resource title.
mimetext
filenametext
created_timeintWhen the resource was created.
updated_timeintWhen the resource was last updated.
user_created_timeintWhen the resource was created. It may differ from created_time as it can be manually set by the user.
user_updated_timeintWhen the resource was last updated. It may differ from updated_time as it can be manually set by the user.
file_extensiontext
encryption_cipher_texttext
encryption_appliedint
encryption_blob_encryptedint
sizeint
is_sharedint
-

GET /resources🔗

-

Gets all resources

-

GET /resources/:id🔗

-

Gets resource with ID :id

-

GET /resources/:id/file🔗

-

Gets the actual file associated with this resource.

-

GET /resources/:id/notes🔗

-

Gets the notes (IDs) associated with a resource.

-

POST /resources🔗

-

Creates a new resource

-

Creating a new resource is special because you also need to upload the file. Unlike other API calls, this one must have the "multipart/form-data" Content-Type. The file data must be passed to the "data" form field, and the other properties to the "props" form field. An example of a valid call with cURL would be:

-
curl -F 'data=@/path/to/file.jpg' -F 'props={"title":"my resource title"}' http://localhost:41184/resources
-
-

The "data" field is required, while the "props" one is not. If not specified, default values will be used.

-

PUT /resources/:id🔗

-

Sets the properties of the resource with ID :id

-

DELETE /resources/:id🔗

-

Deletes the resource with ID :id

-

Tags🔗

-

Properties🔗

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NameTypeDescription
idtext
titletextThe tag title.
created_timeintWhen the tag was created.
updated_timeintWhen the tag was last updated.
user_created_timeintWhen the tag was created. It may differ from created_time as it can be manually set by the user.
user_updated_timeintWhen the tag was last updated. It may differ from updated_time as it can be manually set by the user.
encryption_cipher_texttext
encryption_appliedint
is_sharedint
parent_idtext
-

GET /tags🔗

-

Gets all tags

-

GET /tags/:id🔗

-

Gets tag with ID :id

-

GET /tags/:id/notes🔗

-

Gets all the notes with this tag.

-

POST /tags🔗

-

Creates a new tag

-

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🔗

-

Sets the properties of the tag with ID :id

-

DELETE /tags/:id🔗

-

Deletes the tag with ID :id

-

DELETE /tags/:id/notes/:note_id🔗

-

Remove the tag from the note.

- - - - -
- - - - diff --git a/docs/api/tutorials/toc_plugin/index.html b/docs/api/tutorials/toc_plugin/index.html deleted file mode 100644 index 99442b8b2c..0000000000 --- a/docs/api/tutorials/toc_plugin/index.html +++ /dev/null @@ -1,711 +0,0 @@ - - - - - - - Creating a table of content plugin | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Creating a table of content plugin🔗

-

This tutorial will guide you through the steps to create a table of content plugin for Joplin. It will display a view next to the current note that will contain links to the sections of a note. It will be possible to click on one of the header to jump to the relevant section.

-

Through this tutorial you will learn about several aspect of the Joplin API, including:

-
    -
  • The plugin API
  • -
  • How to create a webview
  • -
  • How to listen to changes in the user interface
  • -
-

Setting up your environment🔗

-

Before getting any further, make sure your environment is setup correctly as described in the Get Started guide.

-

Registering the plugin🔗

-

All plugins must register themselves and declare what events they can handle. To do so, open src/index.ts and register the plugin as below. We'll also need to run some initialisation code when the plugin starts, so add the onStart() event handler too:

-
// Import the Joplin API
-import joplin from 'api';
-
-// Register the plugin
-joplin.plugins.register({
-
-	// Run initialisation code in the onStart event handler
-	// Note that due to the plugin multi-process architecture, you should
-	// always assume that all function calls and event handlers are async.
-	onStart: async function() {
-		console.info('TOC plugin started!');
-	},
-
-});
-
-

If you now build the plugin and try to run it in Joplin, you should see the message TOC plugin started! in the dev console.

-

Getting the current note🔗

-

In order to create the table of content, you will need to access the content of the currently selected note, and you will need to refresh the TOC every time the note changes. All this can be done using the workspace API, which provides information about the active content being edited.

-

So within the onStart() event handler, add the following:

-
joplin.plugins.register({
-
-	onStart: async function() {
-
-		// Later, this is where you'll want to update the TOC
-		async function updateTocView() {
-			// Get the current note from the workspace.
-			const note = await joplin.workspace.selectedNote();
-
-			// Keep in mind that it can be `null` if nothing is currently selected!
-			if (note) {
-				console.info('Note content has changed! New note is:', note);
-			} else {
-				console.info('No note is selected');
-			}
-		}
-
-		// This event will be triggered when the user selects a different note
-		await joplin.workspace.onNoteSelectionChange(() => {
-			updateTocView();
-		});
-
-		// This event will be triggered when the content of the note changes
-		// as you also want to update the TOC in this case.
-		await joplin.workspace.onNoteContentChange(() => {
-			updateTocView();
-		});
-
-		// Also update the TOC when the plugin starts
-		updateTocView();
-	},
-
-});
-
-

Try the above and you should see in the console the event handler being called every time a new note is opened, or whenever the note content changes.

-

Getting the note sections and slugs🔗

-

Now that you have the current note, you'll need to extract the headers from that note in order to build the TOC from it. Since the note content is plain Markdown, there are several ways to do so, such as using a Markdown parser, but for now a quick and dirty solution is to get all the lines that start with any number of # followed by a space. Any such line should be a header.

-

The function below, which you can copy anywhere in your file, will use this method and return an array of headers, with the text and level (H1, H2, etc.) of header:

-
function noteHeaders(noteBody:string) {
-	const headers = [];
-	const lines = noteBody.split('\n');
-	for (const line of lines) {
-		const match = line.match(/^(#+)\s(.*)*/);
-		if (!match) continue;
-		headers.push({
-			level: match[1].length,
-			text: match[2],
-		});
-	}
-	return headers;
-}
-
-

Then call this function from your event handler:

-
joplin.plugins.register({
-
-	onStart: async function() {
-
-		async function updateTocView() {
-			const note = await joplin.workspace.selectedNote();
-
-			if (note) {
-				const headers = noteHeaders(note.body);
-				console.info('The note has the following headers', headers);
-			} else {
-				console.info('No note is selected');
-			}
-		}
-
-		// ...
-	},
-
-});
-
-

Later you will also need a way to generate the slug for each header. A slug is an identifier which is used to link to a particular header. Essentially a header text like "My Header" is converted to "my-header". And if there's already a slug with that name, a number is appended to it. Without going into too much details, you will need the "slug" package to generate this for you, so install it using npm i -s 'git+https://github.com/laurent22/uslug.git#emoji-support' from the root of your plugin directory (Note: you can also install the "uslug" package on its own, but it won't have emoji support).

-

Then this is the function you will need for Joplin, so copy it somewhere in your file:

-
const uslug = require('uslug');
-
-let slugs = {};
-
-function headerSlug(headerText) {
-	const s = uslug(headerText);
-	let num = slugs[s] ? slugs[s] : 1;
-	const output = [s];
-	if (num > 1) output.push(num);
-	slugs[s] = num + 1;
-	return output.join('-');
-}
-
-

And you will need a utility function to escape HTML. There are many packages to do this but for now you can simply use this:

-
// From https://stackoverflow.com/a/6234804/561309
-function escapeHtml(unsafe:string) {
-	return unsafe
-		.replace(/&/g, "&amp;")
-		.replace(/</g, "&lt;")
-		.replace(/>/g, "&gt;")
-		.replace(/"/g, "&quot;")
-		.replace(/'/g, "&#039;");
-}
-
-

Again try to run the plugin and if you select a note with multiple headers, you should see the header list in the console.

-

Creating a webview🔗

-

In order to display the TOC in Joplin, you will need a webview panel. Panels are a simple way to add custom content to the UI using HTML/CSS and JavaScript. First you would create the panel object and get back a view handler. Using this handler, you can set various properties such as the HTML content.

-

Here's how it could be done:

-
joplin.plugins.register({
-
-	onStart: async function() {
-		// Create the panel object
-		const panel = await joplin.views.panels.create();
-
-		// Set some initial content while the TOC is being created
-		await joplin.views.panels.setHtml(panel, 'Loading...');
-
-		async function updateTocView() {
-			const note = await joplin.workspace.selectedNote();
-			slugs = {}; // Reset the slugs
-
-			if (note) {
-				const headers = noteHeaders(note.body);
-
-				// First create the HTML for each header:
-				const itemHtml = [];
-				for (const header of headers) {
-					const slug = headerSlug(header.text);
-
-					// - We indent each header based on header.level.
-					//
-					// - The slug will be needed later on once we implement clicking on a header.
-					//   We assign it to a "data" attribute, which can then be easily retrieved from JavaScript
-					//
-					// - Also make sure you escape the text before inserting it in the HTML to avoid XSS attacks
-					//   and rendering issues. For this use the `escapeHtml()` function you've added earlier.
-					itemHtml.push(`
-						<p class="toc-item" style="padding-left:${(header.level - 1) * 15}px">
-							<a class="toc-item-link" href="#" data-slug="${escapeHtml(slug)}">
-								${escapeHtml(header.text)}
-							</a>
-						</p>
-					`);
-				}
-
-				// Finally, insert all the headers in a container and set the webview HTML:
-				await joplin.views.panels.setHtml(panel, `
-					<div class="container">
-						${itemHtml.join('\n')}
-					</div>
-				`);
-			} else {
-				await joplin.views.panels.setHtml(panel, 'Please select a note to view the table of content');
-			}
-		}
-
-		// ...
-	},
-
-});
-
-

Now run the plugin again and you should see the TOC dynamically updating as you change notes.

-

Styling the view🔗

-

In order to better integrate the TOC to Joplin, you might want to style it using CSS. To do so, first add a webview.css file next to index.ts, then you will need to let Joplin know about this file. This is done using the addScript() function (which is also used to add JavaScript files as we'll see later), like so:

-
const panel = await joplin.views.panels.create();
- // Add the CSS file to the view, right after it has been created:
-await joplin.views.panels.addScript(panel, './webview.css');
-
-

This file is just a plain CSS file you can use to style your view. Additionally, you can access from there a number of theme variables, which you can use to better integrate the view to the UI. For example, using these variables you can use a dark background in dark mode, and a light one in light mode.

-

The CSS file below would give the view the correct font color and family, and the right background colour:

-
/* In webview.css */
-
-.container {
-	background-color: var(--joplin-background-color);
-	color: var(--joplin-color);
-	font-size: var(--joplin-font-size);
-	font-family: var(--joplin-font-family);
-}
-
-.toc-item a {
-	color: var(--joplin-color);
-	text-decoration: none;
-}
-
-

Try the plugin and the styling should be improved. You may also try to switch to dark or light mode and see the style being updated.

-

Making the webview interactive🔗

-

The next step is to make the TOC interactive so that when the user clicks on a link, the note is scrolled to right header. This can be done using an external JavaScript file that will handle the click events. As for the CSS file, create a webview.js file next to index.ts, then add the script to the webview:

-
// In index.ts
-
-const panel = joplin.views.createWebviewPanel();
-await joplin.views.panels.addScript(panel, './webview.css');
-await joplin.views.panels.addScript(panel, './webview.js'); // Add the JS file
-
-

To check that everything's working, let's create a simple event handler that display the header slug when clicked:

-
// In webview.js
-
-// There are many ways to listen to click events, you can even use
-// something like jQuery or React. This is how it can be done using
-// plain JavaScript:
-document.addEventListener('click', event => {
-	const element = event.target;
-	// If a TOC header has been clicked:
-	if (element.className === 'toc-item-link') {
-		// Get the slug and display it:
-		const slug = element.dataset.slug;
-		console.info('Clicked header slug: ' + slug);
-	}
-});
-
-

If everything works well, you should now see the slug in the console whenever you click on a header link. The next step will be to use that slug to scroll to the right header.

-

Passing messages between the webview and the plugin🔗

-

For security reason, webviews run within their own sandbox (iframe) and thus do not have access to the Joplin API. You can however send messages to and from the webview to the plugin, and you can call the Joplin API from the plugin.

-

From within a webview, you have access to the webviewApi object, which among others has a postMessage() function you can use to send a message to the plugin. Let's use this to post the slug info to the plugin:

-

Change webview.js like so:

-
document.addEventListener('click', event => {
-	const element = event.target;
-	if (element.className === 'toc-item-link') {
-		// Post the message and slug info back to the plugin:
-		webviewApi.postMessage({
-			name: 'scrollToHash',
-			hash: element.dataset.slug,
-		});
-	}
-});
-
-

Then from the plugin, in src/index.ts, you can listen to this message using the onMessage() handler. Then from this handler, you can call the scrollToHash command and pass it the slug (or hash).

-
joplin.plugins.register({
-	onStart: async function() {
-		const panel = await joplin.views.panels.create();
-
-		// ...
-
-		await joplin.views.panels.onMessage(panel, (message) => {
-			if (message.name === 'scrollToHash') {
-				// As the name says, the scrollToHash command makes the note scroll
-				// to the provided hash.
-				joplin.commands.execute('scrollToHash', message.hash)
-			}
-		});
-
-		// ...
-	}
-
-	// ...
-
-

And that's it! If you run this code you should now have a fully functional TOC. The full source code is available there:

-

https://github.com/laurent22/joplin/tree/dev/packages/app-cli/tests/support/plugins/toc/

-

Various improvements can be made such as improving the styling, making the header collapsible, etc. but that tutorial should provide the basic building blocks to do so. You might also want to check the plugin API for further information or head to the development forum for support.

- - - - -
- - - - diff --git a/docs/blog/20180621-182112/index.html b/docs/blog/20180621-182112/index.html deleted file mode 100644 index 8cc3b96a41..0000000000 --- a/docs/blog/20180621-182112/index.html +++ /dev/null @@ -1,444 +0,0 @@ - - - - - - - Web Clipper now available on Firefox and Chrome | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Web Clipper now available on Firefox and Chrome🔗

-

One of the most requested feature, the Web Clipper, is now available on the Firefox and Chrome store. It is possible to save a whole web page, or a simplified version of it, or a screenshot directly from the browser to Joplin. Like the rest of Joplin, the HTML page will be converted to Markdown, which means it can be easily edited and read even without a special viewer, and, since it's plain text, it also makes it easier to search and share the content.

-

Have a look at the Web Clipper documentation for more information.

-

-
-

url: https://www.patreon.com/posts/web-clipper-now-19589638
-published_at: 2018-06-21T17:21:12.000+00:00

- - - - -
- - - - diff --git a/docs/blog/20180906-111039/index.html b/docs/blog/20180906-111039/index.html deleted file mode 100644 index c286fc2d3f..0000000000 --- a/docs/blog/20180906-111039/index.html +++ /dev/null @@ -1,445 +0,0 @@ - - - - - - - New iOS release with improved attachment support | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

New iOS release with improved attachment support🔗

-

-

The iOS version for iPhone, iPad and iPod sometimes lags behind the Android one due to the App Store release process being more complex. However it eventually catches up, as is the case with the latest release, which includes all the features and bug fixes from the past few months.

-

In particular a feature that's been needed for a while - the ability to open resources (eg. PDF files or other attachments) in external viewers. That means all that's available in desktop - notes and attachments - is now also fully available on mobile, making the app much more useful. In this release there are also quite a few optimisations to the sync process so in some cases it should be faster, as well as better support for WebDAV. Finally there are various small fixes and improvements, such as support for SVG vector graphics, improved math formula support, etc.

-

All these improvements are also found in the recently released macOS, Windows, Linux and Android versions.

-
-

url: https://www.patreon.com/posts/new-ios-release-21242395
-published_at: 2018-09-06T10:10:39.000+00:00

- - - - -
- - - - diff --git a/docs/blog/20180916-210431/index.html b/docs/blog/20180916-210431/index.html deleted file mode 100644 index 2fcdb97a3c..0000000000 --- a/docs/blog/20180916-210431/index.html +++ /dev/null @@ -1,444 +0,0 @@ - - - - - - - Note properties in desktop application | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Note properties in desktop application🔗

-

-

The new desktop version of Joplin for Windows, macOS and Linux features a new dialog box to view and edit the note properties, such as the updated date, created date, source URL or even location. It's a small change but it can be useful. This dialog can be accessed by clicking on the Information icon in the toolbar.

-

As usual this release also includes various bug fixes and improvements. More information on the changelog: https://joplinapp.org/changelog/

-
-

url: https://www.patreon.com/posts/note-properties-21454692
-published_at: 2018-09-16T20:04:31.000+00:00

- - - - -
- - - - diff --git a/docs/blog/20180929-121053/index.html b/docs/blog/20180929-121053/index.html deleted file mode 100644 index 84636f628e..0000000000 --- a/docs/blog/20180929-121053/index.html +++ /dev/null @@ -1,444 +0,0 @@ - - - - - - - New release and many bug fixes | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

New release and many bug fixes🔗

-

Reliability and stability is an important feature of Joplin as the application can potentially manage thousands of notes spanning many years (My oldest note, imported from another software, is from October 1999!). A stable interface without too many glitches also makes for a more pleasant user experience. For these reasons, bug fixes are always given high priority in this project, and are usually worked on before any new feature is added. The latest release for instance pretty much only contains bug fixes - eight of them, including one security fix.

-

Joplin is not bug free yet, there are still a few issues here and there, that sometimes depend on the user's hardware or configuration, and others that are hard to replicate or fix, but the app is getting there - more stable with each new release.

-

More information about this release and download link in the changelog - https://joplinapp.org/changelog/

-
-

url: https://www.patreon.com/posts/new-release-and-21717193
-published_at: 2018-09-29T11:10:53.000+00:00

- - - - -
- - - - diff --git a/docs/blog/20181004-091123/index.html b/docs/blog/20181004-091123/index.html deleted file mode 100644 index cf973994f8..0000000000 --- a/docs/blog/20181004-091123/index.html +++ /dev/null @@ -1,446 +0,0 @@ - - - - - - - Joplin and Hacktobertfest 2018 🎃 | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Joplin and Hacktobertfest 2018 🎃🔗

-

The Hacktobertfest event  has started - it allows you to contribute to Joplin and, at the end of  the month, after having done 5 PR, you'll earn a limited edition  T-shirt.

-

To participate, go on https://hacktoberfest.digitalocean.com/  log in (with you github account) and you are ready to get in.

-

Next, go dive into the Joplin issues list labelled "Hacktoberfest"

-

We hope you will enjoy that event by contributing to the project which is a nice moment of sharing good vibe 🎃 🎉

-

PS: the 5 Pull Request don't have to be done only on Joplin project, those can be done on any FOSS projects.

-
-

url: https://www.patreon.com/posts/joplin-and-2018-21841975
-published_at: 2018-10-04T08:11:23.000+00:00

- - - - -
- - - - diff --git a/docs/blog/20181101-174335/index.html b/docs/blog/20181101-174335/index.html deleted file mode 100644 index 200a547bf6..0000000000 --- a/docs/blog/20181101-174335/index.html +++ /dev/null @@ -1,449 +0,0 @@ - - - - - - - Hacktoberfest has now ended | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Hacktoberfest has now ended🔗

-

Hacktoberfest has now ended - many thanks to all those who have contributed. Some of the pull requests are not merged yet but they will be soon. For information, this is the number of pull requests per month on the project, so there was approximately a 30% increase in October:

-

Oct - 26

-

Sep - 20

-

Aug - 8

-

Jul - 3

-

Jun - 4

-

May - 18

-

Again many thanks to all those who have submitted a pull request, your efforts to improve the project are much appreciated!

-
-

url: https://www.patreon.com/posts/hacktoberfest-22447274
-published_at: 2018-11-01T17:43:35.000+00:00

- - - - -
- - - - diff --git a/docs/blog/20181213-173459/index.html b/docs/blog/20181213-173459/index.html deleted file mode 100644 index 8178159ca0..0000000000 --- a/docs/blog/20181213-173459/index.html +++ /dev/null @@ -1,447 +0,0 @@ - - - - - - - Joplin is now featured on PrivacyTools.io | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Joplin is now featured on PrivacyTools.io🔗

-

Joplin is now featured on PrivacyTools.io, a site dedicated to providing knowledge and tools to protect people's privacy against global mass surveillance. The app was kindly submitted by Mats Estensen on GitHub and accepted soon after.

-

Since day one the Joplin project has indeed been concerned with privacy - offering End To End Encryption and supporting open standards, including WebDAV for synchronisation. Setting up Joplin synchronisation can be more complicated than other existing note applications, but the advantage is that once it is done you 100% own the data and even the infrastructure if you use Nextcloud on your own server.

-

The applications do not track users, and of course there is not and will never be ads. It also makes very few web requests (outside of synchronisation). In fact only two requests are made, and both can be disabled in the options:

-

- One for geolocation tagging, to associate a latitude and longitude with a note.

-

- One for the auto-update checks. It makes a request to GitHub to check if a new version has been released.

-

This endorsement by PrivacyTools is great news for the project. It means more users, and that our efforts to create a privacy-respecting tool are going in the right direction.

-
-

url: https://www.patreon.com/posts/joplin-is-now-on-23311940
-published_at: 2018-12-13T17:34:59.000+00:00

- - - - -
- - - - diff --git a/docs/blog/20190130-230218/index.html b/docs/blog/20190130-230218/index.html deleted file mode 100644 index cc814be3ca..0000000000 --- a/docs/blog/20190130-230218/index.html +++ /dev/null @@ -1,447 +0,0 @@ - - - - - - - New search engine in Joplin | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

New search engine in Joplin🔗

-

The original search engine in Joplin was pretty limited - it would search for your exact query and that is it. For example if you search for "recipe cake" it would return results that contain exactly this word in this order and nothing else - it would not return "apple cake recipe" or "recipe for birthday cake", thus forcing you to try various queries.

-

The last versions of Joplin include a new search engine that provides much better results, and also allow better specifying search queries.

-

The search engine indexes in real time the content of the notes, thus it can give back results very fast. It is also built on top of SQLite FTS and thus support all its queries. Unlike the previous search engine, the new one also sorts the results by relevance.

-

The first iteration of this new search engine was a bit limited when it comes to non-English text. For example, for searching text that contains accents or non-alphabetical characters. So in the last update, better support for this was also added - accentuated and non-accentuated characters are treated in the same way, and languages like Russian, Chinese, Japanese or Korean can be searched easily.

-

This search engine is still new so it is likely to change over time. For example, ordering the results by relevance is a bit experimental, and some edge cases might not work for non-English language queries. If you notice any issue, feel free to report it on the forum or GitHub. The new search engine is in use in both the mobile and desktop application.

-

-
-

url: https://www.patreon.com/posts/new-search-in-24342206
-published_at: 2019-01-30T23:02:18.000+00:00

- - - - -
- - - - diff --git a/docs/blog/20190404-074157/index.html b/docs/blog/20190404-074157/index.html deleted file mode 100644 index e1a1749373..0000000000 --- a/docs/blog/20190404-074157/index.html +++ /dev/null @@ -1,446 +0,0 @@ - - - - - - - Markdown plugins and Goto Anything | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Markdown plugins and Goto Anything🔗

-

The latest release includes two relatively important new features:

-

The first one, is the addition of several Markdown plugins that enable new features: for example it's now possible to add a table of contents to your notes, to enable footnotes, or to render various text decorations, such as superscript, subscript, highlighting, etc. This was all made possible thanks to the efforts of Caleb John.

-

-

The second major new feature is the addition of the Goto Anything dialog. Press Ctrl+P or Cmd+P and type the title of a note to jump directly to it. You can also type # followed by a tag or @ followed by a notebook title. The feature was largely inspired by the cool Sublime Text Goto Anything feature.

-

-
-

url: https://www.patreon.com/posts/markdown-plugins-25864443
-published_at: 2019-04-04T06:41:57.000+00:00

- - - - -
- - - - diff --git a/docs/blog/20190424-112410/index.html b/docs/blog/20190424-112410/index.html deleted file mode 100644 index 149c15c5ca..0000000000 --- a/docs/blog/20190424-112410/index.html +++ /dev/null @@ -1,446 +0,0 @@ - - - - - - - The Joplin forum is one year old | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

The Joplin forum is one year old🔗

-

Exactly one year ago, on 24 April 2018, the Joplin forum was created as a result of this post on GitHub. Before this, the only way to discuss the project was indeed on the GitHub bug tracker, which is not ideal for general discussion about features, development and so on.

-

After looking at various options, eventually we settled on Discourse, which provides a nice clean UI, works well on mobile, and is easy to manage. Even better, the Discourse team was kind enough to host the project for us for free, as part of their Free hosting program for open source projects. Not having to manage or pay for the server is great, and it means more time can be spent developing the application.

-

On the opening day, there was only three users - me, foxmask and zblesk, joined a few days later by tessus, merlinuwe, jhf2442, sciurius and many others. Today there are 811 users, 6700 posts, about 15 new posts created each day, and about 2000 pageviews each day.

-

The forum has been very useful to discuss features and development, to provide support and news, and to organise events such as Hacktoberfest. It also serves as a knowledge base (via the search function) to provide solutions regarding various Joplin issues.

-

Of course the forum has also been great to develop the community around the Joplin project, and hopefully will keep serving us well for the years to come!

-
-

url: https://www.patreon.com/posts/joplin-forum-is-26325959
-published_at: 2019-04-24T10:24:10.000+00:00

- - - - -
- - - - diff --git a/docs/blog/20190523-231026/index.html b/docs/blog/20190523-231026/index.html deleted file mode 100644 index ece17b1840..0000000000 --- a/docs/blog/20190523-231026/index.html +++ /dev/null @@ -1,456 +0,0 @@ - - - - - - - Note history now in Joplin | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Note history now in Joplin🔗

-

The latest versions of Joplin adds 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.

-

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.

-

How to view the history of a note?🔗

-

While all the apps save revisions, currently only the desktop one allow viewing these revisions.

-

To do so, click on the Information icon in the toolbar, then select "Previous version of this note".

-

-

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.

-

-

How to configure the note history feature?🔗

-

Additional options are available in the "Note History" section of the configuration screen. 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.

-
-

url: https://www.patreon.com/posts/note-history-now-27083082
-published_at: 2019-05-23T22:10:26.000+00:00

- - - - -
- - - - diff --git a/docs/blog/20190611-000711/index.html b/docs/blog/20190611-000711/index.html deleted file mode 100644 index c4f0134b70..0000000000 --- a/docs/blog/20190611-000711/index.html +++ /dev/null @@ -1,446 +0,0 @@ - - - - - - - Changing attachment download behaviour to save disk space | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Changing attachment download behaviour to save disk space🔗

-

One issue that came up frequently in the forum is that Joplin's data can be very large, especially when the note collection includes many attachments (images, PDFs, etc.). This happens in particular when using the web clipper a lot, as each web page usually has many images included.

-

The recent versions of Joplin (Desktop, mobile and CLI) attempt to mitigate this issue by providing an option to change how attachments are downloaded during synchronisation.

-

-

The default option is to download all the attachments, all the time, so that the data is available even when the device is offline. However, more importantly, there's now the option to download the attachments manually, by clicking on it, or automatically, in which case the attachments are downloaded only when a note is opened.

-

These changes should help saving disk space and network bandwidth, especially on mobile.

-
-

url: https://www.patreon.com/posts/changing-to-save-27539487
-published_at: 2019-06-10T23:07:11.000+00:00

- - - - -
- - - - diff --git a/docs/blog/20190613-202613/index.html b/docs/blog/20190613-202613/index.html deleted file mode 100644 index 7789de7294..0000000000 --- a/docs/blog/20190613-202613/index.html +++ /dev/null @@ -1,446 +0,0 @@ - - - - - - - Customising your notes with the help of the development tools and CSS | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Customising your notes with the help of the development tools and CSS🔗

-

In Joplin desktop, it has been possible to customise the appearance of your notes using CSS for quite some time.

-

An issue however is that it is difficult to know what CSS to write and how to select specific elements with CSS. The development tools that were just added allow figuring this out. They are available under the menu Help > Toggle development tools.

-

-

Then, from the "Elements" tab, it is possible to select an element and view the corresponding HTML as well as styles. It is also possible to modify the style in real time and view the changes before adding them to userstyle.css.

-

-
-

url: https://www.patreon.com/posts/customising-your-27609047
-published_at: 2019-06-13T19:26:13.000+00:00

- - - - -
- - - - diff --git a/docs/blog/20190814-225957/index.html b/docs/blog/20190814-225957/index.html deleted file mode 100644 index eaf93e5a3d..0000000000 --- a/docs/blog/20190814-225957/index.html +++ /dev/null @@ -1,455 +0,0 @@ - - - - - - - Joplin now supports Fountain screenwriting markup language | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Joplin now supports Fountain screenwriting markup language🔗

-

Fountain is markup language for screenwriting. Similar to Markdown, it is a lightweight markup format, which allows editing screenplays in plain text.

-

The desktop and mobile Joplin applications now support Fountain, allowing you to write and read your screenplays on your computer or on the go. To add a Fountain screenplay to a note simply wrap it into a fenced block, with the "fountain" identifier. For example:

-

-\*\*FADE IN:\*\*
-
-A RIVER.
-
-We're underwater, watching a fat catfish swim along.  
-
-
-

For example, here is Big Fish on mobile:

-

-

and on desktop:

-

-
-

url: https://www.patreon.com/posts/joplin-now-29169691
-published_at: 2019-08-14T21:59:57.000+00:00

- - - - -
- - - - diff --git a/docs/blog/20190925-000254/index.html b/docs/blog/20190925-000254/index.html deleted file mode 100644 index 8257082e19..0000000000 --- a/docs/blog/20190925-000254/index.html +++ /dev/null @@ -1,460 +0,0 @@ - - - - - - - New icon for Joplin! | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

New icon for Joplin!🔗

-

The Joplin icon is going to change soon. The one we have now is something I put together quickly, not knowing if the project would interest someone, so I didn't want to spend too much time on it. Now that the project is more mature, it makes sense to start improving the visuals - first the icon, then the logo font, the website and finally the app UI (although these have already been improved little by little over the past year).

-

Before picking an icon, I'd be interested to hear about your feedback and whether you have a preference among those below. They all share the same idea - which is something that looks like a note, and that contains a "J" too.

-

Feedback is welcome! And if you have a preference please answer this post and put your top 2 or 3 icons in your post and we'll do a tally in a few days.

-

Icon A

-

-

Icon B

-

-

Icon C

-

-

Icon D

-

-

Icon E

-

-

Icon F

-

-

Icon G

-

-

Icon H

-

-
-

url: https://www.patreon.com/posts/new-icon-for-30218482
-published_at: 2019-09-24T23:02:54.000+00:00

- - - - -
- - - - diff --git a/docs/blog/20190929-152834/index.html b/docs/blog/20190929-152834/index.html deleted file mode 100644 index 8b230655f9..0000000000 --- a/docs/blog/20190929-152834/index.html +++ /dev/null @@ -1,453 +0,0 @@ - - - - - - - Hacktoberfest 2019 is coming soon! | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Hacktoberfest 2019 is coming soon!🔗

-

A word form @foxmask, our community manager!

-

* * *

-

Hacktoberfest is back this year again for our great pleasure ^^

-

here are the rules to participate:

-
-

To qualify for the official limited edition Hacktoberfest shirt, you must register and make four pull requests (PRs) between October 1-31 (in any time zone). PRs can be made to any public repo on GitHub, not only the ones with issues labeled Hacktoberfest. This year, the first 50,000 participants who successfully complete the challenge will earn a T-shirt.

-
-

To participate go to https://hacktoberfest.digitalocean.com/, log in (with you GitHub account) and you are ready to get in.

-

Next, go dive into the Joplin issues list labelled "Hacktoberfest".

-

Start hacking, submit the PR from the 1st of October, not before.

-

We hope you will enjoy that event this year again like the previous one  🎃 🎉

-

PS: the 4 Pull Request don’t have to be done only on Joplin project, those can be done on any FOSS projects. Even PR for issue not tagged as 'hacktoberfest'

-
-

url: https://www.patreon.com/posts/hacktoberfest-is-30334358
-published_at: 2019-09-29T14:28:34.000+00:00

- - - - -
- - - - diff --git a/docs/blog/20191012-233121/index.html b/docs/blog/20191012-233121/index.html deleted file mode 100644 index 741259f1ff..0000000000 --- a/docs/blog/20191012-233121/index.html +++ /dev/null @@ -1,453 +0,0 @@ - - - - - - - Support for chemical equations using mhchem for Katex | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Support for chemical equations using mhchem for Katex🔗

-

The next version of Joplin will feature support for chemical equations using mhchem for Katex.

-

For example this mhchem syntax will be rendered as below in Joplin:

-
-

$\ce{CO2 + C -> 2 CO}$

-
-
-

$C_p[\ce{H2O(l)}] = \pu{75.3 J // mol K}$

-
-
-

$\ce{Hg^2+ ->[I-] HgI2 ->[I-] [Hg^{II}I4]^2-}$

-
-

-
-

url: https://www.patreon.com/posts/support-for-for-30712513
-published_at: 2019-10-12T22:31:21.000+00:00

- - - - -
- - - - diff --git a/docs/blog/20191014-165136/index.html b/docs/blog/20191014-165136/index.html deleted file mode 100644 index 23c557532e..0000000000 --- a/docs/blog/20191014-165136/index.html +++ /dev/null @@ -1,445 +0,0 @@ - - - - - - - New Joplin icon, second round | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

New Joplin icon, second round🔗

-

The quest for a new Joplin icon  continue - first many thanks for the votes and feedback! It definitely  helped getting a better sense of what would make a great icon.

-

Taking all this into account, the remaining candidates are the 5  following icons. The first three were the top voted icons, and the  following two are based on the feedback here and on the forum.

-

Again that would be great if you could vote for your top 2 icons. I  expect the winner among these will be the next Joplin icon. Also of  course general feedback is welcome too!

-

-
-

url: https://www.patreon.com/posts/new-joplin-icon-30751136
-published_at: 2019-10-14T15:51:36.000+00:00

- - - - -
- - - - diff --git a/docs/blog/20191101-131852/index.html b/docs/blog/20191101-131852/index.html deleted file mode 100644 index 897b9cf2ba..0000000000 --- a/docs/blog/20191101-131852/index.html +++ /dev/null @@ -1,449 +0,0 @@ - - - - - - - Hacktoberfest 2019 has now ended 🎃 | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Hacktoberfest 2019 has now ended 🎃🔗

-

We got lots of great contributions for Hacktoberfest 2019, including:

-
    -
  • 48 pull requests opened
  • -
  • 39 pull requests merged
  • -
-

This year, one small issue is that we got 11 "spam" contributions, as in pull requests that are created only as a way to get a the Hacktoberfest T-shirt. It's not too many, thankfully, but it still makes us lose time as we need to review the code, and sometimes ask questions, to which we get no answer, etc.

-

On the other hand, the total number of valid pull requests is high, at 48 it's nearly twice as many as last year (we got 26 in 2018).  Many of these are great improvements to Joplin and they will be part of the coming release.

-

Thanks a lot to all the contributors! Also many thanks to our admins, tessus, for his valuable help reviewing and commenting on many pull requests, and foxmask for organising the event.

-
-

url: https://www.patreon.com/posts/hacktoberfest-31221846
-published_at: 2019-11-01T13:18:52.000+00:00

- - - - -
- - - - diff --git a/docs/blog/20191117-183855/index.html b/docs/blog/20191117-183855/index.html deleted file mode 100644 index 75b4487f17..0000000000 --- a/docs/blog/20191117-183855/index.html +++ /dev/null @@ -1,454 +0,0 @@ - - - - - - - And the winner is... | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

And the winner is...🔗

-

After much discussion and votes and new logo and icon for Joplin has finally been decided:

-

-

In the end, it is an icon relatively similar to the previous one but with a unique style for the "J", which gives it a distinctive look.

-

Perhaps that's the best way - evolving and cleaning up the icon rather than radically changing it. Another advantage of this icon is that it does not represent any specific object (it's not a note, or notebook), so it does not restrict the scope of the project, which as it grows, is becoming more than just a tool to take notes.

-

Finally, this icon scales well at different sizes, including down to 16x16 pixels which we need for tray icons. It also works well inside circles (for Android) and square shapes.

-

Over the next few weeks, the icon and logo will be updated in the various apps and websites. That will give an opportunity to refresh the icons used throughout the apps, as several of them have incorrect dimensions, in particular on desktop and Android.

-

For information, this was the final tally, with Patreon and forum votes combined, with more weight (2 points) given to the first choice:

-

A 30

-

B 45

-

C 115

-

D 135

-

E 61

-

Many thanks to everyone who's contributed to the votes and discussion!

-
-

url: https://www.patreon.com/posts/and-winner-is-31636650
-published_at: 2019-11-17T18:38:55.000+00:00

- - - - -
- - - - diff --git a/docs/blog/20191118-072700/index.html b/docs/blog/20191118-072700/index.html deleted file mode 100644 index 5a904bb95d..0000000000 --- a/docs/blog/20191118-072700/index.html +++ /dev/null @@ -1,452 +0,0 @@ - - - - - - - Joplin is looking into joining Google Summer of Code in 2020 | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Joplin is looking into joining Google Summer of Code in 2020🔗

-

-

Joplin is looking into joining Google Summer of Code next summer. The application period as organisation is expected to happen in the second half of January 2020. Until then Joplin hopes to have multiple active discussion and may even have some easy commits in regard to the application and potential projects.

-

For those who don’t know, GSoC is a summer internship sponsored by Google, where open source organisations get full-time students as interns (paid by Google) to help take care of tasks. It’s a huge boon to many open source projects, allowing potentially some impressive progress to take place, and therefore many organisations try to qualify.

-

In order to apply, we'd need:

-
    -
  • A list of good task suggestions for students. These tasks need to be things that can be realistically done by someone working full-time over a single summer. Students can suggest other tasks, but we are going to provide some suggestions.
  • -
  • People volunteering to mentor a student. Mentoring requires continuous communication and contact with the student, as well as responding to requests and questions. I’ve mentored in the past, and it’s a fun experience.
  • -
-

Fell free to make a suggestion or offer support by creating topics in the Features category of the forum and tagging them by #GSoC and #2020, if it is directly related to the upcoming coding season. More details on how to contribute will be published soon.

-

In general, Google wants to know that its money is put to good use, so we, as the Joplin community, need to show active involvement in this, leading to a solid schedule of desired deliverables during the coding phase.

-

The GSoC application is managed by @PackElend. He is an open source enthusiast with a big believe in a fair economy. He has recognised that Joplin has the potential to become one of the best note taking apps, and he sees the GSoC has a great opportunity to bring certain essential features to Joplin. PackElend mentored students in the past for another project and thus is aware of the pitfalls. He would appreciate if he could get support in giving the documentation the final touch.

-
-

url: https://www.patreon.com/posts/joplin-is-into-31650911
-published_at: 2019-11-18T07:27:00.000+00:00

- - - - -
- - - - diff --git a/docs/blog/20200220-190804/index.html b/docs/blog/20200220-190804/index.html deleted file mode 100644 index c4de017b97..0000000000 --- a/docs/blog/20200220-190804/index.html +++ /dev/null @@ -1,444 +0,0 @@ - - - - - - - GSoC 2020: Joplin has been accepted as a mentor organization! | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

GSoC 2020: Joplin has been accepted as a mentor organization!🔗

-

Good news, our Google Summer of Code 2020 application has been accepted!

-

Since we made the announcement back in November, we already had a few students submitted pull requests and getting themselves familiar with the codebase.

-

We hope some of them will work on the project ideas we've suggested, and develop some great features this summer!

-
-

url: https://www.patreon.com/posts/gsoc-2020-joplin-34196835
-published_at: 2020-02-20T19:08:04.000+00:00

- - - - -
- - - - diff --git a/docs/blog/20200301-125055/index.html b/docs/blog/20200301-125055/index.html deleted file mode 100644 index d488577572..0000000000 --- a/docs/blog/20200301-125055/index.html +++ /dev/null @@ -1,460 +0,0 @@ - - - - - - - Large desktop update coming soon | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Large desktop update coming soon🔗

-

I haven't kept up with releases lately and thus the new one is quite big, it includes 8 new features, 3 security fixes, 19 improvements, and 29 bug fixes. Here's a summary of what to expect:

-

Mermaid diagram support

-

Mermaid was one of the most requested features, and it is finally here. The diagrams can be inserted using a fenced block, and all the diagrams supported by the library should be available, including Flow, Sequence, Gantt, Class, State and Pie diagrams.

-

-

More info in the Mermaid Markdown documentation

-

Word counter dialog

-

A dialog is now available to provide statistics about the current note. It includes line, word and character count:

-

-

To open it, click on the post-it toolbar icon.

-

Improved tag management

-

Also included are several improvement to tags, such as the possibility to add or remove tags from multiple notes, improved sorting of tags in certain contexts, and various other fixes.

-

Security fixes

-

Joplin having to deal with potentially sensitive data, it is build with privacy and security in mind. We also try to fix any reported security issue as quickly as possible.

-

This release in particular includes a fix to an XSS vulnerability, which could have allowed an attacker, via a targetted attack and a specially crafted note, to exfiltrate user data. As far as we are aware, this flaw had not been exploited yet.

-

Finally, the geolocation service on the desktop application was previously using an http service to get the user location. We now use instead an https URL, which will increase privacy.

-

Linux

-

It is often more difficult to keep up with Linux due to the wide variety of distributions, desktop environments, and the differences between them from one version to the next.

-

We however try to keep it stable, and regularly get fixes and updates from Linux users. This release includes support for the --no-sandbox flag, required to get the app starting on certain systems, and an optimisation to Nextcloud and WebDAV sync, which could previously be very slow, using persistent connections.

-

The update is already available as a pre-release on the GitHub release page, and should be available as a final release soon.

-
-

url: https://www.patreon.com/posts/large-desktop-34477238
-published_at: 2020-03-01T12:50:55.000+00:00

- - - - -
- - - - diff --git a/docs/blog/20200314-001555/index.html b/docs/blog/20200314-001555/index.html deleted file mode 100644 index bbfe9ff6e5..0000000000 --- a/docs/blog/20200314-001555/index.html +++ /dev/null @@ -1,454 +0,0 @@ - - - - - - - Experimental WYSIWYG editor in Joplin | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Experimental WYSIWYG editor in Joplin🔗

-

The latest pre-release of Joplin (v1.0.194) includes a new WYSIWYG editor, a prototype for now, but a first step towards integrating this feature into Joplin.

-

-

WYSIWYG is probably the most requested feature in Joplin - it's the second most up-voted on GitHub, and one of the most viewed and commented on post in the forum.

-

Please note however that this feature is experimental at this stage - don't use it for important notes as you may lose the content of the note, or it might get corrupted.

-

If you are interested in this editor though it might make sense to use it for less important notes, so as to evaluate it and report bugs and issues you might find.

-

This is a technically challenging component because it needs to convert between Markdown and HTML, and vice-versa. Joplin already includes robust HTML-to-MD and MD-to-HTML conversion modules (battle tested respectively in the web clipper and the desktop/mobile client), and this new editor is based on this technology. It is possible however that there are various edge cases that I have not thought of.

-

Thus your support to test and validate (or invalidate) this idea would be very much appreciated! If it turns out it does not make sense technically to support this editor, for example if some bugs are critical and can't be solved, it might be removed at a later date, but hopefully all bugs will be fixable. Please report issues you might find on GitHub, on this post. In there, there's also a list of features that remains to be implemented.

-

At the moment, the feature is a bit hidden. To enable it, go into the menu View => Layout button sequence, and choose "Split / WYSIWYG". Then click on the Layout button to toggle between modes.

-

Missing features

-

Some features are missing, most notably the ability to insert plugin blocks such as Katex or Mermaid, so you would have to create them first in the split view. Once created, they can however be edited.

-

One issue to be aware of, one that cannot be easily fixed, is that some Markdown plugins are not supported by the editor. This is because once the Markdown is converted to HTML, and displayed in the WYSIWYG editor, it cannot be converted back to the original Markdown. Some plugins are supported, such as Katex, Fountain or Mermaid. But others are not, like the multi-md table. So if you open a note that contains a multi-md table in the WYSIWYG editor and save, the original multi-md Markdown will be lost, and you'll get back a plain Markdown table.

-

Again if you find any issue, please report it on GitHub: https://github.com/laurent22/joplin/issues/176

-

-
-

url: https://www.patreon.com/posts/experimental-in-34246624
-published_at: 2020-03-14T00:15:55.000+00:00

- - - - -
- - - - diff --git a/docs/blog/20200406-224254/index.html b/docs/blog/20200406-224254/index.html deleted file mode 100644 index 2951a1e90b..0000000000 --- a/docs/blog/20200406-224254/index.html +++ /dev/null @@ -1,472 +0,0 @@ - - - - - - - Joplin informal encryption and security audit results | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Joplin informal encryption and security audit results🔗

-

Joplin encryption, and in particular the E2EE system used during synchronisation, was recently audited by Isaac Potoczny-Jones, CEO of Tozny and this is what he had to say:

-
-

I was looking through your encryption implementation for Joplin and I have a few comments and concerns. I don't see anything that I *know* is a critical issue, but there are a number of choices and weaknesses that I'd like to lend you some advice about.

-
-

OBC2🔗

-
-

OCB2, the chosen multi-block cipher mode has had some weaknesses identified in the last few years. I don't know this mode well since it's not a NIST-approved mode, but here's a paper on the topic. I get the impression it's not considered a good choice anymore. Source

-
-

We indeed had been notified about this issue by another cryptographer and had been preparing migration to the more secure CCM mode. Migration for this is now complete in all the Joplin clients and a migration tool has been added to the Encryption config screen of the desktop application. In particular you can perform two operations:

-
    -
  • Upgrade the master key: This will convert the master key encryption to CCM
  • -
  • Re-encryption: With this tool, you can re-encrypt all your data using the new encryption method based on CCM. Please follow the instructions on this screen and note that this process can take quite a bit of time so it's better to plan for it and run it over night. It is not entirely clear how the OBC2 flaw can be exploited but it is best to upgrade your data as soon as possible.
  • -
-

Unnecessary key expansions🔗

-
-

Running key expansion on a random key: Your encrypt function uses either 1k or 10k rounds of key derivation. The goal of this is to reduce brute-force attacks against user-chosen passwords. This function appears to me to be used for both password-based key derivation (at 10k rounds) *and* bulk encryption of data from a randomly-generated "master key" (at 1k rounds). The bulk encryption does not need the password expansion since the key is randomly generated (presumably with a cryptographically strong generator). I suspect this could be a major performance issue on the bulk encryption of raw data, so if you're finding encryption slow, this is maybe why.

-
-

This is more a performance than a security issue. Indeed, the previous encryption method was using 1,000 key expansion iterations every time a note was encrypted, which is unnecessary since the master key is already secured with 10,000 iterations. As a result the encryption algorithm has been changed to perform only 100 iterations when encrypting notes, which should result in faster encryption and decryption on the desktop, mobile and CLI applications.

-

Unnecessary and potentially insecure master key checksum🔗

-
-

You make and store a checksum of the master password with SHA256 in addition to encrypting it. I expect this is because you need a way to tell if the user's password is correct. I've never seen this done before, and it has me concerned, but I don't know for sure that it's an issue. Thought I'd mention it anyway. Source. At least with CCM mode (and I think with OCB2) it shouldn't successfully decrypt if you have the wrong password.

-
-

A checksum was previously stored with the master key to verify that it is valid. This could potentially weaken the security of the mater key since, as mentioned in Cryptography StackExchange link, "in the standard model of hash functions there isn't a requirement that hash outputs not have properties that leak information about the input". It was also unnecessary since the decryption algorithm in use would fail if the key is invalid, so the additional checksum was not needed.

-

This has also been addressed by the new master key upgrading tool. If you have performed the upgrade, the checksum will be gone from your master key.

-

Encrypting local secrets with a keychain service🔗

-
-

Now I did notice that you cache the plain text password in the database, which is a bit concerning, but I guess the security model of your encryption approach is that it happens during sync, not locally. The generally accepted approach [to store secrets] is to use a keychain service, which is available pretty much on all modern platforms.

-
-

Passwords are indeed cached locally, so that you don't have to input it again every time a note needs to be encrypted or decrypted for synchronisation. It is assumed that your local device is secure, which is why for now passwords were cached locally.

-

To improve security however, future versions of Joplin will use the system keychain whenever it is available. A pull request is in progress to add this feature.

-

To conclude I'd like to thank Isaac Potoczny-Jones for conducting this audit and revealing these potential security issues. Joplin is now much safer as a result.

-
-

url: https://www.patreon.com/posts/joplin-informal-35719724
-published_at: 2020-04-06T21:42:54.000+00:00

- - - - -
- - - - diff --git a/docs/build_troubleshooting/index.html b/docs/build_troubleshooting/index.html deleted file mode 100644 index dd7095295b..0000000000 --- a/docs/build_troubleshooting/index.html +++ /dev/null @@ -1,472 +0,0 @@ - - - - - - - Desktop application | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Desktop application🔗

-

On Windows🔗

-

If yarn dist fails, it may need administrative rights.

-

If you get an error MSB8020: The build tools for v140 cannot be found. try to run with a different toolset version, eg npm install --toolset=v141 (See here for more info). You may also try to install npm --vs2015 install --global windows-build-tools (the --vs2015 flag is to get toolkit "v140", which is what is used by default).

-

There are various errors that can occur from an improper build environment (such as MSBUILD: error MSB3428). It is recommended to install windows-build-tools with the command npm install --global windows-build-tools (elevation required) and then using these two commands to set the environmental variables to the proper values:

-
call "C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\VC\Auxiliary\Build\vcvarsamd64_x86.bat" 
-set "PATH=C:\Program Files\nodejs;%PATH%"
-
-

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

-

If you get a node-gyp related error, you might need to manually install it: npm install -g node-gyp.

-

If you get the error libtool: unrecognized option '-static', follow the instructions in this post to use the correct libtool version.

-

Other issues🔗

-
-

The application window doesn't open or is white

-
-

This is an indication that there's an early initialisation error. Try this:

-
    -
  • In ElectronAppWrapper, set debugEarlyBugs to true. This will force the window to show up and should open the console next to it, which should display any error.
  • -
  • In more rare cases, an already open instance of Joplin can create strange low-level bugs that will display no error but will result in this white window. A non-dev instance of Joplin, or a dev instance that wasn't properly closed might cause this. So make sure you close everything and try again. Perhaps even other Electron apps running (Skype, Slack, etc.) could cause this?
  • -
  • Also try to delete node_modules and rebuild.
  • -
  • If all else fails, switch your computer off and on again, to make sure you start clean.
  • -
-
-

How to work on the app from Windows?

-
-

You should not use WSL at all because this is a GUI app that lives outside of WSL, and the WSL layer can cause all kind of very hard to debug issues. It can also lock files in node_modules that cannot be unlocked when the app crashes. (You need to restart your computer.) Likewise, don't run the TypeScript watch command from WSL.

-

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🔗

-

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:

-
cd ios
-pod deintegrate
-pod install
-
- - - - -
- - - - diff --git a/docs/changelog/index.html b/docs/changelog/index.html deleted file mode 100644 index 9326ac667a..0000000000 --- a/docs/changelog/index.html +++ /dev/null @@ -1,1817 +0,0 @@ - - - - - - - Joplin changelog | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Joplin changelog🔗

-

v1.3.18 - 2020-11-06T12:07:02Z🔗

-
    -
  • Regression: Random crash when syncing due to undefined tags (#4051)
  • -
  • Fixed: Keymap editor crash when an invalid command is used (#4049)
  • -
-
-
    -
  • New: Add support for application plugins (#3257)
  • -
  • New: Added Thunderbird count for desktop client (#3880 by @Technik-J)
  • -
  • New: Added support for Menu API for plugins
  • -
  • New: Added support for plugins packaged as JS bundles
  • -
  • New: Added openProfileDirectory command and menu item
  • -
  • New: Api: Added service to access resource external editing
  • -
  • New: Plugins: Add the openNote, openFolder and openTag commands
  • -
  • Security: Remove "link" and "meta" tags from notes to prevent XSS (Discovered by Phil Holbrook)
  • -
  • Improved: Make “update is available” dialog box easier to use (#3877 by @roryokane)
  • -
  • Improved: Sort tags in a case-insensitive way
  • -
  • 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: Api: Allow preserving timestamps when updating a note
  • -
  • Improved: Added support for a custom S3 URL (#3921) (#3691 by @aaron)
  • -
  • Improved: Actually enter insert mode after pressing o/O in CodeMirror vim mode (#3897 by Caleb John)
  • -
  • Improved: Simplified and improve command service, and added command palette
  • -
  • Improved: Tray: Exit -> Quit (#3945 by Helmut K. C. Tessarek)
  • -
  • Improved: Import <strike>, <s> tags (strikethrough) from Evernote (#3936 by Ian Slinger)
  • -
  • Improved: Make sidebar item font weight normal (not bold)
  • -
  • 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)
  • -
  • Improved: Disabled emoji highlighting in editor when emoji plugin is disabled (#3852 by Rahil Sarvaiya)
  • -
  • Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting (#3777 by @shawnaxsom)
  • -
  • Improved: Make sure all commands appear in keymap editor
  • -
  • Fixed: Add history backward and forward commands to keymap and menus (#4010)
  • -
  • Fixed: Fixed handling of Option key for shortcuts in macOS
  • -
  • Fixed: Fix slow Katex rendering when there are many global definitions (#3993)
  • -
  • 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)
  • -
  • Fixed: Handle gzipped CSS files when importing from clipper (#3986)
  • -
  • Fixed: Update highlight.js to fix freeze for certain code blocks (#3992)
  • -
  • Fixed: Fix search filters when language is in Korean or with accents (#3947 by Naveen M V)
  • -
  • Fixed: Fixed freeze when importing ENEX as HTML, and fixed potential error when importing resources (#3958)
  • -
  • 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)
  • -
  • Fixed: Allows toggling external editing off and on again (#3886)
  • -
  • Fixed: Fixed toggleNoteList and toggleSidebar commands
  • -
  • Fixed: Fixed Toggle Editor button tooltip and icon
  • -
-

v1.3.15 - 2020-11-04T12:22:50Z🔗

-
    -
  • New: Add support for application plugins (#3257)
  • -
  • New: Added Thunderbird count for desktop client (#3880 by @Technik-J)
  • -
  • New: Added support for Menu API for plugins
  • -
  • New: Added support for plugins packaged as JS bundles
  • -
  • New: Added openProfileDirectory command and menu item
  • -
  • New: Api: Added service to access resource external editing
  • -
  • New: Plugins: Add the openNote, openFolder and openTag commands
  • -
  • Security: Remove "link" and "meta" tags from notes to prevent XSS (Discovered by Phil Holbrook)
  • -
  • Improved: Make “update is available” dialog box easier to use (#3877 by @roryokane)
  • -
  • Improved: Sort tags in a case-insensitive way
  • -
  • 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: Api: Allow preserving timestamps when updating a note
  • -
  • Improved: Added support for a custom S3 URL (#3921) (#3691 by @aaron)
  • -
  • Improved: Actually enter insert mode after pressing o/O in CodeMirror vim mode (#3897 by Caleb John)
  • -
  • Improved: Simplified and improve command service, and added command palette
  • -
  • Improved: Tray: Exit -> Quit (#3945 by Helmut K. C. Tessarek)
  • -
  • Improved: Import <strike>, <s> tags (strikethrough) from Evernote (#3936 by Ian Slinger)
  • -
  • Improved: Make sidebar item font weight normal (not bold)
  • -
  • 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)
  • -
  • Improved: Disabled emoji highlighting in editor when emoji plugin is disabled (#3852 by Rahil Sarvaiya)
  • -
  • Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting (#3777 by @shawnaxsom)
  • -
  • Improved: Make sure all commands appear in keymap editor
  • -
  • Fixed: Add history backward and forward commands to keymap and menus (#4010)
  • -
  • Fixed: Fixed handling of Option key for shortcuts in macOS
  • -
  • Fixed: Fix slow Katex rendering when there are many global definitions (#3993)
  • -
  • 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)
  • -
  • Fixed: Handle gzipped CSS files when importing from clipper (#3986)
  • -
  • Fixed: Update highlight.js to fix freeze for certain code blocks (#3992)
  • -
  • Fixed: Fix search filters when language is in Korean or with accents (#3947 by Naveen M V)
  • -
  • Fixed: Fixed freeze when importing ENEX as HTML, and fixed potential error when importing resources (#3958)
  • -
  • 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)
  • -
  • Fixed: Allows toggling external editing off and on again (#3886)
  • -
  • Fixed: Fixed toggleNoteList and toggleSidebar commands
  • -
  • Fixed: Fixed Toggle Editor button tooltip and icon
  • -
-

v1.2.6 - 2020-10-09T13:56:59Z🔗

-
    -
  • New: Updated UI (#3586)
  • -
  • Improved: Add frequently used languages to markdown editor (#3786 by Carlos Eduardo)
  • -
  • Improved: Adjust the codemirror code block colors for the dark theme (#3794 by Caleb John)
  • -
  • Improved: Disable auto-update by default
  • -
  • Improved: Extend functionality of codemirror vim (#3823 by Caleb John)
  • -
  • Improved: Improved handling of database migration failures
  • -
  • Improved: Optimised sidebar rendering speed
  • -
  • Improved: Upgrade Mermaid to v8.8.0 (#3745) (#3740 by Caleb John)
  • -
  • Fixed: Add stricter rules for katex blocks (#3795) (#3791 by Caleb John)
  • -
  • Fixed: Allow Read Time label to be translated (#3684)
  • -
  • Fixed: Always use light theme for notes in HTML mode (#3698)
  • -
  • Fixed: Disable editor shortcuts when a dialog, such as GotoAnything, is visible (#3700)
  • -
  • Fixed: Fade out checked items in Rich Text editor too
  • -
  • Fixed: Fix bug where editor would scroll to focus global search (#3787 by Caleb John)
  • -
  • Fixed: Fix missed highlighting when using the global search (#3717 by Caleb John)
  • -
  • Fixed: Fixed editor font size (#3801)
  • -
  • Fixed: Fixed issue when switching from search to "All notes" (#3748)
  • -
  • Fixed: Improved handling of special characters when exporting to Markdown (#3760)
  • -
  • Fixed: Notebooks and tags click area was too narrow (#3876)
  • -
  • Fixed: Only disable relevant toolbar buttons when editor is read-only (#3810)
  • -
  • Fixed: Prevent crash in rare case when opening the config screen (#3835)
  • -
  • Fixed: Refresh search results when searching by tag and when a tag is changed (#3754)
  • -
-

v1.1.4 - 2020-09-21T11:20:09Z🔗

-
    -
  • New: Add keyboard shortcut editor (#3525 by Anjula Karunarathne)
  • -
  • New: Add log statement to try to fix issue #3536
  • -
  • Improved: Change codemirror default home and end to be visual line based (#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
  • -
  • Improved: Fuzzy search (#3632 by Naveen M V)
  • -
  • Improved: Make codemirror the default code editor (#3703) (#3560 by Caleb John)
  • -
  • 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)
  • -
  • Security: Upgrade packages to fix vulnerabilities
  • -
  • Fixed: Creating a note after backward redirection places it in a wrong notebook (#3759 by Naveen M V)
  • -
  • Fixed: Fix applying tags to multiple notes (#3710)
  • -
  • Fixed: Fix bug with quotes when searching (#3735 by Naveen M V)
  • -
  • Fixed: Fix wildcard search (#3713 by Naveen M V)
  • -
  • Fixed: Fixed clock sync logic when creating new sync target
  • -
  • Fixed: Fixed copying link in Rich Text editor (#3697)
  • -
  • Fixed: Fixed note export when there are folders with non-existing parents. Also fixed long path issue on Windows. (#3689)
  • -
  • Fixed: Fixed viewer font size, in particular for inline code (#3553)
  • -
  • Fixed: Increased file extension limit to 20 to prevent issue when using external editors (#3696)
  • -
  • Fixed: Use joplin list handling in emacs mode (#3758) (#3749 by Caleb John)
  • -
-

v1.0.245 - 2020-09-09T12:56:10Z🔗

-

This release is to fix the sync lock issues on devices that have an incorrect clock. Specifically, it should fix this error: "Cannot acquire sync lock: either the lock could be written but not read back. Or it was expired before it was read again".

-

v1.0.242 - 2020-09-04T22:00:34Z🔗

-
    -
  • Fixes sync target upgrade issue when custom TLS settings are used
  • -
-

v1.0.241 - 2020-09-04T18:06:00Z🔗

-

This release will ask you to upgrade your sync target and, once it is done, only the latest clients will be able to sync with this sync target. So please make sure you upgrade your other clients too (mobile, cli, etc.).

-

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)
  • -
  • New: Add version info to error screen
  • -
  • New: Added KeymapService to manage keyboard shortcuts (#3252 by Anjula Karunarathne)
  • -
  • New: Added attach file to menu bar (#3540 by @R3dError)
  • -
  • New: Add search filters (#3213) (#1877 by Naveen M V)
  • -
  • Security: Apply latest package security updates
  • -
  • Improved: Add support for OneDrive for Business (#3433) (#1266 by @jonath92)
  • -
  • Improved: Codemirror: clean up list indent code (#3581 by @CalebJohn)
  • -
  • Improved: Enable CodeMirror keybindings (#3545 by @CalebJohn)
  • -
  • Improved: Fix AppImage Icon (#3570) (#3529 by @Jesssullivan)
  • -
  • Improved: Hide completed to-dos in GotoAnything (#3580)
  • -
  • Improved: Implement scroll-past-end on CodeMirror editor (#3589 by @CalebJohn)
  • -
  • Improved: Show full folder name in mouse-over pop-up text (#3590) (#3569 by Allan Jacquet-Cretides)
  • -
  • Improved: Toggle Editor rather than setting split mode on search (#3561 by @CalebJohn)
  • -
  • Fixed: Fixed copy, cut and paste in Rich Text editor (#3565)
  • -
  • Fixed: Fixed scrolling issue when editing while searching in CodeMirror (#3593 by @CalebJohn)
  • -
  • Fixed: Fixed sync fetching issue (#3599) (#3591 by @alexchee)
  • -
  • Fixed: Fixed vim mode issue where status bar was not visible (#3606 by @CalebJohn)
  • -
  • Fixed: Modify the CodeMirror linter plugin to fix katex (#3582) (#3560 by @CalebJohn)
  • -
  • Fixed: Fixed Katex font rendering (#3664)
  • -
  • Fixed: Fix links within Mermaid documents (#3618)
  • -
-

v1.0.233 - 2020-08-01T14:51:15Z🔗

-
    -
  • New: Add support for AWS S3 synchronisation (Beta) (#2815 by @alexchee)
  • -
  • Security: Fixed a path traversal vulnerability in clipper server API that could allow an attacker to read or write an arbitrary file (CVE-2020-15844). Vulnerability found by Benjamin Harris.
  • -
  • Improved: Improved GotoAnything speed and made it safer
  • -
  • Improved: Enable searching in editor rather than the viewer for CodeMirror (#3360 by @CalebJohn)
  • -
  • Improved: Enforce that whitespace check for unindent checks the begining of a (#3515 by @CalebJohn)
  • -
  • Improved: Load more CodeMirror modes for syntax highlighting (#3401 by @CalebJohn)
  • -
  • Improved: Split Codemirror setOptions into different effects (#3522 by @CalebJohn)
  • -
  • Fixed: Fix filename when exporting notebook as Markdown (#3473)
  • -
  • Fixed: Fixed alarms on macOS
  • -
  • Fixed: Improve Markdown rendering in CodeMirror, in particular for math expressions (#3448) (#3440 by @CalebJohn)
  • -
  • Fixed: Crash when applying tags to multiple notes from within another tag (#3481)
  • -
  • Fixed: Fixed regression when moving note to notebook from menu (#3482)
  • -
  • Fixed: Editor window was no longer being resized with the main window (#3503)
  • -
  • 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)
  • -
  • 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)
  • -
  • Fixed: Note links would be broken after saving a note in Rich Text editor (#3510)
  • -
  • Fixed: Regression: Fix sort tags alphabetically in side-menu (#3489 by Vaidotas Šimkus)
  • -
  • Fixed: Regression: Fixed adding a new sub-notebook to a notebook
  • -
  • Fixed: Revealing file in Windows did not work (#3366)
  • -
  • Fixed: Undoing changes multiple time on an existing note could result in a blank note (#3534)
  • -
  • Fixed: Fixed potential crash when notebook does not have a title
  • -
  • Fixed: Fixed toolbar button state when going from setting screen to main screen
  • -
-

v1.0.227 - 2020-07-07T20:44:54Z🔗

-
    -
  • New: Add approximate reading time to note statistics (#3373 by @cadolphs)
  • -
  • Improved: Codemirror: Remove cancelled keys in favour of explicit keymaps (#3417 by @CalebJohn)
  • -
  • Improved: Manually refresh codemirror whenever the window size changes (#3388 by @CalebJohn)
  • -
  • Improved: Refactored command system
  • -
  • Fixed: Fix link color for dark theme (#3391 by Helmut K. C. Tessarek)
  • -
  • Fixed: Fixed custom order when note title is changed (#3412)
  • -
  • Fixed: Fixed import of checkboxes in ENEX files (#3402)
  • -
  • Fixed: Only de-duplicate imported notebook titles when needed (#2331)
  • -
  • Fixed: Prevent code highlighting from freezing the app in some cases (#3281)
  • -
  • 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)
  • -
  • Fixed: WYSIWYG: Fixed inserting date time and other content inside header
  • -
-

v1.0.224 - 2020-06-20T22:26:08Z🔗

-
    -
  • Fixed regression in v1.0.223
  • -
-

v1.0.220 - 2020-06-13T18:26:22Z🔗

-
    -
  • Improved: Improved escaping of Markdown titles in links (#3333)
  • -
  • 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)
  • -
-

v1.0.218 - 2020-06-07T10:43:34Z🔗

-
    -
  • Fixed: Fixed regression when applying theme for Ace Editor (#3338) (#3337 by @CalebJohn)
  • -
  • Fixed: Regression: Fixed issue with note being needlessly reloaded in WYSIWYG editor
  • -
-

v1.0.216 - 2020-05-24T14:21:01Z🔗

-

This release includes a rewrite of the note editor component in order to allow further improvements (which were no longer possible) and to make it easier to maintain both WYSIWYG editors and regular editor.

-

A new button "Code View" has been added to switch between the WYSIWYG editor and the Markdown editor.

-

The note-specific toolbar has also been moved next to the title field for now because it wasn't practical to leave it with the editor-specific toolbar (and also not logical). It might be tweaked or moved later on once we have a clearer idea of what we want to do.

-

Finally, the tag bar has been moved to the top of the note editor pane. Again this was in part necessary after the refactoring, but also more logical since the tags are relevant to the note, but not to the note content. So it makes more sense to have the editor toolbar right next to the editor content, without the tag bar in between, as before.

-
    -
  • New: Add + to access 'Zoom In', allows to use the numpad (#2630 by Helmut K. C. Tessarek)
  • -
  • New: Add option to "Reveal file in folder" when right-clicking on image
  • -
  • New: Added support for basic search
  • -
  • 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)
  • -
  • Security: Filter SVG element event attributes to prevent XSS vulnerability (#3143)
  • -
  • Improved: Made sidebar chevrons consistent
  • -
  • Improved: Add note history (back/forward buttons) (#2819) (#2409 by Naveen M V)
  • -
  • Improved: Moved note-related toolbar button next to tag bar
  • -
  • Improved: Switch to Font Awesome as icon library (#3137)
  • -
  • Improved: Upgraded to Electron 8.2.5
  • -
  • Improved: WYSIWYG: Allow pasting images in editor
  • -
  • Improved: Handle compositionend event in TinyMCE (#3164 by Shotaro Yamada)
  • -
  • Improved: Improve automatic title generation (#2955) (#2915 by anirudh murali)
  • -
  • Improved: Remove colour gradient from sidebar and replaced expand icons with chrevrons
  • -
  • Improved: Started resource fetcher service when a note has been decrypted
  • -
  • Improved: Support Windows tiles (#3063 by Giacomo Rossetto)
  • -
  • 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
  • -
  • Improved: Themes switched for more appealing text highlighting (#3192) (#2883 by @infinity052)
  • -
  • Fixed: Fix undo issue when loading new note
  • -
  • Fixed: Fixed inserting templates into existing notes (#3259)
  • -
  • 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)
  • -
  • Fixed: Markdown editor would not scroll in sync with viewer in some cases (#3228)
  • -
  • Fixed: Sync would fail in some cases due to a database error (#3234)
  • -
  • Fixed: Better handling of missing table field bug on Linux (#3088)
  • -
  • Fixed: Disable or enable menu items depending on the current view (#2467)
  • -
  • Fixed: Fix focus after exiting GotoAnything (#3075) (#3066 by Mohammed Rabeeh)
  • -
  • Fixed: Fix format of geolocation data (#2673 by @mic704b)
  • -
  • Fixed: Fix issue where last used filename was displayed when exporting directory
  • -
  • Fixed: Fixed KaTeX font issue in exported PDF and HTML (#3089 by @kowalskidev)
  • -
  • Fixed: Fixed background color on large Mermaid graphs (#3111) (#3109 by Rahul Mohata)
  • -
  • Fixed: Fixed note toolbar layout
  • -
  • Fixed: Fixed order of notebooks in "Move to notebook" dialog (#3084) (#3052 by Siddhant Sehgal)
  • -
  • Fixed: Fixed regression with Ace Editor (switching layout had bugs)
  • -
  • Fixed: Fixed regression with Ace Editor list indentation, and cleaned up code
  • -
  • Fixed: Fixed regression with local search (could not be closed anymore)
  • -
  • Fixed: Fixed the Goto Anything item list overflow (#3096) (#3095 by Rahul Mohata)
  • -
  • Fixed: Fixed various bugs and regressions following note editor refactoring
  • -
  • Fixed: Long URIs break Note Info dialog (#3136) (#3131 by Mohammed Rabeeh)
  • -
  • Fixed: Prevent Goto Anything from freezing when inputting special characters (#3093)
  • -
  • 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)
  • -
  • Fixed: Make sidebar resizable when note list is not displayed (#2895) (#2865 by anirudh murali)
  • -
  • Fixed: WYSIWYG: Fixed UI translation issue for certain languages
  • -
  • Fixed: Word/character counter includes Markdown syntax and HTML tags (#3037) (#3009 by @RedDocMD)
  • -
-

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) (#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)
  • -
  • Fixed: Trying to fix resource path issue in WYSIWYG editor (#2968)
  • -
  • Fixed: Fixed Katex rendering issue when greater than symbol appears in markup (#3033)
  • -
-

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
  • -
  • Improved: Update zh_TW.po (#3020 by Ethan Chen)
  • -
  • Improved: Update sv.po (#3013 by @abolishallprivateproperty)
  • -
  • Fixed: Fix Go To Anything closing when clicking inside the modal (#3029) (#3028 by Anjula Karunarathne)
  • -
  • Fixed: Fix JEX export (#3026 by @CalebJohn)
  • -
  • Fixed: Fixes todo mouse hover behaviour (#2831) (#2830 by Siddhant Sehgal)
  • -
  • Fixed: Fixes selection in text editor after applying formatting (#2737) (#2736 by @Rishgod)
  • -
  • Fixed: Title auto-update didn't work anymore (#3019)
  • -
-

v1.0.199 - 2020-04-10T18:41:58Z🔗

-
    -
  • New: Added new Aritim-Dark theme (#2997 by @TobiasDev)
  • -
  • New: WYSIWYG: Added support for code blocks edition and creation
  • -
  • New: WYSIWYG: Added support for tables
  • -
  • New: WYSIWYG: Apply theme to toolbar
  • -
  • New: WYSIWYG: Better handling of links on macOS and inside Katex block
  • -
  • New: WYSIWYG: Do not display target list in link dialog
  • -
  • New: WYSIWYG: Handle internal note links
  • -
  • 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)
  • -
  • New: Add friendly default filenames to export options (#2749 by @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)
  • -
  • Improved: Close Goto Anything modal on outside click (#2940 by Siddhant Sehgal)
  • -
  • Improved: Moved all themes out into their own .js theme files (#2951 by @TobiasDev)
  • -
  • Improved: Resource screen improvements (#2850) (#2639)
  • -
  • Improved: Right-click to move note to notebook (#2566) (#2296 by Siddhant Sehgal)
  • -
  • Improved: Update it_IT.po (#2978 by @abonte)
  • -
  • Improved: Update ko.po (#2986 by @xmlangel)
  • -
  • Improved: Update nb_NO.po (#2973 by Mats Estensen)
  • -
  • Improved: Update zh_CN.po (#2971 by @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)
  • -
  • 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)
  • -
  • Fixed: When modifying a conflicted note, it would disappear from the view (#2709)
  • -
-

v1.0.197 - 2020-03-30T17:21:22Z🔗

-
    -
  • New: Added support for checkboxes and fixed various issues with WYSIWYG editor
  • -
  • New: Added Vietnamese translation
  • -
  • Improved: Go To Anything by body (#2686) (#2683 by Anjula Karunarathne)
  • -
  • Improved: Cleaning up the install / update script (#2719 by Brandon Wulf)
  • -
  • Fixed: MD importer handle special chars in linked image name (#2346) (#2334 by @bart)
  • -
  • Fixed: Prevent title overflow on small windows (#2918) (#2917 by anirudh murali)
  • -
  • Fixed: Fixed top margin of toolbar (#2828) (#2824 by Siddhant Sehgal)
  • -
-

v1.0.195 - 2020-03-22T19:56:12Z🔗

-
    -
  • New: Added experimental WYSIWYG editor (#2556) (#176)
  • -
  • 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 by Helmut K. C. Tessarek)
  • -
  • New: Api: Add support for "tags" property for note PUT request (#2649) (#941 by @jyuvaraj03)
  • -
  • New: Add global shortcut to show/hide Joplin (#2653 by Helmut K. C. Tessarek)
  • -
  • Improved: Fast notebook deletion (#2730) (#2703 by @RedDocMD)
  • -
  • Improved: Enhance notelist focus behaviour (#2520 by @mic704b)
  • -
  • Improved: Indent lists by pressing tab when caret is after bullet (#2713) (#498 by Shotaro Yamada)
  • -
  • Fixed: Expand notebook tree when clicking on notebook in search results (#2620) (#2616 by Mohammed Rabeeh)
  • -
  • Fixed: Remember last selected note (#2809) (#2803 by Naveen M V)
  • -
  • Fixed: Fix menu bar shortcut (Alt+E) while editing a note (Win) (#2776 by @nullpointer666)
  • -
  • Fixed: Fix integration test harness issues. (#2723 by @mic704b)
  • -
  • Fixed: Fix calls to non-existent function (#2675 by @mic704b)
  • -
  • Fixed: Fix format of note timestamps (#2672 by @mic704b)
  • -
  • Fixed: Fix show-all-notes update bugs. (#2642 by @mic704b)
  • -
  • Fixed: Fix issue with tag not being displayed below note when it is created
  • -
  • Fixed: Fix button label wrapping in toolbar (#2708) (#2700 by Anjula Karunarathne)
  • -
  • Fixed: Fixed renaming tag issue (#2618)
  • -
-

v1.0.193 - 2020-03-08T08:58:53Z🔗

-
    -
  • New: Added concept of provisional note to simplify creation and handling of newly created notes
  • -
  • New: Add word counter feature to notes (#2444) (#160 by @jdrobertso)
  • -
  • New: Added zoom controls to the application menu (#2162)
  • -
  • New: Added Mermaid diagrams support (#2001)
  • -
  • New: Add "add or remove tags" for multiple notes. (#2386) (#539 by @mic704b)
  • -
  • New: Added new date format YYYY.MM.DD (#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)
  • -
  • New: Add more context to encryption errors
  • -
  • Security: Fixed potential Arbitrary File Read via XSS (Reported by Javier Olmedo, fixed by Laurent Cozic)
  • -
  • Security: Changed default encryption method to CCM
  • -
  • Security: Change geolocation service to freegeoip.app to improve privacy (#2503 by Helmut K. C. Tessarek)
  • -
  • Improved: Improve code css for Solarized Dark (#2626 by @rajprakash)
  • -
  • Improved: Empty note body has 0 line count (#2623 by @jdrobertso)
  • -
  • Improved: Use asar packing to improve performances (#2531 by @R-L-T-Y)
  • -
  • Improved: Implement "show all notes" (#2472) (#262 by @mic704b)
  • -
  • Improved: Create a screen that list all the resouces (#2189) (#592 by Georg Grab)
  • -
  • Improved: Ensure tabs act like tabs and spaces act like spaces in editor. (#2508 by @mic704b)
  • -
  • Improved: Update Electron to 7.1.12 (#2500 by Helmut K. C. Tessarek)
  • -
  • Improved: Support export of multiple notes to PDF files. (#2468 by @mic704b)
  • -
  • Improved: Use current year in About box (in the copyright text) (#2466 by Helmut K. C. Tessarek)
  • -
  • Improved: Show master instead of HEAD as branch in about box (#2465 by Helmut K. C. Tessarek)
  • -
  • Improved: Sort tags in drop-down list (when adding tags) (#2453 by Helmut K. C. Tessarek)
  • -
  • Improved: Support scrolling in the note list using keys (eg page up, page down) (#2404 by @mic704b)
  • -
  • Improved: Do not select pasted text no matter the paste method (#2431 by @mic704b)
  • -
  • Improved: Support list creation on multi-line selections (#2408) (#1014 by @mic704b)
  • -
  • Improved: Allow --no-sandbox flag to go around AppImage limitation (#2436 by Vaidotas Simkus)
  • -
  • Improved: Reset time fields when duplicating a note (#2428 by Andrey Dolgov)
  • -
  • Improved: Improved Note search bar UI (#2329 by @mic704b)
  • -
  • Improved: Emphasise note title (#2311 by @mic704b)
  • -
  • Improved: Support "select all" in the note list (#2403 by @mic704b)
  • -
  • Improved: More info for "unknown profile version" error message (#2361 by @mic704b)
  • -
  • Improved: Handle Thai language in search (#2387) (#2279 by Kirtan Purohit)
  • -
  • Improved: Improve appearance of note Info dialog
  • -
  • Fixed: Fix issue with disappearing button labels in toolbar (#2619) (#2615 by @anjulalk)
  • -
  • Fixed: Fix window dimensions and position when the application starts (#2514) (#2476 by Daulet Amirkhanov)
  • -
  • Fixed: Improved detection of selected text when applying formatting (#2582) (#2573 by @Rishgod)
  • -
  • Fixed: Speed up WebDAV and Nextcloud Sync on Linux (#2577) (#1023 by @WisdomCode)
  • -
  • Fixed: Fix to update tag list when note is deleted. (#2554 by @mic704b)
  • -
  • Fixed: Fix Resources menu item on macOS (#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)
  • -
  • Fixed: Fixed note renderer asset caching issue
  • -
  • Fixed: Add new Katex fonts to improve rendering (#2478) (#2477 by Helmut K. C. Tessarek)
  • -
  • Fixed: Fix .desktop file & force refresh (#2479 by Brandon Wulf)
  • -
  • Fixed: Fixed incorect location format (#2480 by @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 by @mic704b)
  • -
  • Fixed: Fix alignment of checkboxes and other list items in rendered note (#2277)
  • -
  • Fixed: Fix slow rendering and memory leak issues with Katex notes (#2357)
  • -
  • Fixed: Fix rendering of certain letters in Katex. Fixed printing when note contains Katex code (#2374)
  • -
  • Fixed: Fix markdown export (#2463) (#2455 by @mic704b)
  • -
  • Fixed: Fix escaping of title when generating a markdown link (#2456) (#2085 by Helmut K. C. Tessarek)
  • -
  • Fixed: Fix rendering of tabs in code blocks (#2446) (#2330 by @mic704b)
  • -
  • Fixed: Do not show "could not print" warning dialog after cancelling print. (#2410) (#2407 by @mic704b)
  • -
  • Fixed: Fixes long lines warpped (#2447 by Amit singh)
  • -
  • Fixed: Ensure the main window is hidden when Joplin starts (#2432) (#2365 by 0xCLOVER)
  • -
  • Fixed: Fix hang when selecting tag when multiple notes are selected (also for search) (#2372 by @mic704b)
  • -
  • Fixed: Apply userstyle again when exporting to PDF or printing (#2324)
  • -
  • Fixed: Fixed update message box
  • -
  • Fixed: Fix identification of note in pdf export from main menu. (#2323 by @mic704b)
  • -
  • Fixed: Fixed bad table rendering with multitable (#2352)
  • -
  • Fixed: Fixed issues with Katex and MultiMd table plugin (#2339)
  • -
  • Fixed: Fix Linux installation script (#2333 by Carl Bordum Hansen)
  • -
-

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)
  • -
  • Fixed: Fixed update message box
  • -
  • Fixed: Fix identification of note in pdf export from main menu. (#2323 by mic704b)
  • -
  • Fixed: Undefined text was being displayed on top of notes in revision viewer (#2352)
  • -
  • Fixed: Fixed issues with Katex and MultiMd table plugin (#2339)
  • -
  • Fixed: Fix Linux installation script (#2333 by @carlbordum)
  • -
-

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)
  • -
  • New: Display selected tags under a note title (#2217)
  • -
  • New: Add external editor actions to the note context menu. (#2214)
  • -
  • Improved: When importing MD files create resources for local linked files (#2262)
  • -
  • Improved: Update Electron to 7.1.9 (#2314)
  • -
  • Improved: Show completed date in note properties (#2292)
  • -
  • Improved: Maintain selection when non-selected note is deleted (#2290)
  • -
  • Improved: Don't count completed to-dos in note counts when they are not shown (#2288)
  • -
  • Improved: Replace note links with relative paths in MD Exporter (#2161)
  • -
  • Fixed: Fix pdf export when mouse over non-selected note in notelist. (#2255) (#2254)
  • -
  • Fixed: Fixed regression in HTML note rendering
  • -
  • Fixed: Fixed export to HTML, PDF and printing
  • -
-

v1.0.175 - 2019-12-08T11:48:47Z🔗

-
    -
  • New: Add warning message when user tries to upload a file 10MB or larger (#2102) (#2097)
  • -
  • Improved: Improved text editor syntax highlighting (#2100)
  • -
  • Improved: Improved logging during sync to allow finding bugs more easily
  • -
  • Improved: Allow Electron debugging flag (#2084)
  • -
  • Improved: Updated application icons
  • -
  • Fixed: Restaured translations that had been accidentally deleted (#2126)
  • -
  • Fixed: Fixed warning boxes in solarized theme (#1826)
  • -
  • Fixed: Prevent sync from happening if target dir could not be created, in local sync (#2117)
  • -
  • Fixed: Handle rare case when notebook has a parent that no longer exists, which causes a crash when sorting (#2088)
  • -
-

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)
  • -
  • Fixed: Fix scaling of inline svg resource icons (#2075)
  • -
-

v1.0.173 - 2019-11-11T08:33:35Z🔗

-
    -
  • New: Add new setting to show note counts for folders and tags (#2006)
  • -
  • New: Add keyboard modes to editor (vim, emacs) (#2056) (#1298)
  • -
  • New: Added link resource icon (#2035)
  • -
  • New: Add <kbd> tag support (#2044) (#2043)
  • -
  • New: Add Nord theme (#2004) (#1903)
  • -
  • New: Add menu item to toggle note list (#1991) (#1988)
  • -
  • New: Add context menu and menu item to create sub-notebook (#1984)
  • -
  • New: Add typographer support (#1987)
  • -
  • Improved: Set user-agent header to Joplin/1.0 (#2064) (#2042)
  • -
  • Improved: Prevent window from being shown on startup when it should be hidden in tray (#2031)
  • -
  • Improved: Allow selecting what views should be available from the Layout button (#2028) (#1900)
  • -
  • Improved: Fill X primary selection from the editor on text selection (#2029) (#215)
  • -
  • Improved: Allow custom CSS when printing (#2014) (#1918)
  • -
  • Improved: Update Markdown plugins: toc-done-right, anchor (#2005) (#1953)
  • -
  • Improved: Handle WebDAV server with empty XML namespaces (#2002)
  • -
  • Improved: Stop watching external edits when closing editor (#1981)
  • -
  • Improved: Allow apps to work with read-only profile
  • -
  • Fixed: Fix handling of URLs that contain single quotes (#2030)
  • -
  • Fixed: Prevent horizontal scrolling on Linux when a scrollbar is present in note list (#2062) (#1570)
  • -
  • Fixed: Fix TOC with special characters (#2052)
  • -
  • Fixed: Stop print command from resetting theme (#1999) (#1790)
  • -
  • 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)
  • -
  • Fixed: Fix scrolling issue when clicking on internal link (#1867)
  • -
  • Fixed: Open links in external browser from revision view (#2008)
  • -
-

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)
  • -
  • New: Add checkmark to menu item, if Dev Tools are on (#1949)
  • -
  • New: Added Dracula theme (#1924) (#1863)
  • -
  • New: Added concept of sync version and client ID to allow upgrading sync targets
  • -
  • Improved: Truncate update changelog when it's too long (#1967) (#1222)
  • -
  • Improved: Support italic in span tags (#1966)
  • -
  • 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)
  • -
  • Improved: Set cancel as the default in dangerous operations (#1934) (#1662)
  • -
  • Improved: Hide some toolbar buttons when editor hidden (#1940) (#1896)
  • -
  • Improved: Larger search bar (#1933) (#917)
  • -
  • Improved: Use profile temp dir when exporting files (#1932)
  • -
  • Improved: Code button now detects multiline (#1915)
  • -
  • Fixed: Prevent note content from being deleted when using certain external editors (in particular Typora) (#1854)
  • -
  • Fixed: Display error message when notes cannot be exported (#1970)
  • -
  • Fixed: Note view was not reloaded after viewing revisions (#1819)
  • -
  • Fixed: Fixed alarms that would trigger immediately when they were set too far in future (#1829)
  • -
  • Fixed: Text input context menu was not working in Windows (#1703)
  • -
  • Fixed: App would crash if trying to index a note that has not been decrypted yet (#1938)
  • -
-

v1.0.169 - 2019-09-27T18:35:13Z🔗

-
    -
  • New: Add support for Deepin desktop environment in install script (#1884)
  • -
  • 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 - 2019-09-25T21:21:38Z🔗

-
    -
  • New: Import Evernote notes as HTML (#1887)
  • -
  • 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)
  • -
-

v1.0.167 - 2019-09-10T08:48:37Z🔗

-
    -
  • Fixed: Fixed link issue following last update
  • -
-

v1.0.166 - 2019-09-09T17:35:54Z🔗

-

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)
  • -
  • Improved: Only support checkboxes that start with a dash (#1832)
  • -
  • Improved: Apply current locale to date and time (#1822)
  • -
  • Improved: Update template prompt font and sort templates (#1806)
  • -
  • Fixed: Do not scroll text when search is open and user type in note (#1833)
  • -
  • Fixed: Fixed cropped content issue when printing or exporting to PDF (#1815)
  • -
  • Fixed: Fix typo on encryption options screen (#1823)
  • -
  • Fixed: Use correct date format for templates (#1810) (#1803)
  • -
-

v1.0.165 - 2019-08-14T21:46:29Z🔗

-
    -
  • New: Added support for Fountain screenwriting language
  • -
  • New: Add solarized themes to desktop client (#1733)
  • -
  • New: Added support for templates (#1647)
  • -
  • New: Added markup language to property dialog
  • -
  • New: Add support for cinnamon to install script (#1738)
  • -
  • Improved: Better handling of adding the title to print and export to PDF (#1744)
  • -
  • Improved: Improved bold formatting support in Enex import (#1708)
  • -
  • Improved: Create fileURLs via drag and drop (#1653)
  • -
  • 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)
  • -
  • 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)
  • -
  • Fixed: Fixed Back button icon on Config screen
  • -
  • Fixed: Fixed note order when dragging a note outside a notebook (#1732)
  • -
  • Fixed: Fixed race condition when loading a note while another one is still loading. Improved performance when loading large note.
  • -
-

v1.0.161 - 2019-07-13T18:30:00Z🔗

-
    -
  • Improved: Show git branch and hash in About dialog (#1692)
  • -
  • 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)
  • -
  • Improved: Cache code blocks in notes to speed up rendering (#1649)
  • -
  • 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)
  • -
  • Fixed: Improved note selection and scrolling when moving a note to a different notebook (#1724)
  • -
  • Fixed: Import Evernote audio files correctly (#1723)
  • -
  • Fixed: Fixed issue with certain commands being repeated in some cases (#1720)
  • -
  • Fixed: Set note title to correct size when zoom is enabled (#1704)
  • -
  • Fixed: Hide toolbar button text when it is below a certain size (#1699)
  • -
  • Fixed: When deleting resource from sync target also delete associated data blob (#1694)
  • -
  • Fixed: Add override for ACE editor shortcut Ctrl+K (#1705) (#1342)
  • -
  • Fixed: Only log master key ID
  • -
  • Fixed: Preserve user timestamps when adding note via API (#1676)
  • -
  • Fixed: Fix line break issue when importing certain notes from Evernotes (#1672)
  • -
  • Fixed: Fixed issue with issue with watching file on Linux (#1659)
  • -
  • Fixed: Disable certain menu items when no note or multiple notes are selected, and fixed menu item to set tag (#1664)
  • -
-

v1.0.160 - 2019-06-15T00:21:40Z🔗

-
    -
  • New: Highlight notebooks based on depth (#1634)
  • -
  • New: Added menu item to format inline code (#1641)
  • -
  • Improved: Added shortcut for tags (Cmd+Opt+T / Ctrl+Alt+T) (#1638)
  • -
  • Fixed: Allow opening external editor on new notes (#1443)
  • -
-

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)
  • -
  • Improved: Speed up synchronisation by allowing multiple connections when downloading items (#1633)
  • -
  • 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)
  • -
  • Improved: Improve how font size is applied (#1601)
  • -
  • Improved: Improved workflow of downloading and decrypting data during sync
  • -
  • Fixed: Fix icon path and directory in Linux install script (#1612)
  • -
  • Fixed: Handle multiple lines in attributes when importing Enex files (#1583)
  • -
  • Fixed: Fix issue with revisions being needlessly created when decrypting notes
  • -
-

v1.0.158 - 2019-05-27T19:01:18Z🔗

-
    -
  • Improved: Enable more options on multimd-table plugin (#1586)
  • -
  • Improved: Improved config screen with dark theme
  • -
  • Improved: Make bold text more visible (#1575)
  • -
  • Fixed: Fix internal note links (#1587)
  • -
  • Fixed: Fixed empty separators in menu
  • -
-

v1.0.157 - 2019-05-26T17:55:53Z🔗

-
    -
  • New: Added Persian translation (#1539)
  • -
  • New: Allow downloading attachments on demand or automatically (#1527) (#1481)
  • -
  • Improved: Make bold text more visible (#1575)
  • -
  • 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) (#1186)
  • -
  • Fixed: Default sort order for notebooks should be title and ascending (#1541)
  • -
  • Fixed: Added backticks to auto-wrapping quotes. (#1534) (#1426)
  • -
  • Fixed: Prevent app from trying to upload resource it has not downloaded yet
  • -
-

v1.0.152 - 2019-05-13T09:08:07Z🔗

-

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) (#712)
  • -
  • Improved: Save size of a resource to the database; and added mechanism to run non-database migrations
  • -
  • Improved: Improved note deletion dialog (#1502)
  • -
  • Fixed: Allow resources greater than 10 MB but they won't be synced on mobile (#371)
  • -
  • Fixed: Improved handling of images when using external editor, so that it works in Atom, VSCode and Typora (#1425)
  • -
  • Fixed: Some images were not being displayed
  • -
  • Fixed: Resets the undo manager when creating new notes (#1495) (#355)
  • -
  • Fixed: Prevents notes with no title to break after synchronize (#1472)
  • -
-

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) (#712)
  • -
  • Improved: Save size of a resource to the database; and added mechanism to run non-database migrations
  • -
  • Improved: Improved note deletion dialog (#1502)
  • -
  • Fixed: Allow resources greater than 10 MB but they won't be synced on mobile (#371)
  • -
  • Fixed: Improved handling of images when using external editor, so that it works in Atom, VSCode and Typora (#1425)
  • -
  • Fixed: Some images were not being displayed
  • -
  • Fixed: Resets the undo manager when creating new notes (#1495) (#355)
  • -
  • Fixed: Prevents notes with no title to break after synchronize (#1472)
  • -
-

v1.0.150 - 2019-05-12T11:27:48Z🔗

-
    -
  • New: Support for note history (#1415) (#712)
  • -
  • Improved: Save size of a resource to the database; and added mechanism to run non-database migrations
  • -
  • Improved: Improved note deletion dialog (#1502)
  • -
  • Fixed: Allow resources greater than 10 MB but they won't be synced on mobile (#371)
  • -
  • Fixed: Improved handling of images when using external editor, so that it works in Atom, VSCode and Typora (#1425)
  • -
  • Fixed: Some images were not being displayed
  • -
  • Fixed: Resets the undo manager when creating new notes (#1495) (#355)
  • -
  • Fixed: Prevents notes with no title to break after synchronize (#1472)
  • -
-

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)
  • -
  • Fixed: Update chokidar to fix blank screen when returning from external editor (#1479)
  • -
  • Fixed: Fixes #1476: Import lists and sub-lists from Enex files with correct indentation (#1476)
  • -
  • Fixed: Remove message "Processing a path that has already been done" as this is not an error (#1353)
  • -
-

v1.0.143 - 2019-04-22T10:51:38Z🔗

-
    -
  • Improved support for Japanese, Chinese, Korean search queries (also applies to Goto Anything)
  • -
  • Fixes #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)
  • -
  • Fixes #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: Make sure links are clickable when exporting to PDF
  • -
  • Fixes #1427: Support checkoxes behind bullets
  • -
  • Fixes #1417: Clipper: Sort the folders in the same order as the desktop app
  • -
  • Fixes #1425 (probably): Fix display of images when using VSCode as external editor
  • -
  • Change shortcuts for 'Print' and 'Goto Anything' (#1420)
  • -
  • Add option to use soft breaks for markdown rendering (#1408)
  • -
-

v1.0.142 - 2019-04-02T16:44:51Z🔗

-
    -
  • New: Allow toggling markdown plugins and added several new plugins (#1347)
  • -
  • New: Added Goto Anything dialog (Ctrl+P or Cmd+P)
  • -
  • Improved: macOS: make the menu more like a macOS menu (#1348)
  • -
  • 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
  • -
  • Fixes #1334 (maybe): Upgraded chokidar which it seems was randomly making Electron 4 crash (maybe due to fsevent package)
  • -
  • Fixes #1329: Could not edit created and updated time anymore
  • -
  • Fixes #1326: Restored inline code styling
  • -
  • Fixes #1325: Fixed nested checkbox indentation
  • -
  • fix sub pixel rendering for desktop (#1378)
  • -
-

v1.0.140 - 2019-03-10T20:59:58Z🔗

-
    -
  • Resolves #1105: Added support for macro persistence for Katex
  • -
  • Resolves #206: Added support for sorting notebooks by title or last modified
  • -
  • Fixed: Windows 32-bit version should now work again.
  • -
  • Improved: Rewritten Markdown rendering system to make it easier to add new features. Fixed a few minor rendering bugs doing so.
  • -
-

v1.0.135 - 2019-02-27T23:36:57Z🔗

-

Note: this is the same as v132 but with a fix for the resizeable column bug, and for PDF export and printing.

-
    -
  • New: Experimental support for Mermaid graphs (This is not yet supported on mobile).
  • -
  • New: Allow resizing sidebar columns.
  • -
  • New: Resolves #1198: In search results, give more weight to more recent notes and less to completed to-dos
  • -
  • Add shortcut to start a sync (#1231)
  • -
  • Change notebook icon in toolbar and search result (#1252)
  • -
  • When deleting notebook or tag, display name (#1253)
  • -
  • API: Resolves #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
  • -
  • Various bug fixes and improvement following previous release.
  • -
  • Fixes #1251: Handle Show Uncompleted Tasks option when selecting a tag
  • -
-

v1.0.134 - 2019-02-27T10:21:44Z🔗

-

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: In search results, give more weight to more recent notes and less to completed to-dos
  • -
  • Add shortcut to start a sync (#1231)
  • -
  • Change notebook icon in toolbar and search result (#1252)
  • -
  • When deleting notebook or tag, display name (#1253)
  • -
  • API: Resolves #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
  • -
  • Various bug fixes and improvement following previous release.
  • -
  • Fixes #1251: Handle Show Uncompleted Tasks option when selecting a tag
  • -
-

v1.0.132 - 2019-02-26T23:02:05Z🔗

-
    -
  • New: Experimental support for Mermaid graphs (This is not yet supported on mobile).
  • -
  • New: Allow resizing sidebar columns.
  • -
  • New: Resolves #1198: In search results, give more weight to more recent notes and less to completed to-dos
  • -
  • Add shortcut to start a sync (#1231)
  • -
  • Change notebook icon in toolbar and search result (#1252)
  • -
  • When deleting notebook or tag, display name (#1253)
  • -
  • API: Resolves #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
  • -
  • Various bug fixes and improvement following previous release.
  • -
  • Fixes #1251: Handle Show Uncompleted Tasks option when selecting a tag
  • -
-

v1.0.127 - 2019-02-14T23:12:48Z🔗

-

This big release aims at improving the overall usability of the application and to make it more accessible to newcomers.

-
    -
  • New: Added Welcome notes the first time the app is launched to give an overview of Joplin and its features.
  • -
  • New: Allow selecting editor path with dialog window
  • -
  • New: Record last selected note IDs and restore it when opening notebook
  • -
  • New: Resolves #1041: Added button to go back to previous note after clicking link
  • -
  • New: Restore scroll position when switching notes
  • -
  • New: When selecting multiple notes, display possible actions as buttons
  • -
  • Fixed importing ENEX file when note incorrectly contains a reminder tag
  • -
  • Fixes #1142: Disallow dropping notes on sidebar Notebook header
  • -
  • Fixes #1161: Display highlighted text and other background colours and images when exporting to PDF or printing
  • -
  • Fixes #1200: Note list was hidden when minimizing and maximizing window
  • -
  • Fixed: Do not display tags that are not associated with any note
  • -
  • Improved: Added 'Insert date time' option to menu
  • -
  • Improved: Added a few more shortcuts for macOS and other platforms
  • -
  • Improved: Added Usage link next to search box
  • -
  • Improved: Allow using macOS App bundle as external editor, and improved error handling
  • -
  • Improved: Better handle search queries that include dashes
  • -
  • Improved: Delete note using keyboard
  • -
  • Improved: Fixes #1196: Optimised loading speed of notes when switching from one to another (2-3 times faster)
  • -
  • Improved: Group config options into sections
  • -
  • Improved: Improve how new notes are created to make it more reliable
  • -
  • Improved: Improve styling and layout of notes in note viewer
  • -
  • Improved: Keep synchronise button and status at bottom of side bar
  • -
  • Improved: Made confirmation buttons sticky on Config screen
  • -
  • Improved: Select notes in note list using arrow keys
  • -
  • Improved: Toggle todo checkbox using SPACE key
  • -
  • Improved: Use arrow to move between sidebar items, and added shortcuts to focus different elements
  • -
  • Improved: Use ENTER and ESCAPE to go to next search result or to close search bar
  • -
  • Improved: Use SPACE to collapse or expand a folder in sidebar
  • -
  • 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)
  • -
  • Updated translations and added Turkish language (thanks Zorbey Doğangüneş)
  • -
  • API: Allow specifying item ID for any item
  • -
-

v1.0.125 - 2019-01-26T18:14:33Z🔗

-
    -
  • New: Added support for pre-releases - in the options you can now choose to receive pre-releases too.
  • -
  • New: Added version info to auto-update dialog
  • -
  • New: Resolves #1099: Show Markdown images in external editor
  • -
  • Improved: Better multi-language support in search engine. Should now work better with languages like Russian, French, Chinese, Japanese or Korean, as well as any language with accents.
  • -
  • Improved: Search keyword highlighting
  • -
  • Improved local search by highlighting even partial matches
  • -
  • Fixes #1126: Open Katex link in external browser instead of inside app
  • -
  • Fixes #769: Disable META tags in Markdown viewers
  • -
  • Improved: Handle ESC key press to cancel the NotePropertiesDialog (#1125)
  • -
  • Fixes #1137: Fixed regression on SeaFile sync
  • -
-

v1.0.120 - 2019-01-10T21:42:53Z🔗

-
    -
  • New: Adds functionality to toggle the notebooks and tags on the sidebar. (#1002)
  • -
  • Resolves #1059: Fixed behaviour of export to PDF and print
  • -
  • Fix window manager icon on linux (#1110)
  • -
  • Fixed file url issue (#1054)
  • -
  • Fixed keyword highlighting bug
  • -
  • Fix markdown code for checked checkbox (#1113)
  • -
  • Apply zoom and editorfont updates without needing to restart (#1109)
  • -
  • Updated many translations
  • -
-

v1.0.119 - 2018-12-18T12:40:22Z🔗

-

Important: This release might be slow on startup due to the need to index all the notes, especially if you have many of them with lots of content. The best is simply to wait for it even if it takes several minutes. This is just a one off and afterwards startup time will be the same as before.

-
    -
  • 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)
  • -
  • Changed: Changed global search shortcut to F6.
  • -
  • Fixes #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).
  • -
  • Fixes #476 (maybe): Trying to fix notification flood. Added more log statements in case something goes wrong.
  • -
  • Fixes #1039: Always print or export to PDF using light theme
  • -
  • Fixes #1033: Handle hard break when rendering Markdown to HTML
  • -
-

v1.0.118 - 2019-01-11T08:34:13Z🔗

-

Important: This release might be slow on startup due to the need to index all the notes, especially if you have many of them with lots of content. The best is simply to wait for it even if it takes several minutes. This is just a one off and afterwards startup time will be the same as before.

-
    -
  • 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)
  • -
  • Changed: Changed global search shortcut to F6.
  • -
  • Fixes #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).
  • -
  • Fixes #476 (maybe): Trying to fix notification flood. Added more log statements in case something goes wrong.
  • -
  • Fixes #1039: Always print or export to PDF using light theme
  • -
  • Fixes #1033: Handle hard break when rendering Markdown to HTML
  • -
-

v1.0.117 - 2018-11-24T12:05:24Z🔗

-
    -
  • New: Resolves #996: Allow editing multiple notes in external editor
  • -
  • New: Resolves #846: Set resource path to correct relative path so that for example images show up in Markdown viewers.
  • -
  • Fixes #906: Fixed text editor path issue on Windows
  • -
  • Fixes #968: Export resources specified with a title
  • -
  • Fixes #995: Disabled tag bar for now until performance issues are resolved.
  • -
-

v1.0.116 - 2018-11-20T19:09:24Z🔗

-

This is mostly a bug fix release following the recent v115 release.

-
    -
  • Fixes #933: Handle internal links from HTML and from MD.
  • -
  • Fixes #979: Fixed regression that was causing bottom of notes to be partially hidden.
  • -
  • Fixes #992: Allow non-ASCII chars when exporting MD and handle duplicate filenames
  • -
  • Fixes #985: Add missing syntax highlighting for dark theme
  • -
  • Fixes #991: Add dark theme to note properties dialog
  • -
-

v1.0.115 - 2018-11-16T16:52:02Z🔗

-

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)
  • -
  • New: Joplin desktop Dark Mode (#921)
  • -
  • New: Add support for custom css across all notes (#925)
  • -
  • New: Show note title in pdf export (#890) (#937)
  • -
  • New: Display number of resources being fetched in side bar
  • -
  • New: Export notes to JSON (#912, issues/912). (#927)
  • -
  • New: Further (invisible) changes on how resources are downloaded to prepare for better resource handling.
  • -
  • Fix: Resolves #918: Skip properties that are on sync target but not handled by local client
  • -
  • Fix: Fixes #952: Upgraded Katex lib to fix bug
  • -
  • Fix: Fixes #953 (maybe): Improved the way internal links to notes are loaded to make it more reliable
  • -
  • Fix: Fix image fetching error for URLs that contain query parameters.
  • -
  • API: Allow setting the ID of newly created notes.
  • -
  • Renewed code signing certificate.
  • -
-

v1.0.114 - 2018-10-24T20:14:10Z🔗

-
    -
  • Fixes #832: Enex import: Don't add extra line breaks at the beginning of list item when it contains a block element
  • -
  • Fixes #798: Enable Select All shortcut in macOS
  • -
  • API: Fixed handling of PUT method and log errors to file
  • -
  • Api: Fixes #843: Fixed regression that was preventing resource metadata from being downloaded
  • -
  • Fixes #847: Prevent view from scrolling to top when clicking checkbox and editor not visible
  • -
  • Resolves #751: Allow switching between todo and note when multiple notes are selected
  • -
  • Fixed potential crash that can happen if editor is not ready
  • -
  • Prevent URLs added via A tag from being opened inside app
  • -
  • Fixes #853: Replace characters to equivalent US-ASCII ones when exporting files
  • -
  • Improved the way resources are loaded to prepare to allow making downloading resources optional, and to make sync faster
  • -
  • Fixes #312 (maybe): Removed power saving feature, which wasn't doing anything and added a possible fix to the UI freezing issue on Linux
  • -
  • Improved: Handle internal anchors
  • -
  • Improved Linux install script
  • -
-

v1.0.111 - 2018-09-30T20:15:09Z🔗

-

This is mainly a release to fix a bug related to the new IMG tag support.

-
    -
  • Electron: Resolves #820: Allow dragging and dropping a note in another note to create a link
  • -
  • Electron: Fixes resources being incorrectly auto-deleted when inside an IMG tag
  • -
  • API: Allow downloading a resource data via /resources/:id/file
  • -
-

v1.0.110 - 2018-09-29T12:29:21Z🔗

-

This is a release only to get the new API out. If you do not need the functionalities of this API or you don't know what it is, you can probably skip this version.

-

v1.0.109 - 2018-09-27T18:01:41Z🔗

-
    -
  • New: Allow loading image resources in IMG html tags. For example, this is now possible: <img src=":/a92ac34387ff467a8c839d201dcd39aa" width="50"/>
  • -
  • Security: Fixed security issue by enabling contextIsolation and proxying IPC messages via preload script. Thank you Yaroslav Lobachevski for discovering the issue.
  • -
  • Fixes #801: Replaced freegeoip which is no longer free with ip-api to enable again geo-location for notes.
  • -
  • Fixes #802: Scale note text correctly when using zoom
  • -
  • Fixes #805: Fixed app freezing when opening note in external editor and then creating new note
  • -
  • Clipper: Fixes #809: Saves full URL with note, including query parameters
  • -
  • Clipper: Resolves #681: Allow adding tags from Web Clipper
  • -
  • Clipper: Fixes #672: Make sure selected notebook is saved and restored correctly
  • -
  • Clipper: Fixes #817: Added support for PICTURE tags, which will fix issues with certain pages from which images were not being imported
  • -
  • Clipper: Fixed importing certain images with sources that contain brackets
  • -
  • Improved: Mostly an invisible change at this point, but the REST API has been refactored to allow adding more calls and to support third-party applications.
  • -
-

v1.0.107 - 2018-09-16T19:51:07Z🔗

-
    -
  • New: Resolves #755: Added note properties dialog box to view and edit created time, updated time, source URL and geolocation
  • -
  • Added Dutch (Netherlands) translation
  • -
  • Added Romanian translation
  • -
  • Fixes #718: Allow recursively importing Markdown folder
  • -
  • Fix #764: Fix equation tag positioning
  • -
  • Fixes #710: Don't unwatch file when it is temporarily deleted
  • -
  • Resolves #781: Allow creating notebooks with duplicate titles to allow two notebooks with same name to exist under different parents
  • -
  • Fixes #799: Handle restricted_content error for Dropbox (skip files that cannot be uploaded to copyright or other Dropbox t&c violation)
  • -
  • Provided script to install on Ubuntu (with icon)
  • -
-

v1.0.106 - 2018-09-08T15:23:40Z🔗

-

Note: this release is no longer signed to avoid issues with renewing certificates. If you get a warning or the application cannot be installed, please report on the forum on GitHub.

-
    -
  • Resolves #761: Highlight single tick code segments
  • -
  • Resolves #714: Allow starting application minimised in the tray icon
  • -
  • Fixes #759: Add border around code block when exporting to PDF
  • -
  • Fixes #697: Focus search text input after clearing search
  • -
  • Fixes #709: Now that HTML is supported in notes, remove BR tag replacement hack to fix newline issues.
  • -
-

v1.0.105 - 2018-09-05T11:29:36Z🔗

-
    -
  • Resolves #679: Drag a note on a tag to associate the tag.
  • -
  • Resolves #427: Import source-url from Enex files
  • -
  • Resolves #594: Enable support for SVG graphics
  • -
  • New: replace the resource icon (for internal links) with the Joplin icon (from ForkAwesome)
  • -
  • Update: Upgraded Katex to support new features
  • -
  • Update: Improve speed of loading notes that include many resources, and prevent UI from freezing
  • -
  • Fixes #653: Don't detect horizontal rule as bullet list item
  • -
  • Fixes #113: Upgraded Ace Editor to try to fix Korean input issue (to be confirmed)
  • -
-

v1.0.104 - 2018-06-28T20:25:36Z🔗

-
    -
  • New: Allow HTML in Markdown documents in a secure way.
  • -
  • New: Resolves #619: Context menu to cut, copy and paste. Also added menu to copy link in web view
  • -
  • New: Resolves #612: Allow duplicating a note
  • -
  • New: Web Clipper: Support 'author' property
  • -
  • Improved: Resolves #647: Allow specifying text editor path and arguments in setting
  • -
  • Improved: Optimised encryption and decryption of items so that it doesn't freeze the UI, especially on mobile
  • -
  • Improved: Set PDF default file name
  • -
  • Improved: Resolves #644: Added support for .markdown extension when importing files
  • -
  • Fixes #634: Press ESC to dismiss dialog in non-English languages
  • -
  • Fixes #639: Make sure text wraps when printing or exporting as PDF
  • -
  • Fixes #646: Mentioned that TLS settings must be saved before checking sync config
  • -
-

v1.0.103 - 2018-06-21T19:38:13Z🔗

-
    -
  • New: Resolves #611: Allow opening and editing note in external editor
  • -
  • New: #628: Adds a shortcut to insert the date and time.
  • -
  • New: Fixes #343, Fixes #191: Added options to specify custom TLS certificates
  • -
  • New: Fixes #343, Fixes #191: Added options to ignore TLS cert errors to allow self-signed certificates on desktop and CLI
  • -
  • Fixes #626: Auto-completion for indented items
  • -
  • Fixes #632: Handle restricted_content error in Dropbox
  • -
  • Fix: Revert #554 to try to fix #624: WebDAV error when syncing with SeaFile
  • -
-

v1.0.101 - 2018-06-17T18:35:11Z🔗

-

This is a bug-fix release following v100 with the following fixes:

-
    -
  • Fixes #623: Improved handling of text selection and fixed infinite loop (white screen bug)
  • -
  • Fixes #593: Resource should not be auto-deleted if they've never been linked to any note
  • -
  • Fixes #630: PDF export in context menu
  • -
-

v1.0.100 - 2018-06-14T17:41:43Z🔗

-
    -
  • New: Added toolbar buttons for formatting text.
  • -
  • New: Added Traditional Chinese and Catalan translations
  • -
  • Fixed: Handle Nginx DAV PROPFIND responses correctly
  • -
  • Fixes #597: Also import sub-notebooks when importing JEX data
  • -
  • Fixes #600: Improved resuming of long sync operations so that it doesn't needlessly re-download the items from the beginning
  • -
  • Fix: Try to display more info when there is a Dropbox API error
  • -
-

v1.0.99 - 2018-06-10T13:18:23Z🔗

-

Note: This is the same as 1.0.97, but with a fix for the Linux version, which could not start anymore.

-

If you're using the web clipper, make sure to also update it!

-
    -
  • Updated: Auto-delete resources only after 10 days to handle some edge cases
  • -
  • Clipper: Cleaner and more consistent clipper REST API, to facilitate third-party access
  • -
  • Clipper: Fixes #569: Make clipper service available on localhost only
  • -
  • Clipper: Fixes #573: Better handling of certain code blocks
  • -
-

v1.0.97 - 2018-06-09T19:23:34Z🔗

-

If you're using the web clipper, make sure to also update it!

-
    -
  • Updated: Auto-delete resources only after 10 days to handle some edge cases
  • -
  • Clipper: Cleaner and more consistent clipper REST API, to facilitate third-party access
  • -
  • Clipper: Fixes #569: Make clipper service available on localhost only
  • -
  • Clipper: Fixes #573: Better handling of certain code blocks
  • -
-

v1.0.96 - 2018-05-26T16:36:39Z🔗

-

This release is mainly to fix various issues with the recently released Web Clipper.

-
    -
  • Clipper: Allow selecting folder to add the note to
  • -
  • Clipper: Fixed issue when taking screenshot
  • -
  • Clipper: Added Firefox extension
  • -
-

v1.0.95 - 2018-05-25T13:04:30Z🔗

-
    -
  • New: A web clipper is now available - it allows saving web pages and screenshots from your browser to Joplin. To start using it, go to Options > Web Clipper Options. Note that this feature is a beta release so there might still be some issues. Feedback is welcome.
  • -
  • Fix: Identify another Dropbox missing auth error, to allow resetting the token
  • -
  • Fixes #531: Get WebDAV to work with certain servers that require a trailing slash on directories
  • -
-

v1.0.94 - 2018-05-21T20:52:59Z🔗

-
    -
  • New: Allow copying path of resources
  • -
  • New: Adds functionality to allow for renaming of tags.
  • -
  • Improved: Evernote import
  • -
  • Fixes #536: Allow changing sync target file path
  • -
  • Fixes #535: Note preview was not always updated when it should
  • -
  • Fixes #491: Handle non-standard ports and better handling of fetchBlob errors
  • -
  • Fixes #528: Set translation in bridge functions too
  • -
  • Fixes #527: Remove empty section separators from menus
  • -
  • Fix: Added styles to fix margin bottom for nested lists
  • -
-

v1.0.93 - 2018-05-14T11:36:01Z🔗

-
    -
  • New: A portable version is now available. To install it simply copy the file "JoplinPortable.exe" to your USB device. See the documentation for more information - https://joplin.cozic.net/#desktop-applications
  • -
  • Improved: Made import of ENEX files more robust and accurate
  • -
  • Improved: Auto-update process should be more reliable.
  • -
  • Fixed: Made sync-after-save interval longer to made synchronisations less frequent.
  • -
-

v1.0.91 - 2018-05-10T14:48:04Z🔗

-

Same as v1.0.90 but with a fix for #510

-
    -
  • New: Resolves #345: Option to hide completed todos
  • -
  • New: Resolves #200, Resolves #416: Allow attaching images by pasting them in. Allow attaching files by drag and dropping them. Insert attachment at cursor position.
  • -
  • Improved: Resolves #443: Various optimisations to make dealing with large notes easier and make Katex re-rendering faster
  • -
  • Fixes #481: Keyboard shortcuts were not working when text editor had focus in macOS
  • -
  • Fixed: Tag display
  • -
  • Security: Resolves #500: Fixed XSS security vulnerability
  • -
-

v1.0.89 - 2018-05-09T13:05:05Z🔗

-
    -
  • New: Resolves #122: Added support for sub-notebooks. Please see doc for more info: https://joplin.cozic.net/#sub-notebooks
  • -
  • Improved: Export/Import links to notes
  • -
  • Fixes #480: Ignore invalid flag automatically passed by macOS
  • -
  • Fixes #61: Handle path that ends with slash for file system sync
  • -
-

v1.0.85 - 2018-05-01T21:08:24Z🔗

-

Note: This is the same as v84 but with the note creation bug fixed.

-
    -
  • New: Windows 32-bit support
  • -
  • New: Button to toggle the sidebar
  • -
  • Improved: Better handling of resources that are incorrectly flagged as encrypted
  • -
  • Improved: Various changes to make PortableApps format work
  • -
  • Improved: Resolves #430: Support lowercase "x" in Markdown checkboxes
  • -
  • Fixes #346: Make sure links have an address when exporting to PDF
  • -
  • Fixes #355: Set undo state properly when loading new note to prevent overwriting content of one note with another
  • -
  • Fixes #363: indentation and rendering of lists
  • -
  • Fixes #470: Make it clear that spaces in URLs are invalid.
  • -
  • Fixes #434: Handle Katex block mode
  • -
-

v1.0.83 - 2018-04-04T19:43:58Z🔗

-
    -
  • Fixes #365: Cannot paste in Dropbox screen
  • -
-

v1.0.82 - 2018-03-31T19:16:31Z🔗

-
    -
  • Updated translations
  • -
-

v1.0.81 - 2018-03-28T08:13:58Z🔗

-
    -
  • New: Dropbox synchronisation
  • -
  • New: Czech translation
  • -
  • Fixes #318: Display full links in editor
  • -
  • Resolves #329: Add link to E2EE doc
  • -
-

v1.0.79 - 2018-03-23T18:00:11Z🔗

-
    -
  • New: Resolves #144, Resolves #311: Highlight search results and search in real time. Associated Ctrl+F with searching.
  • -
  • New: Resolves #73: Show modified date next to note in editor
  • -
  • New: Danish translation
  • -
  • Improved: Fixes #318, Fixes #317: ENEX: Improved handling and rendering of plain text links. Improved detection and import of resources. Improved import of tables.
  • -
  • Updated: Resolves #307: Use blue colour for sidebar, to be consistent with mobile app and logo
  • -
  • Updated: Translations
  • -
-

v1.0.78 - 2018-03-17T15:27:18Z🔗

-
    -
  • Improved: Handle deletion of resources that are not linked to any note
  • -
-

v1.0.77 - 2018-03-16T15:12:35Z🔗

-

Note: This fixes an invalid database upgrade in the previous version.

-
    -
  • New: Resolves #237: Export to PDF and print option
  • -
  • New: Resolves #154: No longer used resources are automatically deleted after approximately 24h
  • -
  • Improved: Resolves #298: Removed extraneous first characters from auto-title
  • -
  • Improved: Made WebDAV options dynamics so that changing username or password doesn't require restarting the app
  • -
  • Fix: Fixes #291: Crash with empty backtick
  • -
  • Fix: Fixes #292: Improved auto-update feature and fixed incorrect notifications
  • -
  • Fix: Signed executables on Windows
  • -
  • Updated Russian, German, Portuguese, Spanish and French translations. Many thanks to the translators!
  • -
-

v1.0.72 - 2018-03-14T09:44:35Z🔗

-
    -
  • New: Allow exporting only selected notes or notebook
  • -
  • New: Resolves #266: Allow setting text editor font family
  • -
  • New: Display icon next to resources and allow downloading them from Electron client
  • -
  • Improved: Optimised sync when dealing with many items, in particular when using Nextcloud or WebDAV
  • -
  • Improved: Display last sync error unless it's a timeout or network error
  • -
  • Improved: Fixes #268: Improve error message for invalid flags
  • -
  • Fix: Fixes #271: Sort by created time was not respected
  • -
-

v1.0.70 - 2018-02-28T20:04:30Z🔗

-
    -
  • New: Resolves #97: Export to JEX format or RAW format
  • -
  • New: Import JEX and RAW format
  • -
  • New: Resolves #52: Import Markdown files or directory
  • -
  • New: Allow sorting notes by various fields
  • -
  • New: Resolves #243: Added black and white tray icon for macOS
  • -
  • Fix: #247: Unreadable error messages when checking for updates
  • -
  • Fix: Fixed sync interval sorting order
  • -
  • Fix: #256: Check that no other instance of Joplin is running before launching a new one
  • -
-

v1.0.67 - 2018-02-19T22:51:08Z🔗

-
    -
  • Fixed: #217: Display a message when the note has no content and only the note viewer is visible
  • -
  • Fixed: #240: Tags should be handled in a case-insensitive way
  • -
  • Fixed: #241: Ignore response for certain WebDAV calls to improve compatibility with some services.
  • -
  • Updated: French and Español translation
  • -
-

v1.0.66 - 2018-02-18T23:09:09Z🔗

-
    -
  • Fixed: Local items were no longer being deleted via sync.
  • -
  • Improved: More debug information when WebDAV sync target does not work.
  • -
  • Improved: Compatibility with some WebDAV services (Seafile in particular)
  • -
-

v1.0.65 - 2018-02-17T20:02:25Z🔗

-
    -
  • New: Added several keyboard shortcuts
  • -
  • New: Convert new lines in tables to BR tags, and added support for HTML tags in Markdown viewers
  • -
  • Fixed: Confirmation message boxes, and release notes text
  • -
  • Fixed: Issue with items not being decrypted immediately when they are created due to a sync conflict.
  • -
  • Updated: Translations
  • -
-

v1.0.64 - 2018-02-16T00:58:20Z🔗

-

Still more fixes and improvements to get v1 as stable as possible before adding new features.

-

IMPORTANT: If you use Nextcloud it is recommended to sync all your notes before installing this release (see below).

-
    -
  • Fixed: Nextcloud sync target ID (which was incorrectly set to WebDAV sync ID). As a result items that have been created since this bug will be re-synced with Nextcloud. This sync will not duplicate or delete any item but is necessary to preserve data integrity. IF YOU HAVE NOTES IN CONFLICT AFTER SYNC: Close the app completely and restart it to make sure all the lists are visually up-to-date. The notes in conflict most likely can be ignored - they are just duplicate of the real ones. To be safe, check the content but most likely they can simply be deleted.
  • -
  • Improved: Provide Content-Length header for WebDAV for better compatibility with more servers
  • -
  • Fixed: Allow copy and paste from config and encryption screen on macOS
  • -
  • Fixed: #201, #216: Make sure only one update check can run at a time, and improved modal dialog boxes
  • -
-

v1.0.63 - 2018-02-14T19:40:36Z🔗

-
    -
  • Improved the way settings are changed. Should also fixed issue with sync context being accidentally broken.
  • -
  • Improved WebDAV driver compatibility with some services (eg. Seafile)
  • -
-

v1.0.62 - 2018-02-12T20:19:58Z🔗

-
    -
  • Fixes #205: Importing Evernote notes while on import page re-imports previous import
  • -
  • Fixes #209: Items with non-ASCII characters end up truncated on Nextcloud
  • -
  • Added Basque translation, fixed issue with handling invalid translations. Updated translation FR.
  • -
-

v0.10.61 - 2018-02-08T18:27:39Z🔗

-
    -
  • New: Display message when creating new note or to-do so that it doesn't look like the previous note content got deleted.
  • -
  • New: Also support $ as delimiter for Katex expressions
  • -
  • New: Added sync config check to config screens
  • -
  • New: Allowing opening and saving resource images
  • -
  • New: Toolbar button to set tags
  • -
  • Update: Improved request repeating mechanism
  • -
  • Fix: Make sure alarms and resources are attached to right note when creating new note
  • -
  • Fix: Use mutex when saving model to avoid race conditions when decrypting and syncing at the same time
  • -
-

v0.10.60 - 2018-02-06T13:09:56Z🔗

-
    -
  • New: WebDAV synchronisation target
  • -
  • New: Support for math typesetting Katex
  • -
  • New: Tray icon for Windows and macOS
  • -
  • Fixed: Don't allow adding notes to conflict notebook
  • -
  • Updated: Russian translation
  • -
  • Updated: French translation
  • -
  • New: List missing master keys in encryption screen
  • -
  • Fixed: Attaching images in Linux was no longer working
  • -
  • Fixed crash in macOS
  • -
-

v0.10.54 - 2018-01-31T20:21:30Z🔗

-
    -
  • Optimised Nextcloud functionality so that it is faster and consumes less resources
  • -
  • Fixed Nextcloud sync issue when processing many items.
  • -
  • Fixed: Handle case where file is left half-uploaded on Nextcloud instance (possibly an ocloud.de issue only)
  • -
  • Fixed: Allow decryption of other items to continue even if an item cannot be decrypted
  • -
  • Add Content-Size header for WebDAV, which is required by some services
  • -
  • Fixed auto-title when title is manually entered first
  • -
  • Improved auto-update process to avoid random crashes
  • -
  • New: Allow focusing either title or body when creating a new note or to-do
  • -
  • Fixed crash when having invalid UTF-8 string in text editor
  • -
-

v0.10.52 - 2018-01-31T19:25:18Z🔗

-
    -
  • Optimised Nextcloud functionality so that it is faster and consumes less resources
  • -
  • Fixed Nextcloud sync issue when processing many items.
  • -
  • Fixed: Handle case where file is left half-uploaded on Nextcloud instance (possibly an ocloud.de issue only)
  • -
  • Fixed: Allow decryption of other items to continue even if an item cannot be decrypted
  • -
  • Add Content-Size header for WebDAV, which is required by some services
  • -
  • Fixed auto-title when title is manually entered first
  • -
  • Improved auto-update process to avoid random crashes
  • -
  • New: Allow focusing either title or body when creating a new note or to-do
  • -
-

v0.10.51 - 2018-01-28T18:47:02Z🔗

-
    -
  • Added Nextcloud support (Beta)
  • -
  • Upgraded Electron to 1.7.11 to fix security vulnerability
  • -
  • Fixed checkbox issue in config screen
  • -
  • Fixed detection of encrypted item
  • -
-

v0.10.48 - 2018-01-23T11:19:51Z🔗

-
    -
  • Improved and optimised file system sync target when many items are present.
  • -
  • Fixes #155: Caret alignment issue with Russian text
  • -
  • Dutch translation (Thanks @tcassaert)
  • -
  • Removed certain log statements so that sensitive info doesn't end up in logs
  • -
  • Fix: Handle case where resource blob is missing during sync
  • -
-

v0.10.47 - 2018-01-16T17:27:17Z🔗

-
    -
  • Improved the way new note are created, and automatically add a title. Made saving and loading notes more reliable.
  • -
  • Fix: race condition when a note is being uploaded while it's being modified in the text editor
  • -
  • Fixes #129: Tags are case insensitive
  • -
  • Schedule sync only after 30 seconds
  • -
  • Schedule sync after enabling or disabling encryption
  • -
  • Display sync items being fetched
  • -
  • Fixed logic of what note is used when right-clicking one or more notes
  • -
  • Fix: Don't scroll back to top when note is reloaded via sync
  • -
  • Display URL for links
  • -
  • Fix: Move prompt to top to avoid issue with date picker being hidden
  • -
  • Fixed table font size and family
  • -
  • Fixed logic to save, and make sure scheduled save always happen even when changing note
  • -
  • Fixed OneDrive sync when resync is requested
  • -
  • Fixes #85: Don't record deleted_items entries for folders deleted via sync
  • -
  • Updated translations
  • -
-

v0.10.43 - 2018-01-08T10:12:10Z🔗

-
    -
  • Fixed saving and loading of settings, which could affect synchronisation
  • -
-

v0.10.41 - 2018-01-05T20:38:12Z🔗

-
    -
  • Added End-To-End Encryption support (E2EE)
  • -
-

v0.10.40 - 2018-01-02T23:16:57Z🔗

-
    -
  • Fixed undo in text editor
  • -
  • Updated German translation
  • -
  • Added Russian, Japanese and Chinese translations
  • -
-

v0.10.39 - 2017-12-11T21:19:44Z🔗

-
    -
  • Fixes #55: Added support for HTML tags found in ENEX files: colgroup, col, ins, kbd, address, caption, var, area, map
  • -
  • Resolve #7: Show storage location in Options screen
  • -
  • Fixes #84: Fields losing focus in Config screen
  • -
  • Fixes #86: App icon missing on Linux
  • -
  • Fixes #87: Show warningn when deleting notebook that contains notes.
  • -
  • Fixes #3: Paths with '.' would cause JSX compilation to fail
  • -
-

v0.10.38 - 2017-12-08T10:12:06Z🔗

-
    -
  • Dialog to export sync status
  • -
  • Enabled support for filesystem sync
  • -
-

v0.10.37 - 2017-12-07T19:38:05Z🔗

-
    -
  • Better handling of items that cannot be synchronised (for example, if they exceed the max file size supported by the target)
  • -
  • Added Synchronisation Status screen
  • -
  • Improved Enex support: -
      -
    • Better handling of notes containing entire web pages (such as when imported via Web Clipper)
    • -
    • Support for <img> tags
    • -
    • Support for various other tags
    • -
    • Improved importing web pages that contain tables within tables. In which case the outer tables (which are usually the website layout) are rendered as regular text block and only the inner tables are actually rendered as tables.
    • -
    • Fixed many other minor warnings and errors
    • -
    -
  • -
  • Allow setting installation directory in Windows
  • -
-

v0.10.36 - 2017-12-05T09:34:40Z🔗

-
    -
  • All: Improved synchronisation when sync target has unreliable timestamps
  • -
  • All: Fixed display issue - when items were modified during sync it could result in blank rows being displayed in note lists.
  • -
-

v0.10.35 - 2017-12-02T15:56:08Z🔗

-
    -
  • All: Fixed sync issue and database migration issue
  • -
-

v0.10.34 - 2017-12-02T14:50:28Z🔗

-
    -
  • All: fixed database creation error
  • -
  • All: Improved Evernote import for blockquotes and sup tags
  • -
  • CLI: Fixed crash when inputting command without closed quote
  • -
  • CLI: Allow Backspace key to delete items on macOS
  • -
  • Electron: Fixed header font sizes
  • -
  • Electron: Fix #33: Allow copy and paste in OneDrive login
  • -
  • Electron: Fixes #32: Error when manually input alarm date
  • -
  • Electron: Allow attaching multiple files
  • -
  • All: Allow attaching files of unknown mime type
  • -
  • All: Added error for OneDrive for Business
  • -
-

v0.10.33 - 2017-12-02T13:20:39Z🔗

-
    -
  • Improved Evernote import for blockquotes and sup tags
  • -
-

v0.10.31 - 2017-12-01T09:56:44Z🔗

-
    -
  • Fixes #22 - keyboard cursor jumps while typing.
  • -
-

v0.10.30 - 2017-11-30T20:28:16Z🔗

-
    -
  • Added Spanish locale (thank you Erick Rodríguez Ponce)
  • -
  • Fixed copy/cut/paste issue in macOS
  • -
  • Fixed checkbox issue in Option screen.
  • -
-

v0.10.28 - 2017-11-30T01:07:46Z🔗

-
    -
  • Added toolbar to set alarms and attach files
  • -
  • Fixed Evernote import of certain images
  • -
  • Fixed note update issue
  • -
-

v0.10.26 - 2017-11-29T16:02:17Z🔗

-
    -
  • Added support for alarms (notifications)
  • -
  • Fixed scrolling issue for long notes
  • -
  • Improved OneDrive login and possibly fixed rare error
  • -
-

v0.10.25 - 2017-11-24T14:27:49Z🔗

-
    -
  • Allow multi-selection on note lists
  • -
  • Allow drag and drop of notes
  • -
  • Hide invalid characters (non-breaking spaces) in editor
  • -
-

v0.10.23 - 2017-11-21T19:38:41Z🔗

-

v0.10.22 - 2017-11-20T21:45:57Z🔗

-

v0.10.21 - 2017-11-18T00:53:15Z🔗

-

v0.10.20 - 2017-11-17T17:18:25Z🔗

-

v0.10.19 - 2017-11-20T18:59:48Z🔗

- - - - -
- - - - diff --git a/docs/changelog_cli/index.html b/docs/changelog_cli/index.html deleted file mode 100644 index 6ca377a146..0000000000 --- a/docs/changelog_cli/index.html +++ /dev/null @@ -1,662 +0,0 @@ - - - - - - - Joplin terminal app changelog | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Joplin terminal app changelog🔗

-

cli-v1.4.3 - 2020-11-06T21:19:29Z🔗

-

IMPORTANT: If you use the web API, please note that there are a few breaking changes in this release. See here for more information: https://github.com/laurent22/joplin/pull/3983#issue-509624899

-
    -
  • New: API: Adds ability to paginate data (#3983)
  • -
  • Fixed: Display proper error message when decryption worker cannot be started (#4000)
  • -
  • Fixed: Fixed OneDrive authentication
  • -
  • Fixed: Fixed sync issue when importing ENEX files that contain new line characters in the source URL attribute (#3955)
  • -
-

cli-v1.3.3 - 2020-10-23T16:00:38Z🔗

-
    -
  • Improved: Added support for a custom S3 URL (#3921) (#3691 by @aaron)
  • -
  • Improved: Allow setting note geolocation attributes via API (#3884)
  • -
  • Improved: Import <strike>,<s> tags (strikethrough) from Evernote (#3936 by Ian Slinger)
  • -
  • Improved: Removed OneDrive Dev sync target which was not really useful
  • -
  • Improved: Sort search results by average of multiple criteria, including 'Sort notes by' field setting (#3777 by @shawnaxsom)
  • -
  • Improved: Sort tags in a case-insensitive way
  • -
  • Improved: Updated installation script with BSD support (#3930 by Andros Fenollosa)
  • -
  • Fixed: Crash when trying to change app locale (#3847)
  • -
  • Fixed: Fix search filters when language is in Korean or with accents (#3947 by Naveen M V)
  • -
  • Fixed: Fixed freeze when importing ENEX as HTML, and fixed potential error when importing resources (#3958)
  • -
  • 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: Importing ENEX as HTML was importing as Markdown (#3923)
  • -
  • Fixed: Regression: Fix export of pluginAssets when exporting to html/pdf (#3927 by Caleb John)
  • -
-

cli-v1.2.3 - 2020-10-09T11:17:18Z🔗

-
    -
  • Improved: Improved handling of database migration failures
  • -
-

cli-v1.2.2 - 2020-09-29T11:33:53Z🔗

-
    -
  • Fixed: Fixed crash due to missing spellfix extension
  • -
  • Fixed: Fixed link generation when exporting to PDF or HTML (#3780)
  • -
  • Fixed: Improved handling of special characters when exporting to Markdown (#3760)
  • -
-

cli-v1.2.1 - 2020-09-23T11:15:12Z🔗

-
    -
  • Fixed: Fixed crash due to missing spellfix extension
  • -
  • Fixed: Fixed link generation when exporting to PDF or HTML (#3780)
  • -
  • Fixed: Improved handling of special characters when exporting to Markdown (#3760)
  • -
-

cli-v1.1.8 - 2020-09-21T12:02:29Z🔗

-
    -
  • Improved: Do not prevent export when one item is still encrypted
  • -
  • Improved: Fix keytar library being loaded up in FreeBSD. (#3712) (#3711 by Jose Esteve)
  • -
  • Fixed: Fixed note export when there are folders with non-existing parents. Also fixed long path issue on Windows. (#3689)
  • -
  • Fixed: Increased file extension limit to 20 to prevent issue when using external editors (#3696)
  • -
-

cli-v1.0.168 - 2020-09-14T08:47:08Z🔗

-
    -
  • Improved: Implemented reliable way to sync device and server clocks
  • -
-

cli-v1.0.167 - 2020-09-04T17:15:49Z🔗

-
    -
  • New: Add mechanism to lock and upgrade sync targets (#3524)
  • -
  • Improved: Add search filters (#3213) (#1877 by Naveen M V)
  • -
  • Improved: Add support for OneDrive for Business (#3433) (#1266 by @jonath92)
  • -
  • Improved: Added link navigation shortcuts (#3275) (#3217 by j-krl)
  • -
  • Improved: When searching, weight notes using Okapi BM25 score (#3454 by Naveen M V)
  • -
  • Fixed: Fixed sync fetching issue (#3599) (#3591 by @alexchee)
  • -
-

cli-v1.0.166 - 2020-08-02T14:03:26Z🔗

-
    -
  • New: Add support for AWS S3 synchronisation (Beta) (#2815 by @alexchee)
  • -
  • Fixed: Desktop-only scripts were incorrectly being loaded in CLI server tool (#3548)
  • -
  • Fixed: Fix filename when exporting notebook as Markdown (#3473)
  • -
  • Fixed: Fixed attachments being out of order when importing Enex file
  • -
-

cli-v1.0.165 - 2020-07-10T18:51:42Z🔗

-
    -
  • New: Translation: Add bahasa indonesia (id_ID.po) (#3246 by @ffadilaputra)
  • -
  • Improved: Allow importing ENEX files as HTML
  • -
  • Improved: Disable support for HTML export for now as it does not work
  • -
  • Improved: Upload attachments > 4 MB when using OneDrive (#3195) (#173 by @TheOnlyTrueJonathanHeard)
  • -
  • Fixed: Fixed import of checkboxes in ENEX files (#3402)
  • -
  • Fixed: Fixed various bugs related to the import of ENEX files as HTML
  • -
  • Fixed: Only de-duplicate imported notebook titles when needed (#2331)
  • -
  • Fixed: Prevent desktop.ini file from breaking sync lock (#3381)
  • -
  • Fixed: Prevent notebook to be the parent of itself (#3334)
  • -
  • Fixed: Sync would fail in some cases due to a database error (#3234)
  • -
-

cli-v1.0.164 - 2020-05-13T15:30:22Z🔗

-
    -
  • New: Added support for basic search
  • -
  • Improved: Improve automatic title generation (#2955) (#2915 by anirudh murali)
  • -
  • Improved: Improve handling of encrypted items
  • -
  • Improved: Made layout configurable (#3069 by @jyuvaraj03)
  • -
  • Improved: Start resource fetcher service when a note has been decrypted
  • -
  • Fixed: Better handling of missing table field bug on Linux (#3088)
  • -
  • Fixed: Fix format of geolocation data (#2673 by @mic704b)
  • -
-

cli-v1.0.163 - 2020-04-10T18:31:50Z🔗

-
    -
  • Improved: Update ko.po (#2986 by @xmlangel)
  • -
  • Improved: Update it_IT.po (#2978 by @abonte)
  • -
  • Improved: Update nb_NO.po (#2973 by Mats Estensen)
  • -
  • Improved: Update zh_CN.po (#2971 by @troilus)
  • -
  • Fixed: Add support for retrying decryption after it has failed multiple times (#2981)
  • -
  • Fixed: When modifying a conflicted note, it would disappear from the view (#2709)
  • -
  • Fixed: Prevent decryption loop when a resource cannot be decrypted (#2257)
  • -
-

cli-v1.0.162 - 2020-04-01T17:16:14Z🔗

-
    -
  • New: Compatibility with new master key and sync target encryption
  • -
-

cli-v1.0.161 - 2020-03-07T01:20:04Z🔗

-
    -
  • New: Add more context to encryption errors
  • -
  • Improved: Changed default encryption method to CCM
  • -
  • Improved: Change geolocation service to freegeoip.app to improve privacy (#2503 by Helmut K. C. Tessarek)
  • -
  • Fixed: Handle invalid UTF-8 data when encrypting (#2591)
  • -
  • Fixed: Fixed issue when a notebook does not have a parent (#2536)
  • -
  • Fixed: Better handling of rare error in WebDAV server (#2485)
  • -
  • Fixed: Fix importing of very large attachments (150MB+) from Evernote ENEX files
  • -
-

cli-v1.0.154 - 2020-02-07T23:22:24Z🔗

-
    -
  • New: Added new date format YYYY.MM.DD (#2318 by XSAkos)
  • -
  • Improved: Reset time fields when duplicating a note (#2428 by @tekdel)
  • -
  • Improved: More info for "unknown profile version" error message (#2361 by @mic704b)
  • -
  • Improved: Handle Thai language in search (#2387) (#2279 by Kirtan Purohit)
  • -
  • Fixed: Fix escaping of title when generating a markdown link (#2456) (#2085 by Helmut K. C. Tessarek)
  • -
  • Fixed: Fix console messages being displayed in GUI (#2457 by Helmut K. C. Tessarek)
  • -
-

cli-v1.0.153 - 2020-01-24T23:16:32Z🔗

-
    -
  • New: Added new, more secure encryption methods, so that they can be switched to at a later time
  • -
  • New: Add --export, --import, and --import-file flags to joplin config (#2179 by Marcus Hill)
  • -
  • New: Added more logging for resource fetching to try to debug issue
  • -
  • New: Add warning message when user tries to upload a file 10MB or larger (#2102) (#2097 by Marcus Hill)
  • -
  • Improved: Replace note links with relative paths in MD Exporter (#2161 by Vaidotas Simkus)
  • -
  • Improved: Upgrade sqlite (#2248 by Devon Zuegel)
  • -
  • Improved: Extract note renderer to separate package (WIP) (#2206 by Laurent Cozic)
  • -
  • Improved: Better handling of resource download errors, and added resource info to sync status screen
  • -
  • Improved: Update Node dependency to 10+ (#2177 by @joeltaylor)
  • -
  • Improved: Allow exporting a note as HTML
  • -
  • Improved: Improved logging during sync to allow finding bugs more easily
  • -
  • Fixed: Handle WebDAV servers that do not return a last modified date (fixes mail.ru) (#2091)
  • -
  • Fixed: Restaured translations that had been accidentally deleted (#2126)
  • -
  • Fixed: Prevent synch from happening if target dir could not be created, in local sync (#2117)
  • -
  • Fixed: Handle rare case when notebook has a parent that no longer exists, which causes a crash when sorting (#2088)
  • -
-

cli-v1.0.150 - 2019-11-11T19:19:03Z🔗

-
    -
  • New: Add command to list all tags for a note (#2003) (#1974)
  • -
  • New: Added concept of sync version and client ID to allow upgrading sync targets
  • -
  • Improved: Set user-agent header to Joplin/1.0 (#2064) (#2042)
  • -
  • Improved: Update sharp tp v0.23.2 (for node 13 compatibility) (#2063)
  • -
  • Improved: Handle special shortcuts such as Ctrl+H
  • -
  • Improved: Handle WebDAV server with empty XML namespaces (#2002)
  • -
  • Improved: Allow apps to work with read-only profile
  • -
  • Improved: Support italic in span tags (#1966)
  • -
  • Improved: Allow setting user timestamps with "set" command
  • -
  • 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: Use profile temp dir when exporting files (#1932)
  • -
  • Improved: Confirm encryption password (#1937)
  • -
  • Fixed: Handle paths with spaces for text editor (#2039)
  • -
  • Fixed: Apply default style to notes in HTML format (#1960)
  • -
  • Fixed: Fixed translation of "Synchronisation Status" (#1906)
  • -
  • Fixed: App would crash if trying to index a note that has not been decrypted yet (#1938)
  • -
-

cli-v1.0.149 - 2019-09-27T21:18:57Z🔗

-
    -
  • New: Add support to Termux by returning a default when platform name cannot be determined (#1905)
  • -
-

cli-v1.0.148 - 2019-09-27T18:42:36Z🔗

-
    -
  • 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
  • -
-

cli-v1.0.147 - 2019-09-25T21:26:24Z🔗

-
    -
  • New: Import Evernote notes as HTML (#1887)
  • -
  • 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: Upgrade joplin-turndown-plugin-gfm to fix import of certain Enex tables
  • -
  • Fixed: Fixed import of notes that contain links with hashes
  • -
  • Fixed: Fixed link issue following last update
  • -
-

cli-v1.0.146 - 2019-09-08T19:12:41Z🔗

-
    -
  • Fixed: Fixed regression that was making installation fail
  • -
-

cli-v1.0.145 - 2019-09-08T16:23:02Z🔗

-
    -
  • New: Added headless server command (Beta) (#1860)
  • -
  • Improved: Improved bold formatting support in Enex import (#1708)
  • -
  • Improved: Make translation files smaller by not including untranslated strings. Also add percentage translated to config screen. (#1459)
  • -
  • Fixed: Make sure setting side-effects are applied even when running in command line mode (#1779)
  • -
  • Fixed: Fix typo on encryption options screen (#1823)
  • -
  • Fixed: Fixes fatal error with cli 1.0.141 on start (#1791)
  • -
-

cli-v1.0.137 - 2019-05-19T11:04:28Z🔗

-
    -
  • Fixed: Fixed method to autosize resource
  • -
-

cli-v1.0.136 - 2019-05-19T10:19:22Z🔗

-
    -
  • Improved: Put back "Fetched items" message during sync
  • -
  • Fixed: Handle missing resource blob when setting resource size
  • -
  • Fixed: Prevent app from trying to upload resource it has not downloaded yet
  • -
-

cli-v1.0.135 - 2019-05-13T22:59:14Z🔗

-
    -
  • New: Added option to disable creation of welcome items
  • -
  • New: Support for note history (#1415) (#712)
  • -
  • Improved: Save size of a resource to the database; and added mechanism to run non-database migrations
  • -
  • Improved: Display better error message when trying to sync with a new sync target from an old version of Joplin
  • -
  • Improved: Update sharp (for node 12 compatibility) (#1471)
  • -
  • Fixed: Do not resize images if they are already below the max dimensions
  • -
  • Fixed: Allow resources greater than 10 MB but they won't be synced on mobile (#371)
  • -
  • Fixed: Bump sqlite3 to v4.0.7 for node12 support (#1508)
  • -
  • Fixed: Prevents notes with no title to break after synchronize (#1472)
  • -
  • Fixed: Import lists and sub-lists from Enex files with correct indentation (#1476)
  • -
-

cli-v1.0.125 - 2019-04-29T18:38:05Z🔗

-
    -
  • Improved: Improved support for Japanese, Chinese, Korean search queries (also applies to Goto Anything)
  • -
  • Improved: Display warning when changing dir for filesystem sync
  • -
  • Fixed: Remove message "Processing a path that has already been done" as this is not an error (#1353)
  • -
  • Fixed: Some resources could incorrectly be deleted even though they are still present in a note. Also added additional verifications before deleting a resource. (#1433)
  • -
  • Fixed: Handle invalid resource tags that contain no data when importing ENEX (#1405)
  • -
  • Fixed: Restored inline code styling (#1326)
  • -
- - - - -
- - - - diff --git a/docs/clipper/index.html b/docs/clipper/index.html deleted file mode 100644 index 9fc8e0b350..0000000000 --- a/docs/clipper/index.html +++ /dev/null @@ -1,470 +0,0 @@ - - - - - - - Joplin Web Clipper | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Joplin Web Clipper🔗

-

The 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.

- -

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.

-

However certain things can interfer with this service and prevent it from being accessible or from starting. If something does not work, check the following:

-
    -
  • Check that the service is started. You can check this in the Web clipper options in the desktop app.
  • -
  • Check that the port used by the service is not blocked by a firewall. You can find the port number in the Web clipper options in the desktop Joplin application.
  • -
  • Check that no proxy is running on the machine, or make sure that the requests from the web clipper service are filtered and allowed. For example https://github.com/laurent22/joplin/issues/561#issuecomment-392220191
  • -
-

If none of this work, please report it on the forum or GitHub issue tracker

-

Debugging the extension🔗

-

In Chrome🔗

-

To provide as much information as possible when reporting an issue, you may provide the log from the various Chrome console.

-

To do so, first enable developer mode in chrome://extensions/

-
    -
  • Debugging the popup: Right-click on the Joplin extension icon, and select "Inspect popup".
  • -
  • 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🔗

-
    -
  • Open about:debugging in Firefox.
  • -
  • Make sure the checkox "Enable add-on debugging" is ticked.
  • -
  • Scroll down to the Joplin Web Clipper extension.
  • -
  • Click on "Debugging" - that should open a new console window.
  • -
-

Also press F12 to open the regular Firefox console (some messages from the Joplin extension can go there too).

-

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.

-

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.

- - - - -
- - - - diff --git a/docs/conflict/index.html b/docs/conflict/index.html deleted file mode 100644 index 9359838c7a..0000000000 --- a/docs/conflict/index.html +++ /dev/null @@ -1,446 +0,0 @@ - - - - - - - What is a conflict? | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

What is a conflict?🔗

-

A conflict happens when one note or one attachment is modified in two different places, and then synchronised. In that case, it not possible to determine which version of the note or attachment you want to keep, and thus a conflict is generated.

-

What happens in case of a conflict?🔗

-

When Joplin detects a conflict, the local note is copied to the Conflict notebook so as to avoid any data loss. Then the remote note is downloaded. 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.

-

How to avoid conflicts?🔗

-

Conflicts are always annoying to deal with so it is best to avoid them as much as possible.

-

For this, the best way is to synchronise as often as possible, so that you are always working with the latest versions of your notes.

-

Joplin attempts to do this by uploading your latest changes within a few seconds. However, downloading changes is done at fixed intervals, every few minutes (as defined in the Config screen) and this is where conflicts may happen. It can also happen if one of your device did not have an internet connection for some times, and then synchronises. A bad internet connection can also hinder synchronisation because it will interrupt the process, which may have to restarted from the beginning to ensure consistency.

-

So if you have not opened your application in a while, manually sync it and wait for it to complete, that way you are sure that whatever change you make will be on the latest version of the note.

- - - - -
- - - - diff --git a/docs/debugging/index.html b/docs/debugging/index.html deleted file mode 100644 index 9da577591e..0000000000 --- a/docs/debugging/index.html +++ /dev/null @@ -1,492 +0,0 @@ - - - - - - - How to enable debugging | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

How to enable debugging🔗

-

It is possible to get the apps to display or log more information that might help debug various issues.

-

Desktop application🔗

-
    -
  • Click on menu Help > Open Profile Directory and add a file named "flags.txt" in your directory with the following content: --open-dev-tools --debug --log-level debug
  • -
  • Restart the application
  • -
  • The development tools should now be opened. Click the "Console" tab
  • -
  • Now repeat the action that was causing problem. The console might output warnings or errors - please add them to the GitHub issue. Also open log.txt in the config folder and if there is any error or warning, please also add them to the issue.
  • -
-

CLI application🔗

-
    -
  • Start the app with joplin --debug --log-level debug
  • -
  • Check log.txt as specified above for the desktop application and attach the log to the GitHub issue (or just the warnings/errors if any). The profile directory would be in ~/.config/joplin.
  • -
-

Mobile application🔗

-
    -
  • In the Configuration screen, press on the Log button and post a screenshot of any error/warning.
  • -
-

Creating a low-level bug report on Android🔗

-

https://developer.android.com/studio/debug/bug-report

-

To get a bugreport directly from your device, do the following:

-
    -
  • Be sure you have Developer Options enabled.
  • -
  • In Developer options, tap Take bug report.
  • -
  • Select the type of bug report you want and tap Report.
  • -
-

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🔗

-

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.

-

For this, please follow these instructions:

-

You can send it to this address https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/AdresseSupport.png

-

https://developer.apple.com/library/content/qa/qa1747/_index.html

-

Getting Crash Logs Directly From a Device Without Xcode

-

Your users can retrieve crash reports from their device and send them to you via email by following these instructions.

-

(It is not possible to get device console logs directly from a device)

-
    -
  1. -

    Open Settings app

    -
  2. -
  3. -

    Go to Privacy, then Diagnostics & Usage

    -
  4. -
  5. -

    Select Diagnostics & Usage Data

    -
  6. -
  7. -

    Locate the log for the crashed app. The logs will be named in the format: <AppName>_<DateTime>_<DeviceName>

    -
  8. -
  9. -

    Select the desired log. Then, using the text selection UI select the entire text of the log. Once the text is selected, tap Copy

    -
  10. -
  11. -

    Paste the copied text to Mail and send to an email address as desired

    -
  12. -
- - - - -
- - - - diff --git a/docs/desktop/index.html b/docs/desktop/index.html deleted file mode 100644 index 0c84b4dbf2..0000000000 --- a/docs/desktop/index.html +++ /dev/null @@ -1,440 +0,0 @@ - - - - - - - Desktop application | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Desktop application🔗

- -

For general information relevant to all the applications, see also Joplin home page.

- - - - -
- - - - diff --git a/docs/donate/index.html b/docs/donate/index.html deleted file mode 100644 index e7bd19935c..0000000000 --- a/docs/donate/index.html +++ /dev/null @@ -1,455 +0,0 @@ - - - - - - - Support Joplin development | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Support Joplin development🔗

-

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 standards.

-

PayPal🔗

-

To donate via PayPal, please follow this link:

-

Donate on PayPal

-

GitHub Sponsor🔗

-

Or follow this link to become a GitHub Sponsor:

-

Sponsor on GitHub

-

Patreon🔗

-

Alternatively you may support the project on Patreon:

-

Become a patron

-

Other way to support the development🔗

-

Finally, there are other ways to support the development of Joplin:

- - - - - -
- - - - diff --git a/docs/e2ee/index.html b/docs/e2ee/index.html deleted file mode 100644 index 965f0d8cdc..0000000000 --- a/docs/e2ee/index.html +++ /dev/null @@ -1,458 +0,0 @@ - - - - - - - About End-To-End Encryption (E2EE) | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

About 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.

-

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🔗

-

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.

-

To enable it, please follow these steps:

-
    -
  1. On your first device (eg. on the desktop application), go to the Encryption Config screen and click "Enable encryption"
  2. -
  3. Input your password. This is the Master Key password which will be used to encrypt all your notes. Make sure you do not forget it since, for security reason, it cannot be recovered.
  4. -
  5. Now you need to synchronise all your notes so that they are sent encrypted to the sync target (eg. to OneDrive, Nextcloud, etc.). Wait for any synchronisation that might be in progress and click on "Synchronise".
  6. -
  7. Wait for this synchronisation operation to complete. Since all the data needs to be re-sent (encrypted) to the sync target, it may take a long time, especially if you have many notes and resources. Note that even if synchronisation seems stuck, most likely it is still running - do not cancel it and simply let it run over night if needed.
  8. -
  9. Once this first synchronisation operation is done, open the next device you are synchronising with. Click "Synchronise" and wait for the sync operation to complete. The device will receive the master key, and you will need to provide the password for it. At this point E2EE will be automatically enabled on this device. Once done, click Synchronise again and wait for it to complete.
  10. -
  11. Repeat step 5 for each device.
  12. -
-

Do not manually enable encryption on multiple devices in parallel, but rather wait for the other ones to sync with the first already encrypted device. Otherwise, you may end up with multiple encryption keys (which is supported by Joplin but most probably not what you want).

-

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🔗

-

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🔗

-

For a more technical description, mostly relevant for development or to review the method being used, please see the Encryption specification.

- - - - -
- - - - diff --git a/docs/faq/index.html b/docs/faq/index.html deleted file mode 100644 index 0e6bc42dae..0000000000 --- a/docs/faq/index.html +++ /dev/null @@ -1,522 +0,0 @@ - - - - - - - FAQ | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

FAQ🔗

-

Installer gets stuck on Windows🔗

-

The installer may get stuck if the app was not uninstalled correctly. To fix the issue you will need to clean up the left-over entry from the Registry. To do so please follow these steps:

-
    -
  • Press Win + R (Windows Key + R)
  • -
  • Type "regedit.exe"
  • -
  • Navigate to HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Uninstall
  • -
  • In there, you will see one or more folders. Open them one by one to find the one for Joplin. One of the entries in there should be "DisplayName" with value "Joplin x.x.x".
  • -
  • Once found, delete that folder.
  • -
-

Now try to install again and it should work.

-

More info there: https://github.com/electron-userland/electron-builder/issues/4057

-

How can I edit my note in an external text editor?🔗

-

The editor command (may include arguments) defines which editor will be used to open a note. If none is provided it will try to auto-detect the default editor. If this does nothing or you want to change it for Joplin, you need to configure it in the Preferences -> Text editor command.

-

Some example configurations are: (comments after #)

-

Linux/Mac:

-
subl -n -w      # Opens Sublime (subl) in a new window (-n) and waits for close (-w)
-code -n --wait  # Opens Visual Studio Code (code) in a new window (-n) and waits for close (--wait)
-gedit --new-window    # Opens gedit (Gnome Text Editor) in a new window
-xterm -e vim    # Opens a new terminal and opens vim. Can be replaced with an
-                # alternative terminal (gnome-terminal, terminator, etc.) 
-                # or terminal text-editor (emacs, nano, etc.)
-open -a <application> # Mac only: opens a GUI application
-
-

Windows:

-
subl.exe -n -w      # Opens Sublime (subl) in a new window (-n) and waits for close (-w)
-code.exe -n --wait  # Opens Visual Studio Code in a new window (-n) and waits for close (--wait)
-notepad.exe         # Opens Notepad in a new window
-notepad++.exe --openSession   # Opens Notepad ++ in new window
-
-

Note that the path to directory with your editor executable must exist in your PATH variable (Windows, Linux/Mac) If not, the full path to the executable must be provided.

-

When I open a note in vim, the cursor is not visible🔗

-

It seems to be due to the setting set term=ansi in .vimrc. Removing it should fix the issue. See https://github.com/laurent22/joplin/issues/147 for more information.

-

All my notes got deleted after changing the WebDAV URL!🔗

-

When changing the WebDAV URL, make sure that the new location has the same exact content as the old location (i.e. copy all the Joplin data over to the new location). Otherwise, if there's nothing on the new location, Joplin is going to think that you have deleted all your data and will proceed to delete it locally too. So to change the WebDAV URL, please follow these steps:

-
    -
  1. Make a backup of your Joplin data in case something goes wrong. Export to a JEX archive for example.
  2. -
  3. Synchronise one last time all your data from a Joplin client (for example, from the desktop client)
  4. -
  5. Close the Joplin client.
  6. -
  7. On your WebDAV service, copy all the Joplin files from the old location to the new one. Make sure to also copy the .resource directory as it contains your images and other attachments.
  8. -
  9. Once it's done, open Joplin again and change the WebDAV URL.
  10. -
  11. Synchronise to verify that everything is working.
  12. -
  13. Do step 5 and 6 for all the other Joplin clients you need to sync.
  14. -
-

How can I easily enter Markdown tags in Android?🔗

-

You may use a special keyboard such as Multiling O Keyboard, which has shortcuts to create Markdown tags. More information in this post.

-

The initial sync is very slow, how can I speed it up?🔗

-

Whenever importing a large number of notes, for example from Evernote, it may take a very long time for the first sync to complete. There are various techniques to speed thing up (if you don't want to simply wait for the sync to complete), which are outlined in this post.

-

Is it possible to use real file and folder names in the sync target?🔗

-

Unfortunately it is not possible. Joplin synchronises with file systems using an open format however it does not mean the sync files are meant to be user-editable. The format is designed to be performant and reliable, not user friendly (it cannot be both), and that cannot be changed. Joplin sync directory is basically just a database.

-

Could there be a password to restrict access to Joplin?🔗

-

The end to end encryption that Joplin implements is to protect the data during transmission and on the cloud service so that only you can access it.

-

On the local device it is assumed that the data is safe due to the OS built-in security features. If additional security is needed it's always possible to put the notes on an encrypted Truecrypt drive for instance.

-

For these reasons, because the OS or yourself can easily protect the local data, no PIN or password is currently supported to access Joplin.

-

There is however an issue open about it, so pull requests are welcome: https://github.com/laurent22/joplin/issues/289

-

WebDAV synchronisation is not working🔗

-

"Forbidden" error in Strato🔗

-

For example:

-
MKCOL .sync/: Unknown error 2 (403): <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
-<html><head>
-<title>403 Forbidden</title>
-</head><body>
-<h1>Forbidden</h1>
-<p>You don't have permission to access /.sync/
-on this server.</p>
-</body></html>
-
-

In this case, make sure you enter the correct WebDAV URL.

-

Nextcloud sync is not working🔗

- -

How can I use self-signed SSL certificates on Android?🔗

-

If you want to serve using https but can't or don't want to use SSL certificates signed by trusted certificate authorities (like "Let's Encrypt"), it's possible to generate a custom CA and sign your certificates with it. You can generate the CA and certificates using openssl, but I like to use a tool called mkcert for it's simplicity. Finally, you have to add your CA certificate to Android settings so that Android can recognize the certificates you signed with your CA as valid (link).

-

How do I restart Joplin on Windows (so that certain changes take effect)?🔗

-

If Show tray icon is enabled, closing the Joplin window does not quit the application. To restart the application properly, one of the following has to be done to quit Joplin:

-
    -
  • click File in the menu and then click Quit
  • -
  • right-click on the Joplin tray icon and then click Exit
  • -
-

Additionally the Windows Task Manager can be used to verify whether Joplin is still around.

-

Why is it named Joplin?🔗

-

The name comes from the composer and pianist Scott Joplin, which I often listen to. His name is also easy to remember and type so it felt like a good choice. And, to quote a user on Hacker News, "though Scott Joplin's ragtime musical style has a lot in common with some very informal music, his own approach was more educated, sophisticated, and precise. Every note was in its place for a reason, and he was known to prefer his pieces to be performed exactly as written. So you could say that compared to the people who came before him, his notes were more organized".

- - - - -
- - - - diff --git a/docs/gsoc2020/ideas/index.html b/docs/gsoc2020/ideas/index.html deleted file mode 100644 index b7be4fd63f..0000000000 --- a/docs/gsoc2020/ideas/index.html +++ /dev/null @@ -1,543 +0,0 @@ - - - - - - - GSoC 2020 Ideas | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

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

-

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🔗

-

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🔗

-

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.

-

We want to offer this feature by allowing the user to select a profile from the app (eg. "work" or "personal"), then switch to it. Switching would be done by restarting the app and loading the selected profile.

-

Expected Outcome: The user should be able to select a profile and switch to it.

-

Difficulty Level: Moderate

-

Platforms: Desktop and/or mobile (at the student's choice)

-

Skills Required: JavaScript; React; React Native (for mobile)

-

Potential Mentor(s): tessus, laurent22

-

More info: GitHub issue, Forum Thread

-

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.

-

The basis for this would be the Joplin Web API for Nextcloud, which is currently used to share a note publicly, and which can be extended for other uses.

-

The main feature we would like to see is the ability to select a Nextcloud user from the app, then share a note with him or her. Once the note is shared, it will appear in the Joplin clients of the other user (via sync). The solution should be generic enough that it can later be used to share a whole notebook.

-

Expected Outcome: The user should be able to select a Nextcloud user then share a note with them. That note should then appear in the other user's Joplin clients.

-

Difficulty Level: High

-

Platforms: Desktop and/or mobile (at the student's choice)

-

Skills Required: JavaScript; React; React Native (for mobile)

-

Potential Mentor(s): Roeland Jago Douma, laurent22

-

More info: Forum thread about Joplin Web API for Nextcloud

-

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.

-

Expected Outcome: The tags can be organised into a hierarchy

-

Difficulty Level: Moderate

-

Platforms: Desktop, Mobile and Terminal

-

Skills Required: JavaScript; React; React Native (for mobile)

-

Potential Mentor(s): laurent22

-

More info: GitHub issue

-

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

-

Expected Outcome: Share images and selected with Joplin

-

Difficulty Level: Moderate

-

Platforms: Mobile (iOS and Android)

-

Skills Required: JavaScript; React; React Native

-

Potential Mentor(s): CalebJohn, laurent22

-

More info: Mobile - Add share menu #876

-

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. There is already the web application what may used as a starting point, but it is also fine to start from scratch.

-

Feature parity with the desktop client is not needed and would be out of scope. These are the features that would be needed to create a minimal web client:

-
    -
  • Ability to list the notebooks in a hierarchy
  • -
  • Ability to view a note and render the Markdown to HTML
  • -
  • Ability to edit the Markdown note and save it
  • -
  • Handle conflicts when, for example, a note is modified in the web client and, at the same time, it is modified via sync.
  • -
-

Expected Outcome: Viewing and editing notes and notebooks from a Nextcloud-based web client

-

Difficulty Level: High

-

Skills Required: PHP (for the Nextcloud app). For the front-end it can be plain HTML (no JS), or React.

-

Potential Mentor(s): Roeland Jago Douma, laurent22

-

More info: GitHub: Nextcloud notes integration (Web client)

-

6. OCR support🔗

-

It is possible to add support for OCR content in Joplin via the Tesseract library. 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.

-

Expected Outcome: A service on the desktop app that extract text from images and attach it to the note.

-

Difficulty Level: High

-

Skills Required: JavaScript

-

Potential Mentor(s): CalebJohn, laurent22

-

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.

-

Expected Outcome: The user select a note and has the option to encrypt it.

-

Difficulty Level: Medium

-

Skills Required: JavaScript; React

-

Potential Mentor(s): PackElend, laurent22

-

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.

-

While it works relatively well, there is still room for improvement. In particular we would like to implement the following:

-
    -
  • -

    Allow boolean searches - search for "A and B", or "A or B", etc.

    -
  • -
  • -

    Remove the need for wildcard queries - for example instead of typing "search*", it will be possible to simply type "search" and results that contain "search" or "searching" will be included. Those that contain the exact match will come first.

    -
  • -
  • -

    Search within certain tags (eg. "tag:software search" to search within the notes tagged with "software" and that contain the word "search").

    -
  • -
  • -

    Improve relevance algorithm (give a weight to certain criteria, and allow adding new criteria more easily). In particular give more weight to recently modified notes, and less weight to completed to-dos.

    -
  • -
  • -

    Allow fuzzy search (for example return results that contain "saerch" for the query "search")

    -
  • -
-

Expected Outcome: To be defined with the student. Depending on what features they would like to implement.

-

Difficulty Level: Medium

-

Skills Required: JavaScript

-

Potential Mentor(s): laurent22

-

More info: Search engine improvements

-

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.

-

Expected Outcome: To add a WYSIWYG editor to the desktop app.

-

Difficulty Level: High

-

Skills Required: JavaScript; React

-

Potential Mentor(s): CalebJohn, PackElend, laurent22

-

More info: WYSIWYG thread on the forum

-

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.

-

Expected Outcome: To add support for custom shortcuts and allow editing them in the config screen

-

Difficulty Level: Easy

-

Skills Required: JavaScript; React

-

Potential Mentor(s): tessus, laurent22

- - - - -
- - - - diff --git a/docs/gsoc2020/index/index.html b/docs/gsoc2020/index/index.html deleted file mode 100644 index eea56034a3..0000000000 --- a/docs/gsoc2020/index/index.html +++ /dev/null @@ -1,542 +0,0 @@ - - - - - - - Google Summer of Code 2020 | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Google Summer of Code 2020🔗

-

Joplin has a young but well proven history. It all started by single idea but is rising more and more commitment as well as demands.

-

Joplin is about to make another big step to answers these demands by applying at Google Summer of Code. All students and Joplin users and developers are welcome to participate in the hopefully first year Summer of Code program with Joplin. Here's how.

-

Mentors, administrators and students: read Summer of Code occasionally. Also read the Summer of Code FAQ.
-Most IMPORTANT, read this page carefully, line by line. We don't want to quote pharagraphs from this page answering question in the forum.
-Moreover, watch/subscribe the topic GSoC 2020 live blog as this page here contains rather static content whereas the mentioned topic is updated much more freuqently.

-

All participants will need a Google account in order to join the program. So, save time and create one now. In addition, all participants need to join the Joplin Forum.

-

Programming Language🔗

-

All applications share the same back-end written in JavaScript (Node.js), with Redux for state management. The back-end runs locally.

-

The GUI's, as listed on the Joplin's website are:

-
    -
  • CLI: terminal-kit
  • -
  • Desktop: Electron
  • -
  • Mobile: React Native
  • -
-

More details can be found on:

- -

Moreover there are community driven projects such as:

- -

Submissions and ideas for projects in any other language should specifically mention the choice.

-

Instructions for students🔗

-

Students wishing to participate in Summer of Code must realize, that this is a important professional opportunity. You will be required to produce applicable and readable code 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 developer - in fact, this whole program is meant to facilitate joining Joplin and other Open Source communities. However, experience in coding and/or experience with the above mentioned programming languages and the applications is welcome.

-

In general it can be said, that question shall be asked early and clearly, given everyone the possibility to understand why you want to have this question answered and how it helps to achieve the project's goal.

-

Before you can be accepted as a student we expect you to fix some bugs or implement some small feature and link that work on your proposal. You may browse the GitHub Issues to find some simple tasks. See the good first issues which are a good way to make yourself familiar with the code base.

-

You should start learning the components that you plan on working on before the start date. Support can be found in the forum and on our dedicated discourse channel.

-

Do not worry, the timeline from Google reserves a lot of time for bonding periods so use that time wisely. Good communication is key. To allow us to respond quickly tag your questions with #gsoc-2020.

-

You should plan to communicate with your team several times per week, and formally report progress and plans weekly. You are free to chose the format, it can be an sophisticated online document or simple continuous blog on GitHub.

-

Moreover, we require that you come to clear agreement on how to commit, test and build.

-

Students who neglect active communication will be failed!

-

General instructions🔗

-

First of all, please read the above referenced resources and the GSoC FAQ. Pay special attention to the Eligibility section of the FAQ.

-

Recommended steps🔗

-
    -
  1. Join the Joplin Forum, introduce yourself in a structured manner, share your GitHub username, and meet your fellow developers in the GSoC category. The subject of the topic shall contain your username, e.g. Introducing <username>.
  2. -
  3. Read Student proposal guidelines and the GSoC Student Manual
  4. -
  5. Take a look at the list of ideas. You can have you own idea added by posting it in the Features category
  6. -
  7. Come up with project that you're interested in and discuss it in Features category
  8. -
  9. Write a first draft and get someone to review it
  10. -
  11. Remember: you must link to work such as commits in your proposal. A private place will be created wihtinn the forum for that purposes.
  12. -
  13. Read How to write a kickass proposal for GSoC
  14. -
  15. Submit proposal using Google's web interface ahead of the deadline
  16. -
  17. Submit proof of enrolment well ahead of the deadline
  18. -
-

Coming up with an interesting idea is probably the most difficult part. It should be something interesting for Joplin, for Open Source in general and for you. And it must be something that you can realistically achieve in the time available to you.

-

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🔗

-

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.

-

Below is the application template:

-
-

Introduction

-

Every software project should solve a problem. Before offering the solution (your Google Summer of Code project), you should first define the problem. What’s the current state of things? What’s the issue you wish to solve and why? Then you should conclude with a sentence or two about your solution. Include links to discussions, features, or bugs that describe the problem further if necessary.

-

Project goals

-

Be short and to the point, and perhaps format it as a list. Propose a clear list of deliverables, explaining exactly what you promise to do and what you do not plan to do. “Future developments” can be mentioned, but your promise for the Google Summer of Code term is what counts.

-

Implementation

-

Be detailed. Describe what you plan to do as a solution for the problem you defined above. Include technical details, showing that you understand the technology. Illustrate key technical elements of your proposed solution in reasonable detail. Include writing unit tests throughout the coding period, as well as code documentation. These critical elements cannot be left to the last few weeks of the program. If user documentation will be required, or apidox, etc. these should be written during each week, not at the end.

-

Timeline

-

Show that you understand the problem, have a solution, have also broken it down into manageable parts, and that you have a realistic plan on how to accomplish your goal. Here you set expectations, so don’t make promises you can’t keep. A modest, realistic and detailed timeline is better than promising the impossible.

-

If you have other commitments during GSoC, such as a job, vacation, exams, internship, seminars, or papers to write, disclose them here. GSoC should be treated like a full-time job, and we will expect approximately 40 hours of work per week. If you have conflicts, explain how you will work around them. If you are found to have conflicts which you did not disclose, you may be failed.

-

Open and clear communication is of utmost importance. Include your plans for communication in your proposal; daily if possible. You will need to initiate weekly formal communication such as a blog post on to be agreed placed. Lack of communication will result in you being failed.

-

About me

-

Provide your contact information (IRC nick, email, IM, phone) and write a few sentences about you and why you think you are the best for this job. Prior contributions to Joplin are required; list your commits. Name people (other developers, students, professors) who can act as a reference for you. Mention your field of study if necessary. Now is the time to join the relevant irc/telegram channels, mail lists and blog feeds. We want you to be a part of our community, not just contribute your code.

-

Tell us if you are submitting proposals to other organizations, and whether or not you would choose Joplin if given the choice.

-

Other things to think about:

-
    -
  • -

    Are you comfortable working independently under a supervisor or mentor who is several thousand miles away, and perhaps 12 time zones away? How will you work with your mentor to track your work? Have you worked in this style before?

    -
  • -
  • -

    If your native language is not English, are you comfortable working closely with a supervisor whose native language is English? What is your native language, as that may help us find a mentor who has the same native language?

    -
  • -
  • -

    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.

    -
  • -
-
-

Hints🔗

-

Submit your proposal early: early submissions get more attention from developers because that they have more time to read them. The more people see your proposal, the more it will be discussed.

-

Do not leave it all to the last minute: while it is Google that is operating the webserver, it would be wise to expect a last-minute overload on the server. So, be sure you send your application and proof of enrolment before the final rush. Also, applications submitted very late will get the least attention from mentors, so you may get a lower vote because of that. Submitting a draft early will give time for feedback from prospective mentors.

-

Keep it simple: Be concise and precise. Provide a clear, descriptive title. "My Project" is the worst possible title!

-

Know what you are talking about: Do not submit proposals that cannot be accomplished over a summer or that are not related to Joplin. If your idea is unusual, be sure to explain why you have chosen Joplin to be your mentoring organization.
-There could be exceptional reason to accept proposal what cannot be finished over the summer if either it is clearly recognisable that there will be commitment beyond the summer period or the project can be well separated in sub-project. If you want to go that way, your proposal must be very easy readable to allow us to evaluate the changes of a project going through several coding programs.

-

Aim wide: submit more than one proposal. You are allowed to submit to another organisation as well. If you do submit more than one proposal, tell us that and which proposal you would choose, if both were selected. Former students would advise you to do one or two kick-ass proposals rather than trying to do three.

-

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 coding plus 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🔗

-

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, based what your Joplin project needs.

-

If you wish to mentor, please read the GSoC Mentor Guide and the Summer of Code 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🔗

-

Anyone developer can be a mentor if you meet the GSoC 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.

-

Prospective mentors should read the mentoring guide. Also, Federico Mena-Quintero has written some helpful information based on his experiences in previous years. His HOWTO has some useful suggestions for anyone planning to mentor this year.

-

You will subscribe to the relevant tags in the forum to discuss ideas. You will need to read the proposals as they come in, and vote on the proposals. Daily communication is required with your student during the Community Bonding period, and multiple times per week during the coding period.

-

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🔗

-

Please see below for a list of project ideas:

-

https://joplinapp.org/gsoc2020/ideas/

- - - - -
- - - - diff --git a/docs/gsod2020/ideas/index.html b/docs/gsod2020/ideas/index.html deleted file mode 100644 index b9156cb651..0000000000 --- a/docs/gsod2020/ideas/index.html +++ /dev/null @@ -1,468 +0,0 @@ - - - - - - - 1.Idea - Create documenation hub | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

1.Idea - Create documenation 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: - -
  • -
  • Make a screening of available tools to visualize dependencies of all Joplin components
  • -
  • create a consistent structure to allow to have them filled easily.
  • -
  • 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
  • -
  • 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 - -
  • -
-

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🔗

-

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/docs/gsod2020/index/index.html b/docs/gsod2020/index/index.html deleted file mode 100644 index d95ad66be2..0000000000 --- a/docs/gsod2020/index/index.html +++ /dev/null @@ -1,528 +0,0 @@ - - - - - - - Google Season of Doc 2020 | Joplin - - - - - - - - - - - - - -
- -
- -

Joplin

-

An open source note taking and to-do application with synchronisation capabilities

-
- - - -
- - -
-

Google Season of Doc 2020🔗

-

Joplin has a young but well proven history. It all started by single idea but is rising more and more commitment as well as demands.

-

Joplin is about to make another big step to answers these demands by being an organization at Google Summer of Code 2020.
-During the young history of the GSoC campaign it was noticed that it would be a greate help if documenation is centralized and making it a continuous read. The current documentation tells when to do what and how clearly. In addition, the source code of Joplin is clean and well strucutred, so it is easy to understand.
-Nevertheless, there are additional and essential information scattered around on the Forum and GitHub which rely on an active community, so that are being shared with them who need them. It can be said that this happens very well but it is aggreed that this situation has to be improved to free resources for working on the source coden and lower entry barriers for new contributors.

-

For these reasons, all students and Joplin users and developers are welcome to participate in the hopefully first year Summer of Docs program with Joplin. Here's how.

-

Mentors, administrators and students: read Season of Docs occasionally. Also read the Season of Docs FAQ.
-Most IMPORTANT, read this page carefully, line by line. We don't want to quote pharagraphs from this page answering question in the forum.
-Moreover, watch/subscribe the topic GSoC 2020 live blog as this page here contains rather static content whereas the mentioned topic is updated much more freuqently.

-

All participants will need a Google account in order to join the program. So, save time and create one now. In addition, all participants need to join the Joplin Forum.

-
-

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 documenation 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 writter - in fact, this whole program is meant to facilitate to support Joplin and other Open Source communities by techinal writters. However, experience in technical writting and/or coding experience is welcome.

-

In general it can be said, that question shall be asked early and clearly, given everyone the possibility to understand why you want to have this question answered and how it helps to achieve the project's goal.

-

Before you can be accepted as a student we expect you to communicate very activily with the community and contributors and summerize what could help them most and link that work on your proposal.
-If your idea is related to codebase documentation it is welcome that you fix little bugs. You may browse the GitHub Issues to find some simple tasks. See the good first issues which are a good way to make yourself familiar with the code base.

-

You should start learning the components that you plan on working on before the start date. Support can be found in the forum and on our dedicated discourse channel.

-

Do not worry, the timeline from Google reserves a lot of time for bonding periods so use that time wisely. Good communication is key. To allow us to respond quickly tag your questions with GSoC-2020.

-

You should plan to communicate with your team several times per week, and formally report progress and plans weekly. You are free to chose the format, it can be an sophisticated online document or simple continuous blog on GitHub.

-

Moreover, we require that you come to clear agreement on how to commit, test and build.

-

Students who neglect active communication will be failed!

-

General instructions🔗

-

First of all, please read the above referenced resources and the GSoC FAQ. Pay special attention to the Eligibility section of the FAQ.

-

We stronly recomment to follow the recommented steps, see next section, closley. 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.

-

Recommended steps🔗

-
    -
  1. Join the Joplin Forum, introduce yourself in a structured manner, share your GitHub username, and meet your fellow developers in the GSoC category. The subject of the topic shall contain your username, e.g. _Introducing \<username>_.
  2. -
  3. Read Student proposal guidelines and the GSoD Student Manual
  4. -
  5. Take a look at the list of ideas. You can have you own idea added by posting it in the Features category
  6. -
  7. Come up with project that you're interested in and discuss it in Features category if a corresponding does not already exist.
  8. -
  9. Write a first draft and get someone to review it -
      -
    1. Remember: you must link to work such as commits in your proposal. A private place will be created wihtinn the forum for that purposes.
    2. -
    3. If you want to add functionality to the codebase or documenation, have it approved Features category
    4. -
    5. IMPORTANT: If you contribute to the codebase do only one contribution at a time and wait until it is approved.
    6. -
    -
  10. -
  11. Submit your proposal to the mentors writting a private message at @mentors in the Joplin Forum and wait for their feedback
  12. -
  13. Submit proposal using Google's web interface well ahead of the deadline. You can update it at anytime, even the final proposal.
  14. -
  15. Submit proof of enrolment well ahead of the deadline
  16. -
-

Coming up with an interesting idea is probably the most difficult part. It should be something interesting for Joplin, for Open Source in general and for you. And it must be something that you can realistically achieve in the time available to you.

-

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🔗

-

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.

-

Below is the application template:

-
-

Introduction

-

Every software project should solve a problem. Before offering the solution (your Google Summer of Code project), you should first define the problem. What’s the current state of things? What’s the issue you wish to solve and why? Then you should conclude with a sentence or two about your solution. Include links to discussions, features, or bugs that describe the problem further if necessary.

-

Project goals

-

Be short and to the point, and perhaps format it as a list. Propose a clear list of deliverables, explaining exactly what you promise to do and what you do not plan to do. “Future developments” can be mentioned, but your promise for the Google Summer of Code term is what counts.

-

Implementation

-

Be detailed. Describe what you plan to do as a solution for the problem you defined above. Include technical details, showing that you understand the technology. Illustrate key technical elements of your proposed solution in reasonable detail. Include writing unit tests throughout the coding period, as well as code documentation. These critical elements cannot be left to the last few weeks of the program. If user documentation will be required, or apidox, etc. these should be written during each week, not at the end.

-

Timeline

-

Show that you understand the problem, have a solution, have also broken it down into manageable parts, and that you have a realistic plan on how to accomplish your goal. Here you set expectations, so don’t make promises you can’t keep. A modest, realistic and detailed timeline is better than promising the impossible.

-

If you have other commitments during GSoC, such as a job, vacation, exams, internship, seminars, or papers to write, disclose them here. GSoC should be treated like a full-time job, and we will expect approximately 40 hours of work per week. If you have conflicts, explain how you will work around them. If you are found to have conflicts which you did not disclose, you may be failed.

-

Open and clear communication is of utmost importance. Include your plans for communication in your proposal; daily if possible. You will need to initiate weekly formal communication such as a blog post on to be agreed placed. Lack of communication will result in you being failed.

-

About me

-

Provide your contact information (IRC nick, email, IM, phone) and write a few sentences about you and why you think you are the best for this job. Prior contributions to Joplin are required; list your commits. Name people (other developers, students, professors) who can act as a reference for you. Mention your field of study if necessary. Now is the time to join the relevant irc/telegram channels, mail lists and blog feeds. We want you to be a part of our community, not just contribute your code.

-

Tell us if you are submitting proposals to other organizations, and whether or not you would choose Joplin if given the choice.

-

Other things to think about:

-
    -
  • -

    Are you comfortable working independently under a supervisor or mentor who is several thousand miles away, and perhaps 12 time zones away? How will you work with your mentor to track your work? Have you worked in this style before?

    -
  • -
  • -

    If your native language is not English, are you comfortable working closely with a supervisor whose native language is English? What is your native language, as that may help us find a mentor who has the same native language?

    -
  • -
  • -

    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🔗

-

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🔗

-

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, based what your Joplin project needs.

-

If you wish to mentor, please read the GSoD Mentor Guide and the Season of Doc 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🔗

-

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.

-

You will subscribe to the relevant tags in the forum to discuss ideas. You will need to read the proposals as they come in, and vote on the proposals. Daily communication is required with your student during the Community Bonding period, and multiple times per week during the doc development period.

-

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🔗

-

Please see below for a list of project ideas:

-

https://joplinapp.org/gsod2020/ideas/

- - - - -
- - - - diff --git a/docs/index.html b/docs/index.html index 76b911e92c..02f7d44297 100644 --- a/docs/index.html +++ b/docs/index.html @@ -351,14 +351,20 @@ https://github.com/laurent22/joplin/blob/dev/README.md
  • -

    Joplin API

    +

    Joplin API - Get Started

    +
  • +
  • +

    Joplin API - References

    +
  • diff --git a/docs/markdown/index.html b/docs/markdown/index.html deleted file mode 100644 index 25b3271c21..0000000000 --- a/docs/markdown/index.html +++ /dev/null @@ -1,756 +0,0 @@ - - - - - - - Markdown Guide | Joplin - - - - - - - - - - - - - -
    - -
    - -

    Joplin

    -

    An open source note taking and to-do application with synchronisation capabilities

    -
    - - - -
    - - -
    -

    Markdown Guide🔗

    -

    Markdown is a simple way to format text that looks great on any device. It doesn't do anything fancy like change the font size, color, or type — just the essentials, using keyboard symbols you already know. Since it is plain text, it is an easy way to author notes and documents and when needed it can be converted to a rich text HTML document.

    -

    Joplin desktop and mobile applications can display both the Markdown text and the rendered rich text document.

    -

    Joplin follows the CommonMark specification, with additional features added via plugins.

    -

    Cheat Sheet🔗

    -

    This is a quick summary of the Markdown syntax.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    MarkdownRendered Output
    Heading 1
    # Heading 1

    Heading 1

    Heading 2
    ## Heading 2

    Heading 2

    Heading 3
    ### Heading 3

    Heading 3

    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
    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;
    Unformatted text
    Indent with a tab or 4 spaces
    for unformatted text.

    This text will not be formatted:

    Robert'); DROP TABLE students;--
    Indent with a tab or 4 spaces for unformatted text.

    This text will not be formatted:

    Robert'); DROP TABLE students;--
    Link
    This is detected as a link:

    https://joplinapp.org

    And this is a link anchoring text content:

    [Joplin](https://joplinapp.org)

    And this is a link, with a title,
    anchoring text content:

    [Joplin](https://joplinapp.org "Joplin project page")
    This is detected as a link:

    https://joplinapp.org

    And this is a link anchoring text content:

    Joplin

    And this is a link, with a title,
    anchoring text content:

    Joplin (hint: hover over the link)
    Images
    ![Joplin icon](https://git.io/JenGk)
    Here's Joplin icon
    Horizontal Rule
    One rule:
    ***
    Another rule:
    ---
    One rule:

    Another rule:

    TablesSee below
    -

    Tables🔗

    -

    Tables are created using pipes | and and hyphens -. This is a Markdown table:

    -
    | First Header  | Second Header |
    -| ------------- | ------------- |
    -| Content Cell  | Content Cell  |
    -| Content Cell  | Content Cell  |
    -
    -

    Which is rendered as:

    - - - - - - - - - - - - - - - - - -
    First HeaderSecond Header
    Content CellContent Cell
    Content CellContent Cell
    -

    Note that there must be at least 3 dashes separating each header cell.

    -

    Colons can be used to align columns:

    -
    | Tables        | Are           | Cool  |
    -| ------------- |:-------------:| -----:|
    -| col 3 is      | right-aligned | $1600 |
    -| col 2 is      | centered      |   $12 |
    -
    -

    Which is rendered as:

    - - - - - - - - - - - - - - - - - - - - -
    TablesAreCool
    col 3 isright-aligned$1600
    col 2 iscentered$12
    -

    Joplin Extras🔗

    -

    Besides the standard Markdown syntax, Joplin supports several additional features.

    -

    Links to other notes🔗

    -

    You can create a link to a note by specifying its ID in the URL. For example:

    -
    [Link to my note](:/0b0d62d15e60409dac34f354b6e9e839)
    -
    -

    Since getting the ID of a note is not straightforward, each app provides a way to create such link. In the desktop app, right click on a note an select "Copy Markdown link". In the mobile app, open a note and, in the top right menu, select "Copy Markdown link". You can then paste this link anywhere in another note.

    -

    Math notation🔗

    -

    Math expressions can be added using the KaTeX notation. To add an inline equation, wrap the expression in $EXPRESSION$, eg. $\sqrt{3x-1}+(1+x)^2$. To create an expression block, wrap it as follow:

    -
    $$
    -EXPRESSION
    -$$
    -
    -

    For example:

    -
    $$
    -f(x) = \int_{-\infty}^\infty
    -	\hat f(\xi)\,e^{2 \pi i \xi x}
    -	\,d\xi
    -$$
    -
    -

    Here is an example with the Markdown and rendered result side by side:

    - -

    Chemical equations🔗

    -

    Joplin supports chemical equations via the mhchem plugin for KaTeX. This plugin is automatically enabled if you enable math notation. See the mhchem documentation for the syntax.

    - -

    Diagrams🔗

    -

    You can create diagrams in Joplin using the Mermaid syntax. 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;
    -```
    -
    -

    This is how it would look with the Markdown on the left, and rendered graph on the right:

    -

    Mermaid support in Joplin

    -

    Note that Mermaid graphs are always rendered on a white background regardless of the current theme. This is because they can contain various colours that may not be compatible with the current theme.

    -

    Checkboxes🔗

    -

    Checkboxes can be added like so:

    -
    - [ ] Milk
    -- [x] Rice
    -- [ ] Eggs
    -
    -

    Which would turn into:

    -

    Checkbox support in Joplin

    -

    The checkboxes can then be ticked in the mobile and desktop applications.

    -

    HTML support🔗

    -

    It is generally recommended to enter the notes as Markdown as it makes the notes easier to edit. However for cases where certain features aren't supported (such as strikethrough or to highlight text), you can also use HTML code directly. For example this would be a valid note:

    -
    This is <s>strikethrough text</s> mixed with regular **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. Note: not all of the plugins are enabled by default, if the enable field is 'no' below, then open the option screen to enable the plugin. Plugins can be disabled in the same manner.

    -

    Note that 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.

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    PluginSyntaxDescriptionEnabledScreenshot
    Soft breaksSee breaks markdown-it demoJoplin uses hard breaks by default, which means that a line break is rendered as <br>. Enable soft breaks for traditional markdown line-break behaviour.noView
    TypographerSee typographer markdown-it demoDoes typographic replacements, (c) -> © and so onnoView
    Katex$$math expr$$ or $math$See aboveyesView
    Mark==marked==Transforms into <mark>marked</mark> (highlighted)yesView
    FootnoteSimples inline footnote ^[I'm inline!]See plugin page for full descriptionyesView
    TOCAny of ${toc}, [[toc]], [toc], [[_toc_]]Adds a table of contents to the location of the toc page. Based on headings and sub-headingsnoView
    SubX~1~Transforms into X1noView
    SupX^2^Transforms into X2noView
    DeflistSee pandoc page for syntaxAdds the html <dl> tag accessible through markdownnoView
    Abbr*[HTML]: Hyper Text Markup Language
    The HTML specification
    Allows definition of abbreviations that can be hovered over later for a full expansionnoView
    Emoji:smile:Transforms into 😄. See this list for more emojisnoView
    Insert++inserted++Transforms into <ins>inserted</ins> (inserted)noView
    MultitableSee MultiMarkdown pageAdds more power and customization to markdown tablesnoView
    Fountain```fountain
    Your screenplay...
    ```
    Adds support for the Fountain markup language, a plain text markup language for screenwritingnoView
    Mermaid```mermaid
    mermaid syntax...
    ```
    See plugin page for full descriptionnoView
    - - - - -
    - - - - diff --git a/docs/mobile/index.html b/docs/mobile/index.html deleted file mode 100644 index b59769d24b..0000000000 --- a/docs/mobile/index.html +++ /dev/null @@ -1,439 +0,0 @@ - - - - - - - Mobile app | Joplin - - - - - - - - - - - - - -
    - -
    - -

    Joplin

    -

    An open source note taking and to-do application with synchronisation capabilities

    -
    - - - -
    - - -
    -

    Mobile app🔗

    -

    An Android and iOS (iPhone/iPad) applications are available from the Joplin home page.

    - - - - -
    - - - - diff --git a/docs/nextcloud_app/index.html b/docs/nextcloud_app/index.html deleted file mode 100644 index b8a8bc18fa..0000000000 --- a/docs/nextcloud_app/index.html +++ /dev/null @@ -1,474 +0,0 @@ - - - - - - - Joplin Web API for Nextcloud | Joplin - - - - - - - - - - - - - -
    - -
    - -

    Joplin

    -

    An open source note taking and to-do application with synchronisation capabilities

    -
    - - - -
    - - -
    -

    Joplin Web API for Nextcloud🔗

    -

    This is a beta feature, not yet completed. More info coming soon!

    -

    The app can be downloaded from there: https://apps.nextcloud.com/apps/joplin

    -

    The Joplin Web API for Nextcloud is a helper application that enables certain features that are not possible otherwise. In particular:

    -
      -
    • Sharing a note publicly
    • -
    • Sharing a note with another Joplin user (who uses the same Nextcloud instance)
    • -
    • Collaborating on a note
    • -
    • Sharing a notebook
    • -
    -

    FAQ🔗

    -
    -

    Does it work with encrypted notes?

    -
    -

    No

    -
    -

    Does it render images and other attachments?

    -
    -

    No

    -
    -

    How about math formulas?

    -
    -

    No

    -
    -

    Can I share a notebook?

    -
    -

    No

    -
    -

    Can I edit a shared note directly on the browser?

    -
    -

    No

    -

    TODO🔗

    -
      -
    • [ ] Handle encrypted notes (shared notes will be unencrypted on server)
    • -
    • [ ] Move Joplin note rendererer to separate package and re-use it to render notes in the Nextcloud app
    • -
    • [ ] Allow editing note in browser
    • -
    - - - - -
    - - - - diff --git a/docs/plugins/index.html b/docs/plugins/index.html deleted file mode 100644 index bdefe3dc4e..0000000000 --- a/docs/plugins/index.html +++ /dev/null @@ -1,441 +0,0 @@ - - - - - - - Plugins | Joplin - - - - - - - - - - - - - -
    - -
    - -

    Joplin

    -

    An open source note taking and to-do application with synchronisation capabilities

    -
    - - - -
    - - -
    -

    Plugins🔗

    -

    Joplin supports plugins, which can be used to add new features or modify the application behaviour.

    -

    Installing a plugin🔗

    -

    To install a plugin, copy its directory to your profile's plugins directory. The plugin will be automatically loaded and executed when you restart the application.

    - - - - -
    - - - - diff --git a/docs/prereleases/index.html b/docs/prereleases/index.html deleted file mode 100644 index 5cdb728bfd..0000000000 --- a/docs/prereleases/index.html +++ /dev/null @@ -1,442 +0,0 @@ - - - - - - - Getting pre-releases | Joplin - - - - - - - - - - - - - -
    - -
    - -

    Joplin

    -

    An open source note taking and to-do application with synchronisation capabilities

    -
    - - - -
    - - -
    -

    Getting pre-releases🔗

    -

    Pre-releases are available for the desktop application. They are pretty much like regular releases, except that they have not yet been tested by many users, so it is possible that a bug or two went through.

    -

    You can help the development of Joplin by choosing to receive these early releases when updating the application. If you find any bug or other issue, you may report it on the forum or GitHub.

    -

    In general it is safe to use these pre-releases (they do not include any experimental or unstable features). In fact most pre-release eventually become regular releases after a few days.

    -

    To have access to these pre-releases, simply go to Configuration screen and tick the box "Get pre-releases when checking for updates".

    - - - - -
    - - - - diff --git a/docs/privacy/index.html b/docs/privacy/index.html deleted file mode 100644 index b2e53350dc..0000000000 --- a/docs/privacy/index.html +++ /dev/null @@ -1,441 +0,0 @@ - - - - - - - Joplin Privacy Policy | Joplin - - - - - - - - - - - - - -
    - -
    - -

    Joplin

    -

    An open source note taking and to-do application with synchronisation capabilities

    -
    - - - -
    - - -
    -

    Joplin Privacy Policy🔗

    -

    The Joplin applications, including the Android, iOS, Windows, macOS and Linux applications, do not send any data to any service without your authorisation. Any data that Joplin saves, such as notes or images, are saved to your own device and you are free to delete this data at any time.

    -

    If you choose to synchronise with a third-party, such as OneDrive or Dropbox, the notes will be sent to that account, in which case the third-party privacy policy applies.

    -

    For any question about Joplin privacy policy, please leave a message on the forum.

    - - - - -
    - - - - diff --git a/docs/spec/e2ee/index.html b/docs/spec/e2ee/index.html deleted file mode 100644 index 90a7d97a32..0000000000 --- a/docs/spec/e2ee/index.html +++ /dev/null @@ -1,533 +0,0 @@ - - - - - - - Encryption | Joplin - - - - - - - - - - - - - -
    - -
    - -

    Joplin

    -

    An open source note taking and to-do application with synchronisation capabilities

    -
    - - - -
    - - -
    -

    Encryption🔗

    -

    Encrypted data is encoded to ASCII because encryption/decryption functions in React Native can only deal with strings. So for compatibility with all the apps we need to use the lowest common denominator.

    -

    Encrypted data format🔗

    -

    Header🔗

    - - - - - - - - - - - - - - - - - -
    NameSize
    Identifier3 chars ("JED")
    Version number2 chars (Hexa string)
    -

    This is followed by the encryption metadata:

    - - - - - - - - - - - - - - - - - - - - - -
    NameSize
    Length6 chars (Hexa string)
    Encryption method2 chars (Hexa string)
    Master key ID32 chars (Hexa string)
    -

    See lib/services/EncryptionService.js for the list of available encryption methods.

    -

    Data chunk🔗

    -

    The data is encoded in one or more chunks for performance reasons. That way it is possible to take a block of data from one file and encrypt it to another block in another file. Encrypting/decrypting the whole file in one go would not work (on mobile especially).

    - - - - - - - - - - - - - - - - - -
    NameSize
    Length6 chars (Hexa string)
    Data("Length" bytes) (ASCII)
    -

    Master Keys🔗

    -

    The master keys are used to encrypt and decrypt data. They can be generated from the Encryption Service and are saved to the database. They are themselves encrypted via a user password using a strong encryption method.

    -

    These encrypted master keys are transmitted with the sync data so that they can be available to each client. Each client will need to supply the user password to decrypt each key.

    -

    The application supports multiple master keys in order to handle cases where one offline client starts encrypting notes, then another offline client starts encrypting notes too, and later both sync. Both master keys will have to be decrypted separately with the user password.

    -

    Only one master key can be active for encryption purposes. For decryption, the algorithm will check the Master Key ID in the header, then check if it's available to the current app and, if so, use this for decryption.

    -

    Encryption Service🔗

    -

    The applications make use of the EncryptionService class to handle encryption and decryption. Before it can be used, a least one master key must be loaded into it and be marked as "active".

    -

    Encryption workflow🔗

    -

    Items are encrypted only during synchronisation, when they are serialised (via BaseItem.serializeForSync), so before being sent to the sync target.

    -

    They are decrypted by DecryptionWorker in the background.

    -

    The apps handle displaying both decrypted and encrypted items, so that user is aware that these items are there even if not yet decrypted. Encrypted items are mostly read-only to the user, except that they can be deleted.

    -

    Enabling and disabling encryption🔗

    -

    Enabling/disabling E2EE while two clients are in sync might have an unintuitive behaviour (although that behaviour might be correct), so below some scenarios are explained:

    -
      -
    • -

      If client 1 enables E2EE, all items will be synced to target and will appear encrypted on target. Although all items have been re-uploaded to the target, their timestamps did not change (because the item data itself has not changed, only its representation). Because of this, client 2 will not re-download the items - it does not need to do so anyway since it has already the item data.

      -
    • -
    • -

      When a client sync and download a master key for the first time, encryption will be automatically enabled (user will need to supply the master key password). In that case, all items that are not encrypted will be re-synced. Uploading only non-encrypted items is an optimisation since if an item is already encrypted locally it means it's encrypted on target too.

      -
    • -
    • -

      If both clients are in sync with E2EE enabled: if client 1 disable E2EE, it's going to re-upload all the items unencrypted. Client 2 again will not re-download the items for the same reason as above (data did not change, only representation). Note that user must manually disable E2EE on all clients otherwise some will continue to upload encrypted items. Since synchronisation is stateless, clients do not know whether other clients use E2EE or not so this step has to be manual.

      -
    • -
    • -

      Although messy, Joplin supports having some clients send encrypted items and others unencrypted ones. The situation gets resolved once all the clients have the same E2EE settings.

      -
    • -
    • -

      Currently, there is no way to delete encryption keys if you do not need them anymore or if you disabled the encryption completely. You will get a persistant notification to provide a Master Key password on a new device, even if encryption is disabled. Entering the Master Key(s) password and still having the encryption disabled will get rid of the notification. See Delete E2EE Master Keys for more info.

      -
    • -
    - - - - -
    - - - - diff --git a/docs/spec/history/index.html b/docs/spec/history/index.html deleted file mode 100644 index b51b7d2495..0000000000 --- a/docs/spec/history/index.html +++ /dev/null @@ -1,465 +0,0 @@ - - - - - - - Note history | Joplin - - - - - - - - - - - - - -
    - -
    - -

    Joplin

    -

    An open source note taking and to-do application with synchronisation capabilities

    -
    - - - -
    - - -
    -

    Note history🔗

    -

    The note history preserves versions of the notes at regular interval. All the revisions are synced and shared across all devices.

    -

    Revision format🔗

    -

    To save space, only the diff of a note is saved: the title and body are saved as text diff, while the other properties are saved as an object diff (i.e. only the modified properties are saved).

    -

    Advantages: it saves space, and writes are fast.

    -

    Disadvantages: reading a note version back is slower since it needs to be rebuilt, starting from the oldest revision and applying diffs to it one at a time.

    -

    Revision service🔗

    -

    Every time an object is changed in Joplin, some metadata is added to the changed_items table. The revision service uses this to know what notes need a new revision. Specifically it will create a revision under these conditions:

    -
      -
    1. -

      The note hadn't had a revision for more than 10 minutes

      -
    2. -
    3. -

      The note was recently modified, but before that it hadn't had a revision for more than 7 days

      -
    4. -
    -

    Condition 1 saves the current state of the note (i.e. after the edit). Condition 2 saves the state has it was before the edit.

    -

    The reason for that is that we save revisions every 10 minutes, but if you make many changes within a few minutes and then stop modifying the note, the final revision will not contain the current content of the note. Basically at one point (let's say at t1) the service will see there's a revision from less than 10 minutes, and will not save a new one.

    -

    That's why when you change the note again more than 7 days later, we save that revision that wasn't saved at t1. The logic is a bit complicated but the goal is to preserve the last significant state of a note. If you make many changes to a note then stop editing it for several months, the last significant state was at the end of that series of edits, so we need to save that.

    -

    Additionally, notes that were created before the service existed never had revisions. So the 7 days logic ensure that they get one the first time they are modified.

    -

    Revision deletion🔗

    -

    Revisions are deleted once they are older than a given interval as set in revisionService.oldNoteInterval (90 days by default).

    -

    Disabling the service🔗

    -

    When disabled, no new revision is saved, but the existing one remain there, and will only be deleted after the interval specified in revisionService.oldNoteInterval.

    -

    Revision settings are global🔗

    -

    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.

    -

    Why is there less than 10 minutes between some revisions?🔗

    -

    It can happen if a note is changed on two different devices within less than 10 minutes. A revision will be created on each device, then when they are synced it will appear that there's less than 10 min between the revisions.

    - - - - -
    - - - - diff --git a/docs/spec/plugins/index.html b/docs/spec/plugins/index.html deleted file mode 100644 index 78bf3dd092..0000000000 --- a/docs/spec/plugins/index.html +++ /dev/null @@ -1,503 +0,0 @@ - - - - - - - Plugin system architecture | Joplin - - - - - - - - - - - - - -
    - -
    - -

    Joplin

    -

    An open source note taking and to-do application with synchronisation capabilities

    -
    - - - -
    - - -
    -

    Plugin system architecture🔗

    -

    The plugin system assumes a multi-process architecture, which is safer and easier to manage. For example if a plugin freezes or crashes, it doesn't bring down the app with it. It also makes it easier to find the source of problem when there is one - eg. we know that process X has crashed so the problem is with the plugin running inside. The alternative, to run everything within the same process, would make it very hard to make such a diagnostic. Once a plugin call is frozen in an infinite loop or crashes the app, we can't know anything.

    -

    Main architecture elements🔗

    -

    Plugin script🔗

    -

    Written by the user and loaded by Joplin, it's a simple JavaScript file that makes calls to the plugin API. It is loaded in a separate process.

    -

    Sandbox proxy🔗

    -

    It is loaded in the same process as the plugin script. Whenever the plugin script calls a plugin API function (eg. joplin.commands.execute) it goes through this proxy. The proxy then converts the call to a plain string and use IPC to send the call to the plugin host. The plugin host executes the function on the plugin API then sends back the result by IPC call again.

    -

    Plugin host🔗

    -

    The plugin host is simply the main application. Its role is to start and initialise the plugin service and to load plugins from the provided script files.

    -

    Plugin service🔗

    -

    It is used to load and run plugins. Running plugins is platform-specific, thus this part is injected into the service via a platform-specific Plugin Runner.

    -

    Plugin runner🔗

    -

    This is the platform-specfic way to load and run a plugin. For example, on desktop, it creates a new BrowserWindow (which is a new process), then load the script inside. On Cli, for now the "vm" package is used, so the plugin actually runs within the same process.

    -

    The plugin runner also initialises the sandbox proxy and injects it into the plugin code.

    -

    Plugin API🔗

    -

    The plugin API is a light wrapper over Joplin's internal functions and services. All the platforms share some of the plugin API but there can also be some differences. For example, the desktop app exposes the text editor component commands, and so this part of the plugin API is available only on desktop. The difference between platforms is implemented using the PlatformImplementation class, which is injected in the plugin service on startup.

    -

    Handling events between the plugin and the host🔗

    -

    Handling events in plugins is relatively complicated due to the need to send IPC messages and the limitations of the IPC protocol, which in particular cannot transfer functions.

    -

    For example, let's say we define a command in the plugin:

    -
    joplin.commands.register({
    -	name: 'testCommand1',
    -	label: 'My Test Command 1',
    -}, {
    -	onExecute: (args:any) => {
    -		alert('Testing plugin command 1');
    -	},
    -});
    -
    -

    The "onExecute" event handler needs to be called whenever, for example, a toolbar button associated with this command is clicked. The problem is that it is not possible to send a function via IPC (which can only transfer plain objects), so there has to be a translation layer in between.

    -

    The way it is done in Joplin is like so:

    -

    In the sandbox proxy, the event handlers are converted to string event IDs and the original event handler is stored in a map before being sent to host via IPC. So in the example above, the command would be converted to this plain object:

    -
    {
    -	name: 'testCommand1',
    -	label: 'My Test Command 1',
    -}, {
    -	onExecute: '___event_handler_123',
    -}
    -
    -

    Then, still in the sandbox proxy, we'll have a map called something like eventHandlers, which now will have this content:

    -
    eventHandlers['___event_handler_123'] = (args:any) => {
    -	alert('Testing plugin command 1');
    -}
    -
    -

    In the plugin runner (Host side), all the event IDs are converted to functions again, but instead of performing the action directly, it posts an IPC message back to the sandbox proxy using the provided event ID.

    -

    So in the host, the command will now look like this:

    -
    {
    -	name: 'testCommand1',
    -	label: 'My Test Command 1',
    -}, {
    -	onExecute: (args:any) => {
    -		postMessage('pluginMessage', { eventId: '___event_handler_123', args: args });
    -	};
    -}
    -
    -

    At this point, any code in the Joplin application can call the onExecute function as normal without having to know about the IPC translation layer.

    -

    When the function onExecute is eventually called, the IPC message is sent back to the sandbox proxy, which will decode it and execute it.

    -

    So on the sandbox proxy, we'll have something like this:

    -
    window.addEventListener('message', ((event) => {
    -	const eventId = getEventId(event); // Get back the event ID (implementation might be different)
    -	const eventArgs = getEventArgs(event); // Get back the args (implementation might be different)
    -	if (eventId) {
    -		// And call the event handler
    -		eventHandlers[eventId](...eventArgs);
    -	}	
    -}));
    -
    - - - - -
    - - - - diff --git a/docs/spec/search_sorting/index.html b/docs/spec/search_sorting/index.html deleted file mode 100644 index f3c67f265d..0000000000 --- a/docs/spec/search_sorting/index.html +++ /dev/null @@ -1,460 +0,0 @@ - - - - - - - Search Engine | Joplin - - - - - - - - - - - - - -
    - -
    - -

    Joplin

    -

    An open source note taking and to-do application with synchronisation capabilities

    -
    - - - -
    - - -
    -

    Search Engine🔗

    -

    The Search Engine powers the Search input in the note list and the Goto Anything dialog.

    -

    Search algorithm🔗

    -

    Discretely using only the most critical parameter in sorting🔗

    -

    Sorting occurs as the Search Engine processes results, after searching for and weighting these results.

    -

    Parameters include fuzziness, title matching, weight (based on BM25 and age), the completed status of to-dos, and the note's age.

    -

    The Search Engine uses only the first relevant parameter to determine the order, rather than a weighted average.
    -In effect, this means search results with note title matches will appear above all results that only matched the note body,
    -regardless of weight or other parameters.

    -

    Determining weight as a sorting parameter🔗

    -

    The Search Engine determines the weight parameter using both BM25
    -and the number of days since last user update.

    -

    BM25🔗

    -

    The Search Engine determines BM25 based on "term frequency-inverse document frequency."
    -The "TF–IDF" value increases proportionally to the number of times a word appears in the document
    -and is offset by the number of documents in the corpus that contain the word, which helps to adjust
    -for the fact that some words appear more frequently in general.

    -

    BM25 returns weight zero for a search term that occurs in more than half the notes.
    -So terms that are abundant in all notes to have zero relevance w.r.t. BM25.

    -

    Days since last user update🔗

    -

    Sorting increases the BM25 weight by the inverse number of days since the note was updated.
    -Recent notes will, therefore, be weighted highly in the search results.
    -This time-based weight decays logarithmically, becoming less of a factor than BM25 after months have passed.

    - - - - -
    - - - - diff --git a/docs/spec/sync_lock/index.html b/docs/spec/sync_lock/index.html deleted file mode 100644 index c4b55dde00..0000000000 --- a/docs/spec/sync_lock/index.html +++ /dev/null @@ -1,497 +0,0 @@ - - - - - - - Lock types | Joplin - - - - - - - - - - - - - -
    - -
    - -

    Joplin

    -

    An open source note taking and to-do application with synchronisation capabilities

    -
    - - - -
    - - -
    -

    Lock types🔗

    -

    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🔗

    -

    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.

    -

    For example, if a client is currently syncing, it must stop doing so if it couldn't refresh the lock with Y seconds.

    -

    For example, if a client is upgrading a target, it must stop doing so if it couldn't refresh the lock within Y seconds.

    -

    If the previous lock has expired, we shouldn't try to acquire a new one. This is because other clients, seeing no active lock, might have performed in the meantime operations that invalidates the current operation. For example, another client might have upgraded the sync target, so any active sync with an expired lock should be cancelled. Or if the current client was upgrading the sync target, another client might have synced since then, making any cached data invalid.

    -

    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🔗

    -
      -
    • The client check if there is a valid EXCLUSIVE lock on the target
    • -
    • If there is, it must stop the sync process
    • -
    • Otherwise it checks if it owns a SYNC lock on the target -
        -
      • If it does, it starts syncing -
          -
        • 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🔗

    -
      -
    • 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)
    • -
    • Otherwise it checks if it owns an EXCLUSIVE lock on the target -
        -
      • If it does, it starts upgrading the target -
          -
        • 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🔗

    -

    The lock files are in format <lockType>_<clientType>_<clientId>.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.

    -

    The have the following content:

    -
    {
    -    "type": "exclusive",
    -    "clientType": <string>,
    -    "clientId": <string>,
    -    "updatedTime": <timestamp in milliseconds>,
    -}
    -
    -

    (Note that the lock file content is for information purpose only. Its content is not used in the lock algorithm since all data can be derived from the filename and file timestamp)

    -

    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🔗

    -

    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.

    -

    If it's the same as the client supported version, it syncs as normal.

    -

    If it's lower than the client supported version, the client does not allow sync and instead displays a message asking the user to upgrade the sync target (upgradeState = SHOULD_UPGRADE).

    -

    If the user click on the link to upgrade, upgradeState becomes MUST_UPGRADE, and the app restarts.

    -

    On startup, the app check the upgradeState setting. If it is MUST_UPGRADE it displays the upgrade screen and starts upgrarding. Once done it sets upgradeState back to IDLE, and restart the app.

    - - - - -
    - - - - diff --git a/docs/stats/index.html b/docs/stats/index.html deleted file mode 100644 index 12848bdb9b..0000000000 --- a/docs/stats/index.html +++ /dev/null @@ -1,1398 +0,0 @@ - - - - - - - Joplin statistics | Joplin - - - - - - - - - - - - - -
    - -
    - -

    Joplin

    -

    An open source note taking and to-do application with synchronisation capabilities

    -
    - - - -
    - - -
    -

    Joplin statistics🔗

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameValue
    Total Windows downloads1,095,090
    Total macOs downloads425,157
    Total Linux downloads309,596
    Windows %60%
    macOS %23%
    Linux %17%
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    VersionDateWindowsmacOSLinuxTotal
    v1.3.182020-11-06T12:07:02Z13,1805,8604,78723,827
    v1.3.152020-11-04T12:22:50Z2,1311,2588244,213
    v1.2.62020-10-09T13:56:59Z43,37817,63713,99075,005
    v1.1.42020-09-21T11:20:09Z27,40113,4587,69448,553
    v1.0.2452020-09-09T12:56:10Z20,7699,9615,61736,347
    v1.0.2422020-09-04T22:00:34Z12,3016,3933,00721,701
    v1.0.2412020-09-04T18:06:00Z23,0675,6844,95933,710
    v1.0.2332020-08-01T14:51:15Z42,18818,15112,34472,683
    v1.0.2272020-07-07T20:44:54Z40,13315,2359,61064,978
    v1.0.2242020-06-20T22:26:08Z24,70510,9775,99941,681
    v1.0.2202020-06-13T18:26:22Z31,5089,8876,40747,802
    v1.0.2182020-06-07T10:43:34Z14,4876,9462,95024,383
    v1.0.2162020-05-24T14:21:01Z36,36314,23510,16960,767
    v1.0.2012020-04-15T22:55:13Z52,37020,03218,16790,569
    v1.0.2002020-04-12T12:17:46Z9,5434,8851,89816,326
    v1.0.1992020-04-10T18:41:58Z19,2375,8783,78328,898
    v1.0.1972020-03-30T17:21:22Z22,0619,5065,61037,177
    v1.0.1952020-03-22T19:56:12Z18,8607,9424,50231,304
    v1.0.1932020-03-08T08:58:53Z28,59410,8957,35646,845
    v1.0.1792020-01-24T22:42:41Z70,93528,46722,491121,893
    v1.0.1782020-01-20T19:06:45Z17,5265,9562,57926,061
    v1.0.1752019-12-08T11:48:47Z71,98016,85516,477105,312
    v1.0.1742019-11-12T18:20:58Z30,38811,6888,21650,292
    v1.0.1732019-11-11T08:33:35Z5,0582,0717407,869
    v1.0.1702019-10-13T22:13:04Z27,3728,7377,66843,777
    v1.0.1692019-09-27T18:35:13Z17,0815,9153,75026,746
    v1.0.1682019-09-25T21:21:38Z5,3232,2657148,302
    v1.0.1672019-09-10T08:48:37Z16,7795,6993,70026,178
    v1.0.1662019-09-09T17:35:54Z1,9505572352,742
    v1.0.1652019-08-14T21:46:29Z18,8756,9685,45931,302
    v1.0.1612019-07-13T18:30:00Z19,2726,3484,13329,753
    v1.0.1602019-06-15T00:21:40Z30,4597,7428,09846,299
    v1.0.1592019-06-08T00:00:19Z5,1892,1741,1058,468
    v1.0.1582019-05-27T19:01:18Z9,8093,5341,93415,277
    v1.0.1572019-05-26T17:55:53Z2,1738402893,302
    v1.0.1522019-05-13T09:08:07Z13,8614,4234,05922,343
    v1.0.1512019-05-12T15:14:32Z1,9485309553,433
    v1.0.1502019-05-12T11:27:48Z41812966613
    v1.0.1452019-05-03T09:16:53Z7,0002,8581,43411,292
    v1.0.1432019-04-22T10:51:38Z11,9113,5462,77618,233
    v1.0.1422019-04-02T16:44:51Z14,6484,5574,72423,929
    v1.0.1402019-03-10T20:59:58Z13,6214,1663,17220,959
    v1.0.1352019-02-27T23:36:57Z12,4843,9534,07320,510
    v1.0.1342019-02-27T10:21:44Z1,4635632172,243
    v1.0.1322019-02-26T23:02:05Z1,081447931,621
    v1.0.1272019-02-14T23:12:48Z9,7343,1642,92815,826
    v1.0.1252019-01-26T18:14:33Z10,2453,5521,70115,498
    v1.0.1202019-01-10T21:42:53Z15,5985,1966,51227,306
    v1.0.1192018-12-18T12:40:22Z8,9023,2572,01314,172
    v1.0.1182019-01-11T08:34:13Z713244871,044
    v1.0.1172018-11-24T12:05:24Z16,2524,8896,37927,520
    v1.0.1162018-11-20T19:09:24Z3,4681,1177125,297
    v1.0.1152018-11-16T16:52:02Z3,6521,2987975,747
    v1.0.1142018-10-24T20:14:10Z11,3923,4923,82818,712
    v1.0.1112018-09-30T20:15:09Z12,0073,2863,66318,956
    v1.0.1102018-09-29T12:29:21Z9564051161,477
    v1.0.1092018-09-27T18:01:41Z2,0967003263,122
    v1.0.1072018-09-16T19:51:07Z7,1452,1321,70510,982
    v1.0.1062018-09-08T15:23:40Z4,5531,4533166,322
    v1.0.1052018-09-05T11:29:36Z4,6521,5851,4537,690
    v1.0.1042018-06-28T20:25:36Z15,0384,6967,32627,060
    v1.0.1032018-06-21T19:38:13Z2,0498826793,610
    v1.0.1012018-06-17T18:35:11Z1,3046044072,315
    v1.0.1002018-06-14T17:41:43Z8754292391,543
    v1.0.992018-06-10T13:18:23Z1,2505933792,222
    v1.0.972018-06-09T19:23:34Z30915459522
    v1.0.962018-05-26T16:36:39Z2,7151,2211,6065,542
    v1.0.952018-05-25T13:04:30Z415215116746
    v1.0.942018-05-21T20:52:59Z1,1285803952,103
    v1.0.932018-05-14T11:36:01Z1,7861,0807553,621
    v1.0.912018-05-10T14:48:04Z8245473031,674
    v1.0.892018-05-09T13:05:05Z488227107822
    v1.0.852018-05-01T21:08:24Z1,6479466273,220
    v1.0.832018-04-04T19:43:58Z4,8092,5292,6569,994
    v1.0.822018-03-31T19:16:31Z6924001191,211
    v1.0.812018-03-28T08:13:58Z9995957802,374
    v1.0.792018-03-23T18:00:11Z9305343771,841
    v1.0.782018-03-17T15:27:18Z1,3118688673,046
    v1.0.772018-03-16T15:12:35Z17610344323
    v1.0.722018-03-14T09:44:35Z40525454713
    v1.0.702018-02-28T20:04:30Z1,8531,0491,2514,153
    v1.0.672018-02-19T22:51:08Z1,81460002,414
    v1.0.662018-02-18T23:09:09Z32613485545
    v1.0.652018-02-17T20:02:25Z193124133450
    v1.0.642018-02-16T00:58:20Z1,0845431,1232,750
    v1.0.632018-02-14T19:40:36Z30015993552
    v1.0.622018-02-12T20:19:58Z5582973671,222
    v0.10.612018-02-08T18:27:39Z9716309582,559
    v0.10.602018-02-06T13:09:56Z7215195521,792
    v0.10.542018-01-31T20:21:30Z1,8191,4583213,598
    v0.10.522018-01-31T19:25:18Z4663215693
    v0.10.512018-01-28T18:47:02Z1,3271,5983273,252
    v0.10.482018-01-23T11:19:51Z1,9641,750303,744
    v0.10.472018-01-16T17:27:17Z1,2281,268672,563
    v0.10.432018-01-08T10:12:10Z3,4372,3541,2056,996
    v0.10.412018-01-05T20:38:12Z1,0361,5472382,821
    v0.10.402018-01-02T23:16:57Z1,5941,7863383,718
    v0.10.392017-12-11T21:19:44Z5,7844,2573,16013,201
    v0.10.382017-12-08T10:12:06Z1,0481,2293062,583
    v0.10.372017-12-07T19:38:05Z264843811,188
    v0.10.362017-12-05T09:34:40Z1,0141,3544372,805
    v0.10.352017-12-02T15:56:08Z1,5761,5467443,866
    v0.10.342017-12-02T14:50:28Z8966859816
    v0.10.332017-12-02T13:20:39Z6065721738
    v0.10.312017-12-01T09:56:44Z8911,4494062,746
    v0.10.302017-11-30T20:28:16Z7221,3674192,508
    v0.10.282017-11-30T01:07:46Z1,3281,6988723,898
    v0.10.262017-11-29T16:02:17Z1866992601,145
    v0.10.252017-11-24T14:27:49Z1486946,3777,219
    v0.10.232017-11-21T19:38:41Z13264527804
    v0.10.222017-11-20T21:45:57Z8464318745
    v0.10.212017-11-18T00:53:15Z5163612699
    v0.10.202017-11-17T17:18:25Z3264721700
    v0.10.192017-11-20T18:59:48Z1564212669
    - - - - -
    - - - - diff --git a/docs/terminal/index.html b/docs/terminal/index.html deleted file mode 100644 index 8fcc4b2ee2..0000000000 --- a/docs/terminal/index.html +++ /dev/null @@ -1,1116 +0,0 @@ - - - - - - - Joplin | Joplin - - - - - - - - - - - - - -
    - -
    - -

    Joplin

    -

    An open source note taking and to-do application with synchronisation capabilities

    -
    - - - -
    - - -
    -

    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 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 systemMethod
    macOS, Linux, or Windows (via WSL)Important: First, install Node 10+.

    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 (Option 2) then simply running npm -g install joplin would work.
    -

    To start it, type joplin.

    -

    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 systemMethod
    macOSbrew install joplin
    Arch LinuxAn Arch Linux package is available here. 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 repository. For support, please go to the GitHub repo.
    -

    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.

    - -

    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 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.

    -

    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:

    - - - - - - - - - - - - - - - - - - - - - -
    ShortcutDescription
    $nRefers to the currently selected note
    $bRefers to the currently selected notebook
    $cRefers 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:

    - - - - - - - - - - - - - - - - - - - - - -
    CommandDescription
    helpGeneral help information
    help keymapLists 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.

    -

    Importing notes from Evernote🔗

    -

    To import Evernote data, follow these steps:

    -
      -
    • First, export your Evernote notebooks to ENEX files as described here.
    • -
    • In Joplin, in 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 was 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 OneDrive, 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 or to even sync to multiple services at once. Each note, notebook, tags, as well as the relation between items is transmitted as plain text files during synchronisation, which means the data can also be moved to a different application, can be easily backed up, inspected, etc.

    -

    Currently, synchronisation is possible with Nextcloud, Dropbox (by default) and OneDrive, or the local filesystem. To setup 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.

    -

    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.

    -

    OneDrive and Dropbox synchronisation🔗

    -

    For Dropbox, type :config sync.target 7. For OneDrive, type :config sync.target 3. Then type sync to login to the service and start the synchronisation process.

    -

    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 regular interval. For example, this would do it every 30 minutes:

    -
    */30 * * * * /path/to/joplin sync
    -
    -

    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.

    -
    [
    -	{ "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:

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    keysThe 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. 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".
    typeThe command type. It can have the value "exec", "function" or "prompt". exec: Simply execute the provided command. 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)
    commandThe command that needs to be executed
    cursorPositionAn 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:

    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    NameDescription
    enter_command_line_modeEnter command line mode
    focus_nextFocus next pane (or widget)
    focus_previousFocus previous pane (or widget)
    move_upMove up (in a list for example)
    move_downMove down (in a list for example)
    page_upPage up
    page_downPage down
    next_linkSelect the next link in the currently opened note (the first link will be selected if no link is currently selected)
    previous_linkSelect the previous link in the currently opened note (the last link will be selected if no link is currently selected)
    open_linkOpen the currently selected link externally
    activateActivates the selected item. If the item is a note for example it will be open in the editor
    deleteDeletes the selected item
    toggle_consoleToggle the console
    toggle_metadataToggle note metadata
    -

    Commands🔗

    -

    The following commands are available in command-line mode:

    -
    attach <note> <file>
    -
    -    Attaches the given file to the note.
    -
    -cat <note>
    -
    -    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 <file>  Reads in settings from <file>. <file> must contain 
    -                          valid JSON.
    -
    -Possible keys/values:
    -
    -    sync.target                    Synchronisation target.
    -                                   The target to synchonise to. Each sync 
    -                                   target may have additional parameters which 
    -                                   are named as `sync.NUM.NAME` (all 
    -                                   documented below).
    -                                   Type: Enum.
    -                                   Possible values: 2 (File system), 3 
    -                                   (OneDrive), 4 (OneDrive Dev (For testing 
    -                                   only)), 5 (Nextcloud), 6 (WebDAV), 7 
    -                                   (Dropbox).
    -                                   Default: 7
    -                                   
    -    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.maxConcurrentConnections  Max concurrent connections.
    -                                   Type: int.
    -                                   Default: 5
    -                                   
    -    locale                         Language.
    -                                   Type: Enum.
    -                                   Possible values: ar (Arabic (92%)), eu 
    -                                   (Basque (39%)), bs_BA (Bosnian (85%)), 
    -                                   bg_BG (Bulgarian (77%)), ca (Catalan 
    -                                   (61%)), hr_HR (Croatian (32%)), cs_CZ 
    -                                   (Czech (94%)), da_DK (Dansk (85%)), de_DE 
    -                                   (Deutsch (100%)), et_EE (Eesti Keel (76%)), 
    -                                   en_GB (English (UK) (100%)), en_US (English 
    -                                   (US) (100%)), es_ES (Español (95%)), eo 
    -                                   (Esperanto (44%)), fr_FR (Français (95%)), 
    -                                   gl_ES (Galician (50%)), it_IT (Italiano 
    -                                   (97%)), nl_BE (Nederlands (39%)), nl_NL 
    -                                   (Nederlands (97%)), nb_NO (Norwegian 
    -                                   (89%)), fa (Persian (38%)), pl_PL (Polski 
    -                                   (75%)), pt_PT (Português (91%)), pt_BR 
    -                                   (Português (Brasil) (88%)), ro (Română 
    -                                   (39%)), sl_SI (Slovenian (49%)), sv 
    -                                   (Svenska (68%)), tr_TR (Türkçe (92%)), 
    -                                   el_GR (Ελληνικά (93%)), ru_RU (Русский 
    -                                   (95%)), sr_RS (српски језик (75%)), zh_CN 
    -                                   (中文 (简体) (97%)), zh_TW (中文 (繁體) (91%)), 
    -                                   ja_JP (日本語 (97%)), ko (한국말 (97%)).
    -                                   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).
    -                                   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).
    -                                   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: 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
    -
    -cp <note> [notebook]
    -
    -    Duplicates the notes matching <note> to [notebook]. If no notebook is 
    -    specified the note is duplicated in the current notebook.
    -
    -done <note>
    -
    -    Marks a to-do as done.
    -
    -e2ee <command> [path]
    -
    -    Manages E2EE configuration. Commands are `enable`, `disable`, `decrypt`, 
    -    `status`, `decrypt-file` and `target-status`.
    -
    -    -p, --password <password>  Use this password as master password (For 
    -                               security reasons, it is not recommended to use 
    -                               this option).
    -    -v, --verbose              More verbose output for the `target-status` 
    -                               command
    -    -o, --output <directory>   Output directory
    -
    -edit <note>
    -
    -    Edit note.
    -
    -export <path>
    -
    -    Exports Joplin data to the given path. By default, it will export the 
    -    complete database including notebooks, notes, tags and resources.
    -
    -    --format <format>      Destination format: jex (Joplin Export File), raw 
    -                           (Joplin Export Directory), json (Json Export 
    -                           Directory), md (Markdown), html (HTML File), html 
    -                           (HTML Directory)
    -    --note <note>          Exports only the given note.
    -    --notebook <notebook>  Exports only the given notebook.
    -
    -geoloc <note>
    -
    -    Displays a geolocation URL for the note.
    -
    -help [command]
    -
    -    Displays usage information.
    -
    -import <path> [notebook]
    -
    -    Imports data into Joplin.
    -
    -    --format <format>  Source format: auto, jex, md, raw, enex, enex
    -    -f, --force        Do not ask for confirmation.
    -
    -ls [note-pattern]
    -
    -    Displays the notes in the current notebook. Use `ls /` to display the list 
    -    of notebooks.
    -
    -    -n, --limit <num>      Displays only the first top <num> notes.
    -    -s, --sort <field>     Sorts the item by <field> (eg. title, updated_time, 
    -                           created_time).
    -    -r, --reverse          Reverses the sorting order.
    -    -t, --type <type>      Displays only the items of the specific type(s). 
    -                           Can be `n` for notes, `t` for to-dos, or `nt` for 
    -                           notes and to-dos (eg. `-tt` would display only the 
    -                           to-dos, while `-ttd` would display notes and 
    -                           to-dos.
    -    -f, --format <format>  Either "text" or "json"
    -    -l, --long             Use long list format. Format is ID, NOTE_COUNT (for 
    -                           notebook), DATE, TODO_CHECKED (for to-dos), TITLE
    -
    -mkbook <new-notebook>
    -
    -    Creates a new notebook.
    -
    -mknote <new-note>
    -
    -    Creates a new note.
    -
    -mktodo <new-todo>
    -
    -    Creates a new to-do.
    -
    -mv <note> [notebook]
    -
    -    Moves the notes matching <note> to [notebook].
    -
    -ren <item> <name>
    -
    -    Renames the given <item> (note or notebook) to <name>.
    -
    -rmbook <notebook>
    -
    -    Deletes the given notebook.
    -
    -    -f, --force  Deletes the notebook without asking for confirmation.
    -
    -rmnote <note-pattern>
    -
    -    Deletes the notes matching <note-pattern>.
    -
    -    -f, --force  Deletes the notes without asking for confirmation.
    -
    -server <command>
    -
    -    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 <note> <name> [value]
    -
    -    Sets the property <name> of the given <note> 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 (int), 
    -    user_created_time (int), user_updated_time (int), encryption_cipher_text 
    -    (text), encryption_applied (int), markup_language (int), is_shared (int)
    -
    -status
    -
    -    Displays summary about the notes and notebooks.
    -
    -sync
    -
    -    Synchronises with remote storage.
    -
    -    --target <target>  Sync to provided target (defaults to sync.target config 
    -                       value)
    -
    -tag <tag-command> [tag] [note]
    -
    -    <tag-command> 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 <todo-command> <note-pattern>
    -
    -    <todo-command> 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 <note>
    -
    -    Marks a to-do as non-completed.
    -
    -use <notebook>
    -
    -    Switches to [notebook] - all further operations will happen within this 
    -    notebook.
    -
    -version
    -
    -    Displays version information
    -
    -

    License🔗

    -

    Copyright (c) 2016-2020 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/docs/welcome/1_welcome_to_joplin/index.html b/docs/welcome/1_welcome_to_joplin/index.html deleted file mode 100644 index 95337658f9..0000000000 --- a/docs/welcome/1_welcome_to_joplin/index.html +++ /dev/null @@ -1,485 +0,0 @@ - - - - - - - Welcome to Joplin! 🗒️ | Joplin - - - - - - - - - - - - - -
    - -
    - -

    Joplin

    -

    An open source note taking and to-do application with synchronisation capabilities

    -
    - - - -
    - - -
    -

    Welcome to Joplin! 🗒️🔗

    -

    Joplin 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 applications directly or from your own text editor. The notes are in Markdown format. Joplin is available as a 💻 desktop, 📱 mobile and 🔡 terminal application.

    -

    The 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.

    -

    -

    Joplin is divided into three parts🔗

    -

    Joplin has three main columns:

    -
      -
    • Sidebar contains the list of your notebooks and tags, as well as the synchronisation status.
    • -
    • 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.
    • -
    • Note Editor is the place where you write your notes. There is a WYSIWYG editor and a Markdown editor - click on Code View to switch between both! You may also use an external editor to edit notes. For example you can use something like Typora as an external editor and it will display the note as well as any embedded images.
    • -
    -

    Writing notes in Markdown🔗

    -

    Markdown is a lightweight markup language with plain text formatting syntax. Joplin supports a Github-flavoured Markdown syntax with a few variations and additions.

    -

    In 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):

    -
    -

    Heading🔗

    -

    Sub-heading🔗

    -

    Paragraphs are separated by a blank line. Text attributes italic, bold and monospace are supported. You can create bullet lists:

    -
      -
    • apples
    • -
    • oranges
    • -
    • pears
    • -
    -

    Or numbered lists:

    -
      -
    1. wash
    2. -
    3. rinse
    4. -
    5. repeat
    6. -
    -

    This is a link and, finally, below is a horizontal rule:

    -
    -

    A lot more is possible including adding code samples, math formulae or checkbox lists - see the Markdown documentation for more information.

    -

    Organising your notes🔗

    -

    With notebooks 📔🔗

    -

    Joplin notes are organised into a tree of notebooks and sub-notebooks.

    -
      -
    • 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.
    • -
    • On mobile, press the "+" icon and select "New notebook".
    • -
    • On terminal, press :mn
    • -
    -

    -

    With tags 🏷️🔗

    -

    The second way to organise your notes is using tags:

    -
      -
    • 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.
    • -
    • On mobile, open the note and press the "⋮" button and select "Tags".
    • -
    • On terminal, type :help tag for the available commands.
    • -
    - - - - -
    - - - - diff --git a/docs/welcome/2_importing_and_exporting_notes/index.html b/docs/welcome/2_importing_and_exporting_notes/index.html deleted file mode 100644 index 8d9882cc64..0000000000 --- a/docs/welcome/2_importing_and_exporting_notes/index.html +++ /dev/null @@ -1,445 +0,0 @@ - - - - - - - Importing and exporting notes ↔️ | Joplin - - - - - - - - - - - - - -
    - -
    - -

    Joplin

    -

    An open source note taking and to-do application with synchronisation capabilities

    -
    - - - -
    - - -
    -

    Importing and exporting notes ↔️🔗

    -

    Importing from Evernote🔗

    -

    Joplin was designed as a replacement for Evernote and so 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.

    -

    To import Evernote data, first export your Evernote notebooks to ENEX files as described here. 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.

    -

    Importing from other apps🔗

    -

    Joplin can also import notes from many other apps as well as from Markdown or text files.

    -

    Exporting notes🔗

    -

    Joplin 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 on the official website.

    - - - - -
    - - - - diff --git a/docs/welcome/3_synchronising_your_notes/index.html b/docs/welcome/3_synchronising_your_notes/index.html deleted file mode 100644 index 5216f41148..0000000000 --- a/docs/welcome/3_synchronising_your_notes/index.html +++ /dev/null @@ -1,449 +0,0 @@ - - - - - - - Synchronising your notes 🔄 | Joplin - - - - - - - - - - - - - -
    - -
    - -

    Joplin

    -

    An open source note taking and to-do application with synchronisation capabilities

    -
    - - - -
    - - -
    -

    Synchronising your notes 🔄🔗

    -

    One of the goals of Joplin was 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. You basically choose the service you prefer among those supported, setup the configuration, and the app will be able to sync between your computers or mobile devices.

    -

    The supported cloud services are the following:

    -

    Setting up Dropbox synchronisation🔗

    -

    Select "Dropbox" as the synchronisation target in the config screen (it is selected by default). Then, to initiate the synchronisation process, click on the "Synchronise" button in the sidebar and follow the instructions.

    -

    Setting up 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.

    -

    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 for more details.

    -

    Setting up OneDrive or WebDAV synchronisation🔗

    -

    OneDrive and WebDAV are also supported as synchronisation services. Please see the export documentation for more information.

    -

    Using End-To-End Encryption🔗

    -

    Joplin 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 for more information about this feature and how to enable it.

    - - - - -
    - - - - diff --git a/docs/welcome/4_tips/index.html b/docs/welcome/4_tips/index.html deleted file mode 100644 index e96c033191..0000000000 --- a/docs/welcome/4_tips/index.html +++ /dev/null @@ -1,502 +0,0 @@ - - - - - - - Tips 💡 | Joplin - - - - - - - - - - - - - -
    - -
    - -

    Joplin

    -

    An open source note taking and to-do application with synchronisation capabilities

    -
    - - - -
    - - -
    -

    Tips 💡🔗

    -

    The 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:

    -

    Web clipper🔗

    -

    -

    The 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.

    -

    More info on the official website: https://joplinapp.org/clipper/

    -

    Attachments🔗

    -

    Any 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.

    -

    Images 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.

    -

    More info about attachments: https://joplinapp.org#attachments--resources

    -

    Search🔗

    -

    Joplin supports advanced search queries, which are fully documented on the official website: https://joplinapp.org#searching

    -

    Alarms🔗

    -

    An 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#notifications

    -

    Markdown advanced tips🔗

    -

    Joplin uses and renders Github-flavoured Markdown with a few variations and additions.

    -

    For example, tables are supported:

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    TablesAreCool
    col 3 isright-aligned$1600
    col 2 iscentered$12
    zebra stripesare neat$1
    -

    You can also create lists of checkboxes. These checkboxes can be ticked directly in the viewer, or by adding an "x" inside:

    -
      -
    • [ ] Milk
    • -
    • [ ] Eggs
    • -
    • [x] Beer
    • -
    -

    Math expressions can be added using the KaTeX notation:

    -

    $$
    -f(x) = \int_{-\infty}^\infty
    -\hat f(\xi),e^{2 \pi i \xi x}
    -,d\xi
    -$$

    -

    Various other tricks are possible, such as using HTML, or customising the CSS. See the Markdown documentation for more info - https://joplinapp.org#markdown

    -

    Community and further help🔗

    -
      -
    • For general discussion about Joplin, user support, software development questions, and to discuss new features, go to the Joplin Forum. It is possible to login with your GitHub account.
    • -
    • The latest news are posted on the Patreon page.
    • -
    • For bug reports and feature requests, go to the GitHub Issue Tracker.
    • -
    -

    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 for information on how to support the development of Joplin.

    - - - - -
    - - - - diff --git a/docs/welcome/5_privacy/index.html b/docs/welcome/5_privacy/index.html deleted file mode 100644 index 05772aca36..0000000000 --- a/docs/welcome/5_privacy/index.html +++ /dev/null @@ -1,469 +0,0 @@ - - - - - - - Privacy | Joplin - - - - - - - - - - - - - -
    - -
    - -

    Joplin

    -

    An open source note taking and to-do application with synchronisation capabilities

    -
    - - - -
    - - -
    -

    Privacy🔗

    -

    Joplin values your privacy and security by giving you complete control over your information and digital footprint.

    -

    Joplin applications do not send any data to any service without your authorisation. Any data that Joplin saves, such as notes or images, are saved to your own device and you are free to delete this data at any time.

    -

    Joplin has many modern features, some of which use third-party services. You can disable any or all of these features in the application settings. These features are:

    - - - - - - - - - - - - - - - - - - - - - - - - - -
    FeatureDescriptionDefault
    Auto-updateJoplin periodically connects to GitHub to check for new releases.Enabled
    Geo-locationJoplin saves geo-location information in note properties when you create a note.Enabled
    SynchronisationJoplin supports synchronisation of your notes across multiple devices. If you choose to synchronise with a third-party, such as OneDrive, the notes will be sent to your OneDrive account, in which case the third-party privacy policy applies.Disabled
    -

    Joplin is developed as an open-source application and the source code is freely available online to inspect.

    -

    For any question about Joplin privacy, please leave a message on the Joplin Forum.

    - - - - -
    - - - - diff --git a/readme/stats.md b/readme/stats.md index 875f0eac52..035998645a 100644 --- a/readme/stats.md +++ b/readme/stats.md @@ -2,37 +2,37 @@ Name | Value --- | --- -Total Windows downloads | 1,095,090 -Total macOs downloads | 425,157 -Total Linux downloads | 309,596 +Total Windows downloads | 1,096,770 +Total macOs downloads | 425,800 +Total Linux downloads | 310,290 Windows % | 60% macOS % | 23% Linux % | 17% Version | Date | Windows | macOS | Linux | Total --- | --- | --- | --- | --- | --- -[v1.3.18](https://github.com/laurent22/joplin/releases/tag/v1.3.18) | 2020-11-06T12:07:02Z | 13,180 | 5,860 | 4,787 | 23,827 -[v1.3.15](https://github.com/laurent22/joplin/releases/tag/v1.3.15) | 2020-11-04T12:22:50Z | 2,131 | 1,258 | 824 | 4,213 -[v1.2.6](https://github.com/laurent22/joplin/releases/tag/v1.2.6) | 2020-10-09T13:56:59Z | 43,378 | 17,637 | 13,990 | 75,005 -[v1.1.4](https://github.com/laurent22/joplin/releases/tag/v1.1.4) | 2020-09-21T11:20:09Z | 27,401 | 13,458 | 7,694 | 48,553 -[v1.0.245](https://github.com/laurent22/joplin/releases/tag/v1.0.245) | 2020-09-09T12:56:10Z | 20,769 | 9,961 | 5,617 | 36,347 -[v1.0.242](https://github.com/laurent22/joplin/releases/tag/v1.0.242) | 2020-09-04T22:00:34Z | 12,301 | 6,393 | 3,007 | 21,701 -[v1.0.241](https://github.com/laurent22/joplin/releases/tag/v1.0.241) | 2020-09-04T18:06:00Z | 23,067 | 5,684 | 4,959 | 33,710 -[v1.0.233](https://github.com/laurent22/joplin/releases/tag/v1.0.233) | 2020-08-01T14:51:15Z | 42,188 | 18,151 | 12,344 | 72,683 -[v1.0.227](https://github.com/laurent22/joplin/releases/tag/v1.0.227) | 2020-07-07T20:44:54Z | 40,133 | 15,235 | 9,610 | 64,978 +[v1.3.18](https://github.com/laurent22/joplin/releases/tag/v1.3.18) | 2020-11-06T12:07:02Z | 14,762 | 6,488 | 5,474 | 26,724 +[v1.3.15](https://github.com/laurent22/joplin/releases/tag/v1.3.15) | 2020-11-04T12:22:50Z | 2,133 | 1,260 | 824 | 4,217 +[v1.2.6](https://github.com/laurent22/joplin/releases/tag/v1.2.6) | 2020-10-09T13:56:59Z | 43,408 | 17,645 | 13,992 | 75,045 +[v1.1.4](https://github.com/laurent22/joplin/releases/tag/v1.1.4) | 2020-09-21T11:20:09Z | 27,403 | 13,458 | 7,694 | 48,555 +[v1.0.245](https://github.com/laurent22/joplin/releases/tag/v1.0.245) | 2020-09-09T12:56:10Z | 20,771 | 9,961 | 5,617 | 36,349 +[v1.0.242](https://github.com/laurent22/joplin/releases/tag/v1.0.242) | 2020-09-04T22:00:34Z | 12,301 | 6,394 | 3,007 | 21,702 +[v1.0.241](https://github.com/laurent22/joplin/releases/tag/v1.0.241) | 2020-09-04T18:06:00Z | 23,069 | 5,684 | 4,959 | 33,712 +[v1.0.233](https://github.com/laurent22/joplin/releases/tag/v1.0.233) | 2020-08-01T14:51:15Z | 42,195 | 18,151 | 12,344 | 72,690 +[v1.0.227](https://github.com/laurent22/joplin/releases/tag/v1.0.227) | 2020-07-07T20:44:54Z | 40,135 | 15,235 | 9,610 | 64,980 [v1.0.224](https://github.com/laurent22/joplin/releases/tag/v1.0.224) | 2020-06-20T22:26:08Z | 24,705 | 10,977 | 5,999 | 41,681 -[v1.0.220](https://github.com/laurent22/joplin/releases/tag/v1.0.220) | 2020-06-13T18:26:22Z | 31,508 | 9,887 | 6,407 | 47,802 -[v1.0.218](https://github.com/laurent22/joplin/releases/tag/v1.0.218) | 2020-06-07T10:43:34Z | 14,487 | 6,946 | 2,950 | 24,383 -[v1.0.216](https://github.com/laurent22/joplin/releases/tag/v1.0.216) | 2020-05-24T14:21:01Z | 36,363 | 14,235 | 10,169 | 60,767 -[v1.0.201](https://github.com/laurent22/joplin/releases/tag/v1.0.201) | 2020-04-15T22:55:13Z | 52,370 | 20,032 | 18,167 | 90,569 +[v1.0.220](https://github.com/laurent22/joplin/releases/tag/v1.0.220) | 2020-06-13T18:26:22Z | 31,510 | 9,887 | 6,407 | 47,804 +[v1.0.218](https://github.com/laurent22/joplin/releases/tag/v1.0.218) | 2020-06-07T10:43:34Z | 14,488 | 6,946 | 2,950 | 24,384 +[v1.0.216](https://github.com/laurent22/joplin/releases/tag/v1.0.216) | 2020-05-24T14:21:01Z | 36,371 | 14,235 | 10,169 | 60,775 +[v1.0.201](https://github.com/laurent22/joplin/releases/tag/v1.0.201) | 2020-04-15T22:55:13Z | 52,378 | 20,032 | 18,167 | 90,577 [v1.0.200](https://github.com/laurent22/joplin/releases/tag/v1.0.200) | 2020-04-12T12:17:46Z | 9,543 | 4,885 | 1,898 | 16,326 -[v1.0.199](https://github.com/laurent22/joplin/releases/tag/v1.0.199) | 2020-04-10T18:41:58Z | 19,237 | 5,878 | 3,783 | 28,898 -[v1.0.197](https://github.com/laurent22/joplin/releases/tag/v1.0.197) | 2020-03-30T17:21:22Z | 22,061 | 9,506 | 5,610 | 37,177 +[v1.0.199](https://github.com/laurent22/joplin/releases/tag/v1.0.199) | 2020-04-10T18:41:58Z | 19,239 | 5,878 | 3,783 | 28,900 +[v1.0.197](https://github.com/laurent22/joplin/releases/tag/v1.0.197) | 2020-03-30T17:21:22Z | 22,062 | 9,506 | 5,610 | 37,178 [v1.0.195](https://github.com/laurent22/joplin/releases/tag/v1.0.195) | 2020-03-22T19:56:12Z | 18,860 | 7,942 | 4,502 | 31,304 -[v1.0.193](https://github.com/laurent22/joplin/releases/tag/v1.0.193) | 2020-03-08T08:58:53Z | 28,594 | 10,895 | 7,356 | 46,845 -[v1.0.179](https://github.com/laurent22/joplin/releases/tag/v1.0.179) | 2020-01-24T22:42:41Z | 70,935 | 28,467 | 22,491 | 121,893 +[v1.0.193](https://github.com/laurent22/joplin/releases/tag/v1.0.193) | 2020-03-08T08:58:53Z | 28,595 | 10,895 | 7,356 | 46,846 +[v1.0.179](https://github.com/laurent22/joplin/releases/tag/v1.0.179) | 2020-01-24T22:42:41Z | 70,959 | 28,467 | 22,491 | 121,917 [v1.0.178](https://github.com/laurent22/joplin/releases/tag/v1.0.178) | 2020-01-20T19:06:45Z | 17,526 | 5,956 | 2,579 | 26,061 -[v1.0.175](https://github.com/laurent22/joplin/releases/tag/v1.0.175) | 2019-12-08T11:48:47Z | 71,980 | 16,855 | 16,477 | 105,312 +[v1.0.175](https://github.com/laurent22/joplin/releases/tag/v1.0.175) | 2019-12-08T11:48:47Z | 71,981 | 16,855 | 16,478 | 105,314 [v1.0.174](https://github.com/laurent22/joplin/releases/tag/v1.0.174) | 2019-11-12T18:20:58Z | 30,388 | 11,688 | 8,216 | 50,292 [v1.0.173](https://github.com/laurent22/joplin/releases/tag/v1.0.173) | 2019-11-11T08:33:35Z | 5,058 | 2,071 | 740 | 7,869 [v1.0.170](https://github.com/laurent22/joplin/releases/tag/v1.0.170) | 2019-10-13T22:13:04Z | 27,372 | 8,737 | 7,668 | 43,777 @@ -40,19 +40,19 @@ Version | Date | Windows | macOS | Linux | Total [v1.0.168](https://github.com/laurent22/joplin/releases/tag/v1.0.168) | 2019-09-25T21:21:38Z | 5,323 | 2,265 | 714 | 8,302 [v1.0.167](https://github.com/laurent22/joplin/releases/tag/v1.0.167) | 2019-09-10T08:48:37Z | 16,779 | 5,699 | 3,700 | 26,178 [v1.0.166](https://github.com/laurent22/joplin/releases/tag/v1.0.166) | 2019-09-09T17:35:54Z | 1,950 | 557 | 235 | 2,742 -[v1.0.165](https://github.com/laurent22/joplin/releases/tag/v1.0.165) | 2019-08-14T21:46:29Z | 18,875 | 6,968 | 5,459 | 31,302 +[v1.0.165](https://github.com/laurent22/joplin/releases/tag/v1.0.165) | 2019-08-14T21:46:29Z | 18,875 | 6,968 | 5,460 | 31,303 [v1.0.161](https://github.com/laurent22/joplin/releases/tag/v1.0.161) | 2019-07-13T18:30:00Z | 19,272 | 6,348 | 4,133 | 29,753 [v1.0.160](https://github.com/laurent22/joplin/releases/tag/v1.0.160) | 2019-06-15T00:21:40Z | 30,459 | 7,742 | 8,098 | 46,299 [v1.0.159](https://github.com/laurent22/joplin/releases/tag/v1.0.159) | 2019-06-08T00:00:19Z | 5,189 | 2,174 | 1,105 | 8,468 [v1.0.158](https://github.com/laurent22/joplin/releases/tag/v1.0.158) | 2019-05-27T19:01:18Z | 9,809 | 3,534 | 1,934 | 15,277 -[v1.0.157](https://github.com/laurent22/joplin/releases/tag/v1.0.157) | 2019-05-26T17:55:53Z | 2,173 | 840 | 289 | 3,302 -[v1.0.152](https://github.com/laurent22/joplin/releases/tag/v1.0.152) | 2019-05-13T09:08:07Z | 13,861 | 4,423 | 4,059 | 22,343 +[v1.0.157](https://github.com/laurent22/joplin/releases/tag/v1.0.157) | 2019-05-26T17:55:53Z | 2,173 | 841 | 289 | 3,303 +[v1.0.152](https://github.com/laurent22/joplin/releases/tag/v1.0.152) | 2019-05-13T09:08:07Z | 13,861 | 4,423 | 4,060 | 22,344 [v1.0.151](https://github.com/laurent22/joplin/releases/tag/v1.0.151) | 2019-05-12T15:14:32Z | 1,948 | 530 | 955 | 3,433 [v1.0.150](https://github.com/laurent22/joplin/releases/tag/v1.0.150) | 2019-05-12T11:27:48Z | 418 | 129 | 66 | 613 [v1.0.145](https://github.com/laurent22/joplin/releases/tag/v1.0.145) | 2019-05-03T09:16:53Z | 7,000 | 2,858 | 1,434 | 11,292 [v1.0.143](https://github.com/laurent22/joplin/releases/tag/v1.0.143) | 2019-04-22T10:51:38Z | 11,911 | 3,546 | 2,776 | 18,233 -[v1.0.142](https://github.com/laurent22/joplin/releases/tag/v1.0.142) | 2019-04-02T16:44:51Z | 14,648 | 4,557 | 4,724 | 23,929 -[v1.0.140](https://github.com/laurent22/joplin/releases/tag/v1.0.140) | 2019-03-10T20:59:58Z | 13,621 | 4,166 | 3,172 | 20,959 +[v1.0.142](https://github.com/laurent22/joplin/releases/tag/v1.0.142) | 2019-04-02T16:44:51Z | 14,649 | 4,557 | 4,724 | 23,930 +[v1.0.140](https://github.com/laurent22/joplin/releases/tag/v1.0.140) | 2019-03-10T20:59:58Z | 13,622 | 4,166 | 3,172 | 20,960 [v1.0.135](https://github.com/laurent22/joplin/releases/tag/v1.0.135) | 2019-02-27T23:36:57Z | 12,484 | 3,953 | 4,073 | 20,510 [v1.0.134](https://github.com/laurent22/joplin/releases/tag/v1.0.134) | 2019-02-27T10:21:44Z | 1,463 | 563 | 217 | 2,243 [v1.0.132](https://github.com/laurent22/joplin/releases/tag/v1.0.132) | 2019-02-26T23:02:05Z | 1,081 | 447 | 93 | 1,621 @@ -63,15 +63,15 @@ Version | Date | Windows | macOS | Linux | Total [v1.0.118](https://github.com/laurent22/joplin/releases/tag/v1.0.118) | 2019-01-11T08:34:13Z | 713 | 244 | 87 | 1,044 [v1.0.117](https://github.com/laurent22/joplin/releases/tag/v1.0.117) | 2018-11-24T12:05:24Z | 16,252 | 4,889 | 6,379 | 27,520 [v1.0.116](https://github.com/laurent22/joplin/releases/tag/v1.0.116) | 2018-11-20T19:09:24Z | 3,468 | 1,117 | 712 | 5,297 -[v1.0.115](https://github.com/laurent22/joplin/releases/tag/v1.0.115) | 2018-11-16T16:52:02Z | 3,652 | 1,298 | 797 | 5,747 -[v1.0.114](https://github.com/laurent22/joplin/releases/tag/v1.0.114) | 2018-10-24T20:14:10Z | 11,392 | 3,492 | 3,828 | 18,712 +[v1.0.115](https://github.com/laurent22/joplin/releases/tag/v1.0.115) | 2018-11-16T16:52:02Z | 3,652 | 1,299 | 797 | 5,748 +[v1.0.114](https://github.com/laurent22/joplin/releases/tag/v1.0.114) | 2018-10-24T20:14:10Z | 11,393 | 3,492 | 3,828 | 18,713 [v1.0.111](https://github.com/laurent22/joplin/releases/tag/v1.0.111) | 2018-09-30T20:15:09Z | 12,007 | 3,286 | 3,663 | 18,956 [v1.0.110](https://github.com/laurent22/joplin/releases/tag/v1.0.110) | 2018-09-29T12:29:21Z | 956 | 405 | 116 | 1,477 [v1.0.109](https://github.com/laurent22/joplin/releases/tag/v1.0.109) | 2018-09-27T18:01:41Z | 2,096 | 700 | 326 | 3,122 [v1.0.107](https://github.com/laurent22/joplin/releases/tag/v1.0.107) | 2018-09-16T19:51:07Z | 7,145 | 2,132 | 1,705 | 10,982 [v1.0.106](https://github.com/laurent22/joplin/releases/tag/v1.0.106) | 2018-09-08T15:23:40Z | 4,553 | 1,453 | 316 | 6,322 [v1.0.105](https://github.com/laurent22/joplin/releases/tag/v1.0.105) | 2018-09-05T11:29:36Z | 4,652 | 1,585 | 1,453 | 7,690 -[v1.0.104](https://github.com/laurent22/joplin/releases/tag/v1.0.104) | 2018-06-28T20:25:36Z | 15,038 | 4,696 | 7,326 | 27,060 +[v1.0.104](https://github.com/laurent22/joplin/releases/tag/v1.0.104) | 2018-06-28T20:25:36Z | 15,038 | 4,696 | 7,327 | 27,061 [v1.0.103](https://github.com/laurent22/joplin/releases/tag/v1.0.103) | 2018-06-21T19:38:13Z | 2,049 | 882 | 679 | 3,610 [v1.0.101](https://github.com/laurent22/joplin/releases/tag/v1.0.101) | 2018-06-17T18:35:11Z | 1,304 | 604 | 407 | 2,315 [v1.0.100](https://github.com/laurent22/joplin/releases/tag/v1.0.100) | 2018-06-14T17:41:43Z | 875 | 429 | 239 | 1,543 @@ -80,7 +80,7 @@ Version | Date | Windows | macOS | Linux | Total [v1.0.96](https://github.com/laurent22/joplin/releases/tag/v1.0.96) | 2018-05-26T16:36:39Z | 2,715 | 1,221 | 1,606 | 5,542 [v1.0.95](https://github.com/laurent22/joplin/releases/tag/v1.0.95) | 2018-05-25T13:04:30Z | 415 | 215 | 116 | 746 [v1.0.94](https://github.com/laurent22/joplin/releases/tag/v1.0.94) | 2018-05-21T20:52:59Z | 1,128 | 580 | 395 | 2,103 -[v1.0.93](https://github.com/laurent22/joplin/releases/tag/v1.0.93) | 2018-05-14T11:36:01Z | 1,786 | 1,080 | 755 | 3,621 +[v1.0.93](https://github.com/laurent22/joplin/releases/tag/v1.0.93) | 2018-05-14T11:36:01Z | 1,786 | 1,081 | 755 | 3,622 [v1.0.91](https://github.com/laurent22/joplin/releases/tag/v1.0.91) | 2018-05-10T14:48:04Z | 824 | 547 | 303 | 1,674 [v1.0.89](https://github.com/laurent22/joplin/releases/tag/v1.0.89) | 2018-05-09T13:05:05Z | 488 | 227 | 107 | 822 [v1.0.85](https://github.com/laurent22/joplin/releases/tag/v1.0.85) | 2018-05-01T21:08:24Z | 1,647 | 946 | 627 | 3,220 @@ -108,7 +108,7 @@ Version | Date | Windows | macOS | Linux | Total [v0.10.43](https://github.com/laurent22/joplin/releases/tag/v0.10.43) | 2018-01-08T10:12:10Z | 3,437 | 2,354 | 1,205 | 6,996 [v0.10.41](https://github.com/laurent22/joplin/releases/tag/v0.10.41) | 2018-01-05T20:38:12Z | 1,036 | 1,547 | 238 | 2,821 [v0.10.40](https://github.com/laurent22/joplin/releases/tag/v0.10.40) | 2018-01-02T23:16:57Z | 1,594 | 1,786 | 338 | 3,718 -[v0.10.39](https://github.com/laurent22/joplin/releases/tag/v0.10.39) | 2017-12-11T21:19:44Z | 5,784 | 4,257 | 3,160 | 13,201 +[v0.10.39](https://github.com/laurent22/joplin/releases/tag/v0.10.39) | 2017-12-11T21:19:44Z | 5,784 | 4,258 | 3,160 | 13,202 [v0.10.38](https://github.com/laurent22/joplin/releases/tag/v0.10.38) | 2017-12-08T10:12:06Z | 1,048 | 1,229 | 306 | 2,583 [v0.10.37](https://github.com/laurent22/joplin/releases/tag/v0.10.37) | 2017-12-07T19:38:05Z | 264 | 843 | 81 | 1,188 [v0.10.36](https://github.com/laurent22/joplin/releases/tag/v0.10.36) | 2017-12-05T09:34:40Z | 1,014 | 1,354 | 437 | 2,805 @@ -119,7 +119,7 @@ Version | Date | Windows | macOS | Linux | Total [v0.10.30](https://github.com/laurent22/joplin/releases/tag/v0.10.30) | 2017-11-30T20:28:16Z | 722 | 1,367 | 419 | 2,508 [v0.10.28](https://github.com/laurent22/joplin/releases/tag/v0.10.28) | 2017-11-30T01:07:46Z | 1,328 | 1,698 | 872 | 3,898 [v0.10.26](https://github.com/laurent22/joplin/releases/tag/v0.10.26) | 2017-11-29T16:02:17Z | 186 | 699 | 260 | 1,145 -[v0.10.25](https://github.com/laurent22/joplin/releases/tag/v0.10.25) | 2017-11-24T14:27:49Z | 148 | 694 | 6,377 | 7,219 +[v0.10.25](https://github.com/laurent22/joplin/releases/tag/v0.10.25) | 2017-11-24T14:27:49Z | 148 | 694 | 6,378 | 7,220 [v0.10.23](https://github.com/laurent22/joplin/releases/tag/v0.10.23) | 2017-11-21T19:38:41Z | 132 | 645 | 27 | 804 [v0.10.22](https://github.com/laurent22/joplin/releases/tag/v0.10.22) | 2017-11-20T21:45:57Z | 84 | 643 | 18 | 745 [v0.10.21](https://github.com/laurent22/joplin/releases/tag/v0.10.21) | 2017-11-18T00:53:15Z | 51 | 636 | 12 | 699