Modernising and securing Joplin, one package at a time🔗

Published on 15 Nov 2022

If you watch the Joplin source code repository, you may have noticed a lot of Renovate pull requests lately. This Renovate tool is a way to manage dependencies - it automatically finds what needs to be updated, then upgrade it to the latest version, and create a pull request. If all tests pass, we can then merge this pull request. So far we have merged 267 of these pull requests.

Updating Joplin packages was long due. It is necessary so that we don't fall behind and end up using unsupported or deprecated packages. We also benefit from bug fixes and performance improvements. It is also important in terms of security, since recent package versions usually include various security fixes.

We used to rely on a tool called "npm audit" to do this, however it no longer works on the Joplin codebase, and it was always risky to use it since it would update multiple packages in one command - so if something went wrong it was difficult to find the culprit.

Renovate on the other hand upgrades packages one at a time, and run our test units to ensure everything is still working as expected. It also upgrades multiple instances of the same package across the monorepo, which is convenient to keep our code consistent. It also has a number of options to make our life easier, such as the ability to automatically merge a pull request for patch releases since this is usually safe (when a package is, for example upgraded from 1.0.1 to 1.0.3).

Although Renovate automates the package upgrades it doesn't mean all upgrades are straightforward - our tests won't catch all issues, so the apps might end up being broken or cannot be compiled anymore. So there's manual work involved to get everything working after certain upgrades - for the most part this has been done and the apps appear to be stable so far.

This will however be an important part of pre-release 2.10 (or should it be 3.0?) - we hope that everything works but we may need your support to try this version and report any glitch you may have found. As always pre-release regressions have the highest priority so we aim to fix them as quickly as possible.


Discuss on the forum


Joplin Cloud is now part of the Joplin company🔗

Published on 12 Oct 2022

As some of you may know Joplin Cloud so far has been operating under my own single-person limited company in the UK. This was mostly for convenience since it meant I could get things going quickly without having to setup a special structure for it.

Now that Joplin Cloud is becoming more mature however a proper company, simply called Joplin, has been created. This company will be based in France, and will be used mainly to handle the commercial part of the project, which currently is mostly Joplin Cloud. I'm still heading the company so there won't be any major change to the way the project is managed.

What does it mean for Joplin Cloud?🔗

There will be no significant change - the website ownership simply moves from one company in the UK to one in France. The new company is still owned by myself so I will keep following the same roadmap.

What does it mean for the open source apps?🔗

On the short term, the only visible change will be moving the non-open source assets, such as logo or trademark from the UK company to the French one. So expect a few changes in copyright notices here and there.

In the medium to long term, I would like to hire one or two software developers to help me with the Joplin Cloud development, because we reached a point where managing the whole project is difficult for a single person, so some help is needed. Some of their work might also touch the open source apps since both are quite related - but of course that work will remain open source too.

As a general rule, there will be a permanent commitment to keep the apps open source and to derive value from Joplin Cloud/Server.

Longer term I would like to create a non-profit organisation to handle the open source applications and to make decisions about the project, as well as to decide how to allocate any funding we receive (for example from GSoC).

Looking forward🔗

Those past 6 years of developing Joplin have been an exciting and rewarding experience, thank you to all of you of the friendly and vibrant Joplin community for your contribution toward making Joplin the software it is today, and looking forward to continuing the journey together!


Discuss on the forum


Joplin interview on Website Planet🔗

Published on 6 Sep 2022

Website Planet has recently conducted an interview about Joplin - it may give you some insight on the current status of the project, our priorities, and future plans! More on the article page - Organise Your Thoughts with Open Source Note-Taking App, Joplin


Discuss on the forum


Joplin first meetup on 30 August!🔗

Published on 8 Aug 2022

We are glad to announce the first Joplin Meetup that will take place on 30 August 2022 in London!

This is an opportunity to meet other Joplin users as well as some of the main contributors, to discuss the apps, or to ask questions and exchange tips and tricks on how to use the app, develop plugins or contribute to the application. Everybody, technical or not, is welcome!

We will meet at the Old Thameside Inn next to London Bridge. If the weather allows we will be on the terrace outside, if not inside.

More information on the official Meetup page:

https://www.meetup.com/joplin/events/287611873/


