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

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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:

+ +

But first install Yeoman and the Joplin Plugin Generator:

+
npm install -g yo generator-joplin
+
+

Then, in the directory where you plan to develop the plugin, run:

+
yo joplin
+
+

This will generate the basic scafolding of the plugin. At the root of it, there are 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 contains the various information about the plugin that was set in the inital generation of the scaffolding, such as its name, homepage URL, etc. You can edit this at any time, but editing it after it has been published may cause users to have to download it again.

+

Setup Source Control🔗

+

In your plugin directory, run:

+
git init 
+
+

This will setup source control.

+

Run Joplin in Development Mode🔗

+

You should test your plugin 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.

+

Building the plugin🔗

+

From the scaffolding, src/index.ts now contains the basic code for a Hello World plugin.

+

Two things to note:

+
    +
  1. It contains a call to joplin.plugins.register. All plugins call this to register the plugin in the app.
  2. +
  3. An onStart() event handler method, which is called when the plugin starts.
  4. +
+

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 where Joplin will load the plugin.

+

Install the plugin🔗

+

Open Joplin Configuration > Plugins section. Under Advanced Settings, add the plugin path in the Development plugins text field.
+This should be the path to your main plugin directory, i.e. path/to/your/root/plugin/directory.

+

Test the Plugin, Hello World!🔗

+

Restart the Development app from the command line/terminal, and Joplin should load the plugin and execute its onStart handler. If all went well you should see the test message in the plugin console: "Hello world. Test plugin started!". You will also be able to see the information from the manifest in the Settings > Plugins

+

Next steps🔗

+

Great, you now have the basics of a working plugin!

+ + + + + +
+ + + + diff --git a/docs/api/overview/index.html b/docs/api/overview/index.html new file mode 100644 index 0000000000..99c151516f --- /dev/null +++ b/docs/api/overview/index.html @@ -0,0 +1,466 @@ + + + + + + + Extending Joplin | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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:

+

Data API🔗

+

The data API 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, and this is most likely what you will need if you have an external application that needs access to Joplin data.

+

To get started with the data API, check the documentation.

+

Plugin API🔗

+

With plugins you can directly modify 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
  • +
  • Create a new Markdown plugin to render custom markup.
  • +
  • Create an editor plugin to modify, at a low-level, the behaviour of the Markdown editor (CodeMirror)
  • +
+

To get started with the plugin API, check the Get Started page or have a look at the TOC tutorial.

+

Once you are familiar with the API, you can have a look at the plugin API reference for a detailed documentation about each supported feature.

+ + + + +
+ + + + diff --git a/docs/api/references/development_mode/index.html b/docs/api/references/development_mode/index.html new file mode 100644 index 0000000000..e290e70e80 --- /dev/null +++ b/docs/api/references/development_mode/index.html @@ -0,0 +1,445 @@ + + + + + + + Development mode | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 this will open a second copy of Joplin using a different profile with test notes and notebooks, so you can experiment without risking changing or deleting your data.

+

To enable Development Mode, go to Help > Copy dev mode command to clipboard. This will copy a command to your clipboard. Paste this command in a shell / terminal to run a development version of the app.

+ + + + +
+ + + + diff --git a/docs/api/references/plugin_loading_rules/index.html b/docs/api/references/plugin_loading_rules/index.html new file mode 100644 index 0000000000..11b89687a9 --- /dev/null +++ b/docs/api/references/plugin_loading_rules/index.html @@ -0,0 +1,451 @@ + + + + + + + Plugin Loading Rules | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

Plugin Loading Rules🔗

+

When loading plugins from the profile plugins directory, Joplin will look at the following locations:

+
    +
  • plugins/PLUGIN_ID.js
  • +
  • plugins/PLUGIN_ID/index.js
  • +
  • plugins/PLUGIN_ID/dist/index.js
  • +
  • Any directory or file that starts with "_" will be excluded. This can be used to disable a plugin without having to delete it from the directory.
  • +
+

PLUGIN_ID can be any string but it must be unique.

+ + + + +
+ + + + diff --git a/docs/api/references/plugin_manifest/index.html b/docs/api/references/plugin_manifest/index.html new file mode 100644 index 0000000000..0f0186fc81 --- /dev/null +++ b/docs/api/references/plugin_manifest/index.html @@ -0,0 +1,521 @@ + + + + + + + Plugin Manifest | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeRequired?Description
manifest_versionnumberYesFor now should always be "1".
namestringYesName of the plugin. Should be a user-friendly string, as it will be displayed in the UI.
versionstringYesVersion number such as "1.0.0".
app_min_versionstringYesMinimum version of Joplin that the plugin is compatible with. In general it should be whatever version you are using to develop the plugin.
descriptionstringNoDetailed description of the plugin.
authorstringNoPlugin author name.
keywordsstring[]NoKeywords associated with the plugins. They are used in search in particular.
homepage_urlstringNoHomepage URL of the plugin. It can also be, for example, a link to a GitHub repository.
repository_urlstringNoRepository URL where the plugin source code is hosted.
+

Manifest 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/plugin_theming/index.html b/docs/api/references/plugin_theming/index.html new file mode 100644 index 0000000000..6b83a035cd --- /dev/null +++ b/docs/api/references/plugin_theming/index.html @@ -0,0 +1,481 @@ + + + + + + + Plugin theming | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

Plugin theming🔗

+

CSS🔗

+

Plugins add custom content to the UI using
+webview panels.
+The HTML content of a a panel is styled with CSS.

+

To keep the look and feel of a plugin consistent with the rest of the Joplin UI,
+you are automatically provided with variables derived from the current theme.

+

Variables follow the naming convention --joplin-{property} and are used
+in your plugin's stylesheet as shown here.

+
/* webview.css */
+.container {
+	color: var(--joplin-color);
+	font-family: var(--joplin-font-family);
+}
+
+

Icons🔗

+

In addition to variables, you have access to a set of standard font assets that ship with Joplin.
+These include:

+ +

To display an icon, use CSS and HTML like the following.

+
/* style icons to match the theme */
+.toolbarIcon {
+    font-size: var(--joplin-toolbar-icon-size);
+}
+.primary {
+    color: var(--joplin-color);
+}
+.secondary {
+    color: var(--joplin-color-2);
+}
+
+
<i class="toolbarIcon primary fas fa-music"></i> Font Awesome music icon
+<br />
+<i class="toolbarIcon secondary icon-notebooks"></i> icoMoon notebook icon
+
+ + + + +
+ + + + diff --git a/docs/api/references/rest_api/index.html b/docs/api/references/rest_api/index.html new file mode 100644 index 0000000000..d279ece6d7 --- /dev/null +++ b/docs/api/references/rest_api/index.html @@ -0,0 +1,1101 @@ + + + + + + + Joplin Data API | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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
share_idtext
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
share_idtext
+

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
share_idtext
+

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.

+

From a plugin the syntax to create a resource is also a bit special:

