mirror of
https://github.com/laurent22/joplin.git
synced 2025-01-11 18:24:43 +02:00
Doc: Fixes #9216: Fixed several broken links
This commit is contained in:
parent
9772389fd9
commit
7488129517
@ -74,7 +74,7 @@ To get such an external script file to compile, you need to add it to the `extra
|
||||
## More information
|
||||
|
||||
- [Joplin Plugin API](https://joplinapp.org/api/references/plugin_api/classes/joplin.html)
|
||||
- [Joplin Data API](https://joplinapp.org/api/references/rest_api/)
|
||||
- [Joplin Data API](https://joplinapp.org/help/api/references/rest_api)
|
||||
- [Joplin Plugin Manifest](https://joplinapp.org/api/references/plugin_manifest/)
|
||||
- Ask for help on the [forum](https://discourse.joplinapp.org/) or our [Discord channel](https://discord.gg/VSj7AFHvpq)
|
||||
|
||||
|
@ -69,7 +69,7 @@ To get such an external script file to compile, you need to add it to the `extra
|
||||
## More information
|
||||
|
||||
- [Joplin Plugin API](https://joplinapp.org/api/references/plugin_api/classes/joplin.html)
|
||||
- [Joplin Data API](https://joplinapp.org/api/references/rest_api/)
|
||||
- [Joplin Data API](https://joplinapp.org/help/api/references/rest_api)
|
||||
- [Joplin Plugin Manifest](https://joplinapp.org/api/references/plugin_manifest/)
|
||||
- Ask for help on the [forum](https://discourse.joplinapp.org/) or our [Discord channel](https://discord.gg/VSj7AFHvpq)
|
||||
|
||||
|
@ -9,7 +9,7 @@ import Plugin from '../Plugin';
|
||||
import { Path } from './types';
|
||||
|
||||
/**
|
||||
* This module provides access to the Joplin data API: https://joplinapp.org/api/references/rest_api/
|
||||
* This module provides access to the Joplin data API: https://joplinapp.org/help/api/references/rest_api
|
||||
* This is the main way to retrieve data, such as notes, notebooks, tags, etc.
|
||||
* or to update them or delete them.
|
||||
*
|
||||
@ -25,7 +25,7 @@ import { Path } from './types';
|
||||
* * `data`: (Optional) Applies to PUT and POST calls only. The request body contains the data you want to create or modify, for example the content of a note or folder.
|
||||
* * `files`: (Optional) Used to create new resources and associate them with files.
|
||||
*
|
||||
* Please refer to the [Joplin API documentation](https://joplinapp.org/api/references/rest_api/) for complete details about each call. As the plugin runs within the Joplin application **you do not need an authorisation token** to use this API.
|
||||
* Please refer to the [Joplin API documentation](https://joplinapp.org/help/api/references/rest_api) for complete details about each call. As the plugin runs within the Joplin application **you do not need an authorisation token** to use this API.
|
||||
*
|
||||
* For example:
|
||||
*
|
||||
|
@ -17,7 +17,7 @@ import { ExportModule, ImportModule } from './types';
|
||||
*
|
||||
* See the documentation of the [[ExportModule]] and [[ImportModule]] for more information.
|
||||
*
|
||||
* You may also want to refer to the Joplin API documentation to see the list of properties for each item (note, notebook, etc.) - https://joplinapp.org/api/references/rest_api/
|
||||
* You may also want to refer to the Joplin API documentation to see the list of properties for each item (note, notebook, etc.) - https://joplinapp.org/help/api/references/rest_api
|
||||
*/
|
||||
export default class JoplinInterop {
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
import { Path } from './types';
|
||||
/**
|
||||
* This module provides access to the Joplin data API: https://joplinapp.org/api/references/rest_api/
|
||||
* This module provides access to the Joplin data API: https://joplinapp.org/help/api/references/rest_api
|
||||
* This is the main way to retrieve data, such as notes, notebooks, tags, etc.
|
||||
* or to update them or delete them.
|
||||
*
|
||||
@ -16,7 +16,7 @@ import { Path } from './types';
|
||||
* * `data`: (Optional) Applies to PUT and POST calls only. The request body contains the data you want to create or modify, for example the content of a note or folder.
|
||||
* * `files`: (Optional) Used to create new resources and associate them with files.
|
||||
*
|
||||
* Please refer to the [Joplin API documentation](https://joplinapp.org/api/references/rest_api/) for complete details about each call. As the plugin runs within the Joplin application **you do not need an authorisation token** to use this API.
|
||||
* Please refer to the [Joplin API documentation](https://joplinapp.org/help/api/references/rest_api) for complete details about each call. As the plugin runs within the Joplin application **you do not need an authorisation token** to use this API.
|
||||
*
|
||||
* For example:
|
||||
*
|
||||
|
@ -9,7 +9,7 @@ import { ExportModule, ImportModule } from './types';
|
||||
*
|
||||
* See the documentation of the [[ExportModule]] and [[ImportModule]] for more information.
|
||||
*
|
||||
* You may also want to refer to the Joplin API documentation to see the list of properties for each item (note, notebook, etc.) - https://joplinapp.org/api/references/rest_api/
|
||||
* You may also want to refer to the Joplin API documentation to see the list of properties for each item (note, notebook, etc.) - https://joplinapp.org/help/api/references/rest_api
|
||||
*/
|
||||
export default class JoplinInterop {
|
||||
registerExportModule(module: ExportModule): Promise<void>;
|
||||
|
@ -396,6 +396,8 @@ const processMarkdownFile = async (sourcePath: string, destPath: string, context
|
||||
const processDocFiles = async (sourceDir: string, destDir: string, excluded: string[], context: Context) => {
|
||||
if (!context.processedFiles) context.processedFiles = [];
|
||||
|
||||
await mkdirp(destDir);
|
||||
|
||||
const files = await readdir(sourceDir);
|
||||
for (const file of files) {
|
||||
const fullPath = `${sourceDir}/${file}`;
|
||||
|
@ -157,4 +157,4 @@ Finally, know that we will never assign you to a project you do not want to work
|
||||
|
||||
Please see below for a list of project ideas:
|
||||
|
||||
https://joplinapp.org/gsoc2020/ideas/
|
||||
[List of ideas](https://github.com/laurent22/joplin/blob/dev/readme/dev/gsoc/gsoc2020/ideas.md)
|
||||
|
@ -49,7 +49,7 @@ The procedure reflects some of the lessons learnt in the GSOC 2020 campaign, so
|
||||
|
||||
1. Join the [Joplin Forum](https://discourse.joplinapp.org), introduce yourself in a structured manner, share your GitHub username, and meet your fellow developers in the [GSoC category](https://discourse.joplinapp.org/c/gsoc). The subject of the topic shall contain your username, e.g. `_Introducing \<username>_`.
|
||||
2. Read Student proposal guidelines and the [GSoD Student Manual](https://developers.google.com/season-of-docs/docs/tech-writer-guide)
|
||||
3. Take a look at the [list of ideas](https://joplinapp.org/gsod2020/ideas/). You can have you own idea added by posting it in the [Features category](https://discourse.joplinapp.org/c/features)
|
||||
3. Take a look at the [list of ideas](https://github.com/laurent22/joplin/blob/dev/readme/dev/gsoc/gsod2020/ideas.md). You can have you own idea added by posting it in the [Features category](https://discourse.joplinapp.org/c/features)
|
||||
4. Come up with project that you're interested in and discuss it in [Features category](https://discourse.joplinapp.org/c/features) if a corresponding does not already exist.
|
||||
5. Write a first draft and get someone to review it
|
||||
1. Remember: you must link to work such as commits in your proposal. A private place will be created within the forum for that purposes.
|
||||
|
@ -7,6 +7,6 @@ source_url: https://www.patreon.com/posts/web-clipper-now-19589638
|
||||
|
||||
[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.
|
||||
Have a look at the [Web Clipper documentation](https://joplinapp.org/help/apps/clipper) for more information.
|
||||
|
||||
![](https://joplin.cozic.net/images/WebExtensionScreenshot.png)
|
||||
![](https://joplinapp.org/images/WebExtensionScreenshot.png)
|
@ -9,4 +9,4 @@ source_url: https://www.patreon.com/posts/note-properties-21454692
|
||||
|
||||
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/
|
||||
As usual this release also includes various bug fixes and improvements. More information on the changelog: https://joplinapp.org/help/about/changelog/desktop
|
@ -9,4 +9,4 @@ Reliability and stability is an important feature of Joplin as the application c
|
||||
|
||||
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/
|
||||
More information about this release and download link in the changelog - https://joplinapp.org/help/about/changelog/desktop
|
@ -9,10 +9,10 @@ The original search engine in Joplin was pretty limited - it would search for yo
|
||||
|
||||
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://joplin.cozic.net/#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://joplinapp.org/help/apps/search). 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.
|
||||
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.
|
||||
|
||||
![](https://raw.githubusercontent.com/laurent22/joplin/dev/Assets/WebsiteAssets/images/news/20190130-230218_0.png)
|
@ -5,44 +5,44 @@ 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.
|
||||
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.
|
||||
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:
|
||||
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).
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
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/help/apps/sync/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.
|
||||
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.
|
||||
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.
|
||||
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.
|
||||
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.
|
Loading…
Reference in New Issue
Block a user