Discuss on the forum


Joplin 2.8 is available!🔗

Published on 6 Jun 2022

As always a lot of changes and new features in this new version available on both desktop and mobile.

Multiple profile support🔗

Perhaps the most visible change in this version is the support for multiple profiles. You can now create as many application profile as you wish, each with their own settings, and easily switch from one to another. The main use case is to support for example a "work" profile and a "personal" profile, to allow you to keep things independent, and each profile can sync with a different sync target.

To create a new profile, open File > Switch profile and select Create new profile, enter the profile name and press OK. The app will automatically switch to this new profile, which you can now configure.

To switch back to the previous profile, again open File > Switch profile and select Default.

Note that profiles all share certain settings, such as language, font size, theme, etc. This is done so that you don't have reconfigure every details when switching profiles. Other settings such as sync configuration is per profile.

The feature is available on desktop only for now, and should be ported to mobile relatively soon.

Save Mermaid graph as PNG/SVG🔗

This convenient feature allows exporting a Mermaid graph as a PNG or SVG image, or allows copying the image as a DataUrl, which can then be pasted in any compatible text editor. Thanks Asrient for implementing this!

Publish a mini-website using Joplin Cloud🔗

Joplin Cloud now supports publishing a note "recursively", which means the notes and all the notes it is linked to. This allows easily publishing a simple website made of multiples and images.

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

And more!🔗

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


Discuss on the forum


Joplin received 6 Contributor Projects for GSoC 2022!🔗

Published on 22 May 2022

We are glad to announce that Google allocated us six projects this year for Google Summer of Code! So this is six contributors who will be working on various parts of the apps, both desktop and mobile, over the summer.

Over the next few weeks, till 13 June, will be the Community Bonding Period during which GSoC contributors get to know mentors, read documentation, and get up to speed to begin working on their projects.

Here's the full list of projects, contributors and mentors.

Project Title Contributor Assigned Mentor(s)
Improve PDF previewer of Joplin asrient Roman, JackGruber
Implement default plugins on desktop application mak2002 CalebJohn, Laurent
Mobile — Easier Editing Henry H Daeraxa, CalebJohn
Improve plugin search and discoverability Retr0ve JackGruber, Stefan
Tablet Layout Project Tolu-Mals Laurent, Daeraxa
Email Plugin Bishoy Magdy Adeeb Stefan, Roman

Discuss on the forum


GSoC "Contributor Proposals" phase is starting now!🔗

Published on 5 Apr 2022

The "Contributor Proposals" phase of GSoC 2022 is starting today! If you would like to be a contributor, now is the time to choose your project idea, write your proposal, and upload it to https://summerofcode.withgoogle.com/

When it's done, please also let us know by posting an update on your forum introduction post.

If you haven't created a pull request yet, it's still time to create one. Doing so will greatly increase your chances of being selected!


Discuss on the forum


Joplin participates in Google Summer of Code 2022!🔗

Published on 8 Mar 2022

For the third year, Joplin has been selected as a Google Summer of Code mentor organisation! We look forward to start working with the contributors on some great new projects. This year's main themes are:

  • Mobile and tablet development - we want to improve the mobile/tablet application on iOS and Android.
  • Plugin and external apps - leverage the Joplin API to create plugins and external apps.
  • And of course contributors are welcome to suggest their own ideas.

Our full idea list is available here: GSoC 2022 idea list

In the coming month (March 7 - April 3), contributors will start getting involved in the forum and start discussing project ideas with the mentors and community. It's also a good time to start looking at Joplin's source code, perhaps work on fixing bugs or implement small features to get familiar with the source code, and to show us your skills.

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

Additionally, last year Google only allowed smaller projects, while this year they allow again small and large projects, so we've indicated this in the idea list - the small ones are 175 hours, and the large ones 350 hours.


Discuss on the forum


Joplin 2.7 is available!🔗

Published on 24 Feb 2022

This new release is largely focused on bug fixing and optimising various parts of the apps. There's about 26 improvements and 25 bugs and security fixes included - as always many of these apply to both the mobile and desktop app (see the desktop changelog and mobile changelog).

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

Below are some of the more noticeable changes:

Notebook custom icons🔗