+
	await joplin.data.post(
+		["resources"],
+		null,
+		{ title: "test.jpg" }, // Resource metadata
+		[
+			{
+				path: "/path/to/test.jpg", // Actual file
+			},
+		]
+	);
+
+

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 new file mode 100644 index 0000000000..c8f59f2c82 --- /dev/null +++ b/docs/api/tutorials/toc_plugin/index.html @@ -0,0 +1,715 @@ + + + + + + + Creating a table of content plugin | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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.onNoteChange(() => {
+			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('panel_1');
+
+		// 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('panel_1');
+ // 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 = await joplin.views.panels.create('panel_1');
+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('panel_1');
+
+		// ...
+
+		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 new file mode 100644 index 0000000000..bc497c3fa9 --- /dev/null +++ b/docs/blog/20180621-182112/index.html @@ -0,0 +1,449 @@ + + + + + + + Web Clipper now available on Firefox and Chrome | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..8c524a4a8a --- /dev/null +++ b/docs/blog/20180906-111039/index.html @@ -0,0 +1,450 @@ + + + + + + + New iOS release with improved attachment support | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..0980fe2bea --- /dev/null +++ b/docs/blog/20180916-210431/index.html @@ -0,0 +1,449 @@ + + + + + + + Note properties in desktop application | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..2f0c691c78 --- /dev/null +++ b/docs/blog/20180929-121053/index.html @@ -0,0 +1,449 @@ + + + + + + + New release and many bug fixes | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..fa6817ee7f --- /dev/null +++ b/docs/blog/20181004-091123/index.html @@ -0,0 +1,451 @@ + + + + + + + Joplin and Hacktobertfest 2018 🎃 | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..c1a0ee0088 --- /dev/null +++ b/docs/blog/20181101-174335/index.html @@ -0,0 +1,454 @@ + + + + + + + Hacktoberfest has now ended | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..098719ada3 --- /dev/null +++ b/docs/blog/20181213-173459/index.html @@ -0,0 +1,452 @@ + + + + + + + Joplin is now featured on PrivacyTools.io | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..0e6da6746c --- /dev/null +++ b/docs/blog/20190130-230218/index.html @@ -0,0 +1,452 @@ + + + + + + + New search engine in Joplin | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..c4b854244c --- /dev/null +++ b/docs/blog/20190404-074157/index.html @@ -0,0 +1,451 @@ + + + + + + + Markdown plugins and Goto Anything | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..de3dd9a276 --- /dev/null +++ b/docs/blog/20190424-112410/index.html @@ -0,0 +1,451 @@ + + + + + + + The Joplin forum is one year old | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..62bef9cda3 --- /dev/null +++ b/docs/blog/20190523-231026/index.html @@ -0,0 +1,461 @@ + + + + + + + Note history now in Joplin | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..b08d1bdd12 --- /dev/null +++ b/docs/blog/20190611-000711/index.html @@ -0,0 +1,451 @@ + + + + + + + Changing attachment download behaviour to save disk space | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..ffc791e868 --- /dev/null +++ b/docs/blog/20190613-202613/index.html @@ -0,0 +1,451 @@ + + + + + + + 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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..e782c49dc5 --- /dev/null +++ b/docs/blog/20190814-225957/index.html @@ -0,0 +1,460 @@ + + + + + + + Joplin now supports Fountain screenwriting markup language | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..5e4fe0172d --- /dev/null +++ b/docs/blog/20190925-000254/index.html @@ -0,0 +1,465 @@ + + + + + + + New icon for Joplin! | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..c9b6da2676 --- /dev/null +++ b/docs/blog/20190929-152834/index.html @@ -0,0 +1,458 @@ + + + + + + + Hacktoberfest 2019 is coming soon! | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..8f46051176 --- /dev/null +++ b/docs/blog/20191012-233121/index.html @@ -0,0 +1,458 @@ + + + + + + + Support for chemical equations using mhchem for Katex | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..76f88ba529 --- /dev/null +++ b/docs/blog/20191014-165136/index.html @@ -0,0 +1,450 @@ + + + + + + + New Joplin icon, second round | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..2a8f42fb42 --- /dev/null +++ b/docs/blog/20191101-131852/index.html @@ -0,0 +1,454 @@ + + + + + + + Hacktoberfest 2019 has now ended 🎃 | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..b70911eaa6 --- /dev/null +++ b/docs/blog/20191117-183855/index.html @@ -0,0 +1,459 @@ + + + + + + + And the winner is... | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..b406d6269d --- /dev/null +++ b/docs/blog/20191118-072700/index.html @@ -0,0 +1,457 @@ + + + + + + + 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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..369bb03ebe --- /dev/null +++ b/docs/blog/20200220-190804/index.html @@ -0,0 +1,449 @@ + + + + + + + GSoC 2020: Joplin has been accepted as a mentor organization! | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..787c6166e1 --- /dev/null +++ b/docs/blog/20200301-125055/index.html @@ -0,0 +1,465 @@ + + + + + + + Large desktop update coming soon | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..91bf718094 --- /dev/null +++ b/docs/blog/20200314-001555/index.html @@ -0,0 +1,459 @@ + + + + + + + Experimental WYSIWYG editor in Joplin | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..da07b6428e --- /dev/null +++ b/docs/blog/20200406-224254/index.html @@ -0,0 +1,477 @@ + + + + + + + Joplin informal encryption and security audit results | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..5560d3f356 --- /dev/null +++ b/docs/build_troubleshooting/index.html @@ -0,0 +1,484 @@ + + + + + + + Desktop application | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 unexpected npm dependency errors on a fresh git pull, try npm run clean

+

If npm i gives you a fatal error like the following:

+
node-pre-gyp WARN Tried to download(403): https://mapbox-node-binary.s3.amazonaws.com/sqlite3/v5.0.1/napi-v6-linux-x64.tar.gz 
+node-pre-gyp WARN Pre-built binaries not found for sqlite3@5.0.1 and node@14.15.4 (node-v83 ABI, glibc) (falling back to source compile with node-gyp)
+/bin/sh: 1: python: not found
+
+

Try sudo apt install python (or the apt equivalent for your operating system) and then run npm i again.

+

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 new file mode 100644 index 0000000000..c455136c8c --- /dev/null +++ b/docs/changelog/index.html @@ -0,0 +1,3500 @@ + + + + + + + Joplin changelog | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

Joplin changelog🔗

+

v2.0.2 (Pre-release) - 2021-05-21T18:07:48Z🔗

+
    +
  • New: Add Share Notebook menu item (6f2f241)
  • +
  • New: Add classnames to DOM elements for theming purposes (#4933 by @ajilderda)
  • +
  • Improved: Allow unsharing a note (f7d164b)
  • +
  • Improved: Displays error info when Joplin Server fails (3f0586e)
  • +
  • Improved: Handle too large items for Joplin Server (d29624c)
  • +
  • Improved: Import SVG as images when importing ENEX files (#4968)
  • +
  • Improved: Import linked local files when importing Markdown files (#4966) (#4433 by @JackGruber)
  • +
  • Improved: Improved usability when plugin repository cannot be connected to (#4462)
  • +
  • Improved: Made sync more reliable by making it skip items that time out, and improved sync status screen (15fe119)
  • +
  • Improved: Pass custom CSS property to all export handlers and renderers (bd08041)
  • +
  • Improved: Regression: It was no longer possible to add list items in an empty note (6577f4f)
  • +
  • Improved: Regression: Pasting plain text in Rich Text editor was broken (9e9bf63)
  • +
  • Fixed: Fixed issue with empty panels being created by plugins (#4926)
  • +
  • Fixed: Fixed pasting HTML in Rich Text editor, and improved pasting plain text (2226b79)
  • +
  • Fixed: Improved importing Evernote notes that contain codeblocks (#4965)
  • +
  • Fixed: Prevent cursor from jumping to top of page when pasting image (#4591)
  • +
+

v2.0.1 (Pre-release) - 2021-05-15T13:22:58Z🔗

+
    +
  • New: Add support for sharing notebooks with Joplin Server (#4772)
  • +
  • New: Add new date format YYMMDD (#4954 by Helmut K. C. Tessarek)
  • +
  • New: Added button to skip an application update (a31b402)
  • +
  • Fixed: Display proper error message when JEX file is corrupted (#4958)
  • +
  • Fixed: Show or hide completed todos in search results based on user settings (#4951) (#4581 by @JackGruber)
  • +
  • Fixed: Solve "Resource Id not provided" error (#4943) (#4891 by @Subhra264)
  • +
+

v1.8.5 - 2021-05-10T11:58:14Z🔗

+
    +
  • Fixed: Fixed pasting of text and images from Word on Windows (#4916)
  • +
  • Security: Filter out NOSCRIPT tags that could be used to cause an XSS (found by Jubair Rehman Yousafzai) (9c20d59)
  • +
+

v1.8.4 (Pre-release) - 2021-05-09T18:05:05Z🔗

+
    +
  • Improved: Improve display of release notes for new versions (f76f99b)
  • +
  • Fixed: Ensure that image paths that contain spaces are pasted correctly in the Rich Text editor (#4916)
  • +
  • Fixed: Make sure sync startup operations are cleared after startup (#4919)
  • +
  • Security: Apply npm audit security fixes (0b67446)
  • +
+

v1.8.3 (Pre-release) - 2021-05-04T10:38:16Z🔗

+
    +
  • New: Add "id" and "due" search filters (#4898 by @JackGruber)
  • +
  • New: Add synchronization tools to clear local sync state or data (a6caa35)
  • +
  • Improved: Bump KaTeX to 0.13.3 (#4902 by Roman Musin)
  • +
  • Improved: Skip empty lines while converting selection to list (#4832) (#4813 by Adarsh Singh)
  • +
  • Fixed: Added RTL support for Markdown editor and Preview. (#4822) (#3991 by Ahmad Mamdouh)
  • +
  • Fixed: Create own copy of images while pasting (#4852) (#4767 by Nishant Mittal)
  • +
  • Fixed: Disable WebDAV response caching (#4887) (#4706 by Roman Musin)
  • +
  • Fixed: Plugin ghost panel and resizing issues (#4865) (#4529 by @mablin7)
  • +
+

v1.8.2 (Pre-release) - 2021-04-25T10:50:51Z🔗

+
    +
  • New: Add "duplicate line" command in Markdown editor (#4873 by @CalebJohn)
  • +
  • New: Add an option to renew the API token (#4811 by Helmut K. C. Tessarek)
  • +
  • New: Add button to copy note ID in Note Properties dialog (#4749 by Abdallah Ahmed)
  • +
  • New: Add plugin info when the app crashes
  • +
  • New: Add support for safe mode, which temporarily disables note rendering and plugins (#4727)
  • +
  • Improved: Also duplicate the tags when the note is duplicated (#4876) (#3157 by @JackGruber)
  • +
  • Improved: ENTER key no longer submits dialogs when a textarea is focused. (#4777) (#4766 by @Ahmad45123)
  • +
  • Improved: Fixed editor focus issue when running command from palette (#4812) (#4759 by @Aksh-Konda)
  • +
  • Improved: Note list is empty if search field is cleared (#4739) (#4736 by Apoorva Shukla)
  • +
  • Improved: Show notebook and note title in the title bar (#4390) (#3695 by @asrient)
  • +
  • Improved: Disappearing text in markdown editor (#4750) (#4781 by Adarsh Singh)
  • +
  • Fixed: Copying code block from Rich Text editor results in two copies of the text (#4669)
  • +
  • Fixed: Ensure that invalid plugin settings do not crash the application (#4562)
  • +
  • Fixed: File-Links with German Umlauts don't work (#4804) (#4043 by @Subhra264)
  • +
  • Fixed: Fixed cursor moved to the top issue in Markdown editor (#4870 by @CalebJohn)
  • +
  • Fixed: Highlight existing text in global search field (#4773) (#4769 by Siddhant Sehgal)
  • +
  • Fixed: Prevent Goto anything from changing folders when all notes filter is on (#4751) (#4697 by @jalajcodes)
  • +
  • Fixed: Prevents plugin from causing an error when the app closes (#4570)
  • +
  • Fixed: Regression: Fixed handling of provisional status of note
  • +
  • Fixed: Roboto font in plugins (#4755) (#4754 by Brett Bender)
  • +
  • Fixed: Scroll position is not remembered in Markdown editor (#4806) (#4797 by Roman Musin)
  • +
  • Fixed: Set plain/text clipboard while copying (#4791) (#4788 by Nishant Mittal)
  • +
+

v1.8.1 (Pre-release) - 2021-03-29T10:46:41Z🔗

+
    +
  • New: Add monospace enforcement for certain elements in Markdown editor (#4689 by @CalebJohn)
  • +
  • New: Add support for higlighting text from Rich Text editor
  • +
  • New: Add support for strikethrough, sub, sup and insert formatting on Rich Text editor
  • +
  • New: Save user settings to JSON file
  • +
  • Improved: Allow registering multiple settings in one call (#4627) (#4614 by @jalajcodes)
  • +
  • Improved: Api: Don't compress image when resource is added through api (#4660) (#4655 by Nishant Mittal)
  • +
  • Improved: Bring editor katex highlight in line with renderer (#4632 by @CalebJohn)
  • +
  • Improved: Ctrl+Shift+B to viewer when editor invisible (#4537) (#2810 by Neeraj Kashyap)
  • +
  • Improved: Enforce utf-8 charset for plugin scripts (#4509 by @CalebJohn)
  • +
  • Improved: Filter "notebook" can now be negated (#4651 by Naveen M V)
  • +
  • Improved: Give plugin config section without an icon, a default icon
  • +
  • Improved: Improve mathmode syntax highlighting (#4580) (#4554 by James Wright)
  • +
  • Improved: Improved solarized dark theme (#4748) (#3887 by Anakai Richards)
  • +
  • Improved: Improved spell checking support in dialogs and text input fields (#4458)
  • +
  • Improved: Plugins: Focus dialog when it is opened so that ENTER/ESC shortcuts work (#4474)
  • +
  • Improved: Plugins: Only call onNoteChange for the current note
  • +
  • Improved: Remove branch name in detached head state (#4636 by Helmut K. C. Tessarek)
  • +
  • Improved: Reset window hash to allow clicking an anchor multiple times (#4538 by @CalebJohn)
  • +
  • Improved: Save geo-location when saving note
  • +
  • Improved: Select search text input when focusing it (#4586 by António Ramadas)
  • +
  • Improved: Set keep-alive for WebDAV/Nextcloud sync (#4668 by Roman Musin)
  • +
  • Improved: Set keep-alive on http(s) requests (#4625 by Roman Musin)
  • +
  • Improved: Sort plugin config sections alphabetically
  • +
  • Improved: Toggle math highlighting in editor with markdown options (#4631 by @CalebJohn)
  • +
  • Fixed: Allow copying images from Joplin to external editors (#4724) (#4602 by Nishant Mittal)
  • +
  • Fixed: Fix mermaid diagrams in WYSIWYG editor (#4670) (#4612 by @mablin7)
  • +
  • Fixed: Fixed calendar styling (#4703) (#4397 by Harshit Kathuria)
  • +
  • Fixed: Fixed exporting as HTML or PDF when a plugin is active, and make sure plugin assets are also exported (#4452)
  • +
  • Fixed: Fixed formatting of consecutive code blocks (#4416)
  • +
  • Fixed: Fixed issue which could cause plugin views to be orphaned
  • +
  • Fixed: Fixed rendering of note and resource links
  • +
  • Fixed: Improved enabling/disabling commands depending on application state (#4473)
  • +
  • Fixed: Improved handling of empty paths for Joplin Server sync target (#4426)
  • +
  • Fixed: Make config sidebar vertically scrollable, and make it grow horizontally depending on menu items (#4491)
  • +
  • Fixed: Make plugin links clickable from search (#4548) (#4505 by Roman Musin)
  • +
  • Fixed: Plugin Update error when plugin was installed manually (#4725) (#4723 by @mablin7)
  • +
  • Fixed: Plugins: Apply "fields" query parameter when requesting data from data API (#4407)
  • +
  • Fixed: Refresh note tags when a note is moved to another folder (#4574) (#4369 by Roman Musin)
  • +
  • Fixed: Updating a disabled plugin enables it (#4711) (#4683 by @mablin7)
  • +
  • Fixed: Wrong background color for the table button in the toolbar (#4681) (#4398 by @zozolina123)
  • +
+

v1.7.11 - 2021-02-03T12:50:01Z🔗

+
    +
  • Fixed: Regression: Fixed network request repeat mechanism
  • +
+

v1.7.10 - 2021-01-30T13:25:29Z🔗

+
    +
  • New: Added button to browse plugins
  • +
  • New: Allow updating a plugin
  • +
  • New: Plugins: Add support for "keywords" manifest field
  • +
  • New: Plugins: Add support for joplin.plugins.installationDir to allow accessing external files packaged with the plugin
  • +
  • New: Plugins: Add support for joplin.plugins.require API to allow using sqlite3 or fs-extra from a plugin
  • +
  • New: Plugins: Add support for plugins.dataDir function, to provide a path for plugin to store its own data
  • +
  • New: Plugins: Added support for bi-directional messages in content scripts and webview scripts using postMessage
  • +
  • Fixed: Added missing translations (#4363)
  • +
  • Fixed: Fixed copying text from Rich Text editor (#4441)
  • +
  • Fixed: Fixed plugin panel issue that could crash app in rare case
  • +
  • Fixed: Make sure note is automatically saved when format is set via keyboard shortcut in Rich Text editor (#4337)
  • +
  • Fixed: Plugins: Fixed dropdown settings
  • +
  • Fixed: Some commands were no longer working (#4343) (#4338 by @CalebJohn)
  • +
  • Improved: Do not allow installing plugins incompatible with current app version
  • +
  • Improved: Enable TLS options for Joplin Server
  • +
  • Improved: Improved error handling when importing ENEX
  • +
  • Improved: In config screen, click on a plugin name to open its home page
  • +
  • Improved: Move plugin settings under separate section in config menu
  • +
  • Improved: Some imported ENEX files incorrectly had invisible sections
  • +
+

v1.7.9 (Pre-release) - 2021-01-28T09:50:21Z🔗

+
    +
  • New: Plugins: Add support for joplin.plugins.installationDir to allow accessing external files packaged with the plugin
  • +
+

v1.7.6 (Pre-release) - 2021-01-27T10:36:05Z🔗

+
    +
  • Fixed: Fixed installing plugins
  • +
+

v1.7.5 (Pre-release) - 2021-01-26T09:53:05Z🔗

+
    +
  • New: Plugins: Add support for joplin.plugins.require API to allow using sqlite3 or fs-extra from a plugin
  • +
  • New: Plugins: Add support for plugins.dataDir function, to provide a path for plugin to store its own data
  • +
  • Improved: Do not allow installing plugins incompatible with current app version
  • +
  • Improved: Improved error handling when importing ENEX
  • +
  • Improved: In config screen, click on a plugin name to open its home page
  • +
  • Improved: Localise "Click to add tags" button
  • +
  • Improved: Some imported ENEX files incorrectly had invisible sections
  • +
+
+
    +
  • New: Added button to browse plugins
  • +
  • New: Plugins: Add support for "keywords" manifest field
  • +
  • New: Plugins: Added support for bi-directional messages in content scripts and webview scripts using postMessage
  • +
  • New: Allow updating a plugin
  • +
  • Improved: Enable TLS options for Joplin Server
  • +
  • Improved: Move plugin settings under separate section in config menu
  • +
  • Fixed: Added missing translations (#4363)
  • +
  • Fixed: Make sure note is automatically saved when format is set via keyboard shortcut in Rich Text editor (#4337)
  • +
  • Fixed: Plugins: Fixed dropdown settings
  • +
  • Fixed: Some commands were no longer working (#4343) (#4338 by @CalebJohn)
  • +
+

v1.7.4 (Pre-release) - 2021-01-22T17:58:38Z🔗

+
    +
  • New: Added button to browse plugins
  • +
  • New: Plugins: Add support for "keywords" manifest field
  • +
  • New: Plugins: Added support for bi-directional messages in content scripts and webview scripts using postMessage
  • +
  • New: Allow updating a plugin
  • +
  • Improved: Enable TLS options for Joplin Server
  • +
  • Improved: Move plugin settings under separate section in config menu
  • +
  • Fixed: Added missing translations (#4363)
  • +
  • Fixed: Make sure note is automatically saved when format is set via keyboard shortcut in Rich Text editor (#4337)
  • +
  • Fixed: Plugins: Fixed dropdown settings
  • +
  • Fixed: Some commands were no longer working (#4343) (#4338 by @CalebJohn)
  • +
+

v1.6.8 - 2021-01-20T18:11:34Z🔗

+
    +
  • Fixed: Fixed infinite sync issue with OneDrive (#4305)
  • +
+

v1.7.3 (Pre-release) - 2021-01-20T11:23:50Z🔗

+
    +
  • New: Plugins: Add support for "keywords" manifest field
  • +
  • New: Plugins: Added support for bi-directional messages in content scripts and webview scripts using postMessage
  • +
  • New: Allow updating a plugin
  • +
  • Fixed: Some commands were no longer working (#4343) (#4338 by @CalebJohn)
  • +
+

v1.6.7 - 2021-01-11T23:20:33Z🔗

+ +

v1.6.6 - 2021-01-09T16:15:31Z🔗

+
    +
  • New: Add way to install plugin from file
  • +
+

v1.6.5 (Pre-release) - 2021-01-09T01:24:32Z🔗

+
    +
  • New: Plugins: Added joplin.settings.onChange event
  • +
  • Improved: Do not display error message when fixing ENEX resource mime type (#4310)
  • +
  • Improved: Handle case where a command is sent to an editor that is gone
  • +
  • Improved: Improved support for bold and italic format when importing ENEX file (#4316)
  • +
  • Fixed: Fix issue that was preventing editor context menu from being refreshed (#4303 by @CalebJohn)
  • +
  • Fixed: Fixed OneDrive issue that would require a full resync every time (#4324) (#4313 by Jonathan Heard)
  • +
  • Fixed: Fixed attaching local files that contain spaces in path
  • +
  • Fixed: Fixed context menu not being displayed on high DPI screens
  • +
  • Fixed: Plugins: Fixed "exportFolders" command when exporting JEX file (#4308)
  • +
+

v1.6.4 (Pre-release) - 2021-01-07T19:11:32Z🔗

+
    +
  • New: Add support for searching and installing plugins from repository
  • +
  • Improved: Support natural sorting by title (#4272 by @volatilevar)
  • +
  • Fixed: #4317: Spell checker inserts correction at wrong location (#4318) (#4317 by @CalebJohn)
  • +
+

v1.6.2 (Pre-release) - 2021-01-04T22:34:55Z🔗

+
    +
  • New: Add more log info when a revision cannot be deleted due to still-encrypted item
  • +
  • New: Plugins: Add support for hiding and showing panels
  • +
  • New: Plugins: Added joplin.workspace.selectedFolder()
  • +
  • Improved: Add extra macOS keys (#4259) (#4257 by @CalebJohn)
  • +
  • Improved: Made editor padding more consistent and ensure it is present even when sidebars are gone
  • +
  • Improved: Plugins: Allow loading external JS or CSS from dialog
  • +
  • Improved: Sort attachments in a case insensitive way in Attachments screen (#4273 by @Daeraxa)
  • +
  • Improved: Upload Big Notes to Onedrive (#4120) (#3528 by Jonathan Heard)
  • +
  • Fixed: file:// URLs would not be rendered correctly
  • +
  • Fixed: MacOS: Fixed paste as text in Rich Text editor
  • +
  • Fixed: Plugins: Allow API paths that contain 4 elements (#4285)
  • +
+

v1.5.14 - 2020-12-30T01:48:46Z🔗

+
    +
  • Fixed: Fixed importing ENEX files that contain hidden sections
  • +
+

v1.6.1 (Pre-release) - 2020-12-29T19:37:45Z🔗

+

At this point, this release is only to allow using Joplin Server as a sync target.

+

v1.5.13 - 2020-12-29T18:29:15Z🔗

+
    +
  • Improved: Improve support for SVG images when importing ENEX files
  • +
+

v1.5.12 - 2020-12-28T15:14:08Z🔗

+

Fixed ENEX import regression: Fix issue when importing ENEX file that contains invalid list elements

+
    +
  • New: Add support for media players (video, audio and PDF)
  • +
  • New: Add table captions when importing ENEX files
  • +
  • New: Added doc about Rich Text editor and added way to dismiss warning banner
  • +
  • New: MacOS: Notarize application
  • +
  • New: Plugins: Add support for content script asset files, for Markdown-it plugins
  • +
  • New: Plugins: Add support for context menu items on notebooks and tags
  • +
  • New: Plugins: Add support for workspace.onSyncStart event
  • +
  • New: Plugins: Added a way to execute commands from Markdown-it content scripts
  • +
  • Fixed: Fix End key behavior with Codemirror spellcheck (#4215 by Caleb John)
  • +
  • Fixed: Fixed basic search when executing a query in Chinese (#4034 by Naveen M V)
  • +
  • Fixed: Fixed context menu when the UI is zoomed in or out (#4201)
  • +
  • Fixed: Fixed importing certain code blocks from ENEX
  • +
  • Fixed: Fixed importing ENEX files that contain empty resources
  • +
  • Fixed: Fixed importing ENEX files that contain resources with invalid mime type
  • +
  • Fixed: Fixed issue when searching for text that contains diacritic (#4152) (#4025 by Roman Musin)
  • +
  • Fixed: Fixed issue with attachment paths being invalid when user has spaces in home directory path.
  • +
  • Fixed: Fixed issue with note not being saved when a column is added or remove from Rich Text editor
  • +
  • Fixed: Fixed issues when importing hidden tables within hidden sections in Enex files
  • +
  • Fixed: Fixed numbered list bug in markdown editor (#4116) (#3917 by @MichBoi)
  • +
  • Fixed: Fixed potential crash when watching note files or resources
  • +
  • Fixed: Fixed title input field width on small windows
  • +
  • Fixed: Focus editor after pressing toolbar buttons (#4037) (#4036 by @CalebJohn)
  • +
  • Fixed: Plugins: Fixed disabling plugin files that start with "_"
  • +
  • Fixed: Prevent double paste when using Shift+Ctrl+V (#4243)
  • +
  • Fixed: Prevents crash when invalid spell checker language is selected, and provide fallback for invalid language codes (#4146)
  • +
  • Fixed: Register Markdown editor commands with the Keyboard Shortcut editor (#4136) (#4130 by Caleb John)
  • +
  • Improved: Display Katex parsing errors
  • +
  • Improved: Improved warning banner colors
  • +
  • Improved: Plugins: Commands would not show up in keymap editor when no shortcut was associated with them
  • +
  • Improved: Plugins: Improved note change event handling.
  • +
  • Improved: Removed warning for Markdown editor spell checking
  • +
  • Improved: Restrict auto-detection of links, and added option to toggle linkify (#4205)
  • +
  • Improved: Rich Text: Do not converts to markdown links URLs that would be linkified
  • +
  • Improved: Translation: Update zh_CN (#4195 by Zhang YANG)
  • +
  • Improved: Update macOS icon for macOS Big Sur
  • +
  • Improved: Update Mermaid: 8.8.1 -> 8.8.4 (#4193 by Helmut K. C. Tessarek)
  • +
  • Improved: Use plugins whenever printing or exporting notes
  • +
+

v1.5.11 - 2020-12-27T19:54:07Z🔗

+
    +
  • New: Add support for media players (video, audio and PDF)
  • +
  • New: Add table captions when importing ENEX files
  • +
  • New: Added doc about Rich Text editor and added way to dismiss warning banner
  • +
  • New: MacOS: Notarize application
  • +
  • New: Plugins: Add support for content script asset files, for Markdown-it plugins
  • +
  • New: Plugins: Add support for context menu items on notebooks and tags
  • +
  • New: Plugins: Add support for workspace.onSyncStart event
  • +
  • New: Plugins: Added a way to execute commands from Markdown-it content scripts
  • +
  • Fixed: Fix End key behavior with Codemirror spellcheck (#4215 by Caleb John)
  • +
  • Fixed: Fixed basic search when executing a query in Chinese (#4034 by Naveen M V)
  • +
  • Fixed: Fixed context menu when the UI is zoomed in or out (#4201)
  • +
  • Fixed: Fixed importing certain code blocks from ENEX
  • +
  • Fixed: Fixed importing ENEX files that contain empty resources
  • +
  • Fixed: Fixed importing ENEX files that contain resources with invalid mime type
  • +
  • Fixed: Fixed issue when searching for text that contains diacritic (#4152) (#4025 by Roman Musin)
  • +
  • Fixed: Fixed issue with attachment paths being invalid when user has spaces in home directory path.
  • +
  • Fixed: Fixed issue with note not being saved when a column is added or remove from Rich Text editor
  • +
  • Fixed: Fixed issues when importing hidden tables within hidden sections in Enex files
  • +
  • Fixed: Fixed numbered list bug in markdown editor (#4116) (#3917 by @MichBoi)
  • +
  • Fixed: Fixed potential crash when watching note files or resources
  • +
  • Fixed: Fixed title input field width on small windows
  • +
  • Fixed: Focus editor after pressing toolbar buttons (#4037) (#4036 by @CalebJohn)
  • +
  • Fixed: Plugins: Fixed disabling plugin files that start with "_"
  • +
  • Fixed: Prevent double paste when using Shift+Ctrl+V (#4243)
  • +
  • Fixed: Prevents crash when invalid spell checker language is selected, and provide fallback for invalid language codes (#4146)
  • +
  • Fixed: Register Markdown editor commands with the Keyboard Shortcut editor (#4136) (#4130 by Caleb John)
  • +
  • Improved: Display Katex parsing errors
  • +
  • Improved: Improved warning banner colors
  • +
  • Improved: Plugins: Commands would not show up in keymap editor when no shortcut was associated with them
  • +
  • Improved: Plugins: Improved note change event handling.
  • +
  • Improved: Removed warning for Markdown editor spell checking
  • +
  • Improved: Restrict auto-detection of links, and added option to toggle linkify (#4205)
  • +
  • Improved: Rich Text: Do not converts to markdown links URLs that would be linkified
  • +
  • Improved: Translation: Update zh_CN (#4195 by Zhang YANG)
  • +
  • Improved: Update macOS icon for macOS Big Sur
  • +
  • Improved: Update Mermaid: 8.8.1 -> 8.8.4 (#4193 by Helmut K. C. Tessarek)
  • +
  • Improved: Use plugins whenever printing or exporting notes
  • +
+

v1.5.10 (Pre-release) - 2020-12-26T12:35:36Z🔗

+
    +
  • New: Add table captions when importing ENEX files
  • +
  • Improved: Display Katex parsing errors
  • +
  • Improved: Removed warning for Markdown editor spell checking
  • +
  • Improved: Update macOS icon for macOS Big Sur
  • +
  • Fixed: Fixed context menu when the UI is zoomed in or out (#4201)
  • +
  • Fixed: Fixed issues when importing hidden tables within hidden sections in Enex files
  • +
  • Fixed: Prevent double paste when using Shift+Ctrl+V (#4243)
  • +
+

v1.5.9 (Pre-release) - 2020-12-23T18:01:08Z🔗

+
    +
  • Improved: Improved error handling when importing ENEX files
  • +
+

v1.5.8 (Pre-release) - 2020-12-20T09:45:19Z🔗

+
    +
  • New: Plugins: Add support for content script asset files, for Markdown-it plugins
  • +
  • New: Plugins: Add support for context menu items on notebooks and tags
  • +
  • New: Plugins: Added a way to execute commands from Markdown-it content scripts
  • +
  • Improved: Use plugins whenever printing or exporting notes
  • +
  • Fixed: Fix End key behavior with Codemirror spellcheck (#4215 by Caleb John)
  • +
  • Fixed: Fixed importing ENEX files that contain resources with invalid mime type
  • +
  • Fixed: Fixed importing certain code blocks from ENEX
  • +
  • Fixed: Plugins: Fixed disabling plugin files that start with "_"
  • +
  • Fixed: Register Markdown editor commands with the Keyboard Shortcut editor (#4136) (#4130 by Caleb John)
  • +
+

v1.5.7 (Pre-release) - 2020-12-10T12:58:33Z🔗

+
    +
  • New: MacOS: Notarize application
  • +
  • New: Add support for media players (video, audio and PDF)
  • +
  • New: Added doc about Rich Text editor and added way to dismiss warning banner
  • +
  • New: Plugins: Add support for workspace.onSyncStart event
  • +
  • Improved: Improved warning banner colors
  • +
  • Improved: Plugins: Commands would not show up in keymap editor when no shortcut was associated with them
  • +
  • Improved: Restrict auto-detection of links, and added option to toggle linkify (#4205)
  • +
  • Improved: Rich Text: Do not converts to markdown links URLs that would be linkified
  • +
  • Improved: Translation: Update zh_CN (#4195 by Zhang YANG)
  • +
  • Improved: Update Mermaid: 8.8.1 -> 8.8.4 (#4193 by Helmut K. C. Tessarek)
  • +
  • Improved: Plugins: Improved note change event handling.
  • +
  • Fixed: Fixed basic search when executing a query in Chinese (#4034 by Naveen M V)
  • +
  • Fixed: Fixed importing ENEX files that contain empty resources
  • +
  • Fixed: Fixed issue with note not being saved when a column is added or remove from Rich Text editor
  • +
  • Fixed: Fixed numbered list bug in markdown editor (#4116) (#3917 by @MichBoi)
  • +
  • Fixed: Fixed potential crash when watching note files or resources
  • +
  • Fixed: Focus editor after pressing toolbar buttons (#4037) (#4036 by @CalebJohn)
  • +
  • Fixed: Prevents crash when invalid spell checker language is selected, and provide fallback for invalid language codes (#4146)
  • +
  • Fixed: Fixed issue when searching for text that contains diacritic (#4152) (#4025 by Roman Musin)
  • +
  • Fixed: Fixed issue with attachment paths being invalid when user has spaces in home directory path.
  • +
  • Fixed: Fixed title input field width on small windows
  • +
+

v1.5.4 (Pre-release) - 2020-12-05T12:07:49Z🔗

+
    +
  • New: MacOS: Notarize application
  • +
  • Improved: Plugins: Improved note change event handling.
  • +
  • Fixed: Fixed basic search when executing a query in Chinese (#4034 by Naveen M V)
  • +
  • Fixed: Fixed importing ENEX files that contain empty resources
  • +
  • Fixed: Fixed issue with note not being saved when a column is added or remove from Rich Text editor
  • +
  • Fixed: Fixed numbered list bug in markdown editor (#4116) (#3917 by @MichBoi)
  • +
  • Fixed: Fixed potential crash when watching note files or resources
  • +
  • Fixed: Focus editor after pressing toolbar buttons (#4037) (#4036 by @CalebJohn)
  • +
  • Fixed: Prevents crash when invalid spell checker language is selected, and provide fallback for invalid language codes (#4146)
  • +
+

v1.4.19 - 2020-12-01T11:11:16Z🔗

+
    +
  • Improved: Disable soft-break by default in Markdown rendering
  • +
+

Although soft-break is part of the CommonMark spec, it requires a special editor that can wrap text at a certain limit. That doesn't make much sense in Joplin, where the editor can have various sizes, from desktop to mobile, and where the tools to wrap text are not present.

+

v1.4.18 - 2020-11-28T12:21:41Z🔗

+
    +
  • Fixed: Fixed notifications on macOS
  • +
  • Fixed: Re-enabled ASAR packing to improve startup time
  • +
+

v1.4.16 - 2020-11-27T19:40:16Z🔗

+
    +
  • Fixed: Fix sorting by title in a case insensitive way
  • +
  • Fixed: Fixed spell checker crash when no language is selected
  • +
+

v1.4.15 - 2020-11-27T13:25:43Z🔗

+
    +
  • Fixed: Notifications on macOS
  • +
  • Fixed: Fixed potential crash when watching note files or resources
  • +
  • Fixed: Prevents crash when invalid spell checker language is selected, and provide fallback for invalid language codes (#4146)
  • +
  • Plugins: Fixed webview postMessage call
  • +
+

v1.4.12 - 2020-11-23T18:58:07Z🔗

+

Breaking Changes:

+
    +
  • If you use the Clipper API, please note that there are a few breaking changes in this version. See this link for more information: https://github.com/laurent22/joplin/pull/3983
  • +
  • Plugins: joplin.views.dialogs.open() now returns an object instead of the button ID that was clicked. So for example instead of getting just "ok", you will get { "id": "ok" }. This is to allow adding form data to that object.
  • +
+

Deprecated:

+

The following features are deprecated. It will still work for now but please update your code:

+
    +
  • Plugins: All create() functions under joplin.views now take a viewId as a first parameter.
  • +
  • Plugins: MenuItemLocation.Context is deprecated and is now an alias for MenuItemLocation.NoteListContextMenu
  • +
  • Plugins: The app_min_version manifest property is now required. If not provided it will assume v14.
  • +
  • Plugins: The id manifest property is now required. If not set, it will be the plugin filename or directory.
  • +
+

Plugin doc has been updated with some info about the development process.

+
    +
  • New: Add {{bowm}} and {{bows}} - Beginning Of Week (Monday/Sunday) (#4023 by Helmut K. C. Tessarek)
  • +
  • New: Add config screen to add, remove or enable, disable plugins
  • +
  • New: Add option to toggle spellchecking for the markdown editor (#4109 by @CalebJohn)
  • +
  • New: Added toolbar button to switch spell checker language
  • +
  • New: Adds spell checker support for Rich Text editor (#3974)
  • +
  • New: Allow customising application layout
  • +
  • New: Api: Added ability to watch resource file
  • +
  • New: Api: Added way to get the notes associated with a resource
  • +
  • New: API: Adds ability to paginate data (#3983)
  • +
  • New: Plugins: Add command "editorSetText" for desktop app
  • +
  • New: Plugins: Add support for editor context menu
  • +
  • New: Plugins: Add support for external CodeMirror plugins (#4015 by @CalebJohn)
  • +
  • New: Plugins: Add support for JPL archive format
  • +
  • New: Plugins: Added command to export folders and notes
  • +
  • New: Plugins: Added support app_min_version property and made it required
  • +
  • Fixed: Api: Fix note and resource association end points
  • +
  • Fixed: Display note count for conflict folder, and display notes even if they are completed to-dos (#3997)
  • +
  • Fixed: Fix crash due to React when trying to upgrade sync target (#4098)
  • +
  • Fixed: Fix drag and drop behaviour to "copy" instead of "move" (#4031 by @CalebJohn)
  • +
  • Fixed: Fix handling of certain keys in shortcut editor (#4022 by Helmut K. C. Tessarek)
  • +
  • Fixed: Fix handling of new line escaping when using external edit
  • +
  • Fixed: Fix size of search bar area when notebook is empty
  • +
  • Fixed: Fixed importing certain ENEX files that contain invalid dates
  • +
  • Fixed: Fixed inconsistent note list state when using search (#3904)
  • +
  • Fixed: Fixed issue when a newly created note would be automatically moved to the wrong folder on save (#4038)
  • +
  • Fixed: Fixed issue with note being saved after word has been replaced by spell checker
  • +
  • Fixed: Fixed links imported from ENEX as HTML (#4119)
  • +
  • Fixed: Fixed Markdown rendering when code highlighting is disabled
  • +
  • Fixed: Fixed note list overflow when resized very small
  • +
  • Fixed: Fixed text editor button tooltips
  • +
  • Fixed: Plugins: Fix crash when path includes trailing slash
  • +
  • Fixed: Plugins: Fixed issue with dialog being empty in some cases
  • +
  • Fixed: Plugins: Fixed issue with toolbar button key not being unique
  • +
  • Fixed: Prevent log from filling up when certain external editors trigger many watch events (#4011)
  • +
  • Fixed: Regression: Fix application name
  • +
  • Fixed: Regression: Fix exporting to HTML and PDF
  • +
  • Fixed: Regression: Fixed external edit file watching
  • +
  • Fixed: Resource links could not be opened from Rich Text editor on Linux (#4073)
  • +
  • Fixed: Tags could not be selected in some cases (#3876)
  • +
  • Improved: Allow exporting conflict notes (#4095)
  • +
  • Improved: Allow lowercase filters when doing search
  • +
  • Improved: Api: Always include 'has_more' field for paginated data
  • +
  • Improved: Api: Make sure pagination sort options are respected for search and other requests
  • +
  • Improved: Attempt to fix Outlook drag and drop on Markdown editor (#4093 by @CalebJohn)
  • +
  • Improved: Change Markdown rendering to align with CommonMark spec (#3839)
  • +
  • Improved: Disable spell checker on config and search input fields
  • +
  • Improved: Disabled the auto update option in linux (#4102) (#4096 by Anshuman Pandey)
  • +
  • Improved: Make Markdown editor selection more visible in Dark mode
  • +
  • Improved: Optimized resizing window
  • +
  • Improved: Plugins: Allow retrieving form values from dialogs
  • +
  • Improved: Plugins: Force plugin devtool dialog to be detached
  • +
  • Improved: Plugins: Make sure "replaceSelection" command can be undone in Rich Text editor
  • +
  • Improved: Plugins: Provides selected notes when triggering a command from the note list context menu
  • +
  • Improved: Plugins: Rename command "editorSetText" to "editor.setText"
  • +
  • Improved: Prevent lines from shifting in Markdown Editor when Scrollbar appears (#4110 by @CalebJohn)
  • +
  • Improved: Put title bar and toolbar button over two lines when window size is below 800px
  • +
  • Improved: Refresh sidebar and notes when moving note outside of conflict folder
  • +
  • Improved: Upgrade to Electron 10
  • +
+

v1.4.11 (Pre-release) - 2020-11-19T23:06:51Z🔗

+

Breaking Changes:

+
    +
  • If you use the Clipper API, please note that there are a few breaking changes in this version. See this link for more information: https://github.com/laurent22/joplin/pull/3983
  • +
  • Plugins: joplin.views.dialogs.open() now returns an object instead of the button ID that was clicked. So for example instead of getting just "ok", you will get { "id": "ok" }. This is to allow adding form data to that object.
  • +
+

Deprecated:

+

The following features are deprecated. It will still work for now but please update your code:

+
    +
  • Plugins: All create() functions under joplin.views now take a viewId as a first parameter.
  • +
  • Plugins: MenuItemLocation.Context is deprecated and is now an alias for MenuItemLocation.NoteListContextMenu
  • +
  • Plugins: The app_min_version manifest property is now required. If not provided it will assume v14.
  • +
  • Plugins: The id manifest property is now required. If not set, it will be the plugin filename or directory.
  • +
+

Plugin doc has been updated with some info about the development process.

+
+
    +
  • New: Add config screen to add, remove or enable, disable plugins
  • +
  • New: Add option to toggle spellchecking for the markdown editor (#4109 by @CalebJohn)
  • +
  • New: Plugins: Add command "editorSetText" for desktop app
  • +
  • New: Plugins: Add support for JPL archive format
  • +
  • New: Plugins: Add support for external CodeMirror plugins (#4015 by @CalebJohn)
  • +
  • New: Plugins: Added command to export folders and notes
  • +
  • New: Plugins: Added support app_min_version property and made it required
  • +
  • Improved: Upgrade to Electron 10
  • +
  • Improved: Allow exporting conflict notes (#4095)
  • +
  • Improved: Api: Always include 'has_more' field for paginated data
  • +
  • Improved: Api: Make sure pagination sort options are respected for search and other requests
  • +
  • Improved: Attempt to fix Outlook drag and drop on Markdown editor (#4093 by @CalebJohn)
  • +
  • Improved: Disable spell checker on config and search input fields
  • +
  • Improved: Disabled the auto update option in linux (#4102) (#4096 by Anshuman Pandey)
  • +
  • Improved: Optimized resizing window
  • +
  • Improved: Plugins: Make sure "replaceSelection" command can be undone in Rich Text editor
  • +
  • Improved: Plugins: Rename command "editorSetText" to "editor.setText"
  • +
  • Improved: Prevent lines from shifting in Markdown Editor when Scrollbar appears (#4110 by @CalebJohn)
  • +
  • Improved: Put title bar and toolbar button over two lines when window size is below 800px
  • +
  • Improved: Refresh sidebar and notes when moving note outside of conflict folder
  • +
  • Fixed: Display note count for conflict folder, and display notes even if they are completed to-dos (#3997)
  • +
  • Fixed: Fix crash due to React when trying to upgrade sync target (#4098)
  • +
  • Fixed: Fix size of search bar area when notebook is empty
  • +
  • Fixed: Fixed issue when a newly created note would be automatically moved to the wrong folder on save (#4038)
  • +
  • Fixed: Fixed note list overflow when resized very small
  • +
  • Fixed: Plugins: Fixed issue with dialog being empty in some cases
  • +
  • Fixed: Prevent log from filling up when certain external editors trigger many watch events (#4011)
  • +
  • Fixed: Regression: Fixed external edit file watching
  • +
  • Fixed: Resource links could not be opened from Rich Text editor on Linux (#4073)
  • +
+
+
    +
  • Fixed: Api: Fix note and resource association end points
  • +
  • Fixed: Fix drag and drop behaviour to "copy" instead of "move" (#4031 by @CalebJohn)
  • +
  • Fixed: Fix handling of certain keys in shortcut editor (#4022 by Helmut K. C. Tessarek)
  • +
  • Fixed: Fixed inconsistent note list state when using search (#3904)
  • +
  • Fixed: Fixed issue with note being saved after word has been replaced by spell checker
  • +
  • Fixed: Fixed text editor button tooltips
  • +
  • Fixed: Plugins: Fix crash when path includes trailing slash
  • +
  • Fixed: Regression: Fix application name
  • +
  • Fixed: Regression: Fix exporting to HTML and PDF
  • +
  • Fixed: Tags could not be selected in some cases (#3876)
  • +
  • Improved: Allow lowercase filters when doing search
  • +
  • Improved: Change Markdown rendering to align with CommonMark spec (#3839)
  • +
  • Improved: Make Markdown editor selection more visible in Dark mode
  • +
  • Improved: Plugins: Allow retrieving form values from dialogs
  • +
  • Improved: Plugins: Force plugin devtool dialog to be detached
  • +
  • New: Add {{bowm}} and {{bows}} - Beginning Of Week (Monday/Sunday) (#4023 by Helmut K. C. Tessarek)
  • +
  • New: Added toolbar button to switch spell checker language
  • +
  • New: Adds spell checker support for Rich Text editor (#3974)
  • +
  • New: Allow customising application layout
  • +
  • New: Api: Added ability to watch resource file
  • +
  • New: Api: Added way to get the notes associated with a resource
  • +
  • New: API: Adds ability to paginate data (#3983)
  • +
  • New: Plugins: Add support for editor context menu
  • +
+

v1.4.10 (Pre-release) - 2020-11-14T09:53:15Z🔗

+

Breaking Changes:

+
    +
  • If you use the Clipper API, please note that there are a few breaking changes in this version. See this link for more information: https://github.com/laurent22/joplin/pull/3983
  • +
  • Plugins: joplin.views.dialogs.open() now returns an object instead of the button ID that was clicked. So for example instead of getting just "ok", you will get { "id": "ok" }. This is to allow adding form data to that object.
  • +
+

Deprecated:

+
    +
  • Plugins: All create() functions under joplin.views now take a viewId as a first parameter. It will still work for now if you don't provide one, but please update your plugins.
  • +
  • Plugins: MenuItemLocation.Context is deprecated and is now an alias for MenuItemLocation.NoteListContextMenu
  • +
+

Plugin doc has been updated with some info about the development process.

+
+
    +
  • New: Add {{bowm}} and {{bows}} - Beginning Of Week (Monday/Sunday) (#4023 by Helmut K. C. Tessarek)
  • +
  • New: Plugins: Add support for editor context menu
  • +
  • New: Allow customising application layout
  • +
  • Improved: Allow lowercase filters when doing search
  • +
  • Improved: Make Markdown editor selection more visible in Dark mode
  • +
  • Improved: Plugins: Allow retrieving form values from dialogs
  • +
  • Fixed: Api: Fix note and resource association end points
  • +
  • Fixed: Fix drag and drop behaviour to "copy" instead of "move" (#4031 by @CalebJohn)
  • +
  • Fixed: Fix handling of certain keys in shortcut editor (#4022 by Helmut K. C. Tessarek)
  • +
  • Fixed: Fixed issue with note being saved after word has been replaced by spell checker
  • +
  • Fixed: Plugins: Fix crash when path includes trailing slash
  • +
  • Fixed: Regression: Fix application name
  • +
+
+
    +
  • New: Added toolbar button to switch spell checker language
  • +
  • New: Api: Added way to get the notes associated with a resource
  • +
  • New: Api: Added ability to watch resource file
  • +
  • New: API: Adds ability to paginate data (#3983)
  • +
  • New: Adds spell checker support for Rich Text editor (#3974)
  • +
  • Fixed: Fixed inconsistent note list state when using search (#3904)
  • +
  • Fixed: Fixed text editor button tooltips
  • +
  • Fixed: Regression: Fix exporting to HTML and PDF
  • +
  • Fixed: Tags could not be selected in some cases (#3876)
  • +
  • Improved: Change Markdown rendering to align with CommonMark spec (#3839)
  • +
  • Improved: Plugins: Force plugin devtool dialog to be detached
  • +
+

v1.4.9 (Pre-release) - 2020-11-11T14:23:17Z🔗

+

IMPORTANT: If you use the Clipper API, please note that there are a few breaking changes in this version. See this link for more information: https://github.com/laurent22/joplin/pull/3983

+
+
    +
  • New: Added toolbar button to switch spell checker language
  • +
  • Improved: Api: Change pagination to has_more model
  • +
  • Fixed: Fixed inconsistent note list state when using search (#3904)
  • +
  • Fixed: Fixed text editor button tooltips
  • +
  • Fixed: Regression: Fix exporting to HTML and PDF
  • +
  • Fixed: Tags could not be selected in some cases (#3876)
  • +
+
+
    +
  • New: Api: Added way to get the notes associated with a resource
  • +
  • New: Api: Added ability to watch resource file
  • +
  • New: API: Adds ability to paginate data (#3983)
  • +
  • New: Adds spell checker support for Rich Text editor (#3974)
  • +
  • Improved: Change Markdown rendering to align with CommonMark spec (#3839)
  • +
  • Improved: Plugins: Force plugin devtool dialog to be detached
  • +
+

v1.4.7 (Pre-release) - 2020-11-07T18:23:29Z🔗

+

IMPORTANT: If you use the Clipper API, please note that there are a few breaking changes in this version. See this link for more information: https://github.com/laurent22/joplin/pull/3983

+
+
    +
  • New: Api: Added ability to watch resource file
  • +
  • New: Api: Added way to get the notes associated with a resource
  • +
  • Improved: Plugins: Force plugin devtool dialog to be detached
  • +
+
+
    +
  • New: API: Adds ability to paginate data (#3983)
  • +
  • New: Adds spell checker support for Rich Text editor (#3974)
  • +
  • Improved: Change Markdown rendering to align with CommonMark spec (#3839)
  • +
+

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.17 (Pre-release) - 2020-11-06T11:35:15Z🔗

+
    +
  • Regression: Random crash when syncing due to undefined tags (#4051)
  • +
+
+
    +
  • 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.4.6 (Pre-release) - 2020-11-05T22:44:12Z🔗

+

IMPORTANT: If you use the Clipper API, please note that there are a few breaking changes in this version. See this link for more information: https://github.com/laurent22/joplin/pull/3983

+
    +
  • New: API: Adds ability to paginate data (#3983)
  • +
  • New: Adds spell checker support for Rich Text editor (#3974)
  • +
  • Improved: Change Markdown rendering to align with CommonMark spec (#3839)
  • +
+

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.3.11 (Pre-release) - 2020-10-31T13:22:20Z🔗

+
    +
  • Improved: Make sure all commands appear in keymap editor
  • +
  • Fixed: Add history backward and forward commands to keymap and menus (#4010)
  • +
  • Fixed: Fixed handling of Option key for shortcuts in macOS
  • +
  • Security: Remove "link" and "meta" tags from notes to prevent XSS
  • +
+
+
    +
  • New: Add support for application plugins (#3257)
  • +
  • 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
  • +
  • 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)
  • +
  • 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 toolip and icon
  • +
+

v1.3.10 (Pre-release) - 2020-10-29T13:27:14Z🔗

+
    +
  • New: Api: Added service to access resource external editing
  • +
  • New: Plugins: Add the openNote, openFolder and openTag commands
  • +
  • Fixed: Regression: Keyboard shortcut would not save in some cases
  • +
  • Fixed: Regression: Restore "New sub-notebook" command
  • +
  • Fixed: Command Palette click did not work
  • +
  • Fixed: Fix slow Katex rendering when there are many global definitions (#3993)
  • +
  • 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)
  • +
+
+
    +
  • 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
  • +
  • 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)
  • +
  • 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 toolip and icon
  • +
+

v1.3.9 (Pre-release) - 2020-10-23T16:04:26Z🔗

+
    +
  • New: Added openProfileDirectory command and menu item
  • +
  • Improved: Make “update is available” dialog box easier to use (#3877 by @roryokane)
  • +
  • Improved: Sort tags in a case-insensitive way
  • +
  • Fixed: Fix invalid tag state issue when importing notes or syncing
  • +
  • Fixed: Fix search filters when language is in Korean or with accents (#3947 by Naveen M V)
  • +
  • Fixed: Fixed Cut menu item
  • +
+
+
    +
  • 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
  • +
  • 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)
  • +
  • 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 toolip and icon
  • +
+

v1.3.8 (Pre-release) - 2020-10-21T18:46:29Z🔗

+
    +
  • New: Plugins: Added support for content scripts
  • +
  • Improved: Api: Allow preserving timestamps when updating a note
  • +
  • Improved: Display more info while an ENEX file is being imported
  • +
  • Improved: Made toolbar buttons bigger and swap order of bullet and number lists
  • +
  • Improved: Plugins: Allow custom commands to return a result
  • +
  • Fixed: Certain commands no longer worked. (#3962)
  • +
  • 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: Regression: Fixed format of copied version info
  • +
+
+
    +
  • 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
  • +
  • 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)
  • +
  • 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 toolip and icon
  • +
+

v1.3.7 (Pre-release) - 2020-10-20T11:35:55Z🔗

+
    +
  • Improved: Added support for a custom S3 URL (#3921) (#3691 by @aaron)
  • +
  • Improved: Import <strike>, <s> tags (strikethrough) from Evernote (#3936 by Ian Slinger)
  • +
  • Improved: Simplified and improve command service, and added command palette
  • +
  • Improved: Tray: Exit -> Quit (#3945 by Helmut K. C. Tessarek)
  • +
  • Fixed: Trying to fix sidebar performance issue when there are many notebooks or tags (#3893)
  • +
+
+
    +
  • 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
  • +
  • Improved: Actually enter insert mode after pressing o/O in CodeMirror vim mode (#3897 by Caleb John)
  • +
  • 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)
  • +
  • Fixed: Allows toggling external editing off and on again (#3886)
  • +
  • Fixed: Fixed toggleNoteList and toggleSidebar commands
  • +
  • Fixed: Fixed Toggle Editor button toolip and icon
  • +
+

v1.3.5 (Pre-release) - 2020-10-17T14:26:35Z🔗

+
    +
  • Fixed: Regression: Remove Hide Joplin menu item on Linux too
  • +
  • Fixed: Regression: Editor toolbar was disabled when importing note from MD file (#3915)
  • +
  • Fixed: Regression: Header links with special characters were no longer working (#3903)
  • +
  • Fixed: Regression: Importing ENEX as HTML was importing as Markdown (#3923)
  • +
  • Fixed: Regression - Layout Button Sequence menu items were disabled (#3899)
  • +
  • Fixed: Regression: Fix export of pluginAssets when exporting to html/pdf (#3927 by Caleb John)
  • +
  • Fixed: Regression: Fixed check for update
  • +
  • Fixed: Regression: Fixed move to notebook from context menu
  • +
  • Fixed: Regression: Fixed opening links
  • +
+
+
    +
  • 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
  • +
  • Improved: Actually enter insert mode after pressing o/O in CodeMirror vim mode (#3897 by Caleb John)
  • +
  • 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)
  • +
  • Fixed: Allows toggling external editing off and on again (#3886)
  • +
  • Fixed: Fixed toggleNoteList and toggleSidebar commands
  • +
  • Fixed: Fixed Toggle Editor button toolip and icon
  • +
+

v1.3.3 (Pre-release) - 2020-10-17T10:56:57Z🔗

+
    +
  • Fixed: Regression: Remove Hide Joplin menu item on Linux too
  • +
  • Fixed: Regression: Editor toolbar was disabled when importing note from MD file (#3915)
  • +
  • Fixed: Regression: Header links with special characters were no longer working (#3903)
  • +
  • Fixed: Regression: Importing ENEX as HTML was importing as Markdown (#3923)
  • +
  • Fixed: Regression - Layout Button Sequence menu items were disabled (#3899)
  • +
  • Fixed: Regression: Fix export of pluginAssets when exporting to html/pdf (#3927 by Caleb John)
  • +
  • Fixed: Regression: Fixed check for update
  • +
  • Fixed: Regression: Fixed move to notebook from context menu
  • +
+
+
    +
  • New: Add support for application plugins (#3257)
  • +
  • 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
  • +
  • Improved: Actually enter insert mode after pressing o/O in CodeMirror vim mode (#3897 by Caleb John)
  • +
  • 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)
  • +
  • Fixed: Allows toggling external editing off and on again (#3886)
  • +
  • Fixed: Fixed toggleNoteList and toggleSidebar commands
  • +
  • Fixed: Fixed Toggle Editor button toolip and icon
  • +
+

v1.3.2 (Pre-release) - 2020-10-11T20:39:49Z🔗

+
    +
  • Fixed: Regression: Context menu in sidebar could point to wrong item
  • +
+
+
    +
  • New: Add support for application plugins (#3257)
  • +
  • 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)
  • +
  • Fixed: Allows toggling external editing off and on again (#3886)
  • +
+

v1.3.1 (Pre-release) - 2020-10-11T15:10:18Z🔗

+
    +
  • New: Add support for application plugins (#3257)
  • +
  • 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)
  • +
  • Fixed: Allows toggling external editing off and on again (#3886)
  • +
+

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.2.4 (Pre-release) - 2020-09-30T07:34:29Z🔗

+
    +
  • Improved: Regression: Context menu on sidebar did not work anymore
  • +
  • Improved: Regression: Sidebar toggle button did not work anymore
  • +
+

v1.2.3 (Pre-release) - 2020-09-29T15:13:02Z🔗

+
    +
  • Improved: Adjust the codemirror code block colors for the dark theme (#3794 by Caleb John)
  • +
  • Improved: Always label "Click to add tags"
  • +
  • Improved: Disable fuzzy search for now due to performance issues
  • +
  • Improved: Extend functionality of codemirror vim (#3823 by Caleb John)
  • +
  • Improved: Improved rendering of All Notes item in sidebar
  • +
  • Improved: Keep search fuzzy scores between 0 and 2 (#3812 by Naveen M V)
  • +
  • Improved: Make global search field wider when it has focus
  • +
  • Improved: Optimised sidebar rendering speed
  • +
  • Fixed: Fade out checked items in Rich Text editor too
  • +
  • Fixed: Fix issue with highlighted search terms in CodeMirror viewer
  • +
  • Fixed: Fixed editor font size (#3801)
  • +
  • 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.2.2 (Pre-release) - 2020-09-22T20:31:55Z🔗

+
    +
  • New: Add frequently used languages to markdown editor (#3786 by Carlos Eduardo)
  • +
  • Improved: Disable auto-update by default
  • +
  • Improved: Improved menu enabled states when not in main screen
  • +
  • Improved: UI update (#3586)
  • +
  • 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: 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 issue when switching from search to "All notes" (#3748)
  • +
  • Fixed: Improved handling of special characters when exporting to Markdown (#3760)
  • +
+

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.1.3 (Pre-release) - 2020-09-17T10:30:37Z🔗

+
    +
  • Improved: Do not prevent export when one item is still encrypted
  • +
  • Fixed: Creating a note after backward redirection places it in a wrong notebook (#3759 by Naveen M V)
  • +
  • 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.1.2 (Pre-release) - 2020-09-15T12:58:38Z🔗

+
    +
  • Improved: Clarifies labels of certain actions, and added shortcut for note list toggle
  • +
  • Security: Upgrade packages to fix vulnerabilities
  • +
+

v1.1.1 (Pre-release) - 2020-09-11T23:32:47Z🔗

+
    +
  • New: Add keyboard shortcut editor (#3525 by Anjula Karunarathne)
  • +
  • Improved: Change CodeMirror default home and end to be visual line based (#3672 by Caleb John)
  • +
  • Improved: Added support for 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)
  • +
  • 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 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)
  • +
+

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.239 (Pre-release) - 2020-09-01T21:56:36Z🔗

+

IMPORTANT: This pre-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. Currently that includes the desktop app (v1.0.234+) and Android app (v1.0.337+). It means if you are using these two clients you'll be fine. However if you are using the iOS or CLI clients you might want to wait till these clients are updated. Any issue with the sync target upgrade, please post on the forum.

+

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.

+

Regression fixes:

+
    +
  • Fixes #3645: Improved handling of startup errors, and prevent window from being invisible when upgrading sync target
  • +
  • Fixed OneDrive synchronisation (#3674)
  • +
+

Main changes:

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

v1.0.237 (Pre-release) - 2020-08-29T15:38:04Z🔗

+

IMPORTANT: This pre-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. Currently that includes the desktop app (v1.0.234+) and Android app (v1.0.337+). It means if you are using these two clients you'll be fine. However if you are using the iOS or CLI clients you might want to wait till these clients are updated. Any issue with the sync target upgrade, please post on the forum.

+

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.

+

Regression fixes:

+
    +
  • Linux: Fixes #3645: Prevent lock when restarting app
  • +
  • Fixed OneDrive synchronisation (#3674)
  • +
+

Main changes:

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

v1.0.236 (Pre-release) - 2020-08-28T09:16:54Z🔗

+

IMPORTANT: This pre-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. Currently that includes the desktop app (v1.0.234+) and Android app (v1.0.337+). It means if you are using these two clients you'll be fine. However if you are using the iOS or CLI clients you might want to wait till these clients are updated. Any issue with the sync target upgrade, please post on the forum.

+

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.

+

Regression fixes:

+
    +
  • Fixed OneDrive synchronisation (#3674)
  • +
+

Main changes:

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

v1.0.235 (Pre-release) - 2020-08-18T22:08:01Z🔗

+

Important: This pre-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. Currently that includes the desktop app (v1.0.234+) and Android app (v1.0.337+). It means if you are using these two clients you'll be fine. However if you are using the iOS or CLI clients you might want to wait till these clients are updated. Any issue with the sync target upgrade, please post on the forum.

+

This version also includes an update to the search engine and as a result starting the app the first might be SLOW, as the search engine indexes all your notes. It might take from a few seconds to several minutes depending on how large your note collection is

+
    +
  • New: Add mechanism to lock and upgrade sync targets (#3524)
  • +
  • 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)
  • +
+

v1.0.234 (Pre-release) - 2020-08-17T23:13:02Z🔗

+

Important: This pre-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. Currently that includes the desktop app (v1.0.234+) and Android app (v1.0.337+). It means if you are using these two clients you'll be fine. However if you are using the iOS or CLI clients you might want to wait till these clients are updated. Any issue with the sync target upgrade, please post on the forum.

+

This version also includes an update to the search engine and as a result starting the app the first might be SLOW, as the search engine indexes all your notes. It might take from a few seconds to several minutes depending on how large your note collection is.

+
    +
  • New: Add mechanism to lock and upgrade sync targets (#3524)
  • +
  • New: Add support for media player for video and audio files
  • +
  • New: Add version info to error screen
  • +
  • New: Added KeymapService to manage keyboard shortcuts (#3252 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)
  • +
+

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.232 (Pre-release) - 2020-07-28T22:34:40Z🔗

+

This release is to remove the hierarchical/nested tags feature for now, as it has a performance issue.

+
    +
  • 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: Api: Fixes nested tag API to handle calls with no 'fields' query key (#3539 by Vaidotas Šimkus)
  • +
  • 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)
  • +
+

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.226 (Pre-release) - 2020-07-04T10:21:26Z🔗

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

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

+
    +
  • Fixed regression in v1.0.223
  • +
+

v1.0.223 (Pre-release) - 2020-06-20T11:51:27Z🔗

+
    +
  • Improved: API: Improved error handling on service end-point
  • +
  • Fixed: API: Fixed externalEditWatcher/noteIsWatched call, fixed tests
  • +
+

v1.0.221 (Pre-release) - 2020-06-20T01:44:20Z🔗

+
    +
  • New: API: Add support for external editing from API
  • +
  • New: Add default filename for jex export (#3034 by @CalebJohn)
  • +
  • New: Add swapLineUp and swapLineDown keys to Code Mirror editor (#3363 by @CalebJohn)
  • +
  • Improved: Do not expand the left notebook when following a link to a note
  • +
  • Improved: Reduce database logging statements
  • +
  • Improved: Remove auto-indent for in note html/xml for Code Mirror (#3374 by @CalebJohn)
  • +
  • Fixed: Fix getLineSpan logic and list token regex logic (#3365 by @CalebJohn)
  • +
  • Fixed: Fixed various bugs related to the import of ENEX files as HTML
  • +
  • Fixed: Prevent desktop.ini file from breaking sync lock (#3381)
  • +
+

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.217 (Pre-release) - 2020-06-06T15:17:27Z🔗

+
    +
  • New: Add option to choose Code Mirror as code editor (#3284 by @CalebJohn)
  • +
  • New: Translation: Add bahasa indonesia (id_ID.po) (#3246 by @ffadilaputra)
  • +
  • Improved: Add support for editable resources (#3305) (#279)
  • +
  • Improved: Add support for system keychain to save sensitive settings (#3207) (#2773)
  • +
  • Improved: Add way to manually order notes by dragging them (#3235) (#51)
  • +
  • Improved: Create new notes with minimum set of properties to prevent a few minor bugs
  • +
  • Improved: Dev fix: Only disable editor toolbar in preview mode
  • +
  • Improved: Unindent empty list markup on Enter (#2772) (#2614 by Shotaro Yamada)
  • +
  • Improved: Upload attachments > 4 MB when using OneDrive (#3195) (#173 by @TheOnlyTrueJonathanHeard)
  • +
  • Fixed: Always make the first item selected in Goto Anything (#3181) (#3170 by 叡山电车)
  • +
  • Fixed: Attaching an image, then cancelling the resize dialog, would crash the app (#3324)
  • +
  • Fixed: Disable editor toolbar when editor is not in focus (#3286)
  • +
  • Fixed: Disable middle-clicking external URLs, as they would open inside the application (#3287)
  • +
  • Fixed: Fix styling of note title in exported PDF and print (#3227)
  • +
  • Fixed: Fixed date popup dialog overflow issue inside info dialog
  • +
  • Fixed: Fixed issue with accentuated letters in GotoAnything (#3183) (#3171 by 叡山电车)
  • +
  • Fixed: Fixed issue with invalid image paths when config path contains spaces (#3267)
  • +
  • Fixed: Fixed note list context menu (#3331)
  • +
  • Fixed: Fixed portable app issue with resource paths
  • +
  • Fixed: Fixed shortcut to focus Note List when editor is in focus (#3298)
  • +
  • Fixed: Make GotoAnyting work with East Asian charactors (#3180) (#3153 by 叡山电车)
  • +
  • Fixed: Prevent drag and dropping of text in editor as it can lead to data loss (#3302)
  • +
+

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.214 (Pre-release) - 2020-05-21T17:15:15Z🔗

+

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: 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.212 (Pre-release) - 2020-05-21T07:48:39Z🔗

+

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
  • +
  • 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: 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.211 (Pre-release) - 2020-05-20T08:59:16Z🔗

+

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
  • +
  • Security: Filter SVG element event attributes to prevent XSS vulnerability (#3143)
  • +
  • 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: 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.209 (Pre-release) - 2020-05-17T18:32:51Z🔗

+

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
  • +
  • Security: Filter SVG element event attributes to prevent XSS vulnerability (#3143)
  • +
  • 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
  • +
  • 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.207 (Pre-release) - 2020-05-10T16:37:35Z🔗

+

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
  • +
  • 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
  • +
  • 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
  • +
  • Security: Filter SVG element event attributes to prevent XSS vulnerability (#3143)
  • +
+

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.194 (Pre-release) - 2020-03-14T00:00:32Z🔗

+

The main purpose of this pre-release is to allow evaluating the WYSIWYG editor.

+
    +
  • New: Added experimental WYSIWYG editor (#2556) (#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)
  • +
  • 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)
  • +
+

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.192 (Pre-release) - 2020-03-06T23:27:52Z🔗

+

More fixes following latest pre-release.

+
    +
  • Security: Changed default encryption method to CCM
  • +
  • Fixed: Handle invalid UTF-8 data when encrypting (#2591)
  • +
  • Fixed: Fixed top margin issue on note rendering
  • +
  • Fixed: Fixed issue with style embeded in notes
  • +
+

v1.0.190 (Pre-release) - 2020-03-06T01:22:22Z🔗

+

Fix more regressions from previous pre-release.

+
    +
  • Fixed: Fixed sanitize function so that it does not break HTML (#2667)
  • +
  • Fixed: Templates when creating note were broken (#2660)
  • +
+

v1.0.189 (Pre-release) - 2020-03-04T17:27:15Z🔗

+

Fixed issue from previous pre-release 1.0.187.

+
    +
  • New: Add more context to encryption errors
  • +
  • Improved: Improve code css for Solarized Dark (#2626 by @rajprakash)
  • +
  • Improved: Empty note body has 0 line count (#2623 by @jdrobertso)
  • +
  • Fixed: Fix creation of new notes (#2656)
  • +
  • Fixed: Improved Mermaid rendering on small viewports (#2638)
  • +
  • Fixed: Fixed auto-title feature (#2652)
  • +
  • Fixed: HTML code within Markdown was rendered incorrectly in some cases (#2640)
  • +
+

v1.0.187 (Pre-release) - 2020-03-01T12:31:06Z🔗

+
    +
  • New: Added concept of provisional note to simplify creation and handling of newly created notes
  • +
  • New: Add word counter feature to notes (#2444) (#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
  • +
  • Security: Fixed potential Arbitrary File Read via XSS (Reported by Javier Olmedo, fixed by Laurent Cozic)
  • +
  • Improved: Change geolocation service to freegeoip.app to improve privacy (#2503 by Helmut K. C. Tessarek)
  • +
  • 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.177 (Pre-release) - 2019-12-30T14:40:40Z🔗

+

This is to test the Electron framework upgrade and the switch to a separate note renderer. If you find any bug please report on the forum or GitHub tracker.

+
    +
  • New: Allow exporting a note as HTML
  • +
  • Improved: Extract note renderer to separate package (#2206)
  • +
  • Improved: Better handling of resource download errors, and added resource info to sync status screen
  • +
  • Improved: Update Katex to 0.11.1 (#2201)
  • +
  • Improved: Improved Nextcloud API error handling
  • +
  • Improved: Updated OneDrive login to remove webview dependency
  • +
  • Improved: Decrypt notes that are meant to be shared
  • +
  • Improved: Make it easier to view early errors when the app starts
  • +
  • Improved: Upgrade to Electron 7
  • +
  • Improved: Render note using iframe instead of deprecated webview
  • +
  • Fixed: Fix Goto Anything scrolling issue (#2199) (#2122)
  • +
  • Fixed: Prevent app from crashing when pressing focus shortcut from search bar (#2157)
  • +
  • Fixed: Handle WebDAV servers that do not return a last modified date (fixes mail.ru) (#2091)
  • +
  • Fixed: Fix notifications on Windows 7 (#2144)
  • +
+

v1.0.176 (Pre-release) - 2019-12-14T10:36:44Z🔗

+
    +
  • New: Add ability to share a note publicly using Nextcloud (#2173)
  • +
  • Improved: Allow for custom Joplin theme and Ace editor styles (#2099)
  • +
+

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.153 (Pre-release) - 2019-05-15T06:27:29Z🔗

+

This release only adds additional logging for the note history feature.

+

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.148 (Pre-release) - 2019-05-08T19:12:24Z🔗

+

This is to test the revision service. It is not yet recommended to upgrade as the corresponding mobile apps have not been released to the stores yet (the Android APK is available though).

+
    +
  • Improved: Make sure a revision is saved if a note has not been modified for over a week
  • +
  • Improved: Do not save a revision if there is already a recent one that exists
  • +
  • Improved: Make sure user timestamp is preserved with revision information
  • +
  • Fixed: Fixed note history sort order.
  • +
  • Fixed: Make sure a revision is not empty before saving it
  • +
+

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.139 (Pre-release) - 2019-03-09T10:06:48Z🔗

+

This pre-release is mainly for testing the new rendering engine.

+

v1.0.138 (Pre-release) - 2019-03-03T17:23:00Z🔗

+

This is only for testing the Arabic translation.

+

v1.0.137 (Pre-release) - 2019-03-03T01:12:51Z🔗

+

To test Windows 32-bit build.

+

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.126 (Pre-release) - 2019-02-09T19:46:16Z🔗

+
    +
  • 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
  • +
  • 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: Move up and down 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
  • +
  • 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.108 (Pre-release) - 2018-09-29T18:49:29Z🔗

+

To test the latest security fix only. Won't be released officially.

+

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_android/index.html b/docs/changelog_android/index.html new file mode 100644 index 0000000000..3908942d20 --- /dev/null +++ b/docs/changelog_android/index.html @@ -0,0 +1,443 @@ + + + + + + + Joplin Android app changelog | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

Joplin Android app changelog🔗

+ + + + +
+ + + + diff --git a/docs/changelog_cli/index.html b/docs/changelog_cli/index.html new file mode 100644 index 0000000000..279bf2161e --- /dev/null +++ b/docs/changelog_cli/index.html @@ -0,0 +1,733 @@ + + + + + + + Joplin terminal app changelog | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

Joplin terminal app changelog🔗

+

cli-v1.8.1 - 2021-05-10T09:38:05Z🔗

+
    +
  • New: Add "id" and "due" search filters (#4898 by @JackGruber)
  • +
  • New: Add support for "batch" command (eef86d6)
  • +
  • Improved: Also duplicate the tags when the note is duplicated (#4876) (#3157 by @JackGruber)
  • +
  • Improved: Bump KaTeX to 0.13.3 (#4902 by Roman Musin)
  • +
  • Improved: Filter "notebook" can now be negated (#4651 by Naveen M V)
  • +
  • Improved: Improved error handling when importing ENEX (257cde4)
  • +
  • Improved: Save user settings to JSON file (71f976f)
  • +
  • Improved: Some imported ENEX files incorrectly had invisible sections (f7a457f)
  • +
  • Fixed: Disable WebDAV response caching (#4887) (#4706 by Roman Musin)
  • +
  • Fixed: Fixed issue when getting version info (54884d6)
  • +
  • Fixed: Fixed rendering of note and resource links (61399ce)
  • +
  • Fixed: Regression: Fixed network request repeat mechanism (ede6004)
  • +
  • Security: Apply npm audit security fixes (0b67446)
  • +
+

cli-v1.6.4 - 2021-01-21T10:01:15Z🔗

+
    +
  • Fixed: Fixed infinite sync issue with OneDrive (#4305)
  • +
+

cli-v1.6.3 - 2021-01-11T11:52:11Z🔗

+
    +
  • New: Add more log info when a revision cannot be deleted due to still-encrypted itel
  • +
  • Improved: Do not display error message when fixing ENEX resource mime type (#4310)
  • +
  • Improved: Improve support for SVG images when importing ENEX files
  • +
  • Improved: Improved support for bold and italic format when importing ENEX file (#4316)
  • +
  • Improved: Support natural sorting by title (#4272 by @volatilevar)
  • +
  • Improved: Upload Big Notes to Onedrive (#4120) (#3528 by Jonathan Heard)
  • +
  • Fixed: Fixed OneDrive issue that would require a full resync every time (#4324) (#4313 by Jonathan Heard)
  • +
  • Fixed: Fixed importing ENEX files that contain hidden sections
  • +
+

cli-v1.6.2 - 2021-01-11T11:41:56Z🔗

+
    +
  • New: Add more log info when a revision cannot be deleted due to still-encrypted item
  • +
  • Improved: Do not display error message when fixing ENEX resource mime type (#4310)
  • +
  • Improved: Improve support for SVG images when importing ENEX files
  • +
  • Improved: Improved support for bold and italic format when importing ENEX file (#4316)
  • +
  • Improved: Support natural sorting by title (#4272 by @volatilevar)
  • +
  • Improved: Upload Big Notes to Onedrive (#4120) (#3528 by Jonathan Heard)
  • +
  • Fixed: Fixed OneDrive issue that would require a full resync every time (#4324) (#4313 by Jonathan Heard)
  • +
  • Fixed: Fixed importing ENEX files that contain hidden sections
  • +
+

cli-v1.5.1 - 2020-12-26T00:46:31Z🔗

+
    +
  • New: Add table captions when importing ENEX files
  • +
  • Improved: Allow exporting conflict notes (#4095)
  • +
  • Improved: Allow lowercase filters when doing search
  • +
  • Improved: Improved error handling when importing ENEX files
  • +
  • Improved: Partially reverts #3975 (link rendering)
  • +
  • Fixed: Fix sorting by title in a case insensitive way
  • +
  • Fixed: Fixed basic search when executing a query in Chinese (#4034 by Naveen M V)
  • +
  • Fixed: Fixed importing ENEX files that contain empty resources
  • +
  • Fixed: Fixed importing ENEX files that contain resources with invalid mime type
  • +
  • Fixed: Fixed importing certain ENEX files that contain invalid dates
  • +
  • Fixed: Fixed importing certain code blocks from ENEX
  • +
  • Fixed: Fixed issue when searching for text that contains diacritic (#4152) (#4025 by Roman Musin)
  • +
  • Fixed: Fixed issues when importing hidden tables within hidden sections in Enex files
  • +
+

cli-v1.4.9 - 2020-11-26T15:00:37Z🔗

+
    +
  • Improved: Allow exporting conflict notes (#4095)
  • +
  • Improved: Allow lowercase filters when doing search
  • +
  • Improved: Refresh sidebar and notes when moving note outside of conflict folder
  • +
  • Fixed: Fix handling of new line escaping when using external edit
  • +
  • Fixed: Fixed importing certain ENEX files that contain invalid dates
  • +
+

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/changelog_server/index.html b/docs/changelog_server/index.html new file mode 100644 index 0000000000..7a1b02fccb --- /dev/null +++ b/docs/changelog_server/index.html @@ -0,0 +1,458 @@ + + + + + + + Joplin Server Changelog | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

Joplin Server Changelog🔗

+

server-v2.0.1 (Pre-release) - 2021-05-14T13:55:45Z🔗

+
    +
  • New: Add support for sharing notes via a link (ccbc329)
  • +
  • New: Add support for sharing a folder (#4772)
  • +
  • New: Added log page to view latest changes to files (874f301)
  • +
  • Fixed: Prevent new user password from being hashed twice (76c143e)
  • +
  • Fixed: Fixed crash when rendering note with links to non-existing resources or notes (07484de)
  • +
  • Fixed: Fixed error handling when no session is provided (63a5bfa)
  • +
  • Fixed: Fixed uploading empty file to the API (#4402)
  • +
+

server-v1.7.2 - 2021-01-24T19:11:10Z🔗

+
    +
  • Fixed: Fixed password hashing when changing password
  • +
  • Improved: Many other internal changes for increased reliability
  • +
+ + + + +
+ + + + diff --git a/docs/clipper/index.html b/docs/clipper/index.html new file mode 100644 index 0000000000..549731849a --- /dev/null +++ b/docs/clipper/index.html @@ -0,0 +1,475 @@ + + + + + + + Joplin Web Clipper | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 interfere 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 new file mode 100644 index 0000000000..2d35a1a3f5 --- /dev/null +++ b/docs/conflict/index.html @@ -0,0 +1,451 @@ + + + + + + + What is a conflict? | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 be 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 new file mode 100644 index 0000000000..28cab09a4b --- /dev/null +++ b/docs/debugging/index.html @@ -0,0 +1,497 @@ + + + + + + + How to enable debugging | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 bug report 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 new file mode 100644 index 0000000000..8921c71ae1 --- /dev/null +++ b/docs/desktop/index.html @@ -0,0 +1,445 @@ + + + + + + + Desktop application | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..d814fefef7 --- /dev/null +++ b/docs/donate/index.html @@ -0,0 +1,478 @@ + + + + + + + Support Joplin development | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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.

+

Donations🔗

+ + + + + + + + + + + + + + + + + + + + + + + + + +
PlatformLink
PaypalDonate on PayPal
GitHub SponsorSponsor on GitHub
PatreonBecome a patron
Bank TransferIBAN: FR76 4061 8803 5200 0400 7415 938
BIC/SWIFT: BOUS FRPP XXX
+

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 new file mode 100644 index 0000000000..7e470b56f4 --- /dev/null +++ b/docs/e2ee/index.html @@ -0,0 +1,463 @@ + + + + + + + About End-To-End Encryption (E2EE) | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..8093943c0a --- /dev/null +++ b/docs/faq/index.html @@ -0,0 +1,541 @@ + + + + + + + FAQ | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 pass arguments to the Linux installation script?🔗

+

You can pass arguments to the installation script by using this command.

+
wget -O - https://raw.githubusercontent.com/laurent22/joplin/dev/Joplin_install_and_update.sh | bash -s -- --argument1 --argument2
+

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.

+

Not all notes, folders, or tags are displayed on the mobile app🔗

+

Joplin does not have a background sync on mobile devices. When Joplin is closed, sent to the background or the device is put into sleep (display off), the sync is interrupted.

+

How can I check the sync status?🔗

+

Go to the synchronisation page. You can find it on the desktop application under Help > Synchronisation Status and on the mobile app under Configuration > SYNC STATUS.

+

total items = How many items there are in total to sync.
+synced items = How many items have already been uploaded or downloaded.

+

If total items and synced items are equal, all data has been synced. Also all devices should have the same total items.

+

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

+

Why is my WebDAV host 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.

+

The following WebDAV hosts are not supported🔗

+ +

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 new file mode 100644 index 0000000000..afaa1e9b8f --- /dev/null +++ b/docs/gsoc2020/ideas/index.html @@ -0,0 +1,548 @@ + + + + + + + GSoC 2020 Ideas | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..e27382fbcd --- /dev/null +++ b/docs/gsoc2020/index/index.html @@ -0,0 +1,547 @@ + + + + + + + Google Summer of Code 2020 | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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/gsoc2021/ideas/index.html b/docs/gsoc2021/ideas/index.html new file mode 100644 index 0000000000..0df438ea10 --- /dev/null +++ b/docs/gsoc2021/ideas/index.html @@ -0,0 +1,508 @@ + + + + + + + GSoC 2021 Ideas | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

GSoC 2021 Ideas🔗

+

2021 is Joplin second round at Google Summer of Code. Detailed information on how to get involved and apply are given in the general Summer of Code introduction

+

These are all proposals! We are open to new ideas you might have!! Do you have an awesome idea you want to work on with Joplin but that is not among the ideas below? That's cool. We love that! But please do us a favour: Get in touch with a mentor early on and make sure your project is realistic and within the scope of Joplin. Just make sure your idea is within this year's theme:

+
    +
  • Plugin development - implementing new features using Joplin's plugin system.
  • +
  • External desktop applications - build external Joplin applications by retrieving, creating or modifying notes via the Data API.
  • +
  • External server applications - leverage the Joplin Server API to provide online features to Joplin users.
  • +
+

Information for Students🔗

+

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. OCR plugin🔗

+

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 plugin for the desktop app that extract text from images and attach it to the note.

+

Difficulty Level: High

+

Skills Required: JavaScript, Image processing

+

Potential Mentor(s): CalebJohn, laurent22, roman_r_m

+

2. Template plugin🔗

+

Joplin already supports templates however we would like to re-package this feature as a plugin. Thus you would remove it from the main app and create a new plugin for it. It should be compatible with existing templates. Once the plugin is created, it could be a good idea to improve the feature further, perhaps based on user feedback on GitHub or in the forum.

+

Expected Outcome: A plugin for the desktop app that handle note templates.

+

Difficulty Level: Medium

+

Skills Required: JavaScript

+

Potential Mentor(s): CalebJohn, tessus

+

3. BibTex plugin🔗

+

Many of our users use Joplin for research note and as such a plugin that can add support for BibTex would be very useful. The plugin should use locally stored citations, then display popup with type-ahead to allow the user to enter the citation into the document. A content script should also be created so that these citations are rendered correctly in the note viewer.

+

Expected Outcome: A plugin to enter BibTex citations

+

Difficulty Level: Medium

+

Skills Required: JavaScript, understanding of BibTex format

+

Potential Mentor(s): CalebJohn, roman_r_m, laurent22

+

4. Real-time collaboration on a note🔗

+

Create a web application that allows two or more users to collaborate in real time on the same note. Use the Joplin Server API to save and load the note.

+

Expected Outcome: A web application that allows users to collaborate on a note

+

Difficulty Level: High

+

Skills Required: JavaScript, Text editor, Web development

+

Potential Mentor(s): PackElend, roman_r_m

+

5. Paste special🔗

+

A plugin that will allow pasting special text into Joplin and have it converted to Markdown. For example, paste an Excel or CSV table, and have it converted to a Markdown table. Paste some HTML or PDF text and again have it converted to formatted Markdown. This could be one plugin, or a collection of plugins, one for each "paste special" operation.

+

Expected Outcome: One or more plugins that allow pasting special text.

+

Difficulty Level: Normal

+

Skills Required: JavaScript, Markdown, HTML, and knowledge of various text file formats (PDF, RTF, HTML, etc.)

+

Potential Mentor(s): CalebJohn, tessus, roman_r_m

+

6. Plugin system on mobile🔗

+

The plugin system is currently available on desktop and CLI. We believe it could work on mobile too although some work will have to be done to make the plugin API compatible, as well as add a mechanism to load plugins.

+

Expected Outcome: Allow loading and running plugins on mobile

+

Difficulty Level: High

+

Skills Required: JavaScript, React Native

+

Potential Mentor(s): PackElend, roman_r_m, laurent22

+

7. Conflict resolution editor plugin🔗

+

When a note is modified on two different devices, a "conflict note" is generated. It would be useful to create a plugin that allows taking this "conflict note" and the current version of the note, and compare them using a colored diff editor. It could be a built-in editor, or perhaps the plugin could leverage existing diff editors and feed the note versions to it.

+

Expected Outcome: Allow resolving note conflicts using a merge editor

+

Difficulty Level: High

+

Skills Required: JavaScript, Markdown, Understanding of diff and merging conflicts

+

Potential Mentor(s): tessus, PackElend, CalebJohn

+

8. Kanban plugin🔗

+

Use Joplin built-in types - notes, to-dos and tags to implement Kanban for Tasks.

+

Expected Outcome: A Kanban plugin to allow organising tasks

+

Difficulty Level: High

+

Skills Required: JavaScript

+

Potential Mentor(s): CalebJohn, laurent22

+

More info🔗

+ + + + + +
+ + + + diff --git a/docs/gsoc2021/index/index.html b/docs/gsoc2021/index/index.html new file mode 100644 index 0000000000..f267ce3a69 --- /dev/null +++ b/docs/gsoc2021/index/index.html @@ -0,0 +1,563 @@ + + + + + + + Google Summer of Code 2021 | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

Google Summer of Code 2021🔗

+

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 second year Summer of Code program with Joplin. This year the main themes will be:

+
    +
  • Plugin development - implementing new features using Joplin's plugin system.
  • +
  • External desktop applications - build external Joplin applications by retrieving, creating or modifying notes via the Data API.
  • +
  • External server applications - leverage the Joplin Server API to provide online features to Joplin users.
  • +
+

Mentors, administrators and students: read Summer of Code occasionally. Also read the Summer of Code FAQ.

+

Please read this page carefully as most likely it will have all the answers to the questions you might have, such as how to build the app, how to contribute and what are the rules for submitting a pull request.

+

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.

+

How to contribute🔗

+

We suggest you read carefully these important documents and bookmark the links as you will need to refer to them throughout GSoC:

+ +

Programming Language🔗

+
    +
  • Any new application or plugin should be done using TypeScript.
  • +
  • For web publishing, please use WebPack.
  • +
  • For UI, we use React/Redux. Make sure you use React Hooks when creating new components.
  • +
  • For styling, we use styled-components
  • +
+

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

+

The desktop GUI, as listed on the Joplin's website is done using Electron and React.

+

The mobile app is done using React Native.

+

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

+

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. You should plan to communicate with your team several times per week, and formally report progress and plans weekly. You are free to choose the format, it can be a sophisticated online document or simple continuous blog on GitHub.

+

Students who neglect active communication will be failed!

+

How to create your first pull request🔗

+

Before you can be accepted as a student we expect you to write some code and link that work on your proposal. As a first pull request, we suggest one of the following:

+
    +
  • +

    Fix a high priority or medium priority bug. This is something we highly value and is a good way to get a deep understanding of certain parts of the codebase.

    +
  • +
  • +

    Implement a small plugin or external application, to get yourself familiar with the Joplin API.

    +
  • +
  • +

    Alternatively you may browse the GitHub Issues to find something that can be worked on. Note that this is a difficult way to get a pull request in, so make sure the issue you choose has a very clear technical spec. If we need to discuss how it should work or what it should do in the pull request, it means there was no consensus for this feature, and we are likely to close the pull request.

    +
  • +
  • +

    Please do not submit a pull request just to fix some typo.

    +
  • +
+

Before submitting a pull request, please make sure you read the pull request guidelines for GSoC 2021.

+

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 within 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 a 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/gsoc2021/ideas/

+ + + + +
+ + + + diff --git a/docs/gsoc2021/pull_request_guidelines/index.html b/docs/gsoc2021/pull_request_guidelines/index.html new file mode 100644 index 0000000000..fbfab5ac61 --- /dev/null +++ b/docs/gsoc2021/pull_request_guidelines/index.html @@ -0,0 +1,471 @@ + + + + + + + Pull request guidelines | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

Pull request guidelines🔗

+

Due to our limited resources and in order to give everyone a chance to submit a pull request, we have put restrictions in place this year. If you want to submit a pull request, please take into account the following rules:

+
    +
  1. +

    Pull requests must be based on an issue that existed before GSoC was started, or based on an issue created by a moderator.

    +
  2. +
  3. +

    Each contributor may only create one pull request at a time. Once your pull request has been merged, you can post a second one. We have this rule in place due to our limited resources - if everyone was allowed to post multiple pull requests we will not be able to review them properly. It is also better for you because you only need to care about one PR - so spend time making sure it is as good as it can be - make sure it works well, has test units, documentation and screenshots (if relevant).

    +
  4. +
  5. +

    If the pull request has serious issues, or would require a significant rewrite to be acceptable, we might closed it and you will not be allowed to open a new one. So please be careful when posting a PR.

    +
  6. +
  7. +

    If you are borrowing code, please disclose it. It is fine and sometimes even recommended to borrow code, but we need to know about it to assess your work. If we find out that your pull request contains a lot of code copied from elsewhere, we will close the pull request.

    +
  8. +
  9. +

    All pull request must have test units. If for some reason it is not possible to add tests, please let us know and explain why. In that case, you'll need to tell us what steps you followed to manually test your changes.

    +
  10. +
  11. +

    No Work In Progress. ONLY completed and working pull requests, and with test units, will be accepted. A WIP would fall under rule 3 and be closed immediately.

    +
  12. +
  13. +

    Please do not @mention contributors and mentor and do not ask for pull request reviews. Sometimes it takes time before we can review your pull request or answer your questions but we'll get to it sooner or later. @mentioning someone just adds to the pile of notifications we get and it won't make us look at your issue faster.

    +
  14. +
  15. +

    Do not force push. If you make changes to your pull request, please simply add a new commit as that makes it easy for us to review your new changes. If you force push, we'll have to review everything from the beginning.

    +
  16. +
+

These rules we hope are fair to everyone, to contributors and maintainers, however if something is unclear or you have any question about them, please let us know!

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

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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/markdown/index.html b/docs/markdown/index.html new file mode 100644 index 0000000000..ba71434298 --- /dev/null +++ b/docs/markdown/index.html @@ -0,0 +1,768 @@ + + + + + + + Markdown Guide | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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
LinkifySee linkify markdown-it demoAuto-detects URLs and convert them to clickable linksyes
Katex$$math expr$$ or $math$See aboveyesView
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 descriptionyesView
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-headingsyesView
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
+ + + + +
+ + + + diff --git a/docs/mobile/index.html b/docs/mobile/index.html new file mode 100644 index 0000000000..35b9c175cf --- /dev/null +++ b/docs/mobile/index.html @@ -0,0 +1,444 @@ + + + + + + + Mobile app | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..c588767bcd --- /dev/null +++ b/docs/nextcloud_app/index.html @@ -0,0 +1,483 @@ + + + + + + + Joplin Web API for Nextcloud | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

Joplin Web API for Nextcloud🔗

+
+

IMPORTANT: THIS APPLICATION IS DEPRECATED AND WILL NO LONGER BE SUPPORTED FROM JOPLIN 1.6.x

+

It is deprecated in favour of Joplin Server, so if you are relying on it please do not upgrade to Joplin 1.6.x till you are ready to migrate to Joplin Server or some other alternative.

+
+

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 renderer to separate package and re-use it to render notes in the Nextcloud app
  • +
  • [ ] Allow editing note in browser
  • +
+ + + + +
+ + + + diff --git a/docs/note_history/index.html b/docs/note_history/index.html new file mode 100644 index 0000000000..a3688ce2b6 --- /dev/null +++ b/docs/note_history/index.html @@ -0,0 +1,458 @@ + + + + + + + Note History | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

Note History🔗

+

Joplin has support for note history. The applications (desktop, mobile and CLI) now preserve previous versions of the notes, so you can inspect or restore them later on as needed.

+

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

+ + + + +
+ + + + diff --git a/docs/plugins/index.html b/docs/plugins/index.html new file mode 100644 index 0000000000..f20872d024 --- /dev/null +++ b/docs/plugins/index.html @@ -0,0 +1,456 @@ + + + + + + + Plugins | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

Plugins🔗

+

The desktop app has the ability to extend beyond its standard functionality by the way of plugins. These plugins adhere to the Joplin plugin API and can be installed & configured within the application via the Plugins page of the Settings menu (Windows/Linux: Tools > Options > Plugins; macOS: Joplin > Preferences). This menu allows the manual installation of the plugin using the single 'Joplin Plugin Archive' (*.jpl) file. Once the application is reloaded the plugins will appear within the plugins menu where they can be toggled on/off or removed entirely.

+

Plugin Repository🔗

+

Plugins are currently maintained by the community in the Joplin Discourse 'plugins' category.

+

Installing a plugin🔗

+

To install a plugin press the Install Plugin button within the Plugins page of the Configuration screen and select the *.jpl file. Alternatively you can copy the *.jpl to your profile's plugins directory directory ~/.config/joplin-desktop/plugins (This path might be different on your device - check at the top of the Options page in the Configuration screen). The plugin will be automatically loaded and executed when you restart the application. You may need to check Joplin is not minimising to the system tray/notification area rather than fully closing.

+

Managing Plugins🔗

+

Within the Joplin Plugins page you have the option to turn individual plugins on or off using the toggle control. After changing the state of a plugin Joplin must be restarted, you may need to check Joplin is not minimising to the system tray/notification area rather than fully closing.

+

As the plugins integrate into the application itself, each plugin may have its own configuration options within Joplin and may be executed in a number of different ways. Ensure that you read the author's documentation fully to understand how each plugin is designed to be configured and used.

+

Uninstalling plugins🔗

+

Within the Joplin Plugins page you can hit the 'Delete' button on a plugin and it will be removed from the list. Joplin must be restarted for this to complete. You may need to check Joplin is not minimising to the system tray/notification area rather than fully closing.

+

Alternatively you can simply remove *.jpl from the plugin directory (see Installing a plugin section). The change will be reflected on application restart.

+

Development🔗

+

There is documentation of the plugin API along with documentation on plugin development. Check the Joplin API Overview page for these items.

+ + + + +
+ + + + diff --git a/docs/prereleases/index.html b/docs/prereleases/index.html new file mode 100644 index 0000000000..1e341bdd12 --- /dev/null +++ b/docs/prereleases/index.html @@ -0,0 +1,447 @@ + + + + + + + Getting pre-releases | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..9f18916638 --- /dev/null +++ b/docs/privacy/index.html @@ -0,0 +1,446 @@ + + + + + + + Joplin Privacy Policy | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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/rich_text_editor/index.html b/docs/rich_text_editor/index.html new file mode 100644 index 0000000000..108b82c1d0 --- /dev/null +++ b/docs/rich_text_editor/index.html @@ -0,0 +1,468 @@ + + + + + + + About the Rich Text editor | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

About the Rich Text editor🔗

+

TLDR: Avoid using Markdown plugins if you primarily intend to use the Rich Text editor, and be aware of the editor's limitations.

+

At its core, Joplin stores notes in Markdown format. Markdown is a simple way to format text that looks great on any device and, while it's formatted text, it still looks perfectly readable in a plain text editor.

+

In some cases however, the extra markup format that appears in notes can be seen as a drawback. Bold text will look **like this** for example, and tables might not be particularly readable. For that reason, Joplin also features a Rich Text editor, which allows you to edit notes with a WYSIWYG editing experience. Bold text will "look like this" and tables will be more readable, among others.

+

However there is a catch: in Joplin, notes, even when edited with this Rich Text editor, are still Markdown under the hood. This is generally a good thing, because it means you can switch at any time between Markdown and Rich Text editor, and the note is still readable. It is also good if you sync with the mobile application, which doesn't have a rich text editor. The catch is that since Markdown is used under the hood, it means the rich text editor has a number of limitations it inherits from that format:

+
    +
  • +

    For a start, most Markdown plugins will not be compatible. If you open a Markdown note that makes use of such plugin in the Rich Text editor, it is likely you will lose the plugin special formatting. The only supported plugins are the "fenced" plugins - those that wrap a section of text in triple backticks (for example, KaTeX, Mermaid, etc. are working). You can see on the Markdown config screen which plugins that are compatible or not.

    +
  • +
  • +

    It is not possible to have multiple new lines in a row. Because in Markdown, multiple new lines would be collapsed into one when rendered.

    +
  • +
  • +

    Tables must have a header, because this is a requirement in Markdown. When you create a table, it will let you create it without a header, but under the hood it will add an empty one. And next time you open the note, this empty header will be present.

    +
  • +
  • +

    All items in a list must be of the same type, so for example all checkboxes, or all bullet points. If you require two different types, you should create two different lists separated by a horizontal rule or similar.

    +
  • +
  • +

    Special keyboard modes "vim" and "emacs" are not supported.

    +
  • +
  • +

    If a note is of 'Markup - Markdown' and contains HTML formatting, this may be lost when editing in the Rich Text editor as it cannot be converted to Markdown. Notes of 'Markup - HTML' are not affected by edits in the Rich Text editor as this conversion does not take place.

    +
  • +
+

Those are the known limitations but if you notice any other issue not listed here, please let us know in the forum.

+ + + + +
+ + + + diff --git a/docs/spec/e2ee/index.html b/docs/spec/e2ee/index.html new file mode 100644 index 0000000000..4b14efa859 --- /dev/null +++ b/docs/spec/e2ee/index.html @@ -0,0 +1,538 @@ + + + + + + + Encryption | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..0c799ab87c --- /dev/null +++ b/docs/spec/history/index.html @@ -0,0 +1,470 @@ + + + + + + + Note history | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..4c09614e47 --- /dev/null +++ b/docs/spec/plugins/index.html @@ -0,0 +1,508 @@ + + + + + + + Plugin system architecture | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..9a838b4e74 --- /dev/null +++ b/docs/spec/search_sorting/index.html @@ -0,0 +1,465 @@ + + + + + + + Search Engine | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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/server_delta_sync/index.html b/docs/spec/server_delta_sync/index.html new file mode 100644 index 0000000000..0b37c67739 --- /dev/null +++ b/docs/spec/server_delta_sync/index.html @@ -0,0 +1,519 @@ + + + + + + + Joplin Server delta sync | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

Joplin Server delta sync🔗

+

This documentation is meant to provide a high level overview of delta sync API. Exact technical details might change over time and would be documented separately in an API doc.

+

Delta sync provides an API end point that gives a list of the latest change events since a particular point. At a high level, it works like so:

+
    +
  • +

    User calls /api/files/delta and get a list of the latest changes on the sync target. They also get a cursor object that can be used to check for the latest changes at a later time. A cursor essentially represents a point in time.

    +
  • +
  • +

    Later on, they call /api/file/delta?cursor=CURSOR, with the cursor they previously got, and they will get the latest events since that cursor. They will also get a new cursor, which they would use again to get the following events, and so on.

    +
  • +
+

The events are tied to a particular parent ID - in other words it's only possible to list the changes associated with a particular directory (non-recursive). For now, this is sufficient for the purpose of Joplin synchronisation, but later on it might be possible to get the changes in a recursive way.

+

What is a change event🔗

+

An event can be "create", "update" or "detete" and is associated with a given file. The client uses this info to apply the change locally - creating, updating or deleting the file as needed.

+

Attached to the event, is also a copy of the file metadata, so the client doesn't need to a do a second request to fetch it.

+

Internally, the event also stores the file name and parent ID. This is used when an item is deleted since in that case the item ID only would not be sufficient to know where the item was initally stored.

+

Event compression🔗

+

To reduce the data being transferred, the API compresses the events by removing redundant ones. For example, multiple updates are compressed into one, since the client only need to know that the item has been updated at least once. The following rules are currently applied to compress the events:

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Event sequenceResultDescription
update - updateupdateIf an item is updated twice or more, we only send one update event back
create - updatecreateIf an item has been created then modified, we only send one create event, with the latest version of the file
create - deleteNOOPIf an item has been created, then deleted, we don't send anything back. For the client, this file has never existed.
update - deletedeleteIf an item is updated multiple times, then deleted, we only send a "delete" event back.
+

Compression works at a page-level so depending on how many items are requested via the limit parameters, different compression will apply.

+

Due to this compression, the limit query parameter is only advisory. There's no guarantee that exactly limit items will be returned as some items might have been removed after compression. There's however a guarantee that no more than limit items will be returned.

+

Delete event limitation🔗

+

There's currently a known limitation regarding delete events. When looking at a particular event page, the server might find that a "create" or "update" event is associated with a non-existing file, which would have been deleted. In that case, the server will send back a "delete" event. When looking at following pages, the server will eventually process the actual "delete" event for that item - and send again a "delete" event for it.

+

This is a known issue and to solve it would require looking ahead in event pages, which would slow down the process. It means it's expected that a client might receive a "delete" event for a file, even though it has no such file or has already deleted it. In that case, the processing for that "delete" event should be a noop, not an error.

+

ResyncRequired error🔗

+

In some cases, in particular when a delta cursor has expired or is invalid, the server might throw an error with a "resyncRequired" error code. In that case, the client should discard their cursor and sync the complete data again from the beginning.

+

This error should be rare - currently it would only happen if the cursor is invalid. Later on, it will also happen when old events have been deleted after x months. So a client that has not synced in a long time might see this error. The error code could also be used to solve server-side errors in some rare cases.

+

When syncing from the start, there will be many "create" events for files that are already there locally. In that case, they should just be skipped.

+

Regarding the deletion of old change events🔗

+

Keeping all change events permanently would represent a lot of data, however it might be necessary. Without it, it won't be possible for a client to know what file has been deleted and thus a client that has not synced for a long time will keep its files permanently.

+

So most likely we'll always keep the change events. However, we could compress the old ones to just "create" and "delete" events. All "update" events are not needed. And for a file that has been deleted, we don't need to keep the "create" event.

+

The client would then follow this logic:

+
    +
  • For "create" events: +
      +
    • If the file is present locally, update it with the version from the server.
    • +
    • If the file is not present, create it using the version from the server.
    • +
    +
  • +
  • For "delete" events: +
      +
    • If the file is present, delete it.
    • +
    • If it is not, skip the event (not an error).
    • +
    +
  • +
+

It might seem we could derive the "create" events simply by looking at the files in the directory - all files that are there would implicitely have a "create" event. The issue however is that it's not possible to reliably iterate over the files in a folder, because they might change in the meantime. The change events on the other hand provide an ID that can be used reliably to iterate over changes, and to resume at any time.

+ + + + +
+ + + + diff --git a/docs/spec/server_file_url_format/index.html b/docs/spec/server_file_url_format/index.html new file mode 100644 index 0000000000..1807f055c8 --- /dev/null +++ b/docs/spec/server_file_url_format/index.html @@ -0,0 +1,465 @@ + + + + + + + Structure of file URLs in Joplin Server | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

Structure of file URLs in Joplin Server🔗

+

To identify a file, Joplin Server supports two types of URLs:

+

Access by ID🔗

+

Format: BASE_URL/files/FILE_ID

+

This is the simplest way and it matches how other API items are accessed by ID.

+

For example: https://example.com/api/files/5c7e0f3f54434ba

+

Access by full path🔗

+

Format: BASE_URL/files/SPECIAL_DIR:/path/to/file/:

+

This is to access a file by its full path. In this case, the path must be prefixed by SPECIAL_DIR, which can only be root at the moment. Then to differentiate the path from URL segments, it needs to be wrapped in colons :.

+

For example, to access the metadata of file /my/file.txt

+

https://example.com/api/files/root:/my/file.txt:

+

To access its content:

+

https://example.com/api/files/root:/my/file.txt:/content

+

To access the root only (for example to list its content):

+

https://example.com/api/files/root:/:

+

Which can also be written as:

+

https://example.com/api/files/root

+

Difference between API and web app end points🔗

+

The API and web app end points are consistent in the way they access files, except that in one case the URLs will start with /api and the other with just /. For example, this would access the same file:

+
    +
  • API: https://example.com/api/files/root:/my/file.txt:
  • +
  • Web: https://example.com/files/root:/my/file.txt:
  • +
+ + + + +
+ + + + diff --git a/docs/spec/server_sharing/index.html b/docs/spec/server_sharing/index.html new file mode 100644 index 0000000000..0d0d960942 --- /dev/null +++ b/docs/spec/server_sharing/index.html @@ -0,0 +1,466 @@ + + + + + + + Joplin Server sharing feature | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

Joplin Server sharing feature🔗

+

Sharing a file via a public URL🔗

+

Joplin Server is essentially a file hosting service and it allows sharing files via public URLs. To do so, an API call is made to /api/shares with the ID or path of the file that needs to be shared. This call returns a SHAREID that is then used to access the file via URL. When viewing the file, it will display it according to its mime type. Thus by default a Markdown file will be displayed as plain text.

+

Sharing a note via a public URL🔗

+

It is built on top of the file sharing feature. The file corresponding to the note is shared via the above API. Then a separate application, specific to Joplin, read and parse the Markdown file, and display it as note.

+

That application works as a viewer - instead of displaying the Markdown file as plain text (by default), it renders it and displays it as HTML.

+

The rendering engine is the same as the main applications, which allows us to use the same plugins and settings.

+

Attached resources🔗

+

Any resource attached to the note is also shared - so for example images will be displayed, and it will be possible to open any attached PDF. This

+

Linked note🔗

+

Any linked note will not be shared, due to the following reasons:

+
    +
  • +

    Privacy issue - you don't want to accidentally share a note just because it was linked to another note.

    +
  • +
  • +

    Even if the linked note has been shared separately, we still don't give access to it. We don't know who that link has been shared with - it could be a different recipient.

    +
  • +
+

Multiple share links for a given note🔗

+

It should be possible to have multiple share links for a given note. For example: I share a note with one person, then the same note with a different person. I revoke the share for one person, but I sill want the other person to access the note.

+

So when a share link is created for a note, the API always return a new link.

+

Sharing a note with a user🔗

+

TBD

+ + + + +
+ + + + diff --git a/docs/spec/sync_lock/index.html b/docs/spec/sync_lock/index.html new file mode 100644 index 0000000000..468633400e --- /dev/null +++ b/docs/spec/sync_lock/index.html @@ -0,0 +1,502 @@ + + + + + + + Lock types | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..f5181fd405 --- /dev/null +++ b/docs/stats/index.html @@ -0,0 +1,2084 @@ + + + + + + + Joplin statistics | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

Joplin statistics🔗

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameValue
Total Windows downloads1,425,567
Total macOs downloads554,909
Total Linux downloads463,554
Windows %58%
macOS %23%
Linux %19%
+

(p) Indicates pre-releases

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VersionDateWindowsmacOSLinuxTotal
v2.0.2 (p)2021-05-21T18:07:48Z5941794481,221
v2.0.1 (p)2021-05-15T13:22:58Z7702439841,997
v1.8.52021-05-10T11:58:14Z11,8706,6705,75324,293
v1.8.4 (p)2021-05-09T18:05:05Z6231204331,176
v1.8.3 (p)2021-05-04T10:38:16Z1,0492909122,251
v1.8.2 (p)2021-04-25T10:50:51Z1,4454211,2613,127
v1.8.1 (p)2021-03-29T10:46:41Z3,0038052,4186,226
v1.7.112021-02-03T12:50:01Z113,79442,52664,040220,360
v1.7.102021-01-30T13:25:29Z13,8254,8314,42523,081
v1.7.9 (p)2021-01-28T09:50:21Z4801234831,086
v1.7.6 (p)2021-01-27T10:36:05Z28382277642
v1.7.5 (p)2021-01-26T09:53:05Z3641954441,003
v1.7.4 (p)2021-01-22T17:58:38Z6731956131,481
v1.6.82021-01-20T18:11:34Z18,0647,6627,57833,304
v1.7.3 (p)2021-01-20T11:23:50Z33468436838
v1.6.72021-01-11T23:20:33Z10,3754,6174,53119,523
v1.6.62021-01-09T16:15:31Z12,3593,4054,77620,540
v1.6.5 (p)2021-01-09T01:24:32Z55357300910
v1.6.4 (p)2021-01-07T19:11:32Z38172197650
v1.6.2 (p)2021-01-04T22:34:55Z6642215771,462
v1.5.142020-12-30T01:48:46Z10,8475,1915,51221,550
v1.6.1 (p)2020-12-29T19:37:45Z16232156350
v1.5.132020-12-29T18:29:15Z6092121901,011
v1.5.122020-12-28T15:14:08Z2,3741,7629115,047
v1.5.112020-12-27T19:54:07Z13,9994,6054,25322,857
v1.5.10 (p)2020-12-26T12:35:36Z288102255645
v1.5.9 (p)2020-12-23T18:01:08Z3213673991,087
v1.5.8 (p)2020-12-20T09:45:19Z5591586311,348
v1.5.7 (p)2020-12-10T12:58:33Z8802489822,110
v1.5.4 (p)2020-12-05T12:07:49Z6861616231,470
v1.4.192020-12-01T11:11:16Z25,49213,35011,61050,452
v1.4.182020-11-28T12:21:41Z11,0823,8703,07618,028
v1.4.162020-11-27T19:40:16Z1,4528225842,858
v1.4.152020-11-27T13:25:43Z8784822621,622
v1.4.122020-11-23T18:58:07Z2,9831,3161,2875,586
v1.4.11 (p)2020-11-19T23:06:51Z9461475741,667
v1.4.10 (p)2020-11-14T09:53:15Z6141866761,476
v1.4.9 (p)2020-11-11T14:23:17Z4971333931,023
v1.4.7 (p)2020-11-07T18:23:29Z5111665061,183
v1.3.182020-11-06T12:07:02Z30,60911,31610,49552,420
v1.3.17 (p)2020-11-06T11:35:15Z44161575
v1.4.6 (p)2020-11-05T22:44:12Z3398645470
v1.3.152020-11-04T12:22:50Z2,2211,2908364,347
v1.3.11 (p)2020-10-31T13:22:20Z6931774711,341
v1.3.10 (p)2020-10-29T13:27:14Z368107307782
v1.3.9 (p)2020-10-23T16:04:26Z8302336241,687
v1.3.8 (p)2020-10-21T18:46:29Z510104321935
v1.3.7 (p)2020-10-20T11:35:55Z29176334701
v1.3.5 (p)2020-10-17T14:26:35Z464126397987
v1.3.3 (p)2020-10-17T10:56:57Z1133625174
v1.3.2 (p)2020-10-11T20:39:49Z6591735561,388
v1.3.1 (p)2020-10-11T15:10:18Z774535157
v1.2.62020-10-09T13:56:59Z44,16417,71314,02475,901
v1.2.4 (p)2020-09-30T07:34:29Z8082407911,839
v1.2.3 (p)2020-09-29T15:13:02Z2126172345
v1.2.2 (p)2020-09-22T20:31:55Z7771996311,607
v1.1.42020-09-21T11:20:09Z27,57213,4897,74048,801
v1.1.3 (p)2020-09-17T10:30:37Z5571474571,161
v1.1.2 (p)2020-09-15T12:58:38Z372112244728
v1.1.1 (p)2020-09-11T23:32:47Z5191953421,056
v1.0.2452020-09-09T12:56:10Z21,1489,9995,63436,781
v1.0.2422020-09-04T22:00:34Z12,4396,4183,01521,872
v1.0.2412020-09-04T18:06:00Z23,6285,7484,99434,370
v1.0.239 (p)2020-09-01T21:56:36Z5992264001,225
v1.0.237 (p)2020-08-29T15:38:04Z5889233381,849
v1.0.236 (p)2020-08-28T09:16:54Z315110104529
v1.0.235 (p)2020-08-18T22:08:01Z1,6714899203,080
v1.0.234 (p)2020-08-17T23:13:02Z536125100761
v1.0.2332020-08-01T14:51:15Z43,09818,18812,35873,644
v1.0.232 (p)2020-07-28T22:34:40Z6522221781,052
v1.0.2272020-07-07T20:44:54Z40,38415,2739,62765,284
v1.0.226 (p)2020-07-04T10:21:26Z4,9052,2526887,845
v1.0.2242020-06-20T22:26:08Z24,77411,0056,00641,785
v1.0.223 (p)2020-06-20T11:51:27Z18611278376
v1.0.221 (p)2020-06-20T01:44:20Z8562052101,271
v1.0.2202020-06-13T18:26:22Z31,7129,9166,41148,039
v1.0.2182020-06-07T10:43:34Z14,5356,9682,95424,457
v1.0.217 (p)2020-06-06T15:17:27Z2269354373
v1.0.2162020-05-24T14:21:01Z37,27714,26810,17761,722
v1.0.214 (p)2020-05-21T17:15:15Z6,5293,46676010,755
v1.0.212 (p)2020-05-21T07:48:39Z2106646322
v1.0.211 (p)2020-05-20T08:59:16Z30013186517
v1.0.209 (p)2020-05-17T18:32:51Z1,3938511472,391
v1.0.207 (p)2020-05-10T16:37:35Z1,1872631,0162,466
v1.0.2012020-04-15T22:55:13Z53,31120,04318,18091,534
v1.0.2002020-04-12T12:17:46Z9,5524,8921,90316,347
v1.0.1992020-04-10T18:41:58Z19,3395,8843,78829,011
v1.0.1972020-03-30T17:21:22Z22,2809,5405,72637,546
v1.0.1952020-03-22T19:56:12Z18,8907,9484,50631,344
v1.0.194 (p)2020-03-14T00:00:32Z1,2851,3755113,171
v1.0.1932020-03-08T08:58:53Z28,64110,9077,39246,940
v1.0.192 (p)2020-03-06T23:27:52Z47212289683
v1.0.190 (p)2020-03-06T01:22:22Z3739085548
v1.0.189 (p)2020-03-04T17:27:15Z3429690528
v1.0.187 (p)2020-03-01T12:31:06Z9192302631,412
v1.0.1792020-01-24T22:42:41Z71,02328,54522,534122,102
v1.0.1782020-01-20T19:06:45Z17,5395,9622,58426,085
v1.0.177 (p)2019-12-30T14:40:40Z1,9434386783,059
v1.0.176 (p)2019-12-14T10:36:44Z3,1242,5344676,125
v1.0.1752019-12-08T11:48:47Z72,51916,90516,509105,933
v1.0.1742019-11-12T18:20:58Z30,40111,7228,22150,344
v1.0.1732019-11-11T08:33:35Z5,0722,0777437,892
v1.0.1702019-10-13T22:13:04Z27,4138,7527,67543,840
v1.0.1692019-09-27T18:35:13Z17,0975,9213,75426,772
v1.0.1682019-09-25T21:21:38Z5,3322,2737178,322
v1.0.1672019-09-10T08:48:37Z16,7905,7043,70326,197
v1.0.1662019-09-09T17:35:54Z1,9565602362,752
v1.0.1652019-08-14T21:46:29Z18,8986,9725,46231,332
v1.0.1612019-07-13T18:30:00Z19,2856,3524,13629,773
v1.0.1602019-06-15T00:21:40Z30,5317,7458,10146,377
v1.0.1592019-06-08T00:00:19Z5,1942,1781,1128,484
v1.0.1582019-05-27T19:01:18Z9,8153,5381,93615,289
v1.0.1572019-05-26T17:55:53Z2,1798442913,314
v1.0.153 (p)2019-05-15T06:27:29Z8501021061,058
v1.0.1522019-05-13T09:08:07Z13,8734,4274,06122,361
v1.0.1512019-05-12T15:14:32Z1,9545339573,444
v1.0.1502019-05-12T11:27:48Z42313668627
v1.0.148 (p)2019-05-08T19:12:24Z1335896287
v1.0.1452019-05-03T09:16:53Z7,0082,8611,43711,306
v1.0.1432019-04-22T10:51:38Z11,9183,5502,77918,247
v1.0.1422019-04-02T16:44:51Z14,6634,5654,72723,955
v1.0.1402019-03-10T20:59:58Z13,6294,1713,22321,023
v1.0.139 (p)2019-03-09T10:06:48Z1236346232
v1.0.138 (p)2019-03-03T17:23:00Z1508684320
v1.0.137 (p)2019-03-03T01:12:51Z5915883732
v1.0.1352019-02-27T23:36:57Z12,5143,9584,07720,549
v1.0.1342019-02-27T10:21:44Z1,4685682192,255
v1.0.1322019-02-26T23:02:05Z1,088451951,634
v1.0.1272019-02-14T23:12:48Z9,7853,1712,92915,885
v1.0.126 (p)2019-02-09T19:46:16Z932731171,122
v1.0.1252019-01-26T18:14:33Z10,2513,5591,70315,513
v1.0.1202019-01-10T21:42:53Z15,6055,2016,51727,323
v1.0.1192018-12-18T12:40:22Z8,9063,2622,01414,182
v1.0.1182019-01-11T08:34:13Z718248891,055
v1.0.1172018-11-24T12:05:24Z16,2594,8966,38127,536
v1.0.1162018-11-20T19:09:24Z3,4741,1217145,309
v1.0.1152018-11-16T16:52:02Z3,6581,3037995,760
v1.0.1142018-10-24T20:14:10Z11,3973,5003,83018,727
v1.0.1112018-09-30T20:15:09Z12,0413,3073,66819,016
v1.0.1102018-09-29T12:29:21Z9624091181,489
v1.0.1092018-09-27T18:01:41Z2,1027063283,136
v1.0.108 (p)2018-09-29T18:49:29Z31221467
v1.0.1072018-09-16T19:51:07Z7,1512,1371,70810,996
v1.0.1062018-09-08T15:23:40Z4,5591,4583186,335
v1.0.1052018-09-05T11:29:36Z4,6571,5901,4557,702
v1.0.1042018-06-28T20:25:36Z15,0554,7027,34527,102
v1.0.1032018-06-21T19:38:13Z2,0548886803,622
v1.0.1012018-06-17T18:35:11Z1,3116084092,328
v1.0.1002018-06-14T17:41:43Z8824352461,563
v1.0.992018-06-10T13:18:23Z1,2565983802,234
v1.0.972018-06-09T19:23:34Z31515961535
v1.0.962018-05-26T16:36:39Z2,7211,2251,7005,646
v1.0.952018-05-25T13:04:30Z420220120760
v1.0.942018-05-21T20:52:59Z1,1345863972,117
v1.0.932018-05-14T11:36:01Z1,7911,1577593,707
v1.0.912018-05-10T14:48:04Z8285523071,687
v1.0.892018-05-09T13:05:05Z495232111838
v1.0.852018-05-01T21:08:24Z1,6549516333,238
v1.0.832018-04-04T19:43:58Z4,8862,5322,65810,076
v1.0.822018-03-31T19:16:31Z6944061221,222
v1.0.812018-03-28T08:13:58Z1,0015977832,381
v1.0.792018-03-23T18:00:11Z9325393811,852
v1.0.782018-03-17T15:27:18Z1,3138708723,055
v1.0.772018-03-16T15:12:35Z17910546330
v1.0.722018-03-14T09:44:35Z40725857722
v1.0.702018-02-28T20:04:30Z1,8551,0521,2554,162
v1.0.672018-02-19T22:51:08Z1,81660502,421
v1.0.662018-02-18T23:09:09Z32913686551
v1.0.652018-02-17T20:02:25Z195129134458
v1.0.642018-02-16T00:58:20Z1,0865451,1242,755
v1.0.632018-02-14T19:40:36Z30216194557
v1.0.622018-02-12T20:19:58Z5613003691,230
v0.10.612018-02-08T18:27:39Z9736339642,570
v0.10.602018-02-06T13:09:56Z7235225531,798
v0.10.542018-01-31T20:21:30Z1,8211,4603243,605
v0.10.522018-01-31T19:25:18Z4863416698
v0.10.512018-01-28T18:47:02Z1,3291,6003283,257
v0.10.482018-01-23T11:19:51Z1,9661,752323,750
v0.10.472018-01-16T17:27:17Z1,2311,270682,569
v0.10.432018-01-08T10:12:10Z3,4422,3571,2097,008
v0.10.412018-01-05T20:38:12Z1,0381,5492432,830
v0.10.402018-01-02T23:16:57Z1,5961,7903393,725
v0.10.392017-12-11T21:19:44Z5,8244,2943,19513,313
v0.10.382017-12-08T10:12:06Z1,0501,2313072,588
v0.10.372017-12-07T19:38:05Z266845821,193
v0.10.362017-12-05T09:34:40Z1,0161,3564392,811
v0.10.352017-12-02T15:56:08Z1,5781,5487453,871
v0.10.342017-12-02T14:50:28Z9167060821
v0.10.332017-12-02T13:20:39Z6265922743
v0.10.312017-12-01T09:56:44Z8931,4514072,751
v0.10.302017-11-30T20:28:16Z7241,3694202,513
v0.10.282017-11-30T01:07:46Z1,3421,7018743,917
v0.10.262017-11-29T16:02:17Z1887012611,150
v0.10.252017-11-24T14:27:49Z1506966,4617,307
v0.10.232017-11-21T19:38:41Z13464728809
v0.10.222017-11-20T21:45:57Z8664519750
v0.10.212017-11-18T00:53:15Z5363813704
v0.10.202017-11-17T17:18:25Z3464922705
v0.10.192017-11-20T18:59:48Z1964513677
+ + + + +
+ + + + diff --git a/docs/terminal/index.html b/docs/terminal/index.html new file mode 100644 index 0000000000..dedf6ff658 --- /dev/null +++ b/docs/terminal/index.html @@ -0,0 +1,1128 @@ + + + + + + + Joplin | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 12+.

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 Dropbox, is done via lightweight drivers. It is easy to support new services by creating simple drivers that provide a filesystem-like interface, i.e. the ability to read, write, delete and list items. It is also simple to switch from one service to another 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, WebDAV, Dropbox, OneDrive or the local filesystem. To enable synchronisation please follow the instructions below. After that, the application will synchronise in the background whenever it is running, or you can click on "Synchronise" to start a synchronisation manually. Joplin will background sync automatically after any content change is made on the local application.
+If the terminal client has been installed, it is possible to also synchronise outside of the user interface by typing joplin sync from the terminal. This can be used to setup a cron script to synchronise at a regular interval. For example, this would do it every 30 minutes:

+

*/30 * * * * /path/to/joplin sync

+

Nextcloud synchronisation🔗

+

You will need to set the sync.target config variable and all the sync.5.path, sync.5.username and sync.5.password config variables to, respectively the Nextcloud WebDAV URL, your username and your password. This can be done from the command line mode using:

+
:config sync.target 5
+:config sync.5.path https://example.com/nextcloud/remote.php/webdav/Joplin
+:config sync.5.username YOUR_USERNAME
+:config sync.5.password YOUR_PASSWORD
+
+

If synchronisation does not work, please consult the logs in the app profile directory (~/.config/joplin)- it is often due to a misconfigured URL or password. The log should indicate what the exact issue is.

+

WebDAV synchronisation🔗

+

Select the "WebDAV" synchronisation target and follow the same instructions as for Nextcloud above (for the terminal application you will need to select sync target 6 rather than 5).

+

For WebDAV-compatible services that are known to work with Joplin see WebDAV synchronisation.

+

Dropbox synchronisation🔗

+

When syncing with Dropbox, Joplin creates a sub-directory in Dropbox, in /Apps/Joplin and read/write the notes and notebooks from it. The application does not have access to anything outside this directory.

+

To initiate the synchronisation process, type :sync. You will be asked to follow a link to authorise the application.

+

OneDrive synchronisation🔗

+

When syncing with OneDrive, Joplin creates a sub-directory in OneDrive, in /Apps/Joplin and read/write the notes and notebooks from it. The application does not have access to anything outside this directory.

+

To initiate the synchronisation process, type :sync. You will be asked to follow a link to authorise the application (simply input your Microsoft credentials - you do not need to register with OneDrive).

+

URLs🔗

+

When Ctrl+Clicking a URL (or opening with the shortcut 'o' while it is highlighted), most terminals will open that URL in the default browser. However, one issue, especially with long URLs, is that they can end up like this:

+ +

Not only it makes the text hard to read, but the link, being cut in two, will also not be clickable.

+

As a solution Joplin tries to start a mini-server in the background and, if successful, all the links will be converted to a much shorter URL:

+ +

Since this is still an actual URL, the terminal will still make it clickable. And with shorter URLs, the text is more readable and the links unlikely to be cut. Both resources (files that are attached to notes) and external links are handled in this way.

+

Attachments / Resources🔗

+

In Markdown, links to resources are represented as a simple ID to the resource. In order to give access to these resources, they will be, like links, converted to local URLs. Clicking this link will then open a browser, which will handle the file - i.e. display the image, open the PDF file, etc.

+

Shell mode🔗

+

Commands can also be used directly from a shell. To view the list of available commands, type joplin help all. To reference a note, notebook or tag you can either use the ID (type joplin ls -l to view the ID) or by title.

+

For example, this will create a new note "My note" in the notebook "My notebook":

+
$ joplin mkbook "My notebook"
+$ joplin use "My notebook"
+$ joplin mknote "My note"
+
+

To view the newly created note:

+
$ joplin ls -l
+fe889 07/12/2017 17:57 My note
+
+

Give a new title to the note:

+
$ joplin set fe889 title "New title"
+
+

Shortcuts🔗

+

There are two types of shortcuts: those that manipulate the user interface directly, such as TAB to move from one pane to another, and those that are simply shortcuts to actual commands. In a way similar to Vim, these shortcuts are generally a verb followed by an object. For example, typing mn ([m]ake [n]ote), is used to create a new note: it will switch the interface to command line mode and pre-fill it with mknote "" from where the title of the note can be entered. See below for the full list of default shortcuts:

+
:                 enter_command_line_mode
+TAB               focus_next
+SHIFT_TAB         focus_previous
+UP                move_up
+DOWN              move_down
+PAGE_UP           page_up
+PAGE_DOWN         page_down
+ENTER             activate
+DELETE, BACKSPACE delete
+(SPACE)           todo toggle $n
+n                 next_link
+b                 previous_link
+o                 open_link
+tc                toggle_console
+tm                toggle_metadata
+/                 search ""
+mn                mknote ""
+mt                mktodo ""
+mb                mkbook ""
+yn                cp $n ""
+dn                mv $n ""
+
+

Shortcut can be configured by adding a keymap file to the profile directory in ~/.config/joplin/keymap.json. The content of this file is a JSON array with each entry defining a command and the keys associated with it.

+

As an example, this is the default keymap, but read below for a detailed explanation of each property.

+
[
+	{ "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.
+                                   Please see localisation section on
+                                   https://joplinapp.org/#localisation
+                                   for info on translation completion progress
+                                   Type: Enum.
+                                   Possible values: ar (Arabic), eu (Basque),
+                                   bs_BA (Bosnian), bg_BG (Bulgarian),
+                                   ca (Catalan), hr_HR (Croatian),
+                                   cs_CZ (Czech), da_DK (Dansk),
+                                   de_DE (Deutsch), et_EE (Eesti Keel),
+                                   en_GB (English (UK)), en_US (English (US)),
+                                   es_ES (Español), eo (Esperanto),
+                                   fi_FI (Finnish), fr_FR (Français),
+                                   gl_ES (Galician), id_ID (Indonesian),
+                                   it_IT (Italiano), nl_BE (Nederlands),
+                                   nl_NL (Nederlands), nb_NO (Norwegian),
+                                   fa (Persian), pl_PL (Polski),
+                                   pt_PT (Português),
+                                   pt_BR (Português (Brasil)), ro (Română),
+                                   sl_SI (Slovenian), sv (Svenska),
+                                   th_TH (Thai), vi (Tiếng Việt),
+                                   tr_TR (Türkçe), el_GR (Ελληνικά),
+                                   ru_RU (Русский), sr_RS (српски језик),
+                                   zh_CN (中文 (简体)), zh_TW (中文 (繁體)),
+                                   ja_JP (日本語), ko (한국말).
+                                   Default: "en_GB"
+
+    dateFormat                     Date format.
+                                   Type: Enum.
+                                   Possible values: DD/MM/YYYY (30/01/2017),
+                                   DD/MM/YY (30/01/17), MM/DD/YYYY
+                                   (01/30/2017), MM/DD/YY (01/30/17),
+                                   YYYY-MM-DD (2017-01-30), DD.MM.YYYY
+                                   (30.01.2017), YYYY.MM.DD (2017.01.30),
+                                   YYMMDD (170130).
+                                   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-2021 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 new file mode 100644 index 0000000000..767f140b9c --- /dev/null +++ b/docs/welcome/1_welcome_to_joplin/index.html @@ -0,0 +1,490 @@ + + + + + + + Welcome to Joplin! 🗒️ | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 application 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 new file mode 100644 index 0000000000..680442b1f3 --- /dev/null +++ b/docs/welcome/2_importing_and_exporting_notes/index.html @@ -0,0 +1,450 @@ + + + + + + + Importing and exporting notes ↔️ | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..4ee1e587e4 --- /dev/null +++ b/docs/welcome/3_synchronising_your_notes/index.html @@ -0,0 +1,454 @@ + + + + + + + Synchronising your notes 🔄 | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 synchronisation 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 new file mode 100644 index 0000000000..0099d555f9 --- /dev/null +++ b/docs/welcome/4_tips/index.html @@ -0,0 +1,507 @@ + + + + + + + Tips 💡 | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 new file mode 100644 index 0000000000..f97ae7dcbc --- /dev/null +++ b/docs/welcome/5_privacy/index.html @@ -0,0 +1,474 @@ + + + + + + + Privacy | Joplin + + + + + + + + + + + + + +
+ +
+ +

Joplin

+

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

+
+ + + +
+ + +
+

Donate using PayPal Sponsor on GitHub Become a patron Donate using IBAN

+
+

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 6d138745af..d495a80e7e 100644 --- a/readme/stats.md +++ b/readme/stats.md @@ -4,7 +4,7 @@ Name | Value --- | --- Total Windows downloads | 1,425,567 Total macOs downloads | 554,909 -Total Linux downloads | 463,553 +Total Linux downloads | 463,554 Windows % | 58% macOS % | 23% Linux % | 19% @@ -24,7 +24,7 @@ Version | Date | Windows | macOS | Linux | Total [v1.8.3](https://github.com/laurent22/joplin/releases/tag/v1.8.3) (p) | 2021-05-04T10:38:16Z | 1,049 | 290 | 912 | 2,251 [v1.8.2](https://github.com/laurent22/joplin/releases/tag/v1.8.2) (p) | 2021-04-25T10:50:51Z | 1,445 | 421 | 1,261 | 3,127 [v1.8.1](https://github.com/laurent22/joplin/releases/tag/v1.8.1) (p) | 2021-03-29T10:46:41Z | 3,003 | 805 | 2,418 | 6,226 -[v1.7.11](https://github.com/laurent22/joplin/releases/tag/v1.7.11) | 2021-02-03T12:50:01Z | 113,794 | 42,526 | 64,039 | 220,359 +[v1.7.11](https://github.com/laurent22/joplin/releases/tag/v1.7.11) | 2021-02-03T12:50:01Z | 113,794 | 42,526 | 64,040 | 220,360 [v1.7.10](https://github.com/laurent22/joplin/releases/tag/v1.7.10) | 2021-01-30T13:25:29Z | 13,825 | 4,831 | 4,425 | 23,081 [v1.7.9](https://github.com/laurent22/joplin/releases/tag/v1.7.9) (p) | 2021-01-28T09:50:21Z | 480 | 123 | 483 | 1,086 [v1.7.6](https://github.com/laurent22/joplin/releases/tag/v1.7.6) (p) | 2021-01-27T10:36:05Z | 283 | 82 | 277 | 642