diff --git a/.eslintignore b/.eslintignore index a2eb738b3..664f372de 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1974,9 +1974,18 @@ packages/tools/update-readme-download.js.map packages/tools/update-readme-sponsors.d.ts packages/tools/update-readme-sponsors.js packages/tools/update-readme-sponsors.js.map +packages/tools/updateMarkdownDoc.d.ts +packages/tools/updateMarkdownDoc.js +packages/tools/updateMarkdownDoc.js.map packages/tools/website/build.d.ts packages/tools/website/build.js packages/tools/website/build.js.map +packages/tools/website/updateDownloadPage.d.ts +packages/tools/website/updateDownloadPage.js +packages/tools/website/updateDownloadPage.js.map +packages/tools/website/utils/frontMatter.d.ts +packages/tools/website/utils/frontMatter.js +packages/tools/website/utils/frontMatter.js.map packages/tools/website/utils/pressCarousel.d.ts packages/tools/website/utils/pressCarousel.js packages/tools/website/utils/pressCarousel.js.map diff --git a/.gitignore b/.gitignore index fe324bfc8..70ce3039b 100644 --- a/.gitignore +++ b/.gitignore @@ -1957,9 +1957,18 @@ packages/tools/update-readme-download.js.map packages/tools/update-readme-sponsors.d.ts packages/tools/update-readme-sponsors.js packages/tools/update-readme-sponsors.js.map +packages/tools/updateMarkdownDoc.d.ts +packages/tools/updateMarkdownDoc.js +packages/tools/updateMarkdownDoc.js.map packages/tools/website/build.d.ts packages/tools/website/build.js packages/tools/website/build.js.map +packages/tools/website/updateDownloadPage.d.ts +packages/tools/website/updateDownloadPage.js +packages/tools/website/updateDownloadPage.js.map +packages/tools/website/utils/frontMatter.d.ts +packages/tools/website/utils/frontMatter.js +packages/tools/website/utils/frontMatter.js.map packages/tools/website/utils/pressCarousel.d.ts packages/tools/website/utils/pressCarousel.js packages/tools/website/utils/pressCarousel.js.map diff --git a/Assets/WebsiteAssets/css/site.css b/Assets/WebsiteAssets/css/site.css index eae1a6a3e..129516635 100644 --- a/Assets/WebsiteAssets/css/site.css +++ b/Assets/WebsiteAssets/css/site.css @@ -523,12 +523,17 @@ div.navbar-mobile-content a.sponsor-button { .bottom-links { display: flex; + flex-direction: row; justify-content: center; border-top: 1px solid #d4d4d4; margin-top: 30px; padding-top: 25px; } +.bottom-links .bottom-link { + margin-right: 20px; +} + /* TOC */ #toc ul { @@ -652,6 +657,24 @@ footer .bottom-links-row p { font-size: 1.1em; } +/***************************************************************** + WHAT'S NEW PAGE +*****************************************************************/ + +.news-page .container > .content-wrapper, +.news-item-page .container > .content-wrapper { + /* Set the line width so that there's no more than 75 characters per line */ + /* https://baymard.com/blog/line-length-readability */ + max-width: 650px; + margin-left: auto; + margin-right: auto; +} + +.news-page img, +.news-item-page img { + max-width: 650px; +} + /***************************************************************** IN THE PRESS The "In the press" section height needs to be adjusted as the diff --git a/readme/blog/images/20180621-182112_0.png b/Assets/WebsiteAssets/images/news/20180621-182112_0.png similarity index 100% rename from readme/blog/images/20180621-182112_0.png rename to Assets/WebsiteAssets/images/news/20180621-182112_0.png diff --git a/Assets/WebsiteAssets/images/news/20180906-101039_0.png b/Assets/WebsiteAssets/images/news/20180906-101039_0.png new file mode 100644 index 000000000..9dc8ae2ed Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20180906-101039_0.png differ diff --git a/readme/blog/images/20180906-111039_0.png b/Assets/WebsiteAssets/images/news/20180906-111039_0.png similarity index 100% rename from readme/blog/images/20180906-111039_0.png rename to Assets/WebsiteAssets/images/news/20180906-111039_0.png diff --git a/Assets/WebsiteAssets/images/news/20180916-200431_0.png b/Assets/WebsiteAssets/images/news/20180916-200431_0.png new file mode 100644 index 000000000..21ef4d56d Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20180916-200431_0.png differ diff --git a/readme/blog/images/20180916-210431_0.png b/Assets/WebsiteAssets/images/news/20180916-210431_0.png similarity index 100% rename from readme/blog/images/20180916-210431_0.png rename to Assets/WebsiteAssets/images/news/20180916-210431_0.png diff --git a/Assets/WebsiteAssets/images/news/20190130-230218_0.png b/Assets/WebsiteAssets/images/news/20190130-230218_0.png new file mode 100644 index 000000000..6d1ce35b0 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20190130-230218_0.png differ diff --git a/Assets/WebsiteAssets/images/news/20190404-064157_0.png b/Assets/WebsiteAssets/images/news/20190404-064157_0.png new file mode 100644 index 000000000..bdad87a98 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20190404-064157_0.png differ diff --git a/Assets/WebsiteAssets/images/news/20190404-064157_1.png b/Assets/WebsiteAssets/images/news/20190404-064157_1.png new file mode 100644 index 000000000..6ae8917ed Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20190404-064157_1.png differ diff --git a/readme/blog/images/20190404-074157_0.png b/Assets/WebsiteAssets/images/news/20190404-074157_0.png similarity index 100% rename from readme/blog/images/20190404-074157_0.png rename to Assets/WebsiteAssets/images/news/20190404-074157_0.png diff --git a/readme/blog/images/20190404-074157_1.png b/Assets/WebsiteAssets/images/news/20190404-074157_1.png similarity index 100% rename from readme/blog/images/20190404-074157_1.png rename to Assets/WebsiteAssets/images/news/20190404-074157_1.png diff --git a/Assets/WebsiteAssets/images/news/20190523-221026_0.png b/Assets/WebsiteAssets/images/news/20190523-221026_0.png new file mode 100644 index 000000000..0b996bfc4 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20190523-221026_0.png differ diff --git a/Assets/WebsiteAssets/images/news/20190523-221026_1.png b/Assets/WebsiteAssets/images/news/20190523-221026_1.png new file mode 100644 index 000000000..f25a7c570 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20190523-221026_1.png differ diff --git a/readme/blog/images/20190523-231026_0.png b/Assets/WebsiteAssets/images/news/20190523-231026_0.png similarity index 100% rename from readme/blog/images/20190523-231026_0.png rename to Assets/WebsiteAssets/images/news/20190523-231026_0.png diff --git a/readme/blog/images/20190523-231026_1.png b/Assets/WebsiteAssets/images/news/20190523-231026_1.png similarity index 100% rename from readme/blog/images/20190523-231026_1.png rename to Assets/WebsiteAssets/images/news/20190523-231026_1.png diff --git a/Assets/WebsiteAssets/images/news/20190610-230711_0.png b/Assets/WebsiteAssets/images/news/20190610-230711_0.png new file mode 100644 index 000000000..688bf6530 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20190610-230711_0.png differ diff --git a/readme/blog/images/20190611-000711_0.png b/Assets/WebsiteAssets/images/news/20190611-000711_0.png similarity index 100% rename from readme/blog/images/20190611-000711_0.png rename to Assets/WebsiteAssets/images/news/20190611-000711_0.png diff --git a/Assets/WebsiteAssets/images/news/20190613-192613_0.png b/Assets/WebsiteAssets/images/news/20190613-192613_0.png new file mode 100644 index 000000000..22b11d0b5 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20190613-192613_0.png differ diff --git a/Assets/WebsiteAssets/images/news/20190613-192613_1.png b/Assets/WebsiteAssets/images/news/20190613-192613_1.png new file mode 100644 index 000000000..2fca66a6d Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20190613-192613_1.png differ diff --git a/readme/blog/images/20190613-202613_0.png b/Assets/WebsiteAssets/images/news/20190613-202613_0.png similarity index 100% rename from readme/blog/images/20190613-202613_0.png rename to Assets/WebsiteAssets/images/news/20190613-202613_0.png diff --git a/readme/blog/images/20190613-202613_1.png b/Assets/WebsiteAssets/images/news/20190613-202613_1.png similarity index 100% rename from readme/blog/images/20190613-202613_1.png rename to Assets/WebsiteAssets/images/news/20190613-202613_1.png diff --git a/Assets/WebsiteAssets/images/news/20190814-215957_0.png b/Assets/WebsiteAssets/images/news/20190814-215957_0.png new file mode 100644 index 000000000..5f60672bb Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20190814-215957_0.png differ diff --git a/Assets/WebsiteAssets/images/news/20190814-215957_1.png b/Assets/WebsiteAssets/images/news/20190814-215957_1.png new file mode 100644 index 000000000..3efd82b55 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20190814-215957_1.png differ diff --git a/readme/blog/images/20190814-225957_0.png b/Assets/WebsiteAssets/images/news/20190814-225957_0.png similarity index 100% rename from readme/blog/images/20190814-225957_0.png rename to Assets/WebsiteAssets/images/news/20190814-225957_0.png diff --git a/readme/blog/images/20190814-225957_1.png b/Assets/WebsiteAssets/images/news/20190814-225957_1.png similarity index 100% rename from readme/blog/images/20190814-225957_1.png rename to Assets/WebsiteAssets/images/news/20190814-225957_1.png diff --git a/Assets/WebsiteAssets/images/news/20190924-230254_0.png b/Assets/WebsiteAssets/images/news/20190924-230254_0.png new file mode 100644 index 000000000..6ba3c8c58 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20190924-230254_0.png differ diff --git a/Assets/WebsiteAssets/images/news/20190924-230254_1.png b/Assets/WebsiteAssets/images/news/20190924-230254_1.png new file mode 100644 index 000000000..1baa689f0 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20190924-230254_1.png differ diff --git a/Assets/WebsiteAssets/images/news/20190924-230254_2.png b/Assets/WebsiteAssets/images/news/20190924-230254_2.png new file mode 100644 index 000000000..de9688831 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20190924-230254_2.png differ diff --git a/Assets/WebsiteAssets/images/news/20190924-230254_3.png b/Assets/WebsiteAssets/images/news/20190924-230254_3.png new file mode 100644 index 000000000..ed5a75a7d Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20190924-230254_3.png differ diff --git a/Assets/WebsiteAssets/images/news/20190924-230254_4.png b/Assets/WebsiteAssets/images/news/20190924-230254_4.png new file mode 100644 index 000000000..48a110580 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20190924-230254_4.png differ diff --git a/Assets/WebsiteAssets/images/news/20190924-230254_5.png b/Assets/WebsiteAssets/images/news/20190924-230254_5.png new file mode 100644 index 000000000..fc706511f Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20190924-230254_5.png differ diff --git a/Assets/WebsiteAssets/images/news/20190924-230254_6.png b/Assets/WebsiteAssets/images/news/20190924-230254_6.png new file mode 100644 index 000000000..114d732bd Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20190924-230254_6.png differ diff --git a/Assets/WebsiteAssets/images/news/20190924-230254_7.png b/Assets/WebsiteAssets/images/news/20190924-230254_7.png new file mode 100644 index 000000000..dea3ca4d1 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20190924-230254_7.png differ diff --git a/readme/blog/images/20190925-000254_0.png b/Assets/WebsiteAssets/images/news/20190925-000254_0.png similarity index 100% rename from readme/blog/images/20190925-000254_0.png rename to Assets/WebsiteAssets/images/news/20190925-000254_0.png diff --git a/readme/blog/images/20190925-000254_1.png b/Assets/WebsiteAssets/images/news/20190925-000254_1.png similarity index 100% rename from readme/blog/images/20190925-000254_1.png rename to Assets/WebsiteAssets/images/news/20190925-000254_1.png diff --git a/readme/blog/images/20190925-000254_2.png b/Assets/WebsiteAssets/images/news/20190925-000254_2.png similarity index 100% rename from readme/blog/images/20190925-000254_2.png rename to Assets/WebsiteAssets/images/news/20190925-000254_2.png diff --git a/readme/blog/images/20190925-000254_3.png b/Assets/WebsiteAssets/images/news/20190925-000254_3.png similarity index 100% rename from readme/blog/images/20190925-000254_3.png rename to Assets/WebsiteAssets/images/news/20190925-000254_3.png diff --git a/readme/blog/images/20190925-000254_4.png b/Assets/WebsiteAssets/images/news/20190925-000254_4.png similarity index 100% rename from readme/blog/images/20190925-000254_4.png rename to Assets/WebsiteAssets/images/news/20190925-000254_4.png diff --git a/readme/blog/images/20190925-000254_5.png b/Assets/WebsiteAssets/images/news/20190925-000254_5.png similarity index 100% rename from readme/blog/images/20190925-000254_5.png rename to Assets/WebsiteAssets/images/news/20190925-000254_5.png diff --git a/readme/blog/images/20190925-000254_6.png b/Assets/WebsiteAssets/images/news/20190925-000254_6.png similarity index 100% rename from readme/blog/images/20190925-000254_6.png rename to Assets/WebsiteAssets/images/news/20190925-000254_6.png diff --git a/readme/blog/images/20190925-000254_7.png b/Assets/WebsiteAssets/images/news/20190925-000254_7.png similarity index 100% rename from readme/blog/images/20190925-000254_7.png rename to Assets/WebsiteAssets/images/news/20190925-000254_7.png diff --git a/readme/blog/images/20191012-233121_0.png b/Assets/WebsiteAssets/images/news/20191012-223121_0.png similarity index 100% rename from readme/blog/images/20191012-233121_0.png rename to Assets/WebsiteAssets/images/news/20191012-223121_0.png diff --git a/Assets/WebsiteAssets/images/news/20191012-233121_0.png b/Assets/WebsiteAssets/images/news/20191012-233121_0.png new file mode 100644 index 000000000..a499e87d2 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20191012-233121_0.png differ diff --git a/Assets/WebsiteAssets/images/news/20191014-155136_0.png b/Assets/WebsiteAssets/images/news/20191014-155136_0.png new file mode 100644 index 000000000..c7c5e6ecb Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20191014-155136_0.png differ diff --git a/readme/blog/images/20191014-165136_0.png b/Assets/WebsiteAssets/images/news/20191014-165136_0.png similarity index 100% rename from readme/blog/images/20191014-165136_0.png rename to Assets/WebsiteAssets/images/news/20191014-165136_0.png diff --git a/Assets/WebsiteAssets/images/news/20191117-183855_0.png b/Assets/WebsiteAssets/images/news/20191117-183855_0.png new file mode 100644 index 000000000..5d44a09ba Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20191117-183855_0.png differ diff --git a/Assets/WebsiteAssets/images/news/20191118-072700_0.png b/Assets/WebsiteAssets/images/news/20191118-072700_0.png new file mode 100644 index 000000000..d2da1c6fd Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20191118-072700_0.png differ diff --git a/readme/blog/images/20200301-125055_0.png b/Assets/WebsiteAssets/images/news/20200301-125055_0.png similarity index 100% rename from readme/blog/images/20200301-125055_0.png rename to Assets/WebsiteAssets/images/news/20200301-125055_0.png diff --git a/Assets/WebsiteAssets/images/news/20200301-125055_1.png b/Assets/WebsiteAssets/images/news/20200301-125055_1.png new file mode 100644 index 000000000..5eb37f572 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20200301-125055_1.png differ diff --git a/readme/blog/images/20200314-001555_0.gif b/Assets/WebsiteAssets/images/news/20200314-001555_0.gif similarity index 100% rename from readme/blog/images/20200314-001555_0.gif rename to Assets/WebsiteAssets/images/news/20200314-001555_0.gif diff --git a/readme/blog/images/20200314-001555_1.gif b/Assets/WebsiteAssets/images/news/20200314-001555_1.gif similarity index 100% rename from readme/blog/images/20200314-001555_1.gif rename to Assets/WebsiteAssets/images/news/20200314-001555_1.gif diff --git a/Assets/WebsiteAssets/images/news/20200607-112720_0.png b/Assets/WebsiteAssets/images/news/20200607-112720_0.png new file mode 100644 index 000000000..d879e06e7 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20200607-112720_0.png differ diff --git a/Assets/WebsiteAssets/images/news/20200613-103545_0.png b/Assets/WebsiteAssets/images/news/20200613-103545_0.png new file mode 100644 index 000000000..0b08347e0 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20200613-103545_0.png differ diff --git a/Assets/WebsiteAssets/images/news/20200616-191918_0.png b/Assets/WebsiteAssets/images/news/20200616-191918_0.png new file mode 100644 index 000000000..68b9d1f2d Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20200616-191918_0.png differ diff --git a/Assets/WebsiteAssets/images/news/20200616-191918_1.png b/Assets/WebsiteAssets/images/news/20200616-191918_1.png new file mode 100644 index 000000000..87bdb2460 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20200616-191918_1.png differ diff --git a/Assets/WebsiteAssets/images/news/20200620-114515_0.png b/Assets/WebsiteAssets/images/news/20200620-114515_0.png new file mode 100644 index 000000000..8b34f81f8 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20200620-114515_0.png differ diff --git a/Assets/WebsiteAssets/images/news/20200708-192444_0.png b/Assets/WebsiteAssets/images/news/20200708-192444_0.png new file mode 100644 index 000000000..7b40e4da5 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20200708-192444_0.png differ diff --git a/Assets/WebsiteAssets/images/news/20200708-192444_1.png b/Assets/WebsiteAssets/images/news/20200708-192444_1.png new file mode 100644 index 000000000..fa8c65f03 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20200708-192444_1.png differ diff --git a/Assets/WebsiteAssets/images/news/20200708-192444_2.png b/Assets/WebsiteAssets/images/news/20200708-192444_2.png new file mode 100644 index 000000000..c71613826 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20200708-192444_2.png differ diff --git a/Assets/WebsiteAssets/images/news/20200915-091108_0.png b/Assets/WebsiteAssets/images/news/20200915-091108_0.png new file mode 100644 index 000000000..b1a57c76b Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20200915-091108_0.png differ diff --git a/Assets/WebsiteAssets/images/news/20201126-114649_0.png b/Assets/WebsiteAssets/images/news/20201126-114649_0.png new file mode 100644 index 000000000..ae0800a03 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20201126-114649_0.png differ diff --git a/Assets/WebsiteAssets/images/news/20201126-114649_1.png b/Assets/WebsiteAssets/images/news/20201126-114649_1.png new file mode 100644 index 000000000..0a8d60e1e Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20201126-114649_1.png differ diff --git a/Assets/WebsiteAssets/images/news/20201130-145937_0.png b/Assets/WebsiteAssets/images/news/20201130-145937_0.png new file mode 100644 index 000000000..15a2f4ec1 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20201130-145937_0.png differ diff --git a/Assets/WebsiteAssets/images/news/20201212-172039_0.jpg b/Assets/WebsiteAssets/images/news/20201212-172039_0.jpg new file mode 100644 index 000000000..ecbb7b239 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20201212-172039_0.jpg differ diff --git a/Assets/WebsiteAssets/images/news/20201212-172039_1.png b/Assets/WebsiteAssets/images/news/20201212-172039_1.png new file mode 100644 index 000000000..728acc827 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20201212-172039_1.png differ diff --git a/Assets/WebsiteAssets/images/news/20201212-172039_2.png b/Assets/WebsiteAssets/images/news/20201212-172039_2.png new file mode 100644 index 000000000..149fcc6f5 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20201212-172039_2.png differ diff --git a/Assets/WebsiteAssets/images/news/20210104-131645_0.png b/Assets/WebsiteAssets/images/news/20210104-131645_0.png new file mode 100644 index 000000000..b2b7d44e5 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20210104-131645_0.png differ diff --git a/Assets/WebsiteAssets/images/news/20210104-131645_1.png b/Assets/WebsiteAssets/images/news/20210104-131645_1.png new file mode 100644 index 000000000..f2b0a0b7d Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20210104-131645_1.png differ diff --git a/Assets/WebsiteAssets/images/news/20210104-131645_2.png b/Assets/WebsiteAssets/images/news/20210104-131645_2.png new file mode 100644 index 000000000..21d503260 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20210104-131645_2.png differ diff --git a/Assets/WebsiteAssets/images/news/20210105-153008_0.png b/Assets/WebsiteAssets/images/news/20210105-153008_0.png new file mode 100644 index 000000000..273380ef6 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20210105-153008_0.png differ diff --git a/Assets/WebsiteAssets/images/news/20210309-111950_0.jpg b/Assets/WebsiteAssets/images/news/20210309-111950_0.jpg new file mode 100644 index 000000000..496a85ce0 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20210309-111950_0.jpg differ diff --git a/Assets/WebsiteAssets/images/news/20210310-100852_0.png b/Assets/WebsiteAssets/images/news/20210310-100852_0.png new file mode 100644 index 000000000..a0f9a7d00 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20210310-100852_0.png differ diff --git a/Assets/WebsiteAssets/images/news/20210413-091132_0.png b/Assets/WebsiteAssets/images/news/20210413-091132_0.png new file mode 100644 index 000000000..3e3ee9f6d Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20210413-091132_0.png differ diff --git a/Assets/WebsiteAssets/images/news/20210513-095238_0.jpg b/Assets/WebsiteAssets/images/news/20210513-095238_0.jpg new file mode 100644 index 000000000..cf9c341ce Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20210513-095238_0.jpg differ diff --git a/Assets/WebsiteAssets/images/news/20210513-095238_1.jpg b/Assets/WebsiteAssets/images/news/20210513-095238_1.jpg new file mode 100644 index 000000000..7d4f135df Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20210513-095238_1.jpg differ diff --git a/Assets/WebsiteAssets/images/news/20210513-095238_2.jpg b/Assets/WebsiteAssets/images/news/20210513-095238_2.jpg new file mode 100644 index 000000000..569e70291 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20210513-095238_2.jpg differ diff --git a/Assets/WebsiteAssets/images/news/20210621-104753_0.png b/Assets/WebsiteAssets/images/news/20210621-104753_0.png new file mode 100644 index 000000000..aac1ecdc1 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20210621-104753_0.png differ diff --git a/Assets/WebsiteAssets/images/news/20210621-104753_1.png b/Assets/WebsiteAssets/images/news/20210621-104753_1.png new file mode 100644 index 000000000..4daed9269 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20210621-104753_1.png differ diff --git a/Assets/WebsiteAssets/images/news/20210621-104753_2.png b/Assets/WebsiteAssets/images/news/20210621-104753_2.png new file mode 100644 index 000000000..ed64a77c9 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20210621-104753_2.png differ diff --git a/Assets/WebsiteAssets/images/news/20210621-104753_3.png b/Assets/WebsiteAssets/images/news/20210621-104753_3.png new file mode 100644 index 000000000..bc1b34908 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20210621-104753_3.png differ diff --git a/Assets/WebsiteAssets/images/news/20210711-095626_0.png b/Assets/WebsiteAssets/images/news/20210711-095626_0.png new file mode 100644 index 000000000..011b8cd1c Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20210711-095626_0.png differ diff --git a/Assets/WebsiteAssets/images/news/20210901-113415_0.png b/Assets/WebsiteAssets/images/news/20210901-113415_0.png new file mode 100644 index 000000000..e114c72f6 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20210901-113415_0.png differ diff --git a/Assets/WebsiteAssets/images/news/20210929-144036_0.png b/Assets/WebsiteAssets/images/news/20210929-144036_0.png new file mode 100644 index 000000000..308095a65 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20210929-144036_0.png differ diff --git a/Assets/WebsiteAssets/images/news/20210929-144036_1.png b/Assets/WebsiteAssets/images/news/20210929-144036_1.png new file mode 100644 index 000000000..8e7726cb1 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20210929-144036_1.png differ diff --git a/Assets/WebsiteAssets/images/news/20210929-144036_2.png b/Assets/WebsiteAssets/images/news/20210929-144036_2.png new file mode 100644 index 000000000..08ce49f57 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20210929-144036_2.png differ diff --git a/Assets/WebsiteAssets/images/news/20211031-115215_0.png b/Assets/WebsiteAssets/images/news/20211031-115215_0.png new file mode 100644 index 000000000..87fef6e59 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20211031-115215_0.png differ diff --git a/Assets/WebsiteAssets/images/news/20211031-115215_1.png b/Assets/WebsiteAssets/images/news/20211031-115215_1.png new file mode 100644 index 000000000..957deb53c Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20211031-115215_1.png differ diff --git a/Assets/WebsiteAssets/images/news/20211217-120324_0.png b/Assets/WebsiteAssets/images/news/20211217-120324_0.png new file mode 100644 index 000000000..7a52231dc Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20211217-120324_0.png differ diff --git a/Assets/WebsiteAssets/images/news/20211217-120324_1.png b/Assets/WebsiteAssets/images/news/20211217-120324_1.png new file mode 100644 index 000000000..15401b846 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20211217-120324_1.png differ diff --git a/Assets/WebsiteAssets/images/news/20211217-120324_2.png b/Assets/WebsiteAssets/images/news/20211217-120324_2.png new file mode 100644 index 000000000..72c34adc5 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20211217-120324_2.png differ diff --git a/Assets/WebsiteAssets/images/news/20211217-120324_3.png b/Assets/WebsiteAssets/images/news/20211217-120324_3.png new file mode 100644 index 000000000..4670adfa8 Binary files /dev/null and b/Assets/WebsiteAssets/images/news/20211217-120324_3.png differ diff --git a/Assets/WebsiteAssets/templates/main-new.mustache b/Assets/WebsiteAssets/templates/main-new.mustache index 7552cf9ce..c944e08b5 100644 --- a/Assets/WebsiteAssets/templates/main-new.mustache +++ b/Assets/WebsiteAssets/templates/main-new.mustache @@ -63,13 +63,20 @@ https://github.com/laurent22/joplin/blob/dev/{{{sourceMarkdownFile}}} Running in {{env}} mode! {{{contentHtml}}} - {{#showImproveThisDoc}} + {{#showBottomLinks}} - {{/showImproveThisDoc}} + {{/showBottomLinks}} diff --git a/Assets/WebsiteAssets/templates/partials/navbar.mustache b/Assets/WebsiteAssets/templates/partials/navbar.mustache index 97358aad7..a34cd2c64 100644 --- a/Assets/WebsiteAssets/templates/partials/navbar.mustache +++ b/Assets/WebsiteAssets/templates/partials/navbar.mustache @@ -12,6 +12,7 @@
+ What's New Help Forum {{#showJoplinCloudLinks}} @@ -42,8 +43,9 @@
+ What's New Help Forum Joplin Cloud
diff --git a/docs/markdown/index.html b/docs/markdown/index.html index 409029439..e56842e54 100644 --- a/docs/markdown/index.html +++ b/docs/markdown/index.html @@ -40,7 +40,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/markdown.md media="all" onload="this.media='all'; this.onload = null" /> - + Markdown Guide | Joplin + + +
+ + +
+
+
+ + +
+ + +

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.

+

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/blog/20180621-182112/index.html b/docs/news/20180621-182112/index.html similarity index 56% rename from docs/blog/20180621-182112/index.html rename to docs/news/20180621-182112/index.html index 4df1b608e..91ad6231a 100644 --- a/docs/blog/20180621-182112/index.html +++ b/docs/news/20180621-182112/index.html @@ -5,11 +5,11 @@ !!! WARNING !!! -This file was auto-generated from readme/blog/20180621-182112.md and any manual change +This file was auto-generated from readme/news/20180621-182112.md and any manual change made to it will be overwritten. To make a change to this file please modify the source Markdown file: -https://github.com/laurent22/joplin/blob/dev/readme/blog/20180621-182112.md +https://github.com/laurent22/joplin/blob/dev/readme/news/20180621-182112.md --> @@ -40,7 +40,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20180621-182112.md media="all" onload="this.media='all'; this.onload = null" /> - + Web Clipper now available on Firefox and Chrome | Joplin + + +
+ + +
+
+
+ + +
+ + +

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.

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/blog/20180906-111039/index.html b/docs/news/20180906-111039/index.html similarity index 57% rename from docs/blog/20180906-111039/index.html rename to docs/news/20180906-111039/index.html index 51f7e7390..891b598f6 100644 --- a/docs/blog/20180906-111039/index.html +++ b/docs/news/20180906-111039/index.html @@ -5,11 +5,11 @@ !!! WARNING !!! -This file was auto-generated from readme/blog/20180906-111039.md and any manual change +This file was auto-generated from readme/news/20180906-111039.md and any manual change made to it will be overwritten. To make a change to this file please modify the source Markdown file: -https://github.com/laurent22/joplin/blob/dev/readme/blog/20180906-111039.md +https://github.com/laurent22/joplin/blob/dev/readme/news/20180906-111039.md --> @@ -40,7 +40,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20180906-111039.md media="all" onload="this.media='all'; this.onload = null" /> - + New iOS release with improved attachment support | Joplin + + +
+ + +
+
+
+ + +
+ + +

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://joplin.cozic.net/changelog/

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/blog/20180916-210431/index.html b/docs/news/20180916-210431/index.html similarity index 55% rename from docs/blog/20180916-210431/index.html rename to docs/news/20180916-210431/index.html index 4299f3120..61f04673a 100644 --- a/docs/blog/20180916-210431/index.html +++ b/docs/news/20180916-210431/index.html @@ -5,11 +5,11 @@ !!! WARNING !!! -This file was auto-generated from readme/blog/20180916-210431.md and any manual change +This file was auto-generated from readme/news/20180916-210431.md and any manual change made to it will be overwritten. To make a change to this file please modify the source Markdown file: -https://github.com/laurent22/joplin/blob/dev/readme/blog/20180916-210431.md +https://github.com/laurent22/joplin/blob/dev/readme/news/20180916-210431.md --> @@ -40,7 +40,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20180916-210431.md media="all" onload="this.media='all'; this.onload = null" /> - + Note properties in desktop application | Joplin + + +
+ + +
+
+
+ + +
+ + +

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://joplin.cozic.net/changelog/

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/blog/20180929-121053/index.html b/docs/news/20180929-121053/index.html similarity index 56% rename from docs/blog/20180929-121053/index.html rename to docs/news/20180929-121053/index.html index 307cd3b97..21d2ebb24 100644 --- a/docs/blog/20180929-121053/index.html +++ b/docs/news/20180929-121053/index.html @@ -5,11 +5,11 @@ !!! WARNING !!! -This file was auto-generated from readme/blog/20180929-121053.md and any manual change +This file was auto-generated from readme/news/20180929-121053.md and any manual change made to it will be overwritten. To make a change to this file please modify the source Markdown file: -https://github.com/laurent22/joplin/blob/dev/readme/blog/20180929-121053.md +https://github.com/laurent22/joplin/blob/dev/readme/news/20180929-121053.md --> @@ -40,7 +40,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20180929-121053.md media="all" onload="this.media='all'; this.onload = null" /> - + New release and many bug fixes | Joplin + + +
+ + +
+
+
+ + +
+ + +

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.

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/blog/20181004-091123/index.html b/docs/news/20181004-091123/index.html similarity index 56% rename from docs/blog/20181004-091123/index.html rename to docs/news/20181004-091123/index.html index 46e1b33c9..810315ac7 100644 --- a/docs/blog/20181004-091123/index.html +++ b/docs/news/20181004-091123/index.html @@ -5,11 +5,11 @@ !!! WARNING !!! -This file was auto-generated from readme/blog/20181004-091123.md and any manual change +This file was auto-generated from readme/news/20181004-091123.md and any manual change made to it will be overwritten. To make a change to this file please modify the source Markdown file: -https://github.com/laurent22/joplin/blob/dev/readme/blog/20181004-091123.md +https://github.com/laurent22/joplin/blob/dev/readme/news/20181004-091123.md --> @@ -40,7 +40,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20181004-091123.md media="all" onload="this.media='all'; this.onload = null" /> - + Joplin and Hacktobertfest 2018 🎃 | Joplin + + +
+ + +
+
+
+ + +
+ + +

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!

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/blog/20181213-173459/index.html b/docs/news/20181213-173459/index.html similarity index 56% rename from docs/blog/20181213-173459/index.html rename to docs/news/20181213-173459/index.html index d152d1543..a8f2c5687 100644 --- a/docs/blog/20181213-173459/index.html +++ b/docs/news/20181213-173459/index.html @@ -5,11 +5,11 @@ !!! WARNING !!! -This file was auto-generated from readme/blog/20181213-173459.md and any manual change +This file was auto-generated from readme/news/20181213-173459.md and any manual change made to it will be overwritten. To make a change to this file please modify the source Markdown file: -https://github.com/laurent22/joplin/blob/dev/readme/blog/20181213-173459.md +https://github.com/laurent22/joplin/blob/dev/readme/news/20181213-173459.md --> @@ -40,7 +40,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20181213-173459.md media="all" onload="this.media='all'; this.onload = null" /> - + Joplin is now featured on PrivacyTools.io | Joplin + + +
+ + +
+
+
+ + +
+ + +

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.

+

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/blog/20190404-074157/index.html b/docs/news/20190404-074157/index.html similarity index 56% rename from docs/blog/20190404-074157/index.html rename to docs/news/20190404-074157/index.html index 77aa42e27..da9bf42e5 100644 --- a/docs/blog/20190404-074157/index.html +++ b/docs/news/20190404-074157/index.html @@ -5,11 +5,11 @@ !!! WARNING !!! -This file was auto-generated from readme/blog/20190404-074157.md and any manual change +This file was auto-generated from readme/news/20190404-074157.md and any manual change made to it will be overwritten. To make a change to this file please modify the source Markdown file: -https://github.com/laurent22/joplin/blob/dev/readme/blog/20190404-074157.md +https://github.com/laurent22/joplin/blob/dev/readme/news/20190404-074157.md --> @@ -40,7 +40,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190404-074157.md media="all" onload="this.media='all'; this.onload = null" /> - + Markdown plugins and Goto Anything | Joplin + + +
+ + +
+
+
+ + +
+ + +

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!

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/blog/20190424-112410/index.html b/docs/news/20190424-112410/index.html similarity index 59% rename from docs/blog/20190424-112410/index.html rename to docs/news/20190424-112410/index.html index 6d76e5857..eb5e94da1 100644 --- a/docs/blog/20190424-112410/index.html +++ b/docs/news/20190424-112410/index.html @@ -5,11 +5,11 @@ !!! WARNING !!! -This file was auto-generated from readme/blog/20190424-112410.md and any manual change +This file was auto-generated from readme/news/20190424-112410.md and any manual change made to it will be overwritten. To make a change to this file please modify the source Markdown file: -https://github.com/laurent22/joplin/blob/dev/readme/blog/20190424-112410.md +https://github.com/laurent22/joplin/blob/dev/readme/news/20190424-112410.md --> @@ -40,7 +40,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190424-112410.md media="all" onload="this.media='all'; this.onload = null" /> - + The Joplin forum is one year old | Joplin + + +
+ + +
+
+
+ + +
+ + +

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.

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/blog/20190523-231026/index.html b/docs/news/20190523-231026/index.html similarity index 62% rename from docs/blog/20190523-231026/index.html rename to docs/news/20190523-231026/index.html index 10666f026..8bcfbcf23 100644 --- a/docs/blog/20190523-231026/index.html +++ b/docs/news/20190523-231026/index.html @@ -5,11 +5,11 @@ !!! WARNING !!! -This file was auto-generated from readme/blog/20190523-231026.md and any manual change +This file was auto-generated from readme/news/20190523-231026.md and any manual change made to it will be overwritten. To make a change to this file please modify the source Markdown file: -https://github.com/laurent22/joplin/blob/dev/readme/blog/20190523-231026.md +https://github.com/laurent22/joplin/blob/dev/readme/news/20190523-231026.md --> @@ -40,7 +40,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190523-231026.md media="all" onload="this.media='all'; this.onload = null" /> - + Note history now in Joplin | Joplin + + +
+ + +
+
+
+ + +
+ + +

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.

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/blog/20190611-000711/index.html b/docs/news/20190611-000711/index.html similarity index 57% rename from docs/blog/20190611-000711/index.html rename to docs/news/20190611-000711/index.html index 65530223a..fdf803efe 100644 --- a/docs/blog/20190611-000711/index.html +++ b/docs/news/20190611-000711/index.html @@ -5,11 +5,11 @@ !!! WARNING !!! -This file was auto-generated from readme/blog/20190611-000711.md and any manual change +This file was auto-generated from readme/news/20190611-000711.md and any manual change made to it will be overwritten. To make a change to this file please modify the source Markdown file: -https://github.com/laurent22/joplin/blob/dev/readme/blog/20190611-000711.md +https://github.com/laurent22/joplin/blob/dev/readme/news/20190611-000711.md --> @@ -40,7 +40,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190611-000711.md media="all" onload="this.media='all'; this.onload = null" /> - + Changing attachment download behaviour to save disk space | Joplin + + +
+ + +
+
+
+ + +
+ + +

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.

+

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/blog/20190613-202613/index.html b/docs/news/20190613-202613/index.html similarity index 56% rename from docs/blog/20190613-202613/index.html rename to docs/news/20190613-202613/index.html index 4b429e7c9..cc66272a3 100644 --- a/docs/blog/20190613-202613/index.html +++ b/docs/news/20190613-202613/index.html @@ -5,11 +5,11 @@ !!! WARNING !!! -This file was auto-generated from readme/blog/20190613-202613.md and any manual change +This file was auto-generated from readme/news/20190613-202613.md and any manual change made to it will be overwritten. To make a change to this file please modify the source Markdown file: -https://github.com/laurent22/joplin/blob/dev/readme/blog/20190613-202613.md +https://github.com/laurent22/joplin/blob/dev/readme/news/20190613-202613.md --> @@ -40,7 +40,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190613-202613.md media="all" onload="this.media='all'; this.onload = null" /> - + Customising your notes with the help of the development tools and CSS | Joplin + + +
+ + +
+
+
+ + +
+ + +

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:

+

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/blog/20190814-225957/index.html b/docs/news/20190814-225957/index.html similarity index 56% rename from docs/blog/20190814-225957/index.html rename to docs/news/20190814-225957/index.html index 1b5329d7e..c415ce050 100644 --- a/docs/blog/20190814-225957/index.html +++ b/docs/news/20190814-225957/index.html @@ -5,11 +5,11 @@ !!! WARNING !!! -This file was auto-generated from readme/blog/20190814-225957.md and any manual change +This file was auto-generated from readme/news/20190814-225957.md and any manual change made to it will be overwritten. To make a change to this file please modify the source Markdown file: -https://github.com/laurent22/joplin/blob/dev/readme/blog/20190814-225957.md +https://github.com/laurent22/joplin/blob/dev/readme/news/20190814-225957.md --> @@ -40,7 +40,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190814-225957.md media="all" onload="this.media='all'; this.onload = null" /> - + Joplin now supports Fountain screenwriting markup language | Joplin + + +
+ + +
+
+
+ + +
+ + +

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

+

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/blog/20190925-000254/index.html b/docs/news/20190925-000254/index.html similarity index 58% rename from docs/blog/20190925-000254/index.html rename to docs/news/20190925-000254/index.html index 5f8f6f3f0..b08d7031f 100644 --- a/docs/blog/20190925-000254/index.html +++ b/docs/news/20190925-000254/index.html @@ -5,11 +5,11 @@ !!! WARNING !!! -This file was auto-generated from readme/blog/20190925-000254.md and any manual change +This file was auto-generated from readme/news/20190925-000254.md and any manual change made to it will be overwritten. To make a change to this file please modify the source Markdown file: -https://github.com/laurent22/joplin/blob/dev/readme/blog/20190925-000254.md +https://github.com/laurent22/joplin/blob/dev/readme/news/20190925-000254.md --> @@ -40,7 +40,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190925-000254.md media="all" onload="this.media='all'; this.onload = null" /> - + New icon for Joplin! | Joplin + + +
+ + +
+
+
+ + +
+ + +

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'

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/blog/20190929-152834/index.html b/docs/news/20190929-152834/index.html similarity index 57% rename from docs/blog/20190929-152834/index.html rename to docs/news/20190929-152834/index.html index e8842aad2..12e86df16 100644 --- a/docs/blog/20190929-152834/index.html +++ b/docs/news/20190929-152834/index.html @@ -5,11 +5,11 @@ !!! WARNING !!! -This file was auto-generated from readme/blog/20190929-152834.md and any manual change +This file was auto-generated from readme/news/20190929-152834.md and any manual change made to it will be overwritten. To make a change to this file please modify the source Markdown file: -https://github.com/laurent22/joplin/blob/dev/readme/blog/20190929-152834.md +https://github.com/laurent22/joplin/blob/dev/readme/news/20190929-152834.md --> @@ -40,7 +40,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20190929-152834.md media="all" onload="this.media='all'; this.onload = null" /> - + Hacktoberfest 2019 is coming soon! | Joplin + + +
+ + +
+
+
+ + +
+ + +

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-}$

+
+

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/blog/20191012-233121/index.html b/docs/news/20191012-233121/index.html similarity index 55% rename from docs/blog/20191012-233121/index.html rename to docs/news/20191012-233121/index.html index 6e6045d59..2ff41d9fe 100644 --- a/docs/blog/20191012-233121/index.html +++ b/docs/news/20191012-233121/index.html @@ -5,11 +5,11 @@ !!! WARNING !!! -This file was auto-generated from readme/blog/20191012-233121.md and any manual change +This file was auto-generated from readme/news/20191012-233121.md and any manual change made to it will be overwritten. To make a change to this file please modify the source Markdown file: -https://github.com/laurent22/joplin/blob/dev/readme/blog/20191012-233121.md +https://github.com/laurent22/joplin/blob/dev/readme/news/20191012-233121.md --> @@ -40,7 +40,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20191012-233121.md media="all" onload="this.media='all'; this.onload = null" /> - + Support for chemical equations using mhchem for Katex | Joplin + + +
+ + +
+
+
+ + +
+ + +

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!

+

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/blog/20191014-165136/index.html b/docs/news/20191014-165136/index.html similarity index 55% rename from docs/blog/20191014-165136/index.html rename to docs/news/20191014-165136/index.html index 7885dd75f..c4dabb32b 100644 --- a/docs/blog/20191014-165136/index.html +++ b/docs/news/20191014-165136/index.html @@ -5,11 +5,11 @@ !!! WARNING !!! -This file was auto-generated from readme/blog/20191014-165136.md and any manual change +This file was auto-generated from readme/news/20191014-165136.md and any manual change made to it will be overwritten. To make a change to this file please modify the source Markdown file: -https://github.com/laurent22/joplin/blob/dev/readme/blog/20191014-165136.md +https://github.com/laurent22/joplin/blob/dev/readme/news/20191014-165136.md --> @@ -40,7 +40,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20191014-165136.md media="all" onload="this.media='all'; this.onload = null" /> - + New Joplin icon, second round | Joplin + + +
+ + +
+
+
+ + +
+ + +

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.

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/blog/20191117-183855/index.html b/docs/news/20191117-183855/index.html similarity index 56% rename from docs/blog/20191117-183855/index.html rename to docs/news/20191117-183855/index.html index accf92946..a760a0a35 100644 --- a/docs/blog/20191117-183855/index.html +++ b/docs/news/20191117-183855/index.html @@ -5,11 +5,11 @@ !!! WARNING !!! -This file was auto-generated from readme/blog/20191117-183855.md and any manual change +This file was auto-generated from readme/news/20191117-183855.md and any manual change made to it will be overwritten. To make a change to this file please modify the source Markdown file: -https://github.com/laurent22/joplin/blob/dev/readme/blog/20191117-183855.md +https://github.com/laurent22/joplin/blob/dev/readme/news/20191117-183855.md --> @@ -40,7 +40,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20191117-183855.md media="all" onload="this.media='all'; this.onload = null" /> - + And the winner is... | Joplin + + +
+ + +
+
+
+ + +
+ + +

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.

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/blog/20200406-224254/index.html b/docs/news/20200406-224254/index.html similarity index 67% rename from docs/blog/20200406-224254/index.html rename to docs/news/20200406-224254/index.html index c49d15554..dd1ceb4f9 100644 --- a/docs/blog/20200406-224254/index.html +++ b/docs/news/20200406-224254/index.html @@ -5,11 +5,11 @@ !!! WARNING !!! -This file was auto-generated from readme/blog/20200406-224254.md and any manual change +This file was auto-generated from readme/news/20200406-224254.md and any manual change made to it will be overwritten. To make a change to this file please modify the source Markdown file: -https://github.com/laurent22/joplin/blob/dev/readme/blog/20200406-224254.md +https://github.com/laurent22/joplin/blob/dev/readme/news/20200406-224254.md --> @@ -40,7 +40,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/blog/20200406-224254.md media="all" onload="this.media='all'; this.onload = null" /> - + Joplin informal encryption and security audit results | Joplin + + +
+ + +
+
+
+ + +
+ + +

GSoC 2020 students have been announced by Google🔗

+

The first phase of GSoC has ended and  the two students who will be working with the Joplin community in summer have been selected! So congratulation to @naviji  and @anjulalk  ! We’re glad to have you on board, and looking forward for the  improvements you’re going to make as part of your projects on,  respectively, the search engine and the keyboard shortcut editor! We’ll be in touch to give you more info on what happens next.

+

On our side, this is our first GSoC and we learnt quite a bit in the  process. We got feedback from the students and we’re definitely taking  it on board. One key point is that we didn’t expect Joplin to get that  much interest as this is a relatively new project, and as a result we  had trouble managing the number of proposals and pull requests we got.  We also quickly ran out of “Good first issues”, which means for students  coming a bit late it wasn’t clear what you could work on.

+

So next year, we’ll restrict a bit the number and the type of pull  requests each student can make. Ideally we’d prefer if you work on only  one or two medium-sized pull requests, rather than several small ones,  so that you can really focus on it and give your best work. Of course,  that makes it also more manageable for us as there will be less pull  requests to review. I wasn’t too happy with the way I was reviewing  sometimes, giving short and not very helpful comments at time, as I was  trying to get as many PRs done as possible. Instead it would be best to  do less but do it better.

+

Another point is that we should make it clear how many slots we’re  likely to get. We cannot know for sure, it’s up to Google, but we can at  least give an estimate. That way, you can decide whether it makes sense  to invest your time in the project, or if it would be best to pick a  different, less busy project.

+

In any case, this is a learning process for all, and we aim to improve over time.

+

Also a quick update on the number of pull requests - so far we have reviewed and processed 104 pull requests for GSoC (59 of which were merged) and there are still 32 pull requests that need to be reviewed and merged. So that's a lot of improvements and bug fixes on Joplin in the coming weeks.

+

Many thanks to all the students who joined us this year! We  definitely appreciate your time and contribution on this project,  whether it’s with your pull requests or via your participation on the  forum, and you’re of course welcome to give it another try next year, or  to stay around in the community.

+

Also many thanks to our mentors @PackElend, @bedwardly-down, @mic704b, @tessus, @CalebJohn, @rullzer for their help coordinating all this, writing the documentation and reviewing pull request and proposals!

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20200606-151446/index.html b/docs/news/20200606-151446/index.html new file mode 100644 index 000000000..133614fae --- /dev/null +++ b/docs/news/20200606-151446/index.html @@ -0,0 +1,195 @@ + + + + + + + + + + + + + + + + + + New pre-release coming soon | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

New pre-release coming soon🔗

+

Now that the GSoC changes have been merged and the application made more stable following the rewrite of the note editor code, a new pre-release will be available soon.

+

It will include several important features, which I will describe into more details in following posts, but for information the main new features will be:

+

- Allow editing note attachments and syncing the changes

+

- Save sensitive settings such as passwords to the system keychain

+

- Allow changing the app appearance according to the system theme

+

- Allow manually ordering notes

+

- A new text editor, Code Mirror, will be available for beta-testing

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20200607-112720/index.html b/docs/news/20200607-112720/index.html new file mode 100644 index 000000000..dc8b59428 --- /dev/null +++ b/docs/news/20200607-112720/index.html @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + + New editor, editable attachments, dark mode support and more in latest pre-release | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

New editor, editable attachments, dark mode support and more in latest pre-release🔗

+

The latest pre-release is now available and includes 13 bug fixes and 9 various improvements and new features, among others:

+

Editable attachments

+

Files you attach to a note can now be edited. To do this, click on the attachment or, if it's an image, right-click on it and select open. The file will then be watched by the application and any change you make will be saved to Joplin, and synchronised.

+

New Markdown editor

+

A new Markdown editor (Code Mirror) is now included with Joplin. For now it is for beta testing only so you need to manually enable it in the options in "Note" => "Use CodeMirror as the code editor". The goal of this new editor is to address several of the issues that have affected the previous Markdown editor and that were either hard or impossible to fix, in particular:

+
    +
  • Support for spell checking. Note that it is not yet implemented in the new editor but it at least can be done now.
  • +
  • Variable font size. The previous editor would not allow this, which would cause various issues.
  • +
  • Search within the Markdown text. Previously it was only possible to searched with the note viewer but with this editor it should be possible to search within the Markdown text too.
  • +
  • Improved support for emojis.
  • +
  • Improved support for Asian languages and Russian.
  • +
+

If possible, please help test this new editor and report any issue in the forum! (or GitHub)

+

Manual ordering of notes

+

You can now manually order the notes within the notebook. For this to work, make sure you choose "Custom order" in the menu View => Sort Notes by

+

Support for system keychain on macOS and Windows

+

One of the issues mentioned in the security audit was that certain sensitive settings, like Nextcloud or encryption passwords were saved unencrypted in the Joplin profile. This new release will make use of the system keychain when it is available and move the sensitive settings to it. You don't need to do anything to make use of this feature, it is automatically enabled in this release.

+

Currently this is supported on macOS and Windows. It is disabled of course for the portable version, and is also not currently enabled for Linux due to a build issue and less consistent support than on macOS and Windows.

+

Support for system theme

+

The app can now auto-detect the system theme and switch to it automatically. This essentially adds support for system "dark mode", which are now common on most operating systems. You may choose a preferred "light" theme and "dark" theme in the option.

+

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20200613-103545/index.html b/docs/news/20200613-103545/index.html new file mode 100644 index 000000000..18bf2004a --- /dev/null +++ b/docs/news/20200613-103545/index.html @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + New design for Joplin! | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

New design for Joplin!🔗

+

Thanks to the mentor stipend we got from Google for GSoC, we've been able to hire a designer to improve the design of the desktop application. Serj is now at his second iteration and your feedback on it would be most welcome!

+

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20200616-191918/index.html b/docs/news/20200616-191918/index.html new file mode 100644 index 000000000..f77fd34f1 --- /dev/null +++ b/docs/news/20200616-191918/index.html @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + Version 3 of the new design is ready! | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

Version 3 of the new design is ready!🔗

+

+

As usual your feedback is welcome, and just for info some of this is going to change. In particular what's mentioned in my own feedback:

+

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20200620-114515/index.html b/docs/news/20200620-114515/index.html new file mode 100644 index 000000000..7567a8610 --- /dev/null +++ b/docs/news/20200620-114515/index.html @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + Version 4 of the new design is ready! | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

Version 4 of the new design is ready!🔗

+

I think it's nearly there as all the details have been ironed out now. If you notice any issue or have any suggestion though, feel free to let me know!

+

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20200622-084127/index.html b/docs/news/20200622-084127/index.html new file mode 100644 index 000000000..d92cc97e4 --- /dev/null +++ b/docs/news/20200622-084127/index.html @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + Please cast your vote for the new Joplin colour scheme | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

Please cast your vote for the new Joplin colour scheme🔗

+

For those who haven't seen it, there's an ongoing poll on the forum to vote for the new colour scheme (Light Theme for now):

+

https://discourse.joplinapp.org/t/please-vote-for-the-new-light-theme-colour-scheme/9504

+

Please cast your vote if you haven't already, or add a comment here if you don't have a forum account.

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20200626-134029/index.html b/docs/news/20200626-134029/index.html new file mode 100644 index 000000000..b6b088418 --- /dev/null +++ b/docs/news/20200626-134029/index.html @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + Desktop new design is nearly ready, please cast your final vote! | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

Desktop new design is nearly ready, please cast your final vote!🔗

+

Please either vote on the forum or let me know here what option you would prefer:

+

https://discourse.joplinapp.org/t/desktop-new-design-is-nearly-ready-please-cast-your-final-vote/9698

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20200708-192444/index.html b/docs/news/20200708-192444/index.html new file mode 100644 index 000000000..08e5cdaff --- /dev/null +++ b/docs/news/20200708-192444/index.html @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + New config screen design is ready! | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

New config screen design is ready!🔗

+

The design put the menu bar on the left, which I think makes sense, as it's consistent with the main screen UI. And I expect this bar will be the same colour as the main screen sidebar

+

For checkboxes Serj used a toggle button, which actually makes it easier to align all the labels on the left (a checkbox with a label on the left looks strange) so I might go with it.

+

Otherwise the screens are relatively similar but tidier. If you have any suggestion on what could be changed, feel free to let me know.

+

Synchronisation config

+

+

Synchronisation config (error messages)

+

+

Plugin config

+

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20200906-172325/index.html b/docs/news/20200906-172325/index.html new file mode 100644 index 000000000..065ec6389 --- /dev/null +++ b/docs/news/20200906-172325/index.html @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + + Improving the sync process in Joplin | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

Improving the sync process in Joplin🔗

+

The latest version of Joplin includes a mechanism to upgrade the  structure of a sync target. When you startup the app you will be asked  to upgrade before being able to sync. Once you start the process, the  app will briefly display an information screen, upgrade the sync target,  and then restart the app. You’ll then be able to sync with the new sync  target format. That first upgrade is quite simple as the goal for now  is to put the mechanism in place and verify that it works well.

+

From a user perspective this feature doesn’t do anything visible, although it caused some issues, so one might wonder why it’s even there. This post is meant to clarify this.

+

The structure of the sync target hasn’t really changed since the day  Joplin was released. It works well however it has some shortcomings that  should be fixed eventually for sync to remain performant.

+

There are also various improvements that could be made but were not  previously possible due to the lack of an upgrade mechanism. I have  listed below the 5 main limitations or issues with the current sync  process and how they could be fixed:

+

No upper limit on the number of items🔗

+

Joplin’s UI works well even with millions of notes, however the sync  target will keep getting slower and slower as more files are added to  it. File systems often have a limit to the number of files they can  support in a directory. One user also has reached the limit of 150,000 items on OneDrive.

+

For now, this is not a big issue because most users don’t have  millions of items, but as more web pages are being clipped (clipped  pages often contain many small resources and images) and more note  revisions are created (one note can have hundreds of revisions), this  issue might start affecting more users.

+

One way to solve this issue would be to split the sync items into  multiple directories. For example if we split the main directory into  100 sub-directories, it will be possible to have 15,000,000 OneDrive  items instead of 150,000. Another way would be to support note  archiving, as described below. How exactly we’ll handle this problem is  still to be defined, but there are certainly ways.

+

Not possible to prioritise downloads🔗

+

Currently, when syncing, the items are downloaded in a random way. So  it might download some notes, then some tags and notebooks, then back  to downloading notes, etc. For small sync operations it doesn’t matter,  but large ones, like when setting up a new device, it is very  inefficient. For example, the app might download hundreds of note  revisions or tags, but won’t display anything for a while because it  won’t have downloaded notebooks or notes.

+

A simple improvement would be to group the items by type on the sync  target. So all notebook items together, all tags together, etc. Doing so  means when syncing we can first download the notebooks, then the notes,  which means something will be displayed almost immediately in the app,  allowing the user to start using it. Then later less important items  like tags or note revisions will be downloaded.

+

End-to-end encryption is hard to setup🔗

+

Currently, the encryption settings is a property of the clients. What  it means it that when you setup a new client, it doesn’t know whether  the other clients use encryption or not. It’s going to guess more or  less based on the data on the sync target. You can also force it to use  encryption but this has drawbacks and often mean a new master key is  going to be created, even though there might already be one on the sync  target.

+

E2EE works well once it’s setup, but doing so can be tricky and possibly confusing - if you didn’t follow this guide to the letter, you might end up with multiple master keys, or sending decrypted notes to an encrypted target.

+

A way to solve this would be to make the E2EE settings a property of  the sync target. Concretely there would be a file that tells if E2EE is  enabled or not, and maybe some way to quickly get the master key. It  would simplify setting up encryption a lot and make it more secure  (because you won’t be able to send non-encrypted notes to an encrypted  sync target). When you setup a new client, the client will know  immediately if it’s an encrypted target or not and set the client  accordingly.

+

Old notes that never change should be handled differently🔗

+

It would be more efficient to treat old notes differently by allowing  the user to “archive” them. An archived note would be read-only. Then  one idea could be to group all these archived notes into a ZIP file on  the sync target. Doing so means that the initial sync would be much  faster (instead of downloading hundred of small files, which is slow, it  will download one large file, which is fast). It would also make the  structure more scalable - you could keep several years of archived notes  on the sync target while keeping sync fast and efficient.

+

The resource directory should be renamed🔗

+

The folder that contains file attachments is named “.resources” on  the sync target. This causes troubles because certain platforms will  hide directories that start with dot “.”, and perhaps they will be  excluded from backup or skipped when moved somewhere else. Being able to  upgrade the sync target means we can rename this folder to just  “resources” instead.

+

Conclusion🔗

+

That’s obviously a lot of possible improvements and it won’t be done  overnight, but having the sync upgrade mechanism in place means we can  start considering these options. Some of these, such as renaming the  “resources” dir are simpler and could be done relatively soon. Perhaps  other more complex ones will be group within one sync target upgrade to  minimise disruption. In any case, I hope this clarifies the reason for  this recent sync upgrade and that it gives some ideas of what to expect  in the future.

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20200913-163730/index.html b/docs/news/20200913-163730/index.html new file mode 100644 index 000000000..bec19d598 --- /dev/null +++ b/docs/news/20200913-163730/index.html @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + Version 1.1: Search engine update | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

Version 1.1: Search engine update🔗

+

In this series of posts, I will introduce the changes that are coming in version 1.1 (which in fact is already available as a pre-release).

+

For this first feature, I will let Naveen, our GSoC candidate, present it. Naveen has made an excellent job implementing various search engine features, including advanced filters, support for Okapi BM25 scoring algorithm, and fuzzy search. Here is what he has to say:

+

What got done🔗

+

The project consisted of three parts:

+
    +
  1. Make search better by introducing additional search filters. (e.g., tags, notebook, type)
  2. +
  3. Make the ranking of search results better by implementing the Okapi BM25 relevance function.
  4. +
  5. Make fuzzy search possible.
  6. +
+

Code contributions🔗

+
    +
  1. All: Add search filters
    +Joplin's search had been using the Full-Text Search(FTS) offered by  SQLite directly. So though it was fast, it was not versatile. For  example, we can't restrict the search scope to a particular notebook or  search based on tags.
    +The current search implementation fixes most of these problems. It  provides a better abstraction over FTS, supporting many new filters. The  documentation for the new search filters can be found here.
  2. +
  3. All: Weigh notes using Okapi BM25 score
    +Joplin used a ranking function based on the number of times the search query occurs in the note and how close they are.
    +But there are better ways to rank notes, considering not just the  number of times a word appears, but how common it is. Words like "the"  is in most notes, while words like "zebra" are not common and should be  considered more relevant.
    +The new search implementation uses Okapi BM25  as the ranking function. It ranks a set of documents based on the query  terms appearing in each document, regardless of their proximity.
  4. +
  5. Desktop: Fuzzy search
    +We've added support for fuzzy search. It doesn't replace the need to put  * at the end if you want to do a prefix search. But it does let you be a  bit more relaxed about the exact spelling. Searching for "tomatos" will  also give you results for "tomatoes". (This feature isn't released yet,  but will be soon)
  6. +
+

It has been a pleasure working with Laurent and Caleb. They did an excellent job as mentors.

+

I hope these new features will be useful to many people. I plan to  continue as a member of the Joplin community and help in whatever way I  can.

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20200915-091108/index.html b/docs/news/20200915-091108/index.html new file mode 100644 index 000000000..ab084b507 --- /dev/null +++ b/docs/news/20200915-091108/index.html @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + + Version 1.1: Keyboard shortcut editor | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

Version 1.1: Keyboard shortcut editor🔗

+

In this series of posts about version 1.1, we'll introduce another feature by one of our GSoC candidates, Anjula. Anjula developed over the past few months a system to allow configuring the keymap shortcuts, and created a nice editor for it.  Here is what he has to say:

+

* * *

+

Joplin desktop application supports keyboard shortcuts to a certain  degree. However, there wasn't an option for users to configure keyboard  shortcuts according to their preferences. My project was to implement a  keyboard shortcut editor along with the necessary integration.

+

Custom keyboard shortcuts would be a great addition for all Joplin  users including power users and those who are migrating to Joplin from  other note-taking applications. People also do not have the same  keyboard layout; not everyone has F6 necessarily. It would solve  conflicts between different preferences of workflows, and increase  discoverability for all keyboard shortcuts.

+

+

Back-end service for handling keymapping-related functionality🔗

+

KeymapService builds an in-memory keymap based on the default keymap  configuration. The default keymap configuration may vary from platform  to platform. Essentially, the in-memory keymap binds a keyboard shortcut  for some command of Joplin. Clients of KeymapService may obtain the  keyboard shortcuts for some commands, and/or alter the keymap via the  provided methods.

+

KeymapService also allows altering the keymap via a keymap file,  which is located in the profile directory. Contents of this keymap file  will take higher priority than the default keymap configuration, and  will replace the default keyboard shortcuts.

+

It is guaranteed that the keymap always stays pristine with proper validation.

+

Keyboard shortcut editor with the necessary functionality to alter the keymap🔗

+

Depending on the interfaces of KeymapService, the Keyboard shortcut editor allows the user to,

+
    +
  • View all the available commands and their respective keyboard shortcuts
  • +
  • Change, or disable a keyboard shortcut for some command
  • +
  • Restore a keyboard shortcut to its default value
  • +
  • Export all changes to a keymap file (in JSON format)
  • +
  • Import changes from an exported keymap file
  • +
  • Perform a simple search to locate some shortcut
  • +
+

Changes performed to the keymap will be reflected immediately in the  application user-interface as well as in the keymap file located in the  profile directory. The editor will also perform continuous validation to  ensure that the keymap will not enter a dirty-state. For example, it  won't allow the user to use the same shortcut for two or more commands.

+

The complete report with details of code contributions can be found here.

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20201030-114530/index.html b/docs/news/20201030-114530/index.html new file mode 100644 index 000000000..ad60b28f7 --- /dev/null +++ b/docs/news/20201030-114530/index.html @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + What sharing and collaboration features would you find useful? | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

What sharing and collaboration features would you find useful?🔗

+

I'm still trying to get a sense of what sharing and collaboration features would be useful in Joplin. By this mean any way to share a note with someone else or have multiple users collaborate on the same set of notes or notebooks.

+

If a feature like this might interest you, I'd be helpful if you could describe: how would you use it? How would you expect it to work?

+

All this might not be implemented right away, but it will inform how the development should happen for example by making sure that even if a feature can't be done now the software is done in such a way that it's possible to add it later on.

+

Any idea or suggestion is welcome!

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20201126-114649/index.html b/docs/news/20201126-114649/index.html new file mode 100644 index 000000000..eead7ea81 --- /dev/null +++ b/docs/news/20201126-114649/index.html @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + Spell checker support now available in v1.4 | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

Spell checker support now available in v1.4🔗

+

With 340 votes on GitHub, spell checker support was the most requested feature and is now finally available in Joplin! This was always tricky to add due to the custom editors (Rich Text and Markdown) we use, but thanks to the recent improvements in the Electron framework and to Caleb John's work on the Markdown editor it is now possible.

+

It should be working fine in both editors however it is currently considered Beta for the Markdown Editor because to enable the feature we had to use a special mode which in the past caused various issues. Now it seems to work well, at least we haven't noticed any bug so far, but please keep that in mind. If you notice any issue let us know in the forum.

+

Enabling the spell checker

+

To enable or disable the spell checker, simply click on the top right hand globe icon (or select Spell Checker in the Tools menu), then select the language you would like to use. Since the list of languages can be huge on certain operating system, the latest selected languages also appear just below the "Use spell checker" checkbox.

+

+

Activating the Markdown Editor Beta spell checker

+

By default, the spell checker is not activated in the Markdown editor even if "Use spell checker" is ticked because it is currently in Beta state. To enable it, go to the General settings, open the Advanced Settings, and select "Enable spell checking in Markdown editor". As mentioned above, we think the feature is stable and haven't found any bug with it, however if you notice anything please let us know.

+

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20201130-145937/index.html b/docs/news/20201130-145937/index.html new file mode 100644 index 000000000..0fbd890c4 --- /dev/null +++ b/docs/news/20201130-145937/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + Plugin support available in Joplin v1.4 | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

Plugin support available in Joplin v1.4🔗

+

The plugin system has been part of Joplin since the previous version, however it was still a bit unstable. In the latest version we're getting a bit closer to production-ready state. The plugin API in particular has been significantly expanded, based on the developer feedback, so that more types of plugin are possible now, and indeed a few plugin concepts have started appearing on the forums. In particular all this could be done now:

+
    +
  • 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 low-level the behaviour of the Markdown editor (CodeMirror)
  • +
+

Plugin JPL format and configuration screen

+

The plugin configuration screen has also been updated so that it's possible to import the new JPL (Joplin PLugin) format and to enable/disable as well as uninstall plugins.

+

+

What's next?

+

It is now possible to create new plugins, package them into the JPL format, and to install them into the app.

+

The last piece missing is a way to discover and share plugins, and a way to update them easily, basically what we need is an online package manager. It is not clear yet how this is going to be done, but one idea would be to have a GitHub repository where anyone could submit or update a plugin, then the app would connect to that repository to make it easy to install new plugins. This is just an idea at this point though, and if you have any suggestion on other ways it could be done, feel free to let me know. A discussion about it has been started in the forum.

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20201212-172039/index.html b/docs/news/20201212-172039/index.html new file mode 100644 index 000000000..1b43eeaa2 --- /dev/null +++ b/docs/news/20201212-172039/index.html @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + Changing the application layout in v1.4 | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

Changing the application layout in v1.4🔗

+

One feature that may have gone a bit unnoticed in recent versions is the ability to change the application layout. It is mainly aimed at plugins, so that they can create a panel anywhere, and you can then move it wherever you want, but it can also be used to re-arranged existing application components.

+

For example, you can put the note list below the sidebar, to have more space for the text editor, move the sidebar to the right of the application, etc.

+

To begin changing the application layout, click on "Change application layout" from the View menu:

+

+

This will put the app into a special mode, from which you can move the side bar, note list and text editor around. You do so by pressing on the arrow keys:

+

+

For example, pressing the left arrow on the note list would move it to the left, just below the sidebar:

+

+

Once you're done modifying the layout, press the "Escape" key to exit.

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20201228-112150/index.html b/docs/news/20201228-112150/index.html new file mode 100644 index 000000000..74ae0315a --- /dev/null +++ b/docs/news/20201228-112150/index.html @@ -0,0 +1,193 @@ + + + + + + + + + + + + + + + + + + The macOS app is now notarised | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

The macOS app is now notarised🔗

+

From version 1.5, the macOS application will now be notarised. It means that when you install it you will no longer see a warning telling you that the app hasn't been checked for malware. You also won't need to go in the OS security settings to launch the app.

+

Notarisation has been around since macOS Catalina, however it took a while to implement it for Joplin as the process is complex and error prone.

+

First the app has to be built and uploaded to Apple's servers. They then automatically check the app for any malware, a process that can take 5 to 15 minutes (and presumably more if the app is incorrectly flagged as malware). Once it's done, Apple creates a notarisation ticket for the app.

+

Then whenever the app is started, Apple check on their server if the app has a notarisation ticket (a process that recently caused "apps taking minutes to launch, stuttering and non-responsiveness throughout macOS"). It's also possible to staple this notarisation ticket to the app, so that it's possible to check the ticket even when the computer is offline.

+

All that has now been automated in the Joplin build pipeline, and will apply to all macOS app future versions.

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20210104-131645/index.html b/docs/news/20210104-131645/index.html new file mode 100644 index 000000000..35f914daf --- /dev/null +++ b/docs/news/20210104-131645/index.html @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + PDF viewer, audio and video player now in Joplin 1.5 | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

PDF viewer, audio and video player now in Joplin 1.5🔗

+

The latest version features of Joplin features a few improvements to make it easier to preview various media files. For now it is possible to view PDF files, as well as listen and view audio and video files.

+

+

+

The feature is optional and you can enable/disable it in the settings, each viewer has its own settings:

+

+

For now the feature works on desktop (Markdown editor only) and on mobile (except for the PDF viewer).

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20210105-153008/index.html b/docs/news/20210105-153008/index.html new file mode 100644 index 000000000..00f51fe4c --- /dev/null +++ b/docs/news/20210105-153008/index.html @@ -0,0 +1,209 @@ + + + + + + + + + + + + + + + + + + Joplin Server pre-release is now available | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

Joplin Server pre-release is now available🔗

+

The first release of Joplin Server is now available as a pre-release:

+

https://github.com/laurent22/joplin/blob/dev/packages/server/README.md

+

What does it sync with?🔗

+

You will need Joplin v1.6+ clients, which are available as pre-releases for desktop and Android.

+

What does it do?🔗

+

At this point, this server allows you to sync any Joplin client with it, as you would do with Dropbox, OneDrive, etc. So in that way, it's not essential. Long term, the goal is to add collaboration features:

+
    +
  • Sharing a note with anyone, using a URL. When the note is changed, the content at the URL is changed too.
  • +
  • Sharing a notebook with a user on the same Joplin Server instance. For example, if you share a notebook with another user, that user will see this notebook in their desktop or mobile app, and will be able to edit the notes, etc.
  • +
+

Any improvement over Nextcloud?🔗

+

For now, one benefit of using Joplin Server, compared to Nextcloud or WebDAV in general, is that it is much faster and resource efficient. I've done a basic test with Nextcloud and Joplin Server running on the same server. Both have mostly default settings (except Nextcloud which uses Redis for file locks):

+

+

Why is it so much faster? I assume it's in part because the WebDAV protocol is terribly inefficient. It sends unnecessarily large XML blobs for every request, which are time consuming to download and parse. It also doesn't support delta sync (unlike Joplin Server), which means the complete file list needs to be downloaded before syncing in order to compare the local and remote items.

+

Finally it's possible that Nextcloud file locking system means an overhead on each request. It shouldn't be much since it's handled by Redis but who knows. Joplin Server doesn't need locking as data consistency is handled by the clients.

+

So just by following common sense and transferring only the required data in a sane format (JSON), we can have something more performant. In my case, I appreciate that the mobile app no longer freezes when it starts synchronising - before it would do that due to the large XML WebDAV file that needs to be parsed.

+

Stability🔗

+

I've been using it with the desktop and mobile app for a few weeks now and haven't had any issue so far. The server also passes all the existing sync-related test units (sync, e2ee and lock handling) so I'm reasonably confident it can already be used. As always though, keep making backups in case there's any issue.

+

Suggestions are welcome🔗

+

This is still a pre-release and if you notice anything off please let me know. In particular, I believe it doesn't gzip responses, so that will need to be added. The process also doesn't restart when it crashes, which could be solved with pm2.

+

Also if you have any idea on how to make installation easier, your feedback is welcome.

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20210130-144626/index.html b/docs/news/20210130-144626/index.html new file mode 100644 index 000000000..8e0229d23 --- /dev/null +++ b/docs/news/20210130-144626/index.html @@ -0,0 +1,194 @@ + + + + + + + + + + + + + + + + + + Joplin is applying for GSoC 2021! | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

Joplin is applying for GSoC 2021!🔗

+

We are going to apply again this year for GSoC. If we are selected by Google, this year's theme will be centered around:

+

- Joplin plugin system - eg. development of various features that can be done as plugins, and improvement of the plugin system itself.

+

- Joplin external applications - anything that can be developed as an external application and that makes use of Joplin's API and other extension points.

+

At times we had a rough GSoC last year, mostly because we weren't familiar with the process and how to best handle various situations, but overall it was a success and we got great improvements to the search engine and keyboard shortcut systems thanks to our two students. We plan to make some adjustments to the way we welcome students to make the process go smoothly this year.

+

We will submit the GSoC application on 19 Feb and will let you know if we are selected. Like last year, we would appreciate any help with managing the event - if you are interested in being a tutor, or if you can help with welcoming new students and answering their questions, please let us know!

+

So far, we have @CalebJohn, @PackElend, @tessus and myself as potential tutors.

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20210309-111950/index.html b/docs/news/20210309-111950/index.html new file mode 100644 index 000000000..fe8267f7d --- /dev/null +++ b/docs/news/20210309-111950/index.html @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + Joplin will have a stand at the "Journées du Logiciel Libre" conference in Lyon, France | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

Joplin will have a stand at the "Journées du Logiciel Libre" conference in Lyon, France🔗

+

Just a quick announcement to let you know that on 3 and 4 April, we will have a stand for Joplin at the Journées du Logiciel Libre in Lyon, France. The JdLL has been taking place in Lyon for 22 years and is a popular open source conference in France. Last year we had a stand too, but of course that was cancelled due to Covid. So this year is a first for Joplin so if you're around, come and say hi!

+

Also I am looking for anyone who could help look after the stand, even for an hour or two, over these two days. There won't be a lot to do - pretty much just hand over fliers and answer the occasional question, which as Joplin users I'm sure you'll know the answer to. Coffee and/or beers are on me :-) So if you aren't far and would be interested, please let me know!

+

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20210310-100852/index.html b/docs/news/20210310-100852/index.html new file mode 100644 index 000000000..2d59568c7 --- /dev/null +++ b/docs/news/20210310-100852/index.html @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + Joplin has been accepted for Google Summer of Code 2021! | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

Joplin has been accepted for Google Summer of Code 2021!🔗

+

For the second year, Joplin has been accepted as an organisation for GSoC 2021. This is great news and we look forward to start working with students and discuss project ideas. We should see some nice new features and improvements on the project again this year.

+

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20210413-091132/index.html b/docs/news/20210413-091132/index.html new file mode 100644 index 000000000..bbebf66f1 --- /dev/null +++ b/docs/news/20210413-091132/index.html @@ -0,0 +1,192 @@ + + + + + + + + + + + + + + + + + + Getting close to being mainly a TypeScript project | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

Getting close to being mainly a TypeScript project🔗

+

Been checking the numbers now and then and I see there will soon be more TypeScript than JavaScript code in the repo:

+

+

Probably a good part of the JS code is in the CLI app, which hasn't been updated much. Critical parts of the app are now in TypeScript, including the synchronizer, database and encryption service. Joplin Server is also entirely in TypeScript. Even the database rows are now typed thanks to sql-ts.

+

So anyway TypeScript has been a big win for the project as it made it possible to refactor and modernise many parts of it in a safe way, and make the code future proof and easier to work with! I expect we should get to over 50% over the next few months.

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20210430-083248/index.html b/docs/news/20210430-083248/index.html new file mode 100644 index 000000000..789d95b48 --- /dev/null +++ b/docs/news/20210430-083248/index.html @@ -0,0 +1,208 @@ + + + + + + + + + + + + + + + + + + Call for Google Summer of Code mentors! | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

Call for Google Summer of Code mentors!🔗

+

A message from PackElend, who's been helping us organise GSoC this year (and last year)

+

* * *

+

Hi Community,

+

we are going to apply for the GSoC student slots next week, soon we know what can be done this season.

+

To put us in a comfortable position it would be appreciated if there would another handful of people who would mentor a project.

+

Is there anyone interested in doing so?

+

* * *

+

Here is some information about the role of a mentor:

+

After student selection🔗

+
    +
  • Ensure your student is ready & active. They should have a dev environment, be regularly communicating in the community, and have prepared a project plan together with you.
  • +
  • Read the GSoC Mentoring Manual and ask questions if you have them.
  • +
  • If the student is not active during the community bonding period, please contact the organization administrators.
  • +
+

During the program🔗

+
    +
  • Help your student be successful. Commit to spending a minimum of 4 hours each week answering questions, giving advice, working with your student on blockers.
  • +
  • Agree with the students how many times per week they should write a progress report. Ensure that they deliver this report on time each week, and evaluate their progress.
  • +
  • You might have adjust goals based on their progress.
  • +
+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20210506-083359/index.html b/docs/news/20210506-083359/index.html new file mode 100644 index 000000000..1e218032f --- /dev/null +++ b/docs/news/20210506-083359/index.html @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + Joplin has been granted 6 project slots for GSoC 2021 | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

Joplin has been granted 6 project slots for GSoC 2021🔗

+

Google has announced the project slots for GSoC 2021 and granted us 6 this year. That's a big step up from our first GSoC last year when we got 2!

+

In the coming weeks we will be reviewing the student applications again and select the 6 candidates as well as mentors. By the way if you might be interested in co-mentoring a project, feel free to let me know (More info in this post).

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20210513-095238/index.html b/docs/news/20210513-095238/index.html new file mode 100644 index 000000000..e8952175c --- /dev/null +++ b/docs/news/20210513-095238/index.html @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + Sharing a note by link in Joplin Server 2.0 | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

Sharing a note by link in Joplin Server 2.0🔗

+

Joplin Server had a feature to share a note by link for a few versions now but it was mostly a beta feature. In Joplin Server 2.0, the feature will be officially released and should be stable.

+

To share a note, you will need the corresponding desktop application v2.0. Then you can right-click on any note and select "Share note..." from the context menu. You can also select multiple notes, and each will have its own share link.

+

+

After that a dialog opens showing you the note - from there you just need to click on "Copy shareable link" to create the share link and copy it to the clipboard.

+

+

You can then share this link with anyone and they will be able to see the note in their browser:

+

+

Note that at the moment sharing a link does not work with End-To-End Encryption. If you share a note, it will always be decrypted, even on the server. This should be addressed in a future version. The URL however is secure - only people you share the URL with will be able to see the note. In other words, it's not possible to guess or discover the URL any other way.

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20210518-085514/index.html b/docs/news/20210518-085514/index.html new file mode 100644 index 000000000..c62ad679d --- /dev/null +++ b/docs/news/20210518-085514/index.html @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + The six Google Summer of Code projects and students have been selected! | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

The six Google Summer of Code projects and students have been selected!🔗

+

Google has reviewed the project proposals we had submitted and all students have been approved. Congratulation and welcome to our six students - we're looking forward to see your work!

+

Below is the list of projects along with the student name and mentors. This year we will have a main mentor and a co-mentor for each project and in the list below, the main mentor is listed first:

+

BibTeX Plugin

+

Student: Abdallah Ahmed

+

Mentors: Laurent Cozic, Helmut K. C. Tessarek

+

Improving Conflict Resolution Process

+

Student: Ahmed Alwasifey

+

Mentors: Jack Gruber, Caleb John

+

Kanban Board Plugin

+

Student: Mablin

+

Mentors: Roman Musin, Laurent Cozic

+

Paste Special

+

Student: Siddhant Sehgal

+

Mentors: Helmut K. C. Tessarek, Stefan Müller

+

Real-Time Collaboration

+

Student: Akash Konda

+

Mentors: Stefan Müller, Roman Musin

+

Template Plugin

+

Student: Nishant Mittal

+

Mentors: Jack Gruber, Caleb John

+

* * *

+

The official Google of Summer Code page has also been updated with the list of projects:

+

https://summerofcode.withgoogle.com/organizations/6579646541332480/

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20210621-104753/index.html b/docs/news/20210621-104753/index.html new file mode 100644 index 000000000..8cbaaa768 --- /dev/null +++ b/docs/news/20210621-104753/index.html @@ -0,0 +1,222 @@ + + + + + + + + + + + + + + + + + + Share notebooks and collaborate on them using Joplin Server 2.0 | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

Share notebooks and collaborate on them using Joplin Server 2.0🔗

+

Since a few versions Joplin Server includes a way to share notebooks between users and collaborate on them - i.e. any participant can view or modify notes in the shared notebook. It's been present since version 2.x and the feature is getting close to be stable.

+

How does it work?

+

When connected to Joplin Server (or the upcoming Joplin Cloud service), a new "Share notebook" menu item is available when right-clicking on a notebook.

+

+

Click on it, and it will display a new dialog where you can add any number of recipients. Those recipients also need to be on the same Joplin Server instance. From this dialog you can also remove a recipient or unshare the whole notebook, in which case it will be removed from everybody's note collection, except yours.

+

+

Once this is done, the recipient(s) will receive a notification in Joplin the next time they synchronise their data:

+

+

Then, finally, once the invitation is accepted, Joplin will download all the shared notebooks and notes. A shared notebook is denoted by the usual Share icon. Now the invited user can read or modify the shared notes, add attachments, etc. and the changes will be visible to everyone with access to the notebook.

+

+

What's the availability of the notebook sharing feature?

+

The notebook sharing feature is available on Joplin Server and Joplin Cloud.

+

On desktop, you can share notebooks and of course view or modify any notebook that has been shared with you.

+

On mobile and CLI, you cannot currently share notebooks, but you can view or modify any notebook that has been shared with you.

+

If I share a notebook with someone, what access do they have?

+

Currently they have full access to the data, including reading, writing and deleting notebooks or notes. In a future version, access control might be implemented. For example, to only give read-only access to the shared notebook.

+

What can actually be shared?

+

All the sub-notebooks, notes and resources within the shared notebook are shared.

+

Does it work with End-To-End-Encryption?

+

Yes and no. It is possible to use the share notebook feature even with E2EE enabled, however any shared notebook or note will not be encrypted, otherwise you would have had to give your master key password to the people you share with, which you'd probably not want to do.

+

In a future version, this might be supported. For example by automatically creating a new master key for the shared notebook. You would then provide the recipients with that master key password.

+

What can it be used for?

+

Some ideas:

+
    +
  • +

    Plan a trip with friends or within a small organisation. For example, the notes could contain the maps, hotel and flight reservations, etc. or any document or note relevant to the trip. And all participants would have access to them.

    +
  • +
  • +

    Work on a project with colleagues. Everybody can access various work-related documents, add to them, modify them, etc. That could serve as a knowledge base for a project.

    +
  • +
  • +

    Another possible use, which has been requested many times, is to support multiple profiles. You could create a main profile that have access to all notes, and in there create a Work and Personal notebook. Then you would create a separate account for work. You can then share your Work notebook with that other account. That way the work account will only have access to the Work notebooks. You can use this technique in various ways to split your notebooks between multiple accounts and ensure strict separation between datasets.

    +
  • +
+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20210624-171844/index.html b/docs/news/20210624-171844/index.html new file mode 100644 index 000000000..dec74faaa --- /dev/null +++ b/docs/news/20210624-171844/index.html @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + Poll: What's the size of your note collection? | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

Poll: What's the size of your note collection?🔗

+

Poll is on the forum:

+

https://discourse.joplinapp.org/t/poll-whats-the-size-of-your-note-collection/18191

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20210705-094247/index.html b/docs/news/20210705-094247/index.html new file mode 100644 index 000000000..e81c671ed --- /dev/null +++ b/docs/news/20210705-094247/index.html @@ -0,0 +1,191 @@ + + + + + + + + + + + + + + + + + + Any ideas for a Joplin tagline? | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

Any ideas for a Joplin tagline?🔗

+

I'm going to update the website front page to better showcase the application. I have most of the sections right, but the part I'm still not sure about is the top tagline, so I'm wondering if anyone had any suggestion about it?

+

From what I can see on Google Keep or Evernote for example it should be something like "Use our app to get X or Y benefit", it should be a sentence that directly speaks to the user essentially.

+

So far I have "Your notes, anywhere you are" but I'm not certain that's particularly inspiring. Any other idea about what tagline could be used?

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20210706-140228/index.html b/docs/news/20210706-140228/index.html new file mode 100644 index 000000000..041ad69d9 --- /dev/null +++ b/docs/news/20210706-140228/index.html @@ -0,0 +1,190 @@ + + + + + + + + + + + + + + + + + + Poll: What should Joplin tagline be? | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

Poll: What should Joplin tagline be?🔗

+

Thanks everyone for your tagline suggestions - there were lots of good ideas in there. I've compiled a few of them and create a poll in the forum, so please cast your vote! And if you have any other suggestions on what would make a good tagline, feel free to post over there or here.

+

https://discourse.joplinapp.org/t/poll-what-should-joplin-tagline-be/18487

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20210711-095626/index.html b/docs/news/20210711-095626/index.html new file mode 100644 index 000000000..4c7a3ce7c --- /dev/null +++ b/docs/news/20210711-095626/index.html @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + New website is ready! | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

New website is ready!🔗

+

The new website is finally ready at https://joplinapp.org

+

+

The previous website had been built organically over the past few years. It had a lot of useful content but finding your way was tricky and, for new users, it wasn't clear what Joplin was about. Finding out how to install the app wasn't obvious since the download buttons were lost in the clutter of information.

+

So the new website includes a front page with clear goals:

+
    +
  • +

    Allows people to easily download the app - for that there's a large Download button at the top and bottom of the page. It redirects to a page that automatically picks the version based on your operating system.

    +
  • +
  • +

    Showcase the application key features. The key features post on the forum helped narrow down what Joplin is about, so there are sections about the web clipper, the open source nature of the app, encryption, synchronisation, customisation and the ability to create multimedia notes.

    +
  • +
  • +

    The top screenshots have also been updated (the previous one was showing a dev version from 2016, before the app was even released). As a nod to Scott Joplin, the screenshot shows an imaginary plan to open a vintage piano store, with various tasks, tables, documents and images attached, to showcase Joplin features.

    +
  • +
  • +

    Finally there's a Press section, which includes extracts from some cool articles that have been written about the app.

    +
  • +
+

Also many thanks to everyone who voted and contributed to the tagline discussion! It helped narrow down what the tagline should be, along with the equally important description below. If you have any question or notice any issue with the website let me know!

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20210718-103538/index.html b/docs/news/20210718-103538/index.html new file mode 100644 index 000000000..cf823c1b2 --- /dev/null +++ b/docs/news/20210718-103538/index.html @@ -0,0 +1,200 @@ + + + + + + + + + + + + + + + + + + The Jopin Cloud beta is now closed | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

The Jopin Cloud beta is now closed🔗

+

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!

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20210729-103234/index.html b/docs/news/20210729-103234/index.html new file mode 100644 index 000000000..bd22f7170 --- /dev/null +++ b/docs/news/20210729-103234/index.html @@ -0,0 +1,196 @@ + + + + + + + + + + + + + + + + + + New beta editor for the mobile app | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

New beta editor for the mobile app🔗

+

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!

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20210804-085003/index.html b/docs/news/20210804-085003/index.html new file mode 100644 index 000000000..6847419a4 --- /dev/null +++ b/docs/news/20210804-085003/index.html @@ -0,0 +1,193 @@ + + + + + + + + + + + + + + + + + + How to start your subscription if you have a free Joplin Cloud Beta account | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

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

+

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.

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20210831-154354/index.html b/docs/news/20210831-154354/index.html new file mode 100644 index 000000000..a34e912dd --- /dev/null +++ b/docs/news/20210831-154354/index.html @@ -0,0 +1,193 @@ + + + + + + + + + + + + + + + + + + Joplin Cloud is officially production ready! | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

Joplin Cloud is officially production ready!🔗

+

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.

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20210901-113415/index.html b/docs/news/20210901-113415/index.html new file mode 100644 index 000000000..9a80193df --- /dev/null +++ b/docs/news/20210901-113415/index.html @@ -0,0 +1,193 @@ + + + + + + + + + + + + + + + + + + Introducing recommended plugins in the next Joplin version | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

Introducing recommended plugins in the next Joplin version🔗

+

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.

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20210929-144036/index.html b/docs/news/20210929-144036/index.html new file mode 100644 index 000000000..e350a5b08 --- /dev/null +++ b/docs/news/20210929-144036/index.html @@ -0,0 +1,214 @@ + + + + + + + + + + + + + + + + + + Joplin 2.4 is available! | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

Joplin 2.4 is available!🔗

+

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.

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20210930-163458/index.html b/docs/news/20210930-163458/index.html new file mode 100644 index 000000000..e0fb34a57 --- /dev/null +++ b/docs/news/20210930-163458/index.html @@ -0,0 +1,197 @@ + + + + + + + + + + + + + + + + + + "Certificate has expired" error with Joplin Cloud, and workaround | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

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

+

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.

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20211031-115215/index.html b/docs/news/20211031-115215/index.html new file mode 100644 index 000000000..ea63a055a --- /dev/null +++ b/docs/news/20211031-115215/index.html @@ -0,0 +1,216 @@ + + + + + + + + + + + + + + + + + + Joplin v2.5 is available for desktop and mobile! | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

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

+

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/

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20211102-150403/index.html b/docs/news/20211102-150403/index.html new file mode 100644 index 000000000..27ac79487 --- /dev/null +++ b/docs/news/20211102-150403/index.html @@ -0,0 +1,201 @@ + + + + + + + + + + + + + + + + + + Potential breaking change in next Joplin Server update (2.5.10) | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

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

+

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:

+

<code>select count(), name, owner_id
+from items group by name, owner_id
+having count(
) > 1;</code>

+

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.

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/20211217-120324/index.html b/docs/news/20211217-120324/index.html new file mode 100644 index 000000000..8af23114b --- /dev/null +++ b/docs/news/20211217-120324/index.html @@ -0,0 +1,219 @@ + + + + + + + + + + + + + + + + + + Joplin 2.6 is available! | Joplin + + + + +
+ + +
+
+
+ + +
+ + +

Joplin 2.6 is available!🔗

+

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/

+ + +
+
+
+
+ + +
+ + + + + diff --git a/docs/news/index.html b/docs/news/index.html new file mode 100644 index 000000000..aceb03f3c --- /dev/null +++ b/docs/news/index.html @@ -0,0 +1,500 @@ + + + + + + + + + + + + + + + + + + Joplin - an open source note taking and to-do application with synchronisation capabilities + + + + +
+ + +
+
+
+ + +
+ + +

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/

+
+

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:

+

<code>select count(), name, owner_id
+from items group by name, owner_id
+having count(
) > 1;</code>

+

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.

+
+

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/

+
+

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

+
+

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.

+
+

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.

+
+

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.

+
+

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.

+
+

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!

+
+

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!

+
+

New website is ready!🔗

+

Published on 11 Jul 2021

+

The new website is finally ready at https://joplinapp.org

+

+

The previous website had been built organically over the past few years. It had a lot of useful content but finding your way was tricky and, for new users, it wasn't clear what Joplin was about. Finding out how to install the app wasn't obvious since the download buttons were lost in the clutter of information.

+

So the new website includes a front page with clear goals:

+
    +
  • +

    Allows people to easily download the app - for that there's a large Download button at the top and bottom of the page. It redirects to a page that automatically picks the version based on your operating system.

    +
  • +
  • +

    Showcase the application key features. The key features post on the forum helped narrow down what Joplin is about, so there are sections about the web clipper, the open source nature of the app, encryption, synchronisation, customisation and the ability to create multimedia notes.

    +
  • +
  • +

    The top screenshots have also been updated (the previous one was showing a dev version from 2016, before the app was even released). As a nod to Scott Joplin, the screenshot shows an imaginary plan to open a vintage piano store, with various tasks, tables, documents and images attached, to showcase Joplin features.

    +
  • +
  • +

    Finally there's a Press section, which includes extracts from some cool articles that have been written about the app.

    +
  • +
+

Also many thanks to everyone who voted and contributed to the tagline discussion! It helped narrow down what the tagline should be, along with the equally important description below. If you have any question or notice any issue with the website let me know!

+
+

Poll: What should Joplin tagline be?🔗

+

Published on 6 Jul 2021

+

Thanks everyone for your tagline suggestions - there were lots of good ideas in there. I've compiled a few of them and create a poll in the forum, so please cast your vote! And if you have any other suggestions on what would make a good tagline, feel free to post over there or here.

+

https://discourse.joplinapp.org/t/poll-what-should-joplin-tagline-be/18487

+
+

Any ideas for a Joplin tagline?🔗

+

Published on 5 Jul 2021

+

I'm going to update the website front page to better showcase the application. I have most of the sections right, but the part I'm still not sure about is the top tagline, so I'm wondering if anyone had any suggestion about it?

+

From what I can see on Google Keep or Evernote for example it should be something like "Use our app to get X or Y benefit", it should be a sentence that directly speaks to the user essentially.

+

So far I have "Your notes, anywhere you are" but I'm not certain that's particularly inspiring. Any other idea about what tagline could be used?

+
+

Poll: What's the size of your note collection?🔗

+

Published on 24 Jun 2021

+

Poll is on the forum:

+

https://discourse.joplinapp.org/t/poll-whats-the-size-of-your-note-collection/18191

+
+

Share notebooks and collaborate on them using Joplin Server 2.0🔗

+

Published on 21 Jun 2021

+

Since a few versions Joplin Server includes a way to share notebooks between users and collaborate on them - i.e. any participant can view or modify notes in the shared notebook. It's been present since version 2.x and the feature is getting close to be stable.

+

How does it work?

+

When connected to Joplin Server (or the upcoming Joplin Cloud service), a new "Share notebook" menu item is available when right-clicking on a notebook.

+

+

Click on it, and it will display a new dialog where you can add any number of recipients. Those recipients also need to be on the same Joplin Server instance. From this dialog you can also remove a recipient or unshare the whole notebook, in which case it will be removed from everybody's note collection, except yours.

+

+

Once this is done, the recipient(s) will receive a notification in Joplin the next time they synchronise their data:

+

+

Then, finally, once the invitation is accepted, Joplin will download all the shared notebooks and notes. A shared notebook is denoted by the usual Share icon. Now the invited user can read or modify the shared notes, add attachments, etc. and the changes will be visible to everyone with access to the notebook.

+

+

What's the availability of the notebook sharing feature?

+

The notebook sharing feature is available on Joplin Server and Joplin Cloud.

+

On desktop, you can share notebooks and of course view or modify any notebook that has been shared with you.

+

On mobile and CLI, you cannot currently share notebooks, but you can view or modify any notebook that has been shared with you.

+

If I share a notebook with someone, what access do they have?

+

Currently they have full access to the data, including reading, writing and deleting notebooks or notes. In a future version, access control might be implemented. For example, to only give read-only access to the shared notebook.

+

What can actually be shared?

+

All the sub-notebooks, notes and resources within the shared notebook are shared.

+

Does it work with End-To-End-Encryption?

+

Yes and no. It is possible to use the share notebook feature even with E2EE enabled, however any shared notebook or note will not be encrypted, otherwise you would have had to give your master key password to the people you share with, which you'd probably not want to do.

+

In a future version, this might be supported. For example by automatically creating a new master key for the shared notebook. You would then provide the recipients with that master key password.

+

What can it be used for?

+

Some ideas:

+
    +
  • +

    Plan a trip with friends or within a small organisation. For example, the notes could contain the maps, hotel and flight reservations, etc. or any document or note relevant to the trip. And all participants would have access to them.

    +
  • +
  • +

    Work on a project with colleagues. Everybody can access various work-related documents, add to them, modify them, etc. That could serve as a knowledge base for a project.

    +
  • +
  • +

    Another possible use, which has been requested many times, is to support multiple profiles. You could create a main profile that have access to all notes, and in there create a Work and Personal notebook. Then you would create a separate account for work. You can then share your Work notebook with that other account. That way the work account will only have access to the Work notebooks. You can use this technique in various ways to split your notebooks between multiple accounts and ensure strict separation between datasets.

    +
  • +
+
+

The six Google Summer of Code projects and students have been selected!🔗

+

Published on 18 May 2021

+

Google has reviewed the project proposals we had submitted and all students have been approved. Congratulation and welcome to our six students - we're looking forward to see your work!

+

Below is the list of projects along with the student name and mentors. This year we will have a main mentor and a co-mentor for each project and in the list below, the main mentor is listed first:

+

BibTeX Plugin

+

Student: Abdallah Ahmed

+

Mentors: Laurent Cozic, Helmut K. C. Tessarek

+

Improving Conflict Resolution Process

+

Student: Ahmed Alwasifey

+

Mentors: Jack Gruber, Caleb John

+

Kanban Board Plugin

+

Student: Mablin

+

Mentors: Roman Musin, Laurent Cozic

+

Paste Special

+

Student: Siddhant Sehgal

+

Mentors: Helmut K. C. Tessarek, Stefan Müller

+

Real-Time Collaboration

+

Student: Akash Konda

+

Mentors: Stefan Müller, Roman Musin

+

Template Plugin

+

Student: Nishant Mittal

+

Mentors: Jack Gruber, Caleb John

+

* * *

+

The official Google of Summer Code page has also been updated with the list of projects:

+

https://summerofcode.withgoogle.com/organizations/6579646541332480/

+
+

Sharing a note by link in Joplin Server 2.0🔗

+

Published on 13 May 2021

+

Joplin Server had a feature to share a note by link for a few versions now but it was mostly a beta feature. In Joplin Server 2.0, the feature will be officially released and should be stable.

+

To share a note, you will need the corresponding desktop application v2.0. Then you can right-click on any note and select "Share note..." from the context menu. You can also select multiple notes, and each will have its own share link.

+

+

After that a dialog opens showing you the note - from there you just need to click on "Copy shareable link" to create the share link and copy it to the clipboard.

+

+

You can then share this link with anyone and they will be able to see the note in their browser:

+

+

Note that at the moment sharing a link does not work with End-To-End Encryption. If you share a note, it will always be decrypted, even on the server. This should be addressed in a future version. The URL however is secure - only people you share the URL with will be able to see the note. In other words, it's not possible to guess or discover the URL any other way.

+
+

Joplin has been granted 6 project slots for GSoC 2021🔗

+

Published on 6 May 2021

+

Google has announced the project slots for GSoC 2021 and granted us 6 this year. That's a big step up from our first GSoC last year when we got 2!

+

In the coming weeks we will be reviewing the student applications again and select the 6 candidates as well as mentors. By the way if you might be interested in co-mentoring a project, feel free to let me know (More info in this post).

+
+

Call for Google Summer of Code mentors!🔗

+

Published on 30 Apr 2021

+

A message from PackElend, who's been helping us organise GSoC this year (and last year)

+

* * *

+

Hi Community,

+

we are going to apply for the GSoC student slots next week, soon we know what can be done this season.

+

To put us in a comfortable position it would be appreciated if there would another handful of people who would mentor a project.

+

Is there anyone interested in doing so?

+

* * *

+

Here is some information about the role of a mentor:

+

After student selection🔗

+
    +
  • Ensure your student is ready & active. They should have a dev environment, be regularly communicating in the community, and have prepared a project plan together with you.
  • +
  • Read the GSoC Mentoring Manual and ask questions if you have them.
  • +
  • If the student is not active during the community bonding period, please contact the organization administrators.
  • +
+

During the program🔗

+
    +
  • Help your student be successful. Commit to spending a minimum of 4 hours each week answering questions, giving advice, working with your student on blockers.
  • +
  • Agree with the students how many times per week they should write a progress report. Ensure that they deliver this report on time each week, and evaluate their progress.
  • +
  • You might have adjust goals based on their progress.
  • +
+
+

Getting close to being mainly a TypeScript project🔗

+

Published on 13 Apr 2021

+

Been checking the numbers now and then and I see there will soon be more TypeScript than JavaScript code in the repo:

+

+

Probably a good part of the JS code is in the CLI app, which hasn't been updated much. Critical parts of the app are now in TypeScript, including the synchronizer, database and encryption service. Joplin Server is also entirely in TypeScript. Even the database rows are now typed thanks to sql-ts.

+

So anyway TypeScript has been a big win for the project as it made it possible to refactor and modernise many parts of it in a safe way, and make the code future proof and easier to work with! I expect we should get to over 50% over the next few months.

+ +
+
+
+
+ + +
+ + + + + diff --git a/docs/note_history/index.html b/docs/note_history/index.html index e5a012785..1975cdaad 100644 --- a/docs/note_history/index.html +++ b/docs/note_history/index.html @@ -40,7 +40,7 @@ https://github.com/laurent22/joplin/blob/dev/readme/note_history.md media="all" onload="this.media='all'; this.onload = null" /> - + Note History | Joplin `; + const scriptFilePath = `${baseDir}/${src}`; + let content = fs.readFileSync(scriptFilePath, 'utf8'); + + // There's no simple way to insert arbitrary content in ` or `([^]*)/; function tocMd() { if (tocMd_) return tocMd_; - const md = fs.readFileSync(`${rootDir}/README.md`, 'utf8'); + const md = readFileSync(`${rootDir}/README.md`, 'utf8'); const toc = md.match(tocRegex_); tocMd_ = toc[1]; return tocMd_; @@ -32,7 +41,7 @@ function tocMd() { const donateLinksRegex_ = /([^]*)/; async function getDonateLinks() { - const md = await fs.readFile(`${rootDir}/README.md`, 'utf8'); + const md = await readFile(`${rootDir}/README.md`, 'utf8'); const matches = md.match(donateLinksRegex_); if (!matches) throw new Error('Cannot fetch donate links'); @@ -106,6 +115,8 @@ function renderPageToHtml(md: string, targetPath: string, templateParams: Templa ...templateParams, }; + templateParams.showBottomLinks = templateParams.showImproveThisDoc || !!templateParams.discussOnForumLink; + const title = []; if (!templateParams.title) { @@ -125,13 +136,13 @@ function renderPageToHtml(md: string, targetPath: string, templateParams: Templa const html = templateParams.contentHtml ? renderMustache(templateParams.contentHtml, templateParams) : markdownToPageHtml(md, templateParams); const folderPath = dirname(targetPath); - fs.mkdirpSync(folderPath); + mkdirpSync(folderPath); - fs.writeFileSync(targetPath, html); + writeFileSync(targetPath, html); } async function readmeFileTitle(sourcePath: string) { - const md = await fs.readFile(sourcePath, 'utf8'); + const md = await readFile(sourcePath, 'utf8'); const r = md.match(/(^|\n)# (.*)/); if (!r) { @@ -142,12 +153,13 @@ async function readmeFileTitle(sourcePath: string) { } function renderFileToHtml(sourcePath: string, targetPath: string, templateParams: TemplateParams) { - const md = fs.readFileSync(sourcePath, 'utf8'); + let md = readFileSync(sourcePath, 'utf8'); + md = stripOffFrontMatter(md).doc; return renderPageToHtml(md, targetPath, templateParams); } function makeHomePageMd() { - let md = fs.readFileSync(`${rootDir}/README.md`, 'utf8'); + let md = readFileSync(`${rootDir}/README.md`, 'utf8'); md = md.replace(tocRegex_, ''); // HACK: GitHub needs the \| or the inline code won't be displayed correctly inside the table, @@ -157,40 +169,9 @@ function makeHomePageMd() { return md; } -async function createDownloadButtonsHtml(readmeMd: string): Promise> { - const output: Record = {}; - output['windows'] = readmeMd.match(/()/)[0]; - output['macOs'] = readmeMd.match(/()/)[0]; - output['linux'] = readmeMd.match(/()/)[0]; - output['android'] = readmeMd.match(/(', '', desktopButtonsHtml.join(' ')); - await insertContentIntoFile(`${rootDir}/readme/download.md`, '', '', mobileButtonsHtml.join(' ')); -} - async function loadSponsors(): Promise { const sponsorsPath = `${rootDir}/packages/tools/sponsors.json`; - const output: Sponsors = JSON.parse(await fs.readFile(sponsorsPath, 'utf8')); + const output: Sponsors = JSON.parse(await readFile(sponsorsPath, 'utf8')); output.orgs = shuffle(output.orgs.map(o => { if (o.urlWebsite) o.url = o.urlWebsite; return o; @@ -199,9 +180,32 @@ async function loadSponsors(): Promise { return output; } +const makeNewsFrontPage = async (sourceFilePaths: string[], targetFilePath: string, templateParams: TemplateParams) => { + const maxNewsPerPage = 20; + + const frontPageMd: string[] = []; + + for (const mdFilePath of sourceFilePaths) { + let md = await readFile(mdFilePath, 'utf8'); + const info = stripOffFrontMatter(md); + md = info.doc.trim(); + const dateString = moment(info.created).format('D MMM YYYY'); + md = md.replace(/^# (.*)/, `# [$1](https://github.com/laurent22/joplin/blob/dev/readme/news/${path.basename(mdFilePath)})\n\n*Published on **${dateString}***\n\n`); + md += `\n\n* * *\n\n[ Discuss on the forum](${discussLink})`; + frontPageMd.push(md); + if (frontPageMd.length >= maxNewsPerPage) break; + } + + renderPageToHtml(frontPageMd.join('\n\n* * *\n\n'), targetFilePath, templateParams); +}; + +const isNewsFile = (filePath: string): boolean => { + return filePath.includes('readme/news/'); +}; + async function main() { - await fs.remove(`${rootDir}/docs`); - await fs.copy(websiteAssetDir, `${rootDir}/docs`); + await remove(`${docDir}`); + await copy(websiteAssetDir, `${docDir}`); const sponsors = await loadSponsors(); const partials = await loadMustachePartials(partialDir); @@ -209,20 +213,19 @@ async function main() { const readmeMd = makeHomePageMd(); - const downloadButtonsHtml = await createDownloadButtonsHtml(readmeMd); - await updateDownloadPage(downloadButtonsHtml); + // await updateDownloadPage(readmeMd); // ============================================================= // HELP PAGE // ============================================================= - renderPageToHtml(readmeMd, `${rootDir}/docs/help/index.html`, { sourceMarkdownFile: 'README.md', partials, sponsors, assetUrls }); + renderPageToHtml(readmeMd, `${docDir}/help/index.html`, { sourceMarkdownFile: 'README.md', partials, sponsors, assetUrls }); // ============================================================= // FRONT PAGE // ============================================================= - renderPageToHtml('', `${rootDir}/docs/index.html`, { + renderPageToHtml('', `${docDir}/index.html`, { templateHtml: frontTemplateHtml, partials, pressCarouselRegular: { @@ -245,7 +248,7 @@ async function main() { // PLANS PAGE // ============================================================= - const planPageFaqMd = await fs.readFile(`${rootDir}/readme/faq_joplin_cloud.md`, 'utf8'); + const planPageFaqMd = await readFile(`${rootDir}/readme/faq_joplin_cloud.md`, 'utf8'); const planPageFaqHtml = getMarkdownIt().render(planPageFaqMd, {}); const planPageParams: PlanPageParams = { @@ -259,7 +262,7 @@ async function main() { const planPageContentHtml = renderMustache('', planPageParams); - renderPageToHtml('', `${rootDir}/docs/plans/index.html`, { + renderPageToHtml('', `${docDir}/plans/index.html`, { ...defaultTemplateParams(assetUrls), pageName: 'plans', partials, @@ -278,28 +281,66 @@ async function main() { const sources = []; const donateLinksMd = await getDonateLinks(); + const makeTargetFilePath = (input: string): string => { + const filenameNoExt = basename(input, '.md'); + + if (isNewsFile(input)) { + return `${docDir}/news/${filenameNoExt}/index.html`; // `${input.replace(/\.md/, '').replace(/readme\/news\//, 'docs/news/')}/index.html`; + } else { + return `${docDir}/${filenameNoExt}/index.html`; + } + }; + + const newsFilePaths: string[] = []; + for (const mdFile of mdFiles) { const title = await readmeFileTitle(`${rootDir}/${mdFile}`); - const targetFilePath = `${mdFile.replace(/\.md/, '').replace(/readme\//, 'docs/')}/index.html`; + const targetFilePath = makeTargetFilePath(mdFile); + + const isNews = isNewsFile(mdFile); + if (isNews) newsFilePaths.push(mdFile); + sources.push([mdFile, targetFilePath, { title: title, donateLinksMd: mdFile === 'readme/donate.md' ? '' : donateLinksMd, - showToc: mdFile !== 'readme/download.md', + showToc: mdFile !== 'readme/download.md' && !isNews, }]); } for (const source of sources) { source[2].sourceMarkdownFile = source[0]; source[2].sourceMarkdownName = path.basename(source[0], path.extname(source[0])); - renderFileToHtml(`${rootDir}/${source[0]}`, `${rootDir}/${source[1]}`, { + + const sourceFilePath = `${rootDir}/${source[0]}`; + const targetFilePath = source[1]; + const isNews = isNewsFile(sourceFilePath); + + renderFileToHtml(sourceFilePath, targetFilePath, { ...source[2], templateHtml: mainTemplateHtml, + pageName: isNews ? 'news-item' : '', + discussOnForumLink: isNews ? discussLink : '', + showImproveThisDoc: !isNews, partials, assetUrls, }); } + + newsFilePaths.sort((a, b) => { + return a.toLowerCase() > b.toLowerCase() ? -1 : +1; + }); + + await makeNewsFrontPage(newsFilePaths, `${docDir}/news/index.html`, { + ...defaultTemplateParams(assetUrls), + pageName: 'news', + partials, + showToc: false, + showImproveThisDoc: false, + donateLinksMd, + }); } main().catch((error) => { console.error(error); + process.exit(1); }); diff --git a/packages/tools/website/updateDownloadPage.ts b/packages/tools/website/updateDownloadPage.ts new file mode 100644 index 000000000..694a5a0f1 --- /dev/null +++ b/packages/tools/website/updateDownloadPage.ts @@ -0,0 +1,41 @@ +import { readFile } from 'fs-extra'; +import { rootDir, insertContentIntoFile } from '../tool-utils'; + +async function getReadmeMd() { + return readFile(`${rootDir}/README.md`, 'utf8'); +} + +async function createDownloadButtonsHtml(readmeMd: string): Promise> { + const output: Record = {}; + output['windows'] = readmeMd.match(/()/)[0]; + output['macOs'] = readmeMd.match(/()/)[0]; + output['linux'] = readmeMd.match(/()/)[0]; + output['android'] = readmeMd.match(/(', '', desktopButtonsHtml.join(' ')); + await insertContentIntoFile(`${rootDir}/readme/download.md`, '', '', mobileButtonsHtml.join(' ')); +} diff --git a/packages/tools/website/utils/frontMatter.ts b/packages/tools/website/utils/frontMatter.ts new file mode 100644 index 000000000..f7bb847e7 --- /dev/null +++ b/packages/tools/website/utils/frontMatter.ts @@ -0,0 +1,62 @@ +const moment = require('moment'); + +export interface MarkdownAndFrontMatter { + doc: string; + created?: Date; + source_url?: string; +} + +const readProp = (line: string): string[] => { + line = line.trim(); + const d = line.indexOf(':'); + return [line.substr(0, d).trim(), line.substr(d + 1).trim()]; +}; + +export const stripOffFrontMatter = (md: string): MarkdownAndFrontMatter => { + if (md.indexOf('---') !== 0) return { doc: md }; + + let state: string = 'start'; + const lines = md.split('\n'); + const docLines: string[] = []; + + const output: MarkdownAndFrontMatter = { + doc: '', + }; + + for (const line of lines) { + if (state === 'start') { + if (line !== '---') throw new Error('Expected front matter block to start with "---"'); + state = 'in'; + continue; + } + + if (state === 'in') { + if (line === '---') { + state = 'out'; + continue; + } + + const propLine = line.trim(); + if (propLine) { + const p = readProp(propLine); + (output as any)[p[0]] = p[1]; + } + } + + if (state === 'out') { + if (line.trim()) state = 'doc'; + } + + if (state === 'doc') { + docLines.push(line); + } + } + + if (state !== 'doc') throw new Error('Front matter block was not closed with "---"'); + + output.doc = docLines.join('\n'); + + if (output.created) output.created = moment(output.created).toDate(); + + return output; +}; diff --git a/packages/tools/website/utils/render.ts b/packages/tools/website/utils/render.ts index e69adc0d0..e99c3e020 100644 --- a/packages/tools/website/utils/render.ts +++ b/packages/tools/website/utils/render.ts @@ -49,94 +49,5 @@ export function markdownToPageHtml(md: string, templateParams: TemplateParams): markdownIt.use(headerAnchor); - // markdownIt.core.ruler.push('checkbox', (state: any) => { - // const tokens = state.tokens; - // const Token = state.Token; - // const doneNames = []; - - // const headingTextToAnchorName = (text: string, doneNames: string[]) => { - // const allowed = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'; - // let lastWasDash = true; - // let output = ''; - // for (let i = 0; i < text.length; i++) { - // const c = text[i]; - // if (allowed.indexOf(c) < 0) { - // if (lastWasDash) continue; - // lastWasDash = true; - // output += '-'; - // } else { - // lastWasDash = false; - // output += c; - // } - // } - - // output = output.toLowerCase(); - - // while (output.length && output[output.length - 1] === '-') { - // output = output.substr(0, output.length - 1); - // } - - // let temp = output; - // let index = 1; - // while (doneNames.indexOf(temp) >= 0) { - // temp = `${output}-${index}`; - // index++; - // } - // output = temp; - - // return output; - // }; - - // const createAnchorTokens = (anchorName: string) => { - // const output = []; - - // { - // const token = new Token('heading_anchor_open', 'a', 1); - // token.attrs = [ - // ['name', anchorName], - // ['href', `#${anchorName}`], - // ['class', 'heading-anchor'], - // ]; - // output.push(token); - // } - - // { - // const token = new Token('text', '', 0); - // token.content = '🔗'; - // output.push(token); - // } - - // { - // const token = new Token('heading_anchor_close', 'a', -1); - // output.push(token); - // } - - // return output; - // }; - - // let insideHeading = false; - // for (let i = 0; i < tokens.length; i++) { - // const token = tokens[i]; - - // if (token.type === 'heading_open') { - // insideHeading = true; - // continue; - // } - - // if (token.type === 'heading_close') { - // insideHeading = false; - // continue; - // } - - // if (insideHeading && token.type === 'inline') { - // const anchorName = headingTextToAnchorName(token.content, doneNames); - // doneNames.push(anchorName); - // const anchorTokens = createAnchorTokens(anchorName); - // // token.children = anchorTokens.concat(token.children); - // token.children = token.children.concat(anchorTokens); - // } - // } - // }); - return renderMustache(markdownIt.render(md), templateParams); } diff --git a/packages/tools/website/utils/types.ts b/packages/tools/website/utils/types.ts index b5cf8fd92..e7ab9ab3f 100644 --- a/packages/tools/website/utils/types.ts +++ b/packages/tools/website/utils/types.ts @@ -70,6 +70,8 @@ export interface TemplateParams { navbar?: NavBar; showJoplinCloudLinks?: boolean; assetUrls: AssetUrls; + discussOnForumLink?: string; + showBottomLinks?: boolean; } export interface PlanPageParams extends TemplateParams { diff --git a/readme/blog/images/20190130-230218_0.png b/readme/blog/images/20190130-230218_0.png deleted file mode 100644 index 6a29819df..000000000 Binary files a/readme/blog/images/20190130-230218_0.png and /dev/null differ diff --git a/readme/blog/images/20191117-183855_0.png b/readme/blog/images/20191117-183855_0.png deleted file mode 100644 index cec3062b6..000000000 Binary files a/readme/blog/images/20191117-183855_0.png and /dev/null differ diff --git a/readme/blog/images/20191118-072700_0.png b/readme/blog/images/20191118-072700_0.png deleted file mode 100644 index cd369183f..000000000 Binary files a/readme/blog/images/20191118-072700_0.png and /dev/null differ diff --git a/readme/blog/images/20200301-125055_1.png b/readme/blog/images/20200301-125055_1.png deleted file mode 100644 index 746f47200..000000000 Binary files a/readme/blog/images/20200301-125055_1.png and /dev/null differ diff --git a/readme/changelog.md b/readme/changelog.md index 86a47bcd4..c14d8a2aa 100644 --- a/readme/changelog.md +++ b/readme/changelog.md @@ -1,5 +1,38 @@ # Joplin changelog +## [v2.6.9](https://github.com/laurent22/joplin/releases/tag/v2.6.9) - 2021-12-17T11:57:32Z + +- Update translations + +## [v2.6.7](https://github.com/laurent22/joplin/releases/tag/v2.6.7) (Pre-release) - 2021-12-16T10:47:23Z + +- New: Added detailed tooltip for 'Toggle Sort Order Field' button ([#5854](https://github.com/laurent22/joplin/issues/5854) by Kenichi Kobayashi) +- Fixed (Regression): Scroll positions are preserved ([#5826](https://github.com/laurent22/joplin/issues/5826)) ([#5708](https://github.com/laurent22/joplin/issues/5708) by Kenichi Kobayashi) + +## [v2.6.6](https://github.com/laurent22/joplin/releases/tag/v2.6.6) (Pre-release) - 2021-12-13T12:31:43Z + +- Improved: Changed note sort buttons to 3px radius ([#5771](https://github.com/laurent22/joplin/issues/5771) by [@Daeraxa](https://github.com/Daeraxa)) +- Improved: Update Mermaid: 8.12.1 -> 8.13.5 ([#5831](https://github.com/laurent22/joplin/issues/5831) by Helmut K. C. Tessarek) +- Fixed: Links in flowchart Mermaid diagrams ([#5830](https://github.com/laurent22/joplin/issues/5830)) ([#5801](https://github.com/laurent22/joplin/issues/5801) by Helmut K. C. Tessarek) + +## [v2.6.5](https://github.com/laurent22/joplin/releases/tag/v2.6.5) (Pre-release) - 2021-12-13T10:07:04Z + +- Fixed: Fixed "Invalid lock client type" error when migrating sync target (e0e93c4) + +## [v2.6.4](https://github.com/laurent22/joplin/releases/tag/v2.6.4) (Pre-release) - 2021-12-09T19:53:43Z + +- New: Add date format YYYY/MM/DD ([#5759](https://github.com/laurent22/joplin/issues/5759) by Helmut K. C. Tessarek) +- Improved: Allow flags for native wayland ([#5804](https://github.com/laurent22/joplin/issues/5804) by [@stephanoskomnenos](https://github.com/stephanoskomnenos)) +- Improved: Also duplicate resources when duplicating a note (c0a8c33) +- Improved: Improved S3 sync error handling and reliability, and upgraded S3 SDK ([#5312](https://github.com/laurent22/joplin/issues/5312) by Lee Matos) +- Improved: Improved error message when synchronising with Joplin Server ([#5754](https://github.com/laurent22/joplin/issues/5754)) +- Improved: When exporting as HTML, pack all images, styles and scripts inside the HTML file (98ed2be) +- Fixed: Fixed sharing notebook when recipient is not allowed to share (1bb7bbb) +- Fixed: Handle duplicate attachments when the parent notebook is shared ([#5796](https://github.com/laurent22/joplin/issues/5796)) +- Fixed: Opening a file with ctrl and click leads to an error in the Rich Text editor ([#5693](https://github.com/laurent22/joplin/issues/5693)) +- Fixed: Rich text editor flashing white when switching notes/editor ([#5793](https://github.com/laurent22/joplin/issues/5793)) ([#5311](https://github.com/laurent22/joplin/issues/5311) by [@CalebJohn](https://github.com/CalebJohn)) +- Fixed: Sync wizard is displayed incorrectly in dev mode ([#5749](https://github.com/laurent22/joplin/issues/5749)) ([#5373](https://github.com/laurent22/joplin/issues/5373) by [@Rishabhraghwendra18](https://github.com/Rishabhraghwendra18)) + ## [v2.6.2](https://github.com/laurent22/joplin/releases/tag/v2.6.2) (Pre-release) - 2021-11-18T12:19:12Z - New: Sort Order Buttons and Per-Notebook Sort Order ([#5437](https://github.com/laurent22/joplin/issues/5437) by Kenichi Kobayashi) diff --git a/readme/connection_check.md b/readme/connection_check.md index 54956193b..d31ff0fdb 100644 --- a/readme/connection_check.md +++ b/readme/connection_check.md @@ -1 +1,3 @@ +# Connection check + This page is used by default on the Joplin iOS app to perform the WiFi connection check. More info at https://joplinapp.org/privacy/ \ No newline at end of file diff --git a/readme/download.md b/readme/download.md index 46e3b8a1a..30d506aba 100644 --- a/readme/download.md +++ b/readme/download.md @@ -10,7 +10,7 @@ Your download of Joplin is in progress. Access your notes on Windows, macOS or Linux. -Get it on Windows Get it on macOS Get it on Linux +Get it on Windows Get it on macOS Get it on Linux diff --git a/readme/news/20180621-172112.md b/readme/news/20180621-172112.md new file mode 100644 index 000000000..8806d6375 --- /dev/null +++ b/readme/news/20180621-172112.md @@ -0,0 +1,12 @@ +--- +created: 2018-06-21T17:21:12.000+00:00 +source_url: https://www.patreon.com/posts/web-clipper-now-19589638 +--- + +# Web Clipper now available on Firefox and Chrome + +[One of the most requested feature](https://github.com/laurent22/joplin/issues/135), 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](https://joplin.cozic.net/clipper/) for more information. + +![](https://joplin.cozic.net/images/WebExtensionScreenshot.png) \ No newline at end of file diff --git a/readme/blog/20180621-182112.md b/readme/news/20180621-182112.md similarity index 100% rename from readme/blog/20180621-182112.md rename to readme/news/20180621-182112.md diff --git a/readme/news/20180906-101039.md b/readme/news/20180906-101039.md new file mode 100644 index 000000000..281bf08a1 --- /dev/null +++ b/readme/news/20180906-101039.md @@ -0,0 +1,14 @@ +--- +created: 2018-09-06T10:10:39.000+00:00 +source_url: https://www.patreon.com/posts/new-ios-release-21242395 +--- + +# New iOS release with improved attachment support + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20180906-101039_0.png) + +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. \ No newline at end of file diff --git a/readme/blog/20180906-111039.md b/readme/news/20180906-111039.md similarity index 100% rename from readme/blog/20180906-111039.md rename to readme/news/20180906-111039.md diff --git a/readme/news/20180916-200431.md b/readme/news/20180916-200431.md new file mode 100644 index 000000000..760d4342b --- /dev/null +++ b/readme/news/20180916-200431.md @@ -0,0 +1,12 @@ +--- +created: 2018-09-16T20:04:31.000+00:00 +source_url: https://www.patreon.com/posts/note-properties-21454692 +--- + +# Note properties in desktop application + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20180916-200431_0.png) + +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://joplin.cozic.net/changelog/ \ No newline at end of file diff --git a/readme/blog/20180916-210431.md b/readme/news/20180916-210431.md similarity index 100% rename from readme/blog/20180916-210431.md rename to readme/news/20180916-210431.md diff --git a/readme/news/20180929-111053.md b/readme/news/20180929-111053.md new file mode 100644 index 000000000..99a1b1179 --- /dev/null +++ b/readme/news/20180929-111053.md @@ -0,0 +1,12 @@ +--- +created: 2018-09-29T11:10:53.000+00:00 +source_url: https://www.patreon.com/posts/new-release-and-21717193 +--- + +# 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://joplin.cozic.net/changelog/ \ No newline at end of file diff --git a/readme/blog/20180929-121053.md b/readme/news/20180929-121053.md similarity index 100% rename from readme/blog/20180929-121053.md rename to readme/news/20180929-121053.md diff --git a/readme/news/20181004-081123.md b/readme/news/20181004-081123.md new file mode 100644 index 000000000..58a006a32 --- /dev/null +++ b/readme/news/20181004-081123.md @@ -0,0 +1,16 @@ +--- +created: 2018-10-04T08:11:23.000+00:00 +source_url: https://www.patreon.com/posts/joplin-and-2018-21841975 +--- + +# Joplin and Hacktobertfest 2018 🎃 + +The [Hacktobertfest event](https://hacktoberfest.digitalocean.com/)  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"](https://github.com/laurent22/joplin/labels/Hacktoberfest%20%3Ajack_o_lantern%3A) + +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.* \ No newline at end of file diff --git a/readme/blog/20181004-091123.md b/readme/news/20181004-091123.md similarity index 100% rename from readme/blog/20181004-091123.md rename to readme/news/20181004-091123.md diff --git a/readme/blog/20181101-174335.md b/readme/news/20181101-174335.md similarity index 71% rename from readme/blog/20181101-174335.md rename to readme/news/20181101-174335.md index 3ef3580e8..26669a0c7 100644 --- a/readme/blog/20181101-174335.md +++ b/readme/news/20181101-174335.md @@ -1,3 +1,8 @@ +--- +created: 2018-11-01T17:43:35.000+00:00 +source_url: https://www.patreon.com/posts/hacktoberfest-22447274 +--- + # 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: @@ -14,9 +19,4 @@ 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 \ No newline at end of file +Again many thanks to all those who have submitted a pull request, your efforts to improve the project are much appreciated! \ No newline at end of file diff --git a/readme/blog/20181213-173459.md b/readme/news/20181213-173459.md similarity index 89% rename from readme/blog/20181213-173459.md rename to readme/news/20181213-173459.md index 0b1324766..1201fdddc 100644 --- a/readme/blog/20181213-173459.md +++ b/readme/news/20181213-173459.md @@ -1,3 +1,8 @@ +--- +created: 2018-12-13T17:34:59.000+00:00 +source_url: https://www.patreon.com/posts/joplin-is-now-on-23311940 +--- + # Joplin is now featured on PrivacyTools.io Joplin is now [featured on PrivacyTools.io](https://www.privacytools.io/#notebook), 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](https://github.com/privacytoolsIO/privacytools.io/pull/659) and accepted soon after. @@ -10,9 +15,4 @@ The applications do not track users, and of course there is not and will never b \- 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 \ No newline at end of file +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. \ No newline at end of file diff --git a/readme/blog/20190130-230218.md b/readme/news/20190130-230218.md similarity index 81% rename from readme/blog/20190130-230218.md rename to readme/news/20190130-230218.md index 205bb946c..7a5498acc 100644 --- a/readme/blog/20190130-230218.md +++ b/readme/news/20190130-230218.md @@ -1,18 +1,18 @@ +--- +created: 2019-01-30T23:02:18.000+00:00 +source_url: https://www.patreon.com/posts/new-search-in-24342206 +--- + # 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](https://joplinapp.org/help/#searching). Unlike the previous search engine, the new one also sorts the results by relevance. +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](https://joplin.cozic.net/#searching). 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.  -![](images/20190130-230218_0.png) - -* * * - -url: https://www.patreon.com/posts/new-search-in-24342206 -published_at: 2019-01-30T23:02:18.000+00:00 \ No newline at end of file +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20190130-230218_0.png) \ No newline at end of file diff --git a/readme/news/20190404-064157.md b/readme/news/20190404-064157.md new file mode 100644 index 000000000..cf4a8e702 --- /dev/null +++ b/readme/news/20190404-064157.md @@ -0,0 +1,16 @@ +--- +created: 2019-04-04T06:41:57.000+00:00 +source_url: https://www.patreon.com/posts/markdown-plugins-25864443 +--- + +# 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. + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20190404-064157_0.png) + +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. + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20190404-064157_1.png) \ No newline at end of file diff --git a/readme/blog/20190404-074157.md b/readme/news/20190404-074157.md similarity index 100% rename from readme/blog/20190404-074157.md rename to readme/news/20190404-074157.md diff --git a/readme/news/20190424-102410.md b/readme/news/20190424-102410.md new file mode 100644 index 000000000..8ac1674da --- /dev/null +++ b/readme/news/20190424-102410.md @@ -0,0 +1,16 @@ +--- +created: 2019-04-24T10:24:10.000+00:00 +source_url: https://www.patreon.com/posts/joplin-forum-is-26325959 +--- + +# The Joplin forum is one year old + +Exactly one year ago, on 24 April 2018, the [Joplin forum](https://discourse.joplinapp.org/) was created as a result of [this post on GitHub](https://github.com/laurent22/joplin/issues/418). 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](https://blog.discourse.org/2016/03/free-discourse-forum-hosting-for-community-friendly-github-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](https://discourse.joplinapp.org/t/joplin-and-hacktobertfest-2018/752). It also serves as a knowledge base (via the [search function](https://discourse.joplinapp.org/search)) 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! \ No newline at end of file diff --git a/readme/blog/20190424-112410.md b/readme/news/20190424-112410.md similarity index 100% rename from readme/blog/20190424-112410.md rename to readme/news/20190424-112410.md diff --git a/readme/news/20190523-221026.md b/readme/news/20190523-221026.md new file mode 100644 index 000000000..ace068a54 --- /dev/null +++ b/readme/news/20190523-221026.md @@ -0,0 +1,36 @@ +--- +created: 2019-05-23T22:10:26.000+00:00 +source_url: https://www.patreon.com/posts/note-history-now-27083082 +--- + +# 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". + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20190523-221026_0.png) + +The next screen will show the latest version of the note. You can then choose to view a different version, if any, or to restore one of them. + +To restore a note, simply click on the "Restore" button. The old version of the note will be copied in a folder called "Restored Notes". The current version of the note will not be replaced or modified. + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20190523-221026_1.png) + +### 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. \ No newline at end of file diff --git a/readme/blog/20190523-231026.md b/readme/news/20190523-231026.md similarity index 100% rename from readme/blog/20190523-231026.md rename to readme/news/20190523-231026.md diff --git a/readme/news/20190610-230711.md b/readme/news/20190610-230711.md new file mode 100644 index 000000000..fd0ba7df9 --- /dev/null +++ b/readme/news/20190610-230711.md @@ -0,0 +1,16 @@ +--- +created: 2019-06-10T23:07:11.000+00:00 +source_url: https://www.patreon.com/posts/changing-to-save-27539487 +--- + +# 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. + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20190610-230711_0.png) + +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. \ No newline at end of file diff --git a/readme/blog/20190611-000711.md b/readme/news/20190611-000711.md similarity index 100% rename from readme/blog/20190611-000711.md rename to readme/news/20190611-000711.md diff --git a/readme/news/20190613-192613.md b/readme/news/20190613-192613.md new file mode 100644 index 000000000..e67e2e52f --- /dev/null +++ b/readme/news/20190613-192613.md @@ -0,0 +1,16 @@ +--- +created: 2019-06-13T19:26:13.000+00:00 +source_url: https://www.patreon.com/posts/customising-your-27609047 +--- + +# 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](https://joplinapp.org/#custom-css) 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.** + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20190613-192613_0.png) + +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. + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20190613-192613_1.png) \ No newline at end of file diff --git a/readme/blog/20190613-202613.md b/readme/news/20190613-202613.md similarity index 100% rename from readme/blog/20190613-202613.md rename to readme/news/20190613-202613.md diff --git a/readme/news/20190814-215957.md b/readme/news/20190814-215957.md new file mode 100644 index 000000000..8522bf8a1 --- /dev/null +++ b/readme/news/20190814-215957.md @@ -0,0 +1,28 @@ +--- +created: 2019-08-14T21:59:57.000+00:00 +source_url: https://www.patreon.com/posts/joplin-now-29169691 +--- + +# Joplin now supports Fountain screenwriting markup language + +[Fountain](https://fountain.io/) 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: + +```fountain + +\*\*FADE IN:\*\* + +A RIVER. + +We're underwater, watching a fat catfish swim along.   + +``` + +For example, here is Big Fish on mobile: + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20190814-215957_0.png) + +and on desktop: + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20190814-215957_1.png) \ No newline at end of file diff --git a/readme/blog/20190814-225957.md b/readme/news/20190814-225957.md similarity index 100% rename from readme/blog/20190814-225957.md rename to readme/news/20190814-225957.md diff --git a/readme/news/20190924-230254.md b/readme/news/20190924-230254.md new file mode 100644 index 000000000..fb11d042d --- /dev/null +++ b/readme/news/20190924-230254.md @@ -0,0 +1,44 @@ +--- +created: 2019-09-24T23:02:54.000+00:00 +source_url: https://www.patreon.com/posts/new-icon-for-30218482 +--- + +# 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** + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20190924-230254_0.png) + +**Icon B** + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20190924-230254_1.png) + +**Icon C** + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20190924-230254_2.png) + +**Icon D** + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20190924-230254_3.png) + +**Icon E** + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20190924-230254_4.png) + +**Icon F** + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20190924-230254_5.png) + +**Icon G** + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20190924-230254_6.png) + +**Icon H** + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20190924-230254_7.png) \ No newline at end of file diff --git a/readme/blog/20190925-000254.md b/readme/news/20190925-000254.md similarity index 100% rename from readme/blog/20190925-000254.md rename to readme/news/20190925-000254.md diff --git a/readme/news/20190929-142834.md b/readme/news/20190929-142834.md new file mode 100644 index 000000000..578214b41 --- /dev/null +++ b/readme/news/20190929-142834.md @@ -0,0 +1,21 @@ +--- +created: 2019-09-29T14:28:34.000+00:00 +source_url: https://www.patreon.com/posts/hacktoberfest-is-30334358 +--- + +# Hacktoberfest 2019 is coming soon! + +A word form @foxmask, our community manager! + +\* \* \* + +[Hacktoberfest](https://hacktoberfest.digitalocean.com/) 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](https://github.com/laurent22/joplin/labels/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'* \ No newline at end of file diff --git a/readme/blog/20190929-152834.md b/readme/news/20190929-152834.md similarity index 100% rename from readme/blog/20190929-152834.md rename to readme/news/20190929-152834.md diff --git a/readme/news/20191012-223121.md b/readme/news/20191012-223121.md new file mode 100644 index 000000000..28cb637b7 --- /dev/null +++ b/readme/news/20191012-223121.md @@ -0,0 +1,18 @@ +--- +created: 2019-10-12T22:31:21.000+00:00 +source_url: https://www.patreon.com/posts/support-for-for-30712513 +--- + +# 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-}$ + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20191012-223121_0.png) \ No newline at end of file diff --git a/readme/blog/20191012-233121.md b/readme/news/20191012-233121.md similarity index 100% rename from readme/blog/20191012-233121.md rename to readme/news/20191012-233121.md diff --git a/readme/news/20191014-155136.md b/readme/news/20191014-155136.md new file mode 100644 index 000000000..31c2b7c45 --- /dev/null +++ b/readme/news/20191014-155136.md @@ -0,0 +1,14 @@ +--- +created: 2019-10-14T15:51:36.000+00:00 +source_url: https://www.patreon.com/posts/new-joplin-icon-30751136 +--- + +# New Joplin icon, second round + + The quest for a [new Joplin icon](https://www.patreon.com/posts/new-icon-for-30218482)  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! + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20191014-155136_0.png) \ No newline at end of file diff --git a/readme/blog/20191014-165136.md b/readme/news/20191014-165136.md similarity index 100% rename from readme/blog/20191014-165136.md rename to readme/news/20191014-165136.md diff --git a/readme/blog/20191101-131852.md b/readme/news/20191101-131852.md similarity index 83% rename from readme/blog/20191101-131852.md rename to readme/news/20191101-131852.md index 6b7057bfa..0de63694f 100644 --- a/readme/blog/20191101-131852.md +++ b/readme/news/20191101-131852.md @@ -1,3 +1,8 @@ +--- +created: 2019-11-01T13:18:52.000+00:00 +source_url: https://www.patreon.com/posts/hacktoberfest-31221846 +--- + # Hacktoberfest 2019 has now ended 🎃 We got lots of great contributions for Hacktoberfest 2019, including:  @@ -9,9 +14,4 @@ This year, one small issue is that we got 11 "spam" contributions, as in pull re 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 \ No newline at end of file +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. \ No newline at end of file diff --git a/readme/blog/20191117-183855.md b/readme/news/20191117-183855.md similarity index 84% rename from readme/blog/20191117-183855.md rename to readme/news/20191117-183855.md index 048a55083..e80bbb0fb 100644 --- a/readme/blog/20191117-183855.md +++ b/readme/news/20191117-183855.md @@ -1,8 +1,13 @@ +--- +created: 2019-11-17T18:38:55.000+00:00 +source_url: https://www.patreon.com/posts/and-winner-is-31636650 +--- + # And the winner is... After much discussion and votes and new logo and icon for Joplin has finally been decided: -![](images/20191117-183855_0.png) +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20191117-183855_0.png) 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. @@ -24,9 +29,4 @@ 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 \ No newline at end of file +Many thanks to everyone who's contributed to the votes and discussion! \ No newline at end of file diff --git a/readme/blog/20191118-072700.md b/readme/news/20191118-072700.md similarity index 89% rename from readme/blog/20191118-072700.md rename to readme/news/20191118-072700.md index 41770bf4e..65cbd7123 100644 --- a/readme/blog/20191118-072700.md +++ b/readme/news/20191118-072700.md @@ -1,6 +1,11 @@ +--- +created: 2019-11-18T07:27:00.000+00:00 +source_url: https://www.patreon.com/posts/joplin-is-into-31650911 +--- + # Joplin is looking into joining Google Summer of Code in 2020 -![](images/20191118-072700_0.png) +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20191118-072700_0.png) 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. @@ -15,9 +20,4 @@ Fell free to make a suggestion or offer support by creating topics in the [Featu 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 \ No newline at end of file +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. \ No newline at end of file diff --git a/readme/blog/20200220-190804.md b/readme/news/20200220-190804.md similarity index 68% rename from readme/blog/20200220-190804.md rename to readme/news/20200220-190804.md index 344e7c892..909f53ea8 100644 --- a/readme/blog/20200220-190804.md +++ b/readme/news/20200220-190804.md @@ -1,12 +1,12 @@ +--- +created: 2020-02-20T19:08:04.000+00:00 +source_url: https://www.patreon.com/posts/gsoc-2020-joplin-34196835 +--- + # GSoC 2020: Joplin has been accepted as a mentor organization! Good news, our Google Summer of Code 2020 application [has been accepted](https://summerofcode.withgoogle.com/organizations/?sp-search=joplin#6258880889225216)! 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](https://joplinapp.org/gsoc2020/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 \ No newline at end of file +We hope some of them will work on [the project ideas](https://joplinapp.org/gsoc2020/ideas.html) we've suggested, and develop some great features this summer! \ No newline at end of file diff --git a/readme/blog/20200301-125055.md b/readme/news/20200301-125055.md similarity index 85% rename from readme/blog/20200301-125055.md rename to readme/news/20200301-125055.md index 5e27293e5..e66231dd3 100644 --- a/readme/blog/20200301-125055.md +++ b/readme/news/20200301-125055.md @@ -1,3 +1,8 @@ +--- +created: 2020-03-01T12:50:55.000+00:00 +source_url: https://www.patreon.com/posts/large-desktop-34477238 +--- + # 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: @@ -6,7 +11,7 @@ I haven't kept up with releases lately and thus the new one is quite big, it inc 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. -![](images/20200301-125055_0.png) +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20200301-125055_0.png) More info in the [Mermaid Markdown documentation](https://joplinapp.org/markdown/#diagrams)  @@ -14,7 +19,7 @@ More info in the [Mermaid Markdown documentation](https://joplinapp.org/markdown A dialog is now available to provide statistics about the current note. It includes line, word and character count: -![](images/20200301-125055_1.png) +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20200301-125055_1.png) To open it, click on the post-it toolbar icon. @@ -36,9 +41,4 @@ It is often more difficult to keep up with Linux due to the wide variety of dist 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](https://github.com/laurent22/joplin/releases/tag/v1.0.187), 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 \ No newline at end of file +The update is already available as a pre-release [on the GitHub release page](https://github.com/laurent22/joplin/releases/tag/v1.0.187), and should be available as a final release soon. \ No newline at end of file diff --git a/readme/blog/20200314-001555.md b/readme/news/20200314-001555.md similarity index 85% rename from readme/blog/20200314-001555.md rename to readme/news/20200314-001555.md index b102fdf6b..53e6666f3 100644 --- a/readme/blog/20200314-001555.md +++ b/readme/news/20200314-001555.md @@ -1,8 +1,13 @@ +--- +created: 2020-03-14T00:15:55.000+00:00 +source_url: https://www.patreon.com/posts/experimental-in-34246624 +--- + # Experimental WYSIWYG editor in Joplin The latest pre-release of Joplin ([v1.0.194](https://github.com/laurent22/joplin/releases/tag/v1.0.194)) includes a new WYSIWYG editor, a prototype for now, but a first step towards integrating this feature into Joplin. -![](images/20200314-001555_0.gif) +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20200314-001555_0.gif) 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. @@ -22,11 +27,6 @@ Some features are missing, most notably the ability to insert plugin blocks such 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](https://github.com/laurent22/joplin/issues/176)  +Again if you find any issue, please report it on GitHub: https://github.com/laurent22/joplin/issues/176  -![](images/20200314-001555_1.gif) - -* * * - -url: https://www.patreon.com/posts/experimental-in-34246624 -published_at: 2020-03-14T00:15:55.000+00:00 \ No newline at end of file +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20200314-001555_1.gif) \ No newline at end of file diff --git a/readme/news/20200406-214254.md b/readme/news/20200406-214254.md new file mode 100644 index 000000000..abbe20d9d --- /dev/null +++ b/readme/news/20200406-214254.md @@ -0,0 +1,40 @@ +--- +created: 2020-04-06T21:42:54.000+00:00 +source_url: https://www.patreon.com/posts/joplin-informal-35719724 +--- + +# 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](https://tozny.com) 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](https://pdfs.semanticscholar.org/bb95/0d82fd390e732f71d8320530994bfb6d2529.pdf)  + +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](https://crypto.stackexchange.com/questions/61915/can-i-hash-a-secret-key-and-used-the-hash-as-key-id). 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](https://github.com/laurent22/joplin/pull/2861) 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. \ No newline at end of file diff --git a/readme/blog/20200406-224254.md b/readme/news/20200406-224254.md similarity index 100% rename from readme/blog/20200406-224254.md rename to readme/news/20200406-224254.md diff --git a/readme/news/20200505-181736.md b/readme/news/20200505-181736.md new file mode 100644 index 000000000..01808ee15 --- /dev/null +++ b/readme/news/20200505-181736.md @@ -0,0 +1,22 @@ +--- +created: 2020-05-05T18:17:36.000+00:00 +source_url: https://www.patreon.com/posts/gsoc-2020-have-36782383 +--- + +# GSoC 2020 students have been announced by Google + +The first phase of GSoC has ended and  the two students who will be working with the Joplin community in summer have been selected! So congratulation to [@naviji](https://discourse.joplinapp.org/u/naviji)  and [@anjulalk](https://discourse.joplinapp.org/u/anjulalk)  ! We’re glad to have you on board, and looking forward for the  improvements you’re going to make as part of your projects on,  respectively, the **search engine** and the **keyboard shortcut editor**! We’ll be in touch to give you more info on what happens next. + +On our side, this is our first GSoC and we learnt quite a bit in the  process. We got feedback from the students and we’re definitely taking  it on board. One key point is that we didn’t expect Joplin to get that  much interest as this is a relatively new project, and as a result we  had trouble managing the number of proposals and pull requests we got.  We also quickly ran out of “Good first issues”, which means for students  coming a bit late it wasn’t clear what you could work on. + +So next year, we’ll restrict a bit the number and the type of pull  requests each student can make. Ideally we’d prefer if you work on only  one or two medium-sized pull requests, rather than several small ones,  so that you can really focus on it and give your best work. Of course,  that makes it also more manageable for us as there will be less pull  requests to review. I wasn’t too happy with the way I was reviewing  sometimes, giving short and not very helpful comments at time, as I was  trying to get as many PRs done as possible. Instead it would be best to  do less but do it better. + +Another point is that we should make it clear how many slots we’re  likely to get. We cannot know for sure, it’s up to Google, but we can at  least give an estimate. That way, you can decide whether it makes sense  to invest your time in the project, or if it would be best to pick a  different, less busy project. + +In any case, this is a learning process for all, and we aim to improve over time. + +Also a quick update on the number of pull requests - so far we have reviewed and processed 104 pull requests for GSoC (59 of which were merged) and there are still 32 pull requests that need to be reviewed and merged. So that's a lot of improvements and bug fixes on Joplin in the coming weeks. + +Many thanks to all the students who joined us this year! We  definitely appreciate your time and contribution on this project,  whether it’s with your pull requests or via your participation on the  forum, and you’re of course welcome to give it another try next year, or  to stay around in the community. + +Also many thanks to our mentors [@PackElend](https://discourse.joplinapp.org/u/packelend), [@bedwardly-down](https://discourse.joplinapp.org/u/bedwardly-down), [@mic704b](https://discourse.joplinapp.org/u/mic704b), [@tessus](https://discourse.joplinapp.org/u/tessus), [@CalebJohn](https://discourse.joplinapp.org/u/calebjohn), [@rullzer](https://discourse.joplinapp.org/u/rullzer) for their help coordinating all this, writing the documentation and reviewing pull request and proposals! \ No newline at end of file diff --git a/readme/news/20200606-151446.md b/readme/news/20200606-151446.md new file mode 100644 index 000000000..3afca6b1d --- /dev/null +++ b/readme/news/20200606-151446.md @@ -0,0 +1,20 @@ +--- +created: 2020-06-06T15:14:46.000+00:00 +source_url: https://www.patreon.com/posts/new-pre-release-37955161 +--- + +# New pre-release coming soon + +Now that the GSoC changes have been merged and the application made more stable following the rewrite of the note editor code, a new pre-release will be available soon. + +It will include several important features, which I will describe into more details in following posts, but for information the main new features will be: + +\- Allow editing note attachments and syncing the changes + +\- Save sensitive settings such as passwords to the system keychain + +\- Allow changing the app appearance according to the system theme + +\- Allow manually ordering notes + +\- A new text editor, Code Mirror, will be available for beta-testing \ No newline at end of file diff --git a/readme/news/20200607-112720.md b/readme/news/20200607-112720.md new file mode 100644 index 000000000..8d8ff6f49 --- /dev/null +++ b/readme/news/20200607-112720.md @@ -0,0 +1,40 @@ +--- +created: 2020-06-07T11:27:20.000+00:00 +source_url: https://www.patreon.com/posts/new-editor-dark-37980343 +--- + +# New editor, editable attachments, dark mode support and more in latest pre-release + +The [latest pre-release is now available](https://github.com/laurent22/joplin/releases) and includes 13 bug fixes and 9 various improvements and new features, among others: + +**Editable attachments** + +Files you attach to a note can now be edited. To do this, click on the attachment or, if it's an image, right-click on it and select open. The file will then be watched by the application and any change you make will be saved to Joplin, and synchronised. + +**New Markdown editor** + +A new Markdown editor (Code Mirror) is now included with Joplin. For now it is for beta testing only so you need to manually enable it in the options in "Note" => "Use CodeMirror as the code editor". The goal of this new editor is to address several of the issues that have affected the previous Markdown editor and that were either hard or impossible to fix, in particular: + +- Support for spell checking. Note that it is not yet implemented in the new editor but it at least can be done now. +- Variable font size. The previous editor would not allow this, which would cause various issues. +- Search within the Markdown text. Previously it was only possible to searched with the note viewer but with this editor it should be possible to search within the Markdown text too. +- Improved support for emojis. +- Improved support for Asian languages and Russian. + +If possible, please help test this new editor and [report any issue in the forum](https://discourse.joplinapp.org/)! (or GitHub) + +**Manual ordering of notes** + +You can now manually order the notes within the notebook. For this to work, make sure you choose "Custom order" in the menu View => Sort Notes by + +**Support for system keychain on macOS and Windows** + +One of the issues mentioned in the [security audit](https://www.patreon.com/posts/joplin-informal-35719724) was that certain sensitive settings, like Nextcloud or encryption passwords were saved unencrypted in the Joplin profile. This new release will make use of the system keychain when it is available and move the sensitive settings to it. You don't need to do anything to make use of this feature, it is automatically enabled in this release. + +Currently this is supported on macOS and Windows. It is disabled of course for the portable version, and is also not currently enabled for Linux due to a build issue and less consistent support than on macOS and Windows. + +**Support for system theme** + +The app can now auto-detect the system theme and switch to it automatically. This essentially adds support for system "dark mode", which are now common on most operating systems. You may choose a preferred "light" theme and "dark" theme in the option. + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20200607-112720_0.png) \ No newline at end of file diff --git a/readme/news/20200613-103545.md b/readme/news/20200613-103545.md new file mode 100644 index 000000000..8bf213405 --- /dev/null +++ b/readme/news/20200613-103545.md @@ -0,0 +1,10 @@ +--- +created: 2020-06-13T10:35:45.000+00:00 +source_url: https://www.patreon.com/posts/new-design-for-38190482 +--- + +# New design for Joplin! + +Thanks to the mentor stipend we got from Google for GSoC, we've been able to hire a designer to improve the design of the desktop application. Serj is now at his second iteration and your feedback on it would be most welcome! + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20200613-103545_0.png) \ No newline at end of file diff --git a/readme/news/20200616-191918.md b/readme/news/20200616-191918.md new file mode 100644 index 000000000..d8958de95 --- /dev/null +++ b/readme/news/20200616-191918.md @@ -0,0 +1,12 @@ +--- +created: 2020-06-16T19:19:18.000+00:00 +source_url: https://www.patreon.com/posts/version-3-of-new-38305158 +--- + +# Version 3 of the new design is ready! + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20200616-191918_0.png) + +As usual your feedback is welcome, and just for info some of this is going to change. In particular what's mentioned in my own feedback: + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20200616-191918_1.png) \ No newline at end of file diff --git a/readme/news/20200620-114515.md b/readme/news/20200620-114515.md new file mode 100644 index 000000000..efddf2cf3 --- /dev/null +++ b/readme/news/20200620-114515.md @@ -0,0 +1,10 @@ +--- +created: 2020-06-20T11:45:15.000+00:00 +source_url: https://www.patreon.com/posts/version-4-of-new-38432550 +--- + +# Version 4 of the new design is ready! + +I think it's nearly there as all the details have been ironed out now. If you notice any issue or have any suggestion though, feel free to let me know! + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20200620-114515_0.png) \ No newline at end of file diff --git a/readme/news/20200622-084127.md b/readme/news/20200622-084127.md new file mode 100644 index 000000000..004d84d81 --- /dev/null +++ b/readme/news/20200622-084127.md @@ -0,0 +1,12 @@ +--- +created: 2020-06-22T08:41:27.000+00:00 +source_url: https://www.patreon.com/posts/please-cast-your-38490292 +--- + +# Please cast your vote for the new Joplin colour scheme + +For those who haven't seen it, there's an ongoing poll on the forum to vote for the new colour scheme (Light Theme for now): + +https://discourse.joplinapp.org/t/please-vote-for-the-new-light-theme-colour-scheme/9504  + +Please cast your vote if you haven't already, or add a comment here if you don't have a forum account. \ No newline at end of file diff --git a/readme/news/20200626-134029.md b/readme/news/20200626-134029.md new file mode 100644 index 000000000..86b80114a --- /dev/null +++ b/readme/news/20200626-134029.md @@ -0,0 +1,10 @@ +--- +created: 2020-06-26T13:40:29.000+00:00 +source_url: https://www.patreon.com/posts/desktop-new-is-38641769 +--- + +# Desktop new design is nearly ready, please cast your final vote! + +Please either vote on the forum or let me know here what option you would prefer: + +https://discourse.joplinapp.org/t/desktop-new-design-is-nearly-ready-please-cast-your-final-vote/9698 \ No newline at end of file diff --git a/readme/news/20200708-192444.md b/readme/news/20200708-192444.md new file mode 100644 index 000000000..29f576f4e --- /dev/null +++ b/readme/news/20200708-192444.md @@ -0,0 +1,24 @@ +--- +created: 2020-07-08T19:24:44.000+00:00 +source_url: https://www.patreon.com/posts/new-config-is-39113279 +--- + +# New config screen design is ready! + +The design put the menu bar on the left, which I think makes sense, as it's consistent with the main screen UI. And I expect this bar will be the same colour as the main screen sidebar + +For checkboxes Serj used a toggle button, which actually makes it easier to align all the labels on the left (a checkbox with a label on the left looks strange) so I might go with it. + +Otherwise the screens are relatively similar but tidier. If you have any suggestion on what could be changed, feel free to let me know. + +**Synchronisation config** + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20200708-192444_0.png) + +**Synchronisation config (error messages)** + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20200708-192444_1.png) + +**Plugin config** + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20200708-192444_2.png) \ No newline at end of file diff --git a/readme/news/20200906-172325.md b/readme/news/20200906-172325.md new file mode 100644 index 000000000..e38d67f10 --- /dev/null +++ b/readme/news/20200906-172325.md @@ -0,0 +1,48 @@ +--- +created: 2020-09-06T17:23:25.000+00:00 +source_url: https://www.patreon.com/posts/improving-sync-41310131 +--- + +# Improving the sync process in Joplin + +The latest version of Joplin includes a mechanism to upgrade the  structure of a sync target. When you startup the app you will be asked  to upgrade before being able to sync. Once you start the process, the  app will briefly display an information screen, upgrade the sync target,  and then restart the app. You’ll then be able to sync with the new sync  target format. That first upgrade is quite simple as the goal for now  is to put the mechanism in place and verify that it works well. + +From a user perspective this feature doesn’t do anything visible, although [it caused some issues](https://github.com/laurent22/joplin/issues/3692#issuecomment-685679213), so one might wonder why it’s even there. This post is meant to clarify this. + +The structure of the sync target hasn’t really changed since the day  Joplin was released. It works well however it has some shortcomings that  should be fixed eventually for sync to remain performant. + +There are also various improvements that could be made but were not  previously possible due to the lack of an upgrade mechanism. I have  listed below the 5 main limitations or issues with the current sync  process and how they could be fixed: + +### No upper limit on the number of items + +Joplin’s UI works well even with millions of notes, however the sync  target will keep getting slower and slower as more files are added to  it. File systems often have a limit to the number of files they can  support in a directory. One user also has reached [the limit of 150,000 items on OneDrive](https://discourse.joplinapp.org/t/limit-on-the-number-of-child-items-was-reached/3804). + +For now, this is not a big issue because most users don’t have  millions of items, but as more web pages are being clipped (clipped  pages often contain many small resources and images) and more note  revisions are created (one note can have hundreds of revisions), this  issue might start affecting more users. + +One way to solve this issue would be to split the sync items into  multiple directories. For example if we split the main directory into  100 sub-directories, it will be possible to have 15,000,000 OneDrive  items instead of 150,000. Another way would be to support note  archiving, as described below. How exactly we’ll handle this problem is  still to be defined, but there are certainly ways. + +### Not possible to prioritise downloads + +Currently, when syncing, the items are downloaded in a random way. So  it might download some notes, then some tags and notebooks, then back  to downloading notes, etc. For small sync operations it doesn’t matter,  but large ones, like when setting up a new device, it is very  inefficient. For example, the app might download hundreds of note  revisions or tags, but won’t display anything for a while because it  won’t have downloaded notebooks or notes. + +A simple improvement would be to group the items by type on the sync  target. So all notebook items together, all tags together, etc. Doing so  means when syncing we can first download the notebooks, then the notes,  which means something will be displayed almost immediately in the app,  allowing the user to start using it. Then later less important items  like tags or note revisions will be downloaded. + +### End-to-end encryption is hard to setup + +Currently, the encryption settings is a property of the clients. What  it means it that when you setup a new client, it doesn’t know whether  the other clients use encryption or not. It’s going to guess more or  less based on the data on the sync target. You can also force it to use  encryption but this has drawbacks and often mean a new master key is  going to be created, even though there might already be one on the sync  target. + +E2EE works well once it’s setup, but doing so can be tricky and possibly confusing - if you didn’t follow [this guide](https://joplinapp.org/e2ee/) to the letter, you might end up with multiple master keys, or sending decrypted notes to an encrypted target. + +A way to solve this would be to make the E2EE settings a property of  the sync target. Concretely there would be a file that tells if E2EE is  enabled or not, and maybe some way to quickly get the master key. It  would simplify setting up encryption a lot and make it more secure  (because you won’t be able to send non-encrypted notes to an encrypted  sync target). When you setup a new client, the client will know  immediately if it’s an encrypted target or not and set the client  accordingly. + +### Old notes that never change should be handled differently + +It would be more efficient to treat old notes differently by allowing  the user to “archive” them. An archived note would be read-only. Then  one idea could be to group all these archived notes into a ZIP file on  the sync target. Doing so means that the initial sync would be much  faster (instead of downloading hundred of small files, which is slow, it  will download one large file, which is fast). It would also make the  structure more scalable - you could keep several years of archived notes  on the sync target while keeping sync fast and efficient. + +### The resource directory should be renamed + +The folder that contains file attachments is named “.resources” on  the sync target. This causes troubles because certain platforms will  hide directories that start with dot “.”, and perhaps they will be  excluded from backup or skipped when moved somewhere else. Being able to  upgrade the sync target means we can rename this folder to just  “resources” instead. + +### Conclusion + +That’s obviously a lot of possible improvements and it won’t be done  overnight, but having the sync upgrade mechanism in place means we can  start considering these options. Some of these, such as renaming the  “resources” dir are simpler and could be done relatively soon. Perhaps  other more complex ones will be group within one sync target upgrade to  minimise disruption. In any case, I hope this clarifies the reason for  this recent sync upgrade and that it gives some ideas of what to expect  in the future. \ No newline at end of file diff --git a/readme/news/20200913-163730.md b/readme/news/20200913-163730.md new file mode 100644 index 000000000..24f0c2d2c --- /dev/null +++ b/readme/news/20200913-163730.md @@ -0,0 +1,36 @@ +--- +created: 2020-09-13T16:37:30.000+00:00 +source_url: https://www.patreon.com/posts/version-1-1-41561666 +--- + +# Version 1.1: Search engine update + +In this series of posts, I will introduce the changes that are coming in version 1.1 (which in fact is already available as a pre-release). + +For this first feature, I will let Naveen, our GSoC candidate, present it. Naveen has made an excellent job implementing various search engine features, including advanced filters, support for Okapi BM25 scoring algorithm, and fuzzy search. Here is what he has to say: + +### What got done + +The project consisted of three parts: + +1. Make search better by introducing additional search filters. (e.g., tags, notebook, type) +2. Make the ranking of search results better by implementing the [Okapi BM25](https://en.wikipedia.org/wiki/Okapi_BM25) relevance function. +3. Make fuzzy search possible. + +### Code contributions + +1. [**All: Add search filters**](https://github.com/laurent22/joplin/pull/3213) + Joplin's search had been using the Full-Text Search(FTS) offered by  SQLite directly. So though it was fast, it was not versatile. For  example, we can't restrict the search scope to a particular notebook or  search based on tags. + The current search implementation fixes most of these problems. It  provides a better abstraction over FTS, supporting many new filters. The  documentation for the new search filters can be found [here.](https://github.com/laurent22/joplin#searching) +   +2. [**All: Weigh notes using Okapi BM25 score**](https://github.com/laurent22/joplin/pull/3454) + Joplin used a ranking function based on the number of times the search query occurs in the note and how close they are. + But there are better ways to rank notes, considering not just the  number of times a word appears, but how common it is. Words like "the"  is in most notes, while words like "zebra" are not common and should be  considered more relevant. + The new search implementation uses [Okapi BM25](https://en.wikipedia.org/wiki/Okapi_BM25)  as the ranking function. It ranks a set of documents based on the query  terms appearing in each document, regardless of their proximity. +   +3. [**Desktop: Fuzzy search**](https://github.com/laurent22/joplin/pull/3632) + We've added support for fuzzy search. It doesn't replace the need to put  * at the end if you want to do a prefix search. But it does let you be a  bit more relaxed about the exact spelling. Searching for "tomatos" will  also give you results for "tomatoes". (This feature isn't released yet,  but will be soon) + +It has been a pleasure working with Laurent and Caleb. They did an excellent job as mentors. + +I hope these new features will be useful to many people. I plan to  continue as a member of the Joplin community and help in whatever way I  can. \ No newline at end of file diff --git a/readme/news/20200915-091108.md b/readme/news/20200915-091108.md new file mode 100644 index 000000000..17491517a --- /dev/null +++ b/readme/news/20200915-091108.md @@ -0,0 +1,39 @@ +--- +created: 2020-09-15T09:11:08.000+00:00 +source_url: https://www.patreon.com/posts/version-1-1-41625391 +--- + +# Version 1.1: Keyboard shortcut editor + +In this series of posts about version 1.1, we'll introduce another feature by one of our GSoC candidates, Anjula. Anjula developed over the past few months a system to allow configuring the keymap shortcuts, and created a nice editor for it.  Here is what he has to say: + +\* \* \* + +Joplin desktop application supports keyboard shortcuts to a certain  degree. However, there wasn't an option for users to configure keyboard  shortcuts according to their preferences. My project was to implement a  keyboard shortcut editor along with the necessary integration. + +Custom keyboard shortcuts would be a great addition for all Joplin  users including power users and those who are migrating to Joplin from  other note-taking applications. People also do not have the same  keyboard layout; not everyone has F6 necessarily. It would solve  conflicts between different preferences of workflows, and increase  discoverability for all keyboard shortcuts. + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20200915-091108_0.png) + +### Back-end service for handling keymapping-related functionality + +KeymapService builds an in-memory keymap based on the default keymap  configuration. The default keymap configuration may vary from platform  to platform. Essentially, the in-memory keymap binds a keyboard shortcut  for some command of Joplin. Clients of KeymapService may obtain the  keyboard shortcuts for some commands, and/or alter the keymap via the  provided methods. + +KeymapService also allows altering the keymap via a keymap file,  which is located in the profile directory. Contents of this keymap file  will take higher priority than the default keymap configuration, and  will replace the default keyboard shortcuts. + +It is guaranteed that the keymap always stays pristine with proper validation. + +### Keyboard shortcut editor with the necessary functionality to alter the keymap + +Depending on the interfaces of KeymapService, the Keyboard shortcut editor allows the user to, + +- View all the available commands and their respective keyboard shortcuts +- Change, or disable a keyboard shortcut for some command +- Restore a keyboard shortcut to its default value +- Export all changes to a keymap file (in JSON format) +- Import changes from an exported keymap file +- Perform a simple search to locate some shortcut + +Changes performed to the keymap will be reflected immediately in the  application user-interface as well as in the keymap file located in the  profile directory. The editor will also perform continuous validation to  ensure that the keymap will not enter a dirty-state. For example, it  won't allow the user to use the same shortcut for two or more commands. + +The complete report with details of code contributions can be found [here.](https://gist.github.com/rahulbansal3005/3d566668a94c882d9f56811e18a2b17f) \ No newline at end of file diff --git a/readme/news/20201030-114530.md b/readme/news/20201030-114530.md new file mode 100644 index 000000000..7c27980b7 --- /dev/null +++ b/readme/news/20201030-114530.md @@ -0,0 +1,14 @@ +--- +created: 2020-10-30T11:45:30.000+00:00 +source_url: https://www.patreon.com/posts/what-sharing-and-43323221 +--- + +# What sharing and collaboration features would you find useful? + +I'm still trying to get a sense of what sharing and collaboration features would be useful in Joplin. By this mean any way to share a note with someone else or have multiple users collaborate on the same set of notes or notebooks. + +If a feature like this might interest you, I'd be helpful if you could describe: how would you use it? How would you expect it to work? + +All this might not be implemented right away, but it will inform how the development should happen for example by making sure that even if a feature can't be done now the software is done in such a way that it's possible to add it later on. + +Any idea or suggestion is welcome! \ No newline at end of file diff --git a/readme/news/20201126-114649.md b/readme/news/20201126-114649.md new file mode 100644 index 000000000..ad55b519a --- /dev/null +++ b/readme/news/20201126-114649.md @@ -0,0 +1,22 @@ +--- +created: 2020-11-26T11:46:49.000+00:00 +source_url: https://www.patreon.com/posts/spell-checker-in-44328867 +--- + +# Spell checker support now available in v1.4 + +[With 340 votes on GitHub](https://github.com/laurent22/joplin/issues/275), spell checker support was the most requested feature and is now finally available in Joplin! This was always tricky to add due to the custom editors (Rich Text and Markdown) we use, but thanks to the recent improvements in the Electron framework and to Caleb John's work on the Markdown editor it is now possible. + +It should be working fine in both editors however it is currently considered Beta for the Markdown Editor because to enable the feature we had to use a special mode which in the past caused various issues. Now it seems to work well, at least we haven't noticed any bug so far, but please keep that in mind. If you notice any issue let us know in the forum. + +**Enabling the spell checker** + +To enable or disable the spell checker, simply click on the top right hand globe icon (or select Spell Checker in the Tools menu), then select the language you would like to use. Since the list of languages can be huge on certain operating system, the latest selected languages also appear just below the "Use spell checker" checkbox. + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20201126-114649_0.png) + +**Activating the Markdown Editor Beta spell checker** + +By default, the spell checker is not activated in the Markdown editor even if "Use spell checker" is ticked because it is currently in Beta state. To enable it, go to the General settings, open the Advanced Settings, and select "Enable spell checking in Markdown editor". As mentioned above, we think the feature is stable and haven't found any bug with it, however if you notice anything please let us know. + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20201126-114649_1.png) \ No newline at end of file diff --git a/readme/news/20201130-145937.md b/readme/news/20201130-145937.md new file mode 100644 index 000000000..fb165c77e --- /dev/null +++ b/readme/news/20201130-145937.md @@ -0,0 +1,32 @@ +--- +created: 2020-11-30T14:59:37.000+00:00 +source_url: https://www.patreon.com/posts/plugin-support-4-44478322 +--- + +# Plugin support available in Joplin v1.4 + +The plugin system has been part of Joplin since the previous version, however it was still a bit unstable. In the latest version we're getting a bit closer to production-ready state. The [plugin API](https://joplinapp.org/api/overview/) in particular has been significantly expanded, based on the developer feedback, so that more types of plugin are possible now, and indeed a few plugin concepts have started appearing on the forums. In particular all this could be done now: + +- 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 low-level the behaviour of the Markdown editor (CodeMirror) + +**Plugin JPL format and configuration screen** + +The plugin configuration screen has also been updated so that it's possible to import the new JPL (**J**oplin **PL**ugin) format and to enable/disable as well as uninstall plugins. + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20201130-145937_0.png) + +**What's next?** + +It is now possible to create new plugins, package them into the JPL format, and to install them into the app. + +The last piece missing is a way to discover and share plugins, and a way to update them easily, basically what we need is an online package manager. It is not clear yet how this is going to be done, but one idea would be to have a GitHub repository where anyone could submit or update a plugin, then the app would connect to that repository to make it easy to install new plugins. This is just an idea at this point though, and if you have any suggestion on other ways it could be done, feel free to let me know. A [discussion about it](https://discourse.joplinapp.org/t/plugin-repository/12692) has been started in the forum. \ No newline at end of file diff --git a/readme/news/20201212-172039.md b/readme/news/20201212-172039.md new file mode 100644 index 000000000..575880e7b --- /dev/null +++ b/readme/news/20201212-172039.md @@ -0,0 +1,24 @@ +--- +created: 2020-12-12T17:20:39.000+00:00 +source_url: https://www.patreon.com/posts/changing-layout-44961536 +--- + +# Changing the application layout in v1.4 + +One feature that may have gone a bit unnoticed in recent versions is the ability to change the application layout. It is mainly aimed at plugins, so that they can create a panel anywhere, and you can then move it wherever you want, but it can also be used to re-arranged existing application components. + +For example, you can put the note list below the sidebar, to have more space for the text editor, move the sidebar to the right of the application, etc. + +To begin changing the application layout, click on "Change application layout" from the View menu: + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20201212-172039_0.jpg) + +This will put the app into a special mode, from which you can move the side bar, note list and text editor around. You do so by pressing on the arrow keys: + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20201212-172039_1.png) + +For example, pressing the left arrow on the note list would move it to the left, just below the sidebar: + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20201212-172039_2.png) + +Once you're done modifying the layout, press the "Escape" key to exit. \ No newline at end of file diff --git a/readme/news/20201228-112150.md b/readme/news/20201228-112150.md new file mode 100644 index 000000000..6c6f3909c --- /dev/null +++ b/readme/news/20201228-112150.md @@ -0,0 +1,16 @@ +--- +created: 2020-12-28T11:21:50.000+00:00 +source_url: https://www.patreon.com/posts/macos-app-is-now-45511600 +--- + +# The macOS app is now notarised + +From version 1.5, the macOS application will now be notarised. It means that when you install it you will no longer see a warning telling you that the app hasn't been checked for malware. You also won't need to go in the OS security settings to launch the app. + +Notarisation has been around since macOS Catalina, however it took a while to implement it for Joplin as the process is complex and error prone. + +First the app has to be built and uploaded to Apple's servers. They then automatically check the app for any malware, a process that can take 5 to 15 minutes (and presumably more if the app is incorrectly flagged as malware). Once it's done, Apple creates a notarisation ticket for the app. + +Then whenever the app is started, Apple check on their server if the app has a notarisation ticket (a process that recently caused "[apps taking minutes to launch, stuttering and non-responsiveness throughout macOS](https://arstechnica.com/gadgets/2020/11/macos-big-sur-launch-appears-to-cause-temporary-slowdown-in-even-non-big-sur-macs/)"). It's also possible to staple this notarisation ticket to the app, so that it's possible to check the ticket even when the computer is offline. + +All that has now been automated in the Joplin build pipeline, and will apply to all macOS app future versions. \ No newline at end of file diff --git a/readme/news/20210104-131645.md b/readme/news/20210104-131645.md new file mode 100644 index 000000000..29b1126c8 --- /dev/null +++ b/readme/news/20210104-131645.md @@ -0,0 +1,18 @@ +--- +created: 2021-01-04T13:16:45.000+00:00 +source_url: https://www.patreon.com/posts/pdf-viewer-audio-45795383 +--- + +# PDF viewer, audio and video player now in Joplin 1.5 + +The latest version features of Joplin features a few improvements to make it easier to preview various media files. For now it is possible to view PDF files, as well as listen and view audio and video files. + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20210104-131645_0.png) + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20210104-131645_1.png) + +The feature is optional and you can enable/disable it in the settings, each viewer has its own settings: + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20210104-131645_2.png) + +For now the feature works on desktop (Markdown editor only) and on mobile (except for the PDF viewer). \ No newline at end of file diff --git a/readme/news/20210105-153008.md b/readme/news/20210105-153008.md new file mode 100644 index 000000000..de1d9b317 --- /dev/null +++ b/readme/news/20210105-153008.md @@ -0,0 +1,43 @@ +--- +created: 2021-01-05T15:30:08.000+00:00 +source_url: https://www.patreon.com/posts/joplin-server-is-45843886 +--- + +# Joplin Server pre-release is now available + +The first release of Joplin Server is now available as a pre-release: + +https://github.com/laurent22/joplin/blob/dev/packages/server/README.md + +### What does it sync with? + +You will need Joplin v1.6+ clients, which are available as pre-releases for [desktop](https://github.com/laurent22/joplin/releases) and [Android](https://github.com/laurent22/joplin-android/releases). + +### What does it do? + +At this point, this server allows you to sync any Joplin client with it, as you would do with Dropbox, OneDrive, etc. So in that way, it's not essential. Long term, the goal is to add collaboration features: + +- Sharing a note with anyone, using a URL. When the note is changed, the content at the URL is changed too. +- Sharing a notebook with a user on the same Joplin Server instance. For example, if you share a notebook with another user, that user will see this notebook in their desktop or mobile app, and will be able to edit the notes, etc. + +### Any improvement over Nextcloud? + +For now, one benefit of using Joplin Server, compared to Nextcloud or WebDAV in general, is that it is much faster and resource efficient. I've done a basic test with Nextcloud and Joplin Server running on the same server. Both have mostly default settings (except Nextcloud which uses Redis for file locks): + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20210105-153008_0.png) + +Why is it so much faster? I assume it's in part because the WebDAV protocol is terribly inefficient. It sends unnecessarily large XML blobs for every request, which are time consuming to download and parse. It also doesn't support delta sync (unlike Joplin Server), which means the complete file list needs to be downloaded before syncing in order to compare the local and remote items. + +Finally it's possible that Nextcloud file locking system means an overhead on each request. It shouldn't be much since it's handled by Redis but who knows. Joplin Server doesn't need locking as data consistency is handled by the clients. + +So just by following common sense and transferring only the required data in a sane format (JSON), we can have something more performant. In my case, I appreciate that the mobile app no longer freezes when it starts synchronising - before it would do that due to the large XML WebDAV file that needs to be parsed. + +### Stability + +I've been using it with the desktop and mobile app for a few weeks now and haven't had any issue so far. The server also passes all the existing sync-related test units (sync, e2ee and lock handling) so I'm reasonably confident it can already be used. As always though, keep making backups in case there's any issue. + +### Suggestions are welcome + +This is still a pre-release and if you notice anything off please let me know. In particular, I believe it doesn't gzip responses, so that will need to be added. The process also doesn't restart when it crashes, which could be solved with pm2. + +Also if you have any idea on how to make installation easier, your feedback is welcome. \ No newline at end of file diff --git a/readme/news/20210130-144626.md b/readme/news/20210130-144626.md new file mode 100644 index 000000000..f469bd156 --- /dev/null +++ b/readme/news/20210130-144626.md @@ -0,0 +1,18 @@ +--- +created: 2021-01-30T14:46:26.000+00:00 +source_url: https://www.patreon.com/posts/joplin-is-for-46865025 +--- + +# Joplin is applying for GSoC 2021! + +We are going to apply again this year for GSoC. If we are selected by Google, this year's theme will be centered around: + +\- Joplin plugin system - eg. development of various features that can be done as plugins, and improvement of the plugin system itself. + +\- Joplin external applications - anything that can be developed as an external application and that makes use of Joplin's API and other extension points. + +At times we had a rough GSoC last year, mostly because we weren't familiar with the process and how to best handle various situations, but overall it was a success and we got great improvements to the search engine and keyboard shortcut systems thanks to our two students. We plan to make some adjustments to the way we welcome students to make the process go smoothly this year. + +We will submit the GSoC application on 19 Feb and will let you know if we are selected. Like last year, we would appreciate any help with managing the event - if you are interested in **being a tutor**, or if you can **help with welcoming new students** and answering their questions, please let us know! + +So far, we have @CalebJohn, @PackElend, @tessus and myself as potential tutors. \ No newline at end of file diff --git a/readme/news/20210309-111950.md b/readme/news/20210309-111950.md new file mode 100644 index 000000000..3c51b0ffb --- /dev/null +++ b/readme/news/20210309-111950.md @@ -0,0 +1,12 @@ +--- +created: 2021-03-09T11:19:50.000+00:00 +source_url: https://www.patreon.com/posts/joplin-will-have-48528285 +--- + +# Joplin will have a stand at the "Journées du Logiciel Libre" conference in Lyon, France + +Just a quick announcement to let you know that on 3 and 4 April, we will have a stand for Joplin at the [Journées du Logiciel Libre](https://www.jdll.org/) in Lyon, France. The JdLL has been taking place in Lyon for 22 years and is a popular open source conference in France. Last year we had a stand too, but of course that was cancelled due to Covid. So this year is a first for Joplin so if you're around, come and say hi! + +Also I am looking for anyone who could help look after the stand, even for an hour or two, over these two days. There won't be a lot to do - pretty much just hand over fliers and answer the occasional question, which as Joplin users I'm sure you'll know the answer to. Coffee and/or beers are on me :-) So if you aren't far and would be interested, please let me know! + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20210309-111950_0.jpg) \ No newline at end of file diff --git a/readme/news/20210310-100852.md b/readme/news/20210310-100852.md new file mode 100644 index 000000000..e04612957 --- /dev/null +++ b/readme/news/20210310-100852.md @@ -0,0 +1,10 @@ +--- +created: 2021-03-10T10:08:52.000+00:00 +source_url: https://www.patreon.com/posts/joplin-has-been-48570442 +--- + +# Joplin has been accepted for Google Summer of Code 2021! + +For the second year, Joplin [has been accepted as an organisation](https://summerofcode.withgoogle.com/organizations/6579646541332480/) for GSoC 2021. This is great news and we look forward to start working with students and discuss project ideas. We should see some nice new features and improvements on the project again this year. + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20210310-100852_0.png) \ No newline at end of file diff --git a/readme/news/20210413-091132.md b/readme/news/20210413-091132.md new file mode 100644 index 000000000..e2240fc5d --- /dev/null +++ b/readme/news/20210413-091132.md @@ -0,0 +1,14 @@ +--- +created: 2021-04-13T09:11:32.000+00:00 +source_url: https://www.patreon.com/posts/getting-close-to-49973882 +--- + +# Getting close to being mainly a TypeScript project + +Been checking the numbers now and then and I see there will soon be more TypeScript than JavaScript code in the repo: + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20210413-091132_0.png) + +Probably a good part of the JS code is in the CLI app, which hasn't been updated much. Critical parts of the app are now in TypeScript, including the synchronizer, database and encryption service. Joplin Server is also entirely in TypeScript. Even the database rows are now typed thanks to sql-ts. + +So anyway TypeScript has been a big win for the project as it made it possible to refactor and modernise many parts of it in a safe way, and make the code future proof and easier to work with! I expect we should get to over 50% over the next few months. \ No newline at end of file diff --git a/readme/news/20210430-083248.md b/readme/news/20210430-083248.md new file mode 100644 index 000000000..4345e7892 --- /dev/null +++ b/readme/news/20210430-083248.md @@ -0,0 +1,34 @@ +--- +created: 2021-04-30T08:32:48.000+00:00 +source_url: https://www.patreon.com/posts/call-for-google-50662125 +--- + +# Call for Google Summer of Code mentors! + +A message from PackElend, who's been helping us organise GSoC this year (and last year) + +\* \* \* + +Hi Community, + +we are going to apply for the GSoC student slots next week, soon we know what can be done this season. + +To put us in a comfortable position it would be appreciated if there would another handful of people who would mentor a project. + +Is there anyone interested in doing so? + +\* \* \* + +Here is some information about the role of a mentor: + +### After student selection + +- Ensure your student is ready & active. They should have a dev environment, be regularly communicating in the community, and have prepared a project plan together with you. +- Read the GSoC Mentoring Manual and ask questions if you have them. +- If the student is not active during the community bonding period, please contact the organization administrators. + +### During the program + +- Help your student be successful. Commit to spending a minimum of 4 hours each week answering questions, giving advice, working with your student on blockers. +- Agree with the students how many times per week they should write a progress report. Ensure that they deliver this report on time each week, and evaluate their progress. +- You might have adjust goals based on their progress. \ No newline at end of file diff --git a/readme/news/20210506-083359.md b/readme/news/20210506-083359.md new file mode 100644 index 000000000..671191b27 --- /dev/null +++ b/readme/news/20210506-083359.md @@ -0,0 +1,10 @@ +--- +created: 2021-05-06T08:33:59.000+00:00 +source_url: https://www.patreon.com/posts/joplin-has-been-50928344 +--- + +# Joplin has been granted 6 project slots for GSoC 2021 + +Google has announced the project slots for GSoC 2021 and granted us 6 this year. That's a big step up from our first GSoC last year when we got 2! + +In the coming weeks we will be reviewing the student applications again and select the 6 candidates as well as mentors. By the way if you might be interested in co-mentoring a project, feel free to let me know (More info in [this post](https://www.patreon.com/posts/call-for-google-50662125)). \ No newline at end of file diff --git a/readme/news/20210513-095238.md b/readme/news/20210513-095238.md new file mode 100644 index 000000000..af919fda0 --- /dev/null +++ b/readme/news/20210513-095238.md @@ -0,0 +1,22 @@ +--- +created: 2021-05-13T09:52:38.000+00:00 +source_url: https://www.patreon.com/posts/sharing-note-by-51203113 +--- + +# Sharing a note by link in Joplin Server 2.0 + +Joplin Server had a feature to share a note by link for a few versions now but it was mostly a beta feature. In Joplin Server 2.0, the feature will be officially released and should be stable. + +To share a note, you will need the corresponding desktop application v2.0. Then you can right-click on any note and select "Share note..." from the context menu. You can also select multiple notes, and each will have its own share link. + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20210513-095238_0.jpg) + +After that a dialog opens showing you the note - from there you just need to click on "Copy shareable link" to create the share link and copy it to the clipboard. + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20210513-095238_1.jpg) + +You can then share this link with anyone and they will be able to see the note in their browser: + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20210513-095238_2.jpg) + +Note that at the moment sharing a link does not work with End-To-End Encryption. If you share a note, it will always be decrypted, even on the server. This should be addressed in a future version. The URL however is secure - only people you share the URL with will be able to see the note. In other words, it's not possible to guess or discover the URL any other way. \ No newline at end of file diff --git a/readme/news/20210518-085514.md b/readme/news/20210518-085514.md new file mode 100644 index 000000000..d2da04d09 --- /dev/null +++ b/readme/news/20210518-085514.md @@ -0,0 +1,52 @@ +--- +created: 2021-05-18T08:55:14.000+00:00 +source_url: https://www.patreon.com/posts/six-google-of-51394265 +--- + +# The six Google Summer of Code projects and students have been selected! + +Google has reviewed the project proposals we had submitted and all students have been approved. Congratulation and welcome to our six students - we're looking forward to see your work! + +Below is the list of projects along with the student name and mentors. This year we will have a main mentor and a co-mentor for each project and in the list below, the main mentor is listed first: + +**BibTeX Plugin** + +Student: Abdallah Ahmed + +Mentors: Laurent Cozic, Helmut K. C. Tessarek + +**Improving Conflict Resolution Process** + +Student: Ahmed Alwasifey + +Mentors: Jack Gruber, Caleb John + +**Kanban Board Plugin** + +Student: Mablin + +Mentors: Roman Musin, Laurent Cozic + +**Paste Special** + +Student: Siddhant Sehgal + +Mentors: Helmut K. C. Tessarek, Stefan Müller + +**Real-Time Collaboration** + +Student: Akash Konda + +Mentors: Stefan Müller, Roman Musin + +**Template Plugin** + +Student: Nishant Mittal + +Mentors: Jack Gruber, Caleb John + +\* \* \* + +The official Google of Summer Code page has also been updated with the list of projects: + +https://summerofcode.withgoogle.com/organizations/6579646541332480/ \ No newline at end of file diff --git a/readme/news/20210621-104753.md b/readme/news/20210621-104753.md new file mode 100644 index 000000000..aa703b550 --- /dev/null +++ b/readme/news/20210621-104753.md @@ -0,0 +1,58 @@ +--- +created: 2021-06-21T10:47:53.000+00:00 +source_url: https://www.patreon.com/posts/share-notebooks-52748835 +--- + +# Share notebooks and collaborate on them using Joplin Server 2.0 + +Since a few versions Joplin Server includes a way to share notebooks between users and collaborate on them - i.e. any participant can view or modify notes in the shared notebook. It's been present since version 2.x and the feature is getting close to be stable. + +**How does it work?** + +When connected to Joplin Server (or the upcoming Joplin Cloud service), a new "Share notebook" menu item is available when right-clicking on a notebook. + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20210621-104753_0.png) + +Click on it, and it will display a new dialog where you can add any number of recipients. Those recipients also need to be on the same Joplin Server instance. From this dialog you can also remove a recipient or unshare the whole notebook, in which case it will be removed from everybody's note collection, except yours. + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20210621-104753_1.png) + +Once this is done, the recipient(s) will receive a notification in Joplin the next time they synchronise their data: + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20210621-104753_2.png) + +Then, finally, once the invitation is accepted, Joplin will download all the shared notebooks and notes. A shared notebook is denoted by the usual Share icon. Now the invited user can read or modify the shared notes, add attachments, etc. and the changes will be visible to everyone with access to the notebook. + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20210621-104753_3.png) + +**What's the availability of the notebook sharing feature?** + +The notebook sharing feature is available on Joplin Server and Joplin Cloud. + +On desktop, you can share notebooks and of course view or modify any notebook that has been shared with you. + +On mobile and CLI, you cannot currently share notebooks, but you can view or modify any notebook that has been shared with you. + +**If I share a notebook with someone, what access do they have?** + +Currently they have full access to the data, including reading, writing and deleting notebooks or notes. In a future version, access control might be implemented. For example, to only give read-only access to the shared notebook. + +**What can actually be shared?** + +All the sub-notebooks, notes and resources within the shared notebook are shared. + +**Does it work with End-To-End-Encryption?** + +Yes and no. It is possible to use the share notebook feature even with E2EE enabled, however any shared notebook or note will not be encrypted, otherwise you would have had to give your master key password to the people you share with, which you'd probably not want to do. + +In a future version, this might be supported. For example by automatically creating a new master key for the shared notebook. You would then provide the recipients with that master key password. + +**What can it be used for?** + +Some ideas: + +- Plan a trip with friends or within a small organisation. For example, the notes could contain the maps, hotel and flight reservations, etc. or any document or note relevant to the trip. And all participants would have access to them. + +- Work on a project with colleagues. Everybody can access various work-related documents, add to them, modify them, etc. That could serve as a knowledge base for a project. + +- Another possible use, which has been requested many times, is to support multiple profiles. You could create a main profile that have access to all notes, and in there create a Work and Personal notebook. Then you would create a separate account for work. You can then share your Work notebook with that other account. That way the work account will only have access to the Work notebooks. You can use this technique in various ways to split your notebooks between multiple accounts and ensure strict separation between datasets. \ No newline at end of file diff --git a/readme/news/20210624-171844.md b/readme/news/20210624-171844.md new file mode 100644 index 000000000..07e322a26 --- /dev/null +++ b/readme/news/20210624-171844.md @@ -0,0 +1,10 @@ +--- +created: 2021-06-24T17:18:44.000+00:00 +source_url: https://www.patreon.com/posts/poll-whats-size-52884691 +--- + +# Poll: What's the size of your note collection? + +Poll is on the forum: + +https://discourse.joplinapp.org/t/poll-whats-the-size-of-your-note-collection/18191 \ No newline at end of file diff --git a/readme/news/20210705-094247.md b/readme/news/20210705-094247.md new file mode 100644 index 000000000..08448fa03 --- /dev/null +++ b/readme/news/20210705-094247.md @@ -0,0 +1,12 @@ +--- +created: 2021-07-05T09:42:47.000+00:00 +source_url: https://www.patreon.com/posts/any-ideas-for-53317699 +--- + +# Any ideas for a Joplin tagline? + +I'm going to update the website front page to better showcase the application. I have most of the sections right, but the part I'm still not sure about is the top tagline, so I'm wondering if anyone had any suggestion about it? + +From what I can see on Google Keep or Evernote for example it should be something like "Use our app to get X or Y benefit", it should be a sentence that directly speaks to the user essentially. + +So far I have "Your notes, anywhere you are" but I'm not certain that's particularly inspiring. Any other idea about what tagline could be used? \ No newline at end of file diff --git a/readme/news/20210706-140228.md b/readme/news/20210706-140228.md new file mode 100644 index 000000000..94dbfb64f --- /dev/null +++ b/readme/news/20210706-140228.md @@ -0,0 +1,10 @@ +--- +created: 2021-07-06T14:02:28.000+00:00 +source_url: https://www.patreon.com/posts/poll-what-should-53367672 +--- + +# Poll: What should Joplin tagline be? + +Thanks everyone for your tagline suggestions - there were lots of good ideas in there. I've compiled a few of them and create a poll in the forum, so please cast your vote! And if you have any other suggestions on what would make a good tagline, feel free to post over there or here. + +https://discourse.joplinapp.org/t/poll-what-should-joplin-tagline-be/18487 \ No newline at end of file diff --git a/readme/news/20210711-095626.md b/readme/news/20210711-095626.md new file mode 100644 index 000000000..eacf1bedd --- /dev/null +++ b/readme/news/20210711-095626.md @@ -0,0 +1,24 @@ +--- +created: 2021-07-11T09:56:26.000+00:00 +source_url: https://www.patreon.com/posts/new-website-is-53554295 +--- + +# New website is ready! + +The new website is finally ready at https://joplinapp.org + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20210711-095626_0.png) + +The previous website had been built organically over the past few years. It had a lot of useful content but finding your way was tricky and, for new users, it wasn't clear what Joplin was about. Finding out how to install the app wasn't obvious since the download buttons were lost in the clutter of information. + +So the new website includes a front page with clear goals: + +- Allows people to easily download the app - for that there's a large Download button at the top and bottom of the page. It redirects to a page that automatically picks the version based on your operating system. + +- Showcase the application key features. The [key features post](https://discourse.joplinapp.org/t/what-are-the-key-features-of-joplin/5837) on the forum helped narrow down what Joplin is about, so there are sections about the web clipper, the open source nature of the app, encryption, synchronisation, customisation and the ability to create multimedia notes. + +- The top screenshots have also been updated (the previous one was showing a dev version from 2016, before the app was even released). As a nod to Scott Joplin, the screenshot shows an imaginary plan to open a vintage piano store, with various tasks, tables, documents and images attached, to showcase Joplin features. + +- Finally there's a Press section, which includes extracts from some cool articles that have been written about the app. + +Also many thanks to everyone who voted and contributed to the tagline discussion! It helped narrow down what the tagline should be, along with the equally important description below. If you have any question or notice any issue with the website let me know! \ No newline at end of file diff --git a/readme/news/20210718-103538.md b/readme/news/20210718-103538.md new file mode 100644 index 000000000..c3559daef --- /dev/null +++ b/readme/news/20210718-103538.md @@ -0,0 +1,18 @@ +--- +created: 2021-07-18T10:35:38.000+00:00 +source_url: https://www.patreon.com/posts/jopin-cloud-beta-53822957 +--- + +# The Jopin Cloud beta is now closed + +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! \ No newline at end of file diff --git a/readme/news/20210729-103234.md b/readme/news/20210729-103234.md new file mode 100644 index 000000000..c0f1e9ba2 --- /dev/null +++ b/readme/news/20210729-103234.md @@ -0,0 +1,22 @@ +--- +created: 2021-07-29T10:32:34.000+00:00 +source_url: https://www.patreon.com/posts/new-beta-editor-54251117 +--- + +# New beta editor for the mobile app + +The [latest Android pre-release 24](https://github.com/laurent22/joplin-android/releases) 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! \ No newline at end of file diff --git a/readme/news/20210804-085003.md b/readme/news/20210804-085003.md new file mode 100644 index 000000000..a407d722c --- /dev/null +++ b/readme/news/20210804-085003.md @@ -0,0 +1,16 @@ +--- +created: 2021-08-04T08:50:03.000+00:00 +source_url: https://www.patreon.com/posts/how-to-start-if-54505640 +--- + +# How to start your subscription if you have a free Joplin Cloud Beta account + +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. \ No newline at end of file diff --git a/readme/news/20210831-154354.md b/readme/news/20210831-154354.md new file mode 100644 index 000000000..730a7f751 --- /dev/null +++ b/readme/news/20210831-154354.md @@ -0,0 +1,16 @@ +--- +created: 2021-08-31T15:43:54.000+00:00 +source_url: https://www.patreon.com/posts/joplin-cloud-is-55576440 +--- + +# Joplin Cloud is officially production ready! + +[Joplin Cloud](https://joplinapp.org/plans/) 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. \ No newline at end of file diff --git a/readme/news/20210901-113415.md b/readme/news/20210901-113415.md new file mode 100644 index 000000000..694d0d026 --- /dev/null +++ b/readme/news/20210901-113415.md @@ -0,0 +1,16 @@ +--- +created: 2021-09-01T11:34:15.000+00:00 +source_url: https://www.patreon.com/posts/introducing-in-55618802 +--- + +# Introducing recommended plugins in the next Joplin version + +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. + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20210901-113415_0.png) + +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. \ No newline at end of file diff --git a/readme/news/20210929-144036.md b/readme/news/20210929-144036.md new file mode 100644 index 000000000..ef14472c0 --- /dev/null +++ b/readme/news/20210929-144036.md @@ -0,0 +1,58 @@ +--- +created: 2021-09-29T14:40:36.000+00:00 +source_url: https://www.patreon.com/posts/joplin-2-4-is-56756602 +--- + +# Joplin 2.4 is available! + +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 + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20210929-144036_0.png) + +### 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. + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20210929-144036_1.png) + +### 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](https://www.patreon.com/posts/introducing-in-55618802). These recommended plugins appear on top when searching and are identified by a small crown. + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20210929-144036_2.png) + +### 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. \ No newline at end of file diff --git a/readme/news/20210930-163458.md b/readme/news/20210930-163458.md new file mode 100644 index 000000000..4375fff33 --- /dev/null +++ b/readme/news/20210930-163458.md @@ -0,0 +1,24 @@ +--- +created: 2021-09-30T16:34:58.000+00:00 +source_url: https://www.patreon.com/posts/certificate-has-56809486 +--- + +# "Certificate has expired" error with Joplin Cloud, and workaround + +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](https://community.letsencrypt.org/t/issues-with-electron-and-expired-root/160991) on Let's Encrypt + +\- [Let's Encrypt root CA isn't working properly](https://github.com/electron/electron/issues/31212) 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. \ No newline at end of file diff --git a/readme/news/20211031-115215.md b/readme/news/20211031-115215.md new file mode 100644 index 000000000..da8f230f8 --- /dev/null +++ b/readme/news/20211031-115215.md @@ -0,0 +1,58 @@ +--- +created: 2021-10-31T11:52:15.000+00:00 +source_url: https://www.patreon.com/posts/joplin-v2-5-is-58097252 +--- + +# Joplin v2.5 is available for desktop and mobile! + +[Joplin v2.5](https://joplinapp.org/download/) 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. + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20211031-115215_0.png) + +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": + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20211031-115215_1.png) + +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/ \ No newline at end of file diff --git a/readme/news/20211102-150403.md b/readme/news/20211102-150403.md new file mode 100644 index 000000000..765140af4 --- /dev/null +++ b/readme/news/20211102-150403.md @@ -0,0 +1,25 @@ +--- +created: 2021-11-02T15:04:03.000+00:00 +source_url: https://www.patreon.com/posts/potential-change-58206692 +--- + +# Potential breaking change in next Joplin Server update (2.5.10) + +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: + +<code>**select** count(*), name, owner_id +**from** items **group** **by** name, owner_id +**having** count(*) > 1;</code> + +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. \ No newline at end of file diff --git a/readme/news/20211217-120324.md b/readme/news/20211217-120324.md new file mode 100644 index 000000000..e219a85c8 --- /dev/null +++ b/readme/news/20211217-120324.md @@ -0,0 +1,68 @@ +--- +created: 2021-12-17T12:03:24.000+00:00 +source_url: https://www.patreon.com/posts/joplin-2-6-is-60019114 +--- + +# Joplin 2.6 is available! + +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: + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20211217-120324_0.png) + +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": + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20211217-120324_1.png) + +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". + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20211217-120324_2.png) + +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. + +![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20211217-120324_3.png) + +**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://github.com/laurent22/joplin/pull/5512#issuecomment-931277022). + +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/ \ No newline at end of file diff --git a/readme/stats.md b/readme/stats.md index 71617b5be..4e920ebc0 100644 --- a/readme/stats.md +++ b/readme/stats.md @@ -2,9 +2,9 @@ | Name | Value | | ----- | ----- | -| Total Windows downloads | 1,933,436 | -| Total macOs downloads | 761,657 | -| Total Linux downloads | 620,271 | +| Total Windows downloads | 1,975,890 | +| Total macOs downloads | 776,548 | +| Total Linux downloads | 634,792 | | Windows % | 58% | | macOS % | 23% | | Linux % | 19% | @@ -17,173 +17,178 @@ | Version | Date | Windows | macOS | Linux | Total | | ----- | ----- | ----- | ----- | ----- | ----- | -| [v2.6.2](https://github.com/laurent22/joplin/releases/tag/v2.6.2) (p) | 2021-11-18T12:19:12Z | 1,352 | 430 | 301 | 2,083 | -| [v2.5.12](https://github.com/laurent22/joplin/releases/tag/v2.5.12) | 2021-11-08T11:07:11Z | 44,204 | 20,249 | 11,017 | 75,470 | -| [v2.5.10](https://github.com/laurent22/joplin/releases/tag/v2.5.10) | 2021-11-01T08:22:42Z | 43,257 | 18,896 | 9,936 | 72,089 | -| [v2.5.8](https://github.com/laurent22/joplin/releases/tag/v2.5.8) | 2021-10-31T11:38:03Z | 12,495 | 6,507 | 2,264 | 21,266 | -| [v2.5.7](https://github.com/laurent22/joplin/releases/tag/v2.5.7) (p) | 2021-10-29T14:47:33Z | 601 | 181 | 124 | 906 | -| [v2.5.6](https://github.com/laurent22/joplin/releases/tag/v2.5.6) (p) | 2021-10-28T22:03:09Z | 545 | 150 | 80 | 775 | -| [v2.5.4](https://github.com/laurent22/joplin/releases/tag/v2.5.4) (p) | 2021-10-19T10:10:54Z | 1,756 | 547 | 542 | 2,845 | -| [v2.4.12](https://github.com/laurent22/joplin/releases/tag/v2.4.12) | 2021-10-13T17:24:34Z | 42,818 | 19,892 | 9,712 | 72,422 | -| [v2.5.1](https://github.com/laurent22/joplin/releases/tag/v2.5.1) (p) | 2021-10-02T09:51:58Z | 2,905 | 874 | 917 | 4,696 | -| [v2.4.9](https://github.com/laurent22/joplin/releases/tag/v2.4.9) | 2021-09-29T19:08:58Z | 55,401 | 23,144 | 15,755 | 94,300 | -| [v2.4.8](https://github.com/laurent22/joplin/releases/tag/v2.4.8) (p) | 2021-09-22T19:01:46Z | 6,881 | 1,747 | 503 | 9,131 | -| [v2.4.7](https://github.com/laurent22/joplin/releases/tag/v2.4.7) (p) | 2021-09-19T12:53:22Z | 980 | 231 | 181 | 1,392 | -| [v2.4.6](https://github.com/laurent22/joplin/releases/tag/v2.4.6) (p) | 2021-09-09T18:57:17Z | 1,569 | 438 | 490 | 2,497 | -| [v2.4.5](https://github.com/laurent22/joplin/releases/tag/v2.4.5) (p) | 2021-09-06T18:03:28Z | 1,046 | 247 | 203 | 1,496 | -| [v2.4.4](https://github.com/laurent22/joplin/releases/tag/v2.4.4) (p) | 2021-08-30T16:02:51Z | 1,317 | 356 | 336 | 2,009 | -| [v2.4.3](https://github.com/laurent22/joplin/releases/tag/v2.4.3) (p) | 2021-08-28T15:27:32Z | 843 | 180 | 144 | 1,167 | -| [v2.4.2](https://github.com/laurent22/joplin/releases/tag/v2.4.2) (p) | 2021-08-27T17:13:21Z | 537 | 124 | 70 | 731 | -| [v2.4.1](https://github.com/laurent22/joplin/releases/tag/v2.4.1) (p) | 2021-08-21T11:52:30Z | 1,430 | 351 | 314 | 2,095 | -| [v2.3.5](https://github.com/laurent22/joplin/releases/tag/v2.3.5) | 2021-08-17T06:43:30Z | 80,602 | 31,316 | 33,004 | 144,922 | -| [v2.3.3](https://github.com/laurent22/joplin/releases/tag/v2.3.3) | 2021-08-14T09:19:40Z | 14,145 | 6,846 | 4,024 | 25,015 | -| [v2.2.7](https://github.com/laurent22/joplin/releases/tag/v2.2.7) | 2021-08-11T11:03:26Z | 14,621 | 7,469 | 2,557 | 24,647 | -| [v2.2.6](https://github.com/laurent22/joplin/releases/tag/v2.2.6) (p) | 2021-08-09T19:29:20Z | 7,424 | 4,598 | 936 | 12,958 | -| [v2.2.5](https://github.com/laurent22/joplin/releases/tag/v2.2.5) (p) | 2021-08-07T10:35:24Z | 1,137 | 255 | 185 | 1,577 | -| [v2.2.4](https://github.com/laurent22/joplin/releases/tag/v2.2.4) (p) | 2021-08-05T16:42:48Z | 844 | 185 | 111 | 1,140 | -| [v2.2.2](https://github.com/laurent22/joplin/releases/tag/v2.2.2) (p) | 2021-07-19T10:28:35Z | 2,755 | 715 | 625 | 4,095 | -| [v2.1.9](https://github.com/laurent22/joplin/releases/tag/v2.1.9) | 2021-07-19T10:28:43Z | 45,653 | 18,751 | 16,674 | 81,078 | -| [v2.2.1](https://github.com/laurent22/joplin/releases/tag/v2.2.1) (p) | 2021-07-09T17:38:25Z | 2,109 | 395 | 371 | 2,875 | -| [v2.1.8](https://github.com/laurent22/joplin/releases/tag/v2.1.8) | 2021-07-03T08:25:16Z | 29,468 | 12,146 | 12,680 | 54,294 | -| [v2.1.7](https://github.com/laurent22/joplin/releases/tag/v2.1.7) | 2021-06-26T19:48:55Z | 13,528 | 6,375 | 3,599 | 23,502 | -| [v2.1.5](https://github.com/laurent22/joplin/releases/tag/v2.1.5) (p) | 2021-06-23T15:08:52Z | 1,179 | 224 | 175 | 1,578 | -| [v2.1.3](https://github.com/laurent22/joplin/releases/tag/v2.1.3) (p) | 2021-06-19T16:32:51Z | 1,323 | 288 | 193 | 1,804 | -| [v2.0.11](https://github.com/laurent22/joplin/releases/tag/v2.0.11) | 2021-06-16T17:55:49Z | 22,761 | 9,211 | 9,773 | 41,745 | -| [v2.0.10](https://github.com/laurent22/joplin/releases/tag/v2.0.10) | 2021-06-16T07:58:29Z | 2,160 | 910 | 361 | 3,431 | -| [v2.0.9](https://github.com/laurent22/joplin/releases/tag/v2.0.9) (p) | 2021-06-12T09:30:30Z | 1,230 | 286 | 871 | 2,387 | -| [v2.0.8](https://github.com/laurent22/joplin/releases/tag/v2.0.8) (p) | 2021-06-10T16:15:08Z | 864 | 219 | 567 | 1,650 | -| [v2.0.4](https://github.com/laurent22/joplin/releases/tag/v2.0.4) (p) | 2021-06-02T12:54:17Z | 1,389 | 384 | 370 | 2,143 | -| [v2.0.2](https://github.com/laurent22/joplin/releases/tag/v2.0.2) (p) | 2021-05-21T18:07:48Z | 2,388 | 485 | 1,659 | 4,532 | -| [v2.0.1](https://github.com/laurent22/joplin/releases/tag/v2.0.1) (p) | 2021-05-15T13:22:58Z | 853 | 265 | 1,016 | 2,134 | -| [v1.8.5](https://github.com/laurent22/joplin/releases/tag/v1.8.5) | 2021-05-10T11:58:14Z | 37,453 | 16,234 | 19,372 | 73,059 | -| [v1.8.4](https://github.com/laurent22/joplin/releases/tag/v1.8.4) (p) | 2021-05-09T18:05:05Z | 910 | 131 | 450 | 1,491 | -| [v1.8.3](https://github.com/laurent22/joplin/releases/tag/v1.8.3) (p) | 2021-05-04T10:38:16Z | 1,681 | 301 | 932 | 2,914 | -| [v1.8.2](https://github.com/laurent22/joplin/releases/tag/v1.8.2) (p) | 2021-04-25T10:50:51Z | 1,924 | 432 | 1,279 | 3,635 | -| [v1.8.1](https://github.com/laurent22/joplin/releases/tag/v1.8.1) (p) | 2021-03-29T10:46:41Z | 3,292 | 821 | 2,443 | 6,556 | -| [v1.7.11](https://github.com/laurent22/joplin/releases/tag/v1.7.11) | 2021-02-03T12:50:01Z | 115,375 | 42,718 | 64,226 | 222,319 | -| [v1.7.10](https://github.com/laurent22/joplin/releases/tag/v1.7.10) | 2021-01-30T13:25:29Z | 13,935 | 4,848 | 4,459 | 23,242 | -| [v1.7.9](https://github.com/laurent22/joplin/releases/tag/v1.7.9) (p) | 2021-01-28T09:50:21Z | 502 | 132 | 497 | 1,131 | -| [v1.7.6](https://github.com/laurent22/joplin/releases/tag/v1.7.6) (p) | 2021-01-27T10:36:05Z | 310 | 92 | 286 | 688 | -| [v1.7.5](https://github.com/laurent22/joplin/releases/tag/v1.7.5) (p) | 2021-01-26T09:53:05Z | 386 | 203 | 452 | 1,041 | -| [v1.7.4](https://github.com/laurent22/joplin/releases/tag/v1.7.4) (p) | 2021-01-22T17:58:38Z | 691 | 203 | 623 | 1,517 | -| [v1.6.8](https://github.com/laurent22/joplin/releases/tag/v1.6.8) | 2021-01-20T18:11:34Z | 18,923 | 7,684 | 7,595 | 34,202 | +| [v2.6.9](https://github.com/laurent22/joplin/releases/tag/v2.6.9) | 2021-12-17T11:57:32Z | 2,905 | 1,712 | 358 | 4,975 | +| [v2.6.7](https://github.com/laurent22/joplin/releases/tag/v2.6.7) (p) | 2021-12-16T10:47:23Z | 408 | 129 | 72 | 609 | +| [v2.6.6](https://github.com/laurent22/joplin/releases/tag/v2.6.6) (p) | 2021-12-13T12:31:43Z | 734 | 224 | 136 | 1,094 | +| [v2.6.5](https://github.com/laurent22/joplin/releases/tag/v2.6.5) (p) | 2021-12-13T10:07:04Z | 82 | 19 | 10 | 111 | +| [v2.6.4](https://github.com/laurent22/joplin/releases/tag/v2.6.4) (p) | 2021-12-09T19:53:43Z | 857 | 255 | 162 | 1,274 | +| [v2.6.2](https://github.com/laurent22/joplin/releases/tag/v2.6.2) (p) | 2021-11-18T12:19:12Z | 2,505 | 755 | 662 | 3,922 | +| [v2.5.12](https://github.com/laurent22/joplin/releases/tag/v2.5.12) | 2021-11-08T11:07:11Z | 77,459 | 32,262 | 24,219 | 133,940 | +| [v2.5.10](https://github.com/laurent22/joplin/releases/tag/v2.5.10) | 2021-11-01T08:22:42Z | 43,348 | 18,922 | 9,959 | 72,229 | +| [v2.5.8](https://github.com/laurent22/joplin/releases/tag/v2.5.8) | 2021-10-31T11:38:03Z | 12,555 | 6,513 | 2,274 | 21,342 | +| [v2.5.7](https://github.com/laurent22/joplin/releases/tag/v2.5.7) (p) | 2021-10-29T14:47:33Z | 651 | 182 | 125 | 958 | +| [v2.5.6](https://github.com/laurent22/joplin/releases/tag/v2.5.6) (p) | 2021-10-28T22:03:09Z | 599 | 151 | 81 | 831 | +| [v2.5.4](https://github.com/laurent22/joplin/releases/tag/v2.5.4) (p) | 2021-10-19T10:10:54Z | 1,817 | 548 | 543 | 2,908 | +| [v2.4.12](https://github.com/laurent22/joplin/releases/tag/v2.4.12) | 2021-10-13T17:24:34Z | 42,923 | 19,908 | 9,724 | 72,555 | +| [v2.5.1](https://github.com/laurent22/joplin/releases/tag/v2.5.1) (p) | 2021-10-02T09:51:58Z | 2,972 | 876 | 918 | 4,766 | +| [v2.4.9](https://github.com/laurent22/joplin/releases/tag/v2.4.9) | 2021-09-29T19:08:58Z | 55,481 | 23,155 | 15,763 | 94,399 | +| [v2.4.8](https://github.com/laurent22/joplin/releases/tag/v2.4.8) (p) | 2021-09-22T19:01:46Z | 6,907 | 1,748 | 503 | 9,158 | +| [v2.4.7](https://github.com/laurent22/joplin/releases/tag/v2.4.7) (p) | 2021-09-19T12:53:22Z | 1,004 | 231 | 181 | 1,416 | +| [v2.4.6](https://github.com/laurent22/joplin/releases/tag/v2.4.6) (p) | 2021-09-09T18:57:17Z | 1,604 | 438 | 491 | 2,533 | +| [v2.4.5](https://github.com/laurent22/joplin/releases/tag/v2.4.5) (p) | 2021-09-06T18:03:28Z | 1,073 | 247 | 203 | 1,523 | +| [v2.4.4](https://github.com/laurent22/joplin/releases/tag/v2.4.4) (p) | 2021-08-30T16:02:51Z | 1,341 | 356 | 336 | 2,033 | +| [v2.4.3](https://github.com/laurent22/joplin/releases/tag/v2.4.3) (p) | 2021-08-28T15:27:32Z | 868 | 180 | 146 | 1,194 | +| [v2.4.2](https://github.com/laurent22/joplin/releases/tag/v2.4.2) (p) | 2021-08-27T17:13:21Z | 561 | 126 | 70 | 757 | +| [v2.4.1](https://github.com/laurent22/joplin/releases/tag/v2.4.1) (p) | 2021-08-21T11:52:30Z | 1,454 | 351 | 314 | 2,119 | +| [v2.3.5](https://github.com/laurent22/joplin/releases/tag/v2.3.5) | 2021-08-17T06:43:30Z | 80,671 | 31,321 | 33,016 | 145,008 | +| [v2.3.3](https://github.com/laurent22/joplin/releases/tag/v2.3.3) | 2021-08-14T09:19:40Z | 14,193 | 6,847 | 4,025 | 25,065 | +| [v2.2.7](https://github.com/laurent22/joplin/releases/tag/v2.2.7) | 2021-08-11T11:03:26Z | 14,665 | 7,470 | 2,559 | 24,694 | +| [v2.2.6](https://github.com/laurent22/joplin/releases/tag/v2.2.6) (p) | 2021-08-09T19:29:20Z | 7,463 | 4,599 | 936 | 12,998 | +| [v2.2.5](https://github.com/laurent22/joplin/releases/tag/v2.2.5) (p) | 2021-08-07T10:35:24Z | 1,161 | 255 | 185 | 1,601 | +| [v2.2.4](https://github.com/laurent22/joplin/releases/tag/v2.2.4) (p) | 2021-08-05T16:42:48Z | 868 | 185 | 111 | 1,164 | +| [v2.2.2](https://github.com/laurent22/joplin/releases/tag/v2.2.2) (p) | 2021-07-19T10:28:35Z | 2,779 | 715 | 625 | 4,119 | +| [v2.1.9](https://github.com/laurent22/joplin/releases/tag/v2.1.9) | 2021-07-19T10:28:43Z | 45,699 | 18,753 | 16,674 | 81,126 | +| [v2.2.1](https://github.com/laurent22/joplin/releases/tag/v2.2.1) (p) | 2021-07-09T17:38:25Z | 2,145 | 395 | 371 | 2,911 | +| [v2.1.8](https://github.com/laurent22/joplin/releases/tag/v2.1.8) | 2021-07-03T08:25:16Z | 29,530 | 12,148 | 12,690 | 54,368 | +| [v2.1.7](https://github.com/laurent22/joplin/releases/tag/v2.1.7) | 2021-06-26T19:48:55Z | 13,555 | 6,376 | 3,600 | 23,531 | +| [v2.1.5](https://github.com/laurent22/joplin/releases/tag/v2.1.5) (p) | 2021-06-23T15:08:52Z | 1,203 | 224 | 175 | 1,602 | +| [v2.1.3](https://github.com/laurent22/joplin/releases/tag/v2.1.3) (p) | 2021-06-19T16:32:51Z | 1,347 | 288 | 193 | 1,828 | +| [v2.0.11](https://github.com/laurent22/joplin/releases/tag/v2.0.11) | 2021-06-16T17:55:49Z | 22,800 | 9,212 | 9,776 | 41,788 | +| [v2.0.10](https://github.com/laurent22/joplin/releases/tag/v2.0.10) | 2021-06-16T07:58:29Z | 2,187 | 911 | 361 | 3,459 | +| [v2.0.9](https://github.com/laurent22/joplin/releases/tag/v2.0.9) (p) | 2021-06-12T09:30:30Z | 1,256 | 286 | 871 | 2,413 | +| [v2.0.8](https://github.com/laurent22/joplin/releases/tag/v2.0.8) (p) | 2021-06-10T16:15:08Z | 888 | 220 | 568 | 1,676 | +| [v2.0.4](https://github.com/laurent22/joplin/releases/tag/v2.0.4) (p) | 2021-06-02T12:54:17Z | 1,400 | 384 | 370 | 2,154 | +| [v2.0.2](https://github.com/laurent22/joplin/releases/tag/v2.0.2) (p) | 2021-05-21T18:07:48Z | 2,412 | 485 | 1,659 | 4,556 | +| [v2.0.1](https://github.com/laurent22/joplin/releases/tag/v2.0.1) (p) | 2021-05-15T13:22:58Z | 854 | 265 | 1,016 | 2,135 | +| [v1.8.5](https://github.com/laurent22/joplin/releases/tag/v1.8.5) | 2021-05-10T11:58:14Z | 37,506 | 16,243 | 19,375 | 73,124 | +| [v1.8.4](https://github.com/laurent22/joplin/releases/tag/v1.8.4) (p) | 2021-05-09T18:05:05Z | 934 | 132 | 451 | 1,517 | +| [v1.8.3](https://github.com/laurent22/joplin/releases/tag/v1.8.3) (p) | 2021-05-04T10:38:16Z | 1,719 | 303 | 933 | 2,955 | +| [v1.8.2](https://github.com/laurent22/joplin/releases/tag/v1.8.2) (p) | 2021-04-25T10:50:51Z | 1,969 | 433 | 1,280 | 3,682 | +| [v1.8.1](https://github.com/laurent22/joplin/releases/tag/v1.8.1) (p) | 2021-03-29T10:46:41Z | 3,317 | 822 | 2,446 | 6,585 | +| [v1.7.11](https://github.com/laurent22/joplin/releases/tag/v1.7.11) | 2021-02-03T12:50:01Z | 115,495 | 42,729 | 64,239 | 222,463 | +| [v1.7.10](https://github.com/laurent22/joplin/releases/tag/v1.7.10) | 2021-01-30T13:25:29Z | 13,949 | 4,850 | 4,464 | 23,263 | +| [v1.7.9](https://github.com/laurent22/joplin/releases/tag/v1.7.9) (p) | 2021-01-28T09:50:21Z | 502 | 133 | 498 | 1,133 | +| [v1.7.6](https://github.com/laurent22/joplin/releases/tag/v1.7.6) (p) | 2021-01-27T10:36:05Z | 310 | 93 | 287 | 690 | +| [v1.7.5](https://github.com/laurent22/joplin/releases/tag/v1.7.5) (p) | 2021-01-26T09:53:05Z | 386 | 204 | 453 | 1,043 | +| [v1.7.4](https://github.com/laurent22/joplin/releases/tag/v1.7.4) (p) | 2021-01-22T17:58:38Z | 691 | 204 | 624 | 1,519 | +| [v1.6.8](https://github.com/laurent22/joplin/releases/tag/v1.6.8) | 2021-01-20T18:11:34Z | 19,001 | 7,685 | 7,596 | 34,282 | | [v1.7.3](https://github.com/laurent22/joplin/releases/tag/v1.7.3) (p) | 2021-01-20T11:23:50Z | 345 | 76 | 442 | 863 | -| [v1.6.7](https://github.com/laurent22/joplin/releases/tag/v1.6.7) | 2021-01-11T23:20:33Z | 10,974 | 4,631 | 4,541 | 20,146 | -| [v1.6.6](https://github.com/laurent22/joplin/releases/tag/v1.6.6) | 2021-01-09T16:15:31Z | 12,482 | 3,416 | 4,793 | 20,691 | -| [v1.6.5](https://github.com/laurent22/joplin/releases/tag/v1.6.5) (p) | 2021-01-09T01:24:32Z | 1,008 | 72 | 307 | 1,387 | +| [v1.6.7](https://github.com/laurent22/joplin/releases/tag/v1.6.7) | 2021-01-11T23:20:33Z | 11,038 | 4,633 | 4,542 | 20,213 | +| [v1.6.6](https://github.com/laurent22/joplin/releases/tag/v1.6.6) | 2021-01-09T16:15:31Z | 12,504 | 3,417 | 4,793 | 20,714 | +| [v1.6.5](https://github.com/laurent22/joplin/releases/tag/v1.6.5) (p) | 2021-01-09T01:24:32Z | 1,056 | 72 | 307 | 1,435 | | [v1.6.4](https://github.com/laurent22/joplin/releases/tag/v1.6.4) (p) | 2021-01-07T19:11:32Z | 389 | 78 | 201 | 668 | | [v1.6.2](https://github.com/laurent22/joplin/releases/tag/v1.6.2) (p) | 2021-01-04T22:34:55Z | 671 | 228 | 589 | 1,488 | -| [v1.5.14](https://github.com/laurent22/joplin/releases/tag/v1.5.14) | 2020-12-30T01:48:46Z | 11,444 | 5,202 | 5,524 | 22,170 | +| [v1.5.14](https://github.com/laurent22/joplin/releases/tag/v1.5.14) | 2020-12-30T01:48:46Z | 11,505 | 5,203 | 5,524 | 22,232 | | [v1.6.1](https://github.com/laurent22/joplin/releases/tag/v1.6.1) (p) | 2020-12-29T19:37:45Z | 169 | 36 | 166 | 371 | -| [v1.5.13](https://github.com/laurent22/joplin/releases/tag/v1.5.13) | 2020-12-29T18:29:15Z | 625 | 217 | 199 | 1,041 | -| [v1.5.12](https://github.com/laurent22/joplin/releases/tag/v1.5.12) | 2020-12-28T15:14:08Z | 2,405 | 1,767 | 921 | 5,093 | -| [v1.5.11](https://github.com/laurent22/joplin/releases/tag/v1.5.11) | 2020-12-27T19:54:07Z | 14,123 | 4,623 | 4,271 | 23,017 | -| [v1.5.10](https://github.com/laurent22/joplin/releases/tag/v1.5.10) (p) | 2020-12-26T12:35:36Z | 294 | 106 | 266 | 666 | -| [v1.5.9](https://github.com/laurent22/joplin/releases/tag/v1.5.9) (p) | 2020-12-23T18:01:08Z | 327 | 371 | 408 | 1,106 | -| [v1.5.8](https://github.com/laurent22/joplin/releases/tag/v1.5.8) (p) | 2020-12-20T09:45:19Z | 566 | 164 | 640 | 1,370 | -| [v1.5.7](https://github.com/laurent22/joplin/releases/tag/v1.5.7) (p) | 2020-12-10T12:58:33Z | 889 | 252 | 991 | 2,132 | -| [v1.5.4](https://github.com/laurent22/joplin/releases/tag/v1.5.4) (p) | 2020-12-05T12:07:49Z | 692 | 165 | 632 | 1,489 | -| [v1.4.19](https://github.com/laurent22/joplin/releases/tag/v1.4.19) | 2020-12-01T11:11:16Z | 26,169 | 13,418 | 11,657 | 51,244 | -| [v1.4.18](https://github.com/laurent22/joplin/releases/tag/v1.4.18) | 2020-11-28T12:21:41Z | 11,262 | 3,878 | 3,130 | 18,270 | -| [v1.4.16](https://github.com/laurent22/joplin/releases/tag/v1.4.16) | 2020-11-27T19:40:16Z | 1,475 | 827 | 594 | 2,896 | -| [v1.4.15](https://github.com/laurent22/joplin/releases/tag/v1.4.15) | 2020-11-27T13:25:43Z | 892 | 486 | 273 | 1,651 | -| [v1.4.12](https://github.com/laurent22/joplin/releases/tag/v1.4.12) | 2020-11-23T18:58:07Z | 3,018 | 1,325 | 1,300 | 5,643 | -| [v1.4.11](https://github.com/laurent22/joplin/releases/tag/v1.4.11) (p) | 2020-11-19T23:06:51Z | 1,496 | 157 | 591 | 2,244 | -| [v1.4.10](https://github.com/laurent22/joplin/releases/tag/v1.4.10) (p) | 2020-11-14T09:53:15Z | 628 | 196 | 685 | 1,509 | -| [v1.4.9](https://github.com/laurent22/joplin/releases/tag/v1.4.9) (p) | 2020-11-11T14:23:17Z | 642 | 141 | 403 | 1,186 | +| [v1.5.13](https://github.com/laurent22/joplin/releases/tag/v1.5.13) | 2020-12-29T18:29:15Z | 626 | 218 | 199 | 1,043 | +| [v1.5.12](https://github.com/laurent22/joplin/releases/tag/v1.5.12) | 2020-12-28T15:14:08Z | 2,406 | 1,769 | 922 | 5,097 | +| [v1.5.11](https://github.com/laurent22/joplin/releases/tag/v1.5.11) | 2020-12-27T19:54:07Z | 14,135 | 4,624 | 4,272 | 23,031 | +| [v1.5.10](https://github.com/laurent22/joplin/releases/tag/v1.5.10) (p) | 2020-12-26T12:35:36Z | 294 | 107 | 267 | 668 | +| [v1.5.9](https://github.com/laurent22/joplin/releases/tag/v1.5.9) (p) | 2020-12-23T18:01:08Z | 327 | 372 | 409 | 1,108 | +| [v1.5.8](https://github.com/laurent22/joplin/releases/tag/v1.5.8) (p) | 2020-12-20T09:45:19Z | 566 | 165 | 641 | 1,372 | +| [v1.5.7](https://github.com/laurent22/joplin/releases/tag/v1.5.7) (p) | 2020-12-10T12:58:33Z | 889 | 253 | 992 | 2,134 | +| [v1.5.4](https://github.com/laurent22/joplin/releases/tag/v1.5.4) (p) | 2020-12-05T12:07:49Z | 692 | 166 | 633 | 1,491 | +| [v1.4.19](https://github.com/laurent22/joplin/releases/tag/v1.4.19) | 2020-12-01T11:11:16Z | 26,240 | 13,423 | 11,666 | 51,329 | +| [v1.4.18](https://github.com/laurent22/joplin/releases/tag/v1.4.18) | 2020-11-28T12:21:41Z | 11,277 | 3,879 | 3,135 | 18,291 | +| [v1.4.16](https://github.com/laurent22/joplin/releases/tag/v1.4.16) | 2020-11-27T19:40:16Z | 1,476 | 828 | 595 | 2,899 | +| [v1.4.15](https://github.com/laurent22/joplin/releases/tag/v1.4.15) | 2020-11-27T13:25:43Z | 893 | 486 | 273 | 1,652 | +| [v1.4.12](https://github.com/laurent22/joplin/releases/tag/v1.4.12) | 2020-11-23T18:58:07Z | 3,019 | 1,325 | 1,300 | 5,644 | +| [v1.4.11](https://github.com/laurent22/joplin/releases/tag/v1.4.11) (p) | 2020-11-19T23:06:51Z | 1,555 | 157 | 591 | 2,303 | +| [v1.4.10](https://github.com/laurent22/joplin/releases/tag/v1.4.10) (p) | 2020-11-14T09:53:15Z | 630 | 196 | 685 | 1,511 | +| [v1.4.9](https://github.com/laurent22/joplin/releases/tag/v1.4.9) (p) | 2020-11-11T14:23:17Z | 653 | 141 | 403 | 1,197 | | [v1.4.7](https://github.com/laurent22/joplin/releases/tag/v1.4.7) (p) | 2020-11-07T18:23:29Z | 519 | 173 | 515 | 1,207 | -| [v1.3.18](https://github.com/laurent22/joplin/releases/tag/v1.3.18) | 2020-11-06T12:07:02Z | 31,408 | 11,333 | 10,512 | 53,253 | +| [v1.3.18](https://github.com/laurent22/joplin/releases/tag/v1.3.18) | 2020-11-06T12:07:02Z | 31,485 | 11,333 | 10,513 | 53,331 | | [v1.3.17](https://github.com/laurent22/joplin/releases/tag/v1.3.17) (p) | 2020-11-06T11:35:15Z | 50 | 25 | 24 | 99 | -| [v1.4.6](https://github.com/laurent22/joplin/releases/tag/v1.4.6) (p) | 2020-11-05T22:44:12Z | 467 | 93 | 54 | 614 | -| [v1.3.15](https://github.com/laurent22/joplin/releases/tag/v1.3.15) | 2020-11-04T12:22:50Z | 2,369 | 1,299 | 846 | 4,514 | -| [v1.3.11](https://github.com/laurent22/joplin/releases/tag/v1.3.11) (p) | 2020-10-31T13:22:20Z | 699 | 186 | 481 | 1,366 | -| [v1.3.10](https://github.com/laurent22/joplin/releases/tag/v1.3.10) (p) | 2020-10-29T13:27:14Z | 377 | 115 | 317 | 809 | -| [v1.3.9](https://github.com/laurent22/joplin/releases/tag/v1.3.9) (p) | 2020-10-23T16:04:26Z | 839 | 242 | 634 | 1,715 | -| [v1.3.8](https://github.com/laurent22/joplin/releases/tag/v1.3.8) (p) | 2020-10-21T18:46:29Z | 519 | 113 | 331 | 963 | -| [v1.3.7](https://github.com/laurent22/joplin/releases/tag/v1.3.7) (p) | 2020-10-20T11:35:55Z | 297 | 85 | 343 | 725 | -| [v1.3.5](https://github.com/laurent22/joplin/releases/tag/v1.3.5) (p) | 2020-10-17T14:26:35Z | 471 | 134 | 407 | 1,012 | -| [v1.3.3](https://github.com/laurent22/joplin/releases/tag/v1.3.3) (p) | 2020-10-17T10:56:57Z | 121 | 47 | 34 | 202 | -| [v1.3.2](https://github.com/laurent22/joplin/releases/tag/v1.3.2) (p) | 2020-10-11T20:39:49Z | 667 | 180 | 566 | 1,413 | -| [v1.3.1](https://github.com/laurent22/joplin/releases/tag/v1.3.1) (p) | 2020-10-11T15:10:18Z | 85 | 52 | 44 | 181 | -| [v1.2.6](https://github.com/laurent22/joplin/releases/tag/v1.2.6) | 2020-10-09T13:56:59Z | 44,985 | 17,733 | 14,042 | 76,760 | +| [v1.4.6](https://github.com/laurent22/joplin/releases/tag/v1.4.6) (p) | 2020-11-05T22:44:12Z | 484 | 93 | 54 | 631 | +| [v1.3.15](https://github.com/laurent22/joplin/releases/tag/v1.3.15) | 2020-11-04T12:22:50Z | 2,380 | 1,299 | 846 | 4,525 | +| [v1.3.11](https://github.com/laurent22/joplin/releases/tag/v1.3.11) (p) | 2020-10-31T13:22:20Z | 699 | 187 | 482 | 1,368 | +| [v1.3.10](https://github.com/laurent22/joplin/releases/tag/v1.3.10) (p) | 2020-10-29T13:27:14Z | 377 | 116 | 318 | 811 | +| [v1.3.9](https://github.com/laurent22/joplin/releases/tag/v1.3.9) (p) | 2020-10-23T16:04:26Z | 839 | 243 | 635 | 1,717 | +| [v1.3.8](https://github.com/laurent22/joplin/releases/tag/v1.3.8) (p) | 2020-10-21T18:46:29Z | 519 | 114 | 332 | 965 | +| [v1.3.7](https://github.com/laurent22/joplin/releases/tag/v1.3.7) (p) | 2020-10-20T11:35:55Z | 297 | 86 | 344 | 727 | +| [v1.3.5](https://github.com/laurent22/joplin/releases/tag/v1.3.5) (p) | 2020-10-17T14:26:35Z | 473 | 136 | 408 | 1,017 | +| [v1.3.3](https://github.com/laurent22/joplin/releases/tag/v1.3.3) (p) | 2020-10-17T10:56:57Z | 121 | 48 | 35 | 204 | +| [v1.3.2](https://github.com/laurent22/joplin/releases/tag/v1.3.2) (p) | 2020-10-11T20:39:49Z | 667 | 181 | 567 | 1,415 | +| [v1.3.1](https://github.com/laurent22/joplin/releases/tag/v1.3.1) (p) | 2020-10-11T15:10:18Z | 85 | 53 | 45 | 183 | +| [v1.2.6](https://github.com/laurent22/joplin/releases/tag/v1.2.6) | 2020-10-09T13:56:59Z | 45,070 | 17,734 | 14,043 | 76,847 | | [v1.2.4](https://github.com/laurent22/joplin/releases/tag/v1.2.4) (p) | 2020-09-30T07:34:29Z | 816 | 249 | 799 | 1,864 | | [v1.2.3](https://github.com/laurent22/joplin/releases/tag/v1.2.3) (p) | 2020-09-29T15:13:02Z | 220 | 67 | 81 | 368 | -| [v1.2.2](https://github.com/laurent22/joplin/releases/tag/v1.2.2) (p) | 2020-09-22T20:31:55Z | 913 | 208 | 639 | 1,760 | -| [v1.1.4](https://github.com/laurent22/joplin/releases/tag/v1.1.4) | 2020-09-21T11:20:09Z | 27,770 | 13,505 | 7,753 | 49,028 | +| [v1.2.2](https://github.com/laurent22/joplin/releases/tag/v1.2.2) (p) | 2020-09-22T20:31:55Z | 928 | 208 | 639 | 1,775 | +| [v1.1.4](https://github.com/laurent22/joplin/releases/tag/v1.1.4) | 2020-09-21T11:20:09Z | 27,775 | 13,507 | 7,753 | 49,035 | | [v1.1.3](https://github.com/laurent22/joplin/releases/tag/v1.1.3) (p) | 2020-09-17T10:30:37Z | 566 | 154 | 466 | 1,186 | | [v1.1.2](https://github.com/laurent22/joplin/releases/tag/v1.1.2) (p) | 2020-09-15T12:58:38Z | 380 | 120 | 253 | 753 | | [v1.1.1](https://github.com/laurent22/joplin/releases/tag/v1.1.1) (p) | 2020-09-11T23:32:47Z | 535 | 201 | 352 | 1,088 | -| [v1.0.245](https://github.com/laurent22/joplin/releases/tag/v1.0.245) | 2020-09-09T12:56:10Z | 21,542 | 10,010 | 5,642 | 37,194 | -| [v1.0.242](https://github.com/laurent22/joplin/releases/tag/v1.0.242) | 2020-09-04T22:00:34Z | 12,603 | 6,425 | 3,019 | 22,047 | -| [v1.0.241](https://github.com/laurent22/joplin/releases/tag/v1.0.241) | 2020-09-04T18:06:00Z | 24,520 | 5,809 | 5,054 | 35,383 | -| [v1.0.239](https://github.com/laurent22/joplin/releases/tag/v1.0.239) (p) | 2020-09-01T21:56:36Z | 728 | 232 | 405 | 1,365 | -| [v1.0.237](https://github.com/laurent22/joplin/releases/tag/v1.0.237) (p) | 2020-08-29T15:38:04Z | 596 | 930 | 342 | 1,868 | -| [v1.0.236](https://github.com/laurent22/joplin/releases/tag/v1.0.236) (p) | 2020-08-28T09:16:54Z | 321 | 117 | 108 | 546 | -| [v1.0.235](https://github.com/laurent22/joplin/releases/tag/v1.0.235) (p) | 2020-08-18T22:08:01Z | 1,801 | 496 | 926 | 3,223 | -| [v1.0.234](https://github.com/laurent22/joplin/releases/tag/v1.0.234) (p) | 2020-08-17T23:13:02Z | 559 | 131 | 104 | 794 | -| [v1.0.233](https://github.com/laurent22/joplin/releases/tag/v1.0.233) | 2020-08-01T14:51:15Z | 43,903 | 18,200 | 12,363 | 74,466 | -| [v1.0.232](https://github.com/laurent22/joplin/releases/tag/v1.0.232) (p) | 2020-07-28T22:34:40Z | 660 | 229 | 183 | 1,072 | -| [v1.0.227](https://github.com/laurent22/joplin/releases/tag/v1.0.227) | 2020-07-07T20:44:54Z | 40,754 | 15,284 | 9,636 | 65,674 | -| [v1.0.226](https://github.com/laurent22/joplin/releases/tag/v1.0.226) (p) | 2020-07-04T10:21:26Z | 4,919 | 2,259 | 692 | 7,870 | -| [v1.0.224](https://github.com/laurent22/joplin/releases/tag/v1.0.224) | 2020-06-20T22:26:08Z | 24,808 | 11,013 | 6,011 | 41,832 | -| [v1.0.223](https://github.com/laurent22/joplin/releases/tag/v1.0.223) (p) | 2020-06-20T11:51:27Z | 194 | 118 | 82 | 394 | -| [v1.0.221](https://github.com/laurent22/joplin/releases/tag/v1.0.221) (p) | 2020-06-20T01:44:20Z | 862 | 212 | 214 | 1,288 | -| [v1.0.220](https://github.com/laurent22/joplin/releases/tag/v1.0.220) | 2020-06-13T18:26:22Z | 32,047 | 9,927 | 6,419 | 48,393 | -| [v1.0.218](https://github.com/laurent22/joplin/releases/tag/v1.0.218) | 2020-06-07T10:43:34Z | 14,549 | 6,975 | 2,960 | 24,484 | -| [v1.0.217](https://github.com/laurent22/joplin/releases/tag/v1.0.217) (p) | 2020-06-06T15:17:27Z | 232 | 99 | 58 | 389 | -| [v1.0.216](https://github.com/laurent22/joplin/releases/tag/v1.0.216) | 2020-05-24T14:21:01Z | 37,855 | 14,284 | 10,186 | 62,325 | -| [v1.0.214](https://github.com/laurent22/joplin/releases/tag/v1.0.214) (p) | 2020-05-21T17:15:15Z | 6,569 | 3,474 | 766 | 10,809 | -| [v1.0.212](https://github.com/laurent22/joplin/releases/tag/v1.0.212) (p) | 2020-05-21T07:48:39Z | 218 | 74 | 51 | 343 | -| [v1.0.211](https://github.com/laurent22/joplin/releases/tag/v1.0.211) (p) | 2020-05-20T08:59:16Z | 307 | 138 | 91 | 536 | -| [v1.0.209](https://github.com/laurent22/joplin/releases/tag/v1.0.209) (p) | 2020-05-17T18:32:51Z | 1,399 | 858 | 151 | 2,408 | -| [v1.0.207](https://github.com/laurent22/joplin/releases/tag/v1.0.207) (p) | 2020-05-10T16:37:35Z | 1,197 | 270 | 1,020 | 2,487 | -| [v1.0.201](https://github.com/laurent22/joplin/releases/tag/v1.0.201) | 2020-04-15T22:55:13Z | 53,838 | 20,050 | 18,183 | 92,071 | +| [v1.0.245](https://github.com/laurent22/joplin/releases/tag/v1.0.245) | 2020-09-09T12:56:10Z | 21,586 | 10,010 | 5,642 | 37,238 | +| [v1.0.242](https://github.com/laurent22/joplin/releases/tag/v1.0.242) | 2020-09-04T22:00:34Z | 12,615 | 6,425 | 3,020 | 22,060 | +| [v1.0.241](https://github.com/laurent22/joplin/releases/tag/v1.0.241) | 2020-09-04T18:06:00Z | 24,682 | 5,820 | 5,060 | 35,562 | +| [v1.0.239](https://github.com/laurent22/joplin/releases/tag/v1.0.239) (p) | 2020-09-01T21:56:36Z | 739 | 233 | 406 | 1,378 | +| [v1.0.237](https://github.com/laurent22/joplin/releases/tag/v1.0.237) (p) | 2020-08-29T15:38:04Z | 596 | 931 | 343 | 1,870 | +| [v1.0.236](https://github.com/laurent22/joplin/releases/tag/v1.0.236) (p) | 2020-08-28T09:16:54Z | 321 | 118 | 109 | 548 | +| [v1.0.235](https://github.com/laurent22/joplin/releases/tag/v1.0.235) (p) | 2020-08-18T22:08:01Z | 1,813 | 497 | 927 | 3,237 | +| [v1.0.234](https://github.com/laurent22/joplin/releases/tag/v1.0.234) (p) | 2020-08-17T23:13:02Z | 561 | 132 | 105 | 798 | +| [v1.0.233](https://github.com/laurent22/joplin/releases/tag/v1.0.233) | 2020-08-01T14:51:15Z | 43,971 | 18,201 | 12,364 | 74,536 | +| [v1.0.232](https://github.com/laurent22/joplin/releases/tag/v1.0.232) (p) | 2020-07-28T22:34:40Z | 660 | 230 | 184 | 1,074 | +| [v1.0.227](https://github.com/laurent22/joplin/releases/tag/v1.0.227) | 2020-07-07T20:44:54Z | 40,779 | 15,285 | 9,638 | 65,702 | +| [v1.0.226](https://github.com/laurent22/joplin/releases/tag/v1.0.226) (p) | 2020-07-04T10:21:26Z | 4,919 | 2,260 | 693 | 7,872 | +| [v1.0.224](https://github.com/laurent22/joplin/releases/tag/v1.0.224) | 2020-06-20T22:26:08Z | 24,809 | 11,014 | 6,012 | 41,835 | +| [v1.0.223](https://github.com/laurent22/joplin/releases/tag/v1.0.223) (p) | 2020-06-20T11:51:27Z | 194 | 119 | 83 | 396 | +| [v1.0.221](https://github.com/laurent22/joplin/releases/tag/v1.0.221) (p) | 2020-06-20T01:44:20Z | 862 | 213 | 215 | 1,290 | +| [v1.0.220](https://github.com/laurent22/joplin/releases/tag/v1.0.220) | 2020-06-13T18:26:22Z | 32,074 | 9,928 | 6,420 | 48,422 | +| [v1.0.218](https://github.com/laurent22/joplin/releases/tag/v1.0.218) | 2020-06-07T10:43:34Z | 14,549 | 6,976 | 2,961 | 24,486 | +| [v1.0.217](https://github.com/laurent22/joplin/releases/tag/v1.0.217) (p) | 2020-06-06T15:17:27Z | 232 | 100 | 59 | 391 | +| [v1.0.216](https://github.com/laurent22/joplin/releases/tag/v1.0.216) | 2020-05-24T14:21:01Z | 37,908 | 14,285 | 10,187 | 62,380 | +| [v1.0.214](https://github.com/laurent22/joplin/releases/tag/v1.0.214) (p) | 2020-05-21T17:15:15Z | 6,570 | 3,475 | 767 | 10,812 | +| [v1.0.212](https://github.com/laurent22/joplin/releases/tag/v1.0.212) (p) | 2020-05-21T07:48:39Z | 218 | 75 | 52 | 345 | +| [v1.0.211](https://github.com/laurent22/joplin/releases/tag/v1.0.211) (p) | 2020-05-20T08:59:16Z | 307 | 139 | 92 | 538 | +| [v1.0.209](https://github.com/laurent22/joplin/releases/tag/v1.0.209) (p) | 2020-05-17T18:32:51Z | 1,399 | 859 | 152 | 2,410 | +| [v1.0.207](https://github.com/laurent22/joplin/releases/tag/v1.0.207) (p) | 2020-05-10T16:37:35Z | 1,198 | 270 | 1,020 | 2,488 | +| [v1.0.201](https://github.com/laurent22/joplin/releases/tag/v1.0.201) | 2020-04-15T22:55:13Z | 53,890 | 20,051 | 18,183 | 92,124 | | [v1.0.200](https://github.com/laurent22/joplin/releases/tag/v1.0.200) | 2020-04-12T12:17:46Z | 9,563 | 4,896 | 1,907 | 16,366 | -| [v1.0.199](https://github.com/laurent22/joplin/releases/tag/v1.0.199) | 2020-04-10T18:41:58Z | 19,479 | 5,893 | 3,793 | 29,165 | -| [v1.0.197](https://github.com/laurent22/joplin/releases/tag/v1.0.197) | 2020-03-30T17:21:22Z | 22,490 | 9,569 | 5,861 | 37,920 | -| [v1.0.195](https://github.com/laurent22/joplin/releases/tag/v1.0.195) | 2020-03-22T19:56:12Z | 19,010 | 7,953 | 4,509 | 31,472 | +| [v1.0.199](https://github.com/laurent22/joplin/releases/tag/v1.0.199) | 2020-04-10T18:41:58Z | 19,489 | 5,893 | 3,793 | 29,175 | +| [v1.0.197](https://github.com/laurent22/joplin/releases/tag/v1.0.197) | 2020-03-30T17:21:22Z | 22,514 | 9,577 | 5,880 | 37,971 | +| [v1.0.195](https://github.com/laurent22/joplin/releases/tag/v1.0.195) | 2020-03-22T19:56:12Z | 19,026 | 7,953 | 4,509 | 31,488 | | [v1.0.194](https://github.com/laurent22/joplin/releases/tag/v1.0.194) (p) | 2020-03-14T00:00:32Z | 1,289 | 1,388 | 521 | 3,198 | -| [v1.0.193](https://github.com/laurent22/joplin/releases/tag/v1.0.193) | 2020-03-08T08:58:53Z | 28,670 | 10,911 | 7,401 | 46,982 | +| [v1.0.193](https://github.com/laurent22/joplin/releases/tag/v1.0.193) | 2020-03-08T08:58:53Z | 28,674 | 10,912 | 7,401 | 46,987 | | [v1.0.192](https://github.com/laurent22/joplin/releases/tag/v1.0.192) (p) | 2020-03-06T23:27:52Z | 480 | 126 | 92 | 698 | -| [v1.0.190](https://github.com/laurent22/joplin/releases/tag/v1.0.190) (p) | 2020-03-06T01:22:22Z | 381 | 95 | 88 | 564 | -| [v1.0.189](https://github.com/laurent22/joplin/releases/tag/v1.0.189) (p) | 2020-03-04T17:27:15Z | 350 | 100 | 98 | 548 | +| [v1.0.190](https://github.com/laurent22/joplin/releases/tag/v1.0.190) (p) | 2020-03-06T01:22:22Z | 382 | 95 | 88 | 565 | +| [v1.0.189](https://github.com/laurent22/joplin/releases/tag/v1.0.189) (p) | 2020-03-04T17:27:15Z | 351 | 100 | 98 | 549 | | [v1.0.187](https://github.com/laurent22/joplin/releases/tag/v1.0.187) (p) | 2020-03-01T12:31:06Z | 925 | 234 | 271 | 1,430 | -| [v1.0.179](https://github.com/laurent22/joplin/releases/tag/v1.0.179) | 2020-01-24T22:42:41Z | 71,304 | 28,618 | 22,554 | 122,476 | -| [v1.0.178](https://github.com/laurent22/joplin/releases/tag/v1.0.178) | 2020-01-20T19:06:45Z | 17,592 | 5,967 | 2,590 | 26,149 | -| [v1.0.177](https://github.com/laurent22/joplin/releases/tag/v1.0.177) (p) | 2019-12-30T14:40:40Z | 1,950 | 442 | 699 | 3,091 | +| [v1.0.179](https://github.com/laurent22/joplin/releases/tag/v1.0.179) | 2020-01-24T22:42:41Z | 71,310 | 28,625 | 22,555 | 122,490 | +| [v1.0.178](https://github.com/laurent22/joplin/releases/tag/v1.0.178) | 2020-01-20T19:06:45Z | 17,593 | 5,967 | 2,590 | 26,150 | +| [v1.0.177](https://github.com/laurent22/joplin/releases/tag/v1.0.177) (p) | 2019-12-30T14:40:40Z | 1,951 | 442 | 700 | 3,093 | | [v1.0.176](https://github.com/laurent22/joplin/releases/tag/v1.0.176) (p) | 2019-12-14T10:36:44Z | 3,128 | 2,538 | 470 | 6,136 | -| [v1.0.175](https://github.com/laurent22/joplin/releases/tag/v1.0.175) | 2019-12-08T11:48:47Z | 72,886 | 16,928 | 16,545 | 106,359 | -| [v1.0.174](https://github.com/laurent22/joplin/releases/tag/v1.0.174) | 2019-11-12T18:20:58Z | 30,487 | 11,733 | 8,224 | 50,444 | +| [v1.0.175](https://github.com/laurent22/joplin/releases/tag/v1.0.175) | 2019-12-08T11:48:47Z | 72,942 | 16,938 | 16,547 | 106,427 | +| [v1.0.174](https://github.com/laurent22/joplin/releases/tag/v1.0.174) | 2019-11-12T18:20:58Z | 30,492 | 11,733 | 8,224 | 50,449 | | [v1.0.173](https://github.com/laurent22/joplin/releases/tag/v1.0.173) | 2019-11-11T08:33:35Z | 5,103 | 2,083 | 749 | 7,935 | -| [v1.0.170](https://github.com/laurent22/joplin/releases/tag/v1.0.170) | 2019-10-13T22:13:04Z | 27,585 | 8,759 | 7,680 | 44,024 | -| [v1.0.169](https://github.com/laurent22/joplin/releases/tag/v1.0.169) | 2019-09-27T18:35:13Z | 17,157 | 5,925 | 3,757 | 26,839 | +| [v1.0.170](https://github.com/laurent22/joplin/releases/tag/v1.0.170) | 2019-10-13T22:13:04Z | 27,589 | 8,762 | 7,680 | 44,031 | +| [v1.0.169](https://github.com/laurent22/joplin/releases/tag/v1.0.169) | 2019-09-27T18:35:13Z | 17,158 | 5,925 | 3,757 | 26,840 | | [v1.0.168](https://github.com/laurent22/joplin/releases/tag/v1.0.168) | 2019-09-25T21:21:38Z | 5,336 | 2,277 | 720 | 8,333 | -| [v1.0.167](https://github.com/laurent22/joplin/releases/tag/v1.0.167) | 2019-09-10T08:48:37Z | 16,811 | 5,708 | 3,706 | 26,225 | +| [v1.0.167](https://github.com/laurent22/joplin/releases/tag/v1.0.167) | 2019-09-10T08:48:37Z | 16,812 | 5,708 | 3,706 | 26,226 | | [v1.0.166](https://github.com/laurent22/joplin/releases/tag/v1.0.166) | 2019-09-09T17:35:54Z | 1,961 | 565 | 239 | 2,765 | -| [v1.0.165](https://github.com/laurent22/joplin/releases/tag/v1.0.165) | 2019-08-14T21:46:29Z | 18,976 | 6,979 | 5,467 | 31,422 | -| [v1.0.161](https://github.com/laurent22/joplin/releases/tag/v1.0.161) | 2019-07-13T18:30:00Z | 19,299 | 6,356 | 4,139 | 29,794 | -| [v1.0.160](https://github.com/laurent22/joplin/releases/tag/v1.0.160) | 2019-06-15T00:21:40Z | 30,602 | 7,751 | 8,106 | 46,459 | -| [v1.0.159](https://github.com/laurent22/joplin/releases/tag/v1.0.159) | 2019-06-08T00:00:19Z | 5,198 | 2,182 | 1,117 | 8,497 | +| [v1.0.165](https://github.com/laurent22/joplin/releases/tag/v1.0.165) | 2019-08-14T21:46:29Z | 18,978 | 6,979 | 5,467 | 31,424 | +| [v1.0.161](https://github.com/laurent22/joplin/releases/tag/v1.0.161) | 2019-07-13T18:30:00Z | 19,300 | 6,356 | 4,139 | 29,795 | +| [v1.0.160](https://github.com/laurent22/joplin/releases/tag/v1.0.160) | 2019-06-15T00:21:40Z | 30,606 | 7,751 | 8,106 | 46,463 | +| [v1.0.159](https://github.com/laurent22/joplin/releases/tag/v1.0.159) | 2019-06-08T00:00:19Z | 5,200 | 2,182 | 1,117 | 8,499 | | [v1.0.158](https://github.com/laurent22/joplin/releases/tag/v1.0.158) | 2019-05-27T19:01:18Z | 9,820 | 3,545 | 1,939 | 15,304 | | [v1.0.157](https://github.com/laurent22/joplin/releases/tag/v1.0.157) | 2019-05-26T17:55:53Z | 2,183 | 848 | 294 | 3,325 | | [v1.0.153](https://github.com/laurent22/joplin/releases/tag/v1.0.153) (p) | 2019-05-15T06:27:29Z | 854 | 106 | 109 | 1,069 | -| [v1.0.152](https://github.com/laurent22/joplin/releases/tag/v1.0.152) | 2019-05-13T09:08:07Z | 13,878 | 4,434 | 4,064 | 22,376 | +| [v1.0.152](https://github.com/laurent22/joplin/releases/tag/v1.0.152) | 2019-05-13T09:08:07Z | 13,879 | 4,434 | 4,064 | 22,377 | | [v1.0.151](https://github.com/laurent22/joplin/releases/tag/v1.0.151) | 2019-05-12T15:14:32Z | 1,958 | 537 | 960 | 3,455 | | [v1.0.150](https://github.com/laurent22/joplin/releases/tag/v1.0.150) | 2019-05-12T11:27:48Z | 427 | 140 | 71 | 638 | | [v1.0.148](https://github.com/laurent22/joplin/releases/tag/v1.0.148) (p) | 2019-05-08T19:12:24Z | 135 | 60 | 99 | 294 | | [v1.0.145](https://github.com/laurent22/joplin/releases/tag/v1.0.145) | 2019-05-03T09:16:53Z | 7,012 | 2,865 | 1,440 | 11,317 | -| [v1.0.143](https://github.com/laurent22/joplin/releases/tag/v1.0.143) | 2019-04-22T10:51:38Z | 11,922 | 3,554 | 2,783 | 18,259 | -| [v1.0.142](https://github.com/laurent22/joplin/releases/tag/v1.0.142) | 2019-04-02T16:44:51Z | 14,693 | 4,569 | 4,730 | 23,992 | -| [v1.0.140](https://github.com/laurent22/joplin/releases/tag/v1.0.140) | 2019-03-10T20:59:58Z | 13,634 | 4,175 | 3,294 | 21,103 | +| [v1.0.143](https://github.com/laurent22/joplin/releases/tag/v1.0.143) | 2019-04-22T10:51:38Z | 11,923 | 3,554 | 2,783 | 18,260 | +| [v1.0.142](https://github.com/laurent22/joplin/releases/tag/v1.0.142) | 2019-04-02T16:44:51Z | 14,695 | 4,569 | 4,730 | 23,994 | +| [v1.0.140](https://github.com/laurent22/joplin/releases/tag/v1.0.140) | 2019-03-10T20:59:58Z | 13,635 | 4,175 | 3,298 | 21,108 | | [v1.0.139](https://github.com/laurent22/joplin/releases/tag/v1.0.139) (p) | 2019-03-09T10:06:48Z | 128 | 67 | 49 | 244 | | [v1.0.138](https://github.com/laurent22/joplin/releases/tag/v1.0.138) (p) | 2019-03-03T17:23:00Z | 156 | 93 | 87 | 336 | | [v1.0.137](https://github.com/laurent22/joplin/releases/tag/v1.0.137) (p) | 2019-03-03T01:12:51Z | 596 | 62 | 86 | 744 | -| [v1.0.135](https://github.com/laurent22/joplin/releases/tag/v1.0.135) | 2019-02-27T23:36:57Z | 12,557 | 3,963 | 4,081 | 20,601 | +| [v1.0.135](https://github.com/laurent22/joplin/releases/tag/v1.0.135) | 2019-02-27T23:36:57Z | 12,563 | 3,963 | 4,081 | 20,607 | | [v1.0.134](https://github.com/laurent22/joplin/releases/tag/v1.0.134) | 2019-02-27T10:21:44Z | 1,472 | 573 | 222 | 2,267 | | [v1.0.132](https://github.com/laurent22/joplin/releases/tag/v1.0.132) | 2019-02-26T23:02:05Z | 1,092 | 456 | 99 | 1,647 | -| [v1.0.127](https://github.com/laurent22/joplin/releases/tag/v1.0.127) | 2019-02-14T23:12:48Z | 9,818 | 3,176 | 2,933 | 15,927 | +| [v1.0.127](https://github.com/laurent22/joplin/releases/tag/v1.0.127) | 2019-02-14T23:12:48Z | 9,823 | 3,176 | 2,933 | 15,932 | | [v1.0.126](https://github.com/laurent22/joplin/releases/tag/v1.0.126) (p) | 2019-02-09T19:46:16Z | 938 | 78 | 120 | 1,136 | -| [v1.0.125](https://github.com/laurent22/joplin/releases/tag/v1.0.125) | 2019-01-26T18:14:33Z | 10,266 | 3,563 | 1,706 | 15,535 | +| [v1.0.125](https://github.com/laurent22/joplin/releases/tag/v1.0.125) | 2019-01-26T18:14:33Z | 10,269 | 3,563 | 1,706 | 15,538 | | [v1.0.120](https://github.com/laurent22/joplin/releases/tag/v1.0.120) | 2019-01-10T21:42:53Z | 15,610 | 5,207 | 6,521 | 27,338 | | [v1.0.119](https://github.com/laurent22/joplin/releases/tag/v1.0.119) | 2018-12-18T12:40:22Z | 8,910 | 3,266 | 2,017 | 14,193 | | [v1.0.118](https://github.com/laurent22/joplin/releases/tag/v1.0.118) | 2019-01-11T08:34:13Z | 722 | 252 | 92 | 1,066 | @@ -191,14 +196,14 @@ | [v1.0.116](https://github.com/laurent22/joplin/releases/tag/v1.0.116) | 2018-11-20T19:09:24Z | 3,479 | 1,127 | 717 | 5,323 | | [v1.0.115](https://github.com/laurent22/joplin/releases/tag/v1.0.115) | 2018-11-16T16:52:02Z | 3,662 | 1,307 | 803 | 5,772 | | [v1.0.114](https://github.com/laurent22/joplin/releases/tag/v1.0.114) | 2018-10-24T20:14:10Z | 11,401 | 3,505 | 3,833 | 18,739 | -| [v1.0.111](https://github.com/laurent22/joplin/releases/tag/v1.0.111) | 2018-09-30T20:15:09Z | 12,068 | 3,315 | 3,674 | 19,057 | +| [v1.0.111](https://github.com/laurent22/joplin/releases/tag/v1.0.111) | 2018-09-30T20:15:09Z | 12,070 | 3,315 | 3,674 | 19,059 | | [v1.0.110](https://github.com/laurent22/joplin/releases/tag/v1.0.110) | 2018-09-29T12:29:21Z | 966 | 413 | 121 | 1,500 | | [v1.0.109](https://github.com/laurent22/joplin/releases/tag/v1.0.109) | 2018-09-27T18:01:41Z | 2,107 | 709 | 331 | 3,147 | | [v1.0.108](https://github.com/laurent22/joplin/releases/tag/v1.0.108) (p) | 2018-09-29T18:49:29Z | 35 | 26 | 17 | 78 | | [v1.0.107](https://github.com/laurent22/joplin/releases/tag/v1.0.107) | 2018-09-16T19:51:07Z | 7,155 | 2,141 | 1,712 | 11,008 | | [v1.0.106](https://github.com/laurent22/joplin/releases/tag/v1.0.106) | 2018-09-08T15:23:40Z | 4,563 | 1,462 | 321 | 6,346 | | [v1.0.105](https://github.com/laurent22/joplin/releases/tag/v1.0.105) | 2018-09-05T11:29:36Z | 4,661 | 1,594 | 1,458 | 7,713 | -| [v1.0.104](https://github.com/laurent22/joplin/releases/tag/v1.0.104) | 2018-06-28T20:25:36Z | 15,062 | 4,705 | 7,359 | 27,126 | +| [v1.0.104](https://github.com/laurent22/joplin/releases/tag/v1.0.104) | 2018-06-28T20:25:36Z | 15,062 | 4,705 | 7,363 | 27,130 | | [v1.0.103](https://github.com/laurent22/joplin/releases/tag/v1.0.103) | 2018-06-21T19:38:13Z | 2,059 | 892 | 683 | 3,634 | | [v1.0.101](https://github.com/laurent22/joplin/releases/tag/v1.0.101) | 2018-06-17T18:35:11Z | 1,315 | 612 | 412 | 2,339 | | [v1.0.100](https://github.com/laurent22/joplin/releases/tag/v1.0.100) | 2018-06-14T17:41:43Z | 887 | 439 | 249 | 1,575 | @@ -207,17 +212,17 @@ | [v1.0.96](https://github.com/laurent22/joplin/releases/tag/v1.0.96) | 2018-05-26T16:36:39Z | 2,726 | 1,229 | 1,705 | 5,660 | | [v1.0.95](https://github.com/laurent22/joplin/releases/tag/v1.0.95) | 2018-05-25T13:04:30Z | 424 | 224 | 126 | 774 | | [v1.0.94](https://github.com/laurent22/joplin/releases/tag/v1.0.94) | 2018-05-21T20:52:59Z | 1,138 | 590 | 402 | 2,130 | -| [v1.0.93](https://github.com/laurent22/joplin/releases/tag/v1.0.93) | 2018-05-14T11:36:01Z | 1,795 | 1,190 | 764 | 3,749 | +| [v1.0.93](https://github.com/laurent22/joplin/releases/tag/v1.0.93) | 2018-05-14T11:36:01Z | 1,795 | 1,195 | 764 | 3,754 | | [v1.0.91](https://github.com/laurent22/joplin/releases/tag/v1.0.91) | 2018-05-10T14:48:04Z | 831 | 557 | 315 | 1,703 | | [v1.0.89](https://github.com/laurent22/joplin/releases/tag/v1.0.89) | 2018-05-09T13:05:05Z | 500 | 237 | 116 | 853 | | [v1.0.85](https://github.com/laurent22/joplin/releases/tag/v1.0.85) | 2018-05-01T21:08:24Z | 1,656 | 956 | 638 | 3,250 | -| [v1.0.83](https://github.com/laurent22/joplin/releases/tag/v1.0.83) | 2018-04-04T19:43:58Z | 5,073 | 2,536 | 2,663 | 10,272 | +| [v1.0.83](https://github.com/laurent22/joplin/releases/tag/v1.0.83) | 2018-04-04T19:43:58Z | 5,099 | 2,536 | 2,663 | 10,298 | | [v1.0.82](https://github.com/laurent22/joplin/releases/tag/v1.0.82) | 2018-03-31T19:16:31Z | 696 | 411 | 127 | 1,234 | | [v1.0.81](https://github.com/laurent22/joplin/releases/tag/v1.0.81) | 2018-03-28T08:13:58Z | 1,003 | 602 | 788 | 2,393 | | [v1.0.79](https://github.com/laurent22/joplin/releases/tag/v1.0.79) | 2018-03-23T18:00:11Z | 934 | 544 | 386 | 1,864 | | [v1.0.78](https://github.com/laurent22/joplin/releases/tag/v1.0.78) | 2018-03-17T15:27:18Z | 1,315 | 898 | 877 | 3,090 | | [v1.0.77](https://github.com/laurent22/joplin/releases/tag/v1.0.77) | 2018-03-16T15:12:35Z | 182 | 110 | 51 | 343 | -| [v1.0.72](https://github.com/laurent22/joplin/releases/tag/v1.0.72) | 2018-03-14T09:44:35Z | 409 | 262 | 62 | 733 | +| [v1.0.72](https://github.com/laurent22/joplin/releases/tag/v1.0.72) | 2018-03-14T09:44:35Z | 410 | 262 | 63 | 735 | | [v1.0.70](https://github.com/laurent22/joplin/releases/tag/v1.0.70) | 2018-02-28T20:04:30Z | 1,858 | 1,056 | 1,260 | 4,174 | | [v1.0.67](https://github.com/laurent22/joplin/releases/tag/v1.0.67) | 2018-02-19T22:51:08Z | 1,818 | 609 | 0 | 2,427 | | [v1.0.66](https://github.com/laurent22/joplin/releases/tag/v1.0.66) | 2018-02-18T23:09:09Z | 331 | 140 | 89 | 560 | @@ -241,12 +246,12 @@ | [v0.10.36](https://github.com/laurent22/joplin/releases/tag/v0.10.36) | 2017-12-05T09:34:40Z | 1,018 | 1,362 | 443 | 2,823 | | [v0.10.35](https://github.com/laurent22/joplin/releases/tag/v0.10.35) | 2017-12-02T15:56:08Z | 1,581 | 1,553 | 749 | 3,883 | | [v0.10.34](https://github.com/laurent22/joplin/releases/tag/v0.10.34) | 2017-12-02T14:50:28Z | 93 | 675 | 64 | 832 | -| [v0.10.33](https://github.com/laurent22/joplin/releases/tag/v0.10.33) | 2017-12-02T13:20:39Z | 64 | 664 | 27 | 755 | +| [v0.10.33](https://github.com/laurent22/joplin/releases/tag/v0.10.33) | 2017-12-02T13:20:39Z | 65 | 664 | 27 | 756 | | [v0.10.31](https://github.com/laurent22/joplin/releases/tag/v0.10.31) | 2017-12-01T09:56:44Z | 896 | 1,456 | 411 | 2,763 | | [v0.10.30](https://github.com/laurent22/joplin/releases/tag/v0.10.30) | 2017-11-30T20:28:16Z | 726 | 1,374 | 424 | 2,524 | -| [v0.10.28](https://github.com/laurent22/joplin/releases/tag/v0.10.28) | 2017-11-30T01:07:46Z | 1,346 | 1,707 | 879 | 3,932 | +| [v0.10.28](https://github.com/laurent22/joplin/releases/tag/v0.10.28) | 2017-11-30T01:07:46Z | 1,347 | 1,707 | 879 | 3,933 | | [v0.10.26](https://github.com/laurent22/joplin/releases/tag/v0.10.26) | 2017-11-29T16:02:17Z | 191 | 706 | 265 | 1,162 | -| [v0.10.25](https://github.com/laurent22/joplin/releases/tag/v0.10.25) | 2017-11-24T14:27:49Z | 152 | 702 | 6,524 | 7,378 | +| [v0.10.25](https://github.com/laurent22/joplin/releases/tag/v0.10.25) | 2017-11-24T14:27:49Z | 152 | 702 | 6,528 | 7,382 | | [v0.10.23](https://github.com/laurent22/joplin/releases/tag/v0.10.23) | 2017-11-21T19:38:41Z | 136 | 653 | 32 | 821 | | [v0.10.22](https://github.com/laurent22/joplin/releases/tag/v0.10.22) | 2017-11-20T21:45:57Z | 89 | 650 | 25 | 764 | | [v0.10.21](https://github.com/laurent22/joplin/releases/tag/v0.10.21) | 2017-11-18T00:53:15Z | 56 | 643 | 18 | 717 |