Since version 2.6 it was possible to assign an emoji icon to a notebook, and with this new version it's now possible to assign any custom icon. The icon may be a PNG or JPG file of any size. The app will then import the file and resize it to the correct size. To use a custom icon, follow these steps:

Right-click on a notebook, and select "Edit":

In the "Edit notebook" dialog, click "Select file..." and browse to your icon image:

Click "OK" and the icon will now appear next to the notebook:

The icon can be changed only from the desktop application at the moment, but it will sync and be displayed correctly on the mobile app too.

Plugin API improvements🔗

This version also includes a number of improvements to the plugin API, in particular it is now easier to customise the editor context menu from a plugin and dynamically add items to it depending on the context. For example, with the Rich Markdown plugin it will be possible to right-click on an image and open it, or copy it to the clipboard.

A few additional functions have also been added to make plugin development simpler - in particular a command to open any item, whether it's a notebook, note, tag or attachement; and functions to work with attachements, in particular to reveal an attachement in the system file explorer, and to track changes to an attachement.


Discuss on the forum


Automatic deletion of disabled accounts on Joplin Cloud🔗

Published on 15 Feb 2022

As of 15 Feb 2022, disabled accounts on Joplin Cloud will be automatically deleted after 90 days. A disabled account is one where the Stripe subscription has been cancelled either by the user or automatically (eg for unpaid invoices).

Although it is an automated system, I will manually verify each account that's queued for deletion over the next few days for additional safety (for now everything's working as expected).

When an account is queued for deletion, all notes, notebooks, tags, etc are removed from the system within 2 days, and permanently deleted within 7 days. User information, in particular email and full name will be removed from the system within 2 days, but archived for an additional 90 days for legal reasons, after which they will be deleted too.


Discuss on the forum


Joplin 2.6 is available!🔗

Published on 17 Dec 2021

Many changes in this new release, available on mobile, desktop and CLI:

Per-notebook sort order and sort buttons

This new feature adds a number of changes to the way notes are sorted. The most visible one is the addition of a sort button above the note list - it allows sorting by modification date, creation date, title or by custom order, in either ascending or descending order:

By default, this sort order is going to apply to all notebooks, however you can now also assign a per-notebook sort order. In this case, any sort order will be apply to that notebook only. To enable this behaviour, simply right-click on a notebook and select "Toggle own sort order":

Thanks to Kenichi Kobayashi for developing this feature!

Support for notebook icons

It is now possible to associate icons with notebooks no both the desktop and mobile applications. To do so, right-click on a notebook and selected "Edit".

This will open the new notebook dialog from which can change the title and assign an icon. For now the icons are emojis but perhaps custom icons could be supported later on.

Allow collaborating on encrypted notebooks using Joplin Cloud

Thanks to the encryption improvements in the previous Joplin versions it is now possible to share and collaborated on encrypted notebooks, when synchronising with Joplin Cloud (or Joplin Server).

To get this working, you and the recipient will need to have Joplin 2.6 and the person who shares will need to have encryption enabled. After that most of the process is handled automatically by the apps - in particular it will automatically generate and share the required encryption keys for each users.

Improved synchronisation startup speed

Synchronisation is also a bit faster in this release due to an optimisation on the startup process. When syncing, the app needs to acquire a lock, which may be time consuming since it requires making multiple requests. This has now been optimised so that less requests are necessary and also each request consumes less resources. This will have a postive impact on Joplin Cloud in particular, but you should also see improvements with Joplin Server and smaller improvements with the other sync targets.

Improved Markdown editor split view scrolling

Kenichi Kobayashi made some great improvements to the Markdown editor scrolling in this release. The issue before was that the editor on the left and the viewer on the right would often not be in sync, in particular if the note contains several images and other media.

With Kenichi's change the editor and viewer stay nicely in sync, regardless of the note content. In fact it looks a bit like magic when you scroll through large notes - notice in particular how each side appear to wait for the other or speed up in order to make sure both sides are aligned as well possible. Kenichi provides a nice technical documentation about the feature here.

https://www.youtube.com/watch?v=Wbs5XZR0oeU

Improved and optimised S3 synchronisation

Thanks to the efforts of Lee Matos, synchronisation with S3 is now more reliable and errors are also better handled. The underlying S3 SDK has also been upgraded from v2 to v3 which results in a smaller executable size (about 3-5 MB depending on the operating system)

Export notes as self-contained HTML files

Exporting a single note as HTML is now more user friendly as all images, scripts, styles and other attachments are all packed into a single HTML file (Previously it would create multiples files and directories). This makes it easier to share the complete note with someone who doesn't have Joplin.

Other changes and bug fixes

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

https://joplinapp.org/changelog/

https://joplinapp.org/changelog_android/

https://joplinapp.org/changelog_ios/

https://joplinapp.org/changelog_cli/


Discuss on the forum


Potential breaking change in next Joplin Server update (2.5.10)🔗

Published on 2 Nov 2021

Just a head up that the next Joplin Server update could potentially include a breaking change, depending on your data.

One of the database migration is going to add an "owner_id" column to the "items" table (where all notes, notebooks, etc. are stored), and automatically populate it. Normally that shouldn't take too long but you might want to make sure you won't need the server right away when you process this.

The second database migration will add a unique constraint on items.name and items.owner_id and that's where the breaking change might be. Normally this data is already unique because that's enforced by the application but in some rare cases, due a race condition, there could be duplicate data in there. If that happens the migration will fail and the server will not start.

If that happens, you'll need to decide what to do with the data, as it's not possible to automatically decide. You can find all duplicates using this query:

select count(), name, owner_id
from items group by name, owner_id
having count(
) > 1;

Once you have the list of IDs you have a few options:

  • Find the corresponding item in Joplin (it can unfortunately be anything - a note, resource, folder, etc.), then delete it and sync.
  • Or, just delete the data directly in the database. You'll want to delete the corresponding item_id from the user_items table too.

But really in most cases you should be fine. Especially if you don't have that many notes it's unlikely you have duplicates.


Discuss on the forum


Joplin v2.5 is available for desktop and mobile!🔗

Published on 31 Oct 2021

Joplin v2.5 is now available for desktop, mobile and CLI! Here's an overview of the changes:

Support for Markdown + Front Matter🔗

Markdown + Front Matter is a format that allows attaching metadata, such as tags, creation date, or geolocation to a Markdown file. This is done by adding a block of YAML code (a "front matter") at the top of the file.

Thansk to Caleb John's efforts the Joplin desktop and CLI applications now support importing and exporting these files. When exporting, we try to preserve as much metadata as possible, while still keeping it the formatting user friendly.

Here's an example, with the Front Matter at the top, delimited by "---", and the text below.

Markdown + Front Matter is an excellent way to share notes with someone who doesn't have Joplin, to backup notes in a durable format (since no third-party application is needed to read it), and also to export notes to other applications, or to import them.

As with the regular Markdown exporter, the images and attachments are also exported.

Add support for callback URLs🔗

Callback URLs is a semi-standard that defines how certain resources in an application can be accessed via URLs. Either to view the resource, or to perform certain actions, such as deletion, creation, etc.

Joplin now support callback URLs to open notes, notebooks and folders. To do so, right click on a note and select "Copy external link":

That would give you a URL such as this:

joplin://x-callback-url/openNote?id=b7a7b93281f54d928612eea550f33a7f

Then if you click it from outside the app, the app will open and select this particular note. In practice such a feature allows third-party application to interact with Joplin by creating links that can be opened from outside. For example, you may use a different application for project planning, then link to the individual notes for more details about each task.

Many thanks to Roman Musin for adding the feature!

Improved end-to-end encryption support🔗

The series of quiet but major changes to the end-to-end encryption support continue in this new verison. One goal is still to allow sharing notebooks while encryption is enabled.

To that end, v2.5 includes support for RSA public-private key pairs. If you have encryption enabled, they will be automatically generated when you synchronise by the mobile, desktop or CLI applications. Later on, these keys will be used to allow sharing encrypted notebooks.

The second goal of these E2EE changes is to simplify the system enough that it can be enabled by default. To that end, the master password dialog and encryption screen have been improved. An option to reset the master password is now also available.

Various other improvements and bug fixes🔗

In total this release includes about 11 other bug fixes and improvements. There was in particular several improvements to the share features. It is now also possible for a share recipient to leave the shared notebook.

Mobile app update🔗

As always the mobile apps (to be released soon) benefit from several of the above changes since they share the same codebase as the desktop app.

Specific to the mobile version 2.5 are some improvements to the beta editor - in particular the layout has been cleaned up, and the first word of sentences is now automatically capitalised, which makes typing notes easier. If you haven't tried the beta editor yet, you can enable it from the Configuration screen.

The full changelog is available there: https://joplinapp.org/changelog/


Discuss on the forum


"Certificate has expired" error with Joplin Cloud, and workaround🔗

Published on 30 Sep 2021

Some of you might be experiencing an error "Certificate has expired" when synchronising with Joplin Cloud (and possibly other services) when using the desktop application.

This is due to Let's Encrypt root certificate that expired on 30 September, and the new method they are using is not compatible with the Joplin desktop application.

This actually affects thousands of applications, not just Joplin, so various solutions are being considered right now and hopefully a fix will be available relatively soon.

For now, as a workaround, you can simply check "Ignore TLS certificate errors" in Configuration > Synchronisation > Advanced Options

I will let you know as soon as a fix is available so that you can clear that option.

More info:

- Issue with Electron and expired root on Let's Encrypt

- Let's Encrypt root CA isn't working properly on Electron GitHub repository

Update: I have implemented a temporary fix on Joplin Cloud which should solve the issue for now. If you're still having some issues please let me know. An updated desktop app will be available later on with a more permanent fix.


Discuss on the forum


Joplin 2.4 is available!🔗

Published on 29 Sep 2021

Joplin 2.4 is now available on desktop, mobile and CLI. Here's what's new in this release:

Sync Wizard Dialog🔗

A new Sync Wizard Dialog has been added to simplify setting up sync on new clients.

The dialog shows the main sync targets, their differences, and makes it easy to choose one and start synchronising. This is mostly aimed at new users or those perhaps less technical. Those who are self hosting or using complex setups will still easily find what they need from a link on that dialog (or in Config > Synchronisation like before).

Sync setup on mobile has been slightly improved too - now on a new client, instead of asking you to sync with Dropbox directly (which may not be what you want), it jumps to the Config > Synchronisation section where you can select the sync target

Disable synchronisation🔗

It's a small change but something that's been asked many time - it's now possible to disable synchronisation entirely by selecting "None" as a sync target. Previously that could be done in a hacky way, by selecting a non-configured sync target. Now it's clearer and easier to do.

Add back support for deprecated plugins🔗

Recently some plugins stopped working because deprecated plugin APIs had been removed. It had been planned for a long time but I suspect the warnings weren't visible enough so plugin developers didn't act on them, and as a result many plugins stopped working.

This is now fixed in the latest version. A selected number of plugins will have access to these old deprecated APIs, which means they will start working again. This was mainly affecting ambrt's plugins such as "Convert Text To New Note" or the popular "Embed Search" plugin.

Add support for recommended plugins🔗

As mentioned in an earlier post, we now support recommended plugins. These recommended plugins appear on top when searching and are identified by a small crown.

End to End Encryption improvements🔗

Like most recent releases, v2.4 includes a few improvement to the End to End Encryption (E2EE) system. The goal is to make it easier to use, to make it more reliable and to support the future use case of sharing encrypted notebooks or notes.

One important change is the support for a master password. This single password will be responsible to encrypt various keys, including some that will be automatically generated. Thanks to this, it won't be necessary to ask to enter a new password every time a key needs to be encrypted, since the master password can be used. It will also be easier to manage since you'll only have one password to remember instead of a different one for each notebook you might have shared.

Finally, it's now possible to disable a master key. What it means is that it will no longer show up in the list of master keys, and will also no longer generate a warning asking you to enter the password. In some case you might have forgotten it and no longer need it key, so you can now disable it.

Custom CSS🔗

This version also introduces a few internal change to better support custom CSS. In particular the colours now come from a CSS file, which could potentially be overridden, and new UI elements are styled using stylesheets, which likewise could be overridden.

Those are just first steps, but eventually these changes will make it easier to style the UI and create new themes.

Bug fixes🔗

This release also includes about 30 various bug fixes and improvements.

A notable one is a fix for GotoAnything, which recently wasn't working on first try.

The plugin screen has also been improved so that search works even when GitHub is down or blocked, as it is in China in particular.


Discuss on the forum


Introducing recommended plugins in the next Joplin version🔗

Published on 1 Sep 2021

A common request from new users is how to know which plugin is safe to install or not. In fact probably all of them are safe but as a new user that's not necessarily easy to know. So to help with this, the next version of Joplin will support recommended plugins - those will be plugins that meet our standards of quality and performance, and they will be indicated by a small crown tag inside the plugin box. Recommended plugins will also appear on top when searching.

For now, since we don't have a review process, the recommended plugins are those developed by the Joplin team and frequent contributors, because we know those are safe to use.

Later we might have a review process and add more recommended plugins. That being said, in the meantime even if a plugin is not marked as recommended, there's a good chance it is still safe and have good performance too. Often you can search for it on the forum and if it's active with many users commenting, you're most likely good to go.

But if there's any doubt, the recommended tag is a good way to be sure.


Discuss on the forum


Joplin Cloud is officially production ready!🔗

Published on 31 Aug 2021

Joplin Cloud has been out of beta for a few weeks now and since then it has been quietly running without any troubles. There is no known bugs and the service is running smoothly so it's now safe to say that it is production ready!

As a reminder, Joplin Cloud is meant to provide a more seamless Joplin experience - if you want to quickly get started, it's as easy as downloading the app and getting a Joplin Cloud account. Besides improved sync performance, that will give you the ability to collaborate on notebooks with others, as well as publishing and sharing notes.

Of course Joplin still supports other sync options such as Nextcloud, Dropbox and OneDrive or AWS S3. You can also self host using Joplin Server. The advantage of Joplin Cloud being that you don't need to maintain a server yourself - for a small fee you'll get that taken care of.

Additionally, subscribing to Joplin Cloud is a great way to support the project as a whole, including the open source applications. Such support is needed in the long term to provide bug and security fixes, add new features, and provide support.

At some level it is also an experiment, to see if such a service is financially viable and can allow me to work full time on the project. This is certainly something I would like, and perhaps Joplin Cloud combined with your donations will allow that.


Discuss on the forum


How to start your subscription if you have a free Joplin Cloud Beta account🔗

Published on 4 Aug 2021

For anyone with a beta account, if you would like to keep using it after the end of the trial period, there is now a button to do this from the Joplin Cloud home page:

If you click on it you will be sent to the Plans page via a special link. Then once you click on "Buy now" you will be sent to the Stripe page where you can start the subscription.

As mentioned in the message, the process takes into account your remaining beta trial days. So for example, if your beta account expires in 60 days, the subscription will have a free 60 days trial period. This is so you don't lose any of the beta trial days no matter when you start the subscription.

If you have any question about it, please let me know.


Discuss on the forum


New beta editor for the mobile app🔗

Published on 29 Jul 2021

The latest Android pre-release 24 features an improved beta editor, which I hope could become a replacement for the very basic editor we have at the moment.

It's still experimental because it's based on the equally experimental CodeMirror 6, however for simple editing tasks it seems to work fine. At the moment the improvements are:

- Syntax highlighting for various tags such as bold, italic and headings.

- List continuation for ordered and unordered lists (I didn't try checklists but I assume it doesn't work)

- Improved undo/redo

- Maybe better handling of large documents? CodeMirror 6 has a demo that loads a document with millions of lines, so maybe that will solve the performance issues that some users were having

If everything works well, later on we should be able to add things like a toolbar, spellchecking and other features that are impossible with the current editor.

If you find any bug, feel free to report here. Also make sure you backup your notes regularly in case there's an issue!


Discuss on the forum


The Jopin Cloud beta is now closed🔗

Published on 18 Jul 2021

The beta program helped narrow down a few issues and should make Joplin Cloud (and Joplin Server) more reliable. More precisely:

  • About 7 bugs have been fixed, including two major ones regarding sharing, and one security issue.

  • About a dozen improvements, new features and optimisations have been added following your feedback.

As promised if you have a beta account you can keep using it and it will remain free for the three months after the account was created. After that, you will receive a link to start the Stripe subscription if you wish to keep using the account.

If you have sent me an email before the end of the beta and I didn't reply yet, I will do so soon, and will send you the confirmation email.

Thanks everyone for participating!


Discuss on the